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

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

Issue 1381153004: Service Worker: Change the criteria for bumping the last update check time (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 2 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/location.h" 9 #include "base/location.h"
10 #include "base/single_thread_task_runner.h" 10 #include "base/single_thread_task_runner.h"
(...skipping 322 matching lines...) Expand 10 before | Expand all | Expand 10 after
333 context_)); 333 context_));
334 new_version()->set_force_bypass_cache_for_scripts(force_bypass_cache_); 334 new_version()->set_force_bypass_cache_for_scripts(force_bypass_cache_);
335 new_version()->set_skip_script_comparison(skip_script_comparison_); 335 new_version()->set_skip_script_comparison(skip_script_comparison_);
336 new_version()->StartWorker( 336 new_version()->StartWorker(
337 base::Bind(&ServiceWorkerRegisterJob::OnStartWorkerFinished, 337 base::Bind(&ServiceWorkerRegisterJob::OnStartWorkerFinished,
338 weak_factory_.GetWeakPtr())); 338 weak_factory_.GetWeakPtr()));
339 } 339 }
340 340
341 void ServiceWorkerRegisterJob::OnStartWorkerFinished( 341 void ServiceWorkerRegisterJob::OnStartWorkerFinished(
342 ServiceWorkerStatusCode status) { 342 ServiceWorkerStatusCode status) {
343 // Only bump the last check time when we've bypassed the browser cache.
344 if (new_version()->embedded_worker()->network_accessed_for_script() ||
345 new_version()->force_bypass_cache_for_scripts()) {
346 registration()->set_last_update_check(base::Time::Now());
347 context_->storage()->UpdateLastUpdateCheckTime(registration());
michaeln 2015/11/09 23:19:10 This block is reachable for first time registratio
jungkees 2015/11/10 02:45:17 Executing this part of the code for the first time
falken 2015/12/02 09:27:39 Michael is saying that for first time registration
jungkees 2015/12/04 11:46:38 Having inspected the code sequence for a first tim
falken 2015/12/07 03:53:34 Right, it's a no-op but it requires reading disk w
jungkees 2015/12/07 07:02:09 Great. I made it only UPDATE_JOBs write to disk.
348 }
349
343 if (status == SERVICE_WORKER_OK) { 350 if (status == SERVICE_WORKER_OK) {
344 InstallAndContinue(); 351 InstallAndContinue();
345 return; 352 return;
346 } 353 }
347 354
348 // The updated worker is identical to the incumbent. 355 // The updated worker is identical to the incumbent.
349 if (status == SERVICE_WORKER_ERROR_EXISTS) { 356 if (status == SERVICE_WORKER_ERROR_EXISTS) {
350 // Only bump the last check time when we've bypassed the browser cache.
351 base::TimeDelta time_since_last_check =
352 base::Time::Now() - registration()->last_update_check();
353 if (time_since_last_check > base::TimeDelta::FromHours(
354 kServiceWorkerScriptMaxCacheAgeInHours) ||
355 new_version()->force_bypass_cache_for_scripts()) {
356 registration()->set_last_update_check(base::Time::Now());
357 context_->storage()->UpdateLastUpdateCheckTime(registration());
358 }
359
360 ResolvePromise(SERVICE_WORKER_OK, std::string(), registration()); 357 ResolvePromise(SERVICE_WORKER_OK, std::string(), registration());
361 Complete(status, "The updated worker is identical to the incumbent."); 358 Complete(status, "The updated worker is identical to the incumbent.");
362 return; 359 return;
363 } 360 }
364 361
365 // "If serviceWorker fails to start up..." then reject the promise with an 362 // "If serviceWorker fails to start up..." then reject the promise with an
366 // error and abort. 363 // error and abort.
367 if (status == SERVICE_WORKER_ERROR_TIMEOUT) { 364 if (status == SERVICE_WORKER_ERROR_TIMEOUT) {
368 Complete(status, "Timed out while trying to start the Service Worker."); 365 Complete(status, "Timed out while trying to start the Service Worker.");
369 return; 366 return;
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
414 ServiceWorkerStatusCode status) { 411 ServiceWorkerStatusCode status) {
415 ServiceWorkerMetrics::RecordInstallEventStatus(status); 412 ServiceWorkerMetrics::RecordInstallEventStatus(status);
416 413
417 if (status != SERVICE_WORKER_OK) { 414 if (status != SERVICE_WORKER_OK) {
418 // "8. If installFailed is true, then:..." 415 // "8. If installFailed is true, then:..."
419 Complete(status); 416 Complete(status);
420 return; 417 return;
421 } 418 }
422 419
423 SetPhase(STORE); 420 SetPhase(STORE);
424 registration()->set_last_update_check(base::Time::Now());
425 context_->storage()->StoreRegistration( 421 context_->storage()->StoreRegistration(
426 registration(), 422 registration(),
427 new_version(), 423 new_version(),
428 base::Bind(&ServiceWorkerRegisterJob::OnStoreRegistrationComplete, 424 base::Bind(&ServiceWorkerRegisterJob::OnStoreRegistrationComplete,
429 weak_factory_.GetWeakPtr())); 425 weak_factory_.GetWeakPtr()));
430 } 426 }
431 427
432 void ServiceWorkerRegisterJob::OnStoreRegistrationComplete( 428 void ServiceWorkerRegisterJob::OnStoreRegistrationComplete(
433 ServiceWorkerStatusCode status) { 429 ServiceWorkerStatusCode status) {
434 if (status != SERVICE_WORKER_OK) { 430 if (status != SERVICE_WORKER_OK) {
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
535 if (host->IsHostToRunningServiceWorker()) 531 if (host->IsHostToRunningServiceWorker())
536 continue; 532 continue;
537 if (!ServiceWorkerUtils::ScopeMatches(registration->pattern(), 533 if (!ServiceWorkerUtils::ScopeMatches(registration->pattern(),
538 host->document_url())) 534 host->document_url()))
539 continue; 535 continue;
540 host->AddMatchingRegistration(registration); 536 host->AddMatchingRegistration(registration);
541 } 537 }
542 } 538 }
543 539
544 } // namespace content 540 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698