Module: wine Branch: master Commit: 2d42f291c81ee400f0e34b054ca70402563da404 URL: http://source.winehq.org/git/wine.git/?a=commit;h=2d42f291c81ee400f0e34b054c...
Author: Hans Leidekker hans@codeweavers.com Date: Thu Jan 29 16:59:33 2009 +0100
wininet: Implement IsDomainLegalCookieDomainW.
---
dlls/wininet/cookie.c | 25 ++++++++ dlls/wininet/tests/internet.c | 131 +++++++++++++++++++++++++++++++++++++++++ dlls/wininet/wininet.spec | 2 +- 3 files changed, 157 insertions(+), 1 deletions(-)
diff --git a/dlls/wininet/cookie.c b/dlls/wininet/cookie.c index 1ee8809..c6352c8 100644 --- a/dlls/wininet/cookie.c +++ b/dlls/wininet/cookie.c @@ -696,3 +696,28 @@ BOOL WINAPI InternetSetPerSiteCookieDecisionW( LPCWSTR pchHostName, DWORD dwDeci FIXME("(%s, 0x%08x) stub\n", debugstr_w(pchHostName), dwDecision); return FALSE; } + +/*********************************************************************** + * IsDomainLegalCookieDomainW (WININET.@) + */ +BOOL WINAPI IsDomainLegalCookieDomainW( LPCWSTR s1, LPCWSTR s2 ) +{ + const WCHAR *p; + + FIXME("(%s, %s)\n", debugstr_w(s1), debugstr_w(s2)); + + if (!s1 || !s2) + { + SetLastError(ERROR_INVALID_PARAMETER); + return FALSE; + } + if (s1[0] == '.' || !s1[0] || s2[0] == '.' || !s2[0]) + { + SetLastError(ERROR_INVALID_NAME); + return FALSE; + } + if (!(p = strchrW(s2, '.'))) return FALSE; + if (strchrW(p + 1, '.') && !strcmpW(p + 1, s1)) return TRUE; + else if (!strcmpW(s1, s2)) return TRUE; + return FALSE; +} diff --git a/dlls/wininet/tests/internet.c b/dlls/wininet/tests/internet.c index 5fbfd76..13a5f5c 100644 --- a/dlls/wininet/tests/internet.c +++ b/dlls/wininet/tests/internet.c @@ -31,6 +31,7 @@ static BOOL (WINAPI *pInternetTimeFromSystemTimeA)(CONST SYSTEMTIME *,DWORD ,LPS static BOOL (WINAPI *pInternetTimeFromSystemTimeW)(CONST SYSTEMTIME *,DWORD ,LPWSTR ,DWORD); static BOOL (WINAPI *pInternetTimeToSystemTimeA)(LPCSTR ,SYSTEMTIME *,DWORD); static BOOL (WINAPI *pInternetTimeToSystemTimeW)(LPCWSTR ,SYSTEMTIME *,DWORD); +static BOOL (WINAPI *pIsDomainLegalCookieDomainW)(LPCWSTR, LPCWSTR);
/* ############################### */
@@ -526,6 +527,131 @@ static void InternetTimeToSystemTimeW_test(void) ok( ret, "InternetTimeToSystemTimeW failed (%u)\n", GetLastError() ); }
+static void test_IsDomainLegalCookieDomainW(void) +{ + BOOL ret; + DWORD error; + static const WCHAR empty[] = {0}; + static const WCHAR dot[] = {'.',0}; + static const WCHAR uk[] = {'u','k',0}; + static const WCHAR com[] = {'c','o','m',0}; + static const WCHAR dot_com[] = {'.','c','o','m',0}; + static const WCHAR gmail_com[] = {'g','m','a','i','l','.','c','o','m',0}; + static const WCHAR dot_gmail_com[] = {'.','g','m','a','i','l','.','c','o','m',0}; + static const WCHAR mail_gmail_com[] = {'m','a','i','l','.','g','m','a','i','l','.','c','o','m',0}; + static const WCHAR gmail_co_uk[] = {'g','m','a','i','l','.','c','o','.','u','k',0}; + static const WCHAR co_uk[] = {'c','o','.','u','k',0}; + static const WCHAR dot_co_uk[] = {'.','c','o','.','u','k',0}; + + SetLastError(0xdeadbeef); + ret = pIsDomainLegalCookieDomainW(NULL, NULL); + error = GetLastError(); + ok(!ret, "IsDomainLegalCookieDomainW succeeded\n"); + ok(error == ERROR_INVALID_PARAMETER, "got %u expected ERROR_INVALID_PARAMETER\n", error); + + SetLastError(0xdeadbeef); + ret = pIsDomainLegalCookieDomainW(com, NULL); + error = GetLastError(); + ok(!ret, "IsDomainLegalCookieDomainW succeeded\n"); + ok(error == ERROR_INVALID_PARAMETER, "got %u expected ERROR_INVALID_PARAMETER\n", error); + + SetLastError(0xdeadbeef); + ret = pIsDomainLegalCookieDomainW(NULL, gmail_com); + error = GetLastError(); + ok(!ret, "IsDomainLegalCookieDomainW succeeded\n"); + ok(error == ERROR_INVALID_PARAMETER, "got %u expected ERROR_INVALID_PARAMETER\n", error); + + SetLastError(0xdeadbeef); + ret = pIsDomainLegalCookieDomainW(empty, gmail_com); + error = GetLastError(); + ok(!ret, "IsDomainLegalCookieDomainW succeeded\n"); + ok(error == ERROR_INVALID_NAME, "got %u expected ERROR_INVALID_NAME\n", error); + + SetLastError(0xdeadbeef); + ret = pIsDomainLegalCookieDomainW(com, empty); + error = GetLastError(); + ok(!ret, "IsDomainLegalCookieDomainW succeeded\n"); + ok(error == ERROR_INVALID_NAME, "got %u expected ERROR_INVALID_NAME\n", error); + + SetLastError(0xdeadbeef); + ret = pIsDomainLegalCookieDomainW(gmail_com, dot); + error = GetLastError(); + ok(!ret, "IsDomainLegalCookieDomainW succeeded\n"); + ok(error == ERROR_INVALID_NAME, "got %u expected ERROR_INVALID_NAME\n", error); + + SetLastError(0xdeadbeef); + ret = pIsDomainLegalCookieDomainW(dot, gmail_com); + error = GetLastError(); + ok(!ret, "IsDomainLegalCookieDomainW succeeded\n"); + ok(error == ERROR_INVALID_NAME, "got %u expected ERROR_INVALID_NAME\n", error); + + SetLastError(0xdeadbeef); + ret = pIsDomainLegalCookieDomainW(com, com); + error = GetLastError(); + ok(!ret, "IsDomainLegalCookieDomainW succeeded\n"); + ok(error == 0xdeadbeef, "got %u expected 0xdeadbeef\n", error); + + SetLastError(0xdeadbeef); + ret = pIsDomainLegalCookieDomainW(com, dot_com); + error = GetLastError(); + ok(!ret, "IsDomainLegalCookieDomainW succeeded\n"); + ok(error == ERROR_INVALID_NAME, "got %u expected ERROR_INVALID_NAME\n", error); + + SetLastError(0xdeadbeef); + ret = pIsDomainLegalCookieDomainW(dot_com, com); + error = GetLastError(); + ok(!ret, "IsDomainLegalCookieDomainW succeeded\n"); + ok(error == ERROR_INVALID_NAME, "got %u expected ERROR_INVALID_NAME\n", error); + + SetLastError(0xdeadbeef); + ret = pIsDomainLegalCookieDomainW(com, gmail_com); + error = GetLastError(); + ok(!ret, "IsDomainLegalCookieDomainW succeeded\n"); + ok(error == 0xdeadbeef, "got %u expected 0xdeadbeef\n", error); + + ret = pIsDomainLegalCookieDomainW(gmail_com, gmail_com); + ok(ret, "IsDomainLegalCookieDomainW failed\n"); + + SetLastError(0xdeadbeef); + ret = pIsDomainLegalCookieDomainW(gmail_co_uk, co_uk); + error = GetLastError(); + ok(!ret, "IsDomainLegalCookieDomainW failed\n"); + ok(error == 0xdeadbeef, "got %u expected 0xdeadbeef\n", error); + + ret = pIsDomainLegalCookieDomainW(uk, co_uk); + ok(!ret, "IsDomainLegalCookieDomainW succeeded\n"); + + ret = pIsDomainLegalCookieDomainW(gmail_co_uk, dot_co_uk); + ok(!ret, "IsDomainLegalCookieDomainW succeeded\n"); + + ret = pIsDomainLegalCookieDomainW(gmail_co_uk, gmail_co_uk); + ok(ret, "IsDomainLegalCookieDomainW failed\n"); + + ret = pIsDomainLegalCookieDomainW(gmail_com, com); + ok(!ret, "IsDomainLegalCookieDomainW succeeded\n"); + + SetLastError(0xdeadbeef); + ret = pIsDomainLegalCookieDomainW(dot_gmail_com, mail_gmail_com); + error = GetLastError(); + ok(!ret, "IsDomainLegalCookieDomainW failed\n"); + ok(error == ERROR_INVALID_NAME, "got %u expected ERROR_INVALID_NAME\n", error); + + ret = pIsDomainLegalCookieDomainW(gmail_com, mail_gmail_com); + ok(ret, "IsDomainLegalCookieDomainW failed\n"); + + ret = pIsDomainLegalCookieDomainW(mail_gmail_com, gmail_com); + ok(!ret, "IsDomainLegalCookieDomainW succeeded\n"); + + ret = pIsDomainLegalCookieDomainW(mail_gmail_com, com); + ok(!ret, "IsDomainLegalCookieDomainW succeeded\n"); + + ret = pIsDomainLegalCookieDomainW(dot_gmail_com, mail_gmail_com); + ok(!ret, "IsDomainLegalCookieDomainW succeeded\n"); + + ret = pIsDomainLegalCookieDomainW(mail_gmail_com, dot_gmail_com); + ok(!ret, "IsDomainLegalCookieDomainW succeeded\n"); +} + /* ############################### */
START_TEST(internet) @@ -536,6 +662,7 @@ START_TEST(internet) pInternetTimeFromSystemTimeW = (void*)GetProcAddress(hdll, "InternetTimeFromSystemTimeW"); pInternetTimeToSystemTimeA = (void*)GetProcAddress(hdll, "InternetTimeToSystemTimeA"); pInternetTimeToSystemTimeW = (void*)GetProcAddress(hdll, "InternetTimeToSystemTimeW"); + pIsDomainLegalCookieDomainW = (void*)GetProcAddress(hdll, (LPCSTR)117);
test_InternetCanonicalizeUrlA(); test_InternetQueryOptionA(); @@ -552,4 +679,8 @@ START_TEST(internet) InternetTimeToSystemTimeA_test(); InternetTimeToSystemTimeW_test(); } + if (!pIsDomainLegalCookieDomainW) + skip("skipping IsDomainLegalCookieDomainW tests\n"); + else + test_IsDomainLegalCookieDomainW(); } diff --git a/dlls/wininet/wininet.spec b/dlls/wininet/wininet.spec index f5b616e..8db462c 100644 --- a/dlls/wininet/wininet.spec +++ b/dlls/wininet/wininet.spec @@ -9,7 +9,7 @@ 111 stub -noname ExportCookieFileW 112 stub -noname IsProfilesEnabled 116 stub -noname IsDomainlegalCookieDomainA -117 stub -noname IsDomainLegalCookieDomainW +117 stdcall -noname IsDomainLegalCookieDomainW(wstr wstr) 118 stub -noname FindP3PPolicySymbol 120 stub -noname MapResourceToPolicy 121 stub -noname GetP3PPolicy