Jacek Caban : mshtml: Added IHTMLDOMNode3::put_textContent implementation.

Alexandre Julliard julliard at winehq.org
Fri Jul 21 14:09:20 CDT 2017


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

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Fri Jul 21 15:11:10 2017 +0200

mshtml: Added IHTMLDOMNode3::put_textContent implementation.

Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/mshtml/htmlnode.c        | 21 +++++++++++++++++++--
 dlls/mshtml/tests/elements.js |  9 +++++++++
 2 files changed, 28 insertions(+), 2 deletions(-)

diff --git a/dlls/mshtml/htmlnode.c b/dlls/mshtml/htmlnode.c
index ec18648..80bf31d 100644
--- a/dlls/mshtml/htmlnode.c
+++ b/dlls/mshtml/htmlnode.c
@@ -1241,8 +1241,25 @@ static HRESULT WINAPI HTMLDOMNode3_get_namespaceURI(IHTMLDOMNode3 *iface, VARIAN
 static HRESULT WINAPI HTMLDOMNode3_put_textContent(IHTMLDOMNode3 *iface, VARIANT v)
 {
     HTMLDOMNode *This = impl_from_IHTMLDOMNode3(iface);
-    FIXME("(%p)->(%s)\n", This, debugstr_variant(&v));
-    return E_NOTIMPL;
+    nsAString nsstr;
+    nsresult nsres;
+
+    TRACE("(%p)->(%s)\n", This, debugstr_variant(&v));
+
+    if(V_VT(&v) != VT_BSTR) {
+        FIXME("unsupported argument %s\n", debugstr_variant(&v));
+        return E_NOTIMPL;
+    }
+
+    nsAString_Init(&nsstr, V_BSTR(&v));
+    nsres = nsIDOMNode_SetTextContent(This->nsnode, &nsstr);
+    nsAString_Finish(&nsstr);
+    if(NS_FAILED(nsres)) {
+        ERR("SetTextContent failed: %08x\n", nsres);
+        return E_FAIL;
+    }
+
+    return S_OK;
 }
 
 static HRESULT WINAPI HTMLDOMNode3_get_textContent(IHTMLDOMNode3 *iface, VARIANT *p)
diff --git a/dlls/mshtml/tests/elements.js b/dlls/mshtml/tests/elements.js
index 79eb68a..4167e32 100644
--- a/dlls/mshtml/tests/elements.js
+++ b/dlls/mshtml/tests/elements.js
@@ -68,6 +68,15 @@ function test_textContent() {
     div.innerHTML = "abc<script>/* */</script><div>text</div>";
     ok(div.textContent === "abc/* */text", "div.textContent = " + div.textContent);
 
+    div.textContent = "test";
+    ok(div.textContent === "test", "div.textContent = " + div.textContent);
+    ok(div.childNodes.length === 1, "div.childNodes.length = " + div.childNodes.length);
+    ok(div.firstChild.textContent === "test", "div.firstChild.textContent = " + div.firstChild.textContent);
+
+    div.textContent = "";
+    ok(div.textContent === "", "div.textContent = " + div.textContent);
+    ok(div.childNodes.length === 0, "div.childNodes.length = " + div.childNodes.length);
+
     next_test();
 }
 




More information about the wine-cvs mailing list