[PATCH 4/4] urlmon/tests: Add some IAuthenticate tests for IMoniker::BindToStorage().

Dmitry Timoshkov dmitry at baikal.ru
Tue Jun 22 09:54:40 CDT 2021


Signed-off-by: Dmitry Timoshkov <dmitry at baikal.ru>
---
 dlls/urlmon/tests/url.c | 228 +++++++++++++++++++++++++++++-----------
 1 file changed, 168 insertions(+), 60 deletions(-)

diff --git a/dlls/urlmon/tests/url.c b/dlls/urlmon/tests/url.c
index 69ec00476ff..15a90864aea 100644
--- a/dlls/urlmon/tests/url.c
+++ b/dlls/urlmon/tests/url.c
@@ -91,6 +91,7 @@ DEFINE_EXPECT(QueryInterface_IBindStatusCallback);
 DEFINE_EXPECT(QueryInterface_IBindStatusCallbackEx);
 DEFINE_EXPECT(QueryInterface_IBindStatusCallbackHolder);
 DEFINE_EXPECT(QueryInterface_IAuthenticate);
+DEFINE_EXPECT(QueryInterface_IAuthenticateEx);
 DEFINE_EXPECT(QueryInterface_IInternetProtocol);
 DEFINE_EXPECT(QueryInterface_IWindowForBindingUI);
 DEFINE_EXPECT(QueryInterface_IHttpSecurity);
@@ -148,6 +149,7 @@ DEFINE_EXPECT(GetWindow_IHttpSecurity);
 DEFINE_EXPECT(GetWindow_IWindowForBindingUI);
 DEFINE_EXPECT(GetWindow_ICodeInstall);
 DEFINE_EXPECT(OnSecurityProblem);
+DEFINE_EXPECT(Authenticate_Authenticate);
 
 static const WCHAR winetest_data_urlW[] =
     {'h','t','t','p',':','/','/','t','e','s','t','.','w','i','n','e','h','q','.','o','r','g','/',
@@ -159,8 +161,9 @@ static const WCHAR wszTextHtml[] = {'t','e','x','t','/','h','t','m','l',0};
 static WCHAR BSCBHolder[] = { '_','B','S','C','B','_','H','o','l','d','e','r','_',0 };
 
 #define WINEHQ_IP "4.4.81.124"
+#define WINEHQ_IPW L"4.4.81.124"
 static const WCHAR wszWineHQSite[] = L"www.winehq.org";
-static const WCHAR wszWineHQIP[] = L"" WINEHQ_IP;
+static const WCHAR wszWineHQIP[] = L"" WINEHQ_IPW;
 static const CHAR wszIndexHtmlA[] = "index.html";
 static const WCHAR cache_fileW[] = {'c',':','\\','c','a','c','h','e','.','h','t','m',0};
 static const CHAR dwl_htmlA[] = "dwl.html";
@@ -191,6 +194,10 @@ static BOOL async_switch = FALSE;
 static BOOL strict_bsc_qi;
 static DWORD bindtest_flags;
 static const char *test_file;
+static BOOL auth_supported = FALSE;
+static BOOL auth_fail = FALSE;
+static BOOL auth_ask_for_credentials = FALSE;
+static DWORD response_code = 200;
 
 static WCHAR file_url[INTERNET_MAX_URL_LENGTH], current_url[INTERNET_MAX_URL_LENGTH];
 
@@ -203,7 +210,8 @@ static enum {
     HTTPS_TEST,
     FTP_TEST,
     WINETEST_TEST,
-    WINETEST_SYNC_TEST
+    WINETEST_SYNC_TEST,
+    HTTP_BASIC_AUTH_TEST
 } test_protocol;
 
 static enum {
@@ -233,7 +241,7 @@ static BOOL proxy_active(void)
 
 static BOOL is_urlmon_protocol(int prot)
 {
-    return prot == FILE_TEST || prot == HTTP_TEST || prot == HTTPS_TEST || prot == FTP_TEST || prot == MK_TEST;
+    return prot == FILE_TEST || prot == HTTP_TEST || prot == HTTPS_TEST || prot == FTP_TEST || prot == MK_TEST || prot == HTTP_BASIC_AUTH_TEST;
 }
 
 static void test_CreateURLMoniker(LPCWSTR url1, LPCWSTR url2)
@@ -1240,7 +1248,7 @@ static HRESULT WINAPI HttpNegotiate_BeginningTransaction(IHttpNegotiate2 *iface,
 
     ok(GetCurrentThreadId() == thread_id, "wrong thread %d\n", GetCurrentThreadId());
 
-    ok(!lstrcmpW(szURL, current_url), "szURL != current_url\n");
+    ok(!lstrcmpW(szURL, current_url), "got %s, expected %s\n", debugstr_w(szURL), debugstr_w(current_url));
     ok(!dwReserved, "dwReserved=%d, expected 0\n", dwReserved);
     ok(pszAdditionalHeaders != NULL, "pszAdditionalHeaders == NULL\n");
     if(pszAdditionalHeaders)
@@ -1256,9 +1264,12 @@ static HRESULT WINAPI HttpNegotiate_OnResponse(IHttpNegotiate2 *iface, DWORD dwR
 
     ok(GetCurrentThreadId() == thread_id, "wrong thread %d\n", GetCurrentThreadId());
 
-    ok(dwResponseCode == 200, "dwResponseCode=%d, expected 200\n", dwResponseCode);
+    ok(dwResponseCode == response_code, "dwResponseCode=%d, expected %u\n", dwResponseCode, response_code);
     ok(szResponseHeaders != NULL, "szResponseHeaders == NULL\n");
-    ok(szRequestHeaders == NULL, "szRequestHeaders != NULL\n");
+    if (auth_supported)
+        ok(szRequestHeaders != NULL, "szRequestHeaders == NULL\n");
+    else
+        ok(szRequestHeaders == NULL, "szRequestHeaders != NULL\n");
     /* Note: in protocol.c tests, OnResponse pszAdditionalRequestHeaders _is_ NULL */
     ok(pszAdditionalRequestHeaders != NULL, "pszAdditionalHeaders == NULL\n");
     if(pszAdditionalRequestHeaders)
@@ -1437,6 +1448,62 @@ static IServiceProviderVtbl ServiceProviderVtbl = {
 
 static IServiceProvider ServiceProvider = { &ServiceProviderVtbl };
 
+static HRESULT WINAPI Authenticate_QueryInterface(IAuthenticate *iface, REFIID riid, void **ppv)
+{
+    if(IsEqualGUID(riid, &IID_IAuthenticateEx)) {
+        CHECK_EXPECT(QueryInterface_IAuthenticateEx);
+        *ppv = NULL;
+        return E_NOINTERFACE;
+    }
+
+    if(IsEqualGUID(riid, &IID_IAuthenticate)) {
+        CHECK_EXPECT(QueryInterface_IAuthenticate);
+        *ppv = iface;
+        return S_OK;
+    }
+
+    ok(0, "Unexpected interface requested: %s\n", debugstr_guid(riid));
+    return E_NOINTERFACE;
+}
+
+static ULONG WINAPI Authenticate_AddRef(IAuthenticate *iface)
+{
+    return 2;
+}
+
+static ULONG WINAPI Authenticate_Release(IAuthenticate *iface)
+{
+    return 1;
+}
+
+static HRESULT WINAPI Authenticate_Authenticate(IAuthenticate *iface, HWND *hwnd, LPWSTR *user, LPWSTR *pass)
+{
+    if (winetest_debug > 1)
+        trace("IAuthenticate::Authenticate()\n");
+
+    CHECK_EXPECT(Authenticate_Authenticate);
+
+    if(auth_fail)
+        return E_NOTIMPL;
+
+    if(auth_ask_for_credentials) {
+        binding_hres = INET_E_DATA_NOT_AVAILABLE;
+        *hwnd = GetDesktopWindow();
+    }else
+        *hwnd = 0;
+    *user = *pass = NULL;
+    return S_OK;
+}
+
+static IAuthenticateVtbl AuthenticateVtbl = {
+    Authenticate_QueryInterface,
+    Authenticate_AddRef,
+    Authenticate_Release,
+    Authenticate_Authenticate
+};
+
+static IAuthenticate Authenticate = { &AuthenticateVtbl };
+
 static IBindStatusCallbackEx objbsc;
 
 static void test_WinInetHttpInfo(IWinInetHttpInfo *http_info, DWORD progress)
@@ -1465,7 +1532,7 @@ static void test_WinInetHttpInfo(IWinInetHttpInfo *http_info, DWORD progress)
         if(download_state == BEFORE_DOWNLOAD && progress != BINDSTATUS_MIMETYPEAVAILABLE && progress != BINDSTATUS_DECODING)
             ok(status == 0, "progress %u: status = %d\n", progress, status);
         else
-            ok(status == HTTP_STATUS_OK, "progress %u: status = %d\n", progress, status);
+            ok(status == response_code, "progress %u: status = %d, expected %d\n", progress, status, response_code);
         ok(size == sizeof(DWORD), "size = %d\n", size);
     }
 
@@ -1513,6 +1580,11 @@ static HRESULT WINAPI statusclb_QueryInterface(IBindStatusCallbackEx *iface, REF
         return S_OK;
     }else if (IsEqualGUID(&IID_IAuthenticate, riid)) {
         CHECK_EXPECT(QueryInterface_IAuthenticate);
+        if (auth_supported)
+        {
+            *ppv = &Authenticate;
+            return S_OK;
+        }
         return E_NOINTERFACE;
     }else if(IsEqualGUID(&IID_IBindStatusCallback, riid)) {
         if(strict_bsc_qi)
@@ -1843,6 +1915,7 @@ static HRESULT WINAPI statusclb_OnStopBinding(IBindStatusCallbackEx *iface, HRES
         else
             ok(hresult == E_ABORT, "binding failed: %08x, expected E_ABORT\n", hresult);
     } else
+todo_wine_if(auth_ask_for_credentials)
         ok(hresult == binding_hres, "binding failed: %08x, expected %08x\n", hresult, binding_hres);
     ok(szError == NULL, "szError should be NULL\n");
 
@@ -1873,7 +1946,7 @@ static HRESULT WINAPI statusclb_OnStopBinding(IBindStatusCallbackEx *iface, HRES
             ok(IsEqualCLSID(&clsid, &CLSID_FileProtocol),
                     "incorrect protocol CLSID: %s, expected CLSID_FileProtocol\n",
                     wine_dbgstr_guid(&clsid));
-        }else if(test_protocol == HTTP_TEST) {
+        }else if(test_protocol == HTTP_TEST || test_protocol == HTTP_BASIC_AUTH_TEST) {
             ok(IsEqualCLSID(&clsid, &CLSID_HttpProtocol),
                     "incorrect protocol CLSID: %s, expected CLSID_HttpProtocol\n",
                     wine_dbgstr_guid(&clsid));
@@ -2844,13 +2917,17 @@ static void init_bind_test(int protocol, DWORD flags, DWORD t)
     stopped_obj_binding = FALSE;
     data_available = FALSE;
     mime_type[0] = 0;
-    binding_hres = S_OK;
+    binding_hres = protocol == HTTP_BASIC_AUTH_TEST ? E_ACCESSDENIED : S_OK;
     bind_to_object = (flags & BINDTEST_TOOBJECT) != 0;
     tymed = t;
     filedwl_api = (flags & BINDTEST_FILEDWLAPI) != 0;
     post_test = (flags & BINDTEST_HTTPRESPONSE) != 0;
 
     switch(protocol) {
+    case HTTP_BASIC_AUTH_TEST:
+        lstrcpyW(current_url, L"http://httpbin.org/basic-auth/foo/bar");
+        break;
+
     case HTTP_TEST:
         if(post_test)
             url_a = "http://test.winehq.org/tests/post.php";
@@ -2890,7 +2967,7 @@ static void init_bind_test(int protocol, DWORD flags, DWORD t)
     abort_start = (flags & BINDTEST_ABORT_START) != 0;
     abort_progress = (flags & BINDTEST_ABORT_PROGRESS) != 0;
     async_switch = (flags & BINDTEST_ASYNC_SWITCH) != 0;
-    is_async_prot = protocol == HTTP_TEST || protocol == HTTPS_TEST || protocol == FTP_TEST || protocol == WINETEST_TEST;
+    is_async_prot = protocol == HTTP_TEST || protocol == HTTPS_TEST || protocol == FTP_TEST || protocol == WINETEST_TEST || protocol == HTTP_BASIC_AUTH_TEST;
     prot_state = 0;
     ResetEvent(complete_event);
 
@@ -3005,7 +3082,7 @@ static void test_MonikerComposeWith(void)
     IMoniker_Release(outmon);
 }
 
-static void test_BindToStorage(int protocol, DWORD flags, DWORD t)
+static void test_BindToStorage(int protocol, DWORD flags, DWORD t, DWORD exhres)
 {
     IMoniker *mon;
     HRESULT hres;
@@ -3018,6 +3095,7 @@ static void test_BindToStorage(int protocol, DWORD flags, DWORD t)
     IBinding *bind;
 
     init_bind_test(protocol, flags, t);
+    binding_hres = exhres;
     allow_finding_resource = (flags & BINDTEST_ALLOW_FINDINGRESOURCE) != 0;
 
     if(no_callback) {
@@ -3073,7 +3151,6 @@ static void test_BindToStorage(int protocol, DWORD flags, DWORD t)
             binding_hres = INET_E_INVALID_CERTIFICATE;
     }
 
-
     if(only_check_prot_args)
         SET_EXPECT(OnStopBinding);
     if(!no_callback) {
@@ -3094,7 +3171,7 @@ static void test_BindToStorage(int protocol, DWORD flags, DWORD t)
         if(tymed != TYMED_FILE || (test_protocol != ABOUT_TEST && test_protocol != ITS_TEST))
             SET_EXPECT(UnlockRequest);
     }else {
-        if(test_protocol == HTTP_TEST || test_protocol == HTTPS_TEST || test_protocol == WINETEST_TEST) {
+        if(test_protocol == HTTP_TEST || test_protocol == HTTPS_TEST || test_protocol == WINETEST_TEST || test_protocol == HTTP_BASIC_AUTH_TEST) {
             SET_EXPECT(QueryService_IInternetBindInfo);
             if(!abort_start)
                 SET_EXPECT(QueryInterface_IHttpNegotiate);
@@ -3119,9 +3196,16 @@ static void test_BindToStorage(int protocol, DWORD flags, DWORD t)
         }
         if(!no_callback) {
             if((test_protocol == HTTP_TEST || test_protocol == HTTPS_TEST || test_protocol == FTP_TEST
-               || test_protocol == FILE_TEST || test_protocol == WINETEST_TEST) && !abort_start)
+               || test_protocol == FILE_TEST || test_protocol == WINETEST_TEST || test_protocol == HTTP_BASIC_AUTH_TEST) && !abort_start)
                 SET_EXPECT(OnProgress_SENDINGREQUEST);
-            if(test_protocol == HTTP_TEST || test_protocol == HTTPS_TEST || test_protocol == WINETEST_TEST) {
+            if(test_protocol == HTTP_BASIC_AUTH_TEST) {
+                SET_EXPECT(QueryInterface_IAuthenticate);
+                SET_EXPECT(QueryInterface_IAuthenticateEx);
+                if (!auth_supported)
+                    SET_EXPECT(QueryService_IAuthenticate);
+                SET_EXPECT(Authenticate_Authenticate);
+            }
+            if(test_protocol == HTTP_TEST || test_protocol == HTTPS_TEST || test_protocol == WINETEST_TEST || test_protocol == HTTP_BASIC_AUTH_TEST) {
                 SET_EXPECT(QueryInterface_IHttpNegotiate);
                 SET_EXPECT(OnResponse);
             }
@@ -3142,7 +3226,7 @@ static void test_BindToStorage(int protocol, DWORD flags, DWORD t)
     }
 
     hres = IMoniker_BindToStorage(mon, bctx, NULL, tymed == TYMED_ISTREAM ? &IID_IStream : &IID_IUnknown, (void**)&unk);
-    if ((test_protocol == HTTP_TEST || test_protocol == HTTPS_TEST)
+    if ((test_protocol == HTTP_TEST || test_protocol == HTTPS_TEST || test_protocol == HTTP_BASIC_AUTH_TEST)
         && hres == HRESULT_FROM_WIN32(ERROR_INTERNET_NAME_NOT_RESOLVED))
     {
         skip("Network unreachable, skipping tests\n");
@@ -3183,6 +3267,10 @@ static void test_BindToStorage(int protocol, DWORD flags, DWORD t)
             invalid_cn_accepted = FALSE;
             binding_hres = INET_E_INVALID_CERTIFICATE;
         }
+    }else if(FAILED(binding_hres)) {
+todo_wine_if(auth_ask_for_credentials)
+        ok(hres == exhres, "IMoniker_BindToStorage failed: %08x, expected %08x\n", hres, exhres);
+        ok(!unk, "unk = %p, expected NULL\n", unk);
     }else {
         ok(hres == S_OK, "IMoniker_BindToStorage failed: %08x\n", hres);
         ok(unk != NULL, "unk == NULL\n");
@@ -3302,7 +3390,7 @@ static void test_BindToStorage(int protocol, DWORD flags, DWORD t)
                     CHECK_CALLED(OnDataAvailable);
                 else
                     CHECK_NOT_CALLED(OnDataAvailable);
-            }else if((tymed != TYMED_FILE || test_protocol != ABOUT_TEST) && !abort_start)
+            }else if((tymed != TYMED_FILE || test_protocol != ABOUT_TEST) && !abort_start && binding_hres == S_OK)
                 CHECK_CALLED(OnDataAvailable);
             CHECK_CALLED(OnStopBinding);
         }
@@ -4033,10 +4121,30 @@ START_TEST(url)
         test_BindToStorage_fail();
 
         trace("synchronous http test (COM not initialised)...\n");
-        test_BindToStorage(HTTP_TEST, 0, TYMED_ISTREAM);
+        test_BindToStorage(HTTP_TEST, 0, TYMED_ISTREAM, S_OK);
 
         CoInitialize(NULL);
 
+        http_is_first = TRUE;
+        trace("IAuthenticate test...\n");
+        test_BindToStorage(HTTP_BASIC_AUTH_TEST, 0, 0, E_ACCESSDENIED);
+
+        auth_supported = TRUE;
+        trace("IAuthenticate test (auth_supported)...\n");
+        test_BindToStorage(HTTP_BASIC_AUTH_TEST, 0, 0, E_ACCESSDENIED);
+
+        if(winetest_interactive) { /* Press ESC when asked for credentials*/
+            auth_ask_for_credentials = TRUE;
+            response_code = 401;
+            trace("IAuthenticate interactive test...\n");
+            test_BindToStorage(HTTP_BASIC_AUTH_TEST, 0, 0, S_OK);
+        }
+
+        auth_supported = FALSE;
+        auth_ask_for_credentials = FALSE;
+        http_is_first = FALSE;
+        response_code = 200;
+
         trace("test StdURLMoniker...\n");
         test_StdURLMoniker();
 
@@ -4044,28 +4152,28 @@ START_TEST(url)
         test_MonikerComposeWith();
 
         trace("synchronous http test...\n");
-        test_BindToStorage(HTTP_TEST, 0, TYMED_ISTREAM);
+        test_BindToStorage(HTTP_TEST, 0, TYMED_ISTREAM, S_OK);
 
         trace("emulated synchronous http test (to file)...\n");
-        test_BindToStorage(HTTP_TEST, BINDTEST_EMULATE, TYMED_FILE);
+        test_BindToStorage(HTTP_TEST, BINDTEST_EMULATE, TYMED_FILE, S_OK);
 
         trace("synchronous http test (to object)...\n");
         test_BindToObject(HTTP_TEST, 0, S_OK);
 
         trace("emulated synchronous http test (with cache)...\n");
-        test_BindToStorage(HTTP_TEST, BINDTEST_EMULATE|BINDTEST_USE_CACHE, TYMED_ISTREAM);
+        test_BindToStorage(HTTP_TEST, BINDTEST_EMULATE|BINDTEST_USE_CACHE, TYMED_ISTREAM, S_OK);
 
         trace("emulated synchronous http test (with cache, no read)...\n");
-        test_BindToStorage(HTTP_TEST, BINDTEST_EMULATE|BINDTEST_USE_CACHE|BINDTEST_NO_CALLBACK_READ, TYMED_ISTREAM);
+        test_BindToStorage(HTTP_TEST, BINDTEST_EMULATE|BINDTEST_USE_CACHE|BINDTEST_NO_CALLBACK_READ, TYMED_ISTREAM, 0);
 
         trace("synchronous http test (with cache, no read)...\n");
-        test_BindToStorage(HTTP_TEST, BINDTEST_USE_CACHE|BINDTEST_NO_CALLBACK_READ, TYMED_ISTREAM);
+        test_BindToStorage(HTTP_TEST, BINDTEST_USE_CACHE|BINDTEST_NO_CALLBACK_READ, TYMED_ISTREAM, S_OK);
 
         trace("synchronous file test...\n");
-        test_BindToStorage(FILE_TEST, 0, TYMED_ISTREAM);
+        test_BindToStorage(FILE_TEST, 0, TYMED_ISTREAM, 0);
 
         trace("emulated synchronous file test (to file)...\n");
-        test_BindToStorage(FILE_TEST, BINDTEST_EMULATE, TYMED_FILE);
+        test_BindToStorage(FILE_TEST, BINDTEST_EMULATE, TYMED_FILE, S_OK);
 
         trace("synchronous file test (to object)...\n");
         test_BindToObject(FILE_TEST, 0, S_OK);
@@ -4076,31 +4184,31 @@ START_TEST(url)
         create_html_file();
 
         trace("file test (no callback)...\n");
-        test_BindToStorage(FILE_TEST, BINDTEST_NO_CALLBACK, TYMED_ISTREAM);
+        test_BindToStorage(FILE_TEST, BINDTEST_NO_CALLBACK, TYMED_ISTREAM, S_OK);
 
         if(can_do_https()) {
             trace("synchronous https test (invalid CN, dialog)\n");
             onsecurityproblem_hres = S_FALSE;
             http_is_first = TRUE;
-            test_BindToStorage(HTTPS_TEST, BINDTEST_INVALID_CN, TYMED_ISTREAM);
+            test_BindToStorage(HTTPS_TEST, BINDTEST_INVALID_CN, TYMED_ISTREAM, S_OK);
 
             bindf = BINDF_ASYNCHRONOUS | BINDF_ASYNCSTORAGE | BINDF_PULLDATA;
 
             trace("asynchronous https test (invalid CN, fail)\n");
             onsecurityproblem_hres = E_FAIL;
-            test_BindToStorage(HTTPS_TEST, BINDTEST_INVALID_CN, TYMED_ISTREAM);
+            test_BindToStorage(HTTPS_TEST, BINDTEST_INVALID_CN, TYMED_ISTREAM, S_OK);
 
             trace("asynchronous https test (invalid CN, accept)\n");
             onsecurityproblem_hres = S_OK;
-            test_BindToStorage(HTTPS_TEST, BINDTEST_INVALID_CN, TYMED_ISTREAM);
+            test_BindToStorage(HTTPS_TEST, BINDTEST_INVALID_CN, TYMED_ISTREAM, S_OK);
 
             trace("asynchronous https test (invalid CN, dialog 2)\n");
             onsecurityproblem_hres = S_FALSE;
-            test_BindToStorage(HTTPS_TEST, BINDTEST_INVALID_CN, TYMED_ISTREAM);
+            test_BindToStorage(HTTPS_TEST, BINDTEST_INVALID_CN, TYMED_ISTREAM, S_OK);
             invalid_cn_accepted = FALSE;
 
             trace("asynchronous https test...\n");
-            test_BindToStorage(HTTPS_TEST, 0, TYMED_ISTREAM);
+            test_BindToStorage(HTTPS_TEST, 0, TYMED_ISTREAM, S_OK);
         }else {
             win_skip("Skipping https tests\n");
         }
@@ -4108,39 +4216,39 @@ START_TEST(url)
         bindf = BINDF_ASYNCHRONOUS | BINDF_ASYNCSTORAGE | BINDF_PULLDATA;
 
         trace("winetest test (async switch)...\n");
-        test_BindToStorage(WINETEST_TEST, BINDTEST_EMULATE|BINDTEST_ASYNC_SWITCH, TYMED_ISTREAM);
+        test_BindToStorage(WINETEST_TEST, BINDTEST_EMULATE|BINDTEST_ASYNC_SWITCH, TYMED_ISTREAM, S_OK);
 
         trace("about test (no read)...\n");
-        test_BindToStorage(ABOUT_TEST, BINDTEST_NO_CALLBACK_READ, TYMED_ISTREAM);
+        test_BindToStorage(ABOUT_TEST, BINDTEST_NO_CALLBACK_READ, TYMED_ISTREAM, S_OK);
 
         trace("http test...\n");
-        test_BindToStorage(HTTP_TEST, 0, TYMED_ISTREAM);
+        test_BindToStorage(HTTP_TEST, 0, TYMED_ISTREAM, 0);
 
         trace("http test (to file)...\n");
-        test_BindToStorage(HTTP_TEST, 0, TYMED_FILE);
+        test_BindToStorage(HTTP_TEST, 0, TYMED_FILE, 0);
 
         trace("http test (to object)...\n");
         test_BindToObject(HTTP_TEST, 0, S_OK);
 
         trace("http test (short response)...\n");
-        test_BindToStorage(HTTP_TEST, BINDTEST_HTTPRESPONSE|BINDTEST_ALLOW_FINDINGRESOURCE, TYMED_ISTREAM);
+        test_BindToStorage(HTTP_TEST, BINDTEST_HTTPRESPONSE|BINDTEST_ALLOW_FINDINGRESOURCE, TYMED_ISTREAM, S_OK);
 
         trace("http test (short response, to object)...\n");
         test_BindToObject(HTTP_TEST, 0, S_OK);
 
         trace("http test (abort start binding E_NOTIMPL)...\n");
         abort_hres = E_NOTIMPL;
-        test_BindToStorage(HTTP_TEST, BINDTEST_ABORT_START, TYMED_FILE);
+        test_BindToStorage(HTTP_TEST, BINDTEST_ABORT_START, TYMED_FILE, S_OK);
 
         trace("http test (abort start binding E_ABORT)...\n");
         abort_hres = E_ABORT;
-        test_BindToStorage(HTTP_TEST, BINDTEST_ABORT_START, TYMED_FILE);
+        test_BindToStorage(HTTP_TEST, BINDTEST_ABORT_START, TYMED_FILE, S_OK);
 
         trace("http test (abort progress)...\n");
-        test_BindToStorage(HTTP_TEST, BINDTEST_ABORT_PROGRESS|BINDTEST_ALLOW_FINDINGRESOURCE, TYMED_FILE);
+        test_BindToStorage(HTTP_TEST, BINDTEST_ABORT_PROGRESS|BINDTEST_ALLOW_FINDINGRESOURCE, TYMED_FILE, S_OK);
 
         trace("emulated http test...\n");
-        test_BindToStorage(HTTP_TEST, BINDTEST_EMULATE, TYMED_ISTREAM);
+        test_BindToStorage(HTTP_TEST, BINDTEST_EMULATE, TYMED_ISTREAM, S_OK);
 
         trace("emulated http test (to object)...\n");
         test_BindToObject(HTTP_TEST, BINDTEST_EMULATE, S_OK);
@@ -4149,67 +4257,67 @@ START_TEST(url)
         test_BindToObject(HTTP_TEST, BINDTEST_EMULATE|BINDTEST_REDIRECT, S_OK);
 
         trace("emulated http test (to file)...\n");
-        test_BindToStorage(HTTP_TEST, BINDTEST_EMULATE, TYMED_FILE);
+        test_BindToStorage(HTTP_TEST, BINDTEST_EMULATE, TYMED_FILE, S_OK);
 
         trace("emulated http test (redirect)...\n");
-        test_BindToStorage(HTTP_TEST, BINDTEST_EMULATE|BINDTEST_REDIRECT, TYMED_ISTREAM);
+        test_BindToStorage(HTTP_TEST, BINDTEST_EMULATE|BINDTEST_REDIRECT, TYMED_ISTREAM, S_OK);
 
         trace("emulated http test (with cache)...\n");
-        test_BindToStorage(HTTP_TEST, BINDTEST_EMULATE|BINDTEST_USE_CACHE, TYMED_ISTREAM);
+        test_BindToStorage(HTTP_TEST, BINDTEST_EMULATE|BINDTEST_USE_CACHE, TYMED_ISTREAM, S_OK);
 
         trace("winetest test (no callback)...\n");
-        test_BindToStorage(WINETEST_TEST, BINDTEST_EMULATE|BINDTEST_NO_CALLBACK|BINDTEST_USE_CACHE, TYMED_ISTREAM);
+        test_BindToStorage(WINETEST_TEST, BINDTEST_EMULATE|BINDTEST_NO_CALLBACK|BINDTEST_USE_CACHE, TYMED_ISTREAM, S_OK);
 
         trace("emulated https test...\n");
-        test_BindToStorage(HTTPS_TEST, BINDTEST_EMULATE, TYMED_ISTREAM);
+        test_BindToStorage(HTTPS_TEST, BINDTEST_EMULATE, TYMED_ISTREAM, S_OK);
 
         trace("about test...\n");
-        test_BindToStorage(ABOUT_TEST, 0, TYMED_ISTREAM);
+        test_BindToStorage(ABOUT_TEST, 0, TYMED_ISTREAM, S_OK);
 
         trace("about test (to file)...\n");
-        test_BindToStorage(ABOUT_TEST, 0, TYMED_FILE);
+        test_BindToStorage(ABOUT_TEST, 0, TYMED_FILE, S_OK);
 
         trace("about test (to object)...\n");
         test_BindToObject(ABOUT_TEST, 0, S_OK);
 
         trace("emulated about test...\n");
-        test_BindToStorage(ABOUT_TEST, BINDTEST_EMULATE, TYMED_ISTREAM);
+        test_BindToStorage(ABOUT_TEST, BINDTEST_EMULATE, TYMED_ISTREAM, S_OK);
 
         trace("emulated about test (to file)...\n");
-        test_BindToStorage(ABOUT_TEST, BINDTEST_EMULATE, TYMED_FILE);
+        test_BindToStorage(ABOUT_TEST, BINDTEST_EMULATE, TYMED_FILE, S_OK);
 
         trace("emulated about test (to object)...\n");
         test_BindToObject(ABOUT_TEST, BINDTEST_EMULATE, S_OK);
 
         trace("emulalated test reporting result in read...\n");
-        test_BindToStorage(WINETEST_SYNC_TEST, BINDTEST_EMULATE, TYMED_ISTREAM);
+        test_BindToStorage(WINETEST_SYNC_TEST, BINDTEST_EMULATE, TYMED_ISTREAM, S_OK);
 
         trace("file test...\n");
-        test_BindToStorage(FILE_TEST, 0, TYMED_ISTREAM);
+        test_BindToStorage(FILE_TEST, 0, TYMED_ISTREAM, S_OK);
 
         trace("file test (to file)...\n");
-        test_BindToStorage(FILE_TEST, 0, TYMED_FILE);
+        test_BindToStorage(FILE_TEST, 0, TYMED_FILE, S_OK);
 
         trace("file test (to object)...\n");
         test_BindToObject(FILE_TEST, 0, S_OK);
 
         trace("emulated file test...\n");
-        test_BindToStorage(FILE_TEST, BINDTEST_EMULATE, TYMED_ISTREAM);
+        test_BindToStorage(FILE_TEST, BINDTEST_EMULATE, TYMED_ISTREAM, S_OK);
 
         trace("emulated file test (to file)...\n");
-        test_BindToStorage(FILE_TEST, BINDTEST_EMULATE, TYMED_FILE);
+        test_BindToStorage(FILE_TEST, BINDTEST_EMULATE, TYMED_FILE, S_OK);
 
         trace("emulated file test (to object)...\n");
         test_BindToObject(FILE_TEST, BINDTEST_EMULATE, S_OK);
 
         trace("emulated its test...\n");
-        test_BindToStorage(ITS_TEST, BINDTEST_EMULATE, TYMED_ISTREAM);
+        test_BindToStorage(ITS_TEST, BINDTEST_EMULATE, TYMED_ISTREAM, S_OK);
 
         trace("emulated its test (to file)...\n");
-        test_BindToStorage(ITS_TEST, BINDTEST_EMULATE, TYMED_FILE);
+        test_BindToStorage(ITS_TEST, BINDTEST_EMULATE, TYMED_FILE, S_OK);
 
         trace("emulated mk test...\n");
-        test_BindToStorage(MK_TEST, BINDTEST_EMULATE, TYMED_ISTREAM);
+        test_BindToStorage(MK_TEST, BINDTEST_EMULATE, TYMED_ISTREAM, S_OK);
 
         trace("test URLDownloadToFile for file protocol...\n");
         test_URLDownloadToFile(FILE_TEST, FALSE);
@@ -4224,12 +4332,12 @@ START_TEST(url)
         test_URLDownloadToFile_abort();
 
         trace("test emulated http abort...\n");
-        test_BindToStorage(HTTP_TEST, BINDTEST_EMULATE|BINDTEST_ABORT, TYMED_ISTREAM);
+        test_BindToStorage(HTTP_TEST, BINDTEST_EMULATE|BINDTEST_ABORT, TYMED_ISTREAM, S_OK);
 
         bindf |= BINDF_NOWRITECACHE;
 
         trace("ftp test...\n");
-        test_BindToStorage(FTP_TEST, 0, TYMED_ISTREAM);
+        test_BindToStorage(FTP_TEST, 0, TYMED_ISTREAM, S_OK);
 
         trace("test failures...\n");
         test_BindToStorage_fail();
@@ -4238,7 +4346,7 @@ START_TEST(url)
         only_check_prot_args = TRUE; /* Fail after checking arguments to Protocol_Start */
 
         trace("check emulated http protocol arguments...\n");
-        test_BindToStorage(HTTP_TEST, BINDTEST_EMULATE, TYMED_ISTREAM);
+        test_BindToStorage(HTTP_TEST, BINDTEST_EMULATE, TYMED_ISTREAM, S_OK);
     }
 
     DeleteFileA(test_file);
-- 
2.31.1




More information about the wine-devel mailing list