[PATCH 2/6] urlmon/tests: Skip some tests on IE 4.0 (misc.c)

Detlef Riekenberg wine.dev at web.de
Wed Apr 21 17:28:51 CDT 2010


CoInternetCompareUrl, CoInternetGetSecurityUrl, CoInternetGetSession,
CoInternetParseUrl missing on IE 4.0 (winetestbot W95B)

--
By by ... Detlef
---
 dlls/urlmon/tests/misc.c |   90 ++++++++++++++++++++++++++++++----------------
 1 files changed, 59 insertions(+), 31 deletions(-)

diff --git a/dlls/urlmon/tests/misc.c b/dlls/urlmon/tests/misc.c
index 259c5a0..9eb92fe 100644
--- a/dlls/urlmon/tests/misc.c
+++ b/dlls/urlmon/tests/misc.c
@@ -64,6 +64,9 @@ DEFINE_EXPECT(CreateInstance);
 DEFINE_EXPECT(unk_Release);
 
 static HRESULT (WINAPI *pCoInternetCompareUrl)(LPCWSTR, LPCWSTR, DWORD);
+static HRESULT (WINAPI *pCoInternetGetSecurityUrl)(LPCWSTR, LPWSTR*, PSUACTION, DWORD);
+static HRESULT (WINAPI *pCoInternetGetSession)(DWORD, IInternetSession **, DWORD);
+static HRESULT (WINAPI *pCoInternetParseUrl)(LPCWSTR, PARSEACTION, DWORD, LPWSTR, DWORD, DWORD *, DWORD);
 
 static void test_CreateFormatEnum(void)
 {
@@ -306,27 +309,31 @@ static void test_CoInternetParseUrl(void)
 
     static WCHAR buf[4096];
 
+    if (!pCoInternetParseUrl) {
+        return;
+    }
+
     memset(buf, 0xf0, sizeof(buf));
-    hres = CoInternetParseUrl(parse_tests[0].url, PARSE_SCHEMA, 0, buf,
+    hres = pCoInternetParseUrl(parse_tests[0].url, PARSE_SCHEMA, 0, buf,
             3, &size, 0);
     ok(hres == E_POINTER, "schema failed: %08x, expected E_POINTER\n", hres);
 
     for(i=0; i < sizeof(parse_tests)/sizeof(parse_tests[0]); i++) {
         memset(buf, 0xf0, sizeof(buf));
-        hres = CoInternetParseUrl(parse_tests[i].url, PARSE_SECURITY_URL, 0, buf,
+        hres = pCoInternetParseUrl(parse_tests[i].url, PARSE_SECURITY_URL, 0, buf,
                 sizeof(buf)/sizeof(WCHAR), &size, 0);
         ok(hres == parse_tests[i].secur_hres, "[%d] security url failed: %08x, expected %08x\n",
                 i, hres, parse_tests[i].secur_hres);
 
         memset(buf, 0xf0, sizeof(buf));
-        hres = CoInternetParseUrl(parse_tests[i].url, PARSE_ENCODE, 0, buf,
+        hres = pCoInternetParseUrl(parse_tests[i].url, PARSE_ENCODE, 0, buf,
                 sizeof(buf)/sizeof(WCHAR), &size, 0);
         ok(hres == S_OK, "[%d] encoding failed: %08x\n", i, hres);
         ok(size == lstrlenW(parse_tests[i].encoded_url), "[%d] wrong size\n", i);
         ok(!lstrcmpW(parse_tests[i].encoded_url, buf), "[%d] wrong encoded url\n", i);
 
         memset(buf, 0xf0, sizeof(buf));
-        hres = CoInternetParseUrl(parse_tests[i].url, PARSE_PATH_FROM_URL, 0, buf,
+        hres = pCoInternetParseUrl(parse_tests[i].url, PARSE_PATH_FROM_URL, 0, buf,
                 sizeof(buf)/sizeof(WCHAR), &size, 0);
         ok(hres == parse_tests[i].path_hres, "[%d] path failed: %08x, expected %08x\n",
                 i, hres, parse_tests[i].path_hres);
@@ -336,7 +343,7 @@ static void test_CoInternetParseUrl(void)
         }
 
         memset(buf, 0xf0, sizeof(buf));
-        hres = CoInternetParseUrl(parse_tests[i].url, PARSE_SCHEMA, 0, buf,
+        hres = pCoInternetParseUrl(parse_tests[i].url, PARSE_SCHEMA, 0, buf,
                 sizeof(buf)/sizeof(WCHAR), &size, 0);
         ok(hres == S_OK, "[%d] schema failed: %08x\n", i, hres);
         ok(size == lstrlenW(parse_tests[i].schema), "[%d] wrong size\n", i);
@@ -345,7 +352,7 @@ static void test_CoInternetParseUrl(void)
         if(memcmp(parse_tests[i].url, wszRes, 3*sizeof(WCHAR))
                 && memcmp(parse_tests[i].url, wszAbout, 5*sizeof(WCHAR))) {
             memset(buf, 0xf0, sizeof(buf));
-            hres = CoInternetParseUrl(parse_tests[i].url, PARSE_DOMAIN, 0, buf,
+            hres = pCoInternetParseUrl(parse_tests[i].url, PARSE_DOMAIN, 0, buf,
                     sizeof(buf)/sizeof(WCHAR), &size, 0);
             ok(hres == parse_tests[i].domain_hres, "[%d] domain failed: %08x\n", i, hres);
             if(parse_tests[i].domain)
@@ -353,7 +360,7 @@ static void test_CoInternetParseUrl(void)
         }
 
         memset(buf, 0xf0, sizeof(buf));
-        hres = CoInternetParseUrl(parse_tests[i].url, PARSE_ROOTDOCUMENT, 0, buf,
+        hres = pCoInternetParseUrl(parse_tests[i].url, PARSE_ROOTDOCUMENT, 0, buf,
                 sizeof(buf)/sizeof(WCHAR), &size, 0);
         ok(hres == parse_tests[i].rootdocument_hres, "[%d] rootdocument failed: %08x\n", i, hres);
         if(parse_tests[i].rootdocument)
@@ -366,7 +373,6 @@ static void test_CoInternetCompareUrl(void)
     HRESULT hres;
 
     if (!pCoInternetCompareUrl) {
-        win_skip("CoInternetCompareUrl not found\n");
         return;
     }
 
@@ -748,7 +754,11 @@ static void register_protocols(void)
 
     static const WCHAR wszAbout[] = {'a','b','o','u','t',0};
 
-    hres = CoInternetGetSession(0, &session, 0);
+    if (!pCoInternetGetSession) {
+        return;
+    }
+
+    hres = pCoInternetGetSession(0, &session, 0);
     ok(hres == S_OK, "CoInternetGetSession failed: %08x\n", hres);
     if(FAILED(hres))
         return;
@@ -921,7 +931,11 @@ static void test_NameSpace(void)
 
     static const WCHAR wszTest[] = {'t','e','s','t',0};
 
-    hres = CoInternetGetSession(0, &session, 0);
+    if (!pCoInternetGetSession || !pCoInternetParseUrl) {
+        return;
+    }
+
+    hres = pCoInternetGetSession(0, &session, 0);
     ok(hres == S_OK, "CoInternetGetSession failed: %08x\n", hres);
     if(FAILED(hres))
         return;
@@ -944,7 +958,7 @@ static void test_NameSpace(void)
     SET_EXPECT(CreateInstance);
     SET_EXPECT(ParseUrl);
 
-    hres = CoInternetParseUrl(url8, PARSE_ENCODE, 0, buf, sizeof(buf)/sizeof(WCHAR),
+    hres = pCoInternetParseUrl(url8, PARSE_ENCODE, 0, buf, sizeof(buf)/sizeof(WCHAR),
                               &size, 0);
     ok(hres == S_OK, "CoInternetParseUrl failed: %08x\n", hres);
 
@@ -956,7 +970,7 @@ static void test_NameSpace(void)
     SET_EXPECT(QI_IInternetProtocolInfo);
     SET_EXPECT(ParseUrl);
 
-    hres = CoInternetParseUrl(url8, PARSE_ENCODE, 0, buf, sizeof(buf)/sizeof(WCHAR),
+    hres = pCoInternetParseUrl(url8, PARSE_ENCODE, 0, buf, sizeof(buf)/sizeof(WCHAR),
                               &size, 0);
     ok(hres == S_OK, "CoInternetParseUrl failed: %08x\n", hres);
 
@@ -966,7 +980,7 @@ static void test_NameSpace(void)
     SET_EXPECT(QI_IInternetProtocolInfo);
     SET_EXPECT(ParseUrl);
 
-    hres = CoInternetParseUrl(url8, PARSE_SECURITY_URL, 0, buf,
+    hres = pCoInternetParseUrl(url8, PARSE_SECURITY_URL, 0, buf,
             sizeof(buf)/sizeof(WCHAR), &size, 0);
     ok(hres == S_OK, "CoInternetParseUrl failed: %08x\n", hres);
     ok(size == sizeof(url1)/sizeof(WCHAR), "Size = %d\n", size);
@@ -979,22 +993,24 @@ static void test_NameSpace(void)
     SET_EXPECT(QI_IInternetProtocolInfo);
     SET_EXPECT(ParseUrl);
 
-    hres = CoInternetGetSecurityUrl(url8, &sec_url, PSU_SECURITY_URL_ONLY, 0);
-    ok(hres == S_OK, "CoInternetGetSecurityUrl failed: %08x\n", hres);
-    if(hres == S_OK) {
-        ok(lstrlenW(sec_url)>sizeof(wszFile)/sizeof(WCHAR) &&
-                !memcmp(sec_url, wszFile, sizeof(wszFile)-sizeof(WCHAR)),
-                "Encoded url = %s\n", wine_dbgstr_w(sec_url));
-        CoTaskMemFree(sec_url);
-    }
+    if (pCoInternetGetSecurityUrl) {
+        hres = pCoInternetGetSecurityUrl(url8, &sec_url, PSU_SECURITY_URL_ONLY, 0);
+        ok(hres == S_OK, "CoInternetGetSecurityUrl failed: %08x\n", hres);
+        if(hres == S_OK) {
+            ok(lstrlenW(sec_url)>sizeof(wszFile)/sizeof(WCHAR) &&
+                    !memcmp(sec_url, wszFile, sizeof(wszFile)-sizeof(WCHAR)),
+                    "Encoded url = %s\n", wine_dbgstr_w(sec_url));
+            CoTaskMemFree(sec_url);
+        }
 
-    CHECK_CALLED(QI_IInternetProtocolInfo);
-    CHECK_CALLED(ParseUrl);
+        CHECK_CALLED(QI_IInternetProtocolInfo);
+        CHECK_CALLED(ParseUrl);
+    }
 
     hres = IInternetSession_UnregisterNameSpace(session, &test_protocol_cf, wszTest);
     ok(hres == S_OK, "UnregisterNameSpace failed: %08x\n", hres);
 
-    hres = CoInternetParseUrl(url8, PARSE_ENCODE, 0, buf, sizeof(buf)/sizeof(WCHAR),
+    hres = pCoInternetParseUrl(url8, PARSE_ENCODE, 0, buf, sizeof(buf)/sizeof(WCHAR),
                               &size, 0);
     ok(hres == S_OK, "CoInternetParseUrl failed: %08x\n", hres);
 
@@ -1013,7 +1029,7 @@ static void test_NameSpace(void)
     SET_EXPECT(QI_IInternetProtocolInfo);
     SET_EXPECT(ParseUrl);
 
-    hres = CoInternetParseUrl(url8, PARSE_ENCODE, 0, buf, sizeof(buf)/sizeof(WCHAR),
+    hres = pCoInternetParseUrl(url8, PARSE_ENCODE, 0, buf, sizeof(buf)/sizeof(WCHAR),
                               &size, 0);
     ok(hres == S_OK, "CoInternetParseUrl failed: %08x\n", hres);
 
@@ -1026,7 +1042,7 @@ static void test_NameSpace(void)
     SET_EXPECT(QI_IInternetProtocolInfo);
     SET_EXPECT(ParseUrl);
 
-    hres = CoInternetParseUrl(url8, PARSE_ENCODE, 0, buf, sizeof(buf)/sizeof(WCHAR),
+    hres = pCoInternetParseUrl(url8, PARSE_ENCODE, 0, buf, sizeof(buf)/sizeof(WCHAR),
                               &size, 0);
     ok(hres == S_OK, "CoInternetParseUrl failed: %08x\n", hres);
 
@@ -1040,7 +1056,7 @@ static void test_NameSpace(void)
     SET_EXPECT(QI_IInternetProtocolInfo);
     SET_EXPECT(ParseUrl);
 
-    hres = CoInternetParseUrl(url8, PARSE_ENCODE, 0, buf, sizeof(buf)/sizeof(WCHAR),
+    hres = pCoInternetParseUrl(url8, PARSE_ENCODE, 0, buf, sizeof(buf)/sizeof(WCHAR),
                               &size, 0);
     ok(hres == S_OK, "CoInternetParseUrl failed: %08x\n", hres);
 
@@ -1059,7 +1075,7 @@ static void test_NameSpace(void)
     hres = IInternetSession_UnregisterNameSpace(session, &test_protocol_cf2, wszTest);
     ok(hres == S_OK, "UnregisterNameSpace failed: %08x\n", hres);
 
-    hres = CoInternetParseUrl(url8, PARSE_ENCODE, 0, buf, sizeof(buf)/sizeof(WCHAR),
+    hres = pCoInternetParseUrl(url8, PARSE_ENCODE, 0, buf, sizeof(buf)/sizeof(WCHAR),
                               &size, 0);
     ok(hres == S_OK, "CoInternetParseUrl failed: %08x\n", hres);
 
@@ -1073,7 +1089,11 @@ static void test_MimeFilter(void)
 
     static const WCHAR mimeW[] = {'t','e','s','t','/','m','i','m','e',0};
 
-    hres = CoInternetGetSession(0, &session, 0);
+    if (!pCoInternetGetSession) {
+        return;
+    }
+
+    hres = pCoInternetGetSession(0, &session, 0);
     ok(hres == S_OK, "CoInternetGetSession failed: %08x\n", hres);
     if(FAILED(hres))
         return;
@@ -1413,10 +1433,18 @@ START_TEST(misc)
 
     OleInitialize(NULL);
 
-    register_protocols();
-
     hurlmon = GetModuleHandle("urlmon.dll");
     pCoInternetCompareUrl = (void *) GetProcAddress(hurlmon, "CoInternetCompareUrl");
+    pCoInternetGetSecurityUrl = (void*) GetProcAddress(hurlmon, "CoInternetGetSecurityUrl");
+    pCoInternetGetSession = (void*) GetProcAddress(hurlmon, "CoInternetGetSession");
+    pCoInternetParseUrl = (void*) GetProcAddress(hurlmon, "CoInternetParseUrl");
+
+    if (!CoInternetCompareUrl || !CoInternetGetSecurityUrl ||
+        !CoInternetGetSession || !CoInternetParseUrl) {
+        win_skip("Various needed functions not present in IE 4.0\n");
+    }
+
+    register_protocols();
 
     test_CreateFormatEnum();
     test_RegisterFormatEnumerator();
-- 
1.7.0.4




More information about the wine-patches mailing list