Chromium Code Reviews| Index: content/browser/service_worker/service_worker_context_wrapper.cc |
| diff --git a/content/browser/service_worker/service_worker_context_wrapper.cc b/content/browser/service_worker/service_worker_context_wrapper.cc |
| index c326aa5d89586e431b918e4e394c031b4297a53f..5f9b030747c43d9926e09f51790d50cf1ca38272 100644 |
| --- a/content/browser/service_worker/service_worker_context_wrapper.cc |
| +++ b/content/browser/service_worker/service_worker_context_wrapper.cc |
| @@ -70,6 +70,18 @@ void StartActiveWorkerOnIO( |
| base::Bind(callback, SERVICE_WORKER_ERROR_NOT_FOUND)); |
| } |
| +void SkipWaitingWorkerOnIO( |
| + ServiceWorkerStatusCode status, |
| + const scoped_refptr<ServiceWorkerRegistration>& registration) { |
| + DCHECK_CURRENTLY_ON(BrowserThread::IO); |
| + if (status == SERVICE_WORKER_OK) { |
| + if (registration->waiting_version()) { |
|
caseq
2016/05/05 01:09:21
nit:
if (status != SERVICE_WORKER_ON || !registrat
pfeldman
2016/05/05 02:21:41
Done.
|
| + registration->waiting_version()->set_skip_waiting(true); |
| + registration->ActivateWaitingVersionWhenReady(); |
| + } |
| + } |
| +} |
| + |
| } // namespace |
| void ServiceWorkerContext::AddExcludedHeadersForFetchEvent( |
| @@ -291,6 +303,20 @@ void ServiceWorkerContextWrapper::StartServiceWorker( |
| base::Bind(&StartActiveWorkerOnIO, callback)); |
| } |
| +void ServiceWorkerContextWrapper::SkipWaitingWorker(const GURL& pattern) { |
| + if (!BrowserThread::CurrentlyOn(BrowserThread::IO)) { |
| + BrowserThread::PostTask( |
| + BrowserThread::IO, FROM_HERE, |
| + base::Bind(&ServiceWorkerContextWrapper::SkipWaitingWorker, this, |
| + pattern)); |
| + return; |
| + } |
| + if (!context_core_) |
| + return; |
| + context_core_->storage()->FindRegistrationForPattern( |
|
caseq
2016/05/05 01:09:21
Let's extract something like dispatchOnRegistratio
pfeldman
2016/05/05 02:21:41
It is a common pattern that SW uses to hop between
|
| + net::SimplifyUrlForRequest(pattern), base::Bind(&SkipWaitingWorkerOnIO)); |
| +} |
| + |
| void ServiceWorkerContextWrapper::SetForceUpdateOnPageLoad( |
| bool force_update_on_page_load) { |
| if (!BrowserThread::CurrentlyOn(BrowserThread::IO)) { |