21 #define NS_IOSERVICE_CLASSNAME "nsIOService" 22 #define NS_IOSERVICE_CONTRACTID "@mozilla.org/network/io-service;1" 25 {0x9ac9e770, 0x18bc, 0x11d3, {0x93, 0x37, 0x00, 0x10, 0x4b, 0xa0, 0xfd, 0x40}};
27 {0x5088272e, 0x900b, 0x11da, {0xc6,0x87, 0x00,0x0f,0xea,0x57,0xf2,0x1a}};
58 hres = IUriBuilder_CreateUriSimple(
This->uri_builder, 0, 0, &
This->uri);
60 WARN(
"CreateUriSimple failed: %08x\n",
hres);
73 IUri_AddRef(nsuri->
uri);
84 hres = IUri_HasProperty(
uri, Uri_PROPERTY_FRAGMENT, &
b);
94 hres = IUriBuilder_RemoveProperties(uri_builder, Uri_HAS_FRAGMENT);
96 hres = IUriBuilder_CreateUriSimple(uri_builder, 0, 0, &
ret);
97 IUriBuilder_Release(uri_builder);
106 IUri *uri_nofrag1, *uri_nofrag2;
115 IUri_IsEqual(uri_nofrag1, uri_nofrag2, &
ret);
116 IUri_Release(uri_nofrag2);
119 IUri_Release(uri_nofrag1);
134 IUri_Release(uri_nofrag);
136 WARN(
"CoInternetCombineUrlEx failed: %08x\n",
hres);
179 static const WCHAR wine_prefixW[] = {
'w',
'i',
'n',
'e',
':'};
181 if(!
strncmpW(nsuri, wine_prefixW,
sizeof(wine_prefixW)/
sizeof(
WCHAR)))
182 ptr +=
sizeof(wine_prefixW)/
sizeof(
WCHAR);
184 if(*
ptr || ret_empty) {
201 hres = IOleClientSite_QueryInterface(doc->
client, &IID_IOleCommandTarget, (
void**)&cmdtrg);
209 hres = IOleCommandTarget_Exec(cmdtrg, &CGID_ShellDocView, 67, 0, &varUrl, &varRes);
211 IOleCommandTarget_Release(cmdtrg);
214 TRACE(
"got VARIANT_FALSE, do not load\n");
233 hres = IUri_GetDisplayUri(channel->
uri->
uri, &display_uri);
261 ERR(
"Could not get nsIWebNavigation interface: %08x\n", nsres);
265 nsres = nsIWebNavigation_QueryInterface(web_navigation, &IID_nsIDocShell, (
void**)&doc_shell);
266 nsIWebNavigation_Release(web_navigation);
268 ERR(
"Could not get nsIDocShell: %08x\n", nsres);
273 nsres = nsIDocShell_CreateLoadInfo(doc_shell, &load_info);
275 nsIDocShell_Release(doc_shell);
279 nsres = nsIDocShellLoadInfo_SetPostDataStream(load_info, post_stream);
283 uri->channel_bsc = channelbsc;
284 doc =
window->base.inner_window->doc;
286 nsres = nsIDocShell_LoadURI(doc_shell, (
nsIURI*)&
uri->nsIFileURL_iface, load_info,
flags,
FALSE);
287 if(doc ==
window->base.inner_window->doc)
290 nsIDocShell_Release(doc_shell);
292 nsIDocShellLoadInfo_Release(load_info);
294 WARN(
"LoadURI failed: %08x\n", nsres);
303 if(
This->container) {
304 if(
This->container == nscontainer)
306 TRACE(
"Changing %p -> %p\n",
This->container, nscontainer);
307 nsIWebBrowserChrome_Release(&
This->container->nsIWebBrowserChrome_iface);
312 This->container = nscontainer;
317 if(
This->window_ref) {
355 const char *header_namea;
420 const char *namea, *valuea;
463 nsres = nsIHttpHeaderVisitor_VisitHeader(visitor, &header_str, &
value_str);
520 nsIHttpChannel_AddRef(&
This->nsIHttpChannel_iface);
543 nsIFileURL_Release(&
This->uri->nsIFileURL_iface);
545 nsISupports_Release(
This->owner);
546 if(
This->post_data_stream)
547 nsIInputStream_Release(
This->post_data_stream);
549 nsILoadGroup_Release(
This->load_group);
550 if(
This->notif_callback)
551 nsIInterfaceRequestor_Release(
This->notif_callback);
552 if(
This->original_uri)
553 nsIURI_Release(
This->original_uri);
555 nsIURI_Release(
This->referrer);
574 return nsIFileURL_GetSpec(&
This->uri->nsIFileURL_iface, aName);
590 WARN(
"(%p)->(%p) returning NS_OK\n",
This, aStatus);
592 return *aStatus =
NS_OK;
629 nsILoadGroup_AddRef(
This->load_group);
631 *aLoadGroup =
This->load_group;
642 nsILoadGroup_Release(
This->load_group);
644 nsILoadGroup_AddRef(aLoadGroup);
645 This->load_group = aLoadGroup;
656 *aLoadFlags =
This->load_flags;
664 TRACE(
"(%p)->(%08x)\n",
This, aLoadFlags);
666 This->load_flags = aLoadFlags;
674 TRACE(
"(%p)->(%p)\n",
This, aOriginalURI);
676 if(
This->original_uri)
677 nsIURI_AddRef(
This->original_uri);
679 *aOriginalURI =
This->original_uri;
687 TRACE(
"(%p)->(%p)\n",
This, aOriginalURI);
689 if(
This->original_uri)
690 nsIURI_Release(
This->original_uri);
692 nsIURI_AddRef(aOriginalURI);
693 This->original_uri = aOriginalURI;
703 nsIFileURL_AddRef(&
This->uri->nsIFileURL_iface);
716 nsISupports_AddRef(
This->owner);
717 *aOwner =
This->owner;
729 nsISupports_AddRef(aOwner);
731 nsISupports_Release(
This->owner);
732 This->owner = aOwner;
742 TRACE(
"(%p)->(%p)\n",
This, aNotificationCallbacks);
744 if(
This->notif_callback)
745 nsIInterfaceRequestor_AddRef(
This->notif_callback);
746 *aNotificationCallbacks =
This->notif_callback;
756 TRACE(
"(%p)->(%p)\n",
This, aNotificationCallbacks);
758 if(
This->notif_callback)
759 nsIInterfaceRequestor_Release(
This->notif_callback);
760 if(aNotificationCallbacks)
761 nsIInterfaceRequestor_AddRef(aNotificationCallbacks);
763 This->notif_callback = aNotificationCallbacks;
772 TRACE(
"(%p)->(%p)\n",
This, aSecurityInfo);
781 TRACE(
"(%p)->(%p)\n",
This, aContentType);
783 if(
This->content_type) {
788 if(
This->uri->is_doc_uri) {
789 WARN(
"Document channel with no MIME set. Assuming text/html\n");
794 WARN(
"unknown type\n");
818 TRACE(
"(%p)->(%p)\n",
This, aContentCharset);
852 FIXME(
"(%p)->(%p)\n",
This, aContentLength);
884 nsres = nsILoadGroup_GetDefaultLoadRequest(
This->load_group, &req);
886 ERR(
"GetDefaultLoadRequest failed: %08x\n", nsres);
893 nsres = nsIRequest_QueryInterface(req, &IID_nsIChannel, (
void**)&channel);
894 nsIRequest_Release(req);
896 WARN(
"Could not get nsIChannel interface: %08x\n", nsres);
900 nsres = nsIChannel_GetURI(channel, &
uri);
901 nsIChannel_Release(channel);
903 ERR(
"GetURI failed: %08x\n", nsres);
910 TRACE(
"Could not get nsWineURI: %08x\n", nsres);
914 window = wine_uri->window_ref ? wine_uri->window_ref->window :
NULL;
916 IHTMLWindow2_AddRef(&
window->base.IHTMLWindow2_iface);
917 nsIFileURL_Release(&wine_uri->nsIFileURL_iface);
929 if(
This->load_group) {
932 nsres = nsILoadGroup_GetGroupObserver(
This->load_group, &req_observer);
934 ERR(
"GetGroupObserver failed: %08x\n", nsres);
938 nsres = nsIRequestObserver_QueryInterface(req_observer, &IID_nsIWebProgress, (
void**)&web_progress);
939 nsIRequestObserver_Release(req_observer);
941 ERR(
"Could not get nsIWebProgress iface: %08x\n", nsres);
944 }
else if(
This->notif_callback) {
945 nsres = nsIInterfaceRequestor_GetInterface(
This->notif_callback, &IID_nsIWebProgress, (
void**)&web_progress);
947 ERR(
"GetInterface(IID_nsIWebProgress failed: %08x\n", nsres);
951 ERR(
"no load group nor notif callback\n");
955 nsres = nsIWebProgress_GetDOMWindow(web_progress, &nswindow);
956 nsIWebProgress_Release(web_progress);
958 ERR(
"GetDOMWindow failed: %08x\n", nsres);
963 nsIDOMWindow_Release(nswindow);
966 IHTMLWindow2_AddRef(&
window->base.IHTMLWindow2_iface);
968 FIXME(
"NULL window for %p\n", nswindow);
1002 WARN(
"CreateURLMoniker failed: %08x\n",
hres);
1010 IMoniker_Release(mon);
1016 if(is_doc_channel) {
1050 TRACE(
"(%p)->(%p %p)\n",
This, aListener, aContext);
1059 hres = IUri_GetDisplayUri(
This->uri->uri, &uri_str);
1064 WARN(
"GetDisplayUri failed: %08x\n",
hres);
1068 if(
This->uri->is_doc_uri) {
1072 }
else if(
This->uri->container) {
1076 if(
This->uri->container->doc)
1077 FIXME(
"nscontainer->doc = %p\n",
This->uri->container->doc);
1083 FIXME(
"Navigation not cancelled\n");
1089 if(
This->uri->window_ref &&
This->uri->window_ref->window) {
1091 IHTMLWindow2_AddRef(&
window->base.IHTMLWindow2_iface);
1094 if(
This->load_group)
1104 ERR(
"window = NULL\n");
1109 if(
This->uri->channel_bsc) {
1112 if(
window->doc_obj->mime) {
1121 TRACE(
"canceled\n");
1131 nsres = nsILoadGroup_AddRequest(
This->load_group, (
nsIRequest*)&
This->nsIHttpChannel_iface,
1134 ERR(
"AddRequest failed: %08x\n", nsres);
1137 IHTMLWindow2_Release(&
window->base.IHTMLWindow2_iface);
1144 FIXME(
"(%p)->(%p)\n",
This, aContentDisposition);
1151 FIXME(
"(%p)->(%u)\n",
This, aContentDisposition);
1158 FIXME(
"(%p)->(%p)\n",
This, aContentDispositionFilename);
1165 FIXME(
"(%p)->(%p)\n",
This, aContentDispositionFilename);
1172 FIXME(
"(%p)->(%p)\n",
This, aContentDispositionHeader);
1183 nsISupports_AddRef(
This->load_info);
1184 *aLoadInfo =
This->load_info;
1195 nsISupports_Release(
This->load_info);
1196 This->load_info = aLoadInfo;
1198 nsISupports_AddRef(
This->load_info);
1206 TRACE(
"(%p)->(%p)\n",
This, aRequestMethod);
1224 This->request_method =
i;
1240 nsIURI_AddRef(
This->referrer);
1241 *aReferrer =
This->referrer;
1252 nsIURI_AddRef(aReferrer);
1254 nsIURI_Release(
This->referrer);
1255 This->referrer = aReferrer;
1262 FIXME(
"(%p)->(%p)\n",
This, aReferrerPolicy);
1269 FIXME(
"(%p)->(%p %x)\n",
This, aReferrer, aReferrerPolicy);
1291 FIXME(
"aMerge not supported\n");
1310 FIXME(
"(%p)->(%p)\n",
This, aAllowPipelining);
1319 FIXME(
"(%p)->(%x)\n",
This, aAllowPipelining);
1342 FIXME(
"(%p)->(%p)\n",
This, aRedirectionLimit);
1351 FIXME(
"(%p)->(%u)\n",
This, aRedirectionLimit);
1360 TRACE(
"(%p)->(%p)\n",
This, aResponseStatus);
1362 if(
This->response_status) {
1363 *aResponseStatus =
This->response_status;
1367 WARN(
"No response status\n");
1376 TRACE(
"(%p)->(%p)\n",
This, aResponseStatusText);
1387 TRACE(
"(%p)->(%p)\n",
This, aRequestSucceeded);
1389 if(!
This->response_status)
1392 *aRequestSucceeded =
This->response_status/100 == 2;
1432 static const WCHAR cache_controlW[] = {
'C',
'a',
'c',
'h',
'e',
'-',
'C',
'o',
'n',
't',
'r',
'o',
'l'};
1433 static const WCHAR no_storeW[] = {
'n',
'o',
'-',
's',
't',
'o',
'r',
'e',0};
1542 return nsIHttpChannel_QueryInterface(&
This->nsIHttpChannel_iface,
riid,
result);
1548 return nsIHttpChannel_AddRef(&
This->nsIHttpChannel_iface);
1554 return nsIHttpChannel_Release(&
This->nsIHttpChannel_iface);
1563 static const WCHAR content_typeW[] =
1564 {
'C',
'o',
'n',
't',
'e',
'n',
't',
'-',
'T',
'y',
'p',
'e',0};
1568 This->post_data_contains_headers =
TRUE;
1582 This->post_data_contains_headers =
FALSE;
1586 if(aContentLength != -1)
1589 if(
This->post_data_stream)
1590 nsIInputStream_Release(
This->post_data_stream);
1591 This->post_data_stream = aStream;
1593 nsIInputStream_AddRef(aStream);
1604 TRACE(
"(%p)->(%p)\n",
This, aUploadStream);
1606 if(
This->post_data_stream)
1607 nsIInputStream_AddRef(
This->post_data_stream);
1609 *aUploadStream =
This->post_data_stream;
1630 return nsIHttpChannel_QueryInterface(&
This->nsIHttpChannel_iface,
riid,
result);
1636 return nsIHttpChannel_AddRef(&
This->nsIHttpChannel_iface);
1642 return nsIHttpChannel_Release(&
This->nsIHttpChannel_iface);
1757 FIXME(
"(%p)->(%p)\n",
This, aLocalAddress);
1766 FIXME(
"(%p)->(%p)\n",
This, aLocalPort);
1775 FIXME(
"(%p)->(%p)\n",
This, aRemoteAddress);
1784 FIXME(
"(%p)->(%p)\n",
This, aRemotePort);
1809 FIXME(
"(%p)->(%p)\n",
This, aAllowSpdy);
1816 FIXME(
"(%p)->(%x)\n",
This, aAllowSpdy);
1824 FIXME(
"(%p)->(%p)\n",
This, aResponseTimeoutEnabled);
1832 FIXME(
"(%p)->(%x)\n",
This, aResponseTimeoutEnabled);
1839 FIXME(
"(%p)->(%p)\n",
This, aApiRedirectToURI);
1846 FIXME(
"(%p)->(%p)\n",
This, aAllowAltSvc);
1853 FIXME(
"(%p)->(%x)\n",
This, aAllowAltSvc);
1860 FIXME(
"(%p)->(%p)\n",
This, aPrincipal);
1867 FIXME(
"(%p)->(%p)\n",
This, aLastModifiedTime);
1882 FIXME(
"(%p)->(%p)\n",
This, aCorsIncludeCredentials);
1890 FIXME(
"(%p)->(%x)\n",
This, aCorsIncludeCredentials);
1911 FIXME(
"(%p)->(%p)\n",
This, aTopWindowURI);
1919 FIXME(
"(%p)->(%p)\n",
This, aNetworkInterfaceId);
1992 IUri_Release(
This->uri);
1999 if(!
This->is_mutable) {
2000 WARN(
"Not mutable URI\n");
2004 if(!
This->uri_builder) {
2012 WARN(
"CreateIUriBuilder failed: %08x\n",
hres);
2030 hres = IUri_GetPropertyBSTR(
This->uri, prop, &
val, 0);
2032 WARN(
"GetPropertyBSTR failed: %08x\n",
hres);
2082 nsIFileURL_AddRef(&
This->nsIFileURL_iface);
2108 if(
This->window_ref)
2111 nsIWebBrowserChrome_Release(&
This->container->nsIWebBrowserChrome_iface);
2113 IUri_Release(
This->uri);
2140 if(!
This->is_mutable)
2151 WARN(
"create_uri failed: %08x\n",
hres);
2156 if(
This->uri_builder) {
2157 IUriBuilder_Release(
This->uri_builder);
2184 hres = IUriBuilder_RemoveProperties(uri_builder, Uri_HAS_PATH|Uri_HAS_QUERY|Uri_HAS_FRAGMENT);
2186 hres = IUriBuilder_CreateUriSimple(uri_builder, 0, 0, &
uri);
2187 IUriBuilder_Release(uri_builder);
2191 hres = IUri_GetDisplayUri(
uri, &display_uri);
2198 if(
len && display_uri[
len-1] ==
'/')
2199 display_uri[
len-1] = 0;
2219 WARN(
"GetScheme failed: %08x\n",
hres);
2234 const char *schemea;
2278 FIXME(
"Construct user:pass string\n");
2292 const char *user_pass;
2321 hres = IUriBuilder_SetUserName(
This->uri_builder,
user);
2323 hres = IUriBuilder_SetPassword(
This->uri_builder,
pass);
2355 hres = IUriBuilder_SetUserName(
This->uri_builder,
user);
2389 hres = IUriBuilder_SetPassword(
This->uri_builder,
pass);
2412 WARN(
"GetAuthority failed: %08x\n",
hres);
2488 WARN(
"GetPort failed: %08x\n",
hres);
2506 hres = IUriBuilder_SetPort(
This->uri_builder, aPort != -1, aPort);
2555 TRACE(
"Could not get nsWineURI interface\n");
2563 hres = IUri_IsEqual(
This->uri, other_obj->uri, &
b);
2574 nsIFileURL_Release(&other_obj->nsIFileURL_iface);
2612 This->container,
This->origin_charset, &wine_uri);
2614 WARN(
"create_nsuri failed: %08x\n", nsres);
2648 hres = IUri_GetDisplayUri(new_uri, &
ret);
2649 IUri_Release(new_uri);
2668 TRACE(
"(%p)->(%p)\n",
This, aAsciiSpec);
2670 return nsIFileURL_GetSpec(&
This->nsIFileURL_iface, aAsciiSpec);
2677 WARN(
"(%p)->(%p) FIXME: Use Uri_PUNYCODE_IDN_HOST flag\n",
This, aAsciiHost);
2686 TRACE(
"(%p)->(%p)\n",
This, aOriginCharset);
2735 hres = IUriBuilder_SetFragment(
This->uri_builder,
ref);
2753 TRACE(
"Could not get nsWineURI interface\n");
2765 nsIFileURL_Release(&other_obj->nsIFileURL_iface);
2786 This->origin_charset, &wine_uri);
2789 WARN(
"create_nsuri failed: %08x\n", nsres);
2801 FIXME(
"(%p)->(%p)\n",
This, aSpecIgnoringRef);
2803 return nsIFileURL_GetSpec(&
This->nsIFileURL_iface, aSpecIgnoringRef);
2817 hres = IUri_HasProperty(
This->uri, Uri_PROPERTY_FRAGMENT, &
b);
2831 return nsIFileURL_GetPath(&
This->nsIFileURL_iface, aFilePath);
2840 if(!
This->is_mutable)
2843 return nsIFileURL_SetPath(&
This->nsIFileURL_iface, aFilePath);
2910 if(*
ptr ==
'/' || *
ptr ==
'\\')
2931 TRACE(
"(%p)->(%p)\n",
This, aDirectory);
2984 TRACE(
"(%p)->(%p)\n",
This, aFileBaseName);
3006 TRACE(
"(%p)->(%p)\n",
This, aFileExtension);
3021 FIXME(
"(%p)->(%p %p)\n",
This, aURIToCompare, _retval);
3028 FIXME(
"(%p)->(%p %p)\n",
This, aURIToCompare, _retval);
3043 WARN(
"CoInternetParseIUri failed: %08x\n",
hres);
3120 return nsIFileURL_QueryInterface(&
This->nsIFileURL_iface,
riid,
result);
3126 return nsIFileURL_AddRef(&
This->nsIFileURL_iface);
3132 return nsIFileURL_Release(&
This->nsIFileURL_iface);
3141 *aMutable =
This->is_mutable;
3151 This->is_mutable = aMutable;
3173 const char *origin_charset,
nsWineURI **_retval)
3193 hres = IUri_GetScheme(iuri, &
ret->scheme);
3197 if(origin_charset && *origin_charset &&
strcmp(origin_charset,
"UTF-8")) {
3199 if(!
ret->origin_charset) {
3200 nsIFileURL_Release(&
ret->nsIFileURL_iface);
3232 channel = heap_alloc_zero(
sizeof(
nsChannel));
3244 nsIFileURL_AddRef(&
uri->nsIFileURL_iface);
3272 nsIFileURL_Release(&
uri->nsIFileURL_iface);
3277 nsILoadGroup_AddRef(orig_channel->
load_group);
3289 FIXME(
"unsupported POST method\n");
3297 nsIURI_AddRef(orig_channel->
referrer);
3332 TRACE(
"(%p)->(IID_nsIExternalProtocolHandler %p), returning NULL\n",
This,
result);
3364 nsIProtocolHandler_Release(
This->nshandler);
3378 return nsIProtocolHandler_GetScheme(
This->nshandler, aScheme);
3387 TRACE(
"(%p)->(%p)\n",
This, aDefaultPort);
3390 return nsIProtocolHandler_GetDefaultPort(
This->nshandler, aDefaultPort);
3399 TRACE(
"(%p)->(%p)\n",
This, aProtocolFlags);
3402 return nsIProtocolHandler_GetProtocolFlags(
This->nshandler, aProtocolFlags);
3415 return nsIProtocolHandler_NewURI(
This->nshandler, aSpec, aOriginCharset, aBaseURI, _retval);
3424 TRACE(
"(%p)->(%p %p %p)\n",
This, aURI, aLoadInfo, _retval);
3427 return nsIProtocolHandler_NewChannel2(
This->nshandler, aURI, aLoadInfo, _retval);
3436 TRACE(
"(%p)->(%p %p)\n",
This, aURI, _retval);
3439 return nsIProtocolHandler_NewChannel(
This->nshandler, aURI, _retval);
3451 return nsIProtocolHandler_AllowPort(
This->nshandler,
port,
scheme, _retval);
3490 nsres = nsIIOService_GetProtocolHandler(
nsio, aScheme, &nshandler);
3492 WARN(
"GetProtocolHandler failed: %08x\n", nsres);
3496 nsres = nsIProtocolHandler_QueryInterface(nshandler, &IID_nsIExternalProtocolHandler,
3497 (
void**)&nsexthandler);
3499 *_retval = nshandler;
3503 nsIExternalProtocolHandler_Release(nsexthandler);
3511 ret->nshandler = nshandler;
3512 *_retval = &
ret->nsIProtocolHandler_iface;
3514 TRACE(
"return %p\n", *_retval);
3522 return nsIIOService_GetProtocolFlags(
nsio, aScheme, _retval);
3527 static const char *special_schemes[] = {
"chrome:",
"data:",
"jar:",
"moz-safe-about",
"resource:",
"javascript:",
"wyciwyg:"};
3530 for(
i=0;
i <
sizeof(special_schemes)/
sizeof(*special_schemes);
i++) {
3536 const char *
ptr = spec+5;
3546 const char *aOriginCharset,
nsIURI *aBaseURI,
nsIURI **_retval)
3551 const char *spec =
NULL;
3562 return nsIIOService_NewURI(
nsio, aSpec, aOriginCharset, aBaseURI, _retval);
3564 if(!
strncmp(spec,
"wine:", 5))
3568 nsres = nsIURI_QueryInterface(aBaseURI, &
IID_nsWineURI, (
void**)&base_wine_uri);
3572 if(base_wine_uri->window_ref)
3573 window = base_wine_uri->window_ref->window;
3575 WARN(
"Could not get base nsWineURI: %08x\n", nsres);
3579 if(aOriginCharset && *aOriginCharset &&
strncasecmp(aOriginCharset,
"utf", 3)) {
3601 WARN(
"create_uri failed: %08x\n",
hres);
3605 return nsIIOService_NewURI(
nsio, aSpec, aOriginCharset, aBaseURI, _retval);
3608 IUri_Release(urlmon_uri);
3621 TRACE(
"(%p %p)\n", aFile, _retval);
3622 return nsIIOService_NewFileURI(
nsio, aFile, _retval);
3633 TRACE(
"Could not get nsWineURI: %08x\n", nsres);
3634 return nsIIOService_NewChannelFromURI(
nsio,
uri, _retval);
3638 nsIFileURL_Release(&wine_uri->nsIFileURL_iface);
3646 nsIHttpChannel_SetLoadInfo(&
ret->nsIHttpChannel_iface, load_info);
3659 TRACE(
"(%p %p %p %p %x %d %p)\n", aURI, aLoadingNode, aLoadingPrincipal, aTriggeringPrincipal,
3660 aSecurityFlags, aContentPolicyType, _retval);
3662 if(aLoadingNode || aLoadingPrincipal) {
3663 nsres = nsIIOService_NewLoadInfo(
nsio, aLoadingPrincipal, aTriggeringPrincipal, aLoadingNode,
3664 aSecurityFlags, aContentPolicyType, &load_info);
3670 nsISupports_Release(load_info);
3677 TRACE(
"(%p %p %p)\n", aURI, aLoadInfo, _retval);
3684 TRACE(
"(%p %p)\n", aURI, _retval);
3693 aLoadingNode, aLoadingPrincipal, aTriggeringPrincipal, aSecurityFlags, aContentPolicyType, _retval);
3694 return nsIIOService_NewChannel2(
nsio, aSpec, aOriginCharset, aBaseURI, aLoadingNode, aLoadingPrincipal,
3695 aTriggeringPrincipal, aSecurityFlags, aContentPolicyType, _retval);
3702 return nsIIOService_NewChannel(
nsio, aSpec, aOriginCharset, aBaseURI, _retval);
3707 TRACE(
"(%p)\n", aOffline);
3708 return nsIIOService_GetOffline(
nsio, aOffline);
3713 TRACE(
"(%x)\n", aOffline);
3714 return nsIIOService_SetOffline(
nsio, aOffline);
3719 TRACE(
"(%p)\n", aConnectivity);
3720 return nsIIOService_GetConnectivity(
nsio, aConnectivity);
3726 return nsIIOService_SetAppOffline(
nsio, appId,
state);
3731 TRACE(
"(%u %p)\n", appId, _retval);
3732 return nsIIOService_IsAppOffline(
nsio, appId, _retval);
3737 TRACE(
"(%d %p)\n", appId, _retval);
3738 return nsIIOService_GetAppOfflineState(
nsio, appId, _retval);
3742 const char *aScheme,
cpp_bool *_retval)
3745 return nsIIOService_AllowPort(
nsio, aPort,
debugstr_a(aScheme), _retval);
3752 return nsIIOService_ExtractScheme(
nsio, urlString, _retval);
3801 return nsINetUtil_ParseContentType(
net_util, aTypeHeader, aCharset, aHadCharset, aContentType);
3807 #define X(f) case f: return #f 3812 X(ALLOWS_PROXY_HTTP);
3813 X(URI_INHERITS_SECURITY_CONTEXT);
3814 X(URI_FORBIDS_AUTOMATIC_DOCUMENT_REPLACEMENT);
3815 X(URI_LOADABLE_BY_ANYONE);
3816 X(URI_DANGEROUS_TO_LOAD);
3817 X(URI_IS_UI_RESOURCE);
3818 X(URI_IS_LOCAL_FILE);
3819 X(URI_LOADABLE_BY_SUBSUMERS);
3820 X(URI_DOES_NOT_RETURN_DATA);
3821 X(URI_IS_LOCAL_RESOURCE);
3822 X(URI_OPENING_EXECUTES_SCRIPT);
3823 X(URI_NON_PERSISTABLE);
3824 X(URI_FORBIDS_COOKIE_ACCESS);
3825 X(URI_CROSS_ORIGIN_NEEDS_WEBAPPS_PERM);
3826 X(URI_SYNC_LOAD_IS_OK);
3827 X(URI_SAFE_TO_LOAD_IN_SECURE_CONTEXT);
3838 return nsINetUtil_ProtocolHasFlags(
net_util, aURI, aFlags, _retval);
3845 if(aFlags == URI_DOES_NOT_RETURN_DATA) {
3850 return nsINetUtil_URIChainHasFlags(
net_util, aURI, aFlags, _retval);
3855 TRACE(
"(%p %p)\n", aURI, _retval);
3857 return nsINetUtil_ToImmutableURI(
net_util, aURI, _retval);
3862 TRACE(
"(%p %p)\n", aURI, _retval);
3864 return nsINetUtil_NewSimpleNestedURI(
net_util, aURI, _retval);
3872 return nsINetUtil_EscapeString(
net_util, aString, aEscapeType, _retval);
3880 return nsINetUtil_EscapeURL(
net_util, aStr, aFlags, _retval);
3888 return nsINetUtil_UnescapeString(
net_util, aStr, aFlags, _retval);
3895 aCharsetEnd, _retval);
3897 return nsINetUtil_ExtractCharsetFromContentType(
net_util, aTypeHeader, aCharset, aCharsetStart, aCharsetEnd, _retval);
3952 nsIFactory_AddRef(iface);
4006 hres = IDocHostUIHandler_TranslateUrl(doc->
hostui, 0,
url, &new_url);
4028 WARN(
"Could not get nsWineURI: %08x\n", nsres);
4032 if(!wine_uri->is_doc_uri) {
4033 wine_uri->is_doc_uri =
TRUE;
4035 if(!wine_uri->container) {
4037 wine_uri->container = nscontainer;
4040 if(nscontainer->
doc)
4044 nsIFileURL_Release(&wine_uri->nsIFileURL_iface);
4053 nsres = nsIComponentManager_GetClassObject(component_manager, &
NS_IOSERVICE_CID,
4054 &IID_nsIFactory, (
void**)&old_factory);
4056 ERR(
"Could not get factory: %08x\n", nsres);
4060 nsres = nsIFactory_CreateInstance(old_factory,
NULL, &IID_nsIIOService, (
void**)&
nsio);
4062 ERR(
"Couldn not create nsIOService instance %08x\n", nsres);
4063 nsIFactory_Release(old_factory);
4067 nsres = nsIIOService_QueryInterface(
nsio, &IID_nsINetUtil, (
void**)&
net_util);
4069 WARN(
"Could not get nsINetUtil interface: %08x\n", nsres);
4070 nsIIOService_Release(
nsio);
4074 nsres = nsIComponentRegistrar_UnregisterFactory(registrar, &
NS_IOSERVICE_CID, old_factory);
4075 nsIFactory_Release(old_factory);
4077 ERR(
"UnregisterFactory failed: %08x\n", nsres);
4079 nsres = nsIComponentRegistrar_RegisterFactory(registrar, &
NS_IOSERVICE_CID,
4082 ERR(
"RegisterFactory failed: %08x\n", nsres);
4093 nsIIOService_Release(
nsio);
static nsresult NSAPI nsHttpChannelInternal_SetAllowSpdy(nsIHttpChannelInternal *iface, cpp_bool aAllowSpdy)
static nsresult NSAPI nsIOService_AllowPort(nsIIOService *iface, LONG aPort, const char *aScheme, cpp_bool *_retval)
static const nsIHttpChannelVtbl nsChannelVtbl
static nsresult NSAPI nsNetUtil_QueryInterface(nsINetUtil *iface, nsIIDRef riid, void **result)
nsIInterfaceRequestor * notif_callback
static nsresult NSAPI nsURL_SetDirectory(nsIFileURL *iface, const nsACString *aDirectory)
static nsrefcnt NSAPI nsIOServiceFactory_AddRef(nsIFactory *iface)
static nsresult NSAPI nsChannel_IsNoCacheResponse(nsIHttpChannel *iface, cpp_bool *_retval)
static nsresult NSAPI nsURL_GetFileName(nsIFileURL *iface, nsACString *aFileName)
HRESULT hlink_frame_navigate(HTMLDocument *, LPCWSTR, nsChannel *, DWORD, BOOL *) DECLSPEC_HIDDEN
HRESULT WINAPI CoInternetCombineUrlEx(IUri *pBaseUri, LPCWSTR pwzRelativeUrl, DWORD dwCombineFlags, IUri **ppCombinedUri, DWORD_PTR dwReserved)
static nsresult NSAPI nsIOService_GetConnectivity(nsIIOService *iface, cpp_bool *aConnectivity)
static void windowref_release(windowref_t *ref)
nsIHttpChannel nsIHttpChannel_iface
static nsresult NSAPI nsHttpChannelInternal_GetChannelIsForDownload(nsIHttpChannelInternal *iface, cpp_bool *aCanceled)
static nsresult NSAPI nsHttpChannelInternal_TakeAllSecurityMessages(nsIHttpChannelInternal *iface, void *aMessages)
HRESULT WINAPI CreateIUriBuilder(IUri *pIUri, DWORD dwFlags, DWORD_PTR dwReserved, IUriBuilder **ppIUriBuilder)
static nsresult NSAPI nsNetUtil_ExtractCharsetFromContentType(nsINetUtil *iface, const nsACString *aTypeHeader, nsACString *aCharset, LONG *aCharsetStart, LONG *aCharsetEnd, cpp_bool *_retval)
static LPWSTR heap_strndupW(LPCWSTR str, unsigned len)
static nsrefcnt NSAPI nsURI_Release(nsIFileURL *iface)
VOID WINAPI CoTaskMemFree(LPVOID ptr)
static nsresult NSAPI nsIOService_ExtractScheme(nsIIOService *iface, const nsACString *urlString, nsACString *_retval)
WINE_UNICODE_INLINE unsigned int strlenW(const WCHAR *str)
static nsresult NSAPI nsURI_GetSpecIgnoringRef(nsIFileURL *iface, nsACString *aSpecIgnoringRef)
static nsresult NSAPI nsURI_SetPort(nsIFileURL *iface, LONG aPort)
#define WideCharToMultiByte
static nsresult NSAPI nsFileURL_GetFile(nsIFileURL *iface, nsIFile **aFile)
static nsresult NSAPI nsHttpChannelInternal_SetupFallbackChannel(nsIHttpChannelInternal *iface, const char *aFallbackKey)
BSTR WINAPI SysAllocStringLen(const OLECHAR *str, unsigned int len)
BOOL is_gecko_path(const char *) DECLSPEC_HIDDEN
#define NS_BINDING_ABORTED
static nsresult NSAPI nsURI_GetPort(nsIFileURL *iface, LONG *aPort)
static nsresult NSAPI nsChannel_GetResponseStatusText(nsIHttpChannel *iface, nsACString *aResponseStatusText)
static nsresult NSAPI nsHttpChannelInternal_GetDocumentURI(nsIHttpChannelInternal *iface, nsIURI **aDocumentURI)
HRESULT nsuri_to_url(LPCWSTR nsuri, BOOL ret_empty, BSTR *ret)
nsIFileURL nsIFileURL_iface
ACPI_SIZE strlen(const char *String)
static nsresult NSAPI nsChannel_Suspend(nsIHttpChannel *iface)
static void set_uri_window(nsWineURI *This, HTMLOuterWindow *window)
static nsresult NSAPI nsHttpChannelInternal_GetResponseVersion(nsIHttpChannelInternal *iface, UINT32 *major, UINT32 *minor)
static nsresult NSAPI nsChannel_GetResponseHeader(nsIHttpChannel *iface, const nsACString *header, nsACString *_retval)
#define NS_IOSERVICE_CONTRACTID
GLsizei const GLchar ** path
static BOOL ensure_uri_builder(nsWineURI *This)
UINT32 nsACString_GetData(const nsACString *, const char **) DECLSPEC_HIDDEN
WINE_UNICODE_INLINE WCHAR * strchrW(const WCHAR *str, WCHAR ch)
static nsresult NSAPI nsChannel_VisitRequestHeaders(nsIHttpChannel *iface, nsIHttpHeaderVisitor *aVisitor)
static nsrefcnt NSAPI nsProtocolHandler_Release(nsIProtocolHandler *iface)
static nsresult create_nsuri(IUri *, HTMLOuterWindow *, NSContainer *, const char *, nsWineURI **)
static nsresult NSAPI nsURL_SetFilePath(nsIFileURL *iface, const nsACString *aFilePath)
HRESULT create_channelbsc(IMoniker *, const WCHAR *, BYTE *, DWORD, BOOL, nsChannelBSC **) DECLSPEC_HIDDEN
static const IID IID_nsWineURI
static const nsIIOServiceVtbl nsIOServiceVtbl
nsresult create_nsfile(const PRUnichar *, nsIFile **) DECLSPEC_HIDDEN
static nsresult new_channel_from_uri(nsIURI *uri, nsILoadInfo *load_info, nsIChannel **_retval)
#define INTERNET_MAX_SCHEME_LENGTH
static nsresult NSAPI nsIOService_SetOffline(nsIIOService *iface, cpp_bool aOffline)
static nsresult NSAPI nsChannel_QueryInterface(nsIHttpChannel *iface, nsIIDRef riid, void **result)
static const nsIFactoryVtbl nsIOServiceFactoryVtbl
static nsrefcnt NSAPI nsURI_AddRef(nsIFileURL *iface)
struct list response_headers
static nsIFactory nsIOServiceFactory
static nsresult NSAPI nsURL_SetFileExtension(nsIFileURL *iface, const nsACString *aFileExtension)
static nsresult NSAPI nsIOService_NewChannel2(nsIIOService *iface, const nsACString *aSpec, const char *aOriginCharset, nsIURI *aBaseURI, nsIDOMNode *aLoadingNode, nsIPrincipal *aLoadingPrincipal, nsIPrincipal *aTriggeringPrincipal, UINT32 aSecurityFlags, UINT32 aContentPolicyType, nsIChannel **_retval)
static nsresult NSAPI nsIOServiceFactory_QueryInterface(nsIFactory *iface, nsIIDRef riid, void **result)
#define NS_IOSERVICE_CLASSNAME
static nsresult NSAPI nsURI_SetUsername(nsIFileURL *iface, const nsACString *aUsername)
static void windowref_addref(windowref_t *ref)
static nsresult NSAPI nsChannel_IsNoStoreResponse(nsIHttpChannel *iface, cpp_bool *_retval)
vector< Header * > headers
static nsresult NSAPI nsChannel_SetAllowPipelining(nsIHttpChannel *iface, cpp_bool aAllowPipelining)
static nsresult NSAPI nsChannel_SetOriginalURI(nsIHttpChannel *iface, nsIURI *aOriginalURI)
static void start_binding_proc(task_t *_task)
static char * heap_strdupWtoU(const WCHAR *str)
static nsresult NSAPI nsChannel_Cancel(nsIHttpChannel *iface, nsresult aStatus)
static nsresult NSAPI nsChannel_SetRequestMethod(nsIHttpChannel *iface, const nsACString *aRequestMethod)
#define strncmpiW(s1, s2, n)
static nsresult NSAPI nsIOService_GetOffline(nsIIOService *iface, cpp_bool *aOffline)
static nsresult NSAPI nsHttpChannelInternal_GetLocalPort(nsIHttpChannelInternal *iface, LONG *aLocalPort)
static nsresult NSAPI nsChannel_SetContentType(nsIHttpChannel *iface, const nsACString *aContentType)
static nsresult NSAPI nsIOServiceFactory_LockFactory(nsIFactory *iface, cpp_bool lock)
static nsresult NSAPI nsURI_SetPassword(nsIFileURL *iface, const nsACString *aPassword)
nsChannelBSC * channel_bsc
static nsChannel * impl_from_nsIHttpChannel(nsIHttpChannel *iface)
static nsresult NSAPI nsURI_Clone(nsIFileURL *iface, nsIURI **_retval)
static nsresult NSAPI nsChannel_RedirectTo(nsIHttpChannel *iface, nsIURI *aNewURI)
static nsChannel * impl_from_nsIUploadChannel(nsIUploadChannel *iface)
static nsresult NSAPI nsChannel_GetURI(nsIHttpChannel *iface, nsIURI **aURI)
static nsresult NSAPI nsNetUtil_NewSimpleNestedURI(nsINetUtil *iface, nsIURI *aURI, nsIURI **_retval)
static nsresult NSAPI nsURI_GetAsciiSpec(nsIFileURL *iface, nsACString *aAsciiSpec)
static nsresult NSAPI nsNetUtil_URIChainHasFlags(nsINetUtil *iface, nsIURI *aURI, UINT32 aFlags, cpp_bool *_retval)
static nsresult NSAPI nsURI_GetAsciiHost(nsIFileURL *iface, nsACString *aAsciiHost)
static nsresult NSAPI nsNetUtil_UnescapeString(nsINetUtil *iface, const nsACString *aStr, UINT32 aFlags, nsACString *_retval)
static void * heap_alloc(size_t len)
static nsresult NSAPI nsHttpChannelInternal_GetForceAllowThirdPartyCookie(nsIHttpChannelInternal *iface, cpp_bool *aForceThirdPartyCookie)
static nsresult NSAPI nsIOService_QueryInterface(nsIIOService *, nsIIDRef, void **)
WINE_UNICODE_INLINE int strncmpW(const WCHAR *str1, const WCHAR *str2, int n)
static BOOL is_gecko_special_uri(const char *spec)
static nsresult NSAPI nsURI_GetPath(nsIFileURL *iface, nsACString *aPath)
static nsresult NSAPI nsHttpChannelInternal_SetResponseTimeoutEnabled(nsIHttpChannelInternal *iface, cpp_bool aResponseTimeoutEnabled)
const char * wine_dbg_sprintf(const char *format,...)
static nsrefcnt NSAPI nsStandardURL_AddRef(nsIStandardURL *iface)
static nsresult NSAPI nsFileURL_SetFile(nsIFileURL *iface, nsIFile *aFile)
static nsresult NSAPI nsChannel_GetAllowTLS(nsIHttpChannel *iface, cpp_bool *aAllowTLS)
static nsresult NSAPI nsProtocolHandler_NewURI(nsIProtocolHandler *iface, const nsACString *aSpec, const char *aOriginCharset, nsIURI *aBaseURI, nsIURI **_retval)
static nsresult NSAPI nsURI_CloneIgnoreRef(nsIFileURL *iface, nsIURI **_retval)
Definitio