Bug 1525245 - Stabilize cookiePolicy/cookiePermission for live documents - part 12 - nsICookieSettings for the channel creation, r=ckerschb,asuth,Ehsan
Differential Revision: https://phabricator.services.mozilla.com/D21538
This commit is contained in:
@@ -125,17 +125,15 @@ nsresult ConstructURI(const nsAString& aScriptURL, nsIURI* baseURI,
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
nsresult ChannelFromScriptURL(nsIPrincipal* principal, Document* parentDoc,
|
||||
WorkerPrivate* aWorkerPrivate,
|
||||
nsILoadGroup* loadGroup, nsIIOService* ios,
|
||||
nsIScriptSecurityManager* secMan,
|
||||
nsIURI* aScriptURL,
|
||||
const Maybe<ClientInfo>& aClientInfo,
|
||||
const Maybe<ServiceWorkerDescriptor>& aController,
|
||||
bool aIsMainScript,
|
||||
WorkerScriptType aWorkerScriptType,
|
||||
nsContentPolicyType aMainScriptContentPolicyType,
|
||||
nsLoadFlags aLoadFlags, nsIChannel** aChannel) {
|
||||
nsresult ChannelFromScriptURL(
|
||||
nsIPrincipal* principal, Document* parentDoc, WorkerPrivate* aWorkerPrivate,
|
||||
nsILoadGroup* loadGroup, nsIIOService* ios,
|
||||
nsIScriptSecurityManager* secMan, nsIURI* aScriptURL,
|
||||
const Maybe<ClientInfo>& aClientInfo,
|
||||
const Maybe<ServiceWorkerDescriptor>& aController, bool aIsMainScript,
|
||||
WorkerScriptType aWorkerScriptType,
|
||||
nsContentPolicyType aMainScriptContentPolicyType, nsLoadFlags aLoadFlags,
|
||||
nsICookieSettings* aCookieSettings, nsIChannel** aChannel) {
|
||||
AssertIsOnMainThread();
|
||||
|
||||
nsresult rv;
|
||||
@@ -206,11 +204,7 @@ nsresult ChannelFromScriptURL(nsIPrincipal* principal, Document* parentDoc,
|
||||
nsIContentPolicy::TYPE_INTERNAL_SERVICE_WORKER);
|
||||
|
||||
nsCOMPtr<nsIChannel> channel;
|
||||
// If we have the document, use it. Unfortunately, for dedicated workers
|
||||
// 'parentDoc' ends up being the parent document, which is not the document
|
||||
// that we want to use. So make sure to avoid using 'parentDoc' in that
|
||||
// situation.
|
||||
if (parentDoc && parentDoc->NodePrincipal() == principal) {
|
||||
if (parentDoc) {
|
||||
rv = NS_NewChannel(getter_AddRefs(channel), uri, parentDoc, secFlags,
|
||||
contentPolicyType,
|
||||
nullptr, // aPerformanceStorage
|
||||
@@ -234,13 +228,13 @@ nsresult ChannelFromScriptURL(nsIPrincipal* principal, Document* parentDoc,
|
||||
if (aClientInfo.isSome()) {
|
||||
rv = NS_NewChannel(getter_AddRefs(channel), uri, principal,
|
||||
aClientInfo.ref(), aController, secFlags,
|
||||
contentPolicyType, performanceStorage, loadGroup,
|
||||
nullptr, // aCallbacks
|
||||
contentPolicyType, aCookieSettings, performanceStorage,
|
||||
loadGroup, nullptr, // aCallbacks
|
||||
aLoadFlags, ios);
|
||||
} else {
|
||||
rv = NS_NewChannel(getter_AddRefs(channel), uri, principal, secFlags,
|
||||
contentPolicyType, performanceStorage, loadGroup,
|
||||
nullptr, // aCallbacks
|
||||
contentPolicyType, aCookieSettings, performanceStorage,
|
||||
loadGroup, nullptr, // aCallbacks
|
||||
aLoadFlags, ios);
|
||||
}
|
||||
|
||||
@@ -960,11 +954,11 @@ class ScriptLoaderRunnable final : public nsIRunnable, public nsINamed {
|
||||
return rv;
|
||||
}
|
||||
|
||||
rv = ChannelFromScriptURL(principal, parentDoc, mWorkerPrivate, loadGroup,
|
||||
ios, secMan, url, mClientInfo, mController,
|
||||
IsMainWorkerScript(), mWorkerScriptType,
|
||||
mWorkerPrivate->ContentPolicyType(), loadFlags,
|
||||
getter_AddRefs(channel));
|
||||
rv = ChannelFromScriptURL(
|
||||
principal, parentDoc, mWorkerPrivate, loadGroup, ios, secMan, url,
|
||||
mClientInfo, mController, IsMainWorkerScript(), mWorkerScriptType,
|
||||
mWorkerPrivate->ContentPolicyType(), loadFlags,
|
||||
mWorkerPrivate->CookieSettings(), getter_AddRefs(channel));
|
||||
if (NS_WARN_IF(NS_FAILED(rv))) {
|
||||
return rv;
|
||||
}
|
||||
@@ -1829,6 +1823,7 @@ class ChannelGetterRunnable final : public WorkerMainThreadRunnable {
|
||||
nsCOMPtr<Document> parentDoc = mWorkerPrivate->GetDocument();
|
||||
|
||||
mLoadInfo.mLoadGroup = mWorkerPrivate->GetLoadGroup();
|
||||
mLoadInfo.mCookieSettings = mWorkerPrivate->CookieSettings();
|
||||
|
||||
// Nested workers use default uri encoding.
|
||||
nsCOMPtr<nsIURI> url;
|
||||
@@ -1844,7 +1839,8 @@ class ChannelGetterRunnable final : public WorkerMainThreadRunnable {
|
||||
mLoadInfo.mLoadingPrincipal, parentDoc, mLoadInfo.mLoadGroup, url,
|
||||
clientInfo,
|
||||
// Nested workers are always dedicated.
|
||||
nsIContentPolicy::TYPE_INTERNAL_WORKER, getter_AddRefs(channel));
|
||||
nsIContentPolicy::TYPE_INTERNAL_WORKER, mLoadInfo.mCookieSettings,
|
||||
getter_AddRefs(channel));
|
||||
NS_ENSURE_SUCCESS(mResult, true);
|
||||
|
||||
mResult = mLoadInfo.SetPrincipalFromChannel(channel);
|
||||
@@ -2159,7 +2155,8 @@ namespace workerinternals {
|
||||
nsresult ChannelFromScriptURLMainThread(
|
||||
nsIPrincipal* aPrincipal, Document* aParentDoc, nsILoadGroup* aLoadGroup,
|
||||
nsIURI* aScriptURL, const Maybe<ClientInfo>& aClientInfo,
|
||||
nsContentPolicyType aMainScriptContentPolicyType, nsIChannel** aChannel) {
|
||||
nsContentPolicyType aMainScriptContentPolicyType,
|
||||
nsICookieSettings* aCookieSettings, nsIChannel** aChannel) {
|
||||
AssertIsOnMainThread();
|
||||
|
||||
nsCOMPtr<nsIIOService> ios(do_GetIOService());
|
||||
@@ -2170,7 +2167,8 @@ nsresult ChannelFromScriptURLMainThread(
|
||||
return ChannelFromScriptURL(
|
||||
aPrincipal, aParentDoc, nullptr, aLoadGroup, ios, secMan, aScriptURL,
|
||||
aClientInfo, Maybe<ServiceWorkerDescriptor>(), true, WorkerScript,
|
||||
aMainScriptContentPolicyType, nsIRequest::LOAD_NORMAL, aChannel);
|
||||
aMainScriptContentPolicyType, nsIRequest::LOAD_NORMAL, aCookieSettings,
|
||||
aChannel);
|
||||
}
|
||||
|
||||
nsresult ChannelFromScriptURLWorkerThread(JSContext* aCx,
|
||||
|
||||
Reference in New Issue
Block a user