diff --git a/dom/workers/ScriptLoader.cpp b/dom/workers/ScriptLoader.cpp index ae023b520e..bdc4efed23 100644 --- a/dom/workers/ScriptLoader.cpp +++ b/dom/workers/ScriptLoader.cpp @@ -693,6 +693,7 @@ private: } ir->SetPrincipalInfo(Move(principalInfo)); + ir->Headers()->FillResponseHeaders(loadInfo.mChannel); RefPtr response = new mozilla::dom::Response(mCacheCreator->Global(), ir, nullptr); diff --git a/dom/workers/ServiceWorkerScriptCache.cpp b/dom/workers/ServiceWorkerScriptCache.cpp index f343c35586..00e0446edf 100644 --- a/dom/workers/ServiceWorkerScriptCache.cpp +++ b/dom/workers/ServiceWorkerScriptCache.cpp @@ -239,6 +239,7 @@ public: CompareCallback* aCallback) : mRegistration(aRegistration) , mCallback(aCallback) + , mInternalHeaders(new InternalHeaders()) , mState(WaitingForOpen) , mNetworkFinished(false) , mCacheFinished(false) @@ -425,11 +426,21 @@ public: return mCacheStorage; } - void - InitChannelInfo(nsIChannel* aChannel) + nsresult + OnStartRequest(nsIChannel* aChannel) { + nsresult rv = SetPrincipalInfo(aChannel); + if (NS_WARN_IF(NS_FAILED(rv))) { + return rv; + } + mChannelInfo.InitFromChannel(aChannel); + + mInternalHeaders->FillResponseHeaders(aChannel); + + return NS_OK; } + nsresult SetPrincipalInfo(nsIChannel* aChannel) @@ -553,6 +564,9 @@ private: ir->SetPrincipalInfo(Move(mPrincipalInfo)); } + IgnoredErrorResult ignored; + ir->Headers()->Fill(*mInternalHeaders, ignored); + RefPtr response = new Response(aCache->GetGlobalObject(), ir, nullptr); RequestOrUSVString request; @@ -587,6 +601,7 @@ private: nsString mNewCacheName; ChannelInfo mChannelInfo; + RefPtr mInternalHeaders; UniquePtr mPrincipalInfo; @@ -682,8 +697,7 @@ CompareNetwork::OnStartRequest(nsIRequest* aRequest, nsISupports* aContext) MOZ_ASSERT(channel == mChannel); #endif - mManager->InitChannelInfo(mChannel); - nsresult rv = mManager->SetPrincipalInfo(mChannel); + nsresult rv = mManager->OnStartRequest(mChannel); if (NS_WARN_IF(NS_FAILED(rv))) { return rv; }