Index: content/browser/service_worker/service_worker_register_job.cc |
diff --git a/content/browser/service_worker/service_worker_register_job.cc b/content/browser/service_worker/service_worker_register_job.cc |
index 0a28dc1ccab0af6b23f99e53b9b04f4f851599e6..87005e571233898510c7e5ebce61352ebe8b9926 100644 |
--- a/content/browser/service_worker/service_worker_register_job.cc |
+++ b/content/browser/service_worker/service_worker_register_job.cc |
@@ -13,6 +13,7 @@ |
#include "content/browser/service_worker/service_worker_storage.h" |
#include "content/browser/service_worker/service_worker_utils.h" |
#include "content/common/service_worker/service_worker_types.h" |
+#include "content/public/browser/browser_thread.h" |
#include "net/base/net_errors.h" |
namespace content { |
@@ -81,6 +82,16 @@ void ServiceWorkerRegisterJob::AddCallback( |
void ServiceWorkerRegisterJob::Start() { |
SetPhase(START); |
+ BrowserThread::PostAfterStartupTask( |
+ FROM_HERE, |
+ base::MessageLoop::current()->task_runner(), |
+ base::Bind(&ServiceWorkerRegisterJob::StartInternal, |
+ weak_factory_.GetWeakPtr())); |
+} |
+ |
+void ServiceWorkerRegisterJob::StartInternal() { |
+ if (phase_ != START) |
+ return; |
ServiceWorkerStorage::FindRegistrationCallback next_step; |
if (job_type_ == REGISTRATION_JOB) { |
next_step = base::Bind( |