34DEFINE_GUID(
CLSID_AboutProtocol, 0x3050F406, 0x98B5, 0x11CF, 0xBB,0x82, 0x00,0xAA,0x00,0xBD,0xCE,0x0B);
36#define DEFINE_EXPECT(func) \
37 static BOOL expect_ ## func = FALSE, called_ ## func = FALSE
39#define SET_EXPECT(func) \
40 expect_ ## func = TRUE
42#define CHECK_EXPECT(func) \
44 ok(expect_ ##func, "unexpected call " #func "\n"); \
45 expect_ ## func = FALSE; \
46 called_ ## func = TRUE; \
49#define CHECK_EXPECT2(func) \
51 ok(expect_ ##func, "unexpected call " #func "\n"); \
52 called_ ## func = TRUE; \
55#define CHECK_CALLED(func) \
57 ok(called_ ## func, "expected " #func "\n"); \
58 expect_ ## func = called_ ## func = FALSE; \
73static HRESULT (
WINAPI *pCopyStgMedium)(
const STGMEDIUM *, STGMEDIUM *);
74static HRESULT (
WINAPI *pCopyBindInfo)(
const BINDINFO *, BINDINFO *);
108 static DVTARGETDEVICE
dev = {
sizeof(
dev),0,0,0,0,{0}};
109 static FORMATETC formatetc[] = {
118 ok(
hres ==
E_FAIL,
"CreateFormatEnumerator failed: %08lx, expected E_FAIL\n",
hres);
130 hres = IEnumFORMATETC_Next(fenum, 2,
NULL, &ul);
133 hres = IEnumFORMATETC_Next(fenum, 0, fetc, &ul);
135 ok(ul == 0,
"ul=%ld, expected 0\n", ul);
137 hres = IEnumFORMATETC_Next(fenum, 2, fetc, &ul);
139 ok(fetc[0].lindex == 0,
"fetc[0].lindex=%ld, expected 0\n", fetc[0].lindex);
140 ok(fetc[1].lindex == 1,
"fetc[1].lindex=%ld, expected 1\n", fetc[1].lindex);
141 ok(fetc[0].
ptd == &
dev,
"fetc[0].ptd=%p, expected %p\n", fetc[0].
ptd, &
dev);
142 ok(ul == 2,
"ul=%ld, expected 2\n", ul);
144 hres = IEnumFORMATETC_Skip(fenum, 1);
147 hres = IEnumFORMATETC_Next(fenum, 4, fetc, &ul);
149 ok(fetc[0].lindex == 3,
"fetc[0].lindex=%ld, expected 3\n", fetc[0].lindex);
150 ok(fetc[1].lindex == 4,
"fetc[1].lindex=%ld, expected 4\n", fetc[1].lindex);
151 ok(fetc[0].
ptd ==
NULL,
"fetc[0].ptd=%p, expected NULL\n", fetc[0].
ptd);
152 ok(ul == 2,
"ul=%ld, expected 2\n", ul);
154 hres = IEnumFORMATETC_Next(fenum, 4, fetc, &ul);
156 ok(ul == 0,
"ul=%ld, expected 0\n", ul);
158 hres = IEnumFORMATETC_Next(fenum, 0, fetc, &ul);
160 ok(ul == 0,
"ul=%ld, expected 0\n", ul);
162 hres = IEnumFORMATETC_Skip(fenum, 3);
165 hres = IEnumFORMATETC_Reset(fenum);
168 hres = IEnumFORMATETC_Next(fenum, 5, fetc,
NULL);
170 ok(fetc[0].lindex == 0,
"fetc[0].lindex=%ld, expected 0\n", fetc[0].lindex);
172 hres = IEnumFORMATETC_Reset(fenum);
175 hres = IEnumFORMATETC_Skip(fenum, 2);
178 hres = IEnumFORMATETC_Clone(fenum,
NULL);
181 hres = IEnumFORMATETC_Clone(fenum, &fenum2);
185 ok(fenum != fenum2,
"fenum == fenum2\n");
187 hres = IEnumFORMATETC_Next(fenum2, 2, fetc, &ul);
189 ok(fetc[0].lindex == 2,
"fetc[0].lindex=%ld, expected 2\n", fetc[0].lindex);
191 IEnumFORMATETC_Release(fenum2);
194 hres = IEnumFORMATETC_Next(fenum, 2, fetc, &ul);
196 ok(fetc[0].lindex == 2,
"fetc[0].lindex=%ld, expected 2\n", fetc[0].lindex);
198 hres = IEnumFORMATETC_Skip(fenum, 1);
201 IEnumFORMATETC_Release(fenum);
211 static FORMATETC formatetc = {0,
NULL,0,0,0};
213 {
'_',
'E',
'n',
'u',
'm',
'F',
'O',
'R',
'M',
'A',
'T',
'E',
'T',
'C',
'_',0};
224 "RegisterFormatEnumerator failed: %08lx, expected E_INVALIDARG\n",
hres);
227 "RegisterFormatEnumerator failed: %08lx, expected E_INVALIDARG\n",
hres);
230 ok(
hres ==
S_OK,
"RegisterFormatEnumerator failed: %08lx\n",
hres);
238 "RevokeFormatEnumerator failed: %08lx, expected E_INVALIDARG\n",
hres);
244 ok(
hres ==
E_FAIL,
"RevokeFormatEnumerator failed: %08lx, expected E_FAIL\n",
hres);
247 ok(
hres ==
E_FAIL,
"GetObjectParam failed: %08lx, expected E_FAIL\n",
hres);
250 ok(
hres ==
S_OK,
"RegisterFormatEnumerator failed: %08lx\n",
hres);
259 IEnumFORMATETC_Release(format2);
263 ok(
hres ==
E_FAIL,
"GetObjectParam failed: %08lx, expected E_FAIL\n",
hres);
265 IEnumFORMATETC_Release(
format);
268 ok(
hres ==
S_OK,
"RegisterFormatEnumerator failed: %08lx\n",
hres);
272 ok(
hres ==
E_FAIL,
"GetObjectParam failed: %08lx, expected E_FAIL\n",
hres);
274 IEnumFORMATETC_Release(
format);
275 IBindCtx_Release(bctx);
277static const WCHAR url1[] = {
'r',
'e',
's',
':',
'/',
'/',
'm',
's',
'h',
't',
'm',
'l',
'.',
'd',
'l',
'l',
278 '/',
'b',
'l',
'a',
'n',
'k',
'.',
'h',
't',
'm',0};
279static const WCHAR url2[] = {
'i',
'n',
'd',
'e',
'x',
'.',
'h',
't',
'm',0};
280static const WCHAR url3[] = {
'f',
'i',
'l',
'e',
':',
'/',
'/',
'c',
':',
'\\',
'I',
'n',
'd',
'e',
'x',
'.',
'h',
't',
'm',0};
281static const WCHAR url4[] = {
'f',
'i',
'l',
'e',
':',
's',
'o',
'm',
'e',
'%',
'2',
'0',
'f',
'i',
'l',
'e',
282 '%',
'2',
'e',
'j',
'p',
'g',0};
283static const WCHAR url5[] = {
'h',
't',
't',
'p',
':',
'/',
'/',
'w',
'w',
'w',
'.',
'w',
'i',
'n',
'e',
'h',
'q',
285static const WCHAR url6[] = {
'a',
'b',
'o',
'u',
't',
':',
'b',
'l',
'a',
'n',
'k',0};
286static const WCHAR url7[] = {
'f',
't',
'p',
':',
'/',
'/',
'w',
'i',
'n',
'e',
'h',
'q',
'.',
'o',
'r',
'g',
'/',
287 'f',
'i',
'l',
'e',
'.',
't',
'e',
's',
't',0};
288static const WCHAR url8[] = {
't',
'e',
's',
't',
':',
'1',
'2',
'3',
'a',
'b',
'c',0};
290 {
'h',
't',
't',
'p',
':',
'/',
'/',
'w',
'w',
'w',
'.',
'w',
'i',
'n',
'e',
'h',
'q',
'.',
'o',
'r',
'g',
291 '/',
's',
'i',
't',
'e',
'/',
'a',
'b',
'o',
'u',
't',0};
292static const WCHAR url10[] = {
'h',
't',
't',
'p',
':',
'/',
'/',
'g',
'o',
'o',
'g',
'l',
'e',
'.',
'*',
'.',
294static const WCHAR url4e[] = {
'f',
'i',
'l',
'e',
':',
's',
'o',
'm',
'e',
' ',
'f',
'i',
'l',
'e',
297static const WCHAR path3[] = {
'c',
':',
'\\',
'I',
'n',
'd',
'e',
'x',
'.',
'h',
't',
'm',0};
298static const WCHAR path4[] = {
's',
'o',
'm',
'e',
' ',
'f',
'i',
'l',
'e',
'.',
'j',
'p',
'g',0};
305static const WCHAR wszGoogle[] = {
'g',
'o',
'o',
'g',
'l',
'e',
'.',
'*',
'.',
'c',
'o',
'm',0};
307static const WCHAR wszWineHQ[] = {
'w',
'w',
'w',
'.',
'w',
'i',
'n',
'e',
'h',
'q',
'.',
'o',
'r',
'g',0};
308static const WCHAR wszHttpWineHQ[] = {
'h',
't',
't',
'p',
':',
'/',
'/',
'w',
'w',
'w',
'.',
309 'w',
'i',
'n',
'e',
'h',
'q',
'.',
'o',
'r',
'g',0};
310static const WCHAR wszHttpGoogle[] = {
'h',
't',
't',
'p',
':',
'/',
'/',
'g',
'o',
'o',
'g',
'l',
'e',
311 '.',
'*',
'.',
'c',
'o',
'm',0};
327 {
url1,
S_OK,
url1,
E_INVALIDARG,
NULL,
wszRes,
NULL,
E_FAIL,
NULL,
E_FAIL},
328 {
url2,
E_FAIL,
url2,
E_INVALIDARG,
NULL,
wszEmpty,
NULL,
E_FAIL,
NULL,
E_FAIL},
329 {
url3,
E_FAIL,
url3,
S_OK,
path3,
wszFile,
wszEmpty,
S_OK,
NULL,
E_FAIL},
330 {
url4,
E_FAIL,
url4e,
S_OK,
path4,
wszFile,
wszEmpty,
S_OK,
NULL,
E_FAIL},
331 {
url5,
E_FAIL,
url5,
E_INVALIDARG,
NULL,
wszHttp,
wszWineHQ,
S_OK,
wszHttpWineHQ,
S_OK},
332 {
url6,
S_OK,
url6,
E_INVALIDARG,
NULL,
wszAbout,
NULL,
E_FAIL,
NULL,
E_FAIL},
406 hres = pCoInternetParseUrl(
L"http://a/b/../c", PARSE_CANONICALIZE, 0,
buf, 3, &
size, 0);
411 hres = pCoInternetParseUrl(
L"http://a/b/../c", PARSE_CANONICALIZE, 0,
buf,
sizeof(
buf), &
size, 0);
455 ok(
hres ==
S_OK,
"[%ld] CoInternetQueryInfo failed: %08lx\n",
i,
hres);
461 ok(
hres ==
E_FAIL,
"[%ld] CoInternetQueryInfo failed: %08lx, expected E_FAIL\n",
i,
hres);
463 ok(
hres ==
E_FAIL,
"[%ld] CoInternetQueryInfo failed: %08lx, expected E_FAIL\n",
i,
hres);
467 ok(
hres ==
S_OK,
"[%ld] CoInternetQueryInfo failed: %08lx\n",
i,
hres);
480 {
L"res://mshtml.dll/blank.htm",
L"text/html",
S_OK},
481 {
L"index.htm",
L"text/html",
S_OK},
482 {
L"file://c:\\Index.htm",
L"text/html",
S_OK},
483 {
L"file://c:\\Index.htm?q=test",
L"text/html",
S_OK,
TRUE},
484 {
L"file://c:\\Index.htm#hash_part",
L"text/html",
S_OK,
TRUE},
485 {
L"file://c:\\Index.htm#hash_part.txt",
L"text/html",
S_OK,
FALSE,
L"text/plain"},
493static BYTE data2[] = {31,
't',
'e',
's',0xfa,
't',
' ',
'd',
'a',
't',
'a',
'\n',0};
495static BYTE data4[] = {
't',
'e',
's',0xfa,
't',
' ',
'd',
'a',
't',
'a',
'\n',0,0};
497static BYTE data6[] = {0xfa,0xfa,0xfa,0xfa,
'\n',
'\r',
'\t',
'x',
'x',
'x',1};
499static BYTE data8[] = {
't',
'e',
's',0xfa,
't',
' ',
'<',
'h',
't',
'm',
'l',
'>',
'd',
'a',
't',
'a',
'\n',0,0};
500static BYTE data9[] = {
't',
'e',0,
's',0xfa,
't',
' ',
'<',
'h',
't',
'm',
'l',
'>',
'd',
'a',
't',
'a',
'\n',0,0};
517static BYTE data26[] = {
'G',
'i',
'F',
'8',
'7',
'a',
'<',
'h',
't',
'm',
'l',
'>'};
519static BYTE data28[] = {0x42,0x4d,0x6e,0x42,0x1c,0x00,0x00,0x00,0x00,0x00,0x36,0x00,0x00,0x00};
520static BYTE data29[] = {0x42,0x4d,
'x',
'x',
'x',
'x',0x00,0x00,0x00,0x00,
'x',
'x',
'x',
'x'};
521static BYTE data30[] = {0x42,0x4d,
'x',
'x',
'x',
'x',0x00,0x01,0x00,0x00,
'x',
'x',
'x',
'x'};
522static BYTE data31[] = {0x42,0x4d,
'x',
'x',
'x',
'x',0x00,0x00,0x00,0x00,
'<',
'h',
't',
'm',
'l',
'>'};
523static BYTE data32[] = {0x42,0x4d,
'x',
'x',
'x',
'x',0x00,0x00,0x00,0x00,
'x',
'x',
'x'};
524static BYTE data33[] = {0x00,0x42,0x4d,
'x',
'x',
'x',
'x',0x00,0x00,0x00,0x00,
'x',
'x',
'x'};
525static BYTE data34[] = {0x89,
'P',
'N',
'G',0x0d,0x0a,0x1a,0x0a,
'x'};
526static BYTE data35[] = {0x89,
'P',
'N',
'G',0x0d,0x0a,0x1a,0x0a,
'x',
'x',
'x',
'x',0};
527static BYTE data36[] = {0x89,
'P',
'N',
'G',0x0d,0x0a,0x1a,
'x',
'x'};
528static BYTE data37[] = {0x89,
'P',
'N',
'G',0x0d,0x0a,0x1a,0x0a,
'<',
'h',
't',
'm',
'l',
'>'};
529static BYTE data38[] = {0x00,0x89,
'P',
'N',
'G',0x0d,0x0a,0x1a,0x0a,
'x'};
531static BYTE data40[] = {0x4d,0x4d,0x00,0x2a,
'<',
'h',
't',
'm',
'l',
'>',0};
535static BYTE data44[] = {
'R',
'I',
'F',
'F',0xff,0xff,0xff,0xff,
'A',
'V',
'I',0x20,0xff};
536static BYTE data45[] = {
'R',
'I',
'F',
'f',0xff,0xff,0xff,0xff,
'A',
'V',
'I',0x20,0xff};
537static BYTE data46[] = {
'R',
'I',
'F',
'F',0xff,0xff,0xff,0xff,
'A',
'V',
'I',0x20};
538static BYTE data47[] = {
'R',
'I',
'F',
'F',0xff,0xff,0xff,0xff,
'A',
'V',
'I',0x21,0xff};
539static BYTE data48[] = {
'R',
'I',
'F',
'F',0xff,0xff,0xff,0xff,
'A',
'V',
'I',0x20,
'<',
'h',
't',
'm',
'l',
'>'};
540static BYTE data49[] = {
'R',
'I',
'F',
'F',0x0f,0x0f,0xf0,0xf0,
'A',
'V',
'I',0x20,0xf0,0x00};
545static BYTE data54[] = {0x00,0x00,0x01,0xba,
'<',
'h',
't',
'm',
'l',
'>'};
548static BYTE data57[] = {0x1f,0x8b,
'<',
'h',
't',
'm',
'l',
'>',
't',
'e',
's',
't',0};
555static BYTE data64[] = {0xca,0xfe,0xba,0xbe,
'<',
'h',
't',
'm',
'l',
'>',0};
558static BYTE data67[] = {0x25,0x50,0x44,0x46,
'x',
'<',
'h',
't',
'm',
'l',
'>'};
561static BYTE data70[] = {
'M',
'Z',
'<',
'h',
't',
'm',
'l',
'>',0xff};
565static BYTE data74[] = {
'{',
'\\',
'r',
't',
'f',
'<',
'h',
't',
'm',
'l',
'>',
' '};
566static BYTE data75[] = {
'R',
'I',
'F',
'F',0xff,0xff,0xff,0xff,
'W',
'A',
'V',
'E',0xff};
567static BYTE data76[] = {
'R',
'I',
'F',
'F',0xff,0xff,0xff,0xff,
'W',
'A',
'V',
'E'};
568static BYTE data77[] = {
'R',
'I',
'F',
'F',0xff,0xff,0xff,0xff,
'W',
'A',
'V',0xff,0xff};
569static BYTE data78[] = {
'R',
'I',
'F',
'F',0xff,0xff,0xff,0xff,
'<',
'h',
't',
'm',
'l',
'>',0xff};
572static BYTE data81[] = {
'%',
'!',
'P',
'S',
'<',
'h',
't',
'm',
'l',
'>'};
575static BYTE data84[] = {
'.',
's',
'n',
'd',0,
'<',
'h',
't',
'm',
'l',
'>',1,1};
583static BYTE data92[] = {
'a',
'b',
'c',
'<',
'?',
'x',
'm',
'l',
' ',
' '};
584static BYTE data93[] = {
'<',
'?',
'x',
'm',
'l',
' ',
' ',
'<',
'h',
't',
'm',
'l',
'>'};
585static BYTE data94[] = {
'<',
'h',
't',
'm',
'l',
'>',
'<',
'?',
'x',
'm',
'l',
' ',
' '};
586static BYTE data95[] = {
'{',
'\\',
'r',
't',
'f',
'<',
'?',
'x',
'm',
'l',
' ',
' '};
601 {
data2,
sizeof(
data2),
L"application/octet-stream",
L"image/pjpeg"},
602 {
data3,
sizeof(
data3),
L"application/octet-stream",
L"image/pjpeg"},
603 {
data4,
sizeof(
data4),
L"application/octet-stream",
L"image/pjpeg"},
616 {
data17,
sizeof(
data17),
L"application/octet-stream",
L"image/pjpeg"},
629 {
data30,
sizeof(
data30),
L"application/octet-stream",
L"image/pjpeg"},
631 {
data32,
sizeof(
data32),
L"application/octet-stream",
L"image/pjpeg"},
632 {
data33,
sizeof(
data33),
L"application/octet-stream",
L"image/pjpeg"},
635 {
data36,
sizeof(
data36),
L"application/octet-stream",
L"image/pjpeg"},
637 {
data38,
sizeof(
data38),
L"application/octet-stream",
L"image/pjpeg"},
642 {
data43,
sizeof(
data43),
L"application/octet-stream",
L"image/pjpeg"},
651 {
data52,
sizeof(
data52),
L"application/octet-stream",
L"image/pjpeg"},
652 {
data53,
sizeof(
data53),
L"application/octet-stream",
L"image/pjpeg",
L"image/x-icon"},
656 {
data57,
sizeof(
data57),
L"text/html",
L"application/x-gzip-compressed"},
657 {
data58,
sizeof(
data58),
L"application/octet-stream",
L"image/pjpeg"},
660 {
data61,
sizeof(
data61),
L"text/html",
L"application/x-zip-compressed"},
669 {
data70,
sizeof(
data70),
L"text/html",
L"application/x-msdownload"},
680 {
data81,
sizeof(
data81),
L"text/html",
L"application/postscript"},
699 {
NULL, 0,
L"text/html",
NULL,
NULL,
L"res://mshtml.dll/blank.htm"},
700 {
data1,
sizeof(
data1),
L"text/plain",
NULL,
NULL,
L"res://mshtml.dll/blank.htm",
L"application/octet-stream"},
701 {
data1,
sizeof(
data1),
L"text/plain",
NULL,
NULL,
L"file:some%20file%2ejpg",
L"application/octet-stream"},
707 {
data1,
sizeof(
data1),
L"text/css",
NULL,
NULL,
L"http://www.winehq.org/test.css",
L"application/octet-stream"},
718 static const WCHAR app_octet_streamW[] =
719 {
'a',
'p',
'p',
'l',
'i',
'c',
'a',
't',
'i',
'o',
'n',
'/',
'o',
'c',
't',
'e',
't',
'-',
's',
't',
'r',
'e',
'a',
'm',0};
720 static const WCHAR image_pjpegW[] = {
'i',
'm',
'a',
'g',
'e',
'/',
'p',
'j',
'p',
'e',
'g',0};
721 static const WCHAR text_htmlW[] = {
't',
'e',
'x',
't',
'/',
'h',
't',
'm',
'l',0};
722 static const WCHAR text_plainW[] = {
't',
'e',
'x',
't',
'/',
'p',
'l',
'a',
'i',
'n',0};
737 "[%d] FindMimeFromData failed: %08lx, expected %08lx\n",
739 ok(
mime == (
LPWSTR)0xf0f0f0f0,
"[%d] mime != 0xf0f0f0f0\n",
i);
767 app_octet_streamW, 0, &
mime, 0);
808 ok(
hres ==
E_FAIL,
"FindMimeFromData failed: %08lx, expected E_FAIL\n",
hres);
811 ok(
hres ==
E_FAIL,
"FindMimeFromData failed: %08lx, expected E_FAIL\n",
hres);
837 ok(
hres ==
S_OK,
"Could not get AboutProtocol factory: %08lx\n",
hres);
843 IClassFactory_Release(
factory);
845 IInternetSession_Release(
session);
851 ok(0,
"unexpected call\n");
869 switch(ParseAction) {
870 case PARSE_SECURITY_URL:
900 ok(0,
"unexpected call\n");
907 ok(0,
"unexpected call\n");
915 ok(0,
"unexpected call\n");
943 ok(0,
"unexpected call\n");
960 ok(0,
"unexpected call\n");
970 ok(pOuter ==
NULL,
"pOuter = %p\n", pOuter);
980 ok(0,
"unexpected call\n");
1012 static const WCHAR wszTest[] = {
't',
'e',
's',
't',0};
1020 wszTest, 0,
NULL, 0);
1028 wszTest, 0,
NULL, 0);
1079 if (pCoInternetGetSecurityUrl) {
1080 hres = pCoInternetGetSecurityUrl(
url8, &sec_url, PSU_SECURITY_URL_ONLY, 0);
1081 ok(
hres ==
S_OK,
"CoInternetGetSecurityUrl failed: %08lx\n",
hres);
1100 wszTest, 0,
NULL, 0);
1104 wszTest, 0,
NULL, 0);
1108 wszTest, 0,
NULL, 0);
1160 IInternetSession_Release(
session);
1168 static const WCHAR mimeW[] = {
't',
'e',
's',
't',
'/',
'm',
'i',
'm',
'e',0};
1184 hres = IInternetSession_UnregisterMimeFilter(
session, (
void*)0xdeadbeef, mimeW);
1187 IInternetSession_Release(
session);
1207 pReleaseBindInfo(
NULL);
1209 memset(&bi, 0,
sizeof(bi));
1210 bi.cbSize =
sizeof(BINDINFO);
1213 pReleaseBindInfo(&bi);
1214 ok(bi.cbSize ==
sizeof(BINDINFO),
"bi.cbSize=%ld\n", bi.cbSize);
1215 ok(bi.pUnk ==
NULL,
"bi.pUnk=%p, expected NULL\n", bi.pUnk);
1218 memset(&bi, 0,
sizeof(bi));
1221 pReleaseBindInfo(&bi);
1222 ok(bi.cbSize ==
offsetof(BINDINFO,
pUnk),
"bi.cbSize=%ld\n", bi.cbSize);
1223 ok(bi.pUnk == &unk,
"bi.pUnk=%p, expected %p\n", bi.pUnk, &unk);
1225 memset(&bi, 0,
sizeof(bi));
1227 pReleaseBindInfo(&bi);
1228 ok(!bi.cbSize,
"bi.cbSize=%ld, expected 0\n", bi.cbSize);
1229 ok(bi.pUnk == &unk,
"bi.pUnk=%p, expected %p\n", bi.pUnk, &unk);
1245 src.tymed = TYMED_NULL;
1249 ok(
dst.tymed == TYMED_NULL,
"tymed=%ld\n",
dst.tymed);
1251 ok(!
dst.pUnkForRelease,
"pUnkForRelease=%p, expected NULL\n",
dst.pUnkForRelease);
1254 src.tymed = TYMED_ISTREAM;
1259 ok(
dst.tymed == TYMED_ISTREAM,
"tymed=%ld\n",
dst.tymed);
1260 ok(!
dst.pstm,
"pstm=%p\n",
dst.pstm);
1261 ok(!
dst.pUnkForRelease,
"pUnkForRelease=%p, expected NULL\n",
dst.pUnkForRelease);
1264 src.tymed = TYMED_FILE;
1269 ok(
dst.tymed == TYMED_FILE,
"tymed=%ld\n",
dst.tymed);
1270 ok(
dst.lpszFileName &&
dst.lpszFileName !=
fileW,
"lpszFileName=%p\n",
dst.lpszFileName);
1272 ok(!
dst.pUnkForRelease,
"pUnkForRelease=%p, expected NULL\n",
dst.pUnkForRelease);
1280 src.tymed = TYMED_HGLOBAL;
1284 ok(
dst.tymed == TYMED_HGLOBAL,
"tymed=%ld\n",
dst.tymed);
1285 ok(
dst.hGlobal !=
hg,
"got %p, %p\n",
dst.hGlobal,
hg);
1290 ok(!
memcmp(ptr1, ptr2, 10),
"got wrong data\n");
1298 src.tymed = TYMED_HGLOBAL;
1327 src[0].cbSize =
sizeof(BINDINFO);
1335 dest[0].cbSize =
sizeof(BINDINFO)+
sizeof(
DWORD);
1338 ok(
dest[0].cbSize ==
sizeof(BINDINFO)+
sizeof(
DWORD),
"incorrect cbSize: %ld\n",
dest[0].cbSize);
1340 ok(((
int*)
dest)[
i] == 0,
"unset values should be set to 0, got %d on %d\n", ((
int*)
dest)[
i],
i);
1344 src[0].cbSize =
sizeof(BINDINFO)+2*
sizeof(
DWORD);
1345 dest[0].cbSize =
sizeof(BINDINFO)+
sizeof(
DWORD);
1348 ok(
dest[1].cbSize ==
src[1].cbSize,
"additional data should be copied\n");
1349 ok(
dest[1].szExtraInfo !=
src[1].szExtraInfo,
1350 "data not fitting in destination buffer should not be copied\n");
1354 src[0].cbSize =
sizeof(BINDINFO);
1356 src[0].szExtraInfo[0] = 0;
1359 src[0].stgmedData.tymed = TYMED_NULL;
1360 src[0].stgmedData.pUnkForRelease =
NULL;
1361 dest[0].cbSize =
sizeof(BINDINFO);
1365 ok(
dest[0].cbSize ==
sizeof(BINDINFO),
"incorrect cbSize: %ld\n",
dest[0].cbSize);
1366 ok(
dest[0].szExtraInfo && !
dest[0].szExtraInfo[0] &&
dest[0].szExtraInfo!=
src[0].szExtraInfo,
1367 "incorrect szExtraInfo: (%p!=%p) %d\n",
dest[0].szExtraInfo,
1368 src[0].szExtraInfo,
dest[0].szExtraInfo[0]);
1369 ok(!
memcmp(&
dest[0].stgmedData, &
src[0].stgmedData,
sizeof(STGMEDIUM)),
1370 "incorrect stgmedData value\n");
1371 ok(
src[0].grfBindInfoF ==
dest[0].grfBindInfoF,
"grfBindInfoF = %lx, expected %lx\n",
1372 dest[0].grfBindInfoF,
src[0].grfBindInfoF);
1373 ok(
src[0].dwBindVerb ==
dest[0].dwBindVerb,
"dwBindVerb = %lx, expected %lx\n",
1374 dest[0].dwBindVerb,
src[0].dwBindVerb);
1375 ok(!
dest[0].szCustomVerb,
"szCustmoVerb != NULL\n");
1376 ok(
src[0].cbstgmedData ==
dest[0].cbstgmedData,
"cbstgmedData = %lx, expected %lx\n",
1377 dest[0].cbstgmedData,
src[0].cbstgmedData);
1380 ok(
src[0].dwOptionsFlags ==
dest[0].dwOptionsFlags,
"dwOptionsFlags = %lx, expected %lx\n",
1381 dest[0].dwOptionsFlags,
src[0].dwOptionsFlags);
1382 ok(
src[0].dwCodePage ==
dest[0].dwCodePage,
"dwCodePage = %lx, expected %lx\n",
1383 dest[0].dwCodePage,
src[0].dwCodePage);
1384 ok(!
dest[0].securityAttributes.nLength,
1385 "unexpected securityAttributes.nLength value: %ld\n",
1386 dest[0].securityAttributes.nLength);
1387 ok(!
dest[0].securityAttributes.lpSecurityDescriptor,
1388 "unexpected securityAttributes.lpSecurityDescriptor value: %p\n",
1389 dest[0].securityAttributes.lpSecurityDescriptor);
1390 ok(!
dest[0].securityAttributes.bInheritHandle,
1391 "unexpected securityAttributes.bInheritHandle value: %d\n",
1392 dest[0].securityAttributes.bInheritHandle);
1394 "incorrect iid value\n");
1405 "InitializeSecurityDescriptor failed\n");
1406 src[0].securityAttributes.lpSecurityDescriptor = (
void*)&sec_desc;
1407 src[0].securityAttributes.bInheritHandle =
TRUE;
1410 ok(!
dest[0].securityAttributes.nLength,
1411 "unexpected securityAttributes.nLength value: %ld\n",
1412 dest[0].securityAttributes.nLength);
1413 ok(!
dest[0].securityAttributes.lpSecurityDescriptor,
1414 "unexpected securityAttributes.lpSecurityDescriptor value: %p\n",
1415 dest[0].securityAttributes.lpSecurityDescriptor);
1416 ok(!
dest[0].securityAttributes.bInheritHandle,
1417 "unexpected securityAttributes.bInheritHandle value: %d\n",
1418 dest[0].securityAttributes.bInheritHandle);
1426 size = encoding = 0xdeadbeef;
1427 hres = pUrlMkGetSessionOption(URLMON_OPTION_URL_ENCODING, &encoding,
1428 sizeof(encoding), &
size, 0);
1430 ok(encoding != 0xdeadbeef,
"encoding not changed\n");
1431 ok(
size ==
sizeof(encoding),
"size=%ld\n",
size);
1433 size = encoding = 0xdeadbeef;
1434 hres = pUrlMkGetSessionOption(URLMON_OPTION_URL_ENCODING, &encoding,
1435 sizeof(encoding)+1, &
size, 0);
1437 ok(encoding != 0xdeadbeef,
"encoding not changed\n");
1438 ok(
size ==
sizeof(encoding),
"size=%ld\n",
size);
1440 size = encoding = 0xdeadbeef;
1441 hres = pUrlMkGetSessionOption(URLMON_OPTION_URL_ENCODING, &encoding,
1442 sizeof(encoding)-1, &
size, 0);
1444 ok(encoding == 0xdeadbeef,
"encoding = %08lx, exepcted 0xdeadbeef\n", encoding);
1447 size = encoding = 0xdeadbeef;
1448 hres = pUrlMkGetSessionOption(URLMON_OPTION_URL_ENCODING,
NULL,
1449 sizeof(encoding)-1, &
size, 0);
1451 ok(encoding == 0xdeadbeef,
"encoding = %08lx, exepcted 0xdeadbeef\n", encoding);
1454 encoding = 0xdeadbeef;
1455 hres = pUrlMkGetSessionOption(URLMON_OPTION_URL_ENCODING, &encoding,
1456 sizeof(encoding)-1,
NULL, 0);
1458 ok(encoding == 0xdeadbeef,
"encoding = %08lx, exepcted 0xdeadbeef\n", encoding);
1473 static const CHAR expected[] =
"Mozilla/4.0 (compatible; MSIE ";
1474 static char test_str[] =
"test";
1475 static char test2_str[] =
"test\0test";
1478 char ua[1024],
buf[64];
1491 ok(
size == 100,
"size=%ld, expected %d\n",
size, 100);
1496 ok(
size > 0,
"size=%ld, expected non-zero\n",
size);
1502 ok(
size > 0,
"size=%ld, expected non-zero\n",
size);
1503 ok(
str[0] ==
'a',
"str[0]=%c, expected 'a'\n",
str[0]);
1508 ok(
size > 0,
"size=%ld, expected non-zero\n",
size);
1514 ok(
size == saved,
"size=%ld, expected %ld\n",
size, saved);
1517 "user agent was \"%s\", expected to start with \"%s\"\n",
1523 for(
i = 1;
i < 12;
i++) {
1528 hres = pObtainUserAgentString(
i | UAS_EXACTLEGACY, ua, &
size);
1531 ok(!
strcmp(ua,
str2),
"unexpected UA for version %u %s, expected %s\n",
1536 hres = pObtainUserAgentString(
i != 1 ?
i : UAS_EXACTLEGACY | 7, ua, &
size);
1540 ok(!
strcmp(ua,
str2),
"unexpected UA for version %u %s, expected %s\n",
1556 }
else if(
sizeof(
void*) == 8) {
1565 ok(
'5' <= *
p && *
p <=
'8',
"unexpected version '%c'\n", *
p);
1567 win_skip(
"skipping UA tests, too old IE\n");
1595 ok(
size == saved,
"size=%ld, expected %ld\n",
size, saved);
1598 hres = pUrlMkGetSessionOption(URLMON_OPTION_USERAGENT,
NULL, 0, &
size, 0);
1603 hres = pUrlMkGetSessionOption(URLMON_OPTION_USERAGENT,
NULL, 1000, &
size, 0);
1609 hres = pUrlMkGetSessionOption(URLMON_OPTION_USERAGENT,
str2, saved+10, &
size, 0);
1611 ok(
size == saved,
"size = %ld, expected %ld\n",
size, saved);
1613 "user agent was \"%s\", expected to start with \"%s\"\n",
1618 hres = pUrlMkGetSessionOption(URLMON_OPTION_USERAGENT,
str2, saved, &
size, 0);
1620 ok(
size == saved,
"size = %ld, expected %ld\n",
size, saved);
1622 "user agent was \"%s\", expected to start with \"%s\"\n",
1627 hres = pUrlMkGetSessionOption(URLMON_OPTION_USERAGENT,
str2, saved-1, &
size, 0);
1629 ok(
size == saved,
"size = %ld, expected %ld\n",
size, saved);
1630 ok(!
str2[0],
"buf changed\n");
1634 hres = pUrlMkGetSessionOption(URLMON_OPTION_USERAGENT,
str2, saved,
NULL, 0);
1636 ok(!
str2[0],
"buf changed\n");
1643 hres = pUrlMkGetSessionOption(URLMON_OPTION_USERAGENT,
str2, saved, &
size, 0);
1645 ok(
size ==
sizeof(test_str) && !
memcmp(
str2, test_str,
sizeof(test_str)),
"wrong user agent\n");
1647 for(
i = 0;
i < 12;
i++) {
1649 hres = pObtainUserAgentString(
i, ua, &
size);
1650 ok(
hres ==
S_OK,
"[%u] ObtainUserAgentString failed: %08lx\n",
i,
hres);
1653 ok(
strcmp(ua, test_str),
"[%u] unexpected UA, did not expect \"test\"\n",
i);
1658 hres = pObtainUserAgentString(
i | UAS_EXACTLEGACY, ua, &
size);
1659 ok(
hres ==
S_OK,
"[%u] ObtainUserAgentString failed: %08lx\n",
i,
hres);
1662 ok(
strcmp(ua, test_str),
"[%u] unexpected UA, did not expect \"test\"\n",
i);
1672 hres = pUrlMkGetSessionOption(URLMON_OPTION_USERAGENT,
str2, saved, &
size, 0);
1674 ok(
size ==
sizeof(test_str) && !
memcmp(
str2, test_str,
sizeof(test_str)),
"wrong user agent\n");
1681 hres = pUrlMkGetSessionOption(URLMON_OPTION_USERAGENT,
str2, saved, &
size, 0);
1706 static const WCHAR clsid_nameW[] = {
'c',
'l',
's',
'i',
'd',
':',
1707 '2',
'0',
'D',
'0',
'4',
'F',
'E',
'0',
'-',
'3',
'A',
'E',
'A',
'-',
'1',
'0',
'6',
'9',
'-',
'A',
'2',
'D',
'8',
1708 '-',
'0',
'8',
'0',
'0',
'2',
'B',
'3',
'0',
'3',
'0',
'9',
'D',
':',0};
1716 } invalid_parameters[] =
1729 {&bctx,
NULL, &eaten, &mon},
1745 invalid_parameters[
i].szDisplayName,
1746 invalid_parameters[
i].pchEaten,
1747 invalid_parameters[
i].ppmk);
1749 "[%d] Expected MkParseDisplayNameEx to return E_INVALIDARG, got %08lx\n",
i,
hres);
1750 ok(eaten == 0xdeadbeef,
"[%d] Expected eaten to be 0xdeadbeef, got %lu\n",
i, eaten);
1751 ok(mon == (
IMoniker *)0xdeadbeef,
"[%d] Expected mon to be 0xdeadbeef, got %p\n",
i, mon);
1757 ok(mon !=
NULL,
"mon == NULL\n");
1764 hres = IMoniker_IsSystemMoniker(mon, &issys);
1766 ok(issys == MKSYS_URLMONIKER,
"issys=%lx\n", issys);
1768 IMoniker_Release(mon);
1772 ok(eaten ==
ARRAY_SIZE(clsid_nameW)-1,
"eaten=%ld\n", eaten);
1773 ok(mon !=
NULL,
"mon == NULL\n");
1775 hres = IMoniker_IsSystemMoniker(mon, &issys);
1777 ok(issys == MKSYS_CLASSMONIKER,
"issys=%lx\n", issys);
1779 IMoniker_Release(mon);
1784 IBindCtx_Release(bctx);
1796 ok(
hr ==
S_OK,
"Expected S_OK, got %08lx\n",
hr);
1801 ok(
hr ==
S_OK,
"Expected S_OK, got %08lx\n",
hr);
1803 IBindCtx_Release(bctx);
1806static const struct {
1812 {FEATURE_OBJECT_CACHING,GET_FEATURE_FROM_PROCESS,
S_OK},
1875 static const char* szFeatureBehaviorsKey =
"FEATURE_BEHAVIORS";
1876 static const char* szFeatureZoneElevationKey =
"FEATURE_ZONE_ELEVATION";
1878 if(!pIEInstallScope) {
1879 win_skip(
"Skipping internet feature registry tests, IE is too old...\n");
1895 delete_feature_key =
FALSE;
1906 ok(
hres ==
S_FALSE,
"CoInternetIsFeatureEnabled returned %08lx, expected S_FALSE\n",
hres);
1908 if(delete_feature_key) {
1918 ok(
hres ==
S_FALSE,
"CoInternetIsFeatureEnabled returned %08lx, expected S_FALSE\n",
hres);
1922 ok(
hres ==
S_OK,
"CoInternetSetFeatureEnabled failed: %08lx\n",
hres);
1936 skip(
"Not allowed to modify zone elevation\n");
1945 ok(
hres ==
S_OK,
"CoInternetIsFeatureEnabled returned %08lx, expected S_OK\n",
hres);
1955 ok(
hres ==
S_OK,
"CoInternetIsFeatureEnabled returned %08lx, expected S_OK\n",
hres);
1958 ok(
hres ==
S_OK,
"CoInternetSetFeatureEnabled failed: %08lx\n",
hres);
1967 hres = pCoInternetIsFeatureEnabled(FEATURE_ENTRY_COUNT, GET_FEATURE_FROM_PROCESS);
1968 ok(
hres ==
E_FAIL,
"CoInternetIsFeatureEnabled returned %08lx, expected E_FAIL\n",
hres);
1971static const struct {
1990 hres = pCoInternetSetFeatureEnabled(FEATURE_ENTRY_COUNT,SET_FEATURE_ON_PROCESS,
TRUE);
1991 ok(
hres ==
E_FAIL,
"CoInternetSetFeatureEnabled returned %08lx, expected E_FAIL\n",
hres);
2012 if(!pCoInternetIsFeatureEnabled || !pCoInternetSetFeatureEnabled) {
2013 win_skip(
"Skipping internet feature tests, IE is too old\n");
2029 trace(
"Running features tests in a separated process.\n");
2077 ok(0,
"unexpected call\n");
2083 ok(0,
"unexpected call\n");
2089 ok(0,
"unexpected call\n");
2096 ok(0,
"unexpected call\n");
2102 ok(0,
"unexpected call\n");
2117 DWORD dwSize, FORMATETC* pformatetc, STGMEDIUM* pstgmed)
2126 ok(0,
"unexpected call\n");
2131 BINDINFO *pbindinfo,
DWORD *grfBINDF2,
DWORD *pdwReserved)
2175 IUnknown_AddRef(iface);
2212 MSHCTX_INPROC,
NULL, MSHLFLAGS_NORMAL);
2232 FORMATETC formatetc = {0,
NULL, 1, -1, TYMED_ISTREAM};
2238 WCHAR *extra_info_out;
2247 ok(
hres ==
S_OK,
"CreateStreamOnHGlobal returned: %08lx\n",
hres);
2257 ok(
hres ==
S_OK,
"CreateStreamOnHGlobal returned: %08lx\n",
hres);
2258 hres = IStream_Write(binding_stream,
"xxx", 3,
NULL);
2261 rem_bindf = BINDF_ASYNCHRONOUS | BINDF_ASYNCSTORAGE | BINDF_PULLDATA;
2264 memset(&bindinfo, 0,
sizeof(bindinfo));
2265 bindinfo.cbSize =
sizeof(bindinfo);
2266 bindinfo.grfBindInfoF = 12;
2267 bindinfo.dwBindVerb = 13;
2268 bindinfo.cbstgmedData = 19;
2269 bindinfo.dwOptions = 14;
2270 bindinfo.dwOptionsFlags = 15;
2271 bindinfo.dwCodePage = 16;
2272 bindinfo.securityAttributes.nLength = 30;
2273 bindinfo.securityAttributes.lpSecurityDescriptor = (
void*)0xdead0001;
2274 bindinfo.securityAttributes.bInheritHandle = 31;
2275 bindinfo.iid.Data1 = 17;
2276 bindinfo.pUnk = (
IUnknown*)0xdeadbeef;
2277 bindinfo.dwReserved = 18;
2292 rem_bindinfo.securityAttributes.lpSecurityDescriptor = (
void*)0xdead0002;
2300 hres = IBindStatusCallback_GetBindInfo(
bsc, &
bindf, &bindinfo);
2316 ok(!
in_bindinfo.securityAttributes.nLength,
"securityAttributes.nLength = %lu\n",
2319 "securityAttributes.lpSecurityDescriptor = %p\n",
2320 in_bindinfo.securityAttributes.lpSecurityDescriptor);
2321 ok(!
in_bindinfo.securityAttributes.bInheritHandle,
"securityAttributes.bInheritHandle = %u\n",
2323 ok(!
in_bindinfo.stgmedData.pUnkForRelease,
"pUnkForRelease = %p\n",
2327 ok(!
lstrcmpW(bindinfo.szExtraInfo,
L"extra info out"),
2329 ok(bindinfo.grfBindInfoF == 22,
"grfBindInfoF = %lu\n",
rem_bindinfo.grfBindInfoF);
2330 ok(bindinfo.dwBindVerb == 23,
"dwBindVerb = %lu\n", bindinfo.dwBindVerb);
2331 ok(bindinfo.szCustomVerb != verb_out,
"szCustomVerb == inbuf\n");
2332 ok(!
lstrcmpW(bindinfo.szCustomVerb,
L"custom verb out"),
"szCustomVerb = %s\n",
2334 ok(bindinfo.cbstgmedData == 29,
"cbstgmedData = %lu\n", bindinfo.cbstgmedData);
2335 ok(bindinfo.dwOptions == 24,
"dwOptions = %lu\n", bindinfo.dwOptions);
2336 ok(bindinfo.dwOptionsFlags == 25,
"dwOptionsFlags = %lu\n", bindinfo.dwOptionsFlags);
2337 ok(bindinfo.dwCodePage,
"dwCodePage = %lu\n", bindinfo.dwCodePage);
2339 ok(!bindinfo.pUnk,
"pUnk = %p\n", bindinfo.pUnk);
2340 ok(bindinfo.dwReserved == 18,
"dwReserved = %lu\n", bindinfo.dwReserved);
2341 ok(bindinfo.securityAttributes.nLength == 30,
"securityAttributes.nLength = %lu\n",
2342 bindinfo.securityAttributes.nLength);
2343 ok(bindinfo.securityAttributes.lpSecurityDescriptor == (
void*)0xdead0001,
2344 "securityAttributes.lpSecurityDescriptor = %p\n",
2345 bindinfo.securityAttributes.lpSecurityDescriptor);
2346 ok(bindinfo.securityAttributes.bInheritHandle == 31,
"securityAttributes.bInheritHandle = %u\n",
2347 bindinfo.securityAttributes.bInheritHandle);
2349 bindinfo.stgmedData.pUnkForRelease);
2352 bindinfo.stgmedData.pUnkForRelease =
NULL;
2356 hres = IStream_Seek(binding_stream,
zero, STREAM_SEEK_SET,
NULL);
2360 rem_bindf = BINDF_ASYNCHRONOUS | BINDF_ASYNCSTORAGE | BINDF_PULLDATA;
2363 memset(&bindinfo, 0,
sizeof(bindinfo));
2364 bindinfo.cbSize =
sizeof(bindinfo);
2372 IStream_AddRef(binding_stream);
2374 hres = IBindStatusCallback_GetBindInfo(
bsc, &
bindf, &bindinfo);
2380 ok(
in_bindinfo.stgmedData.tymed == TYMED_NULL,
"tymed = %lu\n",
2383 ok(bindinfo.cbSize ==
sizeof(bindinfo),
"cbSize = %lu\n", bindinfo.cbSize);
2384 ok(!bindinfo.pUnk,
"pUnk = %p\n", bindinfo.pUnk);
2385 ok(bindinfo.stgmedData.tymed == TYMED_NULL,
"tymed = %lu\n",
2386 bindinfo.stgmedData.tymed);
2387 ok(!bindinfo.stgmedData.pstm,
"stm = %p\n",
2388 bindinfo.stgmedData.pstm);
2389 ok(!bindinfo.stgmedData.pUnkForRelease,
"pUnkForRelease = %p\n",
2390 bindinfo.stgmedData.pUnkForRelease);
2391 ok(bindinfo.cbstgmedData == 3,
"cbstgmedData = %lu\n", bindinfo.cbstgmedData);
2396 rem_bindf = BINDF_ASYNCHRONOUS | BINDF_ASYNCSTORAGE | BINDF_PULLDATA;
2399 memset(&bindinfo, 0,
sizeof(bindinfo));
2400 bindinfo.cbSize =
sizeof(bindinfo);
2410 IStream_AddRef(binding_stream);
2412 hres = IBindStatusCallback_GetBindInfo(
bsc, &
bindf, &bindinfo);
2418 ok(
in_bindinfo.stgmedData.tymed == TYMED_NULL,
"tymed = %lu\n",
2421 ok(bindinfo.cbSize ==
sizeof(bindinfo),
"cbSize = %lu\n", bindinfo.cbSize);
2422 ok(!bindinfo.pUnk,
"pUnk = %p\n", bindinfo.pUnk);
2423 ok(bindinfo.stgmedData.tymed == TYMED_NULL,
"tymed = %lu\n",
2424 bindinfo.stgmedData.tymed);
2425 ok(!bindinfo.stgmedData.pstm,
"stm = %p\n",
2426 bindinfo.stgmedData.pstm);
2427 ok(!bindinfo.stgmedData.pUnkForRelease,
"pUnkForRelease = %p\n",
2428 bindinfo.stgmedData.pUnkForRelease);
2429 ok(bindinfo.cbstgmedData == 3,
"cbstgmedData = %lu\n", bindinfo.cbstgmedData);
2434 rem_bindf = BINDF_ASYNCHRONOUS | BINDF_ASYNCSTORAGE | BINDF_PULLDATA;
2437 memset(&bindinfo, 0,
sizeof(bindinfo));
2438 bindinfo.cbSize =
sizeof(bindinfo);
2450 hres = IBindStatusCallback_GetBindInfo(
bsc, &
bindf, &bindinfo);
2456 ok(
in_bindinfo.stgmedData.tymed == TYMED_NULL,
"tymed = %lu\n",
2459 ok(bindinfo.cbSize ==
sizeof(bindinfo),
"cbSize = %lu\n", bindinfo.cbSize);
2460 ok(!bindinfo.pUnk,
"pUnk = %p\n", bindinfo.pUnk);
2461 ok(bindinfo.stgmedData.tymed == TYMED_NULL,
"tymed = %lu\n",
2462 bindinfo.stgmedData.tymed);
2463 ok(!bindinfo.stgmedData.pstm,
"stm = %p\n",
2464 bindinfo.stgmedData.pstm);
2465 ok(!bindinfo.stgmedData.pUnkForRelease,
"pUnkForRelease = %p\n",
2466 bindinfo.stgmedData.pUnkForRelease);
2467 ok(bindinfo.cbstgmedData == 5,
"cbstgmedData = %lu\n", bindinfo.cbstgmedData);
2472 hres = IBindStatusCallback_QueryInterface(
bsc, &IID_IBindStatusCallbackEx, (
void**)&callbackex);
2476 rem_bindf = BINDF_ASYNCHRONOUS | BINDF_ASYNCSTORAGE | BINDF_PULLDATA;
2479 memset(&bindinfo, 0,
sizeof(bindinfo));
2480 bindinfo.cbSize =
sizeof(bindinfo);
2481 bindinfo.grfBindInfoF = 12;
2482 bindinfo.dwBindVerb = 13;
2483 bindinfo.cbstgmedData = 19;
2484 bindinfo.dwOptions = 14;
2485 bindinfo.dwOptionsFlags = 15;
2486 bindinfo.dwCodePage = 16;
2487 bindinfo.securityAttributes.nLength = 30;
2488 bindinfo.securityAttributes.lpSecurityDescriptor = (
void*)0xdead0001;
2489 bindinfo.securityAttributes.bInheritHandle = 31;
2490 bindinfo.iid.Data1 = 17;
2491 bindinfo.pUnk = (
IUnknown*)0xdeadbeef;
2492 bindinfo.dwReserved = 18;
2507 rem_bindinfo.securityAttributes.lpSecurityDescriptor = (
void*)0xdead0002;
2515 hres = IBindStatusCallbackEx_GetBindInfoEx(callbackex, &
bindf, &bindinfo, &bindf2, &
reserved);
2518 ok(bindf2 == 11,
"bindf2 = %lx\n",
bindf);
2533 ok(!
in_bindinfo.securityAttributes.nLength,
"securityAttributes.nLength = %lu\n",
2536 "securityAttributes.lpSecurityDescriptor = %p\n",
2537 in_bindinfo.securityAttributes.lpSecurityDescriptor);
2538 ok(!
in_bindinfo.securityAttributes.bInheritHandle,
"securityAttributes.bInheritHandle = %u\n",
2540 ok(!
in_bindinfo.stgmedData.pUnkForRelease,
"pUnkForRelease = %p\n",
2544 ok(!
lstrcmpW(bindinfo.szExtraInfo,
L"extra info out"),
2546 ok(bindinfo.grfBindInfoF == 22,
"grfBindInfoF = %lu\n",
rem_bindinfo.grfBindInfoF);
2547 ok(bindinfo.dwBindVerb == 23,
"dwBindVerb = %lu\n", bindinfo.dwBindVerb);
2548 ok(!
lstrcmpW(bindinfo.szCustomVerb,
L"custom verb out"),
"szCustomVerb = %s\n",
2550 ok(bindinfo.cbstgmedData == 29,
"cbstgmedData = %lu\n", bindinfo.cbstgmedData);
2551 ok(bindinfo.dwOptions == 24,
"dwOptions = %lu\n", bindinfo.dwOptions);
2552 ok(bindinfo.dwOptionsFlags == 25,
"dwOptionsFlags = %lu\n", bindinfo.dwOptionsFlags);
2553 ok(bindinfo.dwCodePage,
"dwCodePage = %lu\n", bindinfo.dwCodePage);
2555 ok(!bindinfo.pUnk,
"pUnk = %p\n", bindinfo.pUnk);
2556 ok(bindinfo.dwReserved == 18,
"dwReserved = %lu\n", bindinfo.dwReserved);
2557 ok(bindinfo.securityAttributes.nLength == 30,
"securityAttributes.nLength = %lu\n",
2558 bindinfo.securityAttributes.nLength);
2559 ok(bindinfo.securityAttributes.lpSecurityDescriptor == (
void*)0xdead0001,
2560 "securityAttributes.lpSecurityDescriptor = %p\n",
2561 bindinfo.securityAttributes.lpSecurityDescriptor);
2562 ok(bindinfo.securityAttributes.bInheritHandle == 31,
"securityAttributes.bInheritHandle = %u\n",
2563 bindinfo.securityAttributes.bInheritHandle);
2565 bindinfo.stgmedData.pUnkForRelease);
2568 bindinfo.stgmedData.pUnkForRelease =
NULL;
2572 hres = IStream_Seek(binding_stream,
zero, STREAM_SEEK_SET,
NULL);
2576 rem_bindf = BINDF_ASYNCHRONOUS | BINDF_ASYNCSTORAGE | BINDF_PULLDATA;
2579 memset(&bindinfo, 0,
sizeof(bindinfo));
2580 bindinfo.cbSize =
sizeof(bindinfo);
2588 IStream_AddRef(binding_stream);
2590 hres = IBindStatusCallbackEx_GetBindInfoEx(callbackex, &
bindf, &bindinfo, &bindf2, &
reserved);
2596 ok(
in_bindinfo.stgmedData.tymed == TYMED_NULL,
"tymed = %lu\n",
2599 ok(bindinfo.cbSize ==
sizeof(bindinfo),
"cbSize = %lu\n", bindinfo.cbSize);
2600 ok(!bindinfo.pUnk,
"pUnk = %p\n", bindinfo.pUnk);
2601 ok(bindinfo.stgmedData.tymed == TYMED_NULL,
"tymed = %lu\n",
2602 bindinfo.stgmedData.tymed);
2603 ok(!bindinfo.stgmedData.pstm,
"stm = %p\n",
2604 bindinfo.stgmedData.pstm);
2605 ok(!bindinfo.stgmedData.pUnkForRelease,
"pUnkForRelease = %p\n",
2606 bindinfo.stgmedData.pUnkForRelease);
2607 ok(bindinfo.cbstgmedData == 3,
"cbstgmedData = %lu\n", bindinfo.cbstgmedData);
2612 rem_bindf = BINDF_ASYNCHRONOUS | BINDF_ASYNCSTORAGE | BINDF_PULLDATA;
2615 memset(&bindinfo, 0,
sizeof(bindinfo));
2616 bindinfo.cbSize =
sizeof(bindinfo);
2626 IStream_AddRef(binding_stream);
2628 hres = IBindStatusCallbackEx_GetBindInfoEx(callbackex, &
bindf, &bindinfo, &bindf2, &
reserved);
2634 ok(
in_bindinfo.stgmedData.tymed == TYMED_NULL,
"tymed = %lu\n",
2637 ok(bindinfo.cbSize ==
sizeof(bindinfo),
"cbSize = %lu\n", bindinfo.cbSize);
2638 ok(!bindinfo.pUnk,
"pUnk = %p\n", bindinfo.pUnk);
2639 ok(bindinfo.stgmedData.tymed == TYMED_NULL,
"tymed = %lu\n",
2640 bindinfo.stgmedData.tymed);
2641 ok(!bindinfo.stgmedData.pstm,
"stm = %p\n",
2642 bindinfo.stgmedData.pstm);
2643 ok(!bindinfo.stgmedData.pUnkForRelease,
"pUnkForRelease = %p\n",
2644 bindinfo.stgmedData.pUnkForRelease);
2645 ok(bindinfo.cbstgmedData == 3,
"cbstgmedData = %lu\n", bindinfo.cbstgmedData);
2650 rem_bindf = BINDF_ASYNCHRONOUS | BINDF_ASYNCSTORAGE | BINDF_PULLDATA;
2653 memset(&bindinfo, 0,
sizeof(bindinfo));
2654 bindinfo.cbSize =
sizeof(bindinfo);
2666 hres = IBindStatusCallbackEx_GetBindInfoEx(callbackex, &
bindf, &bindinfo, &bindf2, &
reserved);
2672 ok(
in_bindinfo.stgmedData.tymed == TYMED_NULL,
"tymed = %lu\n",
2675 ok(bindinfo.cbSize ==
sizeof(bindinfo),
"cbSize = %lu\n", bindinfo.cbSize);
2676 ok(!bindinfo.pUnk,
"pUnk = %p\n", bindinfo.pUnk);
2677 ok(bindinfo.stgmedData.tymed == TYMED_NULL,
"tymed = %lu\n",
2678 bindinfo.stgmedData.tymed);
2679 ok(!bindinfo.stgmedData.pstm,
"stm = %p\n",
2680 bindinfo.stgmedData.pstm);
2681 ok(!bindinfo.stgmedData.pUnkForRelease,
"pUnkForRelease = %p\n",
2682 bindinfo.stgmedData.pUnkForRelease);
2683 ok(bindinfo.cbstgmedData == 5,
"cbstgmedData = %lu\n", bindinfo.cbstgmedData);
2687 IBindStatusCallbackEx_Release(callbackex);
2689 win_skip(
"IBindStatusCallbackEx not supported\n");
2694 stgmed.tymed = TYMED_ISTREAM;
2695 stgmed.pstm = binding_stream;
2696 stgmed.pUnkForRelease =
NULL;
2698 hres = IBindStatusCallback_OnDataAvailable(
bsc, 1, 10, &formatetc, &stgmed);
2707 stgmed.tymed = TYMED_ISTREAM;
2708 stgmed.pstm = binding_stream;
2712 hres = IBindStatusCallback_OnDataAvailable(
bsc, 1, 10, &formatetc, &stgmed);
2722 stgmed.tymed = TYMED_ISTREAM;
2723 stgmed.pstm = binding_stream;
2724 stgmed.pUnkForRelease =
NULL;
2726 hres = IBindStatusCallback_OnDataAvailable(
bsc, 1, 10, &formatetc, &stgmed);
2735 stgmed.tymed = TYMED_NULL;
2736 stgmed.pstm = binding_stream;
2740 hres = IBindStatusCallback_OnDataAvailable(
bsc, 1, 10, &formatetc, &stgmed);
2748 IStream_Release(binding_stream);
2749 IBindStatusCallback_Release(
bsc);
2762 static char test_str[] =
"test";
2763 const char *custom_ua_msg =
"";
2768 if(!pMapBrowserEmulationModeToUserAgent) {
2769 win_skip(
"MapBrowserEmulationModeToUserAgent not available\n");
2777 custom_ua_msg =
" (with custom ua)";
2780 for(
i = 0;
i < 12;
i++) {
2782 ua = (
WCHAR*)0xdeadbeef;
2783 hres = pMapBrowserEmulationModeToUserAgent(&
arg, &ua);
2785 "[%u] MapBrowserEmulationModeToUserAgent%s returned %08lx\n",
i, custom_ua_msg,
hres);
2787 ok(ua ==
NULL,
"[%u] ua%s = %p\n",
i, custom_ua_msg, ua);
2794 ua2 =
a2co(test_str);
2797 ok(
hres ==
S_OK,
"[%u] ObtainUserAgentString%s failed: %08lx\n",
i, custom_ua_msg,
hres);
2816 pCoInternetCompareUrl = (
void *)
GetProcAddress(hurlmon,
"CoInternetCompareUrl");
2817 pCoInternetGetSecurityUrl = (
void*)
GetProcAddress(hurlmon,
"CoInternetGetSecurityUrl");
2818 pCoInternetGetSession = (
void*)
GetProcAddress(hurlmon,
"CoInternetGetSession");
2819 pCoInternetParseUrl = (
void*)
GetProcAddress(hurlmon,
"CoInternetParseUrl");
2820 pCoInternetQueryInfo = (
void*)
GetProcAddress(hurlmon,
"CoInternetQueryInfo");
2821 pCopyStgMedium = (
void*)
GetProcAddress(hurlmon,
"CopyStgMedium");
2823 pFindMimeFromData = (
void*)
GetProcAddress(hurlmon,
"FindMimeFromData");
2824 pObtainUserAgentString = (
void*)
GetProcAddress(hurlmon,
"ObtainUserAgentString");
2825 pReleaseBindInfo = (
void*)
GetProcAddress(hurlmon,
"ReleaseBindInfo");
2826 pUrlMkGetSessionOption = (
void*)
GetProcAddress(hurlmon,
"UrlMkGetSessionOption");
2827 pCompareSecurityIds = (
void*)
GetProcAddress(hurlmon,
"CompareSecurityIds");
2828 pCoInternetIsFeatureEnabled = (
void*)
GetProcAddress(hurlmon,
"CoInternetIsFeatureEnabled");
2829 pCoInternetSetFeatureEnabled = (
void*)
GetProcAddress(hurlmon,
"CoInternetSetFeatureEnabled");
2830 pIEInstallScope = (
void*)
GetProcAddress(hurlmon,
"IEInstallScope");
2831 pMapBrowserEmulationModeToUserAgent = (
void*)
GetProcAddress(hurlmon, (
const char*)445);
2833 if (!pCoInternetCompareUrl || !pCoInternetGetSecurityUrl ||
2834 !pCoInternetGetSession || !pCoInternetParseUrl || !pCompareSecurityIds) {
2835 win_skip(
"Various needed functions not present, too old IE\n");
#define InterlockedIncrement
#define InterlockedDecrement
const GUID IID_IClassFactory
#define RegCloseKey(hKey)
_In_ size_t const _In_ int _In_ bool const _In_ unsigned const _In_ __acrt_rounding_mode const _Inout_ __crt_cached_ptd_host & ptd
LONG WINAPI RegCreateKeyA(HKEY hKey, LPCSTR lpSubKey, PHKEY phkResult)
LONG WINAPI RegSetValueExA(HKEY hKey, LPCSTR lpValueName, DWORD Reserved, DWORD dwType, CONST BYTE *lpData, DWORD cbData)
LONG WINAPI RegOpenKeyA(HKEY hKey, LPCSTR lpSubKey, PHKEY phkResult)
LONG WINAPI RegDeleteValueA(HKEY hKey, LPCSTR lpValueName)
LONG WINAPI RegDeleteKeyA(_In_ HKEY hKey, _In_ LPCSTR lpSubKey)
BOOL WINAPI InitializeSecurityDescriptor(PSECURITY_DESCRIPTOR pSecurityDescriptor, DWORD dwRevision)
HRESULT WINAPI DECLSPEC_HOTPATCH CoGetClassObject(REFCLSID rclsid, DWORD clscontext, COSERVERINFO *server_info, REFIID riid, void **obj)
void WINAPI DECLSPEC_HOTPATCH CoUninitialize(void)
HRESULT WINAPI CreateStreamOnHGlobal(HGLOBAL hGlobal, BOOL delete_on_release, IStream **stream)
void *WINAPI CoTaskMemAlloc(SIZE_T size)
void WINAPI CoTaskMemFree(void *ptr)
HRESULT WINAPI CoMarshalInterface(IStream *stream, REFIID riid, IUnknown *unk, DWORD dest_context, void *pvDestContext, DWORD mshlFlags)
HRESULT WINAPI CoUnmarshalInterface(IStream *stream, REFIID riid, void **ppv)
static const WCHAR empty[1]
static WCHAR unknown[MAX_STRING_RESOURCE_LEN]
struct _SECURITY_ATTRIBUTES SECURITY_ATTRIBUTES
#define GetProcAddress(x, y)
#define GetCurrentProcess()
#define MultiByteToWideChar
#define ERROR_ACCESS_DENIED
static const WCHAR version[]
HMODULE WINAPI DECLSPEC_HOTPATCH GetModuleHandleA(LPCSTR lpModuleName)
DWORD WINAPI GetModuleFileNameA(HINSTANCE hModule, LPSTR lpFilename, DWORD nSize)
HANDLE WINAPI DECLSPEC_HOTPATCH CreateThread(IN LPSECURITY_ATTRIBUTES lpThreadAttributes, IN DWORD dwStackSize, IN LPTHREAD_START_ROUTINE lpStartAddress, IN LPVOID lpParameter, IN DWORD dwCreationFlags, OUT LPDWORD lpThreadId)
BOOL WINAPI TerminateThread(IN HANDLE hThread, IN DWORD dwExitCode)
BOOL WINAPI GetVersionExW(IN LPOSVERSIONINFOW lpVersionInformation)
int WINAPI lstrcmpW(LPCWSTR str1, LPCWSTR str2)
BOOL WINAPI DECLSPEC_HOTPATCH CreateProcessA(const char *app_name, char *cmd_line, SECURITY_ATTRIBUTES *process_attr, SECURITY_ATTRIBUTES *thread_attr, BOOL inherit, DWORD flags, void *env, const char *cur_dir, STARTUPINFOA *startup_info, PROCESS_INFORMATION *info)
_ACRTIMP size_t __cdecl wcslen(const wchar_t *)
_ACRTIMP int __cdecl wcscmp(const wchar_t *, const wchar_t *)
_ACRTIMP int __cdecl memcmp(const void *, const void *, size_t)
_ACRTIMP char *__cdecl strchr(const char *, int)
_ACRTIMP size_t __cdecl strlen(const char *)
_ACRTIMP char *__cdecl strstr(const char *, const char *)
_ACRTIMP int __cdecl strcmp(const char *, const char *)
_ACRTIMP char *__cdecl strrchr(const char *, int)
HRESULT WINAPI CoInitialize(LPVOID lpReserved)
HRESULT WINAPI DECLSPEC_HOTPATCH OleInitialize(LPVOID reserved)
void WINAPI ReleaseStgMedium(STGMEDIUM *pmedium)
void WINAPI DECLSPEC_HOTPATCH OleUninitialize(void)
static const WCHAR fileW[]
HRESULT WINAPI UrlMkSetSessionOption(DWORD dwOption, LPVOID pBuffer, DWORD dwBufferLength, DWORD Reserved)
unsigned int(__cdecl typeof(jpeg_read_scanlines))(struct jpeg_decompress_struct *
static void *static void *static LPDIRECTPLAY IUnknown * pUnk
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLboolean GLboolean GLboolean b
GLenum GLuint GLenum GLsizei const GLchar * buf
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
HGLOBAL NTAPI GlobalFree(HGLOBAL hMem)
UINT NTAPI GlobalFlags(HGLOBAL hMem)
BOOL NTAPI GlobalUnlock(HGLOBAL hMem)
HGLOBAL NTAPI GlobalAlloc(UINT uFlags, SIZE_T dwBytes)
SIZE_T NTAPI GlobalSize(HGLOBAL hMem)
static CInternetFolder * CreateInstance(void)
static ERESOURCE GlobalLock
static const WCHAR text_plainW[]
static const WCHAR image_pjpegW[]
#define todo_wine_if(is_todo)
#define memcpy(s1, s2, n)
#define ERROR_FILE_NOT_FOUND
PSDBQUERYRESULT_VISTA PVOID DWORD * dwSize
static PROCESS_INFORMATION pi
#define CHECK_EXPECT(func)
#define DEFINE_EXPECT(func)
#define CHECK_EXPECT2(func)
#define CHECK_CALLED(func)
static const WCHAR wszHttpWineHQ[]
static IClassFactory test_protocol_cf2
static BINDINFO rem_bindinfo
static void test_MkParseDisplayNameEx(void)
static const WCHAR url6[]
static HANDLE thread_ready
static IInternetProtocolInfo protocol_info
static DWORD WINAPI bsc_thread(void *arg)
static void test_internet_features_registry(void)
static const IClassFactoryVtbl ProtocolCFVtbl
static ULONG WINAPI RefUnk_Release(IUnknown *iface)
static HRESULT WINAPI ClassFactory_LockServer(IClassFactory *iface, BOOL dolock)
static void test_RegisterFormatEnumerator(void)
static WCHAR **static WCHAR * a2co(const char *str)
static const WCHAR wszEmpty[]
static const WCHAR wszRes[]
static void test_ReleaseBindInfo(void)
static HRESULT WINAPI ClassFactory_CreateInstance(IClassFactory *iface, IUnknown *pOuter, REFIID riid, void **ppv)
static BINDINFO in_bindinfo
static void test_MimeFilter(void)
static HRESULT WINAPI InternetProtocolInfo_QueryInfo(IInternetProtocolInfo *iface, LPCWSTR pwzUrl, QUERYOPTION OueryOption, DWORD dwQueryFlags, LPVOID pBuffer, DWORD cbBuffer, DWORD *pcbBuf, DWORD dwReserved)
static const IClassFactoryVtbl ClassFactoryVtbl
static HRESULT WINAPI RefUnk_QueryInterface(IUnknown *iface, REFIID riid, void **ppv)
static HRESULT WINAPI BindStatusCallback_GetPriority(IBindStatusCallbackEx *iface, LONG *pnPriority)
static void test_CoInternetIsFeatureEnabled(void)
const WCHAR * proposed_mime
static void test_CoInternetSetFeatureEnabled(void)
static const WCHAR url1[]
static void test_CoInternetCompareUrl(void)
static const WCHAR url5[]
static void test_NameSpace(void)
static const struct parse_test parse_tests[]
static RefUnk * impl_from_IUnknown(IUnknown *iface)
static HRESULT WINAPI BindStatusCallback_GetBindInfo(IBindStatusCallbackEx *iface, DWORD *grfBINDF, BINDINFO *pbindinfo)
static const char * szFeatureControlKey
static const WCHAR url4[]
static HRESULT WINAPI BindStatusCallback_OnObjectAvailable(IBindStatusCallbackEx *iface, REFIID riid, IUnknown *punk)
static ULONG WINAPI ClassFactory_Release(IClassFactory *iface)
static ULONG WINAPI unk_Release(IUnknown *iface)
static const struct @1880 internet_feature_tests[]
static IClassFactory test_cf
static HRESULT WINAPI ProtocolCF_CreateInstance(IClassFactory *iface, IUnknown *pOuter, REFIID riid, void **ppv)
static void test_CopyBindInfo(void)
static const WCHAR wszGoogle[]
INTERNETFEATURELIST feature
static HRESULT WINAPI BindStatusCallback_OnProgress(IBindStatusCallbackEx *iface, ULONG ulProgress, ULONG ulProgressMax, ULONG ulStatusCode, LPCWSTR szStatusText)
static STGMEDIUM in_stgmed
static void test_UrlMkGetSessionOption(void)
static const WCHAR url8[]
static HRESULT WINAPI InternetProtocolInfo_CompareUrl(IInternetProtocolInfo *iface, LPCWSTR pwzUrl1, LPCWSTR pwzUrl2, DWORD dwCompareFlags)
static HRESULT WINAPI BindStatusCallbackEx_GetBindInfoEx(IBindStatusCallbackEx *iface, DWORD *grfBINDF, BINDINFO *pbindinfo, DWORD *grfBINDF2, DWORD *pdwReserved)
static HRESULT WINAPI InternetProtocolInfo_CombineUrl(IInternetProtocolInfo *iface, LPCWSTR pwzBaseUrl, LPCWSTR pwzRelativeUrl, DWORD dwCombineFlags, LPWSTR pwzResult, DWORD cchResult, DWORD *pcchResult, DWORD dwReserved)
static ULONG WINAPI RefUnk_AddRef(IUnknown *iface)
static const struct @1878 mime_tests2[]
static void test_FindMimeFromData(void)
static HRESULT WINAPI BindStatusCallback_OnStopBinding(IBindStatusCallbackEx *iface, HRESULT hresult, LPCWSTR szError)
static void register_protocols(void)
static ULONG WINAPI InternetProtocolInfo_AddRef(IInternetProtocolInfo *iface)
static void test_IsValidURL(void)
static const WCHAR path3[]
static HRESULT WINAPI ClassFactory_QueryInterface(IClassFactory *iface, REFIID riid, void **ppv)
static const struct @1879 default_feature_tests[]
static HRESULT WINAPI BindStatusCallback_OnStartBinding(IBindStatusCallbackEx *iface, DWORD dwReserved, IBinding *pib)
static ULONG WINAPI BindStatusCallback_Release(IBindStatusCallbackEx *iface)
static const WCHAR url2[]
static HRESULT WINAPI BindStatusCallback_OnLowResource(IBindStatusCallbackEx *iface, DWORD reserved)
static const IUnknownVtbl unk_vtbl
static void test_MapBrowserEmulationModeToUserAgent(BOOL custom_ua)
static const WCHAR wszWineHQ[]
static const WCHAR wszFile[]
static const struct @1877 mime_tests[]
static const IUnknownVtbl RefUnkVtbl
static HRESULT WINAPI BindStatusCallback_OnDataAvailable(IBindStatusCallbackEx *iface, DWORD grfBSCF, DWORD dwSize, FORMATETC *pformatetc, STGMEDIUM *pstgmed)
static const WCHAR url4e[]
static void test_bsc_marshaling(void)
static const WCHAR wszHttp[]
static ULONG WINAPI ClassFactory_AddRef(IClassFactory *iface)
static void test_CoInternetQueryInfo(void)
static ULONG WINAPI InternetProtocolInfo_Release(IInternetProtocolInfo *iface)
static const WCHAR url9[]
static STGMEDIUM rem_stgmed
static HRESULT WINAPI BindStatusCallback_QueryInterface(IBindStatusCallbackEx *iface, REFIID riid, void **ppv)
static IClassFactory test_protocol_cf
static HRESULT WINAPI InternetProtocolInfo_QueryInterface(IInternetProtocolInfo *iface, REFIID riid, void **ppv)
static void test_user_agent(void)
static size_t check_prefix(const char *str, const char *prefix)
static const struct @1876 query_info_tests[]
static ULONG WINAPI BindStatusCallback_AddRef(IBindStatusCallbackEx *iface)
static HRESULT WINAPI InternetProtocolInfo_ParseUrl(IInternetProtocolInfo *iface, LPCWSTR pwzUrl, PARSEACTION ParseAction, DWORD dwParseFlags, LPWSTR pwzResult, DWORD cchResult, DWORD *pcchResult, DWORD dwReserved)
static IClassFactory * expect_cf
static void test_CopyStgMedium(void)
static void test_internet_features(void)
static const WCHAR wszAbout[]
static const WCHAR path4[]
static const IBindStatusCallbackExVtbl BindStatusCallbackExVtbl
static void test_CreateFormatEnum(void)
static void test_internet_feature_defaults(void)
static void test_CoInternetParseUrl(void)
static const WCHAR wszHttpGoogle[]
static const WCHAR url3[]
const WCHAR * broken_mime
static const WCHAR url10[]
static const IInternetProtocolInfoVtbl InternetProtocolInfoVtbl
static const WCHAR url7[]
CLSID CLSID_AboutProtocol
static const WCHAR text_htmlW[]
_In_ HANDLE _In_ DWORD _In_ DWORD _Inout_opt_ LPOVERLAPPED _In_opt_ LPTRANSMIT_FILE_BUFFERS _In_ DWORD dwReserved
interface IMoniker * LPMONIKER
interface IBindCtx * LPBC
HRESULT WINAPI CreateBindCtx(DWORD reserved, IBindCtx **bind_context)
#define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8)
#define IsEqualGUID(rguid1, rguid2)
#define offsetof(TYPE, MEMBER)
const char int int int static __inline const char * wine_dbgstr_a(const char *s)
int winetest_get_mainargs(char ***pargv)
#define wait_child_process
XML_HIDDEN void xmlParserErrors const char const xmlChar const xmlChar * str2
HRESULT rootdocument_hres
DWORD WINAPI WaitForSingleObject(IN HANDLE hHandle, IN DWORD dwMilliseconds)
HANDLE WINAPI DECLSPEC_HOTPATCH CreateEventW(IN LPSECURITY_ATTRIBUTES lpEventAttributes OPTIONAL, IN BOOL bManualReset, IN BOOL bInitialState, IN LPCWSTR lpName OPTIONAL)
BOOL WINAPI DECLSPEC_HOTPATCH SetEvent(IN HANDLE hEvent)
Character const *const prefix
TW_UINT32 TW_UINT16 TW_UINT16 MSG
#define CONTAINING_RECORD(address, type, field)
HRESULT WINAPI MkParseDisplayNameEx(IBindCtx *pbc, LPCWSTR szDisplayName, ULONG *pchEaten, LPMONIKER *ppmk)
enum FEATURE_SAFE_BINDTOOBJECT
enum FEATURE_MIME_SNIFFING
enum FEATURE_VALIDATE_NAVIGATE_URL
enum FEATURE_WEBOC_POPUPMANAGEMENT
enum FEATURE_DISABLE_MK_PROTOCOL
enum FEATURE_UNC_SAVEDFILECHECK
enum FEATURE_LOCALMACHINE_LOCKDOWN
enum FEATURE_GET_URL_DOM_FILEPATH_UNENCODED
enum FEATURE_DISABLE_LEGACY_COMPRESSION
enum FEATURE_TABBED_BROWSING
enum FEATURE_WINDOW_RESTRICTIONS
enum FEATURE_PROTOCOL_LOCKDOWN
enum FEATURE_MIME_HANDLING
enum FEATURE_ZONE_ELEVATION
enum FEATURE_FORCE_ADDR_AND_STATUS
enum FEATURE_DISABLE_TELNET_PROTOCOL
enum FEATURE_DISABLE_NAVIGATION_SOUNDS
enum FEATURE_HTTP_USERNAME_PASSWORD_DISABLE
enum FEATURE_ADDON_MANAGEMENT
enum FEATURE_RESTRICT_ACTIVEXINSTALL
enum FEATURE_SECURITYBAND
enum FEATURE_BLOCK_INPUT_PROMPTS
enum FEATURE_RESTRICT_FILEDOWNLOAD
void WINAPI ReleaseBindInfo(BINDINFO *pbindinfo)
HRESULT WINAPI IsValidURL(LPBC pBC, LPCWSTR szURL, DWORD dwReserved)
DWORD WINAPI GetLastError(void)
_In_ FONTOBJ _In_ ULONG _In_ HGLYPH hg
#define __HRESULT_FROM_WIN32(x)
#define HKEY_LOCAL_MACHINE
#define HKEY_CURRENT_USER
BOOL WINAPI TranslateMessage(_In_ const MSG *)
BOOL WINAPI GetMessageW(_Out_ LPMSG, _In_opt_ HWND, _In_ UINT, _In_ UINT)
LRESULT WINAPI DispatchMessageW(_In_ const MSG *)
#define SECURITY_DESCRIPTOR_REVISION