author | Ehsan Akhgari <ehsan@mozilla.com> |
Thu, 23 Apr 2015 19:13:29 -0400 | |
changeset 241720 | 970c30fdca491d9132f571ed0f40e2f9c708e1a9 |
parent 241719 | 343858d83d73777dfe1b6cd3924fb82f62e0ea96 |
child 241721 | e3a415d282b0e91b0ce5ee57b3f37a48ae11a424 |
push id | 28669 |
push user | ryanvm@gmail.com |
push date | Thu, 30 Apr 2015 17:57:05 +0000 |
treeherder | mozilla-central@7723b15ea695 [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | nsm |
bugs | 1156847 |
milestone | 40.0a1 |
first release with | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
--- a/dom/workers/ScriptLoader.cpp +++ b/dom/workers/ScriptLoader.cpp @@ -416,16 +416,17 @@ private: ScriptLoadInfo& mLoadInfo; uint32_t mIndex; nsRefPtr<ScriptLoaderRunnable> mRunnable; bool mIsWorkerScript; bool mFailed; nsCOMPtr<nsIInputStreamPump> mPump; nsCOMPtr<nsIURI> mBaseURI; + nsCString mSecurityInfo; }; NS_IMPL_ISUPPORTS(CacheScriptLoader, nsIStreamLoaderObserver) class CachePromiseHandler final : public PromiseNativeHandler { public: CachePromiseHandler(ScriptLoaderRunnable* aRunnable, @@ -1045,17 +1046,17 @@ private: } DataReceived(); return NS_OK; } void DataReceivedFromCache(uint32_t aIndex, const uint8_t* aString, - uint32_t aStringLen) + uint32_t aStringLen, const nsCString& aSecurityInfo) { AssertIsOnMainThread(); MOZ_ASSERT(aIndex < mLoadInfos.Length()); ScriptLoadInfo& loadInfo = mLoadInfos[aIndex]; MOZ_ASSERT(loadInfo.mCacheStatus == ScriptLoadInfo::Cached); // May be null. nsIDocument* parentDoc = mWorkerPrivate->GetDocument(); @@ -1073,16 +1074,17 @@ private: if (NS_SUCCEEDED(rv)) { mWorkerPrivate->SetBaseURI(finalURI); } nsIPrincipal* principal = mWorkerPrivate->GetPrincipal(); MOZ_ASSERT(principal); nsILoadGroup* loadGroup = mWorkerPrivate->GetLoadGroup(); MOZ_ASSERT(loadGroup); + mWorkerPrivate->SetSecurityInfo(aSecurityInfo); // Needed to initialize the principal info. This is fine because // the cache principal cannot change, unlike the channel principal. mWorkerPrivate->SetPrincipal(principal, loadGroup); } if (NS_SUCCEEDED(rv)) { DataReceived(); } @@ -1426,20 +1428,21 @@ CacheScriptLoader::ResolvedCallback(JSCo nsresult rv = UNWRAP_OBJECT(Response, obj, response); if (NS_WARN_IF(NS_FAILED(rv))) { Fail(rv); return; } nsCOMPtr<nsIInputStream> inputStream; response->GetBody(getter_AddRefs(inputStream)); + mSecurityInfo = response->GetSecurityInfo(); if (!inputStream) { mLoadInfo.mCacheStatus = ScriptLoadInfo::Cached; - mRunnable->DataReceivedFromCache(mIndex, (uint8_t*)"", 0); + mRunnable->DataReceivedFromCache(mIndex, (uint8_t*)"", 0, mSecurityInfo); return; } MOZ_ASSERT(!mPump); rv = NS_NewInputStreamPump(getter_AddRefs(mPump), inputStream); if (NS_WARN_IF(NS_FAILED(rv))) { Fail(rv); return; @@ -1485,17 +1488,17 @@ CacheScriptLoader::OnStreamComplete(nsIS if (NS_FAILED(aStatus)) { Fail(aStatus); return NS_OK; } mLoadInfo.mCacheStatus = ScriptLoadInfo::Cached; - mRunnable->DataReceivedFromCache(mIndex, aString, aStringLen); + mRunnable->DataReceivedFromCache(mIndex, aString, aStringLen, mSecurityInfo); return NS_OK; } class ChannelGetterRunnable final : public nsRunnable { WorkerPrivate* mParentWorker; nsCOMPtr<nsIEventTarget> mSyncLoopTarget; const nsAString& mScriptURL;