Jacek Caban : mshtml: Added IHTMLDOMTextNode::data property implementation.

Alexandre Julliard julliard at winehq.org
Wed Apr 17 15:14:46 CDT 2013


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

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Wed Apr 17 13:00:04 2013 +0200

mshtml: Added IHTMLDOMTextNode::data property implementation.

---

 dlls/mshtml/htmltextnode.c |   21 +++++++++++++++++----
 dlls/mshtml/tests/dom.c    |   34 ++++++++++++++++++++++++++++++++--
 2 files changed, 49 insertions(+), 6 deletions(-)

diff --git a/dlls/mshtml/htmltextnode.c b/dlls/mshtml/htmltextnode.c
index 29ffa56..27e00c0 100644
--- a/dlls/mshtml/htmltextnode.c
+++ b/dlls/mshtml/htmltextnode.c
@@ -101,15 +101,28 @@ static HRESULT WINAPI HTMLDOMTextNode_Invoke(IHTMLDOMTextNode *iface, DISPID dis
 static HRESULT WINAPI HTMLDOMTextNode_put_data(IHTMLDOMTextNode *iface, BSTR v)
 {
     HTMLDOMTextNode *This = impl_from_IHTMLDOMTextNode(iface);
-    FIXME("(%p)->(%s)\n", This, debugstr_w(v));
-    return E_NOTIMPL;
+    nsAString nsstr;
+    nsresult nsres;
+
+    TRACE("(%p)->(%s)\n", This, debugstr_w(v));
+
+    nsAString_InitDepend(&nsstr, v);
+    nsres = nsIDOMText_SetData(This->nstext, &nsstr);
+    nsAString_Finish(&nsstr);
+    return NS_SUCCEEDED(nsres) ? S_OK : E_FAIL;
 }
 
 static HRESULT WINAPI HTMLDOMTextNode_get_data(IHTMLDOMTextNode *iface, BSTR *p)
 {
     HTMLDOMTextNode *This = impl_from_IHTMLDOMTextNode(iface);
-    FIXME("(%p)->(%p)\n", This, p);
-    return E_NOTIMPL;
+    nsAString nsstr;
+    nsresult nsres;
+
+    TRACE("(%p)->(%p)\n", This, p);
+
+    nsAString_Init(&nsstr, NULL);
+    nsres = nsIDOMText_GetData(This->nstext, &nsstr);
+    return return_nsstr(nsres, &nsstr, p);
 }
 
 static HRESULT WINAPI HTMLDOMTextNode_toString(IHTMLDOMTextNode *iface, BSTR *String)
diff --git a/dlls/mshtml/tests/dom.c b/dlls/mshtml/tests/dom.c
index 44306ee..ffb3614 100644
--- a/dlls/mshtml/tests/dom.c
+++ b/dlls/mshtml/tests/dom.c
@@ -2432,6 +2432,33 @@ static void _test_text_length(unsigned line, IUnknown *unk, LONG l)
     IHTMLDOMTextNode_Release(text);
 }
 
+#define test_text_data(a,b) _test_text_data(__LINE__,a,b)
+static void _test_text_data(unsigned line, IUnknown *unk, const char *exdata)
+{
+    IHTMLDOMTextNode *text = _get_text_iface(line, unk);
+    BSTR str;
+    HRESULT hres;
+
+    hres = IHTMLDOMTextNode_get_data(text, &str);
+    ok_(__FILE__,line)(hres == S_OK, "get_data failed: %08x\n", hres);
+    ok_(__FILE__,line)(!strcmp_wa(str, exdata), "data = %s, expected %s\n", wine_dbgstr_w(str), exdata);
+    IHTMLDOMTextNode_Release(text);
+    SysFreeString(str);
+}
+
+#define set_text_data(a,b) _set_text_data(__LINE__,a,b)
+static void _set_text_data(unsigned line, IUnknown *unk, const char *data)
+{
+    IHTMLDOMTextNode *text = _get_text_iface(line, unk);
+    BSTR str = a2bstr(data);
+    HRESULT hres;
+
+    hres = IHTMLDOMTextNode_put_data(text, str);
+    ok_(__FILE__,line)(hres == S_OK, "get_data failed: %08x\n", hres);
+    IHTMLDOMTextNode_Release(text);
+    SysFreeString(str);
+}
+
 #define test_select_set_disabled(i,b) _test_select_set_disabled(__LINE__,i,b)
 static void _test_select_set_disabled(unsigned line, IHTMLSelectElement *select, VARIANT_BOOL b)
 {
@@ -6640,10 +6667,13 @@ static void test_create_elems(IHTMLDocument2 *doc)
     IHTMLElement_Release(elem);
     IHTMLDOMNode_Release(node);
 
-    node = test_create_text(doc, "test");
+    node = test_create_text(doc, "abc");
     test_ifaces((IUnknown*)node, text_iids);
     test_disp((IUnknown*)node, &DIID_DispHTMLDOMTextNode, "[object]");
-    test_text_length((IUnknown*)node, 4);
+    test_text_length((IUnknown*)node, 3);
+    test_text_data((IUnknown*)node, "abc");
+    set_text_data((IUnknown*)node, "test");
+    test_text_data((IUnknown*)node, "test");
 
     V_VT(&var) = VT_NULL;
     node2 = test_node_insertbefore((IUnknown*)body, node, &var);




More information about the wine-cvs mailing list