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_alist...@hotmail.com> wrote in message > news:496d1ebf.2000...@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_alist...@hotmail.com> >> Date: Tue, 16 Dec 2008 21:49:25 +1100 >> Subject: [PATCH] Implement IHTMLDocument5 createComment >> To: wine-patches <wine-patc...@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