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:
Christoph Kerschbaumer 2014-09-22 04:49:12 -07:00
Родитель 9fb0b5cf71
Коммит dad0acb099
5 изменённых файлов: 61 добавлений и 19 удалений

Просмотреть файл

@ -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);