From 69b8c97c1d1cc1b13cdbe7a9f7a07ee382bdb775 Mon Sep 17 00:00:00 2001 From: Piotr Caban Date: Mon, 18 Nov 2013 09:58:13 +0100 Subject: [PATCH] wininet/tests: Fix urlcache tests on IE10. --- dlls/wininet/tests/urlcache.c | 59 ++++++++++++++++++++++++----------- 1 file changed, 40 insertions(+), 19 deletions(-) diff --git a/dlls/wininet/tests/urlcache.c b/dlls/wininet/tests/urlcache.c index b89682d8692..e093d4be92a 100644 --- a/dlls/wininet/tests/urlcache.c +++ b/dlls/wininet/tests/urlcache.c @@ -43,6 +43,7 @@ static BOOL (WINAPI *pUnlockUrlCacheEntryFileA)(LPCSTR,DWORD); static char filenameA[MAX_PATH + 1]; static char filenameA1[MAX_PATH + 1]; static BOOL old_ie = FALSE; +static BOOL ie10_cache = FALSE; static void check_cache_entry_infoA(const char *returnedfrom, INTERNET_CACHE_ENTRY_INFOA *lpCacheEntryInfo) { @@ -133,9 +134,9 @@ static void test_GetUrlCacheEntryInfoExA(void) SetLastError(0xdeadbeef); ret = GetUrlCacheEntryInfoExA(test_url, NULL, NULL, NULL, NULL, NULL, 0x200 /*GET_INSTALLED_ENTRY*/); - ok(!ret, "GetUrlCacheEntryInfoEx succeeded\n"); - ok(GetLastError() == ERROR_FILE_NOT_FOUND, - "GetUrlCacheEntryInfoEx should have set last error to ERROR_FILE_NOT_FOUND instead of %d\n", GetLastError()); + ok(ret == ie10_cache, "GetUrlCacheEntryInfoEx returned %x\n", ret); + if (!ret) ok(GetLastError() == ERROR_FILE_NOT_FOUND, + "GetUrlCacheEntryInfoEx should have set last error to ERROR_FILE_NOT_FOUND instead of %d\n", GetLastError()); /* Unicode version of function seems to ignore 0x200 flag */ ret = GetUrlCacheEntryInfoExW(test_urlW, NULL, NULL, NULL, NULL, NULL, 0x200 /*GET_INSTALLED_ENTRY*/); @@ -216,16 +217,16 @@ static void test_IsUrlCacheEntryExpiredA(void) * is NULL. */ ret = IsUrlCacheEntryExpiredA(NULL, 0, NULL); - ok(ret, "expected TRUE\n"); + ok(ret == !ie10_cache, "IsUrlCacheEntryExpiredA returned %x\n", ret); ft.dwLowDateTime = 0xdeadbeef; ft.dwHighDateTime = 0xbaadf00d; ret = IsUrlCacheEntryExpiredA(NULL, 0, &ft); - ok(ret, "expected TRUE\n"); + ok(ret == !ie10_cache, "IsUrlCacheEntryExpiredA returned %x\n", ret); ok(ft.dwLowDateTime == 0xdeadbeef && ft.dwHighDateTime == 0xbaadf00d, "expected time to be unchanged, got (%u,%u)\n", ft.dwLowDateTime, ft.dwHighDateTime); ret = IsUrlCacheEntryExpiredA(test_url, 0, NULL); - ok(ret, "expected TRUE\n"); + ok(ret == !ie10_cache, "IsUrlCacheEntryExpiredA returned %x\n", ret); /* The return value should indicate whether the URL is expired, * and the filetime indicates the last modified time, but a cache entry @@ -308,7 +309,7 @@ static void test_IsUrlCacheEntryExpiredA(void) ft.dwLowDateTime = 0xdeadbeef; ft.dwHighDateTime = 0xbaadf00d; ret = IsUrlCacheEntryExpiredA(uncached_url, 0, &ft); - ok(ret, "expected TRUE\n"); + ok(ret == !ie10_cache, "IsUrlCacheEntryExpiredA returned %x\n", ret); ok(!ft.dwLowDateTime && !ft.dwHighDateTime, "expected time (0,0), got (%u,%u)\n", ft.dwLowDateTime, ft.dwHighDateTime); @@ -469,7 +470,7 @@ static void test_urlcacheA(void) SetLastError(0xdeadbeef); ret = RetrieveUrlCacheEntryFileA(test_url1, NULL, &cbCacheEntryInfo, 0); ok(!ret, "RetrieveUrlCacheEntryFile should have failed\n"); - ok(GetLastError() == ERROR_INVALID_DATA, + ok(GetLastError() == ERROR_INVALID_DATA || GetLastError() == ERROR_INSUFFICIENT_BUFFER, "RetrieveUrlCacheEntryFile should have set last error to ERROR_INVALID_DATA instead of %d\n", GetLastError()); if (pUnlockUrlCacheEntryFileA) @@ -661,16 +662,16 @@ static void test_urlcacheA(void) ret = CommitUrlCacheEntryA(test_url, NULL, filetime_zero, filetime_zero, STICKY_CACHE_ENTRY, (LPBYTE)ok_header, strlen(ok_header), "html", NULL); - ok(!ret, "expected failure\n"); - ok(GetLastError() == ERROR_INVALID_PARAMETER, - "expected ERROR_INVALID_PARAMETER, got %d\n", GetLastError()); + ok(ret == ie10_cache, "CommitUrlCacheEntryA returned %x\n", ret); + if (!ret) ok(GetLastError() == ERROR_INVALID_PARAMETER, + "expected ERROR_INVALID_PARAMETER, got %d\n", GetLastError()); SetLastError(0xdeadbeef); ret = CommitUrlCacheEntryA(test_url, NULL, filetime_zero, filetime_zero, NORMAL_CACHE_ENTRY|STICKY_CACHE_ENTRY, (LPBYTE)ok_header, strlen(ok_header), "html", NULL); - ok(!ret, "expected failure\n"); - ok(GetLastError() == ERROR_INVALID_PARAMETER, - "expected ERROR_INVALID_PARAMETER, got %d\n", GetLastError()); + ok(ret == ie10_cache, "CommitUrlCacheEntryA returned %x\n", ret); + if (!ret) ok(GetLastError() == ERROR_INVALID_PARAMETER, + "expected ERROR_INVALID_PARAMETER, got %d\n", GetLastError()); ret = CreateUrlCacheEntryA(test_url, 0, "html", filenameA, 0); ok(ret, "CreateUrlCacheEntry failed with error %d\n", GetLastError()); @@ -757,9 +758,8 @@ static void test_urlcacheA(void) ret = GetUrlCacheEntryInfoA(test_url, lpCacheEntryInfo, &cbCacheEntryInfo); ok(ret, "GetUrlCacheEntryInfo failed with error %d\n", GetLastError()); - ok(U(*lpCacheEntryInfo).dwExemptDelta == 8600, - "expected dwExemptDelta 8600, got %d\n", - U(*lpCacheEntryInfo).dwExemptDelta); + ok(U(*lpCacheEntryInfo).dwExemptDelta == 8600 || (ie10_cache && U(*lpCacheEntryInfo).dwExemptDelta == 86400), + "expected dwExemptDelta 8600, got %d\n", U(*lpCacheEntryInfo).dwExemptDelta); HeapFree(GetProcessHeap(), 0, lpCacheEntryInfo); @@ -862,11 +862,24 @@ static void test_urlcacheW(void) return; } + if(ie10_cache) { + if(!MultiByteToWideChar(CP_ACP, 0, urls[6].encoded_url, -1, + urls[6].url, sizeof(urls[6].url)/sizeof(WCHAR))) + urls[6].url[0] = 0; + + trace("converted url in test 6: %s\n", wine_dbgstr_w(urls[6].url)); + } + for(i=0; ilpszFileExtension, "entry_infoW->lpszFileExtension != NULL\n"); + ok(!entry_infoW->lpszFileExtension || (ie10_cache && !entry_infoW->lpszFileExtension[0]), + "%d) entry_infoW->lpszFileExtension = %s\n", + i, wine_dbgstr_w(entry_infoW->lpszFileExtension)); }else { MultiByteToWideChar(CP_ACP, 0, entry_infoA->lpszFileExtension, -1, bufW, MAX_PATH); - ok(!lstrcmpW(entry_infoW->lpszFileExtension, bufW), + ok(!lstrcmpW(entry_infoW->lpszFileExtension, bufW) || + (ie10_cache && !lstrcmpW(entry_infoW->lpszFileExtension, urls[i].extension)), "%d) entry_infoW->lpszFileExtension = %s, expected %s\n", i, wine_dbgstr_w(entry_infoW->lpszFileExtension), wine_dbgstr_w(bufW)); } @@ -1030,6 +1046,11 @@ START_TEST(urlcache) if(!GetProcAddress(hdll, "InternetGetSecurityInfoByURL")) /* < IE7 */ old_ie = TRUE; + if(GetProcAddress(hdll, "CreateUrlCacheEntryExW")) { + trace("Running tests on IE10 or newer\n"); + ie10_cache = TRUE; + } + pDeleteUrlCacheEntryA = (void*)GetProcAddress(hdll, "DeleteUrlCacheEntryA"); pUnlockUrlCacheEntryFileA = (void*)GetProcAddress(hdll, "UnlockUrlCacheEntryFileA"); test_urlcacheA();