Issue #2402 - Persist response headers for offlined service worker scripts. https://bugzilla.mozilla.org/show_bug.cgi?id=1337543

This commit is contained in:
Brian Smith 2024-01-05 01:11:53 -06:00 • committed by roytam1
commit b723bb60ad
2 changed files with 19 additions and 4 deletions

View file

@ -693,6 +693,7 @@ private:
} }
ir->SetPrincipalInfo(Move(principalInfo)); ir->SetPrincipalInfo(Move(principalInfo));
ir->Headers()->FillResponseHeaders(loadInfo.mChannel);
RefPtr<mozilla::dom::Response> response = RefPtr<mozilla::dom::Response> response =
new mozilla::dom::Response(mCacheCreator->Global(), ir, nullptr); new mozilla::dom::Response(mCacheCreator->Global(), ir, nullptr);

View file

@ -239,6 +239,7 @@ public:
CompareCallback* aCallback) CompareCallback* aCallback)
: mRegistration(aRegistration) : mRegistration(aRegistration)
, mCallback(aCallback) , mCallback(aCallback)
, mInternalHeaders(new InternalHeaders())
, mState(WaitingForOpen) , mState(WaitingForOpen)
, mNetworkFinished(false) , mNetworkFinished(false)
, mCacheFinished(false) , mCacheFinished(false)
@ -425,12 +426,22 @@ public:
return mCacheStorage; return mCacheStorage;
} }
void nsresult
InitChannelInfo(nsIChannel* aChannel) OnStartRequest(nsIChannel* aChannel)
{ {
nsresult rv = SetPrincipalInfo(aChannel);
if (NS_WARN_IF(NS_FAILED(rv))) {
return rv;
}
mChannelInfo.InitFromChannel(aChannel); mChannelInfo.InitFromChannel(aChannel);
mInternalHeaders->FillResponseHeaders(aChannel);
return NS_OK;
} }
nsresult nsresult
SetPrincipalInfo(nsIChannel* aChannel) SetPrincipalInfo(nsIChannel* aChannel)
{ {
@ -553,6 +564,9 @@ private:
ir->SetPrincipalInfo(Move(mPrincipalInfo)); ir->SetPrincipalInfo(Move(mPrincipalInfo));
} }
IgnoredErrorResult ignored;
ir->Headers()->Fill(*mInternalHeaders, ignored);
RefPtr<Response> response = new Response(aCache->GetGlobalObject(), ir, nullptr); RefPtr<Response> response = new Response(aCache->GetGlobalObject(), ir, nullptr);
RequestOrUSVString request; RequestOrUSVString request;
@ -587,6 +601,7 @@ private:
nsString mNewCacheName; nsString mNewCacheName;
ChannelInfo mChannelInfo; ChannelInfo mChannelInfo;
RefPtr<InternalHeaders> mInternalHeaders;
UniquePtr<mozilla::ipc::PrincipalInfo> mPrincipalInfo; UniquePtr<mozilla::ipc::PrincipalInfo> mPrincipalInfo;
@ -682,8 +697,7 @@ CompareNetwork::OnStartRequest(nsIRequest* aRequest, nsISupports* aContext)
MOZ_ASSERT(channel == mChannel); MOZ_ASSERT(channel == mChannel);
#endif #endif
mManager->InitChannelInfo(mChannel); nsresult rv = mManager->OnStartRequest(mChannel);
nsresult rv = mManager->SetPrincipalInfo(mChannel);
if (NS_WARN_IF(NS_FAILED(rv))) { if (NS_WARN_IF(NS_FAILED(rv))) {
return rv; return rv;
} }