JSValue JSHTMLFormElement::nameGetter(ExecState* exec, JSValue slotBase, PropertyName propertyName) { JSHTMLElement* jsForm = jsCast<JSHTMLFormElement*>(asObject(slotBase)); HTMLFormElement* form = toHTMLFormElement(jsForm->impl()); Vector<RefPtr<Node> > namedItems; form->getNamedElements(propertyNameToAtomicString(propertyName), namedItems); if (namedItems.isEmpty()) return jsUndefined(); if (namedItems.size() == 1) return toJS(exec, jsForm->globalObject(), namedItems[0].get()); // FIXME: HTML5 specifies that this should be a RadioNodeList. return toJS(exec, jsForm->globalObject(), StaticNodeList::adopt(namedItems).get()); }
JSValue jsHTMLElementChildren(ExecState* exec, JSValue slotBase, const Identifier&) { JSHTMLElement* castedThis = static_cast<JSHTMLElement*>(asObject(slotBase)); UNUSED_PARAM(exec); HTMLElement* imp = static_cast<HTMLElement*>(castedThis->impl()); JSValue result = toJS(exec, castedThis->globalObject(), WTF::getPtr(imp->children())); return result; }
JSValue JSHTMLFormElement::nameGetter(ExecState* exec, const Identifier& propertyName, const PropertySlot& slot) { JSHTMLElement* jsForm = static_cast<JSHTMLFormElement*>(asObject(slot.slotBase())); HTMLFormElement* form = static_cast<HTMLFormElement*>(jsForm->impl()); Vector<RefPtr<Node> > namedItems; form->getNamedElements(propertyName, namedItems); if (namedItems.isEmpty()) return jsUndefined(); if (namedItems.size() == 1) return toJS(exec, namedItems[0].get()); // FIXME: HTML5 specifies that this should be a RadioNodeList. return toJS(exec, jsForm->globalObject(), StaticNodeList::adopt(namedItems).get()); }
EncodedJSValue JSC_HOST_CALL jsHTMLElementPrototypeFunctionInsertAdjacentElement(ExecState* exec) { JSValue thisValue = exec->hostThisValue(); if (!thisValue.inherits(&JSHTMLElement::s_info)) return throwVMTypeError(exec); JSHTMLElement* castedThis = static_cast<JSHTMLElement*>(asObject(thisValue)); HTMLElement* imp = static_cast<HTMLElement*>(castedThis->impl()); ExceptionCode ec = 0; const String& where(ustringToString(exec->argument(0).toString(exec))); if (exec->hadException()) return JSValue::encode(jsUndefined()); Element* element(toElement(exec->argument(1))); if (exec->hadException()) return JSValue::encode(jsUndefined()); JSC::JSValue result = toJS(exec, castedThis->globalObject(), WTF::getPtr(imp->insertAdjacentElement(where, element, ec))); setDOMException(exec, ec); return JSValue::encode(result); }
JSValue jsHTMLElementConstructor(ExecState* exec, JSValue slotBase, const Identifier&) { JSHTMLElement* domObject = static_cast<JSHTMLElement*>(asObject(slotBase)); return JSHTMLElement::getConstructor(exec, domObject->globalObject()); }