[PATCH 4/4] msxml3: partial stub domdoc_validate()

Adam Martinson amartinson at codeweavers.com
Fri Oct 1 14:31:21 CDT 2010


---
 dlls/msxml3/domdoc.c       |   31 +++++++++++++++-
 dlls/msxml3/tests/domdoc.c |   84 ++++++++++++++++++++++----------------------
 2 files changed, 71 insertions(+), 44 deletions(-)

diff --git a/dlls/msxml3/domdoc.c b/dlls/msxml3/domdoc.c
index fe3c53a..aafee7f 100644
--- a/dlls/msxml3/domdoc.c
+++ b/dlls/msxml3/domdoc.c
@@ -2302,8 +2302,35 @@ static HRESULT WINAPI domdoc_validate(
     IXMLDOMParseError** err)
 {
     domdoc *This = impl_from_IXMLDOMDocument3( iface );
-    FIXME("(%p)->(%p)\n", This, err);
-    return E_NOTIMPL;
+    LONG state;
+    xmlValidCtxtPtr vctx;
+
+    TRACE("(%p)->(%p)\n", This, err);
+    domdoc_get_readyState(iface, &state);
+    if (state != READYSTATE_COMPLETE)
+    {
+        if (err)
+            *err = create_parseError(0, NULL, NULL, NULL, 0, 0, 0);
+        return E_PENDING;
+    }
+
+    vctx = xmlNewValidCtxt();
+    vctx->error = NULL; /* TODO: error callback */
+    vctx->warning = NULL; /* TODO: warning callback */
+
+    if (xmlValidateDocument(vctx, get_doc(This)))
+    {
+        if (err)
+            *err = create_parseError(0, NULL, NULL, NULL, 0, 0, 0);
+        xmlFreeValidCtxt(vctx);
+        return S_OK;
+    }
+
+    FIXME("partial stub!\n");
+    if (err)
+        *err = create_parseError(0xC00CE223, NULL, NULL, NULL, 0, 0, 0);
+    xmlFreeValidCtxt(vctx);
+    return S_FALSE;
 }
 
 static HRESULT WINAPI domdoc_setProperty(
diff --git a/dlls/msxml3/tests/domdoc.c b/dlls/msxml3/tests/domdoc.c
index ec4e593..bcdef52 100644
--- a/dlls/msxml3/tests/domdoc.c
+++ b/dlls/msxml3/tests/domdoc.c
@@ -3207,15 +3207,15 @@ static void test_IXMLDOMDocument2(void)
     ok(res == READYSTATE_COMPLETE, "expected READYSTATE_COMPLETE (4), got %i\n", res);
 
     err = NULL;
-    todo_wine ole_expect(IXMLDOMDocument2_validate(doc2, NULL), S_FALSE);
-    todo_wine ole_expect(IXMLDOMDocument2_validate(doc2, &err), S_FALSE);
-    todo_wine ok(err != NULL, "expected a pointer\n");
+    ole_expect(IXMLDOMDocument2_validate(doc2, NULL), S_FALSE);
+    ole_expect(IXMLDOMDocument2_validate(doc2, &err), S_FALSE);
+    ok(err != NULL, "expected a pointer\n");
     if (err)
     {
         res = 0;
-        todo_wine ole_check(IXMLDOMParseError_get_errorCode(err, &res));
+        ole_check(IXMLDOMParseError_get_errorCode(err, &res));
         /* XML_E_NOTWF */
-        todo_wine ok(res == 0xC00CE223, "got %08x\n", res);
+        ok(res == 0xC00CE223, "got %08x\n", res);
         IXMLDOMParseError_Release(err);
     }
 
@@ -3229,12 +3229,12 @@ static void test_IXMLDOMDocument2(void)
     ok(res == READYSTATE_COMPLETE, "expected READYSTATE_COMPLETE (4), got %i\n", res);
 
     err = NULL;
-    todo_wine ole_expect(IXMLDOMDocument2_validate(doc2, &err), S_FALSE);
-    todo_wine ok(err != NULL, "expected a pointer\n");
+    ole_expect(IXMLDOMDocument2_validate(doc2, &err), S_FALSE);
+    ok(err != NULL, "expected a pointer\n");
     if (err)
     {
         res = 0;
-        todo_wine ole_check(IXMLDOMParseError_get_errorCode(err, &res));
+        ole_check(IXMLDOMParseError_get_errorCode(err, &res));
         /* XML_E_NODTD */
         todo_wine ok(res == 0xC00CE224, "got %08x\n", res);
         IXMLDOMParseError_Release(err);
@@ -3299,25 +3299,25 @@ static void test_IXMLDOMDocument2(void)
     ole_check(IXMLDOMDocument2_loadXML(dtddoc2, _bstr_(szEmailXML), &b));
     ok( b == VARIANT_TRUE, "failed to load XML string\n");
     err = NULL;
-    todo_wine ole_check(IXMLDOMDocument2_validate(dtddoc2, &err));
-    todo_wine ok(err != NULL, "expected pointer\n");
+    ole_check(IXMLDOMDocument2_validate(dtddoc2, &err));
+    ok(err != NULL, "expected pointer\n");
     if (err)
     {
         res = 0;
-        todo_wine ole_expect(IXMLDOMParseError_get_errorCode(err, &res), S_FALSE);
-        todo_wine ok(res == 0, "got %08x\n", res);
+        ole_expect(IXMLDOMParseError_get_errorCode(err, &res), S_FALSE);
+        ok(res == 0, "got %08x\n", res);
         IXMLDOMParseError_Release(err);
     }
 
     ole_check(IXMLDOMDocument2_loadXML(dtddoc2, _bstr_(szEmailXML_0D), &b));
     ok( b == VARIANT_TRUE, "failed to load XML string\n");
     err = NULL;
-    todo_wine ole_expect(IXMLDOMDocument2_validate(dtddoc2, &err), S_FALSE);
-    todo_wine ok(err != NULL, "expected pointer\n");
+    ole_expect(IXMLDOMDocument2_validate(dtddoc2, &err), S_FALSE);
+    ok(err != NULL, "expected pointer\n");
     if (err)
     {
         res = 0;
-        todo_wine ole_check(IXMLDOMParseError_get_errorCode(err, &res));
+        ole_check(IXMLDOMParseError_get_errorCode(err, &res));
         /* XML_ELEMENT_UNDECLARED */
         todo_wine ok(res == 0xC00CE00D, "got %08x\n", res);
         IXMLDOMParseError_Release(err);
@@ -3326,12 +3326,12 @@ static void test_IXMLDOMDocument2(void)
     ole_check(IXMLDOMDocument2_loadXML(dtddoc2, _bstr_(szEmailXML_0E), &b));
     ok( b == VARIANT_TRUE, "failed to load XML string\n");
     err = NULL;
-    todo_wine ole_expect(IXMLDOMDocument2_validate(dtddoc2, &err), S_FALSE);
-    todo_wine ok(err != NULL, "expected pointer\n");
+    ole_expect(IXMLDOMDocument2_validate(dtddoc2, &err), S_FALSE);
+    ok(err != NULL, "expected pointer\n");
     if (err)
     {
         res = 0;
-        todo_wine ole_check(IXMLDOMParseError_get_errorCode(err, &res));
+        ole_check(IXMLDOMParseError_get_errorCode(err, &res));
         /* XML_ELEMENT_ID_NOT_FOUND */
         todo_wine ok(res == 0xC00CE00E, "got %08x\n", res);
         IXMLDOMParseError_Release(err);
@@ -3340,12 +3340,12 @@ static void test_IXMLDOMDocument2(void)
     ole_check(IXMLDOMDocument2_loadXML(dtddoc2, _bstr_(szEmailXML_11), &b));
     ok( b == VARIANT_TRUE, "failed to load XML string\n");
     err = NULL;
-    todo_wine ole_expect(IXMLDOMDocument2_validate(dtddoc2, &err), S_FALSE);
-    todo_wine ok(err != NULL, "expected pointer\n");
+    ole_expect(IXMLDOMDocument2_validate(dtddoc2, &err), S_FALSE);
+    ok(err != NULL, "expected pointer\n");
     if (err)
     {
         res = 0;
-        todo_wine ole_check(IXMLDOMParseError_get_errorCode(err, &res));
+        ole_check(IXMLDOMParseError_get_errorCode(err, &res));
         /* XML_EMPTY_NOT_ALLOWED */
         todo_wine ok(res == 0xC00CE011, "got %08x\n", res);
         IXMLDOMParseError_Release(err);
@@ -3354,12 +3354,12 @@ static void test_IXMLDOMDocument2(void)
     ole_check(IXMLDOMDocument2_loadXML(dtddoc2, _bstr_(szEmailXML_13), &b));
     ok( b == VARIANT_TRUE, "failed to load XML string\n");
     err = NULL;
-    todo_wine ole_expect(IXMLDOMDocument2_validate(dtddoc2, &err), S_FALSE);
-    todo_wine ok(err != NULL, "expected pointer\n");
+    ole_expect(IXMLDOMDocument2_validate(dtddoc2, &err), S_FALSE);
+    ok(err != NULL, "expected pointer\n");
     if (err)
     {
         res = 0;
-        todo_wine ole_check(IXMLDOMParseError_get_errorCode(err, &res));
+        ole_check(IXMLDOMParseError_get_errorCode(err, &res));
         /* XML_ROOT_NAME_MISMATCH */
         todo_wine ok(res == 0xC00CE013, "got %08x\n", res);
         IXMLDOMParseError_Release(err);
@@ -3368,12 +3368,12 @@ static void test_IXMLDOMDocument2(void)
     ole_check(IXMLDOMDocument2_loadXML(dtddoc2, _bstr_(szEmailXML_14), &b));
     ok( b == VARIANT_TRUE, "failed to load XML string\n");
     err = NULL;
-    todo_wine ole_expect(IXMLDOMDocument2_validate(dtddoc2, &err), S_FALSE);
-    todo_wine ok(err != NULL, "expected pointer\n");
+    ole_expect(IXMLDOMDocument2_validate(dtddoc2, &err), S_FALSE);
+    ok(err != NULL, "expected pointer\n");
     if (err)
     {
         res = 0;
-        todo_wine ole_check(IXMLDOMParseError_get_errorCode(err, &res));
+        ole_check(IXMLDOMParseError_get_errorCode(err, &res));
         /* XML_INVALID_CONTENT */
         todo_wine ok(res == 0xC00CE014, "got %08x\n", res);
         IXMLDOMParseError_Release(err);
@@ -3382,12 +3382,12 @@ static void test_IXMLDOMDocument2(void)
     ole_check(IXMLDOMDocument2_loadXML(dtddoc2, _bstr_(szEmailXML_15), &b));
     ok( b == VARIANT_TRUE, "failed to load XML string\n");
     err = NULL;
-    todo_wine ole_expect(IXMLDOMDocument2_validate(dtddoc2, &err), S_FALSE);
-    todo_wine ok(err != NULL, "expected pointer\n");
+    ole_expect(IXMLDOMDocument2_validate(dtddoc2, &err), S_FALSE);
+    ok(err != NULL, "expected pointer\n");
     if (err)
     {
         res = 0;
-        todo_wine ole_check(IXMLDOMParseError_get_errorCode(err, &res));
+        ole_check(IXMLDOMParseError_get_errorCode(err, &res));
         /* XML_ATTRIBUTE_NOT_DEFINED */
         todo_wine ok(res == 0xC00CE015, "got %08x\n", res);
         IXMLDOMParseError_Release(err);
@@ -3396,12 +3396,12 @@ static void test_IXMLDOMDocument2(void)
     ole_check(IXMLDOMDocument2_loadXML(dtddoc2, _bstr_(szEmailXML_16), &b));
     ok( b == VARIANT_TRUE, "failed to load XML string\n");
     err = NULL;
-    todo_wine ole_expect(IXMLDOMDocument2_validate(dtddoc2, &err), S_FALSE);
-    todo_wine ok(err != NULL, "expected pointer\n");
+    ole_expect(IXMLDOMDocument2_validate(dtddoc2, &err), S_FALSE);
+    ok(err != NULL, "expected pointer\n");
     if (err)
     {
         res = 0;
-        todo_wine ole_check(IXMLDOMParseError_get_errorCode(err, &res));
+        ole_check(IXMLDOMParseError_get_errorCode(err, &res));
         /* XML_ATTRIBUTE_FIXED */
         todo_wine ok(res == 0xC00CE016, "got %08x\n", res);
         IXMLDOMParseError_Release(err);
@@ -3410,12 +3410,12 @@ static void test_IXMLDOMDocument2(void)
     ole_check(IXMLDOMDocument2_loadXML(dtddoc2, _bstr_(szEmailXML_17), &b));
     ok( b == VARIANT_TRUE, "failed to load XML string\n");
     err = NULL;
-    todo_wine ole_expect(IXMLDOMDocument2_validate(dtddoc2, &err), S_FALSE);
-    todo_wine ok(err != NULL, "expected pointer\n");
+    ole_expect(IXMLDOMDocument2_validate(dtddoc2, &err), S_FALSE);
+    ok(err != NULL, "expected pointer\n");
     if (err)
     {
         res = 0;
-        todo_wine ole_check(IXMLDOMParseError_get_errorCode(err, &res));
+        ole_check(IXMLDOMParseError_get_errorCode(err, &res));
         /* XML_ATTRIBUTE_VALUE */
         todo_wine ok(res == 0xC00CE017, "got %08x\n", res);
         IXMLDOMParseError_Release(err);
@@ -3424,12 +3424,12 @@ static void test_IXMLDOMDocument2(void)
     ole_check(IXMLDOMDocument2_loadXML(dtddoc2, _bstr_(szEmailXML_18), &b));
     ok( b == VARIANT_TRUE, "failed to load XML string\n");
     err = NULL;
-    todo_wine ole_expect(IXMLDOMDocument2_validate(dtddoc2, &err), S_FALSE);
-    todo_wine ok(err != NULL, "expected pointer\n");
+    ole_expect(IXMLDOMDocument2_validate(dtddoc2, &err), S_FALSE);
+    ok(err != NULL, "expected pointer\n");
     if (err)
     {
         res = 0;
-        todo_wine ole_check(IXMLDOMParseError_get_errorCode(err, &res));
+        ole_check(IXMLDOMParseError_get_errorCode(err, &res));
         /* XML_ILLEGAL_TEXT */
         todo_wine ok(res == 0xC00CE018, "got %08x\n", res);
         IXMLDOMParseError_Release(err);
@@ -3438,12 +3438,12 @@ static void test_IXMLDOMDocument2(void)
     ole_check(IXMLDOMDocument2_loadXML(dtddoc2, _bstr_(szEmailXML_20), &b));
     ok( b == VARIANT_TRUE, "failed to load XML string\n");
     err = NULL;
-    todo_wine ole_expect(IXMLDOMDocument2_validate(dtddoc2, &err), S_FALSE);
-    todo_wine ok(err != NULL, "expected pointer\n");
+    ole_expect(IXMLDOMDocument2_validate(dtddoc2, &err), S_FALSE);
+    ok(err != NULL, "expected pointer\n");
     if (err)
     {
         res = 0;
-        todo_wine ole_check(IXMLDOMParseError_get_errorCode(err, &res));
+        ole_check(IXMLDOMParseError_get_errorCode(err, &res));
         /* XML_REQUIRED_ATTRIBUTE_MISSING */
         todo_wine ok(res == 0xC00CE020, "got %08x\n", res);
         IXMLDOMParseError_Release(err);
-- 
1.7.2.3


--------------020109000500070109080703--



More information about the wine-patches mailing list