void HTMLKeygenElement::didAddUserAgentShadowRoot(ShadowRoot& root) { DEFINE_STATIC_LOCAL(AtomicString, keygenSelectPseudoId, ("-webkit-keygen-select")); Vector<String> keys; keys.reserveCapacity(2); keys.append( locale().queryString(WebLocalizedString::KeygenMenuHighGradeKeySize)); keys.append( locale().queryString(WebLocalizedString::KeygenMenuMediumGradeKeySize)); // Create a select element with one option element for each key size. HTMLSelectElement* select = HTMLSelectElement::create(document()); select->setShadowPseudoId(keygenSelectPseudoId); for (const String& key : keys) { HTMLOptionElement* option = HTMLOptionElement::create(document()); option->appendChild(Text::create(document(), key)); select->appendChild(option); } root.appendChild(select); }
JSObject* JSHTMLOptionElementConstructor::construct(ExecState* exec, const List& args) { int exception = 0; RefPtr<Element> el(m_doc->createElement("option", exception)); HTMLOptionElement* opt = 0; if (el) { opt = static_cast<HTMLOptionElement*>(el.get()); int sz = args.size(); RefPtr<Text> text = m_doc->createTextNode(""); opt->appendChild(text, exception); if (exception == 0 && sz > 0) text->setData(args[0]->toString(exec), exception); if (exception == 0 && sz > 1) opt->setValue(args[1]->toString(exec)); if (exception == 0 && sz > 2) opt->setDefaultSelected(args[2]->toBoolean(exec)); if (exception == 0 && sz > 3) opt->setSelected(args[3]->toBoolean(exec)); } setDOMException(exec, exception); return static_cast<JSObject*>(toJS(exec, opt)); }