Jacek Caban : mshtml: Added IHTMLOptionElementFactory:: create implementation.

Alexandre Julliard julliard at winehq.org
Mon Oct 15 11:27:58 CDT 2007


Module: wine
Branch: master
Commit: 8bfc6f75946962d8b3ad21eff93f1d8a4df1f65c
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=8bfc6f75946962d8b3ad21eff93f1d8a4df1f65c

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Sun Oct 14 00:11:31 2007 +0200

mshtml: Added IHTMLOptionElementFactory::create implementation.

---

 dlls/mshtml/htmloption.c |   51 ++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 49 insertions(+), 2 deletions(-)

diff --git a/dlls/mshtml/htmloption.c b/dlls/mshtml/htmloption.c
index 22c6023..f800fed 100644
--- a/dlls/mshtml/htmloption.c
+++ b/dlls/mshtml/htmloption.c
@@ -442,8 +442,55 @@ static HRESULT WINAPI HTMLOptionElementFactory_create(IHTMLOptionElementFactory
         IHTMLOptionElement **optelem)
 {
     HTMLOptionElementFactory *This = HTMLOPTFACTORY_THIS(iface);
-    FIXME("(%p)->(v v v v %p)\n", This, optelem);
-    return E_NOTIMPL;
+    nsIDOMDocument *nsdoc;
+    nsIDOMElement *nselem;
+    nsAString option_str;
+    nsresult nsres;
+    HRESULT hres;
+
+    static const PRUnichar optionW[] = {'O','P','T','I','O','N',0};
+
+    TRACE("(%p)->(v v v v %p)\n", This, optelem);
+
+    *optelem = NULL;
+    if(!This->doc->nscontainer)
+        return E_FAIL;
+
+    nsres = nsIWebNavigation_GetDocument(This->doc->nscontainer->navigation, &nsdoc);
+    if(NS_FAILED(nsres)) {
+        ERR("GetDocument failed: %08x\n", nsres);
+        return E_FAIL;
+    }
+
+    nsAString_Init(&option_str, optionW);
+    nsres = nsIDOMDocument_CreateElement(nsdoc, &option_str, &nselem);
+    nsIDOMDocument_Release(nsdoc);
+    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)),
+            &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;
 }
 
 #undef HTMLOPTFACTORY_THIS




More information about the wine-cvs mailing list