[PATCH v2 6/8] mshtml: Implement IHTMLDOMTextNode::toString.

Gabriel Ivăncescu gabrielopcode at gmail.com
Fri Sep 24 08:45:35 CDT 2021


Signed-off-by: Gabriel Ivăncescu <gabrielopcode at gmail.com>
---
 dlls/mshtml/htmltextnode.c        | 30 +++++++++++++++++++++++++++---
 dlls/mshtml/tests/documentmode.js |  2 ++
 2 files changed, 29 insertions(+), 3 deletions(-)

diff --git a/dlls/mshtml/htmltextnode.c b/dlls/mshtml/htmltextnode.c
index 56a0572..be20be5 100644
--- a/dlls/mshtml/htmltextnode.c
+++ b/dlls/mshtml/htmltextnode.c
@@ -128,8 +128,31 @@ static HRESULT WINAPI HTMLDOMTextNode_get_data(IHTMLDOMTextNode *iface, BSTR *p)
 static HRESULT WINAPI HTMLDOMTextNode_toString(IHTMLDOMTextNode *iface, BSTR *String)
 {
     HTMLDOMTextNode *This = impl_from_IHTMLDOMTextNode(iface);
-    FIXME("(%p)->(%p)\n", This, String);
-    return E_NOTIMPL;
+    const PRUnichar *str;
+
+    TRACE("(%p)->(%p)\n", This, String);
+
+    if(!String)
+        return E_INVALIDARG;
+
+    str = dispex_tostring(&This->node.event_target.dispex);
+    if(!wcscmp(str, L"[object]")) {
+        nsAString nsstr;
+        nsresult nsres;
+
+        nsAString_Init(&nsstr, NULL);
+        nsres = nsIDOMText_GetData(This->nstext, &nsstr);
+        if(NS_FAILED(nsres)) {
+            nsAString_Finish(&nsstr);
+            return map_nsresult(nsres);
+        }
+        nsAString_GetData(&nsstr, &str);
+        *String = SysAllocString(str);
+        nsAString_Finish(&nsstr);
+    }else {
+        *String = SysAllocString(str);
+    }
+    return *String ? S_OK : E_OUTOFMEMORY;
 }
 
 static HRESULT WINAPI HTMLDOMTextNode_get_length(IHTMLDOMTextNode *iface, LONG *p)
@@ -361,7 +384,8 @@ static dispex_static_data_t HTMLDOMTextNode_dispex = {
     NULL,
     DispHTMLDOMTextNode_tid,
     HTMLDOMTextNode_iface_tids,
-    HTMLDOMNode_init_dispex_info
+    HTMLDOMNode_init_dispex_info,
+    L"[object Text]"
 };
 
 HRESULT HTMLDOMTextNode_Create(HTMLDocumentNode *doc, nsIDOMNode *nsnode, HTMLDOMNode **node)
diff --git a/dlls/mshtml/tests/documentmode.js b/dlls/mshtml/tests/documentmode.js
index 037631b..5f78791 100644
--- a/dlls/mshtml/tests/documentmode.js
+++ b/dlls/mshtml/tests/documentmode.js
@@ -166,6 +166,8 @@ sync_test("builtin_toString", function() {
     ok(s === (v < 9 ? "[object]" : (v < 11 ? "[object Document]" : "[object HTMLDocument]")), "document.toString returned " + s);
     s = document.body.style.toString();
     ok(s === (v < 9 ? "[object]" : "[object MSStyleCSSProperties]"), "document.body.style.toString returned " + s);
+    s = document.createTextNode("testNode").toString();
+    ok(s === (v < 9 ? "testNode" : "[object Text]"), "text node 'testNode' toString returned " + s);
 });
 
 sync_test("elem_props", function() {
-- 
2.31.1




More information about the wine-devel mailing list