Re: mshtml: Implement IHTMLDocument5 createComment (resend)
Hi, Can I get some feedback on this please? Best Regards Alistair Leslie-Hughes "Alistair Leslie-Hughes" <leslie_alistair(a)hotmail.com> wrote in message news:496D1EBF.2000800(a)hotmail.com...
Hi,
Changelog: mshtml: Implement IHTMLDocument5 createComment
Best Regards Alistair Leslie-Hughes
--------------------------------------------------------------------------------
From 98f08b3836336d2f129413beada591fb8f2f1094 Mon Sep 17 00:00:00 2001 From: Alistair Leslie-Hughes <leslie_alistair(a)hotmail.com> Date: Tue, 16 Dec 2008 21:49:25 +1100 Subject: [PATCH] Implement IHTMLDocument5 createComment To: wine-patches <wine-patches(a)winehq.org>
--- dlls/mshtml/htmldoc5.c | 28 ++++++++++++++++++++++++++-- dlls/mshtml/tests/dom.c | 11 +++++++++++ 2 files changed, 37 insertions(+), 2 deletions(-)
diff --git a/dlls/mshtml/htmldoc5.c b/dlls/mshtml/htmldoc5.c index 34dc4e0..8fdfb68 100644 --- a/dlls/mshtml/htmldoc5.c +++ b/dlls/mshtml/htmldoc5.c @@ -124,8 +124,32 @@ static HRESULT WINAPI HTMLDocument5_createComment(IHTMLDocument5 *iface, BSTR bs IHTMLDOMNode **ppRetNode) { HTMLDocument *This = HTMLDOC5_THIS(iface); - FIXME("(%p)->(%s %p)\n", This, debugstr_w(bstrdata), ppRetNode); - return E_NOTIMPL; + nsIDOMComment *nsComment; + HTMLDOMNode *node; + nsAString str; + nsresult nsres; + + TRACE("(%p)->(%s %p)\n", This, debugstr_w(bstrdata), ppRetNode); + + if(!This->nsdoc) { + WARN("NULL nsdoc\n"); + return E_UNEXPECTED; + } + + nsAString_Init(&str, bstrdata); + nsres = nsIDOMHTMLDocument_CreateComment(This->nsdoc, &str, &nsComment); + nsAString_Finish(&str); + if(NS_FAILED(nsres)) { + ERR("CreateTextNode failed: %08x\n", nsres); + return E_FAIL; + } + + node = &HTMLCommentElement_Create(This, (nsIDOMNode*)nsComment)->node; + nsIDOMElement_Release(nsComment); + + *ppRetNode = HTMLDOMNODE(node); + IHTMLDOMNode_AddRef(HTMLDOMNODE(node)); + return S_OK; }
static HRESULT WINAPI HTMLDocument5_put_onfocusin(IHTMLDocument5 *iface, VARIANT v) diff --git a/dlls/mshtml/tests/dom.c b/dlls/mshtml/tests/dom.c index 3decd4b..400f83b 100644 --- a/dlls/mshtml/tests/dom.c +++ b/dlls/mshtml/tests/dom.c @@ -410,7 +410,9 @@ static IHTMLDocument2 *create_document(void) { IHTMLDocument2 *doc; IHTMLDocument5 *doc5; + IHTMLDOMNode *comment; HRESULT hres; + BSTR str;
hres = CoCreateInstance(&CLSID_HTMLDocument, NULL, CLSCTX_INPROC_SERVER|CLSCTX_INPROC_HANDLER, &IID_IHTMLDocument2, (void**)&doc); @@ -423,6 +425,15 @@ static IHTMLDocument2 *create_document(void) return NULL; }
+ str = a2bstr("testing"); + hres = IHTMLDocument5_createComment(doc5, str, &comment); + SysFreeString(str); + ok(hres == S_OK, "createComment failed: %08x\n", hres); + if(hres == S_OK) + { + IHTMLDOMNode_Release(comment); + } + IHTMLDocument5_Release(doc5); return doc; } -- 1.5.4.3
--------------------------------------------------------------------------------
Hi Alistair, Alistair Leslie-Hughes wrote:
Hi,
Can I get some feedback on this please?
Sure, sorry that I didn't look carefully enough to find problems with it, overall mshtml part looks good.
"Alistair Leslie-Hughes" <leslie_alistair(a)hotmail.com> wrote in message news:496D1EBF.2000800(a)hotmail.com...
Hi,
Changelog: mshtml: Implement IHTMLDocument5 createComment
Best Regards Alistair Leslie-Hughes
--------------------------------------------------------------------------------
From 98f08b3836336d2f129413beada591fb8f2f1094 Mon Sep 17 00:00:00 2001 From: Alistair Leslie-Hughes <leslie_alistair(a)hotmail.com> Date: Tue, 16 Dec 2008 21:49:25 +1100 Subject: [PATCH] Implement IHTMLDocument5 createComment To: wine-patches <wine-patches(a)winehq.org>
--- dlls/mshtml/htmldoc5.c | 28 ++++++++++++++++++++++++++-- dlls/mshtml/tests/dom.c | 11 +++++++++++ 2 files changed, 37 insertions(+), 2 deletions(-)
diff --git a/dlls/mshtml/htmldoc5.c b/dlls/mshtml/htmldoc5.c index 34dc4e0..8fdfb68 100644 --- a/dlls/mshtml/htmldoc5.c +++ b/dlls/mshtml/htmldoc5.c @@ -124,8 +124,32 @@ static HRESULT WINAPI HTMLDocument5_createComment(IHTMLDocument5 *iface, BSTR bs IHTMLDOMNode **ppRetNode) { HTMLDocument *This = HTMLDOC5_THIS(iface); - FIXME("(%p)->(%s %p)\n", This, debugstr_w(bstrdata), ppRetNode); - return E_NOTIMPL; + nsIDOMComment *nsComment;
Please use better name (consistent with the rest of code) like nscomment.
+ HTMLDOMNode *node; + nsAString str; + nsresult nsres; + + TRACE("(%p)->(%s %p)\n", This, debugstr_w(bstrdata), ppRetNode); + + if(!This->nsdoc) { + WARN("NULL nsdoc\n"); + return E_UNEXPECTED; + } + + nsAString_Init(&str, bstrdata); + nsres = nsIDOMHTMLDocument_CreateComment(This->nsdoc, &str, &nsComment); + nsAString_Finish(&str); + if(NS_FAILED(nsres)) { + ERR("CreateTextNode failed: %08x\n", nsres); + return E_FAIL; + } + + node = &HTMLCommentElement_Create(This, (nsIDOMNode*)nsComment)->node; + nsIDOMElement_Release(nsComment); + + *ppRetNode = HTMLDOMNODE(node); + IHTMLDOMNode_AddRef(HTMLDOMNODE(node)); + return S_OK; }
static HRESULT WINAPI HTMLDocument5_put_onfocusin(IHTMLDocument5 *iface, VARIANT v) diff --git a/dlls/mshtml/tests/dom.c b/dlls/mshtml/tests/dom.c index 3decd4b..400f83b 100644 --- a/dlls/mshtml/tests/dom.c +++ b/dlls/mshtml/tests/dom.c @@ -410,7 +410,9 @@ static IHTMLDocument2 *create_document(void) { IHTMLDocument2 *doc; IHTMLDocument5 *doc5; + IHTMLDOMNode *comment; HRESULT hres; + BSTR str;
hres = CoCreateInstance(&CLSID_HTMLDocument, NULL, CLSCTX_INPROC_SERVER|CLSCTX_INPROC_HANDLER, &IID_IHTMLDocument2, (void**)&doc); @@ -423,6 +425,15 @@ static IHTMLDocument2 *create_document(void) return NULL; }
+ str = a2bstr("testing"); + hres = IHTMLDocument5_createComment(doc5, str, &comment); + SysFreeString(str); + ok(hres == S_OK, "createComment failed: %08x\n", hres); + if(hres == S_OK) + { + IHTMLDOMNode_Release(comment); + }
That's wrong place to test it. test_create_elems is probably a good place. Also it would be nice to do anything with created node like testing it by get_node_type. Jacek
participants (2)
-
Alistair Leslie-Hughes -
Jacek Caban