From 0681b3ac9a6ab4879ca2fbfcf8aa9d00a67b8365 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Mon, 17 Jun 2024 11:03:13 +0200 Subject: Merging upstream version 115.12.0esr. Signed-off-by: Daniel Baumann --- netwerk/ipc/DocumentLoadListener.cpp | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'netwerk/ipc') diff --git a/netwerk/ipc/DocumentLoadListener.cpp b/netwerk/ipc/DocumentLoadListener.cpp index 54c9a53e65..a6a7b21749 100644 --- a/netwerk/ipc/DocumentLoadListener.cpp +++ b/netwerk/ipc/DocumentLoadListener.cpp @@ -777,6 +777,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 -- cgit v1.2.3