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

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

Issue 1063823005: Service Worker: Use more specific errors when StartWorker fails (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: update histograms.xml Created 5 years, 8 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_version.cc
diff --git a/content/browser/service_worker/service_worker_version.cc b/content/browser/service_worker/service_worker_version.cc
index 0c5202d16a8cb8a6d64b3058dda15312207eec81..9103b8328798b050a9e18999257952c2285feb72 100644
--- a/content/browser/service_worker/service_worker_version.cc
+++ b/content/browser/service_worker/service_worker_version.cc
@@ -452,7 +452,7 @@ void ServiceWorkerVersion::StartWorker(
bool pause_after_download,
const StatusCallback& callback) {
if (!context_) {
- RunSoon(base::Bind(callback, SERVICE_WORKER_ERROR_START_WORKER_FAILED));
+ RunSoon(base::Bind(callback, SERVICE_WORKER_ERROR_ABORT));
return;
}
@@ -942,7 +942,8 @@ void ServiceWorkerVersion::OnStopped(
if (!should_restart) {
// Let all start callbacks fail.
RunCallbacks(this, &start_callbacks_,
- SERVICE_WORKER_ERROR_START_WORKER_FAILED);
+ DeduceStartWorkerFailureReason(
+ SERVICE_WORKER_ERROR_START_WORKER_FAILED));
}
// Let all message callbacks fail (this will also fire and clear all
@@ -1047,8 +1048,10 @@ bool ServiceWorkerVersion::OnMessageReceived(const IPC::Message& message) {
void ServiceWorkerVersion::OnStartSentAndScriptEvaluated(
ServiceWorkerStatusCode status) {
- if (status != SERVICE_WORKER_OK)
- RunCallbacks(this, &start_callbacks_, status);
+ if (status != SERVICE_WORKER_OK) {
+ RunCallbacks(this, &start_callbacks_,
+ DeduceStartWorkerFailureReason(status));
+ }
}
void ServiceWorkerVersion::DispatchInstallEventAfterStartWorker(
@@ -1862,4 +1865,26 @@ void ServiceWorkerVersion::SetAllRequestTimes(const base::TimeTicks& ticks) {
requests_ = new_requests;
}
+ServiceWorkerStatusCode ServiceWorkerVersion::DeduceStartWorkerFailureReason(
+ ServiceWorkerStatusCode default_code) {
+ if (ping_state_ == PING_TIMED_OUT)
+ return SERVICE_WORKER_ERROR_TIMEOUT;
+
+ const net::URLRequestStatus& main_script_status =
+ script_cache_map()->main_script_status();
+ if (main_script_status.status() != net::URLRequestStatus::SUCCESS) {
+ switch (main_script_status.error()) {
+ case net::ERR_INSECURE_RESPONSE:
+ case net::ERR_UNSAFE_REDIRECT:
+ return SERVICE_WORKER_ERROR_SECURITY;
+ case net::ERR_ABORTED:
+ return SERVICE_WORKER_ERROR_ABORT;
+ default:
+ return SERVICE_WORKER_ERROR_NETWORK;
+ }
+ }
+
+ return default_code;
+}
+
} // namespace content
« no previous file with comments | « content/browser/service_worker/service_worker_version.h ('k') | content/common/service_worker/service_worker_status_code.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698