Module: wine Branch: master Commit: b0ad0b9c0bb7cb1c413744cc720df3f03467603b URL: http://source.winehq.org/git/wine.git/?a=commit;h=b0ad0b9c0bb7cb1c413744cc72...
Author: Andrew Eikum aeikum@codeweavers.com Date: Wed Jan 20 14:49:13 2010 -0600
wininet: Implement PER_CONN_FLAGS option.
---
dlls/wininet/internet.c | 13 ++++++++++++ dlls/wininet/tests/internet.c | 42 +++++++++++++++++++++++++++------------- 2 files changed, 41 insertions(+), 14 deletions(-)
diff --git a/dlls/wininet/internet.c b/dlls/wininet/internet.c index 842168d..78a0c4f 100644 --- a/dlls/wininet/internet.c +++ b/dlls/wininet/internet.c @@ -2518,6 +2518,19 @@ BOOL WINAPI InternetSetOptionW(HINTERNET hInternet, DWORD dwOption, break;
case INTERNET_PER_CONN_FLAGS: + switch(option->Value.dwValue) { + case PROXY_TYPE_PROXY: + pi.dwProxyEnabled = 1; + break; + case PROXY_TYPE_DIRECT: + pi.dwProxyEnabled = 0; + break; + default: + FIXME("Unhandled flag: %d\n", option->Value.dwValue); + break; + } + break; + case INTERNET_PER_CONN_AUTOCONFIG_URL: case INTERNET_PER_CONN_AUTODISCOVERY_FLAGS: case INTERNET_PER_CONN_AUTOCONFIG_SECONDARY_URL: diff --git a/dlls/wininet/tests/internet.c b/dlls/wininet/tests/internet.c index 2dc1fd9..8fd251a 100644 --- a/dlls/wininet/tests/internet.c +++ b/dlls/wininet/tests/internet.c @@ -857,10 +857,11 @@ static void test_Option_PerConnectionOption(void) static WCHAR proxy_srvW[] = {'p','r','o','x','y','.','e','x','a','m','p','l','e',0};
/* get the global IE proxy server info, to restore later */ - list.dwOptionCount = 1; - list.pOptions = HeapAlloc(GetProcessHeap(), 0, sizeof(INTERNET_PER_CONN_OPTIONW)); + list.dwOptionCount = 2; + list.pOptions = HeapAlloc(GetProcessHeap(), 0, 2 * sizeof(INTERNET_PER_CONN_OPTIONW));
list.pOptions[0].dwOption = INTERNET_PER_CONN_PROXY_SERVER; + list.pOptions[1].dwOption = INTERNET_PER_CONN_FLAGS;
ret = InternetQueryOptionW(NULL, INTERNET_OPTION_PER_CONNECTION_OPTION, &list, &size); @@ -868,11 +869,13 @@ static void test_Option_PerConnectionOption(void) orig_settings = list.pOptions;
/* set the global IE proxy server */ - list.dwOptionCount = 1; - list.pOptions = HeapAlloc(GetProcessHeap(), 0, sizeof(INTERNET_PER_CONN_OPTIONW)); + list.dwOptionCount = 2; + list.pOptions = HeapAlloc(GetProcessHeap(), 0, 2 * sizeof(INTERNET_PER_CONN_OPTIONW));
list.pOptions[0].dwOption = INTERNET_PER_CONN_PROXY_SERVER; list.pOptions[0].Value.pszValue = proxy_srvW; + list.pOptions[1].dwOption = INTERNET_PER_CONN_FLAGS; + list.pOptions[1].Value.dwValue = PROXY_TYPE_PROXY;
ret = InternetSetOptionW(NULL, INTERNET_OPTION_PER_CONNECTION_OPTION, &list, size); @@ -881,11 +884,12 @@ static void test_Option_PerConnectionOption(void) HeapFree(GetProcessHeap(), 0, list.pOptions);
/* get & verify the global IE proxy server */ - list.dwOptionCount = 1; + list.dwOptionCount = 2; list.dwOptionError = 0; - list.pOptions = HeapAlloc(GetProcessHeap(), 0, sizeof(INTERNET_PER_CONN_OPTIONW)); + list.pOptions = HeapAlloc(GetProcessHeap(), 0, 2 * sizeof(INTERNET_PER_CONN_OPTIONW));
list.pOptions[0].dwOption = INTERNET_PER_CONN_PROXY_SERVER; + list.pOptions[1].dwOption = INTERNET_PER_CONN_FLAGS;
ret = InternetQueryOptionW(NULL, INTERNET_OPTION_PER_CONNECTION_OPTION, &list, &size); @@ -893,11 +897,14 @@ static void test_Option_PerConnectionOption(void) ok(!lstrcmpW(list.pOptions[0].Value.pszValue, proxy_srvW), "Retrieved proxy server should've been %s, was: %s\n", wine_dbgstr_w(proxy_srvW), wine_dbgstr_w(list.pOptions[0].Value.pszValue)); + ok(list.pOptions[1].Value.dwValue == PROXY_TYPE_PROXY, + "Retrieved flags should've been PROXY_TYPE_PROXY, was: %d\n", + list.pOptions[1].Value.dwValue);
HeapFree(GetProcessHeap(), 0, list.pOptions);
/* restore original settings */ - list.dwOptionCount = 1; + list.dwOptionCount = 2; list.pOptions = orig_settings;
ret = InternetSetOptionW(NULL, INTERNET_OPTION_PER_CONNECTION_OPTION, @@ -916,10 +923,11 @@ static void test_Option_PerConnectionOptionA(void) char proxy_srv[] = "proxy.example";
/* get the global IE proxy server info, to restore later */ - list.dwOptionCount = 1; - list.pOptions = HeapAlloc(GetProcessHeap(), 0, sizeof(INTERNET_PER_CONN_OPTIONA)); + list.dwOptionCount = 2; + list.pOptions = HeapAlloc(GetProcessHeap(), 0, 2 * sizeof(INTERNET_PER_CONN_OPTIONA));
list.pOptions[0].dwOption = INTERNET_PER_CONN_PROXY_SERVER; + list.pOptions[1].dwOption = INTERNET_PER_CONN_FLAGS;
ret = InternetQueryOptionA(NULL, INTERNET_OPTION_PER_CONNECTION_OPTION, &list, &size); @@ -927,11 +935,13 @@ static void test_Option_PerConnectionOptionA(void) orig_settings = list.pOptions;
/* set the global IE proxy server */ - list.dwOptionCount = 1; - list.pOptions = HeapAlloc(GetProcessHeap(), 0, sizeof(INTERNET_PER_CONN_OPTIONA)); + list.dwOptionCount = 2; + list.pOptions = HeapAlloc(GetProcessHeap(), 0, 2 * sizeof(INTERNET_PER_CONN_OPTIONA));
list.pOptions[0].dwOption = INTERNET_PER_CONN_PROXY_SERVER; list.pOptions[0].Value.pszValue = proxy_srv; + list.pOptions[1].dwOption = INTERNET_PER_CONN_FLAGS; + list.pOptions[1].Value.dwValue = PROXY_TYPE_PROXY;
ret = InternetSetOptionA(NULL, INTERNET_OPTION_PER_CONNECTION_OPTION, &list, size); @@ -940,11 +950,12 @@ static void test_Option_PerConnectionOptionA(void) HeapFree(GetProcessHeap(), 0, list.pOptions);
/* get & verify the global IE proxy server */ - list.dwOptionCount = 1; + list.dwOptionCount = 2; list.dwOptionError = 0; - list.pOptions = HeapAlloc(GetProcessHeap(), 0, sizeof(INTERNET_PER_CONN_OPTIONA)); + list.pOptions = HeapAlloc(GetProcessHeap(), 0, 2 * sizeof(INTERNET_PER_CONN_OPTIONA));
list.pOptions[0].dwOption = INTERNET_PER_CONN_PROXY_SERVER; + list.pOptions[1].dwOption = INTERNET_PER_CONN_FLAGS;
ret = InternetQueryOptionA(NULL, INTERNET_OPTION_PER_CONNECTION_OPTION, &list, &size); @@ -952,11 +963,14 @@ static void test_Option_PerConnectionOptionA(void) ok(!lstrcmpA(list.pOptions[0].Value.pszValue, "proxy.example"), "Retrieved proxy server should've been "%s", was: "%s"\n", proxy_srv, list.pOptions[0].Value.pszValue); + ok(list.pOptions[1].Value.dwValue == PROXY_TYPE_PROXY, + "Retrieved flags should've been PROXY_TYPE_PROXY, was: %d\n", + list.pOptions[1].Value.dwValue);
HeapFree(GetProcessHeap(), 0, list.pOptions);
/* restore original settings */ - list.dwOptionCount = 1; + list.dwOptionCount = 2; list.pOptions = orig_settings;
ret = InternetSetOptionA(NULL, INTERNET_OPTION_PER_CONNECTION_OPTION,