author | Ben Kelly <ben@wanderview.com> |
Wed, 10 Jun 2015 13:39:42 -0700 | |
changeset 248160 | 8fba915650d99e6e851414ed02a94a70699611f8 |
parent 248159 | c3840ca0384ff1acbc3d4a1c255c634b3d7b953a |
child 248161 | c4db01ea9e6c80e2b269549abeec1d4aea34eab7 |
push id | 28893 |
push user | kwierso@gmail.com |
push date | Fri, 12 Jun 2015 00:02:58 +0000 |
treeherder | autoland@8cf9d3e497f9 [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | nsm |
bugs | 1173361 |
milestone | 41.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/ServiceWorkerManager.cpp +++ b/dom/workers/ServiceWorkerManager.cpp @@ -869,17 +869,25 @@ public: if (mRegistration) { nsRefPtr<ServiceWorkerInfo> newest = mRegistration->Newest(); if (newest && mScriptSpec.Equals(newest->ScriptSpec()) && mScriptSpec.Equals(mRegistration->mScriptSpec)) { mRegistration->mPendingUninstall = false; swm->StoreRegistration(mPrincipal, mRegistration); Succeed(); - Done(NS_OK); + + // Done() must always be called async from Start() + nsCOMPtr<nsIRunnable> runnable = + NS_NewRunnableMethodWithArg<nsresult>( + this, + &ServiceWorkerRegisterJob::Done, + NS_OK); + MOZ_ALWAYS_TRUE(NS_SUCCEEDED(NS_DispatchToCurrentThread(runnable))); + return; } } else { mRegistration = swm->CreateNewRegistration(mScope, mPrincipal); } mRegistration->mScriptSpec = mScriptSpec; swm->StoreRegistration(mPrincipal, mRegistration);