From: Piotr Caban piotr@codeweavers.com
--- dlls/wininet/tests/internet.c | 35 +++++++++++++++++++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-)
diff --git a/dlls/wininet/tests/internet.c b/dlls/wininet/tests/internet.c index fe47c10b78b..da47fcd9cac 100644 --- a/dlls/wininet/tests/internet.c +++ b/dlls/wininet/tests/internet.c @@ -1286,8 +1286,10 @@ static void test_Option_PerConnectionOption(void) BOOL ret; DWORD size = sizeof(INTERNET_PER_CONN_OPTION_LISTW); INTERNET_PER_CONN_OPTION_LISTW list = {size}; - INTERNET_PER_CONN_OPTIONW *orig_settings; + INTERNET_PER_CONN_OPTIONW *orig_settings, opt; static WCHAR proxy_srvW[] = {'p','r','o','x','y','.','e','x','a','m','p','l','e',0}; + DWORD proxy_flags; + HINTERNET session;
/* get the global IE proxy server info, to restore later */ list.dwOptionCount = 2; @@ -1301,6 +1303,22 @@ static void test_Option_PerConnectionOption(void) ok(ret == TRUE, "InternetQueryOption should've succeeded\n"); orig_settings = list.pOptions;
+ /* store process proxy settings */ + session = InternetOpenW(L"", INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0); + ok(session != NULL,"InternetOpen failed\n"); + + list.dwOptionCount = 1; + list.pOptions = &opt; + opt.dwOption = INTERNET_PER_CONN_FLAGS; + ret = InternetQueryOptionW(session, INTERNET_OPTION_PER_CONNECTION_OPTION, &list, &size); + ok(ret, "InternetQueryOption failed\n"); + proxy_flags = opt.Value.dwValue; + + /* disable process proxy */ + opt.Value.dwValue = PROXY_TYPE_DIRECT; + ret = InternetSetOptionW(session, INTERNET_OPTION_PER_CONNECTION_OPTION, &list, sizeof(list)); + ok(ret, "InternetSetOption failed\n"); + /* set the global IE proxy server */ list.dwOptionCount = 2; list.pOptions = HeapAlloc(GetProcessHeap(), 0, 2 * sizeof(INTERNET_PER_CONN_OPTIONW)); @@ -1341,8 +1359,14 @@ static void test_Option_PerConnectionOption(void) HeapFree(GetProcessHeap(), 0, list.pOptions[0].Value.pszValue); HeapFree(GetProcessHeap(), 0, list.pOptions);
- /* disable the proxy server */ + /* verify that process proxy was not changed */ list.dwOptionCount = 1; + list.pOptions = &opt; + ret = InternetQueryOptionW(session, INTERNET_OPTION_PER_CONNECTION_OPTION, &list, &size); + ok(ret, "InternetQueryOption failed\n"); + ok(opt.Value.dwValue == PROXY_TYPE_DIRECT, "process proxy flags: %lx\n", opt.Value.dwValue); + + /* disable the proxy server */ list.pOptions = HeapAlloc(GetProcessHeap(), 0, sizeof(INTERNET_PER_CONN_OPTIONW));
list.pOptions[0].dwOption = INTERNET_PER_CONN_FLAGS; @@ -1410,6 +1434,13 @@ static void test_Option_PerConnectionOption(void) ok(ret == TRUE, "InternetSetOption should've succeeded\n");
HeapFree(GetProcessHeap(), 0, list.pOptions); + + list.dwOptionCount = 1; + list.pOptions = &opt; + opt.Value.dwValue = proxy_flags; + ret = InternetSetOptionW(session, INTERNET_OPTION_PER_CONNECTION_OPTION, &list, sizeof(list)); + ok(ret, "InternetSetOption failed\n"); + InternetCloseHandle(session); }
static void test_Option_PerConnectionOptionA(void)