[PATCH v2 09/16] mshtml: Implement HTMLDOMTextNode's toString.
Gabriel Ivăncescu
gabrielopcode at gmail.com
Tue Oct 5 09:18:42 CDT 2021
Signed-off-by: Gabriel Ivăncescu <gabrielopcode at gmail.com>
---
dlls/mshtml/htmltextnode.c | 24 ++++++++++++++++++++++--
dlls/mshtml/tests/documentmode.js | 1 +
2 files changed, 23 insertions(+), 2 deletions(-)
diff --git a/dlls/mshtml/htmltextnode.c b/dlls/mshtml/htmltextnode.c
index afe5d21..41679c9 100644
--- a/dlls/mshtml/htmltextnode.c
+++ b/dlls/mshtml/htmltextnode.c
@@ -128,8 +128,28 @@ 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;
+ nsAString nsstr;
+ nsresult nsres;
+
+ TRACE("(%p)->(%p)\n", This, String);
+
+ if(!String)
+ return E_INVALIDARG;
+
+ if(dispex_compat_mode(&This->node.event_target.dispex) >= COMPAT_MODE_IE9)
+ return dispex_to_string(&This->node.event_target.dispex, String);
+
+ 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);
+ return *String ? S_OK : E_OUTOFMEMORY;
}
static HRESULT WINAPI HTMLDOMTextNode_get_length(IHTMLDOMTextNode *iface, LONG *p)
diff --git a/dlls/mshtml/tests/documentmode.js b/dlls/mshtml/tests/documentmode.js
index 7425c01..53baeba 100644
--- a/dlls/mshtml/tests/documentmode.js
+++ b/dlls/mshtml/tests/documentmode.js
@@ -208,6 +208,7 @@ sync_test("builtin_toString", function() {
test("styleSheetRule", sheet.rules.item(0), "CSSStyleRule");
test("styleSheetRules", sheet.rules, "MSCSSRuleList");
test("styleSheets", document.styleSheets, "StyleSheetList");
+ test("textNode", document.createTextNode("testNode"), "Text", v < 9 ? "testNode" : null);
test("textRange", txtRange, "TextRange");
test("window", window, "Window", "[object Window]");
test("xmlHttpRequest", new XMLHttpRequest(), "XMLHttpRequest");
--
2.31.1
More information about the wine-devel
mailing list