Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(71)

Side by Side Diff: content/browser/service_worker/service_worker_register_job.cc

Issue 949293002: Implement a poor man's PostAfterStartupTask() function. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/browser/service_worker/service_worker_register_job.h" 5 #include "content/browser/service_worker/service_worker_register_job.h"
6 6
7 #include <vector> 7 #include <vector>
8 8
9 #include "base/message_loop/message_loop.h" 9 #include "base/message_loop/message_loop.h"
10 #include "content/browser/service_worker/service_worker_context_core.h" 10 #include "content/browser/service_worker/service_worker_context_core.h"
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
74 provider_host->AddScopedProcessReferenceToPattern(pattern_); 74 provider_host->AddScopedProcessReferenceToPattern(pattern_);
75 return; 75 return;
76 } 76 }
77 RunSoon(base::Bind(callback, promise_resolved_status_, 77 RunSoon(base::Bind(callback, promise_resolved_status_,
78 promise_resolved_status_message_, 78 promise_resolved_status_message_,
79 promise_resolved_registration_)); 79 promise_resolved_registration_));
80 } 80 }
81 81
82 void ServiceWorkerRegisterJob::Start() { 82 void ServiceWorkerRegisterJob::Start() {
83 SetPhase(START); 83 SetPhase(START);
84
85 if (IsBrowserStartingUp()) {
86 // Delay running update jobs until after startup.
87 const base::TimeDelta kRetryInterval = base::TimeDelta::FromSeconds(15);
88 delayed_start_timer_.Start(
89 FROM_HERE, kRetryInterval,
90 base::Bind(&ServiceWorkerRegisterJob::Restart,
91 weak_factory_.GetWeakPtr()));
92 return;
93 }
94
84 ServiceWorkerStorage::FindRegistrationCallback next_step; 95 ServiceWorkerStorage::FindRegistrationCallback next_step;
85 if (job_type_ == REGISTRATION_JOB) { 96 if (job_type_ == REGISTRATION_JOB) {
86 next_step = base::Bind( 97 next_step = base::Bind(
87 &ServiceWorkerRegisterJob::ContinueWithRegistration, 98 &ServiceWorkerRegisterJob::ContinueWithRegistration,
88 weak_factory_.GetWeakPtr()); 99 weak_factory_.GetWeakPtr());
89 } else { 100 } else {
90 next_step = base::Bind( 101 next_step = base::Bind(
91 &ServiceWorkerRegisterJob::ContinueWithUpdate, 102 &ServiceWorkerRegisterJob::ContinueWithUpdate,
92 weak_factory_.GetWeakPtr()); 103 weak_factory_.GetWeakPtr());
93 } 104 }
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
176 break; 187 break;
177 case COMPLETE: 188 case COMPLETE:
178 DCHECK(phase_ != INITIAL && phase_ != COMPLETE) << phase_; 189 DCHECK(phase_ != INITIAL && phase_ != COMPLETE) << phase_;
179 break; 190 break;
180 case ABORT: 191 case ABORT:
181 break; 192 break;
182 } 193 }
183 phase_ = phase; 194 phase_ = phase;
184 } 195 }
185 196
197 void ServiceWorkerRegisterJob::Restart() {
198 DCHECK(phase_ == START) << phase_;
199 phase_ = INITIAL;
200 Start();
201 }
202
186 // This function corresponds to the steps in [[Register]] following 203 // This function corresponds to the steps in [[Register]] following
187 // "Let registration be the result of running the [[GetRegistration]] algorithm. 204 // "Let registration be the result of running the [[GetRegistration]] algorithm.
188 // Throughout this file, comments in quotes are excerpts from the spec. 205 // Throughout this file, comments in quotes are excerpts from the spec.
189 void ServiceWorkerRegisterJob::ContinueWithRegistration( 206 void ServiceWorkerRegisterJob::ContinueWithRegistration(
190 ServiceWorkerStatusCode status, 207 ServiceWorkerStatusCode status,
191 const scoped_refptr<ServiceWorkerRegistration>& existing_registration) { 208 const scoped_refptr<ServiceWorkerRegistration>& existing_registration) {
192 DCHECK_EQ(REGISTRATION_JOB, job_type_); 209 DCHECK_EQ(REGISTRATION_JOB, job_type_);
193 if (status != SERVICE_WORKER_ERROR_NOT_FOUND && status != SERVICE_WORKER_OK) { 210 if (status != SERVICE_WORKER_ERROR_NOT_FOUND && status != SERVICE_WORKER_OK) {
194 Complete(status); 211 Complete(status);
195 return; 212 return;
(...skipping 360 matching lines...) Expand 10 before | Expand all | Expand 10 after
556 ServiceWorkerProviderHost* host = it->GetProviderHost(); 573 ServiceWorkerProviderHost* host = it->GetProviderHost();
557 if (ServiceWorkerUtils::ScopeMatches(registration->pattern(), 574 if (ServiceWorkerUtils::ScopeMatches(registration->pattern(),
558 host->document_url())) { 575 host->document_url())) {
559 if (host->CanAssociateRegistration(registration)) 576 if (host->CanAssociateRegistration(registration))
560 host->AssociateRegistration(registration); 577 host->AssociateRegistration(registration);
561 } 578 }
562 } 579 }
563 } 580 }
564 581
565 } // namespace content 582 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698