Module: wine Branch: master Commit: ca046f9eb5ca9f0ca4cb05044fcd866dff10c4a7 URL: http://source.winehq.org/git/wine.git/?a=commit;h=ca046f9eb5ca9f0ca4cb05044f...
Author: Nikolay Sivov nsivov@codeweavers.com Date: Fri Jan 20 04:00:23 2012 +0300
msxml3: IXMLDOMSchemaCollection::get() is a stub for version 6.
---
dlls/msxml3/domdoc.c | 7 +++- dlls/msxml3/schema.c | 7 +++- dlls/msxml3/tests/domdoc.c | 81 ++++++++++++++++++++++++++++++++++++++++++++ dlls/msxml3/tests/schema.c | 36 +++++++++++++++++++ 4 files changed, 127 insertions(+), 4 deletions(-)
diff --git a/dlls/msxml3/domdoc.c b/dlls/msxml3/domdoc.c index 47ce60d..8943507 100644 --- a/dlls/msxml3/domdoc.c +++ b/dlls/msxml3/domdoc.c @@ -2508,10 +2508,13 @@ static HRESULT WINAPI domdoc_put_onTransformNode(
static HRESULT WINAPI domdoc_get_namespaces( IXMLDOMDocument3* iface, - IXMLDOMSchemaCollection** schemaCollection ) + IXMLDOMSchemaCollection** collection ) { domdoc *This = impl_from_IXMLDOMDocument3( iface ); - FIXME("(%p)->(%p)\n", This, schemaCollection); + FIXME("(%p)->(%p): stub\n", This, collection); + + if (!collection) return E_POINTER; + return E_NOTIMPL; }
diff --git a/dlls/msxml3/schema.c b/dlls/msxml3/schema.c index 7473dbb..2312f6d 100644 --- a/dlls/msxml3/schema.c +++ b/dlls/msxml3/schema.c @@ -1139,10 +1139,13 @@ static HRESULT WINAPI schema_cache_get(IXMLDOMSchemaCollection2* iface, BSTR uri IXMLDOMNode** node) { schema_cache* This = impl_from_IXMLDOMSchemaCollection2(iface); - xmlChar* name; cache_entry* entry; + xmlChar* name; + TRACE("(%p)->(%s %p)\n", This, wine_dbgstr_w(uri), node);
+ if (This->version == MSXML6) return E_NOTIMPL; + if (!node) return E_POINTER;
@@ -1438,7 +1441,7 @@ HRESULT SchemaCache_create(MSXML_VERSION version, IUnknown* outer, void** obj)
#else
-HRESULT SchemaCache_create(MSXML_VERSION version, IUnknown* pUnkOuter, void** ppObj) +HRESULT SchemaCache_create(MSXML_VERSION version, IUnknown* outer, void** obj) { MESSAGE("This program tried to use a SchemaCache object, but\n" "libxml2 support was not present at compile time.\n"); diff --git a/dlls/msxml3/tests/domdoc.c b/dlls/msxml3/tests/domdoc.c index 21809f8..cc01a25 100644 --- a/dlls/msxml3/tests/domdoc.c +++ b/dlls/msxml3/tests/domdoc.c @@ -11140,6 +11140,86 @@ static void test_nodeValue(void) IXMLDOMDocument_Release(doc); }
+static char namespacesA[] = +"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>" +" <ns1:elem1 xmlns:ns1="http://blah.org%5C%22%3E" +" ns1:elem2/" +" ns1:elem3/" +" ns1:elem4/" +" <elem5 xmlns="http://blahblah.org%5C%22/%3E" +" ns1:elem6true</ns1:elem6>" +" </ns1:elem1>"; + +static void test_get_namespaces(void) +{ + IXMLDOMSchemaCollection *collection, *collection2; + IXMLDOMDocument2 *doc; + IXMLDOMNode *node; + VARIANT_BOOL b; + HRESULT hr; + LONG len; + + doc = create_document(&IID_IXMLDOMDocument2); + if (!doc) return; + + /* null pointer */ + hr = IXMLDOMDocument2_get_namespaces(doc, NULL); + EXPECT_HR(hr, E_POINTER); + + /* no document loaded */ + collection = (void*)0xdeadbeef; + hr = IXMLDOMDocument2_get_namespaces(doc, &collection); +todo_wine + EXPECT_HR(hr, S_OK); + if (hr != S_OK) + { + IXMLDOMDocument_Release(doc); + return; + } + EXPECT_REF(collection, 2); + + collection2 = (void*)0xdeadbeef; + hr = IXMLDOMDocument2_get_namespaces(doc, &collection2); + EXPECT_HR(hr, S_OK); + ok(collection == collection2, "got %p\n", collection2); + EXPECT_REF(collection, 3); + IXMLDOMSchemaCollection_Release(collection); + + len = -1; + hr = IXMLDOMSchemaCollection_get_length(collection, &len); + EXPECT_HR(hr, S_OK); + ok(len == 0, "got %d\n", len); + IXMLDOMSchemaCollection_Release(collection); + + /* now with document */ + hr = IXMLDOMDocument2_loadXML(doc, _bstr_(namespacesA), &b); + EXPECT_HR(hr, S_OK); + + hr = IXMLDOMDocument2_get_namespaces(doc, &collection); + EXPECT_HR(hr, S_OK); + + len = -1; + hr = IXMLDOMSchemaCollection_get_length(collection, &len); + EXPECT_HR(hr, S_OK); + ok(len == 2, "got %d\n", len); + + /* try to lookup some uris */ + node = (void*)0xdeadbeef; + hr = IXMLDOMSchemaCollection_get(collection, _bstr_("http://blah.org"), &node); + EXPECT_HR(hr, S_OK); + ok(node == NULL, "got %p\n", node); + + node = (void*)0xdeadbeef; + hr = IXMLDOMSchemaCollection_get(collection, _bstr_("http://blah1.org"), &node); + EXPECT_HR(hr, S_OK); + ok(node == NULL, "got %p\n", node); + + IXMLDOMSchemaCollection_Release(collection); + + IXMLDOMDocument2_Release(doc); + free_bstrs(); +} + START_TEST(domdoc) { IXMLDOMDocument *doc; @@ -11216,6 +11296,7 @@ START_TEST(domdoc) test_getAttributeNode(); test_supporterrorinfo(); test_nodeValue(); + test_get_namespaces();
test_xsltemplate();
diff --git a/dlls/msxml3/tests/schema.c b/dlls/msxml3/tests/schema.c index 59ceac5..e819264 100644 --- a/dlls/msxml3/tests/schema.c +++ b/dlls/msxml3/tests/schema.c @@ -2061,6 +2061,41 @@ static void test_dispex(void) IXMLDOMSchemaCollection_Release(cache); }
+static void test_get(void) +{ + static const WCHAR uriW[] = {'u','r','i',0}; + IXMLDOMSchemaCollection2 *cache; + IXMLDOMNode *node; + HRESULT hr; + BSTR s; + + cache = create_cache_version(60, &IID_IXMLDOMSchemaCollection2); + if (!cache) return; + + hr = IXMLDOMSchemaCollection2_get(cache, NULL, NULL); + EXPECT_HR(hr, E_NOTIMPL); + + s = SysAllocString(uriW); + hr = IXMLDOMSchemaCollection2_get(cache, s, &node); + EXPECT_HR(hr, E_NOTIMPL); + SysFreeString(s); + + IXMLDOMSchemaCollection2_Release(cache); + + cache = create_cache_version(40, &IID_IXMLDOMSchemaCollection2); + if (!cache) return; + + hr = IXMLDOMSchemaCollection2_get(cache, NULL, NULL); + EXPECT_HR(hr, E_POINTER); + + s = SysAllocString(uriW); + hr = IXMLDOMSchemaCollection2_get(cache, s, &node); + EXPECT_HR(hr, S_OK); + SysFreeString(s); + + IXMLDOMSchemaCollection2_Release(cache); +} + START_TEST(schema) { HRESULT r; @@ -2076,6 +2111,7 @@ START_TEST(schema) test_XDR_datatypes(); test_validate_on_load(); test_dispex(); + test_get();
CoUninitialize(); }