[PATCH v2 0/3] MR10188: msxml/tests: Add some more tests for the ownerDocument() property.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com> -- v2: msxml/tests: Add parentNode() property test for the document nodes. msxml3/dom: Fix ownerDocument() property for documents. msxml/tests: Add some more tests for the ownerDocument() property. https://gitlab.winehq.org/wine/wine/-/merge_requests/10188
From: Nikolay Sivov <nsivov@codeweavers.com> Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com> --- dlls/msxml3/tests/domdoc.c | 20 ++++++++++++++++++++ dlls/msxml4/tests/domdoc.c | 35 +++++++++++++++++++++++++++++++++++ dlls/msxml6/tests/domdoc.c | 37 +++++++++++++++++++++++++++++++++++++ 3 files changed, 92 insertions(+) diff --git a/dlls/msxml3/tests/domdoc.c b/dlls/msxml3/tests/domdoc.c index 0ff88b04cc4..6af4094546c 100644 --- a/dlls/msxml3/tests/domdoc.c +++ b/dlls/msxml3/tests/domdoc.c @@ -8396,12 +8396,32 @@ static void test_get_ownerDocument(void) doc = create_document(&IID_IXMLDOMDocument2); cache = create_cache(&IID_IXMLDOMSchemaCollection); + hr = IXMLDOMDocument2_get_ownerDocument(doc, NULL); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); + + doc1 = (void *)0xdead; + hr = IXMLDOMDocument2_get_ownerDocument(doc, &doc1); + todo_wine + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); + todo_wine + ok(!doc1, "Unexpected pointer.\n"); + VariantInit(&var); hr = IXMLDOMDocument2_loadXML(doc, _bstr_(complete4A), &b); ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(b == VARIANT_TRUE, "failed to load XML string\n"); + hr = IXMLDOMDocument2_get_ownerDocument(doc, NULL); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); + + doc1 = (void *)0xdead; + hr = IXMLDOMDocument2_get_ownerDocument(doc, &doc1); + todo_wine + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); + todo_wine + ok(!doc1, "Unexpected pointer.\n"); + check_default_props(doc); /* set properties and check that new instances use them */ diff --git a/dlls/msxml4/tests/domdoc.c b/dlls/msxml4/tests/domdoc.c index 1a3a663d359..4b8e75bb440 100644 --- a/dlls/msxml4/tests/domdoc.c +++ b/dlls/msxml4/tests/domdoc.c @@ -321,6 +321,40 @@ static void test_namespaces_as_attributes(void) free_bstrs(); } +static void test_get_ownerDocument(void) +{ + IXMLDOMDocument *doc1; + IXMLDOMDocument2 *doc; + VARIANT_BOOL b; + HRESULT hr; + + hr = CoCreateInstance(&CLSID_DOMDocument40, NULL, CLSCTX_INPROC_SERVER, &IID_IXMLDOMDocument2, (void **)&doc); + + hr = IXMLDOMDocument2_get_ownerDocument(doc, NULL); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); + + doc1 = (void *)0xdead; + hr = IXMLDOMDocument2_get_ownerDocument(doc, &doc1); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + todo_wine + ok(!doc1, "Unexpected pointer.\n"); + + hr = IXMLDOMDocument2_loadXML(doc, _bstr_(L"<a>text</a>"), &b); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(b == VARIANT_TRUE, "Unexpected result %d.\n", b); + + hr = IXMLDOMDocument2_get_ownerDocument(doc, NULL); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); + + doc1 = (void *)0xdead; + hr = IXMLDOMDocument2_get_ownerDocument(doc, &doc1); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + todo_wine + ok(!doc1, "Unexpected pointer.\n"); + + IXMLDOMDocument2_Release(doc); +} + START_TEST(domdoc) { HRESULT hr; @@ -339,6 +373,7 @@ START_TEST(domdoc) test_namespaces_as_attributes(); test_create_attribute(); + test_get_ownerDocument(); CoUninitialize(); } diff --git a/dlls/msxml6/tests/domdoc.c b/dlls/msxml6/tests/domdoc.c index 9dfe026fef5..9f3d36885c6 100644 --- a/dlls/msxml6/tests/domdoc.c +++ b/dlls/msxml6/tests/domdoc.c @@ -401,6 +401,42 @@ static void test_leading_spaces(void) free_bstrs(); } +static void test_get_ownerDocument(void) +{ + IXMLDOMDocument *doc1; + IXMLDOMDocument2 *doc; + VARIANT_BOOL b; + HRESULT hr; + + hr = CoCreateInstance(&CLSID_DOMDocument60, NULL, CLSCTX_INPROC_SERVER, &IID_IXMLDOMDocument2, (void **)&doc); + + hr = IXMLDOMDocument2_get_ownerDocument(doc, NULL); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); + + doc1 = (void *)0xdead; + hr = IXMLDOMDocument2_get_ownerDocument(doc, &doc1); + todo_wine + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); + todo_wine + ok(!doc1, "Unexpected pointer.\n"); + + hr = IXMLDOMDocument2_loadXML(doc, _bstr_(L"<a>text</a>"), &b); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(b == VARIANT_TRUE, "Unexpected result %d.\n", b); + + hr = IXMLDOMDocument2_get_ownerDocument(doc, NULL); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); + + doc1 = (void *)0xdead; + hr = IXMLDOMDocument2_get_ownerDocument(doc, &doc1); + todo_wine + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); + todo_wine + ok(!doc1, "Unexpected pointer.\n"); + + IXMLDOMDocument2_Release(doc); +} + START_TEST(domdoc) { HRESULT hr; @@ -420,6 +456,7 @@ START_TEST(domdoc) test_namespaces_as_attributes(); test_create_attribute(); test_leading_spaces(); + test_get_ownerDocument(); CoUninitialize(); } -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/10188
From: Nikolay Sivov <nsivov@codeweavers.com> Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com> --- dlls/msxml3/domdoc.c | 15 ++++++++------- dlls/msxml3/node.c | 7 +++++-- dlls/msxml3/tests/domdoc.c | 4 ---- dlls/msxml4/tests/domdoc.c | 4 ++-- dlls/msxml6/tests/domdoc.c | 4 ---- 5 files changed, 15 insertions(+), 19 deletions(-) diff --git a/dlls/msxml3/domdoc.c b/dlls/msxml3/domdoc.c index c00e0f2984b..1e7398f8d70 100644 --- a/dlls/msxml3/domdoc.c +++ b/dlls/msxml3/domdoc.c @@ -1253,15 +1253,16 @@ static HRESULT WINAPI domdoc_hasChildNodes( } -static HRESULT WINAPI domdoc_get_ownerDocument( - IXMLDOMDocument3 *iface, - IXMLDOMDocument **doc) +static HRESULT WINAPI domdoc_get_ownerDocument(IXMLDOMDocument3 *iface, IXMLDOMDocument **owner) { - domdoc *This = impl_from_IXMLDOMDocument3( iface ); - TRACE("(%p)->(%p)\n", This, doc); - return node_get_owner_doc(&This->node, doc); -} + TRACE("%p, %p.\n", iface, owner); + if (!owner) + return E_INVALIDARG; + + *owner = NULL; + return S_FALSE; +} static HRESULT WINAPI domdoc_cloneNode( IXMLDOMDocument3 *iface, diff --git a/dlls/msxml3/node.c b/dlls/msxml3/node.c index 3e389144cd4..349e154e05c 100644 --- a/dlls/msxml3/node.c +++ b/dlls/msxml3/node.c @@ -2001,8 +2001,11 @@ HRESULT node_transform_node_params(const xmlnode *This, IXMLDOMNode *stylesheet, sheet = get_node_obj(stylesheet); if(!sheet) return E_FAIL; - if (FAILED(hr = IXMLDOMNode_get_ownerDocument(stylesheet, &owner_doc))) - return hr; + if (FAILED(IXMLDOMNode_QueryInterface(stylesheet, &IID_IXMLDOMDocument, (void **)&owner_doc))) + { + if (FAILED(hr = IXMLDOMNode_get_ownerDocument(stylesheet, &owner_doc))) + return hr; + } sheet_doc = xmlCopyDoc(sheet->node->doc, 1); xsltSS = xsltParseStylesheetDoc(sheet_doc); diff --git a/dlls/msxml3/tests/domdoc.c b/dlls/msxml3/tests/domdoc.c index 6af4094546c..2611e13c677 100644 --- a/dlls/msxml3/tests/domdoc.c +++ b/dlls/msxml3/tests/domdoc.c @@ -8401,9 +8401,7 @@ static void test_get_ownerDocument(void) doc1 = (void *)0xdead; hr = IXMLDOMDocument2_get_ownerDocument(doc, &doc1); - todo_wine ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); - todo_wine ok(!doc1, "Unexpected pointer.\n"); VariantInit(&var); @@ -8417,9 +8415,7 @@ static void test_get_ownerDocument(void) doc1 = (void *)0xdead; hr = IXMLDOMDocument2_get_ownerDocument(doc, &doc1); - todo_wine ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); - todo_wine ok(!doc1, "Unexpected pointer.\n"); check_default_props(doc); diff --git a/dlls/msxml4/tests/domdoc.c b/dlls/msxml4/tests/domdoc.c index 4b8e75bb440..c0e528e19be 100644 --- a/dlls/msxml4/tests/domdoc.c +++ b/dlls/msxml4/tests/domdoc.c @@ -335,8 +335,8 @@ static void test_get_ownerDocument(void) doc1 = (void *)0xdead; hr = IXMLDOMDocument2_get_ownerDocument(doc, &doc1); - ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); todo_wine + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(!doc1, "Unexpected pointer.\n"); hr = IXMLDOMDocument2_loadXML(doc, _bstr_(L"<a>text</a>"), &b); @@ -348,8 +348,8 @@ static void test_get_ownerDocument(void) doc1 = (void *)0xdead; hr = IXMLDOMDocument2_get_ownerDocument(doc, &doc1); - ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); todo_wine + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(!doc1, "Unexpected pointer.\n"); IXMLDOMDocument2_Release(doc); diff --git a/dlls/msxml6/tests/domdoc.c b/dlls/msxml6/tests/domdoc.c index 9f3d36885c6..cbc7273d689 100644 --- a/dlls/msxml6/tests/domdoc.c +++ b/dlls/msxml6/tests/domdoc.c @@ -415,9 +415,7 @@ static void test_get_ownerDocument(void) doc1 = (void *)0xdead; hr = IXMLDOMDocument2_get_ownerDocument(doc, &doc1); - todo_wine ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); - todo_wine ok(!doc1, "Unexpected pointer.\n"); hr = IXMLDOMDocument2_loadXML(doc, _bstr_(L"<a>text</a>"), &b); @@ -429,9 +427,7 @@ static void test_get_ownerDocument(void) doc1 = (void *)0xdead; hr = IXMLDOMDocument2_get_ownerDocument(doc, &doc1); - todo_wine ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); - todo_wine ok(!doc1, "Unexpected pointer.\n"); IXMLDOMDocument2_Release(doc); -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/10188
From: Nikolay Sivov <nsivov@codeweavers.com> Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com> --- dlls/msxml3/tests/domdoc.c | 21 +++++++++++++++++++++ dlls/msxml4/tests/domdoc.c | 21 +++++++++++++++++++++ dlls/msxml6/tests/domdoc.c | 21 +++++++++++++++++++++ 3 files changed, 63 insertions(+) diff --git a/dlls/msxml3/tests/domdoc.c b/dlls/msxml3/tests/domdoc.c index 2611e13c677..9c16436bc1c 100644 --- a/dlls/msxml3/tests/domdoc.c +++ b/dlls/msxml3/tests/domdoc.c @@ -14484,6 +14484,26 @@ static DWORD WINAPI new_thread(void *arg) return 0; } +static void test_get_parentNode(void) +{ + IXMLDOMDocument *doc; + IXMLDOMNode *node; + HRESULT hr; + + hr = CoCreateInstance(&CLSID_DOMDocument2, NULL, CLSCTX_INPROC_SERVER, &IID_IXMLDOMDocument, (void **)&doc); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + + hr = IXMLDOMDocument_get_parentNode(doc, NULL); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); + + node = (void *)0x1; + hr = IXMLDOMDocument_get_parentNode(doc, &node); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); + ok(!node, "Unexpected node %p.\n", node); + + IXMLDOMDocument_Release(doc); +} + START_TEST(domdoc) { HRESULT hr; @@ -14575,6 +14595,7 @@ START_TEST(domdoc) test_xsltemplate(); test_xsltext(); test_max_element_depth_values(); + test_get_parentNode(); if (is_clsid_supported(&CLSID_MXNamespaceManager40, &IID_IMXNamespaceManager)) { diff --git a/dlls/msxml4/tests/domdoc.c b/dlls/msxml4/tests/domdoc.c index c0e528e19be..edcb82fa313 100644 --- a/dlls/msxml4/tests/domdoc.c +++ b/dlls/msxml4/tests/domdoc.c @@ -355,6 +355,26 @@ static void test_get_ownerDocument(void) IXMLDOMDocument2_Release(doc); } +static void test_get_parentNode(void) +{ + IXMLDOMDocument *doc; + IXMLDOMNode *node; + HRESULT hr; + + hr = CoCreateInstance(&CLSID_DOMDocument40, NULL, CLSCTX_INPROC_SERVER, &IID_IXMLDOMDocument, (void **)&doc); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + + hr = IXMLDOMDocument_get_parentNode(doc, NULL); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); + + node = (void *)0x1; + hr = IXMLDOMDocument_get_parentNode(doc, &node); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); + ok(!node, "Unexpected node %p.\n", node); + + IXMLDOMDocument_Release(doc); +} + START_TEST(domdoc) { HRESULT hr; @@ -374,6 +394,7 @@ START_TEST(domdoc) test_namespaces_as_attributes(); test_create_attribute(); test_get_ownerDocument(); + test_get_parentNode(); CoUninitialize(); } diff --git a/dlls/msxml6/tests/domdoc.c b/dlls/msxml6/tests/domdoc.c index cbc7273d689..2bf7acb276d 100644 --- a/dlls/msxml6/tests/domdoc.c +++ b/dlls/msxml6/tests/domdoc.c @@ -433,6 +433,26 @@ static void test_get_ownerDocument(void) IXMLDOMDocument2_Release(doc); } +static void test_get_parentNode(void) +{ + IXMLDOMDocument *doc; + IXMLDOMNode *node; + HRESULT hr; + + hr = CoCreateInstance(&CLSID_DOMDocument60, NULL, CLSCTX_INPROC_SERVER, &IID_IXMLDOMDocument, (void **)&doc); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + + hr = IXMLDOMDocument_get_parentNode(doc, NULL); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); + + node = (void *)0x1; + hr = IXMLDOMDocument_get_parentNode(doc, &node); + ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr); + ok(!node, "Unexpected node %p.\n", node); + + IXMLDOMDocument_Release(doc); +} + START_TEST(domdoc) { HRESULT hr; @@ -453,6 +473,7 @@ START_TEST(domdoc) test_create_attribute(); test_leading_spaces(); test_get_ownerDocument(); + test_get_parentNode(); CoUninitialize(); } -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/10188
v2: fixed test failures on Wine -- https://gitlab.winehq.org/wine/wine/-/merge_requests/10188#note_130589
participants (2)
-
Nikolay Sivov -
Nikolay Sivov (@nsivov)