Misha Koshelev : urlmon/tests: Add tests for HttpProtocol behavior when it is called without the BINDF_FROMURLMON flag .

Alexandre Julliard julliard at wine.codeweavers.com
Thu Jul 19 07:59:49 CDT 2007


Module: wine
Branch: master
Commit: 4e205947e7361bdbbfd5ee1caad924f0e8cb8b56
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=4e205947e7361bdbbfd5ee1caad924f0e8cb8b56

Author: Misha Koshelev <mk144210 at bcm.edu>
Date:   Wed Jul 18 20:00:20 2007 -0500

urlmon/tests: Add tests for HttpProtocol behavior when it is called without the BINDF_FROMURLMON flag.

---

 dlls/urlmon/tests/protocol.c |   75 ++++++++++++++++++++++++++++++++---------
 1 files changed, 58 insertions(+), 17 deletions(-)

diff --git a/dlls/urlmon/tests/protocol.c b/dlls/urlmon/tests/protocol.c
index 278c093..08476d0 100644
--- a/dlls/urlmon/tests/protocol.c
+++ b/dlls/urlmon/tests/protocol.c
@@ -66,6 +66,7 @@
 DEFINE_EXPECT(GetBindInfo);
 DEFINE_EXPECT(ReportProgress_MIMETYPEAVAILABLE);
 DEFINE_EXPECT(ReportProgress_DIRECTBIND);
+DEFINE_EXPECT(ReportProgress_RAWMIMETYPE);
 DEFINE_EXPECT(ReportProgress_FINDINGRESOURCE);
 DEFINE_EXPECT(ReportProgress_CONNECTING);
 DEFINE_EXPECT(ReportProgress_SENDINGREQUEST);
@@ -288,6 +289,14 @@ static HRESULT WINAPI ProtocolSink_ReportProgress(IInternetProtocolSink *iface,
         CHECK_EXPECT2(ReportProgress_DIRECTBIND);
         ok(szStatusText == NULL, "szStatusText != NULL\n");
         break;
+    case BINDSTATUS_RAWMIMETYPE:
+        CHECK_EXPECT2(ReportProgress_RAWMIMETYPE);
+        ok(szStatusText != NULL, "szStatusText == NULL\n");
+        if(szStatusText)
+            ok(lstrlenW(szStatusText) < lstrlenW(text_html) ||
+               !memcmp(szStatusText, text_html, lstrlenW(text_html)*sizeof(WCHAR)),
+               "szStatusText != text/html\n");
+        break;
     case BINDSTATUS_CACHEFILENAMEAVAILABLE:
         CHECK_EXPECT(ReportProgress_CACHEFILENAMEAVAILABLE);
         ok(szStatusText != NULL, "szStatusText == NULL\n");
@@ -363,6 +372,10 @@ static HRESULT WINAPI ProtocolSink_ReportData(IInternetProtocolSink *iface, DWOR
                || grfBSCF == (BSCF_LASTDATANOTIFICATION|BSCF_INTERMEDIATEDATANOTIFICATION),
                "grcfBSCF = %08x\n", grfBSCF);
         }
+
+        if (!(grfBSCF & BSCF_LASTDATANOTIFICATION) &&
+            !(bindf & BINDF_FROMURLMON))
+            SendMessage(protocol_hwnd, WM_USER, 0, 0);
     }
     return S_OK;
 }
@@ -1061,6 +1074,8 @@ static BOOL http_protocol_start(LPCWSTR url, BOOL is_first)
     state = 0;
 
     SET_EXPECT(GetBindInfo);
+    if (!(bindf & BINDF_FROMURLMON))
+        SET_EXPECT(ReportProgress_DIRECTBIND);
     SET_EXPECT(GetBindString_USER_AGENT);
     SET_EXPECT(GetBindString_ACCEPT_MIMES);
     SET_EXPECT(QueryService_HttpNegotiate);
@@ -1073,6 +1088,8 @@ static BOOL http_protocol_start(LPCWSTR url, BOOL is_first)
         return FALSE;
 
     CHECK_CALLED(GetBindInfo);
+    if (!(bindf & BINDF_FROMURLMON))
+        CHECK_CALLED(ReportProgress_DIRECTBIND);
     if (!got_user_agent)
     {
         CHECK_CALLED(GetBindString_USER_AGENT);
@@ -1130,13 +1147,17 @@ static void test_http_protocol_url(LPCWSTR url, BOOL is_first)
         DWORD cb;
         MSG msg;
 
-        bindf = BINDF_ASYNCHRONOUS | BINDF_ASYNCSTORAGE | BINDF_PULLDATA | BINDF_FROMURLMON;
-
         test_priority(http_protocol);
 
         SET_EXPECT(ReportProgress_FINDINGRESOURCE);
         SET_EXPECT(ReportProgress_CONNECTING);
         SET_EXPECT(ReportProgress_SENDINGREQUEST);
+        if(!(bindf & BINDF_FROMURLMON))
+        {
+            SET_EXPECT(OnResponse);
+            SET_EXPECT(ReportProgress_RAWMIMETYPE);
+            SET_EXPECT(ReportData);
+        }
 
         if(!http_protocol_start(url, is_first))
             return;
@@ -1145,15 +1166,20 @@ static void test_http_protocol_url(LPCWSTR url, BOOL is_first)
         ok(hres == E_PENDING, "Read failed: %08x, expected E_PENDING\n", hres);
         ok(!cb, "cb=%d, expected 0\n", cb);
 
-        SET_EXPECT(Switch);
+        if(bindf & BINDF_FROMURLMON)
+            SET_EXPECT(Switch);
         SET_EXPECT(ReportResult);
         expect_hrResult = S_OK;
 
         GetMessage(&msg, NULL, 0, 0);
 
-        CHECK_CALLED(Switch);
+        if(bindf & BINDF_FROMURLMON)
+            CHECK_CALLED(Switch);
         CHECK_CALLED(ReportResult);
 
+        hres = IInternetProtocol_Terminate(http_protocol, 0);
+        ok(hres == S_OK, "Terminate failed: %08x\n", hres);
+
         IInternetProtocol_Release(http_protocol);
     }
 
@@ -1167,7 +1193,9 @@ static void test_http_protocol(void)
             'o','r','g','/','s','i','t','e','/','a','b','o','u','t',0};
 
     tested_protocol = HTTP_TEST;
+    bindf = BINDF_ASYNCHRONOUS | BINDF_ASYNCSTORAGE | BINDF_PULLDATA;
     test_http_protocol_url(winehq_url, TRUE);
+    bindf = BINDF_ASYNCHRONOUS | BINDF_ASYNCSTORAGE | BINDF_PULLDATA | BINDF_FROMURLMON;
     test_http_protocol_url(winehq_url, FALSE);
 
 }
@@ -1175,12 +1203,15 @@ static void test_http_protocol(void)
 static LRESULT WINAPI wnd_proc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
 {
     if(msg == WM_USER) {
+        BOOL first_call = FALSE;
         HRESULT hres;
         DWORD cb;
         BYTE buf[3600];
 
-        SET_EXPECT(ReportData);
         if(!state) {
+            first_call = TRUE;
+            state = 1;
+
             if (http_is_first)
             {
                 CHECK_CALLED(ReportProgress_FINDINGRESOURCE);
@@ -1192,18 +1223,30 @@ static LRESULT WINAPI wnd_proc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam
                 CHECK_NOT_CALLED(ReportProgress_CONNECTING);
             }
             CHECK_CALLED(ReportProgress_SENDINGREQUEST);
-
-            SET_EXPECT(OnResponse);
-            SET_EXPECT(ReportProgress_MIMETYPEAVAILABLE);
+            if(!(bindf & BINDF_FROMURLMON))
+            {
+                CHECK_CALLED(OnResponse);
+                CHECK_CALLED(ReportProgress_RAWMIMETYPE);
+                CHECK_CALLED(ReportData);
+            }
+            else
+            {
+                SET_EXPECT(OnResponse);
+                SET_EXPECT(ReportProgress_MIMETYPEAVAILABLE);
+            }
         }
+        SET_EXPECT(ReportData);
 
-        hres = IInternetProtocol_Continue(http_protocol, (PROTOCOLDATA*)lParam);
-        ok(hres == S_OK, "Continue failed: %08x\n", hres);
+        if (bindf & BINDF_FROMURLMON)
+        {
+            hres = IInternetProtocol_Continue(http_protocol, (PROTOCOLDATA*)lParam);
+            ok(hres == S_OK, "Continue failed: %08x\n", hres);
 
-        CHECK_CALLED(ReportData);
-        if(!state) {
-            CHECK_CALLED(OnResponse);
-            CHECK_CALLED(ReportProgress_MIMETYPEAVAILABLE);
+            CHECK_CALLED(ReportData);
+            if(first_call) {
+                CHECK_CALLED(OnResponse);
+                CHECK_CALLED(ReportProgress_MIMETYPEAVAILABLE);
+            }
         }
 
         do hres = IInternetProtocol_Read(http_protocol, buf, sizeof(buf), &cb);
@@ -1214,9 +1257,7 @@ static LRESULT WINAPI wnd_proc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam
         if(hres == S_FALSE)
             PostMessage(protocol_hwnd, WM_USER+1, 0, 0);
 
-        if(!state) {
-            state = 1;
-
+        if(first_call) {
             hres = IInternetProtocol_LockRequest(http_protocol, 0);
             ok(hres == S_OK, "LockRequest failed: %08x\n", hres);
 




More information about the wine-cvs mailing list