Jacek Caban : mshtml: Added IHTMLDocument3::createTextNode implementation.
Alexandre Julliard
julliard at winehq.org
Mon Jun 23 16:03:57 CDT 2008
Module: wine
Branch: master
Commit: 39c7951cf1b95b76f2b9a4bf2aaad068034211dc
URL: http://source.winehq.org/git/wine.git/?a=commit;h=39c7951cf1b95b76f2b9a4bf2aaad068034211dc
Author: Jacek Caban <jacek at codeweavers.com>
Date: Mon Jun 23 09:50:22 2008 -0500
mshtml: Added IHTMLDocument3::createTextNode implementation.
---
dlls/mshtml/htmldoc3.c | 27 +++++++++++++++++++++++++--
dlls/mshtml/tests/dom.c | 25 +++++++++++++++++++++++++
2 files changed, 50 insertions(+), 2 deletions(-)
diff --git a/dlls/mshtml/htmldoc3.c b/dlls/mshtml/htmldoc3.c
index 4fbd131..92ed1cc 100644
--- a/dlls/mshtml/htmldoc3.c
+++ b/dlls/mshtml/htmldoc3.c
@@ -108,8 +108,31 @@ static HRESULT WINAPI HTMLDocument3_createTextNode(IHTMLDocument3 *iface, BSTR t
IHTMLDOMNode **newTextNode)
{
HTMLDocument *This = HTMLDOC3_THIS(iface);
- FIXME("(%p)->(%s %p)\n", This, debugstr_w(text), newTextNode);
- return E_NOTIMPL;
+ nsIDOMDocument *nsdoc;
+ nsIDOMText *nstext;
+ HTMLDOMNode *node;
+ nsAString text_str;
+ nsresult nsres;
+
+ TRACE("(%p)->(%s %p)\n", This, debugstr_w(text), newTextNode);
+
+ nsIWebNavigation_GetDocument(This->nscontainer->navigation, &nsdoc);
+
+ nsAString_Init(&text_str, text);
+ nsres = nsIDOMDocument_CreateTextNode(nsdoc, &text_str, &nstext);
+ nsAString_Finish(&text_str);
+ nsIDOMDocument_Release(nsdoc);
+ if(NS_FAILED(nsres)) {
+ ERR("CreateTextNode failed: %08x\n", nsres);
+ return E_FAIL;
+ }
+
+ node = HTMLDOMTextNode_Create(This, (nsIDOMNode*)nstext);
+ nsIDOMElement_Release(nstext);
+
+ *newTextNode = HTMLDOMNODE(node);
+ IHTMLDOMNode_AddRef(HTMLDOMNODE(node));
+ return S_OK;
}
static HRESULT WINAPI HTMLDocument3_get_documentElement(IHTMLDocument3 *iface, IHTMLElement **p)
diff --git a/dlls/mshtml/tests/dom.c b/dlls/mshtml/tests/dom.c
index b64555d..eb07b90 100644
--- a/dlls/mshtml/tests/dom.c
+++ b/dlls/mshtml/tests/dom.c
@@ -1035,6 +1035,26 @@ static IHTMLElement *_test_create_elem(unsigned line, IHTMLDocument2 *doc, const
return elem;
}
+#define test_create_text(d,t) _test_create_text(__LINE__,d,t)
+static IHTMLDOMNode *_test_create_text(unsigned line, IHTMLDocument2 *doc, const char *text)
+{
+ IHTMLDocument3 *doc3;
+ IHTMLDOMNode *node = NULL;
+ BSTR tmp;
+ HRESULT hres;
+
+ hres = IHTMLDocument2_QueryInterface(doc, &IID_IHTMLDocument3, (void**)&doc3);
+ ok_(__FILE__,line) (hres == S_OK, "Could not get IHTMLDocument3: %08x\n", hres);
+
+ tmp = a2bstr(text);
+ hres = IHTMLDocument3_createTextNode(doc3, tmp, &node);
+ IHTMLDocument3_Release(doc3);
+ ok_(__FILE__,line) (hres == S_OK, "createElement failed: %08x\n", hres);
+ ok_(__FILE__,line) (node != NULL, "node == NULL\n");
+
+ return node;
+}
+
#define test_node_append_child(n,c) _test_node_append_child(__LINE__,n,c)
static IHTMLDOMNode *_test_node_append_child(unsigned line, IUnknown *node_unk, IUnknown *child_unk)
{
@@ -1932,6 +1952,11 @@ static void test_create_elems(IHTMLDocument2 *doc)
IHTMLElement_Release(elem2);
IHTMLElement_Release(body);
IHTMLElement_Release(elem);
+
+ node = test_create_text(doc, "test");
+ test_ifaces((IUnknown*)node, text_iids);
+ test_disp((IUnknown*)node, &DIID_DispHTMLDOMTextNode);
+ IHTMLDOMNode_Release(node);
}
static void test_exec(IUnknown *unk, const GUID *grpid, DWORD cmdid, VARIANT *in, VARIANT *out)
More information about the wine-cvs
mailing list