summaryrefslogtreecommitdiffstats
path: root/netwerk/ipc/DocumentLoadListener.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'netwerk/ipc/DocumentLoadListener.cpp')
-rw-r--r--netwerk/ipc/DocumentLoadListener.cpp24
1 files changed, 18 insertions, 6 deletions
diff --git a/netwerk/ipc/DocumentLoadListener.cpp b/netwerk/ipc/DocumentLoadListener.cpp
index d849eab750..a133df4663 100644
--- a/netwerk/ipc/DocumentLoadListener.cpp
+++ b/netwerk/ipc/DocumentLoadListener.cpp
@@ -810,6 +810,24 @@ auto DocumentLoadListener::Open(nsDocShellLoadState* aLoadState,
if (cos && aUrgentStart) {
cos->AddClassFlags(nsIClassOfService::UrgentStart);
}
+
+ // ClientChannelHelper below needs us to have finalized the principal for
+ // the channel because it will request that StoragePrincipalHelper mint us a
+ // principal that needs to match the same principal that a later call to
+ // StoragePrincipalHelper will mint when determining the right origin to
+ // look up the ServiceWorker.
+ //
+ // Because nsHttpChannel::AsyncOpen calls UpdateAntiTrackingInfoForChannel
+ // which potentially flips the third party bit/flag on the partition key on
+ // the cookie jar which impacts the principal that will be minted, it is
+ // essential that UpdateAntiTrackingInfoForChannel is called before
+ // AddClientChannelHelperInParent below.
+ //
+ // Because the call to UpdateAntiTrackingInfoForChannel is largely
+ // idempotent, we currently just make the call ourselves right now. The one
+ // caveat is that the RFPRandomKey may be spuriously regenerated for
+ // top-level documents.
+ AntiTrackingUtils::UpdateAntiTrackingInfoForChannel(httpChannel);
}
// Setup a ClientChannelHelper to watch for redirects, and copy
@@ -1997,12 +2015,6 @@ bool DocumentLoadListener::MaybeTriggerProcessSwitch(
return false;
}
- if (!StaticPrefs::fission_remoteObjectEmbed()) {
- MOZ_LOG(gProcessIsolationLog, LogLevel::Verbose,
- ("Process Switch Abort: remote <object>/<embed> disabled"));
- return false;
- }
-
mObjectUpgradeHandler->UpgradeObjectLoad()->Then(
GetMainThreadSerialEventTarget(), __func__,
[self = RefPtr{this}, options, parentWindow](