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

Unified Diff: content/browser/service_worker/service_worker_register_job.cc

Issue 2771823002: Implement updateViaCache flag and no-cache by default for main service worker scripts
Patch Set: fix IPC Created 3 years, 4 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 side-by-side diff with in-line comments
Download patch
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 aa9725eb02bef174d820ce3a39b2dadc967d1bca..ddc4b3eabc409fc63b3c26de606da05f2daac8ca 100644
--- a/content/browser/service_worker/service_worker_register_job.cc
+++ b/content/browser/service_worker/service_worker_register_job.cc
@@ -74,6 +74,7 @@ ServiceWorkerRegisterJob::ServiceWorkerRegisterJob(
job_type_(REGISTRATION_JOB),
pattern_(options.scope),
script_url_(script_url),
+ update_via_cache_(options.update_via_cache),
phase_(INITIAL),
is_promise_resolved_(false),
should_uninstall_on_failure_(false),
@@ -90,6 +91,7 @@ ServiceWorkerRegisterJob::ServiceWorkerRegisterJob(
: context_(context),
job_type_(UPDATE_JOB),
pattern_(registration->pattern()),
+ update_via_cache_(registration->update_via_cache()),
phase_(INITIAL),
is_promise_resolved_(false),
should_uninstall_on_failure_(false),
@@ -251,8 +253,10 @@ void ServiceWorkerRegisterJob::ContinueWithRegistration(
}
DCHECK(existing_registration->GetNewestVersion());
- // "If scriptURL is equal to registration.[[ScriptURL]], then:"
- if (existing_registration->GetNewestVersion()->script_url() == script_url_) {
+ // "If scriptURL is equal to registration.[[ScriptURL]] and
+ // "update_via_cache is equal to registration.[[update_via_cache]], then:"
+ if (existing_registration->GetNewestVersion()->script_url() == script_url_ &&
+ existing_registration->update_via_cache() == update_via_cache_) {
// "Set registration.[[Uninstalling]] to false."
existing_registration->AbortPendingClear(base::Bind(
&ServiceWorkerRegisterJob::ContinueWithRegistrationForSameScriptUrl,
@@ -269,9 +273,12 @@ void ServiceWorkerRegisterJob::ContinueWithRegistration(
return;
}
+ // "Invoke Set Registration algorithm with job’s scope url and
+ // job’s update via cache mode."
+ existing_registration->set_update_via_cache(update_via_cache_);
+ set_registration(existing_registration);
// "Return the result of running the [[Update]] algorithm, or its equivalent,
// passing registration as the argument."
- set_registration(existing_registration);
UpdateAndContinue();
}
@@ -317,7 +324,8 @@ void ServiceWorkerRegisterJob::RegisterAndContinue() {
}
set_registration(new ServiceWorkerRegistration(
- ServiceWorkerRegistrationOptions(pattern_), registration_id, context_));
+ ServiceWorkerRegistrationOptions(pattern_, update_via_cache_),
+ registration_id, context_));
AddRegistrationToMatchingProviderHosts(registration());
UpdateAndContinue();
}
@@ -343,8 +351,9 @@ void ServiceWorkerRegisterJob::ContinueWithRegistrationForSameScriptUrl(
}
set_registration(existing_registration);
- // "If newestWorker is not null, and scriptURL is equal to
- // newestWorker.scriptURL, then:
+ // "If newestWorker is not null, scriptURL is equal to newestWorker.scriptURL,
+ // and job’s update via cache mode's value equals registration’s
+ // update via cache mode then:
// Return a promise resolved with registration."
// We resolve only if there's an active version. If there's not,
// then there is either no version or only a waiting version from

Powered by Google App Engine
This is Rietveld 408576698