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

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

Issue 2002883002: ServiceWorker: Store the existence of fetch event handler (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase Created 4 years, 7 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 149502cddbd0e1e7bb1afe57312536b211c7c019..d0d8b741557c414561c74b8d485f011e48814ffd 100644
--- a/content/browser/service_worker/service_worker_register_job.cc
+++ b/content/browser/service_worker/service_worker_register_job.cc
@@ -410,7 +410,7 @@ void ServiceWorkerRegisterJob::InstallAndContinue() {
ServiceWorkerMetrics::EventType::INSTALL,
base::Bind(&ServiceWorkerRegisterJob::DispatchInstallEvent,
weak_factory_.GetWeakPtr()),
- base::Bind(&ServiceWorkerRegisterJob::OnInstallFinished,
+ base::Bind(&ServiceWorkerRegisterJob::OnInstallFailed,
weak_factory_.GetWeakPtr()));
// A subsequent registration job may terminate our installing worker. It can
@@ -427,25 +427,43 @@ void ServiceWorkerRegisterJob::DispatchInstallEvent() {
<< "Worker stopped too soon after it was started.";
int request_id = new_version()->StartRequest(
ServiceWorkerMetrics::EventType::INSTALL,
+ base::Bind(&ServiceWorkerRegisterJob::OnInstallFailed,
+ weak_factory_.GetWeakPtr()));
+ new_version()->DispatchEvent<ServiceWorkerHostMsg_InstallEventFinished>(
+ request_id, ServiceWorkerMsg_InstallEvent(request_id),
base::Bind(&ServiceWorkerRegisterJob::OnInstallFinished,
weak_factory_.GetWeakPtr()));
- new_version()->DispatchSimpleEvent<ServiceWorkerHostMsg_InstallEventFinished>(
- request_id, ServiceWorkerMsg_InstallEvent(request_id));
}
void ServiceWorkerRegisterJob::OnInstallFinished(
- ServiceWorkerStatusCode status) {
- ServiceWorkerMetrics::RecordInstallEventStatus(status);
+ int request_id,
+ blink::WebServiceWorkerEventResult result,
+ bool has_fetch_handler) {
+ new_version()->FinishRequest(
+ request_id, result == blink::WebServiceWorkerEventResultCompleted);
+
+ ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_FAILED;
+ switch (result) {
+ case blink::WebServiceWorkerEventResultCompleted:
+ status = SERVICE_WORKER_OK;
+ break;
+ case blink::WebServiceWorkerEventResultRejected:
+ status = SERVICE_WORKER_ERROR_EVENT_WAITUNTIL_REJECTED;
+ break;
+ default:
+ NOTREACHED();
+ }
if (status != SERVICE_WORKER_OK) {
- // "8. If installFailed is true, then:..."
- Complete(status, std::string("ServiceWorker failed to install: ") +
- ServiceWorkerStatusToString(status));
+ OnInstallFailed(status);
return;
}
+ ServiceWorkerMetrics::RecordInstallEventStatus(status);
+
SetPhase(STORE);
DCHECK(!registration()->last_update_check().is_null());
+ new_version()->set_has_fetch_handler(has_fetch_handler);
context_->storage()->StoreRegistration(
registration(),
new_version(),
@@ -453,6 +471,17 @@ void ServiceWorkerRegisterJob::OnInstallFinished(
weak_factory_.GetWeakPtr()));
}
+void ServiceWorkerRegisterJob::OnInstallFailed(ServiceWorkerStatusCode status) {
+ ServiceWorkerMetrics::RecordInstallEventStatus(status);
+
+ if (status != SERVICE_WORKER_OK) {
+ Complete(status, std::string("ServiceWorker failed to install: ") +
+ ServiceWorkerStatusToString(status));
+ } else {
+ NOTREACHED() << "OnInstallFailed should not handle SERVICE_WORKER_OK";
+ }
+}
+
void ServiceWorkerRegisterJob::OnStoreRegistrationComplete(
ServiceWorkerStatusCode status) {
if (status != SERVICE_WORKER_OK) {
« no previous file with comments | « content/browser/service_worker/service_worker_register_job.h ('k') | content/browser/service_worker/service_worker_storage.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698