static HRESULT WINAPI HTMLOptionElementFactory_create(IHTMLOptionElementFactory *iface, VARIANT text, VARIANT value, VARIANT defaultselected, VARIANT selected, IHTMLOptionElement **optelem) { HTMLOptionElementFactory *This = impl_from_IHTMLOptionElementFactory(iface); nsIDOMHTMLElement *nselem; HTMLDOMNode *node; HRESULT hres; static const PRUnichar optionW[] = {'O','P','T','I','O','N',0}; TRACE("(%p)->(%s %s %s %s %p)\n", This, debugstr_variant(&text), debugstr_variant(&value), debugstr_variant(&defaultselected), debugstr_variant(&selected), optelem); if(!This->window || !This->window->doc) { WARN("NULL doc\n"); return E_UNEXPECTED; } *optelem = NULL; hres = create_nselem(This->window->doc, optionW, &nselem); if(FAILED(hres)) return hres; hres = get_node(This->window->doc, (nsIDOMNode*)nselem, TRUE, &node); nsIDOMHTMLElement_Release(nselem); if(FAILED(hres)) return hres; hres = IHTMLDOMNode_QueryInterface(&node->IHTMLDOMNode_iface, &IID_IHTMLOptionElement, (void**)optelem); node_release(node); if(V_VT(&text) == VT_BSTR) IHTMLOptionElement_put_text(*optelem, V_BSTR(&text)); else if(V_VT(&text) != VT_EMPTY) FIXME("Unsupported text %s\n", debugstr_variant(&text)); if(V_VT(&value) == VT_BSTR) IHTMLOptionElement_put_value(*optelem, V_BSTR(&value)); else if(V_VT(&value) != VT_EMPTY) FIXME("Unsupported value %s\n", debugstr_variant(&value)); if(V_VT(&defaultselected) != VT_EMPTY) FIXME("Unsupported defaultselected %s\n", debugstr_variant(&defaultselected)); if(V_VT(&selected) != VT_EMPTY) FIXME("Unsupported selected %s\n", debugstr_variant(&selected)); return S_OK; }
static HRESULT WINAPI HTMLOptionElementFactory_create(IHTMLOptionElementFactory *iface, VARIANT text, VARIANT value, VARIANT defaultselected, VARIANT selected, IHTMLOptionElement **optelem) { HTMLOptionElementFactory *This = HTMLOPTFACTORY_THIS(iface); nsIDOMElement *nselem; nsAString option_str; nsresult nsres; HRESULT hres; static const PRUnichar optionW[] = {'O','P','T','I','O','N',0}; TRACE("(%p)->(%s %s %s %s %p)\n", This, debugstr_variant(&text), debugstr_variant(&value), debugstr_variant(&defaultselected), debugstr_variant(&selected), optelem); if(!This->doc->nsdoc) { WARN("NULL nsdoc\n"); return E_UNEXPECTED; } *optelem = NULL; nsAString_Init(&option_str, optionW); nsres = nsIDOMHTMLDocument_CreateElement(This->doc->nsdoc, &option_str, &nselem); nsAString_Finish(&option_str); if(NS_FAILED(nsres)) { ERR("CreateElement failed: %08x\n", nsres); return E_FAIL; } hres = IHTMLDOMNode_QueryInterface(HTMLDOMNODE(get_node(This->doc, (nsIDOMNode*)nselem, TRUE)), &IID_IHTMLOptionElement, (void**)optelem); nsIDOMElement_Release(nselem); if(V_VT(&text) == VT_BSTR) IHTMLOptionElement_put_text(*optelem, V_BSTR(&text)); else if(V_VT(&text) != VT_EMPTY) FIXME("Unsupported text vt=%d\n", V_VT(&text)); if(V_VT(&value) == VT_BSTR) IHTMLOptionElement_put_value(*optelem, V_BSTR(&value)); else if(V_VT(&value) != VT_EMPTY) FIXME("Unsupported value vt=%d\n", V_VT(&value)); if(V_VT(&defaultselected) != VT_EMPTY) FIXME("Unsupported defaultselected vt=%d\n", V_VT(&defaultselected)); if(V_VT(&selected) != VT_EMPTY) FIXME("Unsupported selected vt=%d\n", V_VT(&selected)); return S_OK; }