Misha Koshelev : urlmon/tests: Add tests for calls to IBindStatusCallback_QueryInterface.

Alexandre Julliard julliard at wine.codeweavers.com
Tue Jul 24 07:06:20 CDT 2007


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

Author: Misha Koshelev <mk144210 at bcm.edu>
Date:   Mon Jul 23 20:31:50 2007 -0500

urlmon/tests: Add tests for calls to IBindStatusCallback_QueryInterface.

---

 dlls/urlmon/tests/url.c |   46 +++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 45 insertions(+), 1 deletions(-)

diff --git a/dlls/urlmon/tests/url.c b/dlls/urlmon/tests/url.c
index 5213598..7aa6ead 100644
--- a/dlls/urlmon/tests/url.c
+++ b/dlls/urlmon/tests/url.c
@@ -56,6 +56,18 @@
         expect_ ## func = called_ ## func = FALSE; \
     }while(0)
 
+#define CHECK_NOT_CALLED(func) \
+    do { \
+        ok(!called_ ## func, "unexpected " #func "\n"); \
+        expect_ ## func = called_ ## func = FALSE; \
+    }while(0)
+
+#define CLEAR_CALLED(func) \
+    expect_ ## func = called_ ## func = FALSE
+
+DEFINE_EXPECT(QueryInterface_IServiceProvider);
+DEFINE_EXPECT(QueryInterface_IHttpNegotiate);
+DEFINE_EXPECT(QueryInterface_IHttpNegotiate2);
 DEFINE_EXPECT(GetBindInfo);
 DEFINE_EXPECT(OnStartBinding);
 DEFINE_EXPECT(OnProgress_FINDINGRESOURCE);
@@ -372,6 +384,18 @@ static HRESULT WINAPI statusclb_QueryInterface(IBindStatusCallback *iface, REFII
             return E_NOINTERFACE;
         }
     }
+    else if (IsEqualGUID(&IID_IServiceProvider, riid))
+    {
+        CHECK_EXPECT(QueryInterface_IServiceProvider);
+    }
+    else if (IsEqualGUID(&IID_IHttpNegotiate, riid))
+    {
+        CHECK_EXPECT(QueryInterface_IHttpNegotiate);
+    }
+    else if (IsEqualGUID(&IID_IHttpNegotiate2, riid))
+    {
+        CHECK_EXPECT(QueryInterface_IHttpNegotiate2);
+    }
 
     return E_NOINTERFACE;
 }
@@ -561,8 +585,10 @@ static void test_CreateAsyncBindCtx(void)
     hres = CreateAsyncBindCtx(0, NULL, NULL, NULL);
     ok(hres == E_INVALIDARG, "CreateAsyncBindCtx failed. expected: E_INVALIDARG, got: %08x\n", hres);
 
+    SET_EXPECT(QueryInterface_IServiceProvider);
     hres = CreateAsyncBindCtx(0, &bsc, NULL, &bctx);
     ok(SUCCEEDED(hres), "CreateAsyncBindCtx failed: %08x\n", hres);
+    todo_wine CHECK_CALLED(QueryInterface_IServiceProvider);
 
     bindopts.cbStruct = sizeof(bindopts);
     hres = IBindCtx_GetBindOptions(bctx, &bindopts);
@@ -627,8 +653,10 @@ static void test_CreateAsyncBindCtxEx(void)
 
     IBindCtx_Release(bctx_arg);
 
+    SET_EXPECT(QueryInterface_IServiceProvider);
     hres = CreateAsyncBindCtxEx(NULL, 0, &bsc, NULL, &bctx, 0);
     ok(hres == S_OK, "CreateAsyncBindCtxEx failed: %08x\n", hres);
+    todo_wine CHECK_CALLED(QueryInterface_IServiceProvider);
 
     if(SUCCEEDED(hres))
         IBindCtx_Release(bctx);
@@ -648,14 +676,23 @@ static void test_BindToStorage(int protocol, BOOL emul)
     test_protocol = protocol;
     emulate_protocol = emul;
 
+    SET_EXPECT(QueryInterface_IServiceProvider);
     hres = CreateAsyncBindCtx(0, &bsc, NULL, &bctx);
     ok(SUCCEEDED(hres), "CreateAsyncBindCtx failed: %08x\n\n", hres);
     if(FAILED(hres))
         return;
-
+    if(test_protocol == HTTP_TEST ||
+       test_protocol == ABOUT_TEST ||
+       (emul && test_protocol == FILE_TEST)) todo_wine
+        CHECK_CALLED(QueryInterface_IServiceProvider);
+    else
+        CHECK_CALLED(QueryInterface_IServiceProvider);
+
+    SET_EXPECT(QueryInterface_IServiceProvider);
     hres = RegisterBindStatusCallback(bctx, &bsc, &previousclb, 0);
     ok(SUCCEEDED(hres), "RegisterBindStatusCallback failed: %08x\n", hres);
     ok(previousclb == &bsc, "previousclb(%p) != sclb(%p)\n", previousclb, &bsc);
+    todo_wine CHECK_CALLED(QueryInterface_IServiceProvider);
     if(previousclb)
         IBindStatusCallback_Release(previousclb);
 
@@ -678,6 +715,7 @@ static void test_BindToStorage(int protocol, BOOL emul)
     ok(hres == S_OK, "GetDisplayName failed %08x\n", hres);
     ok(!lstrcmpW(display_name, urls[test_protocol]), "GetDisplayName got wrong name\n");
 
+    SET_EXPECT(QueryInterface_IServiceProvider);
     SET_EXPECT(GetBindInfo);
     SET_EXPECT(OnStartBinding);
     if(emulate_protocol) {
@@ -685,6 +723,8 @@ static void test_BindToStorage(int protocol, BOOL emul)
         SET_EXPECT(UnlockRequest);
     }else {
         if(test_protocol == HTTP_TEST) {
+            SET_EXPECT(QueryInterface_IHttpNegotiate);
+            SET_EXPECT(QueryInterface_IHttpNegotiate2);
             SET_EXPECT(OnProgress_FINDINGRESOURCE);
             SET_EXPECT(OnProgress_CONNECTING);
         }
@@ -730,11 +770,15 @@ static void test_BindToStorage(int protocol, BOOL emul)
         CHECK_CALLED(UnlockRequest);
     }else {
         if(test_protocol == HTTP_TEST) {
+            todo_wine CHECK_CALLED(QueryInterface_IHttpNegotiate);
+            /* QueryInterface_IHttpNegotiate2 called on WinXP but not on Win98 */
+            CLEAR_CALLED(QueryInterface_IHttpNegotiate2);
             CHECK_CALLED(OnProgress_FINDINGRESOURCE);
             CHECK_CALLED(OnProgress_CONNECTING);
             CHECK_CALLED(OnProgress_SENDINGREQUEST);
             todo_wine { CHECK_CALLED(OnProgress_MIMETYPEAVAILABLE); }
         }else {
+            todo_wine CHECK_NOT_CALLED(QueryInterface_IServiceProvider);
             CHECK_CALLED(OnProgress_MIMETYPEAVAILABLE);
         }
         CHECK_CALLED(OnProgress_BEGINDOWNLOADDATA);




More information about the wine-cvs mailing list