Author: akhaldi Date: Wed Jul 22 00:37:31 2015 New Revision: 68534
URL: http://svn.reactos.org/svn/reactos?rev=68534&view=rev Log: [URLMON_WINETEST] Sync with Wine Staging 1.7.47. CORE-9924
Modified: trunk/rostests/winetests/urlmon/protocol.c trunk/rostests/winetests/urlmon/url.c
Modified: trunk/rostests/winetests/urlmon/protocol.c URL: http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/urlmon/protocol.... ============================================================================== --- trunk/rostests/winetests/urlmon/protocol.c [iso-8859-1] (original) +++ trunk/rostests/winetests/urlmon/protocol.c [iso-8859-1] Wed Jul 22 00:37:31 2015 @@ -158,7 +158,7 @@ static DWORD prot_read, filter_state, http_post_test, thread_id; static BOOL security_problem, test_async_req, impl_protex; static BOOL async_read_pending, mimefilter_test, direct_read, wait_for_switch, emulate_prot, short_read, test_abort; -static BOOL empty_file, no_mime, bind_from_cache; +static BOOL empty_file, no_mime, bind_from_cache, file_with_hash;
enum { STATE_CONNECTING, @@ -585,7 +585,8 @@ { HRESULT hres;
- trace("continue in state %d\n", state); + if (winetest_debug > 1) + trace("continue in state %d\n", state);
if(state == STATE_CONNECTING) { if(tested_protocol == HTTP_TEST || tested_protocol == HTTPS_TEST || tested_protocol == FTP_TEST) { @@ -766,10 +767,13 @@ '0','0','0','0','-','0','0','0','0','-','0','0','0','0','0','0','0','0','0','0','0','0','}',0}; static const WCHAR text_plain[] = {'t','e','x','t','/','p','l','a','i','n',0};
- if (ulStatusCode < sizeof(status_names)/sizeof(status_names[0])) - trace( "progress: %s %s\n", status_names[ulStatusCode], wine_dbgstr_w(szStatusText) ); - else - trace( "progress: %u %s\n", ulStatusCode, wine_dbgstr_w(szStatusText) ); + if (winetest_debug > 1) + { + if (ulStatusCode < sizeof(status_names)/sizeof(status_names[0])) + trace( "progress: %s %s\n", status_names[ulStatusCode], wine_dbgstr_w(szStatusText) ); + else + trace( "progress: %u %s\n", ulStatusCode, wine_dbgstr_w(szStatusText) ); + }
switch(ulStatusCode) { case BINDSTATUS_MIMETYPEAVAILABLE: @@ -908,7 +912,8 @@
ok(ulProgress == ulProgressMax, "ulProgress (%d) != ulProgressMax (%d)\n", ulProgress, ulProgressMax); - ok(ulProgressMax == 13, "ulProgressMax=%d, expected 13\n", ulProgressMax); + if(!file_with_hash) + ok(ulProgressMax == 13, "ulProgressMax=%d, expected 13\n", ulProgressMax); /* BSCF_SKIPDRAINDATAFORFILEURLS added in IE8 */ if(tested_protocol == FILE_TEST) ok((grfBSCF == (BSCF_FIRSTDATANOTIFICATION | BSCF_LASTDATANOTIFICATION)) || @@ -2397,6 +2402,7 @@ impl_protex = (flags & TEST_IMPLPROTEX) != 0; empty_file = (flags & TEST_EMPTY) != 0; bind_from_cache = (flags & TEST_FROMCACHE) != 0; + file_with_hash = FALSE;
register_filter(mimefilter_test); } @@ -2531,6 +2537,8 @@ hres = IInternetProtocol_Read(protocol, buf, 2, &cb); ok(hres == S_OK, "Read failed: %08x\n", hres); ok(cb == 2, "cb=%u expected 2\n", cb); + buf[2] = 0; + ok(!memcmp(buf, file_with_hash ? "XX" : "<H", 2), "Unexpected data %s\n", buf); hres = IInternetProtocol_Read(protocol, buf, sizeof(buf), &cb); ok(hres == S_FALSE, "Read failed: %08x\n", hres); hres = IInternetProtocol_Read(protocol, buf, sizeof(buf), &cb); @@ -2565,7 +2573,10 @@ hres = IInternetProtocol_UnlockRequest(protocol); ok(hres == S_OK, "UnlockRequest failed: %08x\n", hres); hres = IInternetProtocol_Read(protocol, buf, 2, &cb); - ok(hres == S_OK, "Read failed: %08x\n", hres); + if(file_with_hash) /* FIXME: An effect of UnlockRequest call? */ + todo_wine ok(hres == S_OK, "Read failed: %08x\n", hres); + else + ok(hres == S_OK, "Read failed: %08x\n", hres); hres = IInternetProtocol_Terminate(protocol, 0); ok(hres == S_OK, "Terminate failed: %08x\n", hres); } @@ -2718,6 +2729,7 @@ static const WCHAR wszFile3[] = {'f','i','l','e',':','/','/','/',0}; static const WCHAR wszFile4[] = {'f','i','l','e',':','\','\',0}; static const char html_doc[] = "<HTML></HTML>"; + static const WCHAR fragmentW[] = {'#','f','r','a','g',0};
trace("Testing file protocol...\n"); init_test(FILE_TEST, 0); @@ -2791,7 +2803,25 @@ buf[sizeof(wszFile4)/sizeof(WCHAR)] = '|'; test_file_protocol_url(buf);
+ /* Fragment part of URL is skipped if the file doesn't exist. */ + lstrcatW(buf, fragmentW); + test_file_protocol_url(buf); + + /* Fragment part is considered a part of the file name, if the file exsists. */ + len = lstrlenW(file_name_buf); + lstrcpyW(file_name_buf+len, fragmentW); + file = CreateFileW(wszIndexHtml, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, + FILE_ATTRIBUTE_NORMAL, NULL); + ok(file != INVALID_HANDLE_VALUE, "CreateFile failed\n"); + WriteFile(file, "XXX", 3, &size, NULL); + CloseHandle(file); + file_name_buf[len] = 0; + + file_with_hash = TRUE; + test_file_protocol_url(buf); + DeleteFileW(wszIndexHtml); + DeleteFileW(file_name_buf);
bindf = 0; test_file_protocol_fail();
Modified: trunk/rostests/winetests/urlmon/url.c URL: http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/urlmon/url.c?rev... ============================================================================== --- trunk/rostests/winetests/urlmon/url.c [iso-8859-1] (original) +++ trunk/rostests/winetests/urlmon/url.c [iso-8859-1] Wed Jul 22 00:37:31 2015 @@ -2572,6 +2572,7 @@ IHttpNegotiate *http_negotiate, *http_negotiate_serv; IHttpNegotiate2 *http_negotiate2, *http_negotiate2_serv; IAuthenticate *authenticate, *authenticate_serv; + IInternetBindInfo *bind_info; IInternetProtocol *protocol; BINDINFO bindinfo = {sizeof(bindinfo)}; BOOL ret = TRUE; @@ -2685,6 +2686,16 @@
IAuthenticate_Release(authenticate); IAuthenticate_Release(authenticate_serv); + + hres = IBindStatusCallback_QueryInterface(holder, &IID_IInternetBindInfo, (void**)&bind_info); + ok(hres == S_OK || broken(hres == E_NOINTERFACE /* win2k */), "Could not get IInternetBindInfo interface: %08x\n", hres); + + if(SUCCEEDED(hres)) { + hres = IInternetBindInfo_GetBindString(bind_info, BINDSTRING_USER_AGENT, &wstr, 1, &dw); + ok(hres == E_NOINTERFACE, "GetBindString(BINDSTRING_USER_AGENT) failed: %08x\n", hres); + + IInternetBindInfo_Release(bind_info); + }
SET_EXPECT(OnStopBinding); hres = IBindStatusCallback_OnStopBinding(holder, S_OK, NULL); @@ -3848,6 +3859,32 @@ IInternetSession_Release(session); }
+static BOOL can_do_https(void) +{ + HINTERNET ses, con, req; + BOOL ret; + + ses = InternetOpenA("winetest", INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0); + ok(ses != NULL, "InternetOpen failed\n"); + + con = InternetConnectA(ses, "test.winehq.org", INTERNET_DEFAULT_HTTPS_PORT, + NULL, NULL, INTERNET_SERVICE_HTTP, 0, 0); + ok(con != NULL, "InternetConnect failed\n"); + + req = HttpOpenRequestA(con, "GET", "/tests/hello.html", NULL, NULL, NULL, + INTERNET_FLAG_SECURE, 0); + ok(req != NULL, "HttpOpenRequest failed\n"); + + ret = HttpSendRequestA(req, NULL, 0, NULL, 0); + ok(ret || broken(GetLastError() == ERROR_INTERNET_CANNOT_CONNECT), + "request failed: %u\n", GetLastError()); + + InternetCloseHandle(req); + InternetCloseHandle(con); + InternetCloseHandle(ses); + return ret; +} + START_TEST(url) { HMODULE hurlmon; @@ -3927,25 +3964,34 @@ trace("file test (no callback)...\n"); test_BindToStorage(FILE_TEST, BINDTEST_NO_CALLBACK, TYMED_ISTREAM);
- 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); + 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); + + 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); + + trace("asynchronous https test (invalid CN, accept)\n"); + onsecurityproblem_hres = S_OK; + test_BindToStorage(HTTPS_TEST, BINDTEST_INVALID_CN, TYMED_ISTREAM); + + trace("asynchronous https test (invalid CN, dialog 2)\n"); + onsecurityproblem_hres = S_FALSE; + test_BindToStorage(HTTPS_TEST, BINDTEST_INVALID_CN, TYMED_ISTREAM); + invalid_cn_accepted = FALSE; + + trace("asynchronous https test...\n"); + test_BindToStorage(HTTPS_TEST, 0, TYMED_ISTREAM); + }else { + win_skip("Skipping https testt\n"); + }
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); - - trace("asynchronous https test (invalid CN, accept)\n"); - onsecurityproblem_hres = S_OK; - test_BindToStorage(HTTPS_TEST, BINDTEST_INVALID_CN, TYMED_ISTREAM); - - trace("asynchronous https test (invalid CN, dialog 2)\n"); - onsecurityproblem_hres = S_FALSE; - test_BindToStorage(HTTPS_TEST, BINDTEST_INVALID_CN, TYMED_ISTREAM); - invalid_cn_accepted = FALSE;
trace("winetest test (async switch)...\n"); test_BindToStorage(WINETEST_TEST, BINDTEST_EMULATE|BINDTEST_ASYNC_SWITCH, TYMED_ISTREAM); @@ -3999,9 +4045,6 @@
trace("winetest test (no callback)...\n"); test_BindToStorage(WINETEST_TEST, BINDTEST_EMULATE|BINDTEST_NO_CALLBACK|BINDTEST_USE_CACHE, TYMED_ISTREAM); - - trace("asynchronous https test...\n"); - test_BindToStorage(HTTPS_TEST, 0, TYMED_ISTREAM);
trace("emulated https test...\n"); test_BindToStorage(HTTPS_TEST, BINDTEST_EMULATE, TYMED_ISTREAM);