36#define CHARS_IN_GUID 39
38#define DEFINE_EXPECT(func) \
39 static BOOL expect_ ## func = FALSE, called_ ## func = FALSE
41#define SET_EXPECT(func) \
42 expect_ ## func = TRUE
44#define CHECK_EXPECT2(func) \
46 ok(expect_ ##func, "unexpected call " #func "\n"); \
47 called_ ## func = TRUE; \
50#define CHECK_EXPECT(func) \
52 CHECK_EXPECT2(func); \
53 expect_ ## func = FALSE; \
56#define CHECK_CALLED(func) \
58 ok(called_ ## func, "expected " #func "\n"); \
59 expect_ ## func = called_ ## func = FALSE; \
62#define CHECK_NOT_CALLED(func) \
64 ok(!called_ ## func, "unexpected " #func "\n"); \
65 expect_ ## func = called_ ## func = FALSE; \
68#define CLEAR_CALLED(func) \
69 expect_ ## func = called_ ## func = FALSE
135static const WCHAR wszIndexHtml[] = {
'i',
'n',
'd',
'e',
'x',
'.',
'h',
't',
'm',
'l',0};
137 {
'f',
'i',
'l',
'e',
':',
'i',
'n',
'd',
'e',
'x',
'.',
'h',
't',
'm',
'l',0};
142static const WCHAR hostW[] = {
'w',
'w',
'w',
'.',
'w',
'i',
'n',
'e',
'h',
'q',
'.',
'o',
'r',
'g',0};
143static const WCHAR winehq_ipW[] = {
'2',
'0',
'9',
'.',
'4',
'6',
'.',
'2',
'5',
'.',
'1',
'3',
'4',0};
145static const WCHAR pjpegW[] = {
'i',
'm',
'a',
'g',
'e',
'/',
'p',
'j',
'p',
'e',
'g',0};
146static const WCHAR gifW[] = {
'i',
'm',
'a',
'g',
'e',
'/',
'g',
'i',
'f',0};
147static const WCHAR null_guid[] = {
'{',
'0',
'0',
'0',
'0',
'0',
'0',
'0',
'0',
'-',
'0',
'0',
'0',
'0',
'-',
148 '0',
'0',
'0',
'0',
'-',
'0',
'0',
'0',
'0',
'-',
'0',
'0',
'0',
'0',
'0',
'0',
'0',
'0',
'0',
'0',
'0',
'0',
'}',0};
201 {
'h',
't',
't',
'p',
's',0},
209 {
'f',
'i',
'l',
'e',
':',
't',
'e',
's',
't',
'.',
'h',
't',
'm',
'l',0},
210 {
'h',
't',
't',
'p',
':',
'/',
'/',
'w',
'w',
'w',
'.',
'w',
'i',
'n',
'e',
'h',
'q',
'.',
211 'o',
'r',
'g',
'/',
's',
'i',
't',
'e',
'/',
'a',
'b',
'o',
'u',
't',0},
212 {
'h',
't',
't',
'p',
's',
':',
'/',
'/',
'w',
'w',
'w',
'.',
'c',
'o',
'd',
'e',
'w',
'e',
'a',
'v',
'e',
'r',
's',
213 '.',
'c',
'o',
'm',
'/',
't',
'e',
's',
't',
'.',
'h',
't',
'm',
'l',0},
214 {
'f',
't',
'p',
':',
'/',
'/',
'f',
't',
'p',
'.',
'w',
'i',
'n',
'e',
'h',
'q',
'.',
'o',
'r',
'g',
215 '/',
'p',
'u',
'b',
'/',
'o',
't',
'h',
'e',
'r',
216 '/',
'w',
'i',
'n',
'e',
'l',
'o',
'g',
'o',
'.',
'x',
'c',
'f',
'.',
't',
'a',
'r',
'.',
'b',
'z',
'2',0},
217 {
'm',
'k',
':',
't',
'e',
's',
't',0},
218 {
'i',
't',
's',
':',
't',
'e',
's',
't',
'.',
'c',
'h',
'm',
':',
':',
'/',
'b',
'l',
'a',
'n',
'k',
'.',
'h',
't',
'm',
'l',0},
219 {
't',
'e',
's',
't',
':',
'/',
'/',
'f',
'i',
'l',
'e',
'.',
'h',
't',
'm',
'l',0}
245 ok(0,
"unexpected call\n");
268 win_skip(
"Security problem: %lu\n", dwProblem);
270 "Expected got %lu security problem\n", dwProblem);
303 ok(0,
"unexpected call\n");
322 static const WCHAR wszHeaders[] =
323 {
'C',
'o',
'n',
't',
'e',
'n',
't',
'-',
'T',
'y',
'p',
'e',
':',
' ',
'a',
'p',
'p',
'l',
'i',
'c',
'a',
't',
324 'i',
'o',
'n',
'/',
'x',
'-',
'w',
'w',
'w',
'-',
'f',
'o',
'r',
'm',
'-',
'u',
'r',
'l',
'e',
'n',
'c',
'o',
325 'd',
'e',
'd',
'\r',
'\n',0};
334 ok(pszAdditionalHeaders !=
NULL,
"pszAdditionalHeaders == NULL\n");
335 if(pszAdditionalHeaders)
337 ok(*pszAdditionalHeaders ==
NULL,
"*pszAdditionalHeaders != NULL\n");
341 memcpy(addl_headers, wszHeaders,
sizeof(wszHeaders));
342 *pszAdditionalHeaders = addl_headers;
354 ok(dwResponseCode == 200,
"dwResponseCode=%ld, expected 200\n", dwResponseCode);
355 ok(szResponseHeaders !=
NULL,
"szResponseHeaders == NULL\n");
356 ok(szRequestHeaders ==
NULL,
"szRequestHeaders != NULL\n");
357 ok(pszAdditionalRequestHeaders ==
NULL,
"pszAdditionalHeaders != NULL\n");
365 static const BYTE sec_id[] = {
'h',
't',
't',
'p',
':',
't',
'e',
's',
't',1,0,0,0};
370 ok(pbSecurityId !=
NULL,
"pbSecurityId == NULL\n");
371 ok(pcbSecurityId !=
NULL,
"pcbSecurityId == NULL\n");
374 ok(*pcbSecurityId == 512,
"*pcbSecurityId=%ld, expected 512\n", *pcbSecurityId);
375 *pcbSecurityId =
sizeof(sec_id);
379 memcpy(pbSecurityId, sec_id,
sizeof(sec_id));
415 *cancel = VARIANT_FALSE;
453 if(
IsEqualGUID(&IID_IInternetProtocol, guidService)) {
465 if(
IsEqualGUID(&IID_IBindCallbackRedirect, guidService)) {
472 if(
IsEqualGUID(&IID_IGetBindHandle, guidService)) {
478 if(
IsEqualGUID(&IID_IWindowForBindingUI, guidService)) {
499 static const IID IID_strm_unknown = {0x2f68429a,0x199a,0x4043,{0x93,0x11,0xf2,0xfe,0x7c,0x13,0xcc,0xb9}};
525 ok(pv !=
NULL,
"pv == NULL\n");
527 ok(pcbRead !=
NULL,
"pcbRead == NULL\n");
542 ok(0,
"unexpected call\n");
552 ok(dwOrigin == STREAM_SEEK_SET,
"dwOrigin = %ld\n", dwOrigin);
553 ok(!plibNewPosition,
"plibNewPosition == NULL\n");
560 ok(0,
"unexpected call\n");
567 ok(0,
"unexpected call\n");
573 ok(0,
"unexpected call\n");
579 ok(0,
"unexpected call\n");
586 ok(0,
"unexpected call\n");
593 ok(0,
"unexpected call\n");
600 ok(0,
"unexpected call\n");
606 ok(0,
"unexpected call\n");
683 if(
bindf & BINDF_NEEDFILE)
684 SET_EXPECT(ReportProgress_CACHEFILENAMEAVAILABLE);
717 if(
bindf & BINDF_NEEDFILE)
738 ok(pProtocolData !=
NULL,
"pProtocolData == NULL\n");
740 ok(pProtocolData != &
protocoldata,
"pProtocolData == &protocoldata\n");
741 ok(pProtocolData->grfFlags ==
protocoldata.grfFlags,
"grfFlags wrong %lx/%lx\n",
743 ok(pProtocolData->dwState ==
protocoldata.dwState,
"dwState wrong %lx/%lx\n",
745 ok(pProtocolData->pData ==
protocoldata.pData,
"pData wrong %p/%p\n",
747 ok(pProtocolData->cbData ==
protocoldata.cbData,
"cbData wrong %lx/%lx\n",
751 pdata = pProtocolData;
778 "BEGINDOWNLOADCOMPONENTS",
779 "INSTALLINGCOMPONENTS",
780 "ENDDOWNLOADCOMPONENTS",
785 "CACHEFILENAMEAVAILABLE",
786 "BEGINSYNCOPERATION",
793 "VERIFIEDMIMETYPEAVAILABLE",
794 "CLASSINSTALLLOCATION",
796 "LOADINGMIMEHANDLER",
797 "CONTENTDISPOSITIONATTACH",
798 "FILTERREPORTMIMETYPE",
799 "CLSIDCANINSTANTIATE",
806 "COMPACT_POLICY_RECEIVED",
808 "COOKIE_STATE_UNKNOWN",
809 "COOKIE_STATE_ACCEPT",
810 "COOKIE_STATE_REJECT",
811 "COOKIE_STATE_PROMPT",
812 "COOKIE_STATE_LEASH",
813 "COOKIE_STATE_DOWNGRADE",
816 "SESSION_COOKIE_RECEIVED",
817 "PERSISTENT_COOKIE_RECEIVED",
818 "SESSION_COOKIES_ALLOWED",
820 "CONTENTDISPOSITIONFILENAME",
821 "MIMETEXTPLAINMISMATCH",
822 "PUBLISHERAVAILABLE",
823 "DISPLAYNAMEAVAILABLE"
829 static const WCHAR text_plain[] = {
't',
'e',
'x',
't',
'/',
'p',
'l',
'a',
'i',
'n',0};
839 switch(ulStatusCode) {
840 case BINDSTATUS_MIMETYPEAVAILABLE:
848 ok(szStatusText !=
NULL,
"szStatusText == NULL\n");
855 "szStatusText != text/plain\n");
862 "szStatusText != image/gif\n");
866 "szStatusText != text/html\n");
869 case BINDSTATUS_DIRECTBIND:
871 ok(szStatusText ==
NULL,
"szStatusText != NULL\n");
873 case BINDSTATUS_RAWMIMETYPE:
875 ok(szStatusText !=
NULL,
"szStatusText == NULL\n");
879 "szStatusText != text/html\n");
881 case BINDSTATUS_CACHEFILENAMEAVAILABLE:
883 ok(szStatusText !=
NULL,
"szStatusText == NULL\n");
890 ok(szStatusText !=
NULL,
"szStatusText == NULL\n");
893 case BINDSTATUS_FINDINGRESOURCE:
895 ok(szStatusText !=
NULL,
"szStatusText == NULL\n");
897 case BINDSTATUS_CONNECTING:
899 ok(szStatusText !=
NULL,
"szStatusText == NULL\n");
901 case BINDSTATUS_SENDINGREQUEST:
904 ok(szStatusText !=
NULL,
"szStatusText == NULL\n");
906 ok(!*szStatusText,
"wrong szStatusText\n");
909 case BINDSTATUS_VERIFIEDMIMETYPEAVAILABLE:
911 ok(szStatusText !=
NULL,
"szStatusText == NULL\n");
913 ok(!
lstrcmpW(szStatusText,
L"text/html"),
"szStatusText != text/html\n");
915 case BINDSTATUS_PROTOCOLCLASSID:
917 ok(szStatusText !=
NULL,
"szStatusText == NULL\n");
920 case BINDSTATUS_COOKIE_SENT:
922 ok(szStatusText ==
NULL,
"szStatusText != NULL\n");
924 case BINDSTATUS_REDIRECTING:
927 ok(!
lstrcmpW(szStatusText,
L"http://test.winehq.org/tests/hello.html"),
"szStatusText = %s\n",
wine_dbgstr_w(szStatusText));
931 case BINDSTATUS_ENCODING:
935 case BINDSTATUS_ACCEPTRANGES:
939 case BINDSTATUS_PROXYDETECTING:
940 if(!called_ReportProgress_PROXYDETECTING)
945 case BINDSTATUS_LOADINGMIMEHANDLER:
949 case BINDSTATUS_DECODING:
953 case BINDSTATUS_RESERVED_7:
956 case BINDSTATUS_RESERVED_8:
960 ok(0,
"Unexpected status %ld (%ld)\n", ulStatusCode, ulStatusCode-BINDSTATUS_LAST);
973 static const WCHAR connectionW[] = {
'c',
'o',
'n',
'n',
'e',
'c',
't',
'i',
'o',
'n',0};
975 hres = IInternetProtocol_QueryInterface(
protocol, &IID_IWinInetHttpInfo, (
void**)&
info);
976 ok(
hres ==
S_OK,
"Could not get IWinInterHttpInfo iface: %08lx\n",
hres);
989 memcpy(
buf, connectionW,
sizeof(connectionW));
996 IWinInetHttpInfo_Release(
info);
1004 static int rec_depth;
1010 ok(ulProgress == ulProgressMax,
"ulProgress (%ld) != ulProgressMax (%ld)\n",
1011 ulProgress, ulProgressMax);
1013 ok(ulProgressMax == 13,
"ulProgressMax=%ld, expected 13\n", ulProgressMax);
1016 ok((grfBSCF == (BSCF_FIRSTDATANOTIFICATION | BSCF_LASTDATANOTIFICATION)) ||
1017 (grfBSCF == (BSCF_FIRSTDATANOTIFICATION | BSCF_LASTDATANOTIFICATION | BSCF_SKIPDRAINDATAFORFILEURLS)),
1018 "grcfBSCF = %08lx\n", grfBSCF);
1020 ok(grfBSCF == (BSCF_FIRSTDATANOTIFICATION | BSCF_DATAFULLYAVAILABLE),
"grcfBSCF = %08lx\n", grfBSCF);
1024 ok(grfBSCF == (BSCF_LASTDATANOTIFICATION|BSCF_DATAFULLYAVAILABLE),
"grcfBSCF = %08lx\n", grfBSCF);
1025 ok(ulProgress == 1000,
"ulProgress = %lu\n", ulProgress);
1026 ok(!ulProgressMax,
"ulProgressMax = %lu\n", ulProgressMax);
1032 BOOL reported_all_data = called_ReportData2;
1037 ok(grfBSCF == (BSCF_FIRSTDATANOTIFICATION|BSCF_LASTDATANOTIFICATION|BSCF_DATAFULLYAVAILABLE)
1038 || grfBSCF == BSCF_FIRSTDATANOTIFICATION,
1039 "grcfBSCF = %08lx\n", grfBSCF);
1043 ok(grfBSCF == BSCF_FIRSTDATANOTIFICATION,
"grcfBSCF = %08lx\n", grfBSCF);
1045 }
else if(reported_all_data) {
1046 ok(grfBSCF == (BSCF_LASTDATANOTIFICATION|BSCF_INTERMEDIATEDATANOTIFICATION),
1047 "grcfBSCF = %08lx\n", grfBSCF);
1049 ok(grfBSCF == BSCF_INTERMEDIATEDATANOTIFICATION,
"grcfBSCF = %08lx\n", grfBSCF);
1065 if(reported_all_data)
1071 if(!reported_all_data && called_ReportData2) {
1075 reported_all_data =
TRUE;
1087 ok(grfBSCF & BSCF_LASTDATANOTIFICATION,
"grfBSCF = %08lx\n", grfBSCF);
1102 else if(!(grfBSCF & BSCF_LASTDATANOTIFICATION) || (grfBSCF & BSCF_DATAFULLYAVAILABLE))
1105 ok(ulProgress == 13,
"Read %lu bytes instead of 13\n", ulProgress);
1108 ok(!ulProgress,
"ulProgress = %ld\n", ulProgress);
1109 ok(!ulProgressMax,
"ulProgressMax = %ld\n", ulProgressMax);
1111 ok(ulProgress,
"ulProgress == 0\n");
1115 ok(grfBSCF == (BSCF_FIRSTDATANOTIFICATION|BSCF_LASTDATANOTIFICATION),
1116 "grcfBSCF = %08lx\n", grfBSCF);
1119 ok(grfBSCF == BSCF_FIRSTDATANOTIFICATION
1120 || grfBSCF == (BSCF_LASTDATANOTIFICATION|BSCF_DATAFULLYAVAILABLE),
1121 "grcfBSCF = %08lx\n", grfBSCF);
1124 ok(grfBSCF == BSCF_INTERMEDIATEDATANOTIFICATION
1125 || grfBSCF == (BSCF_LASTDATANOTIFICATION|BSCF_INTERMEDIATEDATANOTIFICATION)
1126 ||
broken(grfBSCF == (BSCF_FIRSTDATANOTIFICATION|BSCF_LASTDATANOTIFICATION)),
1127 "grcfBSCF = %08lx\n", grfBSCF);
1130 if((grfBSCF & BSCF_FIRSTDATANOTIFICATION) && !
binding_test)
1133 if(!(
bindf & BINDF_FROMURLMON) &&
1134 !(grfBSCF & BSCF_LASTDATANOTIFICATION)) {
1158 else if(rec_depth > 1)
1165 else if(rec_depth > 1)
1196 ok(hrResult ==
E_PENDING || hrResult ==
S_OK,
"hrResult = %08lx, expected E_PENDING or S_OK\n", hrResult);
1201 ok(dwError ==
ERROR_SUCCESS,
"dwError = %ld, expected ERROR_SUCCESS\n", dwError);
1205 "dwError == ERROR_SUCCESS\n");
1238 ok(0,
"unexpected call\n");
1269 switch(ulStatusCode) {
1270 case BINDSTATUS_LOADINGMIMEHANDLER:
1277 ok(!szStatusText,
"szStatusText = %s\n",
wine_dbgstr_w(szStatusText));
1280 ok(0,
"Unexpected status code %ld\n", ulStatusCode);
1305 SET_EXPECT(ReportProgress_MIMETYPEAVAILABLE);
1310 SET_EXPECT(ReportProgress_MIMETYPEAVAILABLE);
1323 SET_EXPECT(ReportProgress_MIMETYPEAVAILABLE);
1328 hres = IInternetProtocolSink_ReportData(
filtered_sink, grfBSCF, ulProgress, ulProgressMax);
1352 ok(hrResult ==
S_OK,
"hrResult = %08lx\n", hrResult);
1357 hres = IInternetProtocolSink_ReportResult(
filtered_sink, hrResult, dwError, szResult);
1378 static const IID IID_undocumented = {0x58DFC7D0,0x5381,0x43E5,{0x9D,0x72,0x4C,0xDD,0xE4,0xCB,0x0F,0x1A}};
1379 static const IID IID_undocumentedIE10 = {0xc28722e5,0xbc1a,0x4c55,{0xa6,0x8d,0x33,0x21,0x9f,0x69,0x89,0x10}};
1429 ok(grfBINDF !=
NULL,
"grfBINDF == NULL\n");
1430 ok(pbindinfo !=
NULL,
"pbindinfo == NULL\n");
1431 ok(pbindinfo->cbSize ==
sizeof(BINDINFO),
"wrong size of pbindinfo: %ld\n", pbindinfo->cbSize);
1435 *grfBINDF |= BINDF_FROMURLMON;
1436 cbSize = pbindinfo->cbSize;
1437 memset(pbindinfo, 0, cbSize);
1438 pbindinfo->cbSize = cbSize;
1443 pbindinfo->cbstgmedData =
sizeof(
post_data)-1;
1444 pbindinfo->dwBindVerb = BINDVERB_POST;
1453 pbindinfo->stgmedData.hGlobal =
data;
1455 pbindinfo->stgmedData.pstm = &
Stream;
1463 LPOLESTR *ppwzStr,
ULONG cEl,
ULONG *pcElFetched)
1465 ok(ppwzStr !=
NULL,
"ppwzStr == NULL\n");
1466 ok(pcElFetched !=
NULL,
"pcElFetched == NULL\n");
1468 switch(ulStringType) {
1469 case BINDSTRING_ACCEPT_MIMES:
1471 ok(cEl == 256,
"cEl=%ld, expected 256\n", cEl);
1473 ok(*pcElFetched == 256,
"*pcElFetched=%ld, expected 256\n", *pcElFetched);
1481 case BINDSTRING_USER_AGENT:
1483 ok(cEl == 1,
"cEl=%ld, expected 1\n", cEl);
1485 ok(*pcElFetched == 0,
"*pcElFetch=%ld, expected 0\n", *pcElFetched);
1493 case BINDSTRING_POST_COOKIE:
1495 ok(cEl == 1,
"cEl=%ld, expected 1\n", cEl);
1497 ok(*pcElFetched == 0,
"*pcElFetch=%ld, expected 0\n", *pcElFetched);
1499 case BINDSTRING_URL: {
1503 ok(cEl == 1,
"cEl=%ld, expected 1\n", cEl);
1504 ok(*pcElFetched == 0,
"*pcElFetch=%ld, expected 0\n", *pcElFetched);
1512 case BINDSTRING_ROOTDOC_URL:
1514 ok(cEl == 1,
"cEl=%ld, expected 1\n", cEl);
1516 case BINDSTRING_ENTERPRISE_ID:
1517 ok(cEl == 1,
"cEl=%ld, expected 1\n", cEl);
1519 case BINDSTRING_SAMESITE_COOKIE_LEVEL:
1521 ok(cEl == 1,
"cEl=%ld, expected 1\n", cEl);
1524 ok(0,
"unexpected ulStringType %ld\n", ulStringType);
1548 ok(0,
"unexpected call\n");
1558 return IUnknown_AddRef(
This->outer);
1560 return IUnknown_AddRef(&
This->IUnknown_inner);
1569 return IUnknown_Release(
This->outer);
1571 return IUnknown_Release(&
This->IUnknown_inner);
1583 ok(0,
"unexpected call\n");
1623 ok(0,
"unexpected call\n");
1629 ok(0,
"unexpected call\n");
1636 ok(0,
"unexpected call\n");
1649 static const IID unknown_iid = {0x7daf9908,0x8415,0x4005,{0x95,0xae, 0xbd,0x27,0xf6,0xe3,0xdc,0x00}};
1650 static const IID unknown_iid2 = {0x5b7ebc0c,0xf630,0x4cea,{0x89,0xd3,0x5a,0xf0,0x38,0xed,0x05,0x5c}};
1653 *
ppv = &
This->IInternetProtocolEx_iface;
1654 IInternetProtocolEx_AddRef(&
This->IInternetProtocolEx_iface);
1660 *
ppv = &
This->IInternetPriority_iface;
1661 IInternetPriority_AddRef(&
This->IInternetPriority_iface);
1676 return IUnknown_AddRef(
This->outer);
1678 return IUnknown_AddRef(&
This->IUnknown_inner);
1687 return IUnknown_Release(
This->outer);
1689 return IUnknown_Release(&
This->IUnknown_inner);
1704 BINDSTATUS_FINDINGRESOURCE,
hostW);
1716 BINDSTATUS_SENDINGREQUEST,
NULL);
1781 BINDINFO bindinfo, exp_bindinfo;
1785 ok(pOIProtSink !=
NULL,
"pOIProtSink == NULL\n");
1786 ok(pOIBindInfo !=
NULL,
"pOIBindInfo == NULL\n");
1788 ok(pOIBindInfo != &
bind_info,
"unexpected pOIBindInfo\n");
1789 ok(!
pi,
"pi = %lx\n",
pi);
1792 ok(pOIProtSink ==
binding_sink,
"pOIProtSink != binding_sink\n");
1794 memset(&bindinfo, 0,
sizeof(bindinfo));
1795 bindinfo.cbSize =
sizeof(bindinfo);
1796 memcpy(&exp_bindinfo, &bindinfo,
sizeof(bindinfo));
1801 SET_EXPECT(QueryService_IBindCallbackRedirect);
1802 hres = IInternetBindInfo_GetBindInfo(pOIBindInfo, &cbindf, &bindinfo);
1807 ok(cbindf == (
bindf|BINDF_FROMURLMON),
"bindf = %lx, expected %lx\n",
1808 cbindf, (
bindf|BINDF_FROMURLMON));
1809 ok(!
memcmp(&exp_bindinfo, &bindinfo,
sizeof(bindinfo)),
"unexpected bindinfo\n");
1810 pReleaseBindInfo(&bindinfo);
1813 hres = IInternetProtocolSink_ReportProgress(pOIProtSink, BINDSTATUS_SENDINGREQUEST,
emptyW);
1814 ok(
hres ==
S_OK,
"ReportProgress(BINDSTATUS_SENDINGREQUEST) failed: %08lx\n",
hres);
1828 hres = IInternetBindInfo_GetBindString(pOIBindInfo, BINDSTRING_USER_AGENT,
1831 ok(
hres ==
S_OK,
"GetBindString(BINDSTRING_USER_AGETNT) failed: %08lx\n",
hres);
1832 ok(fetched == 1,
"fetched = %ld, expected 254\n", fetched);
1833 ok(ua !=
NULL,
"ua = %p\n", ua);
1839 hres = IInternetBindInfo_GetBindString(pOIBindInfo, BINDSTRING_ACCEPT_MIMES,
1840 accept_mimes, 256, &fetched);
1844 "GetBindString(BINDSTRING_ACCEPT_MIMES) failed: %08lx\n",
hres);
1845 ok(fetched == 1,
"fetched = %ld, expected 1\n", fetched);
1849 hres = IInternetBindInfo_QueryInterface(pOIBindInfo, &IID_IServiceProvider,
1861 NULL, 0, &additional_headers);
1865 ok(additional_headers ==
NULL,
"additional_headers=%p\n", additional_headers);
1869 &IID_IHttpNegotiate2, (
void**)&http_negotiate2);
1875 hres = IHttpNegotiate2_GetRootSecurityId(http_negotiate2, sec_id, &
size, 0);
1877 IHttpNegotiate2_Release(http_negotiate2);
1878 ok(
hres ==
E_FAIL,
"GetRootSecurityId failed: %08lx, expected E_FAIL\n",
hres);
1888 SET_EXPECT(ReportProgress_CACHEFILENAMEAVAILABLE);
1889 hres = IInternetProtocolSink_ReportProgress(pOIProtSink,
1891 ok(
hres ==
S_OK,
"ReportProgress(BINDSTATUS_CACHEFILENAMEAVAILABLE) failed: %08lx\n",
hres);
1897 SET_EXPECT(ReportProgress_LOADINGMIMEHANDLER);
1899 SET_EXPECT(ReportProgress_MIMETYPEAVAILABLE);
1900 hres = IInternetProtocolSink_ReportProgress(pOIProtSink, BINDSTATUS_VERIFIEDMIMETYPEAVAILABLE,
1903 "ReportProgress(BINDSTATUS_VERIFIEDMIMETYPEAVAILABLE) failed: %08lx\n",
hres);
1917 hres = IInternetProtocolSink_ReportData(pOIProtSink,
1918 BSCF_FIRSTDATANOTIFICATION | (
tested_protocol ==
ITS_TEST ? BSCF_DATAFULLYAVAILABLE : BSCF_LASTDATANOTIFICATION),
1934 hres = IInternetProtocolSink_ReportProgress(pOIProtSink, BINDSTATUS_BEGINDOWNLOADDATA,
NULL);
1935 ok(
hres ==
S_OK,
"ReportProgress(BINDSTATUS_BEGINDOWNLOADDATA) failed: %08lx\n",
hres);
1948 hres = IInternetProtocolSink_ReportResult(pOIProtSink,
S_OK, 0,
NULL);
1968 PROTOCOLDATA *pProtocolData)
1975 ok(pProtocolData !=
NULL,
"pProtocolData == NULL\n");
1979 ok(pProtocolData != &
protocoldata,
"pProtocolData == &protocoldata\n");
1980 ok(pProtocolData->grfFlags ==
protocoldata.grfFlags,
"grfFlags wrong %lx/%lx\n",
1982 ok(pProtocolData->dwState ==
protocoldata.dwState,
"dwState wrong %lx/%lx\n",
1984 ok(pProtocolData->pData ==
protocoldata.pData,
"pData wrong %p/%p\n",
1986 ok(pProtocolData->cbData ==
protocoldata.cbData,
"cbData wrong %lx/%lx\n",
1995 static const WCHAR redirect_urlW[] = {
'h',
't',
't',
'p',
':',
'/',
'/',
't',
'e',
's',
't',
'.',
'w',
'i',
'n',
'e',
'h',
'q',
'.',
'o',
'r',
'g',
1996 '/',
't',
'e',
's',
't',
's',
'/',
'h',
'e',
'l',
'l',
'o',
'.',
'h',
't',
'm',
'l',0};
2028 hres = IInternetProtocolSink_QueryInterface(
binding_sink, &IID_IServiceProvider,
2030 ok(
hres ==
S_OK,
"Could not get IServiceProvicder\n");
2037 ok(
hres ==
S_OK,
"Could not get IHttpNegotiate\n");
2049 SET_EXPECT(ReportProgress_LOADINGMIMEHANDLER);
2050 }
else if(!(
pi & PI_MIMEVERIFICATION)) {
2051 SET_EXPECT(ReportProgress_MIMETYPEAVAILABLE);
2059 }
else if(!(
pi & PI_MIMEVERIFICATION)) {
2063 "ReportProgress(BINDSTATUS_MIMETYPEAVAILABLE) failed: %08lx\n",
hres);
2065 bscf |= BSCF_FIRSTDATANOTIFICATION;
2070 bscf = BSCF_INTERMEDIATEDATANOTIFICATION;
2084 SET_EXPECT(ReportProgress_MIMETYPEAVAILABLE);
2097 }
else if(
pi & PI_MIMEVERIFICATION) {
2130 }
else if((
pi & PI_MIMEVERIFICATION)) {
2139 ok(
cb == 700,
"cb=%ld\n",
cb);
2148 ok(
cb == 1000,
"cb=%ld\n",
cb);
2149 ok(!*pcbRead,
"*pcbRead = %ld\n", *pcbRead);
2151 ok(pcbRead !=
NULL,
"pcbRead == NULL\n");
2160 SET_EXPECT(ReportProgress_MIMETYPEAVAILABLE);
2168 BSCF_LASTDATANOTIFICATION|BSCF_INTERMEDIATEDATANOTIFICATION, 0, 0);
2226 ok(
hres ==
S_OK,
"ReportResult failed: %08lx, expected E_FAIL\n",
hres);
2271 static const IID IID_undocumentedIE10 = {0x7daf9908,0x8415,0x4005,{0x95,0xae,0xbd,0x27,0xf6,0xe3,0xdc,0x00}};
2279 *
ppv = &
This->IInternetProtocolEx_iface;
2286 *
ppv = &
This->IInternetProtocolEx_iface;
2289 *
ppv = &
This->IInternetPriority_iface;
2317 return ++
This->inner_ref;
2329 "outer_ref = %ld\n",
This->outer_ref);
2331 trace(
"outer_ref %ld\n",
This->outer_ref);
2366 LPOLESTR url_str =
NULL;
2375 ok(grfPI == (PI_FILTER_MODE|PI_FORCE_ASYNC),
"grfPI=%lx, expected PI_FILTER_MODE|PI_FORCE_ASYNC\n", grfPI);
2377 ok(pOIProtSink !=
NULL,
"pOIProtSink == NULL\n");
2378 ok(pOIBindInfo !=
NULL,
"pOIBindInfo == NULL\n");
2381 ok(pOIProtSink !=
binding_sink,
"pOIProtSink == protocol_sink\n");
2385 ok(pOIBindInfo == &
bind_info,
"pOIBindInfo != bind_info\n");
2389 ok(
data->cbSize ==
sizeof(*
data),
"data->cbSize = %ld\n",
data->cbSize);
2390 ok(!
data->pProtocolSink,
"data->pProtocolSink != NULL\n");
2391 ok(
data->pProtocol !=
NULL,
"data->pProtocol == NULL\n");
2392 ok(!
data->pUnk,
"data->pUnk != NULL\n");
2393 ok(!
data->dwFilterFlags,
"data->dwProtocolFlags = %lx\n",
data->dwFilterFlags);
2397 IInternetProtocol_QueryInterface(
data->pProtocol, &IID_IInternetProtocolSink, (
void**)&prot_sink);
2398 ok(prot_sink == pOIProtSink,
"QI(data->pProtocol, IID_IInternetProtocolSink) != pOIProtSink\n");
2399 IInternetProtocolSink_Release(prot_sink);
2408 IInternetProtocol_QueryInterface(
data->pProtocol, &IID_IInternetProtocol, (
void**)&prot);
2409 ok(prot ==
async_protocol,
"QI(data->pProtocol, IID_IInternetProtocol) != async_protocol\n");
2410 IInternetProtocol_Release(prot);
2418 hres = IInternetProtocolSink_ReportProgress(pOIProtSink, BINDSTATUS_DECODING,
pjpegW);
2419 ok(
hres ==
S_OK,
"ReportProgress(BINDSTATUS_DECODING) failed: %08lx\n",
hres);
2423 memset(&bindinfo, 0,
sizeof(bindinfo));
2424 bindinfo.cbSize =
sizeof(bindinfo);
2425 hres = IInternetBindInfo_GetBindInfo(pOIBindInfo, &cbindf, &bindinfo);
2427 ok(cbindf == (
bindf|BINDF_FROMURLMON),
"cbindf = %lx, expected %lx\n", cbindf,
bindf);
2431 hres = IInternetBindInfo_GetBindString(pOIBindInfo, BINDSTRING_URL, &url_str, 1, &fetched);
2432 ok(
hres ==
S_OK,
"GetBindString(BINDSTRING_URL) failed: %08lx\n",
hres);
2433 ok(fetched == 1,
"fetched = %ld\n", fetched);
2442 PROTOCOLDATA *pProtocolData)
2473 ok(pv !=
NULL,
"pv == NULL\n");
2474 ok(
cb != 0,
"cb == 0\n");
2475 ok(pcbRead !=
NULL,
"pcbRead == NULL\n");
2489 ok(*pcbRead == 0,
"*pcbRead=%ld, expected 0\n", *pcbRead);
2547 ok(0,
"unexpected call\n");
2565 ok(0,
"unexpected call %d\n", ParseAction);
2573 ok(0,
"unexpected call\n");
2580 ok(0,
"unexpected call\n");
2588 ok(0,
"unexpected call\n");
2649 ret->outer = pOuter;
2655 *
ppv = &
ret->IInternetProtocolEx_iface;
2657 *
ppv = &
ret->IUnknown_inner;
2663 ok(0,
"unexpected call\n");
2698#define TEST_BINDING 0x0001
2699#define TEST_FILTER 0x0002
2700#define TEST_FIRST_HTTP 0x0004
2701#define TEST_DIRECT_READ 0x0008
2702#define TEST_POST 0x0010
2703#define TEST_EMULATEPROT 0x0020
2704#define TEST_SHORT_READ 0x0040
2705#define TEST_REDIRECT 0x0080
2706#define TEST_ABORT 0x0100
2707#define TEST_ASYNCREQ 0x0200
2708#define TEST_USEIURI 0x0400
2709#define TEST_IMPLPROTEX 0x0800
2710#define TEST_EMPTY 0x1000
2711#define TEST_NOMIME 0x2000
2712#define TEST_FROMCACHE 0x4000
2713#define TEST_DISABLEAUTOREDIRECT 0x8000
2714#define TEST_RESULTFROMLOCK 0x10000
2715#define TEST_USEBINDING 0x20000
2737 IInternetSession_Release(
session);
2791 hres = IInternetProtocol_QueryInterface(
protocol, &IID_IInternetPriority,
2793 ok(
hres ==
S_OK,
"QueryInterface(IID_IInternetPriority) failed: %08lx\n",
hres);
2799 ok(pr == 0,
"pr=%ld, expected 0\n", pr);
2806 ok(pr == 1,
"pr=%ld, expected 1\n", pr);
2808 IInternetPriority_Release(
priority);
2817 &IID_IInternetProtocol, (
void**)&
protocol);
2826 IInternetProtocol_Release(
protocol);
2835 if(!(
bindf & BINDF_FROMURLMON))
2839 SET_EXPECT(ReportProgress_CACHEFILENAMEAVAILABLE);
2840 if(
bindf & BINDF_FROMURLMON)
2841 SET_EXPECT(ReportProgress_VERIFIEDMIMETYPEAVAILABLE);
2843 SET_EXPECT(ReportProgress_MIMETYPEAVAILABLE);
2864 if(!(
bindf & BINDF_FROMURLMON))
2869 if(
bindf & BINDF_FROMURLMON)
2870 CHECK_CALLED(ReportProgress_VERIFIEDMIMETYPEAVAILABLE);
2897 hres = IUnknown_QueryInterface(unk, &IID_IInternetProtocolInfo, (
void**)&
protocol_info);
2899 "Could not get IInternetProtocolInfo interface: %08lx, expected E_NOINTERFACE\n",
hres);
2902 ok(
hres ==
S_OK,
"Could not get IClassFactory interface\n");
2903 IUnknown_Release(unk);
2908 ok(
hres ==
S_OK,
"Could not get IInternetProtocol: %08lx\n",
hres);
2914 ok(
cb == 2,
"cb=%lu expected 2\n",
cb);
2921 ok(
cb == 0,
"cb=%lu expected 0\n",
cb);
2935 IInternetProtocol_Release(
protocol);
2939 ok(
hres ==
S_OK,
"Could not get IInternetProtocol: %08lx\n",
hres);
2957 IInternetProtocol_Release(
protocol);
2961 ok(
hres ==
S_OK,
"Could not get IInternetProtocol: %08lx\n",
hres);
2968 ok(
cb == 2,
"cb=%lu expected 2\n",
cb);
2971 IInternetProtocol_Release(
protocol);
2978 hres = pCreateUri(
url, Uri_CREATE_FILE_USE_DOS_PATH, 0, &
uri);
2981 hres = IClassFactory_CreateInstance(
factory,
NULL, &IID_IInternetProtocolEx, (
void**)&protocolex);
2982 ok(
hres ==
S_OK,
"Could not get IInternetProtocolEx: %08lx\n",
hres);
2985 hres = IInternetProtocolEx_Read(protocolex,
buf, 2, &
cb);
2987 hres = IInternetProtocolEx_LockRequest(protocolex, 0);
2989 hres = IInternetProtocolEx_UnlockRequest(protocolex);
2994 IInternetProtocolEx_Release(protocolex);
2999 hres = IClassFactory_CreateInstance(
factory,
NULL, &IID_IInternetProtocolEx, (
void**)&protocolex);
3000 ok(
hres ==
S_OK,
"Could not get IInternetProtocolEx: %08lx\n",
hres);
3003 hres = IInternetProtocolEx_Read(protocolex,
buf, 2, &
cb);
3005 hres = IInternetProtocolEx_LockRequest(protocolex, 0);
3007 hres = IInternetProtocolEx_UnlockRequest(protocolex);
3012 IInternetProtocolEx_Release(protocolex);
3014 win_skip(
"Skipping file protocol StartEx tests\n");
3017 IClassFactory_Release(
factory);
3025 static const WCHAR index_url2[] =
3026 {
'f',
'i',
'l',
'e',
':',
'/',
'/',
'i',
'n',
'd',
'e',
'x',
'.',
'h',
't',
'm',
'l',0};
3029 &IID_IInternetProtocol, (
void**)&
protocol);
3039 "Start failed: %08lx, expected MK_E_SYNTAX or E_INVALIDARG\n",
hres);
3043 if(!(
bindf & BINDF_FROMURLMON))
3050 "Start failed: %08lx expected INET_E_RESOURCE_NOT_FOUND\n",
hres);
3052 if(!(
bindf & BINDF_FROMURLMON))
3057 IInternetProtocol_Release(
protocol);
3060 &IID_IInternetProtocol, (
void**)&
protocol);
3066 if(!(
bindf & BINDF_FROMURLMON))
3074 "Start failed: %08lx, expected INET_E_RESOURCE_NOT_FOUND\n",
hres);
3076 if(!(
bindf & BINDF_FROMURLMON))
3091 IInternetProtocol_Release(
protocol);
3100 static const WCHAR wszFile[] = {
'f',
'i',
'l',
'e',
':',0};
3101 static const WCHAR wszFile2[] = {
'f',
'i',
'l',
'e',
':',
'/',
'/',0};
3102 static const WCHAR wszFile3[] = {
'f',
'i',
'l',
'e',
':',
'/',
'/',
'/',0};
3103 static const WCHAR wszFile4[] = {
'f',
'i',
'l',
'e',
':',
'\\',
'\\',0};
3104 static const char html_doc[] =
"<HTML></HTML>";
3105 static const WCHAR fragmentW[] = {
'#',
'f',
'r',
'a',
'g',0};
3107 trace(
"Testing file protocol...\n");
3122 bindf = BINDF_FROMURLMON;
3124 bindf = BINDF_FROMURLMON | BINDF_NEEDFILE;
3136 bindf = BINDF_FROMURLMON;
3139 memcpy(
buf, wszFile2,
sizeof(wszFile2));
3141 file_name_buf[
len++] =
'\\';
3147 bindf = BINDF_FROMURLMON;
3153 memcpy(
buf, wszFile3,
sizeof(wszFile3));
3162 bindf = BINDF_FROMURLMON;
3165 memcpy(
buf, wszFile4,
sizeof(wszFile4));
3167 file_name_buf[
len++] =
'\\';
3173 bindf = BINDF_FROMURLMON;
3191 file_name_buf[
len] = 0;
3201 bindf = BINDF_FROMURLMON;
3217 BYTE cache_headers[] =
"HTTP/1.1 200 OK\r\n\r\n";
3219 trace(
"Testing cache read...\n");
3227 li.
u.HighPart =
now.dwHighDateTime;
3228 li.
u.LowPart =
now.dwLowDateTime;
3246 cache_headers,
sizeof(cache_headers)-1,
"", 0);
3256 if(use_iuri && pCreateUri) {
3262 if (!(
bindf & BINDF_FROMURLMON))
3278 SET_EXPECT(ReportProgress_MIMETYPEAVAILABLE);
3285 hres = IInternetProtocol_QueryInterface(
async_protocol, &IID_IInternetProtocolEx, (
void**)&protocolex);
3286 ok(
hres ==
S_OK,
"Could not get IInternetProtocolEx iface: %08lx\n",
hres);
3291 IInternetProtocolEx_Release(protocolex);
3301 if (!(
bindf & BINDF_FROMURLMON))
3303 if (!got_user_agent)
3306 got_user_agent =
TRUE;
3339 "Read failed: %08lx\n",
hres);
3380 hres = IUnknown_QueryInterface(unk, &IID_IInternetProtocolInfo, (
void**)&
protocol_info);
3382 "Could not get IInternetProtocolInfo interface: %08lx, expected E_NOINTERFACE\n",
3386 ok(
hres ==
S_OK,
"Could not get IClassFactory interface\n");
3387 IUnknown_Release(unk);
3396 hres = IClassFactory_CreateInstance(
factory,
NULL, &IID_IInternetProtocol,
3398 ok(
hres ==
S_OK,
"Could not get IInternetProtocol: %08lx\n",
hres);
3411 SET_EXPECT(QueryService_IBindCallbackRedirect);
3422 SET_EXPECT(GetBindString_SAMESITE_COOKIE_LEVEL);
3426 SET_EXPECT(ReportProgress_CACHEFILENAMEAVAILABLE);
3429 if(!(
bindf & BINDF_FROMURLMON)) {
3487 if(
bindf & BINDF_FROMURLMON)
3495 if(
bindf & BINDF_FROMURLMON)
3505 if(
bindf & BINDF_FROMURLMON)
3519 ok(
hres == INET_E_RESULT_DISPATCHED ||
hres ==
S_OK ,
"Abort failed: %08lx\n",
hres);
3523 if(
bindf & BINDF_FROMURLMON)
3542 ok(
hres == INET_E_RESULT_DISPATCHED ||
hres ==
S_OK ,
"Abort failed: %08lx\n",
hres);
3553 IClassFactory_Release(
factory);
3565 static const WCHAR posttest_url[] =
3566 {
'h',
't',
't',
'p',
':',
'/',
'/',
't',
'e',
's',
't',
'.',
'w',
'i',
'n',
'e',
'h',
'q',
'.',
'o',
'r',
'g',
'/',
3567 't',
'e',
's',
't',
's',
'/',
'p',
'o',
's',
't',
'.',
'p',
'h',
'p',0};
3568 static const WCHAR redirect_url[] =
3569 {
'h',
't',
't',
'p',
':',
'/',
'/',
't',
'e',
's',
't',
'.',
'w',
'i',
'n',
'e',
'h',
'q',
'.',
'o',
'r',
'g',
'/',
3570 't',
'e',
's',
't',
's',
'/',
'r',
'e',
'd',
'i',
'r',
'e',
'c',
't',0};
3571 static const WCHAR winetest_url[] =
3572 {
'h',
't',
't',
'p',
':',
'/',
'/',
't',
'e',
's',
't',
'.',
'w',
'i',
'n',
'e',
'h',
'q',
'.',
'o',
'r',
'g',
'/',
3573 't',
'e',
's',
't',
's',
'/',
'd',
'a',
't',
'a',
'.',
'p',
'h',
'p',0};
3574 static const WCHAR empty_url[] =
3575 {
'h',
't',
't',
'p',
':',
'/',
'/',
't',
'e',
's',
't',
'.',
'w',
'i',
'n',
'e',
'h',
'q',
'.',
'o',
'r',
'g',
'/',
3576 't',
'e',
's',
't',
's',
'/',
'e',
'm',
'p',
't',
'y',
'.',
'j',
's',0};
3577 static const WCHAR cache_only_url[] =
3578 {
'h',
't',
't',
'p',
':',
'/',
'/',
't',
'e',
's',
't',
'.',
'w',
'i',
'n',
'e',
'h',
'q',
'.',
'o',
'r',
'g',
'/',
3579 't',
'e',
's',
't',
's',
'/',
'c',
'a',
'c',
'h',
'e',
'-',
'o',
'n',
'l',
'y',0};
3582 trace(
"Testing http protocol (not from urlmon)...\n");
3583 bindf = BINDF_ASYNCHRONOUS | BINDF_ASYNCSTORAGE | BINDF_PULLDATA;
3586 trace(
"Testing http protocol (from urlmon)...\n");
3587 bindf = BINDF_ASYNCHRONOUS | BINDF_ASYNCSTORAGE | BINDF_PULLDATA | BINDF_FROMURLMON;
3590 trace(
"Testing http protocol (to file)...\n");
3591 bindf = BINDF_ASYNCHRONOUS | BINDF_ASYNCSTORAGE | BINDF_PULLDATA | BINDF_FROMURLMON | BINDF_NEEDFILE;
3594 trace(
"Testing http protocol (post data)...\n");
3595 bindf = BINDF_ASYNCHRONOUS | BINDF_ASYNCSTORAGE | BINDF_PULLDATA | BINDF_FROMURLMON;
3598 trace(
"Testing http protocol (post data stream)...\n");
3601 trace(
"Testing http protocol (direct read)...\n");
3602 bindf = BINDF_ASYNCHRONOUS | BINDF_ASYNCSTORAGE | BINDF_PULLDATA | BINDF_FROMURLMON;
3605 trace(
"Testing http protocol (redirected)...\n");
3606 bindf = BINDF_ASYNCHRONOUS | BINDF_ASYNCSTORAGE | BINDF_PULLDATA | BINDF_FROMURLMON | BINDF_NOWRITECACHE;
3609 trace(
"Testing http protocol (redirected, disable auto redirect)...\n");
3610 bindf = BINDF_ASYNCHRONOUS | BINDF_ASYNCSTORAGE | BINDF_PULLDATA | BINDF_FROMURLMON | BINDF_NOWRITECACHE;
3613 trace(
"Testing http protocol empty file...\n");
3614 bindf = BINDF_ASYNCHRONOUS | BINDF_ASYNCSTORAGE | BINDF_PULLDATA | BINDF_FROMURLMON | BINDF_NOWRITECACHE;
3617 trace(
"Testing http protocol (redirected, binding)...\n");
3618 bindf = BINDF_ASYNCHRONOUS | BINDF_ASYNCSTORAGE | BINDF_PULLDATA | BINDF_FROMURLMON | BINDF_NOWRITECACHE;
3627 trace(
"Testing http protocol (from cache)...\n");
3628 bindf = BINDF_ASYNCHRONOUS | BINDF_ASYNCSTORAGE | BINDF_PULLDATA | BINDF_FROMURLMON;
3632 trace(
"Testing http protocol abort...\n");
3633 bindf = BINDF_ASYNCHRONOUS | BINDF_ASYNCSTORAGE | BINDF_PULLDATA | BINDF_FROMURLMON | BINDF_NOWRITECACHE;
3642 static const WCHAR https_winehq_url[] =
3643 {
'h',
't',
't',
'p',
's',
':',
'/',
'/',
't',
'e',
's',
't',
'.',
'w',
'i',
'n',
'e',
'h',
'q',
'.',
'o',
'r',
'g',
'/',
3644 't',
'e',
's',
't',
's',
'/',
'h',
'e',
'l',
'l',
'o',
'.',
'h',
't',
'm',
'l',0};
3646 trace(
"Testing https protocol (from urlmon)...\n");
3647 bindf = BINDF_ASYNCHRONOUS | BINDF_ASYNCSTORAGE | BINDF_PULLDATA | BINDF_FROMURLMON | BINDF_NOWRITECACHE;
3662 static const WCHAR ftp_urlW[] = {
'f',
't',
'p',
':',
'/',
'/',
'f',
't',
'p',
'.',
'w',
'i',
'n',
'e',
'h',
'q',
'.',
'o',
'r',
'g',
3663 '/',
'p',
'u',
'b',
'/',
'o',
't',
'h',
'e',
'r',
'/',
3664 'w',
'i',
'n',
'e',
'l',
'o',
'g',
'o',
'.',
'x',
'c',
'f',
'.',
't',
'a',
'r',
'.',
'b',
'z',
'2',0};
3666 trace(
"Testing ftp protocol...\n");
3670 bindf = BINDF_ASYNCHRONOUS | BINDF_ASYNCSTORAGE | BINDF_PULLDATA | BINDF_FROMURLMON | BINDF_NOWRITECACHE;
3679 hres = IUnknown_QueryInterface(unk, &IID_IInternetProtocolInfo, (
void**)&
protocol_info);
3680 ok(
hres ==
E_NOINTERFACE,
"Could not get IInternetProtocolInfo interface: %08lx, expected E_NOINTERFACE\n",
hres);
3683 ok(
hres ==
S_OK,
"Could not get IClassFactory interface\n");
3684 IUnknown_Release(unk);
3688 hres = IClassFactory_CreateInstance(
factory,
NULL, &IID_IInternetProtocol,
3690 IClassFactory_Release(
factory);
3691 ok(
hres ==
S_OK,
"Could not get IInternetProtocol: %08lx\n",
hres);
3714 skip(
"FTP protocol timed out\n" );
3740 hres = IInternetProtocol_QueryInterface(
async_protocol, &IID_IInternetProtocolEx, (
void**)&protocolex);
3741 ok(
hres ==
S_OK,
"Could not get IInternetProtocolEx iface: %08lx\n",
hres);
3742 IInternetProtocolEx_Release(protocolex);
3758 trace(
"Testing gopher protocol...\n");
3763 "CoGetClassObject failed: %08lx\n",
hres);
3767 hres = IUnknown_QueryInterface(unk, &IID_IInternetProtocolInfo, (
void**)&
protocol_info);
3768 ok(
hres ==
E_NOINTERFACE,
"Could not get IInternetProtocolInfo interface: %08lx, expected E_NOINTERFACE\n",
hres);
3771 ok(
hres ==
S_OK,
"Could not get IClassFactory interface\n");
3772 IUnknown_Release(unk);
3776 hres = IClassFactory_CreateInstance(
factory,
NULL, &IID_IInternetProtocol,
3778 IClassFactory_Release(
factory);
3779 ok(
hres ==
S_OK,
"Could not get IInternetProtocol: %08lx\n",
hres);
3796 static const WCHAR wrong_url1[] = {
't',
'e',
's',
't',
':',
'@',
'M',
'S',
'I',
'T',
'S',
't',
'o',
'r',
'e',
3797 ':',
':',
'/',
't',
'e',
's',
't',
'.',
'h',
't',
'm',
'l',0};
3798 static const WCHAR wrong_url2[] = {
'm',
'k',
':',
'/',
't',
'e',
's',
't',
'.',
'h',
't',
'm',
'l',0};
3800 trace(
"Testing mk protocol...\n");
3807 hres = IUnknown_QueryInterface(unk, &IID_IInternetProtocolInfo, (
void**)&
protocol_info);
3809 "Could not get IInternetProtocolInfo interface: %08lx, expected E_NOINTERFACE\n",
3813 ok(
hres ==
S_OK,
"Could not get IClassFactory interface\n");
3814 IUnknown_Release(unk);
3818 hres = IClassFactory_CreateInstance(
factory,
NULL, &IID_IInternetProtocol,
3820 IClassFactory_Release(
factory);
3821 ok(
hres ==
S_OK,
"Could not get IInternetProtocol: %08lx\n",
hres);
3826 "Start failed: %08lx, expected MK_E_SYNTAX or INET_E_INVALID_URL\n",
hres);
3832 SET_EXPECT(ReportProgress_MIMETYPEAVAILABLE);
3839 "Start failed: %08lx, expected INET_E_RESOURCE_NOT_FOUND or INET_E_INVALID_URL\n",
hres);
3855 IInternetProtocol_Release(
protocol);
3871 {
't',
'e',
's',
't',
':',
'/',
'/',
'f',
'i',
'l',
'e',
'.',
'h',
't',
'm',
'l',0};
3872 static const WCHAR wsz_test[] = {
't',
'e',
's',
't',0};
3889 ok(
hres ==
S_OK,
"QueryInterface(IID_IInternetBindInfo) failed: %08lx\n",
hres);
3892 ok(
hres ==
S_OK,
"Could not get IInternetProtocolSink: %08lx\n",
hres);
3902 ok(
hres ==
S_OK,
"QueryInterface(IID_IInternetPriority) failed: %08lx\n",
hres);
3907 ok(!
p,
"p=%ld\n",
p);
3916 ok(
p == 100,
"p=%ld\n",
p);
3918 hres = IInternetProtocol_QueryInterface(
protocol, &IID_IWinInetInfo, (
void**)&inet_info);
3963 hres = IInternetProtocol_QueryInterface(
protocol, &IID_IWinInetInfo, (
void**)&inet_info);
3970 hres = IInternetProtocol_QueryInterface(
protocol, &IID_IWinInetInfo, (
void**)&inet_info);
3977 hres = IInternetProtocol_QueryInterface(
protocol, &IID_IWinInetHttpInfo, (
void**)&http_info);
3999 ok(
p == 100,
"p=%ld\n",
p);
4013 hres = IInternetProtocol_Terminate(
protocol, 0xdeadbeef);
4043 ok(
hres ==
S_OK,
"ReportProgress(BINDSTATUS_CACHEFILENAMEAVAILABLE) failed: %08lx\n",
hres);
4052 IInternetPriority_Release(
priority);
4058 IInternetProtocol_Release(
protocol);
4071 IInternetProtocol_Release(
protocol);
4085 IInternetProtocol_Release(
protocol);
4087 IInternetSession_Release(
session);
4117 ok(
hres ==
S_OK,
"QueryInterface(IID_IInternetBindInfo) failed: %08lx\n",
hres);
4120 ok(
hres ==
S_OK,
"QueryInterface(IID_IInternetProtocolSink) failed: %08lx\n",
hres);
4123 hres = IInternetProtocol_QueryInterface(
protocol, &IID_IInternetProtocolEx, (
void**)&protocolex);
4124 ok(
hres ==
S_OK,
"Could not get IInternetProtocolEx iface: %08lx\n",
hres);
4160 IInternetProtocolEx_Release(protocolex);
4236 ok(!
ref,
"ref=%lu, expected 0\n",
ref);
4244 IInternetSession_Release(
session);
4247static const IID outer_test_iid = {0xabcabc00,0,0,{0,0,0,0,0,0,0,0x66}};
4289 hres = IUnknown_QueryInterface(unk, &IID_IInternetProtocol, (
void**)&unk2);
4290 ok(
hres ==
S_OK,
"Could not get IDispatch iface: %08lx\n",
hres);
4295 ok(
hres ==
S_OK,
"Could not get IInternetProtocol iface: %08lx\n",
hres);
4296 ok(unk3 == (
IUnknown*)0xdeadbeef,
"unexpected unk2\n");
4298 IUnknown_Release(unk2);
4299 IUnknown_Release(unk);
4301 unk = (
void*)0xdeadbeef;
4304 ok(!unk,
"unk = %p\n", unk);
4314 pCoInternetGetSession = (
void*)
GetProcAddress(hurlmon,
"CoInternetGetSession");
4315 pReleaseBindInfo = (
void*)
GetProcAddress(hurlmon,
"ReleaseBindInfo");
4319 win_skip(
"Various needed functions not present, too old IE\n");
4324 win_skip(
"CreateUri not supported\n");
4339 win_skip(
"Skipping test that runs forever on Windows Vista\n");
4347 win_skip(
"Skipping https tests on too old platform\n");
4359 bindf = BINDF_ASYNCHRONOUS | BINDF_ASYNCSTORAGE | BINDF_NOWRITECACHE | BINDF_PULLDATA;
4360 trace(
"Testing file binding (mime verification, emulate prot)...\n");
4362 trace(
"Testing http binding (mime verification, emulate prot)...\n");
4364 trace(
"Testing its binding (mime verification, emulate prot)...\n");
4366 trace(
"Testing http binding (mime verification, emulate prot, short read, direct read)...\n");
4368 trace(
"Testing http binding (mime verification, redirect, emulate prot)...\n");
4370 trace(
"Testing http binding (mime verification, redirect, disable auto redirect, emulate prot)...\n");
4372 trace(
"Testing file binding (mime verification, emulate prot, mime filter)...\n");
4374 trace(
"Testing http binding (mime verification, emulate prot, mime filter)...\n");
4376 trace(
"Testing http binding (mime verification, emulate prot, mime filter, no mime)...\n");
4378 trace(
"Testing http binding (mime verification, emulate prot, direct read)...\n");
4380 trace(
"Testing http binding (mime verification, emulate prot, abort)...\n");
4382 trace(
"Testing its binding (mime verification, emulate prot, apartment thread)...\n");
4385 trace(
"Testing file binding (use IUri, mime verification, emulate prot)...\n");
4387 trace(
"Testing file binding (use IUri, impl StartEx, mime verification, emulate prot)...\n");
4389 trace(
"Testing file binding (impl StartEx, mime verification, emulate prot)...\n");
const GUID IID_IClassFactory
INT WINAPI StringFromGUID2(REFGUID guid, LPOLESTR str, INT cmax)
HRESULT WINAPI DECLSPEC_HOTPATCH CoGetClassObject(REFCLSID rclsid, DWORD clscontext, COSERVERINFO *server_info, REFIID riid, void **obj)
HRESULT WINAPI DECLSPEC_HOTPATCH CoCreateInstance(REFCLSID rclsid, IUnknown *outer, DWORD cls_context, REFIID riid, void **obj)
void *WINAPI CoTaskMemAlloc(SIZE_T size)
void WINAPI CoTaskMemFree(void *ptr)
#define GetCurrentDirectoryW(x, y)
#define GetProcAddress(x, y)
#define INVALID_HANDLE_VALUE
#define CreateFileA(a, b, c, d, e, f, g)
#define FILE_ATTRIBUTE_NORMAL
#define WideCharToMultiByte
static MimeHtmlProtocol * impl_from_IUnknown(IUnknown *iface)
BOOL WINAPI DeleteFileW(IN LPCWSTR lpFileName)
BOOL WINAPI WriteFile(_In_ HANDLE hFile, _In_reads_bytes_opt_(nNumberOfBytesToWrite) LPCVOID lpBuffer, _In_ DWORD nNumberOfBytesToWrite, _Out_opt_ LPDWORD lpNumberOfBytesWritten, _Inout_opt_ LPOVERLAPPED lpOverlapped)
HMODULE WINAPI DECLSPEC_HOTPATCH GetModuleHandleA(LPCSTR lpModuleName)
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)
VOID WINAPI GetSystemTimeAsFileTime(OUT PFILETIME lpFileTime)
int WINAPI lstrcmpW(LPCWSTR str1, LPCWSTR str2)
static HRESULT WINAPI ClassFactory_LockServer(IClassFactory *iface, BOOL dolock)
static ULONG WINAPI ClassFactory_Release(IClassFactory *iface)
static HRESULT WINAPI InternetProtocolInfo_CompareUrl(IInternetProtocolInfo *iface, LPCWSTR pwzUrl1, LPCWSTR pwzUrl2, DWORD dwCompareFlags)
static HRESULT WINAPI InternetProtocolInfo_CombineUrl(IInternetProtocolInfo *iface, LPCWSTR pwzBaseUrl, LPCWSTR pwzRelativeUrl, DWORD dwCombineFlags, LPWSTR pwzResult, DWORD cchResult, DWORD *pcchResult, DWORD dwReserved)
static ULONG WINAPI InternetProtocolInfo_AddRef(IInternetProtocolInfo *iface)
static HRESULT WINAPI ClassFactory_QueryInterface(IClassFactory *iface, REFIID riid, void **ppv)
static ULONG WINAPI ClassFactory_AddRef(IClassFactory *iface)
static ULONG WINAPI InternetProtocolInfo_Release(IInternetProtocolInfo *iface)
static HRESULT WINAPI InternetProtocolInfo_QueryInterface(IInternetProtocolInfo *iface, REFIID riid, void **ppv)
_ACRTIMP int __cdecl memcmp(const void *, const void *, size_t)
_ACRTIMP size_t __cdecl strlen(const char *)
_ACRTIMP int __cdecl strcmp(const char *, const char *)
HRESULT WINAPI DECLSPEC_HOTPATCH OleInitialize(LPVOID reserved)
void WINAPI DECLSPEC_HOTPATCH OleUninitialize(void)
BOOL WINAPI CreateUrlCacheEntryA(LPCSTR lpszUrlName, DWORD dwExpectedFileSize, LPCSTR lpszFileExtension, LPSTR lpszFileName, DWORD dwReserved)
BOOL WINAPI CommitUrlCacheEntryA(LPCSTR lpszUrlName, LPCSTR lpszLocalFileName, FILETIME ExpireTime, FILETIME LastModifiedTime, DWORD CacheEntryType, LPBYTE lpHeaderInfo, DWORD dwHeaderSize, LPCSTR lpszFileExtension, LPCSTR lpszOriginalUrl)
BOOL WINAPI DeleteUrlCacheEntryW(LPCWSTR lpszUrlName)
PVOID LockRequest(PIRP Irp, PIO_STACK_LOCATION IrpSp, BOOLEAN Output, KPROCESSOR_MODE *LockMode)
VOID UnlockRequest(PIRP Irp, PIO_STACK_LOCATION IrpSp)
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
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 GlobalAlloc(UINT uFlags, SIZE_T dwBytes)
static CInternetFolder * CreateInstance(void)
LPWSTR WINAPI lstrcatW(LPWSTR lpString1, LPCWSTR lpString2)
#define todo_wine_if(is_todo)
#define memcpy(s1, s2, n)
static IInternetProtocolSink protocol_sink
static IInternetBindInfo bind_info
static HRESULT WINAPI ProtocolSink_ReportProgress(IInternetProtocolSink *iface, ULONG ulStatusCode, LPCWSTR szStatusText)
static HRESULT WINAPI ProtocolSink_Switch(IInternetProtocolSink *iface, PROTOCOLDATA *pProtocolData)
static const IUnknownVtbl outer_vtbl
static ULONG WINAPI BindInfo_Release(IInternetBindInfo *iface)
static IInternetBindInfoVtbl bind_info_vtbl
static IInternetProtocolSinkVtbl protocol_sink_vtbl
static ULONG WINAPI outer_AddRef(IUnknown *iface)
#define CHECK_EXPECT(func)
static ULONG WINAPI ProtocolSink_Release(IInternetProtocolSink *iface)
#define DEFINE_EXPECT(func)
static const IID outer_test_iid
static HRESULT WINAPI BindInfo_QueryInterface(IInternetBindInfo *iface, REFIID riid, void **ppv)
static HRESULT WINAPI BindInfo_GetBindInfo(IInternetBindInfo *iface, DWORD *grfBINDF, BINDINFO *pbindinfo)
static HRESULT WINAPI ProtocolSink_QueryInterface(IInternetProtocolSink *iface, REFIID riid, void **ppv)
static void test_mk_protocol(void)
#define protocol_start(p, u, e)
static HRESULT WINAPI outer_QueryInterface(IUnknown *iface, REFIID riid, void **ppv)
static HRESULT expect_hrResult
static void test_com_aggregation(const CLSID *clsid)
#define CHECK_CALLED(func)
static HRESULT WINAPI ProtocolSink_ReportResult(IInternetProtocolSink *iface, HRESULT hrResult, DWORD dwError, LPCWSTR szResult)
static HRESULT WINAPI ProtocolSink_ReportData(IInternetProtocolSink *iface, DWORD grfBSCF, ULONG ulProgress, ULONG ulProgressMax)
static HRESULT WINAPI BindInfo_GetBindString(IInternetBindInfo *iface, ULONG ulStringType, LPOLESTR *ppwzStr, ULONG cEl, ULONG *pcElFetched)
static ULONG WINAPI BindInfo_AddRef(IInternetBindInfo *iface)
static ULONG WINAPI ProtocolSink_AddRef(IInternetProtocolSink *iface)
static ULONG WINAPI outer_Release(IUnknown *iface)
IHTMLDocument2 * html_doc
static IInternetProtocolInfo protocol_info
static void test_file_protocol(void)
static HRESULT WINAPI ServiceProvider_QueryService(IServiceProvider *iface, REFGUID guidService, REFIID riid, void **ppv)
static void test_protocol_terminate(IInternetProtocol *protocol)
static const WCHAR pjpegW[]
static LPCWSTR expect_wsz
static HRESULT WINAPI ProtocolEmul_Continue(IInternetProtocolEx *iface, PROTOCOLDATA *pProtocolData)
static ULONG WINAPI Stream_AddRef(IStream *iface)
#define CLEAR_CALLED(func)
static void test_file_protocol_fail(void)
static const CHAR post_data[]
static const WCHAR protocol_names[][10]
static HRESULT WINAPI InternetPriority_QueryInterface(IInternetPriority *iface, REFIID riid, void **ppv)
static ULONG WINAPI ProtocolUnk_AddRef(IUnknown *iface)
static void register_filter(BOOL do_register)
static PROTOCOLDATA protocoldata
static HRESULT WINAPI ProtocolEmul_UnlockRequest(IInternetProtocolEx *iface)
static HRESULT WINAPI MimeProtocol_Start(IInternetProtocolEx *iface, LPCWSTR szUrl, IInternetProtocolSink *pOIProtSink, IInternetBindInfo *pOIBindInfo, DWORD grfPI, HANDLE_PTR dwReserved)
static HRESULT WINAPI MimeProtocol_Read(IInternetProtocolEx *iface, void *pv, ULONG cb, ULONG *pcbRead)
static ULONG WINAPI ServiceProvider_Release(IServiceProvider *iface)
static BOOL test_async_req
static BOOL async_read_pending
static HRESULT WINAPI HttpNegotiate_OnResponse(IHttpNegotiate2 *iface, DWORD dwResponseCode, LPCWSTR szResponseHeaders, LPCWSTR szRequestHeaders, LPWSTR *pszAdditionalRequestHeaders)
static HRESULT WINAPI MimeProtocol_LockRequest(IInternetProtocolEx *iface, DWORD dwOptions)
static ULONG WINAPI Protocol_AddRef(IInternetProtocolEx *iface)
static const IInternetProtocolExVtbl MimeProtocolVtbl
static HRESULT WINAPI InternetPriority_SetPriority(IInternetPriority *iface, LONG nPriority)
static void test_http_protocol_url(LPCWSTR url, int prot, DWORD flags, DWORD tymed)
static HRESULT WINAPI ClassFactory_CreateInstance(IClassFactory *iface, IUnknown *pOuter, REFIID riid, void **ppv)
static HRESULT WINAPI HttpSecurity_QueryInterface(IHttpSecurity *iface, REFIID riid, void **ppv)
static BOOL wait_for_switch
static HRESULT WINAPI Stream_SetSize(IStream *iface, ULARGE_INTEGER libNewSize)
static void test_http_protocol(void)
static HRESULT WINAPI Protocol_Abort(IInternetProtocolEx *iface, HRESULT hrReason, DWORD dwOptions)
static BOOL bind_from_cache
static IInternetProtocolEx MimeProtocol
static HRESULT WINAPI InternetPriority_GetPriority(IInternetPriority *iface, LONG *pnPriority)
static void create_cache_entry(const WCHAR *urlw)
static IInternetProtocol * binding_protocol
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 Stream_Revert(IStream *iface)
static ULONG WINAPI InternetPriority_Release(IInternetPriority *iface)
static IHttpSecurity http_security
static ULONG WINAPI HttpNegotiate_Release(IHttpNegotiate2 *iface)
static const WCHAR binding_urls[][130]
static const WCHAR text_htmlW[]
static HRESULT WINAPI Stream_Stat(IStream *iface, STATSTG *pstatstg, DWORD dwStatFlag)
static HRESULT WINAPI HttpSecurity_GetWindow(IHttpSecurity *iface, REFGUID rguidReason, HWND *phwnd)
static HRESULT WINAPI ProtocolUnk_QueryInterface(IUnknown *iface, REFIID riid, void **ppv)
static HRESULT WINAPI MimeProtocol_QueryInterface(IInternetProtocolEx *iface, REFIID riid, void **ppv)
static HRESULT WINAPI Stream_CopyTo(IStream *iface, IStream *pstm, ULARGE_INTEGER cb, ULARGE_INTEGER *pcbRead, ULARGE_INTEGER *pcbWritten)
static IClassFactory mimefilter_cf
static HRESULT QueryInterface(REFIID, void **)
static const char * w2a(LPCWSTR str)
static const IBindCallbackRedirectVtbl BindCallbackRedirectVtbl
static void test_binding(int prot, DWORD grf_pi, DWORD test_flags)
static HRESULT WINAPI ProtocolEmul_LockRequest(IInternetProtocolEx *iface, DWORD dwOptions)
static int post_stream_read
static const WCHAR acc_mimeW[]
static void call_continue(PROTOCOLDATA *protocol_data)
static HANDLE event_continue_done
static BOOL no_aggregation
static DWORD filter_state
static IInternetBindInfo * prot_bind_info
static void test_file_protocol_url(LPCWSTR url)
static HRESULT WINAPI Stream_LockRegion(IStream *iface, ULARGE_INTEGER libOffset, ULARGE_INTEGER cb, DWORD dwLockType)
static IHttpNegotiate2 http_negotiate
static BOOL file_with_hash
static IServiceProvider service_provider
static HRESULT WINAPI Stream_QueryInterface(IStream *iface, REFIID riid, void **ppv)
static const IClassFactoryVtbl MimeFilterCFVtbl
static const WCHAR wszIndexHtml[]
static IBindCallbackRedirect redirect_callback
static const WCHAR hostW[]
static HANDLE event_continue
static IInternetProtocolSink mime_protocol_sink
static IInternetProtocol * async_protocol
#define TEST_RESULTFROMLOCK
static IHttpNegotiate2Vtbl HttpNegotiateVtbl
static BOOL redirect_on_continue
static ULONG WINAPI HttpSecurity_Release(IHttpSecurity *iface)
static HRESULT WINAPI ProtocolEmul_StartEx(IInternetProtocolEx *iface, IUri *pUri, IInternetProtocolSink *pOIProtSink, IInternetBindInfo *pOIBindInfo, DWORD grfPI, HANDLE *dwReserved)
static WCHAR protocol_clsid[CHARS_IN_GUID]
static HRESULT WINAPI Stream_Clone(IStream *iface, IStream **ppstm)
static HRESULT WINAPI BindCallbackRedirect_QueryInterface(IBindCallbackRedirect *iface, REFIID riid, void **ppv)
static IHttpSecurityVtbl HttpSecurityVtbl
static HRESULT WINAPI ProtocolEmul_Terminate(IInternetProtocolEx *iface, DWORD dwOptions)
static BOOL result_from_lock
static HRESULT WINAPI HttpSecurity_OnSecurityProblem(IHttpSecurity *iface, DWORD dwProblem)
static DWORD http_post_test
static DWORD WINAPI thread_proc(PVOID arg)
static void test_CreateBinding(void)
static ULONG WINAPI BindCallbackRedirect_Release(IBindCallbackRedirect *iface)
static PROTOCOLDATA continue_protdata
static PROTOCOLDATA * pdata
static HRESULT WINAPI HttpNegotiate_GetRootSecurityId(IHttpNegotiate2 *iface, BYTE *pbSecurityId, DWORD *pcbSecurityId, DWORD_PTR dwReserved)
static HRESULT WINAPI Stream_UnlockRegion(IStream *iface, ULARGE_INTEGER libOffset, ULARGE_INTEGER cb, DWORD dwLockType)
static HRESULT WINAPI Protocol_Resume(IInternetProtocolEx *iface)
static void test_ftp_protocol(void)
#define CHECK_EXPECT2(func)
static HRESULT WINAPI HttpNegotiate_BeginningTransaction(IHttpNegotiate2 *iface, LPCWSTR szURL, LPCWSTR szHeaders, DWORD dwReserved, LPWSTR *pszAdditionalHeaders)
static ULONG WINAPI BindCallbackRedirect_AddRef(IBindCallbackRedirect *iface)
static BOOL http_protocol_start(LPCWSTR url, BOOL use_iuri)
#define TEST_DISABLEAUTOREDIRECT
static ULONG WINAPI ProtocolUnk_Release(IUnknown *iface)
static HRESULT WINAPI MimeFilter_CreateInstance(IClassFactory *iface, IUnknown *outer, REFIID riid, void **ppv)
static const WCHAR emptyW[]
static int read_report_data
static BOOL http_is_first
static ULONG WINAPI Protocol_Release(IInternetProtocolEx *iface)
static void test_early_abort(const CLSID *clsid)
static ULONG WINAPI MimeProtocolSink_AddRef(IInternetProtocolSink *iface)
static HRESULT WINAPI ProtocolEmul_QueryInterface(IInternetProtocolEx *iface, REFIID riid, void **ppv)
static HRESULT WINAPI MimeProtocolSink_Switch(IInternetProtocolSink *iface, PROTOCOLDATA *pProtocolData)
static DWORD bindinfo_options
static const IUnknownVtbl ProtocolUnkVtbl
static void test_https_protocol(void)
static BOOL first_data_notif
static const WCHAR winehq_ipW[]
static void test_gopher_protocol(void)
static BOOL reuse_protocol_thread
static const IInternetProtocolExVtbl ProtocolVtbl
static BOOL security_problem
static const WCHAR user_agentW[]
static ULONG WINAPI HttpNegotiate_AddRef(IHttpNegotiate2 *iface)
static Protocol * protocol_emul
static const char * status_names[]
static ULONG WINAPI Stream_Release(IStream *iface)
static const IStreamVtbl StreamVtbl
static void test_http_info(IInternetProtocol *protocol)
static HRESULT WINAPI Protocol_Suspend(IInternetProtocolEx *iface)
static ULONG WINAPI ProtocolEmul_AddRef(IInternetProtocolEx *iface)
static BOOL mimefilter_test
static HRESULT WINAPI Stream_Commit(IStream *iface, DWORD grfCommitFlags)
static const IInternetPriorityVtbl InternetPriorityVtbl
static HRESULT WINAPI Stream_Seek(IStream *iface, LARGE_INTEGER dlibMove, DWORD dwOrigin, ULARGE_INTEGER *plibNewPosition)
static HRESULT WINAPI Stream_Write(IStream *iface, const void *pv, ULONG cb, ULONG *pcbWritten)
static HRESULT WINAPI MimeProtocolSink_ReportData(IInternetProtocolSink *iface, DWORD grfBSCF, ULONG ulProgress, ULONG ulProgressMax)
static HANDLE event_complete
static HRESULT WINAPI InternetProtocolInfo_ParseUrl(IInternetProtocolInfo *iface, LPCWSTR pwzUrl, PARSEACTION ParseAction, DWORD dwParseFlags, LPWSTR pwzResult, DWORD cchResult, DWORD *pcchResult, DWORD dwReserved)
static HRESULT WINAPI HttpNegotiate_QueryInterface(IHttpNegotiate2 *iface, REFIID riid, void **ppv)
static HRESULT WINAPI Stream_Read(IStream *iface, void *pv, ULONG cb, ULONG *pcbRead)
static HRESULT WINAPI MimeProtocolSink_ReportResult(IInternetProtocolSink *iface, HRESULT hrResult, DWORD dwError, LPCWSTR szResult)
static ULONG WINAPI InternetPriority_AddRef(IInternetPriority *iface)
static HRESULT WINAPI Protocol_Seek(IInternetProtocolEx *iface, LARGE_INTEGER dlibMove, DWORD dwOrigin, ULARGE_INTEGER *plibNewPosition)
static HRESULT WINAPI ServiceProvider_QueryInterface(IServiceProvider *iface, REFIID riid, void **ppv)
static enum @1882 tested_protocol
static HRESULT WINAPI Protocol_Continue(IInternetProtocolEx *iface, PROTOCOLDATA *pProtocolData)
static ULONG WINAPI MimeProtocolSink_Release(IInternetProtocolSink *iface)
static ULONG WINAPI ServiceProvider_AddRef(IServiceProvider *iface)
#define CHECK_NOT_CALLED(func)
static const IServiceProviderVtbl ServiceProviderVtbl
static BOOL file_protocol_start(IInternetProtocol *protocol, LPCWSTR url, IInternetProtocolEx *protocolex, IUri *uri, BOOL is_first)
static Protocol * impl_from_IInternetProtocolEx(IInternetProtocolEx *iface)
static const WCHAR gifW[]
static IInternetProtocolSink * binding_sink
static BOOL test_redirect
static const WCHAR index_url[]
static HRESULT WINAPI ProtocolEmul_Read(IInternetProtocolEx *iface, void *pv, ULONG cb, ULONG *pcbRead)
static Protocol * impl_from_IInternetPriority(IInternetPriority *iface)
static ULONG WINAPI ProtocolEmul_Release(IInternetProtocolEx *iface)
static HRESULT WINAPI ProtocolEmul_Start(IInternetProtocolEx *iface, LPCWSTR szUrl, IInternetProtocolSink *pOIProtSink, IInternetBindInfo *pOIBindInfo, DWORD grfPI, HANDLE_PTR dwReserved)
static HRESULT WINAPI MimeProtocolSink_ReportProgress(IInternetProtocolSink *iface, ULONG ulStatusCode, LPCWSTR szStatusText)
static HRESULT WINAPI MimeProtocolSink_QueryInterface(IInternetProtocolSink *iface, REFIID riid, void **ppv)
static HANDLE event_complete2
static HRESULT WINAPI MimeProtocol_Terminate(IInternetProtocolEx *iface, DWORD dwOptions)
static HRESULT WINAPI BindCallbackRedirect_Redirect(IBindCallbackRedirect *iface, const WCHAR *url, VARIANT_BOOL *cancel)
static ULONG WINAPI HttpSecurity_AddRef(IHttpSecurity *iface)
static IInternetProtocolSink * filtered_sink
static HRESULT WINAPI MimeProtocol_UnlockRequest(IInternetProtocolEx *iface)
static LONG obj_refcount(void *obj)
static IInternetProtocolSinkVtbl mime_protocol_sink_vtbl
static const IInternetProtocolInfoVtbl InternetProtocolInfoVtbl
static IInternetProtocol * filtered_protocol
static const WCHAR null_guid[]
static const char test_url[]
static void test_priority(void)
_In_ HANDLE _In_ DWORD _In_ DWORD _Inout_opt_ LPOVERLAPPED _In_opt_ LPTRANSMIT_FILE_BUFFERS _In_ DWORD dwReserved
#define IsEqualGUID(rguid1, rguid2)
static __inline const char * wine_dbgstr_guid(const GUID *id)
#define _WIN32_WINNT_WIN7
static void init_test(void)
TCHAR file_path[MAX_PATH]
IInternetPriority IInternetPriority_iface
IInternetProtocolEx IInternetProtocolEx_iface
DWORD WINAPI WaitForSingleObject(IN HANDLE hHandle, IN DWORD dwMilliseconds)
VOID WINAPI DECLSPEC_HOTPATCH Sleep(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)
BOOL WINAPI DECLSPEC_HOTPATCH ResetEvent(IN HANDLE hEvent)
#define CONTAINING_RECORD(address, type, field)
struct _LARGE_INTEGER::@2513 u
static const WCHAR wszFile[]
DWORD WINAPI GetLastError(void)
DWORD WINAPI GetCurrentThreadId(void)
#define REGDB_E_CLASSNOTREG
#define INET_E_INVALID_URL
#define CLASS_E_NOAGGREGATION
#define INET_E_RESOURCE_NOT_FOUND
#define CLASS_E_CLASSNOTAVAILABLE
#define INET_E_REDIRECT_FAILED
#define INTERNET_MAX_URL_LENGTH
#define ERROR_INTERNET_INVALID_CA
#define NORMAL_CACHE_ENTRY
#define HTTP_QUERY_CUSTOM
#define ERROR_INTERNET_SEC_CERT_REV_FAILED