Jacek Caban : mshtml: Added IHTMLTextNode2::appendData implementation.
Alexandre Julliard
julliard at wine.codeweavers.com
Fri Nov 21 09:11:39 CST 2014
Module: wine
Branch: master
Commit: 5ecea72a505f715d2569832e3e8cb1d2c2bc49f0
URL: http://source.winehq.org/git/wine.git/?a=commit;h=5ecea72a505f715d2569832e3e8cb1d2c2bc49f0
Author: Jacek Caban <jacek at codeweavers.com>
Date: Fri Nov 21 13:02:17 2014 +0100
mshtml: Added IHTMLTextNode2::appendData implementation.
---
dlls/mshtml/htmltextnode.c | 16 ++++++++++++++--
dlls/mshtml/tests/dom.c | 30 ++++++++++++++++++++++++++++++
2 files changed, 44 insertions(+), 2 deletions(-)
diff --git a/dlls/mshtml/htmltextnode.c b/dlls/mshtml/htmltextnode.c
index 66af237..fd4795b 100644
--- a/dlls/mshtml/htmltextnode.c
+++ b/dlls/mshtml/htmltextnode.c
@@ -237,8 +237,20 @@ static HRESULT WINAPI HTMLDOMTextNode2_substringData(IHTMLDOMTextNode2 *iface, L
static HRESULT WINAPI HTMLDOMTextNode2_appendData(IHTMLDOMTextNode2 *iface, BSTR string)
{
HTMLDOMTextNode *This = impl_from_IHTMLDOMTextNode2(iface);
- FIXME("(%p)->(%s)\n", This, debugstr_w(string));
- return E_NOTIMPL;
+ nsAString nsstr;
+ nsresult nsres;
+
+ TRACE("(%p)->(%s)\n", This, debugstr_w(string));
+
+ nsAString_InitDepend(&nsstr, string);
+ nsres = nsIDOMText_AppendData(This->nstext, &nsstr);
+ nsAString_Finish(&nsstr);
+ if(NS_FAILED(nsres)) {
+ ERR("AppendData failed: %08x\n", nsres);
+ return E_FAIL;
+ }
+
+ return S_OK;
}
static HRESULT WINAPI HTMLDOMTextNode2_insertData(IHTMLDOMTextNode2 *iface, LONG offset, BSTR string)
diff --git a/dlls/mshtml/tests/dom.c b/dlls/mshtml/tests/dom.c
index f0896f6..a919b3d 100644
--- a/dlls/mshtml/tests/dom.c
+++ b/dlls/mshtml/tests/dom.c
@@ -264,6 +264,7 @@ static const IID * const text_iids[] = {
&IID_IHTMLDOMNode,
&IID_IHTMLDOMNode2,
&IID_IHTMLDOMTextNode,
+ &IID_IHTMLDOMTextNode2,
NULL
};
@@ -873,6 +874,17 @@ static IHTMLDOMTextNode *_get_text_iface(unsigned line, IUnknown *unk)
return text;
}
+#define get_text2_iface(u) _get_text2_iface(__LINE__,u)
+static IHTMLDOMTextNode2 *_get_text2_iface(unsigned line, IUnknown *unk)
+{
+ IHTMLDOMTextNode2 *text2;
+ HRESULT hres;
+
+ hres = IUnknown_QueryInterface(unk, &IID_IHTMLDOMTextNode2, (void**)&text2);
+ ok_(__FILE__,line) (hres == S_OK, "Could not get IHTMLDOMTextNode2: %08x\n", hres);
+ return text2;
+}
+
#define get_comment_iface(u) _get_comment_iface(__LINE__,u)
static IHTMLCommentElement *_get_comment_iface(unsigned line, IUnknown *unk)
{
@@ -2709,6 +2721,19 @@ static void _set_text_data(unsigned line, IUnknown *unk, const char *data)
SysFreeString(str);
}
+#define text_append_data(a,b) _text_append_data(__LINE__,a,b)
+static void _text_append_data(unsigned line, IUnknown *unk, const char *data)
+{
+ IHTMLDOMTextNode2 *text = _get_text2_iface(line, unk);
+ BSTR str = a2bstr(data);
+ HRESULT hres;
+
+ hres = IHTMLDOMTextNode2_appendData(text, str);
+ ok_(__FILE__,line)(hres == S_OK, "appendData failed: %08x\n", hres);
+ IHTMLDOMTextNode2_Release(text);
+ SysFreeString(str);
+}
+
#define test_select_set_disabled(i,b) _test_select_set_disabled(__LINE__,i,b)
static void _test_select_set_disabled(unsigned line, IHTMLSelectElement *select, VARIANT_BOOL b)
{
@@ -8155,6 +8180,11 @@ static void test_create_elems(IHTMLDocument2 *doc)
test_text_data((IUnknown*)node, "abc");
set_text_data((IUnknown*)node, "test");
test_text_data((IUnknown*)node, "test");
+ text_append_data((IUnknown*)node, " append");
+ test_text_data((IUnknown*)node, "test append");
+ text_append_data((IUnknown*)node, NULL);
+ test_text_data((IUnknown*)node, "test append");
+ set_text_data((IUnknown*)node, "test");
V_VT(&var) = VT_NULL;
node2 = test_node_insertbefore((IUnknown*)body, node, &var);
More information about the wine-cvs
mailing list