ReactOS 0.4.16-dev-401-g45b008d
internet.c
Go to the documentation of this file.
1/*
2 * Wininet - internet tests
3 *
4 * Copyright 2005 Vijay Kiran Kamuju
5 *
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
10 *
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
15 *
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
19 */
20
21#include <stdarg.h>
22#include <stdio.h>
23#include <string.h>
24#include "windef.h"
25#include "winbase.h"
26#include "winuser.h"
27#include "wininet.h"
28#include "winineti.h"
29#include "winerror.h"
30#include "winreg.h"
31
32#include "wine/test.h"
33
34static BOOL (WINAPI *pCreateUrlCacheContainerA)(DWORD, DWORD, DWORD, DWORD,
36static BOOL (WINAPI *pCreateUrlCacheContainerW)(DWORD, DWORD, DWORD, DWORD,
38static BOOL (WINAPI *pInternetTimeFromSystemTimeA)(const SYSTEMTIME *, DWORD, LPSTR, DWORD);
39static BOOL (WINAPI *pInternetTimeFromSystemTimeW)(const SYSTEMTIME *, DWORD, LPWSTR, DWORD);
40static BOOL (WINAPI *pInternetTimeToSystemTimeA)(LPCSTR ,SYSTEMTIME *,DWORD);
41static BOOL (WINAPI *pInternetTimeToSystemTimeW)(LPCWSTR ,SYSTEMTIME *,DWORD);
42static BOOL (WINAPI *pIsDomainLegalCookieDomainW)(LPCWSTR, LPCWSTR);
43static DWORD (WINAPI *pPrivacyGetZonePreferenceW)(DWORD, DWORD, LPDWORD, LPWSTR, LPDWORD);
44static DWORD (WINAPI *pPrivacySetZonePreferenceW)(DWORD, DWORD, DWORD, LPCWSTR);
45static BOOL (WINAPI *pInternetGetCookieExA)(LPCSTR,LPCSTR,LPSTR,LPDWORD,DWORD,LPVOID);
46static BOOL (WINAPI *pInternetGetCookieExW)(LPCWSTR,LPCWSTR,LPWSTR,LPDWORD,DWORD,LPVOID);
47static BOOL (WINAPI *pInternetGetConnectedStateExA)(LPDWORD,LPSTR,DWORD,DWORD);
48static BOOL (WINAPI *pInternetGetConnectedStateExW)(LPDWORD,LPWSTR,DWORD,DWORD);
49
50/* ############################### */
51
53{
54 CHAR buffer[256];
55 LPCSTR url;
56 DWORD urllen;
58 DWORD res;
59
60 /* Acrobat Updater 5 calls this for Adobe Reader 8.1 */
61 url = "http://swupmf.adobe.com/manifest/50/win/AdobeUpdater.upd";
62 urllen = lstrlenA(url);
63
64 memset(buffer, '#', sizeof(buffer)-1);
65 buffer[sizeof(buffer)-1] = '\0';
66 dwSize = 1; /* Acrobat Updater use this size */
67 SetLastError(0xdeadbeef);
69 ok( !res && (GetLastError() == ERROR_INSUFFICIENT_BUFFER) && (dwSize == (urllen+1)),
70 "got %u and %u with size %u for '%s' (%d)\n",
72
73
74 /* buffer has no space for the terminating '\0' */
75 memset(buffer, '#', sizeof(buffer)-1);
76 buffer[sizeof(buffer)-1] = '\0';
77 dwSize = urllen;
78 SetLastError(0xdeadbeef);
80 /* dwSize is nr. of needed bytes with the terminating '\0' */
81 ok( !res && (GetLastError() == ERROR_INSUFFICIENT_BUFFER) && (dwSize == (urllen+1)),
82 "got %u and %u with size %u for '%s' (%d)\n",
84
85 /* buffer has the required size */
86 memset(buffer, '#', sizeof(buffer)-1);
87 buffer[sizeof(buffer)-1] = '\0';
88 dwSize = urllen+1;
89 SetLastError(0xdeadbeef);
91 /* dwSize is nr. of copied bytes without the terminating '\0' */
92 ok( res && (dwSize == urllen) && (lstrcmpA(url, buffer) == 0),
93 "got %u and %u with size %u for '%s' (%d)\n",
95
96 memset(buffer, '#', sizeof(buffer)-1);
97 buffer[sizeof(buffer)-1] = '\0';
98 dwSize = sizeof(buffer);
99 SetLastError(0xdeadbeef);
100 res = InternetCanonicalizeUrlA("file:///C:/Program%20Files/Atmel/AVR%20Tools/STK500/STK500.xml", buffer, &dwSize, ICU_DECODE | ICU_NO_ENCODE);
101 ok(res, "InternetCanonicalizeUrlA failed %u\n", GetLastError());
102 ok(dwSize == lstrlenA(buffer), "got %d expected %d\n", dwSize, lstrlenA(buffer));
103 ok(!lstrcmpA("file://C:\\Program Files\\Atmel\\AVR Tools\\STK500\\STK500.xml", buffer),
104 "got %s expected 'file://C:\\Program Files\\Atmel\\AVR Tools\\STK500\\STK500.xml'\n", buffer);
105
106 /* buffer is larger as the required size */
107 memset(buffer, '#', sizeof(buffer)-1);
108 buffer[sizeof(buffer)-1] = '\0';
109 dwSize = urllen+2;
110 SetLastError(0xdeadbeef);
112 /* dwSize is nr. of copied bytes without the terminating '\0' */
113 ok( res && (dwSize == urllen) && (lstrcmpA(url, buffer) == 0),
114 "got %u and %u with size %u for '%s' (%d)\n",
116
117
118 /* check NULL pointers */
119 memset(buffer, '#', urllen + 4);
120 buffer[urllen + 4] = '\0';
121 dwSize = urllen+1;
122 SetLastError(0xdeadbeef);
125 "got %u and %u with size %u for '%s' (%d)\n",
127
128 memset(buffer, '#', urllen + 4);
129 buffer[urllen + 4] = '\0';
130 dwSize = urllen+1;
131 SetLastError(0xdeadbeef);
134 "got %u and %u with size %u for '%s' (%d)\n",
136
137 memset(buffer, '#', urllen + 4);
138 buffer[urllen + 4] = '\0';
139 dwSize = urllen+1;
140 SetLastError(0xdeadbeef);
143 "got %u and %u with size %u for '%s' (%d)\n",
145
146 /* test with trailing space */
147 dwSize = 256;
148 res = InternetCanonicalizeUrlA("http://www.winehq.org/index.php?x= ", buffer, &dwSize, ICU_BROWSER_MODE);
149 ok(res == 1, "InternetCanonicalizeUrlA failed\n");
150 ok(!strcmp(buffer, "http://www.winehq.org/index.php?x="), "Trailing space should have been stripped even in ICU_BROWSER_MODE (%s)\n", buffer);
151
152 res = InternetSetOptionA(NULL, 0xdeadbeef, buffer, sizeof(buffer));
153 ok(!res, "InternetSetOptionA succeeded\n");
155 "InternetSetOptionA failed %u, expected ERROR_INTERNET_INVALID_OPTION\n", GetLastError());
156}
157
158/* ############################### */
159
161{
162 HINTERNET hinet,hurl;
163 DWORD len, val;
164 DWORD err;
165 static const char useragent[] = {"Wininet Test"};
166 char *buffer;
167 int retval;
168 BOOL res;
169
170 SetLastError(0xdeadbeef);
171 len = 0xdeadbeef;
173 ok(!retval && GetLastError() == ERROR_INSUFFICIENT_BUFFER, "Got wrong error %x(%u)\n", retval, GetLastError());
174 ok(len >= sizeof(INTERNET_PROXY_INFOA) && len != 0xdeadbeef,"len = %u\n", len);
175
176 hinet = InternetOpenA(useragent,INTERNET_OPEN_TYPE_DIRECT,NULL,NULL, 0);
177 ok((hinet != 0x0),"InternetOpen Failed\n");
178
179 SetLastError(0xdeadbeef);
182 ok(retval == 0,"Got wrong return value %d\n",retval);
183 ok(err == ERROR_INTERNET_INCORRECT_HANDLE_TYPE, "Got wrong error code%d\n",err);
184
185 SetLastError(0xdeadbeef);
186 len=strlen(useragent)+1;
189 ok(len == strlen(useragent)+1,"Got wrong user agent length %d instead of %d\n",len,lstrlenA(useragent));
190 ok(retval == 0,"Got wrong return value %d\n",retval);
191 ok(err == ERROR_INSUFFICIENT_BUFFER, "Got wrong error code %d\n",err);
192
193 len=strlen(useragent)+1;
196 ok(retval == 1,"Got wrong return value %d\n",retval);
197 if (retval)
198 {
199 ok(!strcmp(useragent,buffer),"Got wrong user agent string %s instead of %s\n",buffer,useragent);
200 ok(len == strlen(useragent),"Got wrong user agent length %d instead of %d\n",len,lstrlenA(useragent));
201 }
203
204 SetLastError(0xdeadbeef);
205 len=0;
209 ok(len == strlen(useragent) + 1,"Got wrong user agent length %d instead of %d\n", len, lstrlenA(useragent) + 1);
210 ok(!retval, "Got wrong return value %d\n", retval);
211 ok(err == ERROR_INSUFFICIENT_BUFFER, "Got wrong error code %d\n", err);
213
215
216 SetLastError(0xdeadbeef);
217 len=0;
220 ok(len == 0,"Got wrong user agent length %d instead of 0\n",len);
221 ok(retval == 0,"Got wrong return value %d\n",retval);
222 ok(err == ERROR_INTERNET_INCORRECT_HANDLE_TYPE, "Got wrong error code %d\n",err);
223
224 SetLastError(0xdeadbeef);
225 len = sizeof(DWORD);
227 err = GetLastError();
228 ok(retval == 0,"Got wrong return value %d\n",retval);
229 ok(err == ERROR_INTERNET_INCORRECT_HANDLE_TYPE, "Got wrong error code %d\n",err);
230 ok(len == sizeof(DWORD), "len = %d\n", len);
231
232 SetLastError(0xdeadbeef);
233 len = sizeof(DWORD);
235 err = GetLastError();
236 ok(retval == 0,"Got wrong return value %d\n",retval);
237 ok(err == ERROR_INTERNET_INCORRECT_HANDLE_TYPE, "Got wrong error code %d\n",err);
238 ok(!len, "len = %d\n", len);
239
241 InternetCloseHandle(hinet);
242
244 ok((hinet != 0x0),"InternetOpen Failed\n");
245
246 SetLastError(0xdeadbeef);
247 len=0;
250 ok(len == 1,"Got wrong user agent length %d instead of %d\n",len,1);
251 ok(retval == 0,"Got wrong return value %d\n",retval);
252 ok(err == ERROR_INSUFFICIENT_BUFFER, "Got wrong error code%d\n",err);
253
254 InternetCloseHandle(hinet);
255
256 val = 12345;
258 ok(res, "InternetSetOptionA(INTERNET_OPTION_CONNECT_TIMEOUT) failed (%u)\n", GetLastError());
259
260 len = sizeof(val);
262 ok(res, "InternetQueryOptionA failed %d)\n", GetLastError());
263 ok(val == 12345, "val = %d\n", val);
264 ok(len == sizeof(val), "len = %d\n", len);
265
267 ok((hinet != 0x0),"InternetOpen Failed\n");
268 SetLastError(0xdeadbeef);
269 len=0;
272 ok(len == 1,"Got wrong user agent length %d instead of %d\n",len,1);
273 ok(retval == 0,"Got wrong return value %d\n",retval);
274 ok(err == ERROR_INSUFFICIENT_BUFFER, "Got wrong error code%d\n",err);
275
276 len = sizeof(val);
277 val = 0xdeadbeef;
279 ok(!res, "InternetQueryOptionA(INTERNET_OPTION_MAX_CONNS_PER_SERVER) succeeded\n");
280 ok(GetLastError() == ERROR_INTERNET_INVALID_OPERATION, "GetLastError() = %u\n", GetLastError());
281
282 val = 2;
284 ok(!res, "InternetSetOptionA(INTERNET_OPTION_MAX_CONNS_PER_SERVER) succeeded\n");
285 ok(GetLastError() == ERROR_INTERNET_INVALID_OPERATION, "GetLastError() = %u\n", GetLastError());
286
287 len = sizeof(val);
289 ok(res, "InternetQueryOptionA failed %d)\n", GetLastError());
290 ok(val == 12345, "val = %d\n", val);
291 ok(len == sizeof(val), "len = %d\n", len);
292
293 val = 1;
295 ok(res, "InternetSetOptionA(INTERNET_OPTION_CONNECT_TIMEOUT) failed (%u)\n", GetLastError());
296
297 len = sizeof(val);
299 ok(res, "InternetQueryOptionA failed %d)\n", GetLastError());
300 ok(val == 1, "val = %d\n", val);
301 ok(len == sizeof(val), "len = %d\n", len);
302
303 len = sizeof(val);
305 ok(res, "InternetQueryOptionA failed %d)\n", GetLastError());
306 ok(val == 12345, "val = %d\n", val);
307 ok(len == sizeof(val), "len = %d\n", len);
308
309 InternetCloseHandle(hinet);
310}
311
312static void test_max_conns(void)
313{
314 DWORD len, val;
315 BOOL res;
316
317 len = sizeof(val);
318 val = 0xdeadbeef;
320 ok(res,"Got wrong return value %x\n", res);
321 ok(len == sizeof(val), "got %d\n", len);
322 trace("INTERNET_OPTION_MAX_CONNS_PER_SERVER: %d\n", val);
323
324 len = sizeof(val);
325 val = 0xdeadbeef;
327 ok(res,"Got wrong return value %x\n", res);
328 ok(len == sizeof(val), "got %d\n", len);
329 trace("INTERNET_OPTION_MAX_CONNS_PER_1_0_SERVER: %d\n", val);
330
331 val = 3;
333 ok(res, "InternetSetOptionA(INTERNET_OPTION_MAX_CONNS_PER_SERVER) failed: %x\n", res);
334
335 len = sizeof(val);
336 val = 0xdeadbeef;
338 ok(res,"Got wrong return value %x\n", res);
339 ok(len == sizeof(val), "got %d\n", len);
340 ok(val == 3, "got %d\n", val);
341
342 val = 0;
344 ok(!res || broken(res), /* <= w2k3 */
345 "InternetSetOptionA(INTERNET_OPTION_MAX_CONNS_PER_SERVER, 0) succeeded\n");
346 if (!res) ok(GetLastError() == ERROR_BAD_ARGUMENTS, "GetLastError() = %u\n", GetLastError());
347
348 val = 2;
350 ok(!res, "InternetSetOptionA(INTERNET_OPTION_MAX_CONNS_PER_SERVER) succeeded\n");
351 ok(GetLastError() == ERROR_INTERNET_BAD_OPTION_LENGTH, "GetLastError() = %u\n", GetLastError());
352
353 val = 2;
355 ok(!res, "InternetSetOptionA(INTERNET_OPTION_MAX_CONNS_PER_SERVER) succeeded\n");
356 ok(GetLastError() == ERROR_INTERNET_BAD_OPTION_LENGTH, "GetLastError() = %u\n", GetLastError());
357}
358
359static void test_get_cookie(void)
360{
361 DWORD len;
362 BOOL ret;
363
364 len = 1024;
365 SetLastError(0xdeadbeef);
366 ret = InternetGetCookieA("http://www.example.com", NULL, NULL, &len);
368 "InternetGetCookie should have failed with %s and error %d\n",
369 ret ? "TRUE" : "FALSE", GetLastError());
370 ok(!len, "len = %u\n", len);
371}
372
373
374static void test_complicated_cookie(void)
375{
376 DWORD len;
377 BOOL ret;
378
379 CHAR buffer[1024];
380 WCHAR wbuf[1024];
381
382 static const WCHAR testing_example_comW[] =
383 {'h','t','t','p',':','/','/','t','e','s','t','i','n','g','.','e','x','a','m','p','l','e','.','c','o','m',0};
384
385 ret = InternetSetCookieA("http://www.example.com/bar",NULL,"A=B; domain=.example.com");
386 ok(ret == TRUE,"InternetSetCookie failed\n");
387 ret = InternetSetCookieA("http://www.example.com/bar",NULL,"C=D; domain=.example.com; path=/");
388 ok(ret == TRUE,"InternetSetCookie failed\n");
389
390 /* Technically illegal! domain should require 2 dots, but native wininet accepts it */
391 ret = InternetSetCookieA("http://www.example.com",NULL,"E=F; domain=example.com");
392 ok(ret == TRUE,"InternetSetCookie failed\n");
393 ret = InternetSetCookieA("http://www.example.com",NULL,"G=H; domain=.example.com; invalid=attr; path=/foo");
394 ok(ret == TRUE,"InternetSetCookie failed\n");
395 ret = InternetSetCookieA("http://www.example.com/bar.html",NULL,"I=J; domain=.example.com");
396 ok(ret == TRUE,"InternetSetCookie failed\n");
397 ret = InternetSetCookieA("http://www.example.com/bar/",NULL,"K=L; domain=.example.com");
398 ok(ret == TRUE,"InternetSetCookie failed\n");
399 ret = InternetSetCookieA("http://www.example.com/bar/",NULL,"M=N; domain=.example.com; path=/foo/");
400 ok(ret == TRUE,"InternetSetCookie failed\n");
401 ret = InternetSetCookieA("http://www.example.com/bar/",NULL,"O=P; secure; path=/bar");
402 ok(ret == TRUE,"InternetSetCookie failed\n");
403
404 len = 1024;
405 ret = InternetGetCookieA("http://testing.example.com", NULL, NULL, &len);
406 ok(ret == TRUE,"InternetGetCookie failed\n");
407 ok(len == 19, "len = %u\n", len);
408
409 len = 1024;
410 memset(buffer, 0xac, sizeof(buffer));
411 ret = InternetGetCookieA("http://testing.example.com", NULL, buffer, &len);
412 ok(ret == TRUE,"InternetGetCookie failed\n");
413 ok(len == 19, "len = %u\n", len);
414 ok(strlen(buffer) == 18, "strlen(buffer) = %u\n", lstrlenA(buffer));
415 ok(strstr(buffer,"A=B")!=NULL,"A=B missing\n");
416 ok(strstr(buffer,"C=D")!=NULL,"C=D missing\n");
417 ok(strstr(buffer,"E=F")!=NULL,"E=F missing\n");
418 ok(strstr(buffer,"G=H")==NULL,"G=H present\n");
419 ok(strstr(buffer,"I=J")!=NULL,"I=J missing\n");
420 ok(strstr(buffer,"K=L")==NULL,"K=L present\n");
421 ok(strstr(buffer,"M=N")==NULL,"M=N present\n");
422 ok(strstr(buffer,"O=P")==NULL,"O=P present\n");
423
424 len = 10;
425 memset(buffer, 0xac, sizeof(buffer));
426 ret = InternetGetCookieA("http://testing.example.com", NULL, buffer, &len);
428 "InternetGetCookie returned: %x(%u), expected ERROR_INSUFFICIENT_BUFFER\n", ret, GetLastError());
429 ok(len == 19, "len = %u\n", len);
430
431 len = 1024;
432 ret = InternetGetCookieW(testing_example_comW, NULL, NULL, &len);
433 ok(ret == TRUE,"InternetGetCookieW failed\n");
434 ok(len == 38, "len = %u\n", len);
435
436 len = 1024;
437 memset(wbuf, 0xac, sizeof(wbuf));
438 ret = InternetGetCookieW(testing_example_comW, NULL, wbuf, &len);
439 ok(ret == TRUE,"InternetGetCookieW failed\n");
440 ok(len == 19 || broken(len==18), "len = %u\n", len);
441 ok(lstrlenW(wbuf) == 18, "strlenW(wbuf) = %u\n", lstrlenW(wbuf));
442
443 len = 10;
444 memset(wbuf, 0xac, sizeof(wbuf));
445 ret = InternetGetCookieW(testing_example_comW, NULL, wbuf, &len);
447 "InternetGetCookieW returned: %x(%u), expected ERROR_INSUFFICIENT_BUFFER\n", ret, GetLastError());
448 ok(len == 38, "len = %u\n", len);
449
450 len = 1024;
451 ret = InternetGetCookieA("http://testing.example.com/foobar", NULL, buffer, &len);
452 ok(ret == TRUE,"InternetGetCookie failed\n");
453 ok(strstr(buffer,"A=B")!=NULL,"A=B missing\n");
454 ok(strstr(buffer,"C=D")!=NULL,"C=D missing\n");
455 ok(strstr(buffer,"E=F")!=NULL,"E=F missing\n");
456 ok(strstr(buffer,"G=H")==NULL,"G=H present\n");
457 ok(strstr(buffer,"I=J")!=NULL,"I=J missing\n");
458 ok(strstr(buffer,"K=L")==NULL,"K=L present\n");
459 ok(strstr(buffer,"M=N")==NULL,"M=N present\n");
460 ok(strstr(buffer,"O=P")==NULL,"O=P present\n");
461
462 len = 1024;
463 ret = InternetGetCookieA("http://testing.example.com/foobar/", NULL, buffer, &len);
464 ok(ret == TRUE,"InternetGetCookie failed\n");
465 ok(strstr(buffer,"A=B")!=NULL,"A=B missing\n");
466 ok(strstr(buffer,"C=D")!=NULL,"C=D missing\n");
467 ok(strstr(buffer,"E=F")!=NULL,"E=F missing\n");
468 ok(strstr(buffer,"G=H")!=NULL,"G=H missing\n");
469 ok(strstr(buffer,"I=J")!=NULL,"I=J missing\n");
470 ok(strstr(buffer,"K=L")==NULL,"K=L present\n");
471 ok(strstr(buffer,"M=N")==NULL,"M=N present\n");
472 ok(strstr(buffer,"O=P")==NULL,"O=P present\n");
473
474 len = 1024;
475 ret = InternetGetCookieA("http://testing.example.com/foo/bar", NULL, buffer, &len);
476 ok(ret == TRUE,"InternetGetCookie failed\n");
477 ok(strstr(buffer,"A=B")!=NULL,"A=B missing\n");
478 ok(strstr(buffer,"C=D")!=NULL,"C=D missing\n");
479 ok(strstr(buffer,"E=F")!=NULL,"E=F missing\n");
480 ok(strstr(buffer,"G=H")!=NULL,"G=H missing\n");
481 ok(strstr(buffer,"I=J")!=NULL,"I=J missing\n");
482 ok(strstr(buffer,"K=L")==NULL,"K=L present\n");
483 ok(strstr(buffer,"M=N")!=NULL,"M=N missing\n");
484 ok(strstr(buffer,"O=P")==NULL,"O=P present\n");
485
486 len = 1024;
487 ret = InternetGetCookieA("http://testing.example.com/barfoo", NULL, buffer, &len);
488 ok(ret == TRUE,"InternetGetCookie failed\n");
489 ok(strstr(buffer,"A=B")!=NULL,"A=B missing\n");
490 ok(strstr(buffer,"C=D")!=NULL,"C=D missing\n");
491 ok(strstr(buffer,"E=F")!=NULL,"E=F missing\n");
492 ok(strstr(buffer,"G=H")==NULL,"G=H present\n");
493 ok(strstr(buffer,"I=J")!=NULL,"I=J missing\n");
494 ok(strstr(buffer,"K=L")==NULL,"K=L present\n");
495 ok(strstr(buffer,"M=N")==NULL,"M=N present\n");
496 ok(strstr(buffer,"O=P")==NULL,"O=P present\n");
497
498 len = 1024;
499 ret = InternetGetCookieA("http://testing.example.com/barfoo/", NULL, buffer, &len);
500 ok(ret == TRUE,"InternetGetCookie failed\n");
501 ok(strstr(buffer,"A=B")!=NULL,"A=B missing\n");
502 ok(strstr(buffer,"C=D")!=NULL,"C=D missing\n");
503 ok(strstr(buffer,"E=F")!=NULL,"E=F missing\n");
504 ok(strstr(buffer,"G=H")==NULL,"G=H present\n");
505 ok(strstr(buffer,"I=J")!=NULL,"I=J missing\n");
506 ok(strstr(buffer,"K=L")==NULL,"K=L present\n");
507 ok(strstr(buffer,"M=N")==NULL,"M=N present\n");
508 ok(strstr(buffer,"O=P")==NULL,"O=P present\n");
509
510 len = 1024;
511 ret = InternetGetCookieA("http://testing.example.com/bar/foo", NULL, buffer, &len);
512 ok(ret == TRUE,"InternetGetCookie failed\n");
513 ok(len == 24, "len = %u\n", len);
514 ok(strstr(buffer,"A=B")!=NULL,"A=B missing\n");
515 ok(strstr(buffer,"C=D")!=NULL,"C=D missing\n");
516 ok(strstr(buffer,"E=F")!=NULL,"E=F missing\n");
517 ok(strstr(buffer,"G=H")==NULL,"G=H present\n");
518 ok(strstr(buffer,"I=J")!=NULL,"I=J missing\n");
519 ok(strstr(buffer,"K=L")!=NULL,"K=L missing\n");
520 ok(strstr(buffer,"M=N")==NULL,"M=N present\n");
521 ok(strstr(buffer,"O=P")==NULL,"O=P present\n");
522
523 /* Cookie name argument is not implemented */
524 len = 1024;
525 ret = InternetGetCookieA("http://testing.example.com/bar/foo", "A", buffer, &len);
526 ok(ret == TRUE,"InternetGetCookie failed\n");
527 ok(len == 24, "len = %u\n", len);
528
529 /* test persistent cookies */
530 ret = InternetSetCookieA("http://testing.example.com", NULL, "A=B; expires=Fri, 01-Jan-2038 00:00:00 GMT");
531 ok(ret, "InternetSetCookie failed with error %d\n", GetLastError());
532
533 /* test invalid expires parameter */
534 ret = InternetSetCookieA("http://testing.example.com", NULL, "Q=R; expires=");
535 ok(ret, "InternetSetCookie failed %#x.\n", GetLastError());
536 len = 1024;
537 memset(buffer, 0xac, sizeof(buffer));
538 ret = InternetGetCookieA("http://testing.example.com/", NULL, buffer, &len);
539 ok(ret, "InternetGetCookie failed %#x.\n", GetLastError());
540 ok(len == 29, "got len %u.\n", len);
541 ok(!!strstr(buffer, "Q=R"), "cookie is not present.\n");
542
543 len = sizeof(buffer);
544 ret = InternetGetCookieA("http://testing.example.com/foobar", NULL, buffer, &len);
545 ok(ret, "got error %#x\n", GetLastError());
546 ok(len == 29, "got len %u\n", len);
547 ok(!!strstr(buffer, "A=B"), "cookie is not present\n");
548
549 /* remove persistent cookie */
550 ret = InternetSetCookieA("http://testing.example.com", NULL, "A=B");
551 ok(ret, "InternetSetCookie failed with error %d\n", GetLastError());
552
553 /* try setting cookie for different domain */
554 ret = InternetSetCookieA("http://www.aaa.example.com/bar",NULL,"E=F; domain=different.com");
555 ok(!ret, "InternetSetCookie succeeded\n");
556 ok(GetLastError() == ERROR_INVALID_PARAMETER, "GetLastError() = %d\n", GetLastError());
557 ret = InternetSetCookieA("http://www.aaa.example.com.pl/bar",NULL,"E=F; domain=example.com.pl");
558 ok(ret, "InternetSetCookie failed with error: %d\n", GetLastError());
559 ret = InternetSetCookieA("http://www.aaa.example.com.pl/bar",NULL,"E=F; domain=com.pl");
560 todo_wine ok(!ret, "InternetSetCookie succeeded\n");
561}
562
563static void test_cookie_attrs(void)
564{
565 char buf[100];
567 BOOL ret;
568
569 if(!GetProcAddress(GetModuleHandleA("wininet.dll"), "DeleteWpadCacheForNetworks")) {
570 win_skip("Skipping cookie attributes tests. Too old IE.\n");
571 return;
572 }
573
574 ret = InternetSetCookieA("http://cookie.attrs.com/bar", NULL, "A=data; httponly");
575 ok(!ret && GetLastError() == ERROR_INVALID_OPERATION, "InternetSetCookie returned: %x (%u)\n", ret, GetLastError());
576
577 SetLastError(0xdeadbeef);
578 state = InternetSetCookieExA("http://cookie.attrs.com/bar", NULL, "A=data; httponly", 0, 0);
580 "InternetSetCookieEx returned: %x (%u)\n", ret, GetLastError());
581
582 size = sizeof(buf);
583 ret = InternetGetCookieExA("http://cookie.attrs.com/", NULL, buf, &size, INTERNET_COOKIE_HTTPONLY, NULL);
584 ok(!ret && GetLastError() == ERROR_NO_MORE_ITEMS, "InternetGetCookieEx returned: %x (%u)\n", ret, GetLastError());
585
586 state = InternetSetCookieExA("http://cookie.attrs.com/bar",NULL,"A=data; httponly", INTERNET_COOKIE_HTTPONLY, 0);
587 ok(state == COOKIE_STATE_ACCEPT,"InternetSetCookieEx failed: %u\n", GetLastError());
588
589 size = sizeof(buf);
590 ret = InternetGetCookieA("http://cookie.attrs.com/", NULL, buf, &size);
591 ok(!ret && GetLastError() == ERROR_NO_MORE_ITEMS, "InternetGetCookie returned: %x (%u)\n", ret, GetLastError());
592
593 size = sizeof(buf);
594 ret = InternetGetCookieExA("http://cookie.attrs.com/", NULL, buf, &size, 0, NULL);
595 ok(!ret && GetLastError() == ERROR_NO_MORE_ITEMS, "InternetGetCookieEx returned: %x (%u)\n", ret, GetLastError());
596
597 size = sizeof(buf);
598 ret = InternetGetCookieExA("http://cookie.attrs.com/", NULL, buf, &size, INTERNET_COOKIE_HTTPONLY, NULL);
599 ok(ret, "InternetGetCookieEx failed: %u\n", GetLastError());
600 ok(!strcmp(buf, "A=data"), "data = %s\n", buf);
601
602 /* Try to override httponly cookie with non-httponly one */
603 ret = InternetSetCookieA("http://cookie.attrs.com/bar", NULL, "A=test");
604 ok(!ret && GetLastError() == ERROR_INVALID_OPERATION, "InternetSetCookie returned: %x (%u)\n", ret, GetLastError());
605
606 SetLastError(0xdeadbeef);
607 state = InternetSetCookieExA("http://cookie.attrs.com/bar", NULL, "A=data", 0, 0);
609 "InternetSetCookieEx returned: %x (%u)\n", ret, GetLastError());
610
611 size = sizeof(buf);
612 ret = InternetGetCookieExA("http://cookie.attrs.com/", NULL, buf, &size, INTERNET_COOKIE_HTTPONLY, NULL);
613 ok(ret, "InternetGetCookieEx failed: %u\n", GetLastError());
614 ok(!strcmp(buf, "A=data"), "data = %s\n", buf);
615
616}
617
618static void test_cookie_url(void)
619{
620 char long_url[5000] = "http://long.url.test.com/", *p;
621 WCHAR bufw[512];
622 char buf[512];
623 DWORD len;
624 BOOL res;
625
626 static const WCHAR about_blankW[] = {'a','b','o','u','t',':','b','l','a','n','k',0};
627
628 len = sizeof(buf);
629 res = InternetGetCookieA("about:blank", NULL, buf, &len);
631 "InternetGetCookeA failed: %u, expected ERROR_INVALID_PARAMETER\n", GetLastError());
632
633 len = ARRAY_SIZE(bufw);
636 "InternetGetCookeW failed: %u, expected ERROR_INVALID_PARAMETER\n", GetLastError());
637
638 len = sizeof(buf);
639 res = pInternetGetCookieExA("about:blank", NULL, buf, &len, 0, NULL);
641 "InternetGetCookeExA failed: %u, expected ERROR_INVALID_PARAMETER\n", GetLastError());
642
643 len = ARRAY_SIZE(bufw);
644 res = pInternetGetCookieExW(about_blankW, NULL, bufw, &len, 0, NULL);
646 "InternetGetCookeExW failed: %u, expected ERROR_INVALID_PARAMETER\n", GetLastError());
647
648 p = long_url + strlen(long_url);
649 memset(p, 'x', long_url+sizeof(long_url)-p);
650 p += (long_url+sizeof(long_url)-p) - 3;
651 p[0] = '/';
652 p[2] = 0;
653 res = InternetSetCookieA(long_url, NULL, "A=B");
654 ok(res, "InternetSetCookieA failed: %u\n", GetLastError());
655
656 len = sizeof(buf);
657 res = InternetGetCookieA(long_url, NULL, buf, &len);
658 ok(res, "InternetGetCookieA failed: %u\n", GetLastError());
659 ok(!strcmp(buf, "A=B"), "buf = %s\n", buf);
660
661 len = sizeof(buf);
662 res = InternetGetCookieA("http://long.url.test.com/", NULL, buf, &len);
663 ok(!res && GetLastError() == ERROR_NO_MORE_ITEMS, "InternetGetCookieA failed: %u\n", GetLastError());
664}
665
666static void test_null(void)
667{
668 HINTERNET hi, hc;
669 static const WCHAR szServer[] = { 's','e','r','v','e','r',0 };
670 static const WCHAR szServer2[] = { 's','e','r','v','e','r','=',0 };
671 static const WCHAR szEmpty[] = { 0 };
672 static const WCHAR szUrl[] = { 'h','t','t','p',':','/','/','a','.','b','.','c',0 };
673 static const WCHAR szUrlEmpty[] = { 'h','t','t','p',':','/','/',0 };
674 static const WCHAR szExpect[] = { 's','e','r','v','e','r',';',' ','s','e','r','v','e','r',0 };
675 WCHAR buffer[0x20];
676 BOOL r;
677 DWORD sz;
678
679 SetLastError(0xdeadbeef);
680 hi = InternetOpenW(NULL, 0, NULL, NULL, 0);
682 {
683 win_skip("Internet*W functions are not implemented\n");
684 return;
685 }
686 ok(hi != NULL, "open failed\n");
687
688 hc = InternetConnectW(hi, NULL, 0, NULL, NULL, 0, 0, 0);
689 ok(GetLastError() == ERROR_INVALID_PARAMETER, "wrong error\n");
690 ok(hc == NULL, "connect failed\n");
691
693 ok(GetLastError() == ERROR_INVALID_PARAMETER, "wrong error\n");
694 ok(hc == NULL, "connect failed\n");
695
696 hc = InternetConnectW(hi, NULL, 0, NULL, NULL, INTERNET_SERVICE_FTP, 0, 0);
697 ok(GetLastError() == ERROR_INVALID_PARAMETER, "wrong error\n");
698 ok(hc == NULL, "connect failed\n");
699
700 hc = InternetConnectW(NULL, szServer, 0, NULL, NULL, INTERNET_SERVICE_FTP, 0, 0);
701 ok(GetLastError() == ERROR_INVALID_HANDLE, "wrong error\n");
702 ok(hc == NULL, "connect failed\n");
703
704 hc = InternetOpenUrlW(hi, NULL, NULL, 0, 0, 0);
707 ok(hc == NULL, "connect failed\n");
708
709 hc = InternetOpenUrlW(hi, szServer, NULL, 0, 0, 0);
711 ok(hc == NULL, "connect failed\n");
712
714
716 ok(GetLastError() == ERROR_INVALID_PARAMETER, "wrong error\n");
717 ok(r == FALSE, "return wrong\n");
718
719 r = InternetSetCookieW(szServer, NULL, NULL);
720 ok(GetLastError() == ERROR_INVALID_PARAMETER, "wrong error\n");
721 ok(r == FALSE, "return wrong\n");
722
723 r = InternetSetCookieW(szUrl, szServer, NULL);
724 ok(GetLastError() == ERROR_INVALID_PARAMETER, "wrong error\n");
725 ok(r == FALSE, "return wrong\n");
726
727 r = InternetSetCookieW(szUrl, szServer, szServer);
728 ok(r == TRUE, "return wrong\n");
729
730 r = InternetSetCookieW(szUrl, NULL, szServer);
731 ok(r == TRUE, "return wrong\n");
732
733 r = InternetSetCookieW(szUrl, szServer, szEmpty);
734 ok(r == TRUE, "return wrong\n");
735
736 r = InternetSetCookieW(szUrlEmpty, szServer, szServer);
737 ok(r == FALSE, "return wrong\n");
738
739 r = InternetSetCookieW(szServer, NULL, szServer);
741 ok(r == FALSE, "return wrong\n");
742
743 sz = 0;
746 "wrong error %u\n", GetLastError());
747 ok( r == FALSE, "return wrong\n");
748
749 r = InternetGetCookieW(szServer, NULL, NULL, &sz);
750 todo_wine {
752 }
753 ok( r == FALSE, "return wrong\n");
754
755 sz = 0;
756 r = InternetGetCookieW(szUrlEmpty, szServer, NULL, &sz);
757 ok( r == FALSE, "return wrong\n");
758
759 sz = 0;
760 r = InternetGetCookieW(szUrl, szServer, NULL, &sz);
761 ok( r == TRUE, "return wrong\n");
762
763 /* sz is 14 on XP SP2 and beyond, 30 on XP SP1 and before, 16 on IE11 */
764 ok( sz == 14 || sz == 16 || sz == 30, "sz wrong, got %u, expected 14, 16 or 30\n", sz);
765
766 sz = 0x20;
767 memset(buffer, 0, sizeof buffer);
768 r = InternetGetCookieW(szUrl, szServer, buffer, &sz);
769 ok( r == TRUE, "return wrong\n");
770
771 /* sz == lstrlenW(buffer) only in XP SP1 */
772 ok( sz == 1 + lstrlenW(buffer) || sz == lstrlenW(buffer), "sz wrong %d\n", sz);
773
774 /* before XP SP2, buffer is "server; server" */
775 ok( !lstrcmpW(szExpect, buffer) || !lstrcmpW(szServer, buffer) || !lstrcmpW(szServer2, buffer),
776 "cookie data wrong %s\n", wine_dbgstr_w(buffer));
777
778 sz = sizeof(buffer);
780 ok(r == TRUE, "ret %d\n", r);
781}
782
783static void test_version(void)
784{
786 DWORD size;
787 BOOL res;
788
789 size = sizeof(version);
791 ok(res, "Could not get version: %u\n", GetLastError());
792 ok(version.dwMajorVersion == 1, "dwMajorVersion=%d, expected 1\n", version.dwMajorVersion);
793 ok(version.dwMinorVersion == 2, "dwMinorVersion=%d, expected 2\n", version.dwMinorVersion);
794}
795
797{
798 BOOL ret;
799 static const SYSTEMTIME time = { 2005, 1, 5, 7, 12, 6, 35, 0 };
800 char string[INTERNET_RFC1123_BUFSIZE];
801 static const char expect[] = "Fri, 07 Jan 2005 12:06:35 GMT";
802 DWORD error;
803
804 ret = pInternetTimeFromSystemTimeA( &time, INTERNET_RFC1123_FORMAT, string, sizeof(string) );
805 ok( ret, "InternetTimeFromSystemTimeA failed (%u)\n", GetLastError() );
806
807 ok( !memcmp( string, expect, sizeof(expect) ),
808 "InternetTimeFromSystemTimeA failed (%u)\n", GetLastError() );
809
810 /* test NULL time parameter */
811 SetLastError(0xdeadbeef);
812 ret = pInternetTimeFromSystemTimeA( NULL, INTERNET_RFC1123_FORMAT, string, sizeof(string) );
814 ok( !ret, "InternetTimeFromSystemTimeA should have returned FALSE\n" );
816 "InternetTimeFromSystemTimeA failed with ERROR_INVALID_PARAMETER instead of %u\n",
817 error );
818
819 /* test NULL string parameter */
820 SetLastError(0xdeadbeef);
821 ret = pInternetTimeFromSystemTimeA( &time, INTERNET_RFC1123_FORMAT, NULL, sizeof(string) );
823 ok( !ret, "InternetTimeFromSystemTimeA should have returned FALSE\n" );
825 "InternetTimeFromSystemTimeA failed with ERROR_INVALID_PARAMETER instead of %u\n",
826 error );
827
828 /* test invalid format parameter */
829 SetLastError(0xdeadbeef);
830 ret = pInternetTimeFromSystemTimeA( &time, INTERNET_RFC1123_FORMAT + 1, string, sizeof(string) );
832 ok( !ret, "InternetTimeFromSystemTimeA should have returned FALSE\n" );
834 "InternetTimeFromSystemTimeA failed with ERROR_INVALID_PARAMETER instead of %u\n",
835 error );
836
837 /* test too small buffer size */
838 SetLastError(0xdeadbeef);
839 ret = pInternetTimeFromSystemTimeA( &time, INTERNET_RFC1123_FORMAT, string, 0 );
841 ok( !ret, "InternetTimeFromSystemTimeA should have returned FALSE\n" );
843 "InternetTimeFromSystemTimeA failed with ERROR_INSUFFICIENT_BUFFER instead of %u\n",
844 error );
845}
846
848{
849 BOOL ret;
850 static const SYSTEMTIME time = { 2005, 1, 5, 7, 12, 6, 35, 0 };
852 static const WCHAR expect[] = { 'F','r','i',',',' ','0','7',' ','J','a','n',' ','2','0','0','5',' ',
853 '1','2',':','0','6',':','3','5',' ','G','M','T',0 };
854 DWORD error;
855
856 ret = pInternetTimeFromSystemTimeW( &time, INTERNET_RFC1123_FORMAT, string, sizeof(string) );
857 ok( ret, "InternetTimeFromSystemTimeW failed (%u)\n", GetLastError() );
858
859 ok( !memcmp( string, expect, sizeof(expect) ),
860 "InternetTimeFromSystemTimeW failed (%u)\n", GetLastError() );
861
862 /* test NULL time parameter */
863 SetLastError(0xdeadbeef);
864 ret = pInternetTimeFromSystemTimeW( NULL, INTERNET_RFC1123_FORMAT, string, sizeof(string) );
866 ok( !ret, "InternetTimeFromSystemTimeW should have returned FALSE\n" );
868 "InternetTimeFromSystemTimeW failed with ERROR_INVALID_PARAMETER instead of %u\n",
869 error );
870
871 /* test NULL string parameter */
872 SetLastError(0xdeadbeef);
873 ret = pInternetTimeFromSystemTimeW( &time, INTERNET_RFC1123_FORMAT, NULL, sizeof(string) );
875 ok( !ret, "InternetTimeFromSystemTimeW should have returned FALSE\n" );
877 "InternetTimeFromSystemTimeW failed with ERROR_INVALID_PARAMETER instead of %u\n",
878 error );
879
880 /* test invalid format parameter */
881 SetLastError(0xdeadbeef);
882 ret = pInternetTimeFromSystemTimeW( &time, INTERNET_RFC1123_FORMAT + 1, string, sizeof(string) );
884 ok( !ret, "InternetTimeFromSystemTimeW should have returned FALSE\n" );
886 "InternetTimeFromSystemTimeW failed with ERROR_INVALID_PARAMETER instead of %u\n",
887 error );
888
889 /* test too small buffer size */
890 SetLastError(0xdeadbeef);
891 ret = pInternetTimeFromSystemTimeW( &time, INTERNET_RFC1123_FORMAT, string, ARRAY_SIZE(string));
893 ok( !ret, "InternetTimeFromSystemTimeW should have returned FALSE\n" );
895 "InternetTimeFromSystemTimeW failed with ERROR_INSUFFICIENT_BUFFER instead of %u\n",
896 error );
897}
898
900{
901 BOOL ret;
903 static const SYSTEMTIME expect = { 2005, 1, 5, 7, 12, 6, 35, 0 };
904 static const char string[] = "Fri, 07 Jan 2005 12:06:35 GMT";
905 static const char string2[] = " fri 7 jan 2005 12 06 35";
906
907 ret = pInternetTimeToSystemTimeA( string, &time, 0 );
908 ok( ret, "InternetTimeToSystemTimeA failed (%u)\n", GetLastError() );
909 ok( !memcmp( &time, &expect, sizeof(expect) ),
910 "InternetTimeToSystemTimeA failed (%u)\n", GetLastError() );
911
912 ret = pInternetTimeToSystemTimeA( string2, &time, 0 );
913 ok( ret, "InternetTimeToSystemTimeA failed (%u)\n", GetLastError() );
914 ok( !memcmp( &time, &expect, sizeof(expect) ),
915 "InternetTimeToSystemTimeA failed (%u)\n", GetLastError() );
916}
917
919{
920 BOOL ret;
922 static const SYSTEMTIME expect = { 2005, 1, 5, 7, 12, 6, 35, 0 };
923 static const WCHAR string[] = { 'F','r','i',',',' ','0','7',' ','J','a','n',' ','2','0','0','5',' ',
924 '1','2',':','0','6',':','3','5',' ','G','M','T',0 };
925 static const WCHAR string2[] = { ' ','f','r','i',' ','7',' ','j','a','n',' ','2','0','0','5',' ',
926 '1','2',' ','0','6',' ','3','5',0 };
927 static const WCHAR string3[] = { 'F','r',0 };
928
929 ret = pInternetTimeToSystemTimeW( NULL, NULL, 0 );
930 ok( !ret, "InternetTimeToSystemTimeW succeeded (%u)\n", GetLastError() );
931
932 ret = pInternetTimeToSystemTimeW( NULL, &time, 0 );
933 ok( !ret, "InternetTimeToSystemTimeW succeeded (%u)\n", GetLastError() );
934
935 ret = pInternetTimeToSystemTimeW( string, NULL, 0 );
936 ok( !ret, "InternetTimeToSystemTimeW succeeded (%u)\n", GetLastError() );
937
938 ret = pInternetTimeToSystemTimeW( string, &time, 0 );
939 ok( ret, "InternetTimeToSystemTimeW failed (%u)\n", GetLastError() );
940
941 ret = pInternetTimeToSystemTimeW( string, &time, 0 );
942 ok( ret, "InternetTimeToSystemTimeW failed (%u)\n", GetLastError() );
943 ok( !memcmp( &time, &expect, sizeof(expect) ),
944 "InternetTimeToSystemTimeW failed (%u)\n", GetLastError() );
945
946 ret = pInternetTimeToSystemTimeW( string2, &time, 0 );
947 ok( ret, "InternetTimeToSystemTimeW failed (%u)\n", GetLastError() );
948 ok( !memcmp( &time, &expect, sizeof(expect) ),
949 "InternetTimeToSystemTimeW failed (%u)\n", GetLastError() );
950
951 ret = pInternetTimeToSystemTimeW( string3, &time, 0 );
952 ok( ret, "InternetTimeToSystemTimeW failed (%u)\n", GetLastError() );
953}
954
956{
957 BOOL ret;
958 static const WCHAR empty[] = {0};
959 static const WCHAR dot[] = {'.',0};
960 static const WCHAR uk[] = {'u','k',0};
961 static const WCHAR com[] = {'c','o','m',0};
962 static const WCHAR dot_com[] = {'.','c','o','m',0};
963 static const WCHAR gmail_com[] = {'g','m','a','i','l','.','c','o','m',0};
964 static const WCHAR dot_gmail_com[] = {'.','g','m','a','i','l','.','c','o','m',0};
965 static const WCHAR www_gmail_com[] = {'w','w','w','.','g','m','a','i','l','.','c','o','m',0};
966 static const WCHAR www_mail_gmail_com[] = {'w','w','w','.','m','a','i','l','.','g','m','a','i','l','.','c','o','m',0};
967 static const WCHAR mail_gmail_com[] = {'m','a','i','l','.','g','m','a','i','l','.','c','o','m',0};
968 static const WCHAR gmail_co_uk[] = {'g','m','a','i','l','.','c','o','.','u','k',0};
969 static const WCHAR co_uk[] = {'c','o','.','u','k',0};
970 static const WCHAR dot_co_uk[] = {'.','c','o','.','u','k',0};
971
972 SetLastError(0xdeadbeef);
973 ret = pIsDomainLegalCookieDomainW(NULL, NULL);
975 {
976 win_skip("IsDomainLegalCookieDomainW is not implemented\n");
977 return;
978 }
979 ok(!ret ||
980 broken(ret), /* IE6 */
981 "IsDomainLegalCookieDomainW succeeded\n");
982
983 SetLastError(0xdeadbeef);
984 ret = pIsDomainLegalCookieDomainW(com, NULL);
985 ok(!ret, "IsDomainLegalCookieDomainW succeeded\n");
986
987 SetLastError(0xdeadbeef);
988 ret = pIsDomainLegalCookieDomainW(NULL, gmail_com);
989 ok(!ret, "IsDomainLegalCookieDomainW succeeded\n");
990
991 SetLastError(0xdeadbeef);
992 ret = pIsDomainLegalCookieDomainW(empty, gmail_com);
993 ok(!ret, "IsDomainLegalCookieDomainW succeeded\n");
994
995 SetLastError(0xdeadbeef);
996 ret = pIsDomainLegalCookieDomainW(com, empty);
997 ok(!ret, "IsDomainLegalCookieDomainW succeeded\n");
998
999 SetLastError(0xdeadbeef);
1000 ret = pIsDomainLegalCookieDomainW(gmail_com, dot);
1001 ok(!ret, "IsDomainLegalCookieDomainW succeeded\n");
1002
1003 SetLastError(0xdeadbeef);
1004 ret = pIsDomainLegalCookieDomainW(dot, gmail_com);
1005 ok(!ret, "IsDomainLegalCookieDomainW succeeded\n");
1006
1007 SetLastError(0xdeadbeef);
1008 ret = pIsDomainLegalCookieDomainW(com, com);
1009 ok(!ret, "IsDomainLegalCookieDomainW succeeded\n");
1010
1011 SetLastError(0xdeadbeef);
1012 ret = pIsDomainLegalCookieDomainW(com, dot_com);
1013 ok(!ret, "IsDomainLegalCookieDomainW succeeded\n");
1014
1015 SetLastError(0xdeadbeef);
1016 ret = pIsDomainLegalCookieDomainW(dot_com, com);
1017 ok(!ret, "IsDomainLegalCookieDomainW succeeded\n");
1018
1019 SetLastError(0xdeadbeef);
1020 ret = pIsDomainLegalCookieDomainW(com, gmail_com);
1021 ok(!ret, "IsDomainLegalCookieDomainW succeeded\n");
1022
1023 ret = pIsDomainLegalCookieDomainW(gmail_com, gmail_com);
1024 ok(ret, "IsDomainLegalCookieDomainW failed\n");
1025
1026 ret = pIsDomainLegalCookieDomainW(gmail_com, www_gmail_com);
1027 ok(ret, "IsDomainLegalCookieDomainW failed\n");
1028
1029 ret = pIsDomainLegalCookieDomainW(gmail_com, www_mail_gmail_com);
1030 ok(ret, "IsDomainLegalCookieDomainW failed\n");
1031
1032 SetLastError(0xdeadbeef);
1033 ret = pIsDomainLegalCookieDomainW(gmail_co_uk, co_uk);
1034 ok(!ret, "IsDomainLegalCookieDomainW succeeded\n");
1035
1036 ret = pIsDomainLegalCookieDomainW(uk, co_uk);
1037 ok(!ret, "IsDomainLegalCookieDomainW succeeded\n");
1038
1039 ret = pIsDomainLegalCookieDomainW(gmail_co_uk, dot_co_uk);
1040 ok(!ret, "IsDomainLegalCookieDomainW succeeded\n");
1041
1042 ret = pIsDomainLegalCookieDomainW(co_uk, gmail_co_uk);
1043 todo_wine ok(!ret, "IsDomainLegalCookieDomainW succeeded\n");
1044
1045 ret = pIsDomainLegalCookieDomainW(gmail_co_uk, gmail_co_uk);
1046 ok(ret, "IsDomainLegalCookieDomainW failed\n");
1047
1048 ret = pIsDomainLegalCookieDomainW(gmail_com, com);
1049 ok(!ret, "IsDomainLegalCookieDomainW succeeded\n");
1050
1051 SetLastError(0xdeadbeef);
1052 ret = pIsDomainLegalCookieDomainW(dot_gmail_com, mail_gmail_com);
1053 ok(!ret, "IsDomainLegalCookieDomainW succeeded\n");
1054
1055 ret = pIsDomainLegalCookieDomainW(gmail_com, mail_gmail_com);
1056 ok(ret, "IsDomainLegalCookieDomainW failed\n");
1057
1058 ret = pIsDomainLegalCookieDomainW(mail_gmail_com, gmail_com);
1059 ok(!ret, "IsDomainLegalCookieDomainW succeeded\n");
1060
1061 ret = pIsDomainLegalCookieDomainW(mail_gmail_com, com);
1062 ok(!ret, "IsDomainLegalCookieDomainW succeeded\n");
1063
1064 ret = pIsDomainLegalCookieDomainW(dot_gmail_com, mail_gmail_com);
1065 ok(!ret, "IsDomainLegalCookieDomainW succeeded\n");
1066
1067 ret = pIsDomainLegalCookieDomainW(mail_gmail_com, dot_gmail_com);
1068 ok(!ret, "IsDomainLegalCookieDomainW succeeded\n");
1069}
1070
1072{
1073 DWORD ret, zone, type, template, old_template, pref_size = 0;
1074 WCHAR pref[256];
1075
1076 zone = 3;
1077 type = 0;
1078 ret = pPrivacyGetZonePreferenceW(zone, type, NULL, NULL, NULL);
1079 ok(ret == 0, "expected ret == 0, got %u\n", ret);
1080
1081 old_template = 0;
1082 ret = pPrivacyGetZonePreferenceW(zone, type, &old_template, NULL, NULL);
1083 ok(ret == 0, "expected ret == 0, got %u\n", ret);
1084
1085 trace("template %u\n", old_template);
1086
1087 if(old_template == PRIVACY_TEMPLATE_ADVANCED) {
1088 pref_size = ARRAY_SIZE(pref);
1089 ret = pPrivacyGetZonePreferenceW(zone, type, &old_template, pref, &pref_size);
1090 ok(ret == 0, "expected ret == 0, got %u\n", ret);
1091 }
1092
1093 template = 5;
1094 ret = pPrivacySetZonePreferenceW(zone, type, template, NULL);
1095 ok(ret == 0, "expected ret == 0, got %u\n", ret);
1096
1097 template = 0;
1098 ret = pPrivacyGetZonePreferenceW(zone, type, &template, NULL, NULL);
1099 ok(ret == 0, "expected ret == 0, got %u\n", ret);
1100 ok(template == 5, "expected template == 5, got %u\n", template);
1101
1102 template = 5;
1103 ret = pPrivacySetZonePreferenceW(zone, type, old_template, pref_size ? pref : NULL);
1104 ok(ret == 0, "expected ret == 0, got %u\n", ret);
1105}
1106
1107static void test_InternetSetOption(void)
1108{
1109 HINTERNET ses, con, req;
1110 ULONG ulArg;
1111 DWORD size;
1112 BOOL ret;
1113
1115 ok(ses != 0, "InternetOpen failed: 0x%08x\n", GetLastError());
1116 con = InternetConnectA(ses, "www.winehq.org", 80, NULL, NULL, INTERNET_SERVICE_HTTP, 0, 0);
1117 ok(con != 0, "InternetConnect failed: 0x%08x\n", GetLastError());
1118 req = HttpOpenRequestA(con, "GET", "/", NULL, NULL, NULL, 0, 0);
1119 ok(req != 0, "HttpOpenRequest failed: 0x%08x\n", GetLastError());
1120
1121 /* INTERNET_OPTION_POLICY tests */
1122 SetLastError(0xdeadbeef);
1124 ok(ret == FALSE, "InternetSetOption should've failed\n");
1125 ok(GetLastError() == ERROR_INVALID_PARAMETER, "GetLastError should've "
1126 "given ERROR_INVALID_PARAMETER, gave: 0x%08x\n", GetLastError());
1127
1128 SetLastError(0xdeadbeef);
1130 ok(ret == FALSE, "InternetQueryOption should've failed\n");
1131 ok(GetLastError() == ERROR_INVALID_PARAMETER, "GetLastError should've "
1132 "given ERROR_INVALID_PARAMETER, gave: 0x%08x\n", GetLastError());
1133
1134 /* INTERNET_OPTION_ERROR_MASK tests */
1135 SetLastError(0xdeadbeef);
1136 size = sizeof(ulArg);
1138 ok(ret == FALSE, "InternetQueryOption should've failed\n");
1139 ok(GetLastError() == ERROR_INTERNET_INCORRECT_HANDLE_TYPE, "GetLastError() = %x\n", GetLastError());
1140
1141 SetLastError(0xdeadbeef);
1142 ulArg = 11;
1143 ret = InternetSetOptionA(NULL, INTERNET_OPTION_ERROR_MASK, (void*)&ulArg, sizeof(ULONG));
1144 ok(ret == FALSE, "InternetSetOption should've failed\n");
1145 ok(GetLastError() == ERROR_INTERNET_INCORRECT_HANDLE_TYPE, "GetLastError() = %x\n", GetLastError());
1146
1147 SetLastError(0xdeadbeef);
1148 ulArg = 11;
1149 ret = InternetSetOptionA(req, INTERNET_OPTION_ERROR_MASK, (void*)&ulArg, 20);
1150 ok(ret == FALSE, "InternetSetOption should've failed\n");
1151 ok(GetLastError() == ERROR_INTERNET_BAD_OPTION_LENGTH, "GetLastError() = %d\n", GetLastError());
1152
1153 ulArg = 11;
1154 ret = InternetSetOptionA(req, INTERNET_OPTION_ERROR_MASK, (void*)&ulArg, sizeof(ULONG));
1155 ok(ret == TRUE, "InternetSetOption should've succeeded\n");
1156
1157 SetLastError(0xdeadbeef);
1158 ulArg = 4;
1159 ret = InternetSetOptionA(req, INTERNET_OPTION_ERROR_MASK, (void*)&ulArg, sizeof(ULONG));
1160 ok(ret == FALSE, "InternetSetOption should've failed\n");
1161 ok(GetLastError() == ERROR_INVALID_PARAMETER, "GetLastError() = %x\n", GetLastError());
1162
1163 SetLastError(0xdeadbeef);
1164 ulArg = 16;
1165 ret = InternetSetOptionA(req, INTERNET_OPTION_ERROR_MASK, (void*)&ulArg, sizeof(ULONG));
1166 ok(ret == FALSE, "InternetSetOption should've failed\n");
1167 ok(GetLastError() == ERROR_INVALID_PARAMETER, "GetLastError() = %x\n", GetLastError());
1168
1170 ok(ret == TRUE, "InternetSetOption should've succeeded\n");
1171
1173 ok(ret == TRUE, "InternetSetOption should've succeeded\n");
1174
1176 ok(ret == TRUE, "InternetSetOption should've succeeded\n");
1177
1179 ok(ret == TRUE, "InternetSetOption should've succeeded\n");
1180
1181 SetLastError(0xdeadbeef);
1183 ok(ret == FALSE, "InternetSetOption should've failed\n");
1184 ok(GetLastError() == ERROR_INTERNET_INCORRECT_HANDLE_TYPE, "GetLastError() = %u\n", GetLastError());
1185
1186 SetLastError(0xdeadbeef);
1188 ok(ret == FALSE, "InternetSetOption should've failed\n");
1189 ok(GetLastError() == ERROR_INTERNET_INCORRECT_HANDLE_TYPE, "GetLastError() = %u\n", GetLastError());
1190
1191 ret = InternetCloseHandle(req);
1192 ok(ret == TRUE, "InternetCloseHandle failed: 0x%08x\n", GetLastError());
1193 ret = InternetCloseHandle(con);
1194 ok(ret == TRUE, "InternetCloseHandle failed: 0x%08x\n", GetLastError());
1195 ret = InternetCloseHandle(ses);
1196 ok(ret == TRUE, "InternetCloseHandle failed: 0x%08x\n", GetLastError());
1197}
1198
1200{
1201 DWORD len;
1202 BOOL ret;
1203
1204 ret = InternetSetCookieA("http://www.example.com/test_end", NULL, "A=B");
1205 ok(ret == TRUE, "InternetSetCookie failed\n");
1206
1207 len = 1024;
1208 ret = InternetGetCookieA("http://www.example.com/test_end", NULL, NULL, &len);
1209 ok(ret == TRUE,"InternetGetCookie failed\n");
1210 ok(len != 0, "len = 0\n");
1211
1213 ok(ret, "InternetSetOption(INTERNET_OPTION_END_BROWSER_SESSION) failed: %u\n", GetLastError());
1214
1215 len = 1024;
1216 ret = InternetGetCookieA("http://www.example.com/test_end", NULL, NULL, &len);
1217 ok(!ret && GetLastError() == ERROR_NO_MORE_ITEMS, "InternetGetCookie returned %x (%u)\n", ret, GetLastError());
1218 ok(!len, "len = %u\n", len);
1219}
1220
1221#define verifyProxyEnable(e) r_verifyProxyEnable(__LINE__, e)
1223{
1224 HKEY hkey;
1225 DWORD type, val, size = sizeof(DWORD);
1226 LONG ret;
1227 static const CHAR szInternetSettings[] = "Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings";
1228 static const CHAR szProxyEnable[] = "ProxyEnable";
1229
1231 ok_(__FILE__,l) (!ret, "RegOpenKeyA failed: 0x%08x\n", ret);
1232
1233 ret = RegQueryValueExA(hkey, szProxyEnable, 0, &type, (BYTE*)&val, &size);
1234 ok_(__FILE__,l) (!ret, "RegQueryValueExA failed: 0x%08x\n", ret);
1235 ok_(__FILE__,l) (type == REG_DWORD, "Expected regtype to be REG_DWORD, was: %d\n", type);
1236 ok_(__FILE__,l) (val == exp, "Expected ProxyEnabled to be %d, got: %d\n", exp, val);
1237
1238 ret = RegCloseKey(hkey);
1239 ok_(__FILE__,l) (!ret, "RegCloseKey failed: 0x%08x\n", ret);
1240}
1241
1243{
1244 BOOL ret;
1247 INTERNET_PER_CONN_OPTIONW *orig_settings;
1248 static WCHAR proxy_srvW[] = {'p','r','o','x','y','.','e','x','a','m','p','l','e',0};
1249
1250 /* get the global IE proxy server info, to restore later */
1251 list.dwOptionCount = 2;
1252 list.pOptions = HeapAlloc(GetProcessHeap(), 0, 2 * sizeof(INTERNET_PER_CONN_OPTIONW));
1253
1254 list.pOptions[0].dwOption = INTERNET_PER_CONN_PROXY_SERVER;
1255 list.pOptions[1].dwOption = INTERNET_PER_CONN_FLAGS;
1256
1258 &list, &size);
1259 ok(ret == TRUE, "InternetQueryOption should've succeeded\n");
1260 orig_settings = list.pOptions;
1261
1262 /* set the global IE proxy server */
1263 list.dwOptionCount = 2;
1264 list.pOptions = HeapAlloc(GetProcessHeap(), 0, 2 * sizeof(INTERNET_PER_CONN_OPTIONW));
1265
1266 list.pOptions[0].dwOption = INTERNET_PER_CONN_PROXY_SERVER;
1267 list.pOptions[0].Value.pszValue = proxy_srvW;
1268 list.pOptions[1].dwOption = INTERNET_PER_CONN_FLAGS;
1269 list.pOptions[1].Value.dwValue = PROXY_TYPE_PROXY;
1270
1272 &list, size);
1273 ok(ret == TRUE, "InternetSetOption should've succeeded\n");
1274
1275 HeapFree(GetProcessHeap(), 0, list.pOptions);
1276
1277 /* get & verify the global IE proxy server */
1278 list.dwOptionCount = 2;
1279 list.dwOptionError = 0;
1280 list.pOptions = HeapAlloc(GetProcessHeap(), 0, 2 * sizeof(INTERNET_PER_CONN_OPTIONW));
1281
1282 list.pOptions[0].dwOption = INTERNET_PER_CONN_PROXY_SERVER;
1283 list.pOptions[1].dwOption = INTERNET_PER_CONN_FLAGS;
1284
1286 &list, &size);
1287 ok(ret == TRUE, "InternetQueryOption should've succeeded\n");
1288 ok(!lstrcmpW(list.pOptions[0].Value.pszValue, proxy_srvW),
1289 "Retrieved proxy server should've been %s, was: %s\n",
1290 wine_dbgstr_w(proxy_srvW), wine_dbgstr_w(list.pOptions[0].Value.pszValue));
1291 ok(list.pOptions[1].Value.dwValue == PROXY_TYPE_PROXY,
1292 "Retrieved flags should've been PROXY_TYPE_PROXY, was: %d\n",
1293 list.pOptions[1].Value.dwValue);
1295
1296 HeapFree(GetProcessHeap(), 0, list.pOptions[0].Value.pszValue);
1297 HeapFree(GetProcessHeap(), 0, list.pOptions);
1298
1299 /* disable the proxy server */
1300 list.dwOptionCount = 1;
1301 list.pOptions = HeapAlloc(GetProcessHeap(), 0, sizeof(INTERNET_PER_CONN_OPTIONW));
1302
1303 list.pOptions[0].dwOption = INTERNET_PER_CONN_FLAGS;
1304 list.pOptions[0].Value.dwValue = PROXY_TYPE_DIRECT;
1305
1307 &list, size);
1308 ok(ret == TRUE, "InternetSetOption should've succeeded\n");
1309
1310 HeapFree(GetProcessHeap(), 0, list.pOptions);
1311
1312 /* verify that the proxy is disabled */
1313 list.dwOptionCount = 1;
1314 list.dwOptionError = 0;
1315 list.pOptions = HeapAlloc(GetProcessHeap(), 0, sizeof(INTERNET_PER_CONN_OPTIONW));
1316
1317 list.pOptions[0].dwOption = INTERNET_PER_CONN_FLAGS;
1318
1320 &list, &size);
1321 ok(ret == TRUE, "InternetQueryOption should've succeeded\n");
1322 ok(list.pOptions[0].Value.dwValue == PROXY_TYPE_DIRECT,
1323 "Retrieved flags should've been PROXY_TYPE_DIRECT, was: %d\n",
1324 list.pOptions[0].Value.dwValue);
1326
1327 HeapFree(GetProcessHeap(), 0, list.pOptions);
1328
1329 /* set the proxy flags to 'invalid' value */
1330 list.dwOptionCount = 1;
1331 list.pOptions = HeapAlloc(GetProcessHeap(), 0, sizeof(INTERNET_PER_CONN_OPTIONW));
1332
1333 list.pOptions[0].dwOption = INTERNET_PER_CONN_FLAGS;
1334 list.pOptions[0].Value.dwValue = PROXY_TYPE_PROXY | PROXY_TYPE_DIRECT;
1335
1337 &list, size);
1338 ok(ret == TRUE, "InternetSetOption should've succeeded\n");
1339
1340 HeapFree(GetProcessHeap(), 0, list.pOptions);
1341
1342 /* verify that the proxy is enabled */
1343 list.dwOptionCount = 1;
1344 list.dwOptionError = 0;
1345 list.pOptions = HeapAlloc(GetProcessHeap(), 0, sizeof(INTERNET_PER_CONN_OPTIONW));
1346
1347 list.pOptions[0].dwOption = INTERNET_PER_CONN_FLAGS;
1348
1350 &list, &size);
1351 ok(ret == TRUE, "InternetQueryOption should've succeeded\n");
1352 todo_wine ok(list.pOptions[0].Value.dwValue == (PROXY_TYPE_PROXY | PROXY_TYPE_DIRECT),
1353 "Retrieved flags should've been PROXY_TYPE_PROXY | PROXY_TYPE_DIRECT, was: %d\n",
1354 list.pOptions[0].Value.dwValue);
1356
1357 HeapFree(GetProcessHeap(), 0, list.pOptions);
1358
1359 /* restore original settings */
1360 list.dwOptionCount = 2;
1361 list.pOptions = orig_settings;
1362
1364 &list, size);
1365 ok(ret == TRUE, "InternetSetOption should've succeeded\n");
1366
1367 HeapFree(GetProcessHeap(), 0, list.pOptions);
1368}
1369
1371{
1372 BOOL ret;
1375 INTERNET_PER_CONN_OPTIONA *orig_settings;
1376 char proxy_srv[] = "proxy.example";
1377
1378 /* get the global IE proxy server info, to restore later */
1379 list.dwOptionCount = 2;
1380 list.pOptions = HeapAlloc(GetProcessHeap(), 0, 2 * sizeof(INTERNET_PER_CONN_OPTIONA));
1381
1382 list.pOptions[0].dwOption = INTERNET_PER_CONN_PROXY_SERVER;
1383 list.pOptions[1].dwOption = INTERNET_PER_CONN_FLAGS;
1384
1386 &list, &size);
1387 ok(ret == TRUE, "InternetQueryOption should've succeeded\n");
1388 orig_settings = list.pOptions;
1389
1390 /* set the global IE proxy server */
1391 list.dwOptionCount = 2;
1392 list.pOptions = HeapAlloc(GetProcessHeap(), 0, 2 * sizeof(INTERNET_PER_CONN_OPTIONA));
1393
1394 list.pOptions[0].dwOption = INTERNET_PER_CONN_PROXY_SERVER;
1395 list.pOptions[0].Value.pszValue = proxy_srv;
1396 list.pOptions[1].dwOption = INTERNET_PER_CONN_FLAGS;
1397 list.pOptions[1].Value.dwValue = PROXY_TYPE_PROXY;
1398
1400 &list, size);
1401 ok(ret == TRUE, "InternetSetOption should've succeeded\n");
1402
1403 HeapFree(GetProcessHeap(), 0, list.pOptions);
1404
1405 /* get & verify the global IE proxy server */
1406 list.dwOptionCount = 2;
1407 list.dwOptionError = 0;
1408 list.pOptions = HeapAlloc(GetProcessHeap(), 0, 2 * sizeof(INTERNET_PER_CONN_OPTIONA));
1409
1410 list.pOptions[0].dwOption = INTERNET_PER_CONN_PROXY_SERVER;
1411 list.pOptions[1].dwOption = INTERNET_PER_CONN_FLAGS;
1412
1414 &list, &size);
1415 ok(ret == TRUE, "InternetQueryOption should've succeeded\n");
1416 ok(!lstrcmpA(list.pOptions[0].Value.pszValue, "proxy.example"),
1417 "Retrieved proxy server should've been \"%s\", was: \"%s\"\n",
1418 proxy_srv, list.pOptions[0].Value.pszValue);
1419 ok(list.pOptions[1].Value.dwValue == PROXY_TYPE_PROXY,
1420 "Retrieved flags should've been PROXY_TYPE_PROXY, was: %d\n",
1421 list.pOptions[1].Value.dwValue);
1422
1423 HeapFree(GetProcessHeap(), 0, list.pOptions[0].Value.pszValue);
1424 HeapFree(GetProcessHeap(), 0, list.pOptions);
1425
1426 /* test with NULL as proxy server */
1427 list.dwOptionCount = 1;
1428 list.pOptions = HeapAlloc(GetProcessHeap(), 0, sizeof(INTERNET_PER_CONN_OPTIONA));
1429 list.pOptions[0].dwOption = INTERNET_PER_CONN_PROXY_SERVER;
1430 list.pOptions[0].Value.pszValue = NULL;
1431
1433 ok(ret == TRUE, "InternetSetOption should've succeeded\n");
1434
1436 ok(ret == TRUE, "InternetSetOption should've succeeded\n");
1437
1438 HeapFree(GetProcessHeap(), 0, list.pOptions);
1439
1440 /* get & verify the proxy server */
1441 list.dwOptionCount = 1;
1442 list.dwOptionError = 0;
1443 list.pOptions = HeapAlloc(GetProcessHeap(), 0, sizeof(INTERNET_PER_CONN_OPTIONA));
1444 list.pOptions[0].dwOption = INTERNET_PER_CONN_PROXY_SERVER;
1445
1447 ok(ret == TRUE, "InternetQueryOption should've succeeded\n");
1448 ok(!list.pOptions[0].Value.pszValue,
1449 "Retrieved proxy server should've been NULL, was: \"%s\"\n",
1450 list.pOptions[0].Value.pszValue);
1451
1452 HeapFree(GetProcessHeap(), 0, list.pOptions[0].Value.pszValue);
1453 HeapFree(GetProcessHeap(), 0, list.pOptions);
1454
1455 /* restore original settings */
1456 list.dwOptionCount = 2;
1457 list.pOptions = orig_settings;
1458
1460 &list, size);
1461 ok(ret == TRUE, "InternetSetOption should've succeeded\n");
1462
1463 HeapFree(GetProcessHeap(), 0, list.pOptions);
1464}
1465
1466#define FLAG_TODO 0x1
1467#define FLAG_NEEDREQ 0x2
1468#define FLAG_UNIMPL 0x4
1469
1470static void test_InternetErrorDlg(void)
1471{
1472 HINTERNET ses, con, req;
1473 DWORD res;
1474 HWND hwnd;
1475 ULONG i;
1476 static const struct {
1477 DWORD error;
1478 DWORD res;
1479 DWORD test_flags;
1480 } no_ui_res[] = {
1500 };
1501
1503 ok(res == ERROR_INVALID_HANDLE, "Got %d\n", res);
1504
1506 ok(ses != 0, "InternetOpen failed: 0x%08x\n", GetLastError());
1507 con = InternetConnectA(ses, "www.winehq.org", 80, NULL, NULL, INTERNET_SERVICE_HTTP, 0, 0);
1508 ok(con != 0, "InternetConnect failed: 0x%08x\n", GetLastError());
1509 req = HttpOpenRequestA(con, "GET", "/", NULL, NULL, NULL, 0, 0);
1510 ok(req != 0, "HttpOpenRequest failed: 0x%08x\n", GetLastError());
1511
1513 ok(hwnd != NULL, "GetDesktopWindow failed (%d)\n", GetLastError());
1514
1516 {
1517 DWORD expected = ERROR_NOT_SUPPORTED, test_flags = 0, j;
1518
1519 for (j = 0; j < ARRAY_SIZE(no_ui_res); ++j)
1520 {
1521 if (no_ui_res[j].error == i)
1522 {
1523 test_flags = no_ui_res[j].test_flags;
1524 expected = no_ui_res[j].res;
1525 }
1526 }
1527
1528 /* Try an invalid request handle */
1531 {
1532 ok(test_flags & FLAG_UNIMPL, "%i is unexpectedly unimplemented.\n", i);
1533 continue;
1534 }
1535 else
1536 ok(res == ERROR_INVALID_HANDLE, "Got %d (%d)\n", res, i);
1537
1538 /* With a valid req */
1540 continue; /* Crashes on windows XP */
1541
1543 continue; /* Interactive (XP, Win7) */
1545 continue; /* Interactive (Win10 1607+) */
1546
1548
1549 /* Handle some special cases */
1550 switch(i)
1551 {
1552 case ERROR_INTERNET_HTTP_TO_HTTPS_ON_REDIR: /* later 9.x versions */
1553 case ERROR_INTERNET_HTTPS_TO_HTTP_ON_REDIR: /* later 9.x versions */
1554 case ERROR_INTERNET_SEC_CERT_WEAK_SIGNATURE: /* later 11.x versions */
1555 if(res == ERROR_CANCELLED)
1557 break;
1559 if (res == NTE_PROV_TYPE_NOT_DEF) /* XP, 2003 */
1561 break;
1563 if(res == ERROR_SUCCESS) /* win10 returns ERROR_SUCCESS */
1565 break;
1566 default: break;
1567 }
1568
1569 if (expected == ERROR_NOT_SUPPORTED && res == ERROR_CANCELLED) /* Win10 1607+ */
1571
1572 todo_wine_if(test_flags & FLAG_TODO)
1573 ok(res == expected, "Got %d, expected %d (%d)\n", res, expected, i);
1574
1575 /* Same thing with NULL hwnd */
1577 todo_wine_if(test_flags & FLAG_TODO)
1578 ok(res == expected, "Got %d, expected %d (%d)\n", res, expected, i);
1579
1580
1581 /* With a null req */
1582 if(test_flags & FLAG_NEEDREQ)
1584
1587 ok(res == expected, "Got %d, expected %d (%d)\n", res, expected, i);
1588 }
1589
1590 res = InternetCloseHandle(req);
1591 ok(res == TRUE, "InternetCloseHandle failed: 0x%08x\n", GetLastError());
1592 res = InternetCloseHandle(con);
1593 ok(res == TRUE, "InternetCloseHandle failed: 0x%08x\n", GetLastError());
1594 res = InternetCloseHandle(ses);
1595 ok(res == TRUE, "InternetCloseHandle failed: 0x%08x\n", GetLastError());
1596}
1597
1599{
1600 BOOL res;
1601 CHAR buffer[256];
1602 DWORD flags, sz;
1603
1604 if(!pInternetGetConnectedStateExA) {
1605 win_skip("InternetGetConnectedStateExA is not supported\n");
1606 return;
1607 }
1608
1609 flags = 0;
1610 buffer[0] = 0;
1611 res = pInternetGetConnectedStateExA(&flags, buffer, sizeof(buffer), 0);
1612 trace("Internet Connection: Flags 0x%02x - Name '%s'\n", flags, buffer);
1614 ok (flags & INTERNET_RAS_INSTALLED, "Missing RAS flag\n");
1615 if(!res) {
1616 win_skip("InternetGetConnectedStateExA tests require a valid connection\n");
1617 return;
1618 }
1619
1620 res = pInternetGetConnectedStateExA(NULL, NULL, 0, 0);
1621 ok(res == TRUE, "Expected TRUE, got %d\n", res);
1622
1623 flags = 0;
1624 res = pInternetGetConnectedStateExA(&flags, NULL, 0, 0);
1625 ok(res == TRUE, "Expected TRUE, got %d\n", res);
1627 {
1628 ok(flags & INTERNET_CONNECTION_MODEM, "Modem connection flag missing\n");
1629 ok(flags & ~INTERNET_CONNECTION_LAN, "Mixed Modem and LAN flags\n");
1630 }
1631 else
1632 {
1633 ok(flags & INTERNET_CONNECTION_LAN, "LAN connection flag missing\n");
1634 ok(flags & ~INTERNET_CONNECTION_MODEM, "Mixed Modem and LAN flags\n");
1635 }
1636
1637 buffer[0] = 0;
1638 flags = 0;
1639 res = pInternetGetConnectedStateExA(&flags, buffer, 0, 0);
1640 ok(res == TRUE, "Expected TRUE, got %d\n", res);
1641 ok(flags, "Expected at least one flag set\n");
1642 ok(!buffer[0], "Buffer must not change, got %02X\n", buffer[0]);
1643
1644 buffer[0] = 0;
1645 res = pInternetGetConnectedStateExA(NULL, buffer, sizeof(buffer), 0);
1646 ok(res == TRUE, "Expected TRUE, got %d\n", res);
1647 sz = strlen(buffer);
1648 ok(sz > 0, "Expected a connection name\n");
1649
1650 buffer[0] = 0;
1651 flags = 0;
1652 res = pInternetGetConnectedStateExA(&flags, buffer, sizeof(buffer), 0);
1653 ok(res == TRUE, "Expected TRUE, got %d\n", res);
1654 ok(flags, "Expected at least one flag set\n");
1655 sz = strlen(buffer);
1656 ok(sz > 0, "Expected a connection name\n");
1657
1658 flags = 0;
1659 res = pInternetGetConnectedStateExA(&flags, NULL, sizeof(buffer), 0);
1660 ok(res == TRUE, "Expected TRUE, got %d\n", res);
1661 ok(flags, "Expected at least one flag set\n");
1662
1663 /* no space for complete string this time */
1664 buffer[0] = 0;
1665 flags = 0;
1666 res = pInternetGetConnectedStateExA(&flags, buffer, sz, 0);
1667 ok(res == TRUE, "Expected TRUE, got %d\n", res);
1668 ok(flags, "Expected at least one flag set\n");
1669 ok(sz - 1 == strlen(buffer), "Expected %u bytes, got %u\n", sz - 1, lstrlenA(buffer));
1670
1671 buffer[0] = 0;
1672 flags = 0;
1673 res = pInternetGetConnectedStateExA(&flags, buffer, sz / 2, 0);
1674 ok(res == TRUE, "Expected TRUE, got %d\n", res);
1675 ok(flags, "Expected at least one flag set\n");
1676 ok(sz / 2 - 1 == strlen(buffer), "Expected %u bytes, got %u\n", sz / 2 - 1, lstrlenA(buffer));
1677
1678 buffer[0] = 0;
1679 flags = 0;
1680 res = pInternetGetConnectedStateExA(&flags, buffer, 1, 0);
1681 ok(res == TRUE, "Expected TRUE, got %d\n", res);
1682 ok(flags, "Expected at least one flag set\n");
1683 ok(!buffer[0], "Expected 0 bytes, got %u\n", lstrlenA(buffer));
1684
1685 buffer[0] = 0;
1686 flags = 0;
1687 res = pInternetGetConnectedStateExA(&flags, buffer, 2, 0);
1688 ok(res == TRUE, "Expected TRUE, got %d\n", res);
1689 ok(flags, "Expected at least one flag set\n");
1690 ok(strlen(buffer) == 1, "Expected 1 byte, got %u\n", lstrlenA(buffer));
1691
1692 flags = 0;
1693 buffer[0] = 0xDE;
1694 res = pInternetGetConnectedStateExA(&flags, buffer, 1, 0);
1695 ok(res == TRUE, "Expected TRUE, got %d\n", res);
1696 ok(flags, "Expected at least one flag set\n");
1697 ok(!buffer[0], "Expected 0 bytes, got %u\n", lstrlenA(buffer));
1698}
1699
1701{
1702 BOOL res;
1703 WCHAR buffer[256];
1704 DWORD flags, sz;
1705
1706 if(!pInternetGetConnectedStateExW) {
1707 win_skip("InternetGetConnectedStateExW is not supported\n");
1708 return;
1709 }
1710
1711 flags = 0;
1712 buffer[0] = 0;
1713 res = pInternetGetConnectedStateExW(&flags, buffer, ARRAY_SIZE(buffer), 0);
1714 trace("Internet Connection: Flags 0x%02x - Name '%s'\n", flags, wine_dbgstr_w(buffer));
1716 ok (flags & INTERNET_RAS_INSTALLED, "Missing RAS flag\n");
1717 if(!res) {
1718 win_skip("InternetGetConnectedStateExW tests require a valid connection\n");
1719 return;
1720 }
1721
1722 res = pInternetGetConnectedStateExW(NULL, NULL, 0, 0);
1723 ok(res == TRUE, "Expected TRUE, got %d\n", res);
1724
1725 flags = 0;
1726 res = pInternetGetConnectedStateExW(&flags, NULL, 0, 0);
1727 ok(res == TRUE, "Expected TRUE, got %d\n", res);
1729 {
1730 ok(flags & INTERNET_CONNECTION_MODEM, "Modem connection flag missing\n");
1731 ok(flags & ~INTERNET_CONNECTION_LAN, "Mixed Modem and LAN flags\n");
1732 }
1733 else
1734 {
1735 ok(flags & INTERNET_CONNECTION_LAN, "LAN connection flag missing\n");
1736 ok(flags & ~INTERNET_CONNECTION_MODEM, "Mixed Modem and LAN flags\n");
1737 }
1738
1739 buffer[0] = 0;
1740 flags = 0;
1741 res = pInternetGetConnectedStateExW(&flags, buffer, 0, 0);
1742 ok(res == TRUE, "Expected TRUE, got %d\n", res);
1743 ok(flags, "Expected at least one flag set\n");
1744 ok(!buffer[0], "Buffer must not change, got %02X\n", buffer[0]);
1745
1746 buffer[0] = 0;
1747 res = pInternetGetConnectedStateExW(NULL, buffer, ARRAY_SIZE(buffer), 0);
1748 ok(res == TRUE, "Expected TRUE, got %d\n", res);
1749 sz = lstrlenW(buffer);
1750 ok(sz > 0, "Expected a connection name\n");
1751
1752 buffer[0] = 0;
1753 flags = 0;
1754 res = pInternetGetConnectedStateExW(&flags, buffer, ARRAY_SIZE(buffer), 0);
1755 ok(res == TRUE, "Expected TRUE, got %d\n", res);
1756 ok(flags, "Expected at least one flag set\n");
1757 sz = lstrlenW(buffer);
1758 ok(sz > 0, "Expected a connection name\n");
1759
1760 flags = 0;
1761 res = pInternetGetConnectedStateExW(&flags, NULL, ARRAY_SIZE(buffer), 0);
1762 ok(res == TRUE, "Expected TRUE, got %d\n", res);
1763 ok(flags, "Expected at least one flag set\n");
1764
1765 /* no space for complete string this time */
1766 buffer[0] = 0;
1767 flags = 0;
1768 res = pInternetGetConnectedStateExW(&flags, buffer, sz, 0);
1769 ok(res == TRUE, "Expected TRUE, got %d\n", res);
1770 ok(flags, "Expected at least one flag set\n");
1772 ok(!buffer[0], "Expected 0 bytes, got %u\n", lstrlenW(buffer));
1773 else
1774 ok(sz - 1 == lstrlenW(buffer), "Expected %u bytes, got %u\n", sz - 1, lstrlenW(buffer));
1775
1776 buffer[0] = 0;
1777 flags = 0;
1778 res = pInternetGetConnectedStateExW(&flags, buffer, sz / 2, 0);
1779 ok(res == TRUE, "Expected TRUE, got %d\n", res);
1780 ok(flags, "Expected at least one flag set\n");
1782 ok(!buffer[0], "Expected 0 bytes, got %u\n", lstrlenW(buffer));
1783 else
1784 ok(sz / 2 - 1 == lstrlenW(buffer), "Expected %u bytes, got %u\n", sz / 2 - 1, lstrlenW(buffer));
1785
1786 buffer[0] = 0;
1787 flags = 0;
1788 res = pInternetGetConnectedStateExW(&flags, buffer, 1, 0);
1789 ok(res == TRUE, "Expected TRUE, got %d\n", res);
1790 ok(flags, "Expected at least one flag set\n");
1791 ok(!buffer[0], "Expected 0 bytes, got %u\n", lstrlenW(buffer));
1792
1793 buffer[0] = 0;
1794 flags = 0;
1795 res = pInternetGetConnectedStateExW(&flags, buffer, 2, 0);
1796 ok(res == TRUE, "Expected TRUE, got %d\n", res);
1797 ok(flags, "Expected at least one flag set\n");
1799 ok(!buffer[0], "Expected 0 bytes, got %u\n", lstrlenW(buffer));
1800 else
1801 ok(lstrlenW(buffer) == 1, "Expected 1 byte, got %u\n", lstrlenW(buffer));
1802
1803 buffer[0] = 0xDEAD;
1804 flags = 0;
1805 res = pInternetGetConnectedStateExW(&flags, buffer, 1, 0);
1806 ok(res == TRUE, "Expected TRUE, got %d\n", res);
1807 ok(flags, "Expected at least one flag set\n");
1808 ok(!buffer[0], "Expected 0 bytes, got %u\n", lstrlenW(buffer));
1809}
1810
1812{
1813 DWORD ret;
1814 CHAR out[0x100];
1815
1816 /* These messages come from wininet and not the system. */
1819 ok(ret == 0, "FormatMessageA returned %d\n", ret);
1820
1823 ok(ret != 0, "FormatMessageA returned %d\n", ret);
1824
1827 ok(ret != 0, "FormatMessageA returned %d\n", ret);
1828
1831 ok(ret != 0, "FormatMessageA returned %d\n", ret);
1832
1835 ok(ret != 0, "FormatMessageA returned %d\n", ret);
1836
1839 ok(ret != 0, "FormatMessageA returned %d\n", ret);
1840
1843 ok(ret != 0 || broken(!ret) /* XP, w2k3 */, "FormatMessageA returned %d\n", ret);
1844
1847 ok(ret != 0, "FormatMessageA returned %d\n", ret);
1848
1851 ok(ret != 0, "FormatMessageA returned %d\n", ret);
1852
1855 ok(ret != 0, "FormatMessageA returned %d\n", ret);
1856
1859 ok(ret != 0, "FormatMessageA returned %d\n", ret);
1860
1863 ok(ret != 0, "FormatMessageA returned %d\n", ret);
1864
1867 ok(ret != 0, "FormatMessageA returned %d\n", ret);
1868}
1869
1870/* ############################### */
1871
1872START_TEST(internet)
1873{
1874 HMODULE hdll;
1875 hdll = GetModuleHandleA("wininet.dll");
1876
1877 pCreateUrlCacheContainerA = (void*)GetProcAddress(hdll, "CreateUrlCacheContainerA");
1878 pCreateUrlCacheContainerW = (void*)GetProcAddress(hdll, "CreateUrlCacheContainerW");
1879 pInternetTimeFromSystemTimeA = (void*)GetProcAddress(hdll, "InternetTimeFromSystemTimeA");
1880 pInternetTimeFromSystemTimeW = (void*)GetProcAddress(hdll, "InternetTimeFromSystemTimeW");
1881 pInternetTimeToSystemTimeA = (void*)GetProcAddress(hdll, "InternetTimeToSystemTimeA");
1882 pInternetTimeToSystemTimeW = (void*)GetProcAddress(hdll, "InternetTimeToSystemTimeW");
1883 pIsDomainLegalCookieDomainW = (void*)GetProcAddress(hdll, (LPCSTR)117);
1884 pPrivacyGetZonePreferenceW = (void*)GetProcAddress(hdll, "PrivacyGetZonePreferenceW");
1885 pPrivacySetZonePreferenceW = (void*)GetProcAddress(hdll, "PrivacySetZonePreferenceW");
1886 pInternetGetCookieExA = (void*)GetProcAddress(hdll, "InternetGetCookieExA");
1887 pInternetGetCookieExW = (void*)GetProcAddress(hdll, "InternetGetCookieExW");
1888 pInternetGetConnectedStateExA = (void*)GetProcAddress(hdll, "InternetGetConnectedStateExA");
1889 pInternetGetConnectedStateExW = (void*)GetProcAddress(hdll, "InternetGetConnectedStateExW");
1890
1891 if(!pInternetGetCookieExW) {
1892 win_skip("Too old IE (older than 6.0)\n");
1893 return;
1894 }
1895
1904 test_version();
1905 test_null();
1910
1911 if (!pInternetTimeFromSystemTimeA)
1912 win_skip("skipping the InternetTime tests\n");
1913 else
1914 {
1919 }
1920 if (pIsDomainLegalCookieDomainW &&
1921 ((void*)pIsDomainLegalCookieDomainW == (void*)pCreateUrlCacheContainerA ||
1922 (void*)pIsDomainLegalCookieDomainW == (void*)pCreateUrlCacheContainerW))
1923 win_skip("IsDomainLegalCookieDomainW is not available on systems with IE5\n");
1924 else if (!pIsDomainLegalCookieDomainW)
1925 win_skip("IsDomainLegalCookieDomainW (or ordinal 117) is not available\n");
1926 else
1928
1929 if (pPrivacyGetZonePreferenceW && pPrivacySetZonePreferenceW)
1931 else
1932 win_skip("Privacy[SG]etZonePreferenceW are not available\n");
1933
1937}
#define expect(EXPECTED, GOT)
Definition: SystemMenu.c:483
int strcmp(const char *String1, const char *String2)
Definition: utclib.c:469
char * strstr(char *String1, char *String2)
Definition: utclib.c:653
int memcmp(void *Buffer1, void *Buffer2, ACPI_SIZE Count)
Definition: utclib.c:112
ACPI_SIZE strlen(const char *String)
Definition: utclib.c:269
static int state
Definition: maze.c:121
#define trace
Definition: atltest.h:70
#define ok(value,...)
Definition: atltest.h:57
#define broken(x)
Definition: atltest.h:178
#define START_TEST(x)
Definition: atltest.h:75
#define ok_(x1, x2)
Definition: atltest.h:61
#define ARRAY_SIZE(A)
Definition: main.h:20
#define RegCloseKey(hKey)
Definition: registry.h:49
r l[0]
Definition: byte_order.h:168
Definition: list.h:37
#define ERROR_INSUFFICIENT_BUFFER
Definition: dderror.h:10
#define ERROR_SUCCESS
Definition: deptool.c:10
#define NULL
Definition: types.h:112
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
static const WCHAR szEmpty[]
Definition: provider.c:50
LONG WINAPI RegOpenKeyA(HKEY hKey, LPCSTR lpSubKey, PHKEY phkResult)
Definition: reg.c:3234
LONG WINAPI RegQueryValueExA(_In_ HKEY hkeyorg, _In_ LPCSTR name, _In_ LPDWORD reserved, _Out_opt_ LPDWORD type, _Out_opt_ LPBYTE data, _Inout_opt_ LPDWORD count)
Definition: reg.c:4009
static const WCHAR empty[]
Definition: main.c:47
#define GetProcessHeap()
Definition: compat.h:736
#define ERROR_CALL_NOT_IMPLEMENTED
Definition: compat.h:102
#define ERROR_INVALID_PARAMETER
Definition: compat.h:101
#define SetLastError(x)
Definition: compat.h:752
#define GetProcAddress(x, y)
Definition: compat.h:753
#define HeapAlloc
Definition: compat.h:733
#define ERROR_NO_MORE_ITEMS
Definition: compat.h:105
#define ERROR_NOT_SUPPORTED
Definition: compat.h:100
#define HeapFree(x, y, z)
Definition: compat.h:735
#define ERROR_INVALID_HANDLE
Definition: compat.h:98
#define lstrlenW
Definition: compat.h:750
static const WCHAR version[]
Definition: asmname.c:66
HMODULE WINAPI DECLSPEC_HOTPATCH GetModuleHandleA(LPCSTR lpModuleName)
Definition: loader.c:812
DWORD WINAPI FormatMessageA(DWORD dwFlags, LPCVOID lpSource, DWORD dwMessageId, DWORD dwLanguageId, LPSTR lpBuffer, DWORD nSize, __ms_va_list *args)
Definition: format_msg.c:483
int WINAPI lstrcmpW(LPCWSTR str1, LPCWSTR str2)
Definition: locale.c:4243
int WINAPI lstrcmpA(LPCSTR str1, LPCSTR str2)
Definition: locale.c:4195
DWORD WINAPI InternetErrorDlg(HWND hWnd, HINTERNET hRequest, DWORD dwError, DWORD dwFlags, LPVOID *lppvData)
Definition: dialogs.c:472
HINTERNET WINAPI HttpOpenRequestA(HINTERNET hHttpSession, LPCSTR lpszVerb, LPCSTR lpszObjectName, LPCSTR lpszVersion, LPCSTR lpszReferrer, LPCSTR *lpszAcceptTypes, DWORD dwFlags, DWORD_PTR dwContext)
Definition: http.c:1410
BOOL WINAPI InternetQueryOptionW(HINTERNET hInternet, DWORD dwOption, LPVOID lpBuffer, LPDWORD lpdwBufferLength)
Definition: internet.c:2697
static const WCHAR szInternetSettings[]
Definition: internet.c:100
BOOL WINAPI InternetQueryOptionA(HINTERNET hInternet, DWORD dwOption, LPVOID lpBuffer, LPDWORD lpdwBufferLength)
Definition: internet.c:2730
BOOL WINAPI InternetCanonicalizeUrlA(LPCSTR lpszUrl, LPSTR lpszBuffer, LPDWORD lpdwBufferLength, DWORD dwFlags)
Definition: internet.c:1978
HINTERNET WINAPI InternetOpenA(LPCSTR lpszAgent, DWORD dwAccessType, LPCSTR lpszProxy, LPCSTR lpszProxyBypass, DWORD dwFlags)
Definition: internet.c:1057
HINTERNET WINAPI InternetOpenUrlW(HINTERNET hInternet, LPCWSTR lpszUrl, LPCWSTR lpszHeaders, DWORD dwHeadersLength, DWORD dwFlags, DWORD_PTR dwContext)
Definition: internet.c:3722
BOOL WINAPI InternetSetOptionA(HINTERNET hInternet, DWORD dwOption, LPVOID lpBuffer, DWORD dwBufferLength)
Definition: internet.c:3131
BOOL WINAPI InternetCloseHandle(HINTERNET hInternet)
Definition: internet.c:1414
HINTERNET WINAPI InternetConnectA(HINTERNET hInternet, LPCSTR lpszServerName, INTERNET_PORT nServerPort, LPCSTR lpszUserName, LPCSTR lpszPassword, DWORD dwService, DWORD dwFlags, DWORD_PTR dwContext)
Definition: internet.c:1321
HINTERNET WINAPI InternetConnectW(HINTERNET hInternet, LPCWSTR lpszServerName, INTERNET_PORT nServerPort, LPCWSTR lpszUserName, LPCWSTR lpszPassword, DWORD dwService, DWORD dwFlags, DWORD_PTR dwContext)
Definition: internet.c:1258
HINTERNET WINAPI InternetOpenW(LPCWSTR lpszAgent, DWORD dwAccessType, LPCWSTR lpszProxy, LPCWSTR lpszProxyBypass, DWORD dwFlags)
Definition: internet.c:979
BOOL WINAPI InternetSetOptionW(HINTERNET hInternet, DWORD dwOption, LPVOID lpBuffer, DWORD dwBufferLength)
Definition: internet.c:2837
unsigned int BOOL
Definition: ntddk_ex.h:94
unsigned long DWORD
Definition: ntddk_ex.h:95
GLuint GLuint GLsizei GLenum type
Definition: gl.h:1545
GLdouble GLdouble GLdouble r
Definition: gl.h:2055
GLsizeiptr size
Definition: glext.h:5919
GLuint res
Definition: glext.h:9613
GLuint buffer
Definition: glext.h:5915
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: glext.h:7751
GLbitfield flags
Definition: glext.h:7161
GLuint GLfloat * val
Definition: glext.h:7180
GLfloat GLfloat p
Definition: glext.h:8902
GLenum GLsizei len
Definition: glext.h:6722
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
Definition: glfuncs.h:250
#define wine_dbgstr_w
Definition: kernel32.h:34
int WINAPI lstrlenA(LPCSTR lpString)
Definition: lstring.c:145
__u16 time
Definition: mkdosfs.c:8
#define error(str)
Definition: mkdosfs.c:1605
PSDBQUERYRESULT_VISTA PVOID DWORD * dwSize
Definition: env.c:56
static const WCHAR url[]
Definition: encode.c:1432
BOOL expected
Definition: store.c:2063
static CHAR string2[MAX_PATH]
Definition: automation.c:345
#define todo_wine_if(is_todo)
Definition: custom.c:86
#define todo_wine
Definition: custom.c:89
IUnknown uk
Definition: typelib.c:6156
static CHAR string3[MAX_PATH]
Definition: editor.c:42
DWORD zone
Definition: sec_mgr.c:1754
DWORD exp
Definition: msg.c:16058
static void test_PrivacyGetSetZonePreferenceW(void)
Definition: internet.c:1071
#define FLAG_UNIMPL
Definition: internet.c:1468
static void r_verifyProxyEnable(LONG l, DWORD exp)
Definition: internet.c:1222
static void test_Option_PerConnectionOption(void)
Definition: internet.c:1242
static void test_IsDomainLegalCookieDomainW(void)
Definition: internet.c:955
static void test_get_cookie(void)
Definition: internet.c:359
static void test_InternetQueryOptionA(void)
Definition: internet.c:160
static void test_cookie_url(void)
Definition: internet.c:618
static void test_InternetErrorDlg(void)
Definition: internet.c:1470
#define FLAG_TODO
Definition: internet.c:1466
static void InternetTimeToSystemTimeW_test(void)
Definition: internet.c:918
static void test_InternetCanonicalizeUrlA(void)
Definition: internet.c:52
static void test_max_conns(void)
Definition: internet.c:312
static void test_InternetSetOption(void)
Definition: internet.c:1107
static void test_InternetGetConnectedStateExA(void)
Definition: internet.c:1598
static void test_Option_PerConnectionOptionA(void)
Definition: internet.c:1370
static void test_end_browser_session(void)
Definition: internet.c:1199
static void test_InternetGetConnectedStateExW(void)
Definition: internet.c:1700
static void test_cookie_attrs(void)
Definition: internet.c:563
static void test_complicated_cookie(void)
Definition: internet.c:374
static void test_null(void)
Definition: internet.c:666
static void InternetTimeFromSystemTimeW_test(void)
Definition: internet.c:847
static void test_version(void)
Definition: internet.c:783
static LPCWSTR
Definition: internet.c:42
#define verifyProxyEnable(e)
Definition: internet.c:1221
#define FLAG_NEEDREQ
Definition: internet.c:1467
static void InternetTimeToSystemTimeA_test(void)
Definition: internet.c:899
static LPVOID
Definition: internet.c:45
static LPDWORD
Definition: internet.c:43
static void test_format_message(HMODULE hdll)
Definition: internet.c:1811
static void InternetTimeFromSystemTimeA_test(void)
Definition: internet.c:796
static LPCSTR
Definition: internet.c:45
static const WCHAR about_blankW[]
Definition: persist.c:24
#define BOOL
Definition: nt_native.h:43
#define DWORD
Definition: nt_native.h:44
long LONG
Definition: pedump.c:60
#define err(...)
static FILE * out
Definition: regtests2xml.c:44
#define REG_DWORD
Definition: sdbapi.c:596
#define LANG_NEUTRAL
Definition: nls.h:22
#define MAKELANGID(p, s)
Definition: nls.h:15
#define SUBLANG_NEUTRAL
Definition: nls.h:167
#define win_skip
Definition: test.h:163
#define memset(x, y, z)
Definition: compat.h:39
static PVOID hdll
Definition: shimdbg.c:126
uint32_t ULONG
Definition: typedefs.h:59
int ret
DWORD WINAPI GetLastError(void)
Definition: except.c:1042
#define FORMAT_MESSAGE_FROM_SYSTEM
Definition: winbase.h:449
#define FORMAT_MESSAGE_FROM_HMODULE
Definition: winbase.h:448
_In_ LONG _In_ HWND hwnd
Definition: winddi.h:4023
#define WINAPI
Definition: msvc.h:6
#define ERROR_INVALID_OPERATION
Definition: winerror.h:1261
#define ERROR_CANCELLED
Definition: winerror.h:726
#define NTE_PROV_TYPE_NOT_DEF
Definition: winerror.h:2891
#define ERROR_BAD_ARGUMENTS
Definition: winerror.h:232
#define ICU_DECODE
Definition: winhttp.h:291
#define ICU_BROWSER_MODE
Definition: winhttp.h:294
#define INTERNET_DEFAULT_HTTP_PORT
Definition: winhttp.h:36
#define ICU_NO_ENCODE
Definition: winhttp.h:290
BOOL WINAPI InternetGetCookieA(const char *url, const char *name, char *data, DWORD *size)
Definition: cookie.c:862
BOOL WINAPI InternetSetCookieA(LPCSTR lpszUrl, LPCSTR lpszCookieName, LPCSTR lpCookieData)
Definition: cookie.c:1139
DWORD WINAPI InternetSetCookieExA(LPCSTR lpszURL, LPCSTR lpszCookieName, LPCSTR lpszCookieData, DWORD dwFlags, DWORD_PTR dwReserved)
Definition: cookie.c:1165
BOOL WINAPI InternetGetCookieW(const WCHAR *url, const WCHAR *name, WCHAR *data, DWORD *size)
Definition: cookie.c:792
BOOL WINAPI InternetSetCookieW(const WCHAR *url, const WCHAR *name, const WCHAR *data)
Definition: cookie.c:1122
BOOL WINAPI InternetGetCookieExA(LPCSTR lpszUrl, LPCSTR lpszCookieName, LPSTR lpCookieData, LPDWORD lpdwSize, DWORD flags, void *reserved)
Definition: cookie.c:809
#define INTERNET_OPTION_CONNECTED_STATE
Definition: wininet.h:744
#define INTERNET_CONNECTION_MODEM
Definition: wininet.h:2538
#define ERROR_INTERNET_SEC_CERT_CN_INVALID
Definition: wininet.h:2026
#define INTERNET_ERROR_BASE
Definition: wininet.h:1988
#define ERROR_INTERNET_INVALID_URL
Definition: wininet.h:1994
#define INTERNET_PER_CONN_FLAGS
Definition: wininet.h:334
#define ERROR_INTERNET_OPERATION_CANCELLED
Definition: wininet.h:2006
#define ERROR_INTERNET_HTTP_TO_HTTPS_ON_REDIR
Definition: wininet.h:2027
#define INTERNET_RFC1123_FORMAT
Definition: wininet.h:407
#define ERROR_INTERNET_NEED_UI
Definition: wininet.h:2023
#define INTERNET_OPTION_USER_AGENT
Definition: wininet.h:735
#define INTERNET_SERVICE_FTP
Definition: wininet.h:560
#define ERROR_INTERNET_ITEM_NOT_FOUND
Definition: wininet.h:2017
#define PROXY_TYPE_DIRECT
Definition: wininet.h:346
#define ERROR_INTERNET_TIMEOUT
Definition: wininet.h:1991
#define ERROR_INTERNET_INSERT_CDROM
Definition: wininet.h:2040
#define ERROR_INTERNET_UNABLE_TO_DOWNLOAD_SCRIPT
Definition: wininet.h:2076
struct _INTERNET_PER_CONN_OPTION_LISTW INTERNET_PER_CONN_OPTION_LISTW
#define INTERNET_OPTION_CONNECT_TIMEOUT
Definition: wininet.h:701
#define ERROR_INTERNET_FORTEZZA_LOGIN_NEEDED
Definition: wininet.h:2041
#define ERROR_INTERNET_CONNECTION_ABORTED
Definition: wininet.h:2019
#define ERROR_INTERNET_INVALID_CA
Definition: wininet.h:2033
#define ERROR_INTERNET_INCORRECT_PASSWORD
Definition: wininet.h:2003
#define INTERNET_CONNECTION_LAN
Definition: wininet.h:2539
#define ERROR_INTERNET_SEC_CERT_DATE_INVALID
Definition: wininet.h:2025
#define ERROR_INTERNET_CHG_POST_IS_NON_SECURE
Definition: wininet.h:2030
#define INTERNET_CONNECTION_CONFIGURED
Definition: wininet.h:2544
#define INTERNET_OPEN_TYPE_DIRECT
Definition: wininet.h:522
#define INTERNET_PER_CONN_PROXY_SERVER
Definition: wininet.h:335
#define INTERNET_OPTION_MAX_CONNS_PER_SERVER
Definition: wininet.h:763
#define ERROR_INTERNET_CLIENT_AUTH_CERT_NEEDED
Definition: wininet.h:2032
#define ERROR_HTTP_COOKIE_NEEDS_CONFIRMATION
Definition: wininet.h:2066
#define INTERNET_OPTION_PROXY
Definition: wininet.h:732
#define INTERNET_RFC1123_BUFSIZE
Definition: wininet.h:408
#define FLAGS_ERROR_UI_FLAGS_NO_UI
Definition: wininet.h:1909
#define ERROR_INTERNET_INVALID_OPERATION
Definition: wininet.h:2005
#define INTERNET_OPTION_PER_CONNECTION_OPTION
Definition: wininet.h:765
#define ERROR_HTTP_COOKIE_DECLINED
Definition: wininet.h:2067
#define ERROR_HTTP_REDIRECT_NEEDS_CONFIRMATION
Definition: wininet.h:2068
#define ERROR_INTERNET_MIXED_SECURITY
Definition: wininet.h:2029
#define INTERNET_OPTION_VERSION
Definition: wininet.h:734
#define ERROR_INTERNET_SEC_CERT_WEAK_SIGNATURE
Definition: wininet.h:2045
#define INTERNET_OPTION_ERROR_MASK
Definition: wininet.h:755
#define ERROR_INTERNET_INVALID_OPTION
Definition: wininet.h:1998
#define INTERNET_RAS_INSTALLED
Definition: wininet.h:2542
#define ERROR_INTERNET_CANNOT_CONNECT
Definition: wininet.h:2018
#define INTERNET_COOKIE_HTTPONLY
Definition: wininet.h:1828
#define INTERNET_OPTION_POLICY
Definition: wininet.h:742
@ COOKIE_STATE_ACCEPT
Definition: wininet.h:1792
@ COOKIE_STATE_REJECT
Definition: wininet.h:1796
#define ERROR_INTERNET_HTTPS_HTTP_SUBMIT_REDIR
Definition: wininet.h:2039
#define ERROR_INTERNET_NAME_NOT_RESOLVED
Definition: wininet.h:1996
#define INTERNET_ERROR_LAST
Definition: wininet.h:2084
#define ERROR_INTERNET_POST_IS_NON_SECURE
Definition: wininet.h:2031
#define ERROR_INTERNET_SEC_CERT_REV_FAILED
Definition: wininet.h:2044
#define PRIVACY_TEMPLATE_ADVANCED
Definition: wininet.h:1962
#define ERROR_INTERNET_INCORRECT_HANDLE_TYPE
Definition: wininet.h:2007
#define INTERNET_OPTION_REFRESH
Definition: wininet.h:731
#define ERROR_INTERNET_BAD_OPTION_LENGTH
Definition: wininet.h:1999
#define ERROR_INTERNET_SEC_CERT_REVOKED
Definition: wininet.h:2078
#define ERROR_INTERNET_SEC_CERT_ERRORS
Definition: wininet.h:2042
#define PROXY_TYPE_PROXY
Definition: wininet.h:347
#define ERROR_INTERNET_BAD_AUTO_PROXY_SCRIPT
Definition: wininet.h:2075
struct _INTERNET_PER_CONN_OPTION_LISTA INTERNET_PER_CONN_OPTION_LISTA
#define ERROR_INTERNET_HTTPS_TO_HTTP_ON_REDIR
Definition: wininet.h:2028
#define INTERNET_OPTION_SETTINGS_CHANGED
Definition: wininet.h:733
#define INTERNET_OPTION_MAX_CONNS_PER_1_0_SERVER
Definition: wininet.h:764
#define ERROR_INTERNET_UNRECOGNIZED_SCHEME
Definition: wininet.h:1995
#define INTERNET_OPTION_END_BROWSER_SESSION
Definition: wininet.h:736
#define ERROR_INTERNET_INTERNAL_ERROR
Definition: wininet.h:1993
#define INTERNET_SERVICE_HTTP
Definition: wininet.h:562
#define INTERNET_OPTION_REQUEST_FLAGS
Definition: wininet.h:718
#define ERROR_INTERNET_PROXY_ALERT
Definition: winineti.h:112
#define HKEY_CURRENT_USER
Definition: winreg.h:11
HWND WINAPI GetDesktopWindow(void)
Definition: window.c:628
const char * LPCSTR
Definition: xmlstorage.h:183
char * LPSTR
Definition: xmlstorage.h:182
__wchar_t WCHAR
Definition: xmlstorage.h:180
WCHAR * LPWSTR
Definition: xmlstorage.h:184
char CHAR
Definition: xmlstorage.h:175
unsigned char BYTE
Definition: xxhash.c:193