зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1038756: Callsites creating a channel in /dom/[base,xml,plugins] (r=jst)
* * * Bug 1038756: Callsites creating a channel in /dom/[base,xbl,plugins] (r=jst)
This commit is contained in:
Родитель
9fb0b5cf71
Коммит
dad0acb099
|
@ -1072,13 +1072,14 @@ Navigator::SendBeacon(const nsAString& aUrl,
|
|||
channelPolicy->SetContentSecurityPolicy(csp);
|
||||
channelPolicy->SetLoadType(nsIContentPolicy::TYPE_BEACON);
|
||||
}
|
||||
|
||||
rv = NS_NewChannel(getter_AddRefs(channel),
|
||||
uri,
|
||||
nullptr,
|
||||
nullptr,
|
||||
nullptr,
|
||||
nsIRequest::LOAD_NORMAL,
|
||||
doc,
|
||||
nsILoadInfo::SEC_NORMAL,
|
||||
nsIContentPolicy::TYPE_BEACON,
|
||||
channelPolicy);
|
||||
|
||||
if (NS_FAILED(rv)) {
|
||||
aRv.Throw(rv);
|
||||
return false;
|
||||
|
|
|
@ -2817,11 +2817,12 @@ nsresult nsPluginHost::NewPluginURLStream(const nsString& aURL,
|
|||
owner->GetDOMElement(getter_AddRefs(element));
|
||||
owner->GetDocument(getter_AddRefs(doc));
|
||||
}
|
||||
nsCOMPtr<nsIPrincipal> principal = doc ? doc->NodePrincipal() : nullptr;
|
||||
|
||||
int16_t shouldLoad = nsIContentPolicy::ACCEPT;
|
||||
rv = NS_CheckContentLoadPolicy(nsIContentPolicy::TYPE_OBJECT_SUBREQUEST,
|
||||
url,
|
||||
(doc ? doc->NodePrincipal() : nullptr),
|
||||
principal,
|
||||
element,
|
||||
EmptyCString(), //mime guess
|
||||
nullptr, //extra
|
||||
|
@ -2841,22 +2842,29 @@ nsresult nsPluginHost::NewPluginURLStream(const nsString& aURL,
|
|||
if (NS_FAILED(rv))
|
||||
return rv;
|
||||
|
||||
if (!principal) {
|
||||
principal = do_CreateInstance("@mozilla.org/nullprincipal;1", &rv);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
}
|
||||
// @arg loadgroup:
|
||||
// do not add this internal plugin's channel on the
|
||||
// load group otherwise this channel could be canceled
|
||||
// form |nsDocShell::OnLinkClickSync| bug 166613
|
||||
nsCOMPtr<nsIChannel> channel;
|
||||
rv = NS_NewChannel(getter_AddRefs(channel), url, nullptr,
|
||||
nullptr, /* do not add this internal plugin's channel
|
||||
on the load group otherwise this channel could be canceled
|
||||
form |nsDocShell::OnLinkClickSync| bug 166613 */
|
||||
listenerPeer);
|
||||
rv = NS_NewChannelInternal(getter_AddRefs(channel),
|
||||
url,
|
||||
doc,
|
||||
principal,
|
||||
nsILoadInfo::SEC_FORCE_INHERIT_PRINCIPAL,
|
||||
nsIContentPolicy::TYPE_OBJECT_SUBREQUEST,
|
||||
nullptr, // aChannelPolicy
|
||||
nullptr, // aLoadGroup
|
||||
listenerPeer);
|
||||
|
||||
if (NS_FAILED(rv))
|
||||
return rv;
|
||||
|
||||
if (doc) {
|
||||
// Set the owner of channel to the document principal...
|
||||
nsCOMPtr<nsILoadInfo> loadInfo =
|
||||
new LoadInfo(doc->NodePrincipal(), LoadInfo::eInheritPrincipal,
|
||||
LoadInfo::eNotSandboxed);
|
||||
channel->SetLoadInfo(loadInfo);
|
||||
|
||||
// And if it's a script allow it to execute against the
|
||||
// document's script context.
|
||||
nsCOMPtr<nsIScriptChannel> scriptChannel(do_QueryInterface(channel));
|
||||
|
|
|
@ -639,10 +639,33 @@ nsPluginStreamListenerPeer::RequestRead(NPByteRange* rangeList)
|
|||
|
||||
nsresult rv = NS_OK;
|
||||
|
||||
nsRefPtr<nsPluginInstanceOwner> owner = mPluginInstance->GetOwner();
|
||||
nsCOMPtr<nsIDocument> doc;
|
||||
if (owner) {
|
||||
rv = owner->GetDocument(getter_AddRefs(doc));
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
}
|
||||
|
||||
nsCOMPtr<nsIInterfaceRequestor> callbacks = do_QueryReferent(mWeakPtrChannelCallbacks);
|
||||
nsCOMPtr<nsILoadGroup> loadGroup = do_QueryReferent(mWeakPtrChannelLoadGroup);
|
||||
|
||||
nsCOMPtr<nsIPrincipal> principal = doc ? doc->NodePrincipal() : nullptr;
|
||||
if (!principal) {
|
||||
principal = do_CreateInstance("@mozilla.org/nullprincipal;1", &rv);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
}
|
||||
|
||||
nsCOMPtr<nsIChannel> channel;
|
||||
rv = NS_NewChannel(getter_AddRefs(channel), mURL, nullptr, loadGroup, callbacks);
|
||||
rv = NS_NewChannelInternal(getter_AddRefs(channel),
|
||||
mURL,
|
||||
doc,
|
||||
principal,
|
||||
nsILoadInfo::SEC_NORMAL,
|
||||
nsIContentPolicy::TYPE_OTHER,
|
||||
nullptr, // aChannelPolicy
|
||||
loadGroup,
|
||||
callbacks);
|
||||
|
||||
if (NS_FAILED(rv))
|
||||
return rv;
|
||||
|
||||
|
|
|
@ -443,8 +443,17 @@ XMLDocument::Load(const nsAString& aUrl, ErrorResult& aRv)
|
|||
nsCOMPtr<nsIChannel> channel;
|
||||
// nsIRequest::LOAD_BACKGROUND prevents throbber from becoming active,
|
||||
// which in turn keeps STOP button from becoming active
|
||||
rv = NS_NewChannel(getter_AddRefs(channel), uri, nullptr, loadGroup, req,
|
||||
rv = NS_NewChannel(getter_AddRefs(channel),
|
||||
uri,
|
||||
callingDoc ? callingDoc.get() :
|
||||
static_cast<nsIDocument*>(this),
|
||||
nsILoadInfo::SEC_NORMAL,
|
||||
nsIContentPolicy::TYPE_XMLHTTPREQUEST,
|
||||
nullptr, // aChannelPolicy
|
||||
loadGroup,
|
||||
req,
|
||||
nsIRequest::LOAD_BACKGROUND);
|
||||
|
||||
if (NS_FAILED(rv)) {
|
||||
aRv.Throw(rv);
|
||||
return false;
|
||||
|
|
|
@ -101,7 +101,8 @@ nsXMLPrettyPrinter::PrettyPrint(nsIDocument* aDocument,
|
|||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
nsCOMPtr<nsIDOMDocument> xslDocument;
|
||||
rv = nsSyncLoadService::LoadDocument(xslUri, nullptr, nullptr, true,
|
||||
rv = nsSyncLoadService::LoadDocument(xslUri, nsContentUtils::GetSystemPrincipal(),
|
||||
nullptr, true,
|
||||
getter_AddRefs(xslDocument));
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче