Module: wine Branch: master Commit: 281826ebd04d2ddaf56b69d129dddb6dca4307e4 URL: http://source.winehq.org/git/wine.git/?a=commit;h=281826ebd04d2ddaf56b69d129...
Author: Jacek Caban jacek@codeweavers.com Date: Fri Jul 21 15:11:10 2017 +0200
mshtml: Added IHTMLDOMNode3::put_textContent implementation.
Signed-off-by: Jacek Caban jacek@codeweavers.com Signed-off-by: Alexandre Julliard julliard@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(); }