Re: msxml3: Implement ownerDocument
Dont apply this patch. "Alistair Leslie-Hughes" <leslie_alistair(a)hotmail.com> wrote in message news:fn6308$1gf$1(a)ger.gmane.org...
Hi,
Changelog: msxml3: Implement ownerDocument
Best Regards Alistair Leslie-Hughes
--------------------------------------------------------------------------------
From 422440f49888d555c6031e3e40cafda0523c6ad8 Mon Sep 17 00:00:00 2001 From: Alistair Leslie-Hughes <leslie_alistair(a)hotmail.com> Date: Wed, 23 Jan 2008 11:07:59 +1100 Subject: [PATCH] Implement ownerDocument To: wine-patches <wine-patches(a)winehq.org>
--- dlls/msxml3/node.c | 22 ++++++++++++++++++++-- dlls/msxml3/tests/domdoc.c | 23 +++++++++++++++++++++-- 2 files changed, 41 insertions(+), 4 deletions(-)
diff --git a/dlls/msxml3/node.c b/dlls/msxml3/node.c index 9d43c09..bc7a2a0 100644 --- a/dlls/msxml3/node.c +++ b/dlls/msxml3/node.c @@ -602,8 +602,26 @@ static HRESULT WINAPI xmlnode_get_ownerDocument( IXMLDOMNode *iface, IXMLDOMDocument** DOMDocument) { - FIXME("\n"); - return E_NOTIMPL; + HRESULT hr = S_OK; + xmlnode *This = impl_from_IXMLDOMNode( iface ); + TRACE("\n"); + + if(!DOMDocument) + return E_INVALIDARG; + + *DOMDocument = NULL; + + switch( This->node->type ) + { + case XML_DOCUMENT_NODE: + hr = S_FALSE; + break; + default: + *DOMDocument = (IXMLDOMDocument*)create_basic_node( (xmlNodePtr)This->node->doc, NULL );
+ break; + } + + return hr; }
static HRESULT WINAPI xmlnode_cloneNode( diff --git a/dlls/msxml3/tests/domdoc.c b/dlls/msxml3/tests/domdoc.c index 4507d08..8802053 100644 --- a/dlls/msxml3/tests/domdoc.c +++ b/dlls/msxml3/tests/domdoc.c @@ -687,10 +687,9 @@ static void test_domnode( void ) { owner = NULL; r = IXMLDOMNode_get_ownerDocument( element, &owner ); - todo_wine { ok( r == S_OK, "get_ownerDocument return code\n"); - } ok( owner != doc, "get_ownerDocument return\n"); + IXMLDOMDocument_Release(owner);
type = NODE_INVALID; r = IXMLDOMNode_get_nodeType( element, &type); @@ -1869,6 +1868,7 @@ static void test_cloneNode(void ) static void test_xmlTypes(void) { IXMLDOMDocument *doc = NULL; + IXMLDOMDocument *docOwner = NULL; IXMLDOMElement *pRoot; HRESULT hr; IXMLDOMComment *pComment; @@ -1923,6 +1923,25 @@ static void test_xmlTypes(void) ok(hr == S_OK, "ret %08x\n", hr ); ok( !lstrcmpW( str, _bstr_("document") ), "incorrect nodeTypeString string\n"); SysFreeString(str); + + /* test ownerDocument */ + hr = IXMLDOMDocument_get_ownerDocument(doc, NULL); + ok(hr == E_INVALIDARG, "ret %08x\n", hr ); + + hr = IXMLDOMDocument_get_ownerDocument(doc, &docOwner); + ok(hr == S_FALSE, "ret %08x\n", hr ); + ok(docOwner == NULL, "ownerDocument return a value\n"); + if(docOwner != NULL) + { + str = NULL; + hr = IXMLDOMDocument_get_nodeName( docOwner, &str ); + ok ( hr == S_OK, "get_nodeName wrong code\n"); + ok ( str != NULL, "str is null\n"); + ok( !lstrcmpW( str, szDocument ), "incorrect nodeName\n"); + SysFreeString( str ); + + IXMLDOMDocument_Release(docOwner); + }
/* test implementation */ hr = IXMLDOMDocument_get_implementation(doc, NULL); -- 1.5.3.7
--------------------------------------------------------------------------------
participants (1)
-
Alistair Leslie-Hughes