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

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

Issue 845313004: Service Worker: Improve error messages from register(). (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: git-cl format Created 5 years, 11 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 dae682664ae7e1196b1cc237725416d67fefdbc9..635496830bf58154c9d7685c79a394efe665dd97 100644
--- a/content/browser/service_worker/service_worker_register_job.cc
+++ b/content/browser/service_worker/service_worker_register_job.cc
@@ -12,6 +12,7 @@
#include "content/browser/service_worker/service_worker_registration.h"
#include "content/browser/service_worker/service_worker_storage.h"
#include "content/browser/service_worker/service_worker_utils.h"
+#include "content/common/service_worker/service_worker_types.h"
#include "net/base/net_errors.h"
namespace content {
@@ -71,8 +72,9 @@ void ServiceWorkerRegisterJob::AddCallback(
provider_host->AddScopedProcessReferenceToPattern(pattern_);
return;
}
- RunSoon(base::Bind(
- callback, promise_resolved_status_, promise_resolved_registration_));
+ RunSoon(base::Bind(callback, promise_resolved_status_,
+ promise_resolved_status_message_,
+ promise_resolved_registration_));
}
void ServiceWorkerRegisterJob::Start() {
@@ -98,7 +100,7 @@ void ServiceWorkerRegisterJob::Start() {
void ServiceWorkerRegisterJob::Abort() {
SetPhase(ABORT);
- CompleteInternal(SERVICE_WORKER_ERROR_ABORT);
+ CompleteInternal(SERVICE_WORKER_ERROR_ABORT, std::string());
// Don't have to call FinishJob() because the caller takes care of removing
// the jobs from the queue.
}
@@ -119,7 +121,7 @@ RegistrationJobType ServiceWorkerRegisterJob::GetType() const {
void ServiceWorkerRegisterJob::DoomInstallingWorker() {
doom_installing_worker_ = true;
if (phase_ == INSTALL)
- Complete(SERVICE_WORKER_ERROR_INSTALL_WORKER_FAILED);
+ Complete(SERVICE_WORKER_ERROR_INSTALL_WORKER_FAILED, std::string());
}
ServiceWorkerRegisterJob::Internal::Internal() {}
@@ -273,7 +275,6 @@ void ServiceWorkerRegisterJob::RegisterAndContinue(
ServiceWorkerStatusCode status) {
SetPhase(REGISTER);
if (status != SERVICE_WORKER_OK) {
- // Abort this registration job.
Complete(status);
return;
}
@@ -309,7 +310,7 @@ void ServiceWorkerRegisterJob::ContinueWithRegistrationForSameScriptUrl(
// either case.
DCHECK(!existing_registration->installing_version());
if (existing_registration->active_version()) {
- ResolvePromise(status, existing_registration.get());
+ ResolvePromise(status, std::string(), existing_registration.get());
Complete(SERVICE_WORKER_OK);
return;
}
@@ -352,6 +353,7 @@ void ServiceWorkerRegisterJob::OnStartWorkerFinished(
// be updated to a more specific one.
const net::URLRequestStatus& main_script_status =
new_version()->script_cache_map()->main_script_status();
+ std::string message;
if (main_script_status.status() != net::URLRequestStatus::SUCCESS) {
switch (main_script_status.error()) {
case net::ERR_INSECURE_RESPONSE:
@@ -364,8 +366,11 @@ void ServiceWorkerRegisterJob::OnStartWorkerFinished(
default:
status = SERVICE_WORKER_ERROR_NETWORK;
}
+ message = new_version()->script_cache_map()->main_script_status_message();
+ if (message.empty())
+ message = kFetchScriptError;
}
- Complete(status);
+ Complete(status, message);
}
// This function corresponds to the spec's [[Install]] algorithm.
@@ -381,7 +386,7 @@ void ServiceWorkerRegisterJob::InstallAndContinue() {
new_version()->SetStatus(ServiceWorkerVersion::INSTALLING);
// "Resolve registrationPromise with registration."
- ResolvePromise(SERVICE_WORKER_OK, registration());
+ ResolvePromise(SERVICE_WORKER_OK, std::string(), registration());
// "Fire a simple event named updatefound..."
registration()->NotifyUpdateFound();
@@ -450,12 +455,18 @@ void ServiceWorkerRegisterJob::OnStoreRegistrationComplete(
}
void ServiceWorkerRegisterJob::Complete(ServiceWorkerStatusCode status) {
- CompleteInternal(status);
+ Complete(status, std::string());
+}
+
+void ServiceWorkerRegisterJob::Complete(ServiceWorkerStatusCode status,
+ const std::string& status_message) {
+ CompleteInternal(status, status_message);
context_->job_coordinator()->FinishJob(pattern_, this);
}
void ServiceWorkerRegisterJob::CompleteInternal(
- ServiceWorkerStatusCode status) {
+ ServiceWorkerStatusCode status,
+ const std::string& status_message) {
SetPhase(COMPLETE);
if (status != SERVICE_WORKER_OK) {
if (registration()) {
@@ -473,7 +484,7 @@ void ServiceWorkerRegisterJob::CompleteInternal(
}
}
if (!is_promise_resolved_)
- ResolvePromise(status, NULL);
+ ResolvePromise(status, status_message, NULL);
}
DCHECK(callbacks_.empty());
if (registration()) {
@@ -486,16 +497,18 @@ void ServiceWorkerRegisterJob::CompleteInternal(
void ServiceWorkerRegisterJob::ResolvePromise(
ServiceWorkerStatusCode status,
+ const std::string& status_message,
ServiceWorkerRegistration* registration) {
DCHECK(!is_promise_resolved_);
is_promise_resolved_ = true;
promise_resolved_status_ = status;
+ promise_resolved_status_message_ = status_message,
promise_resolved_registration_ = registration;
for (std::vector<RegistrationCallback>::iterator it = callbacks_.begin();
it != callbacks_.end();
++it) {
- it->Run(status, registration);
+ it->Run(status, status_message, registration);
}
callbacks_.clear();
}
@@ -547,7 +560,7 @@ void ServiceWorkerRegisterJob::OnCompareScriptResourcesComplete(
context_->storage()->UpdateLastUpdateCheckTime(registration());
}
- ResolvePromise(SERVICE_WORKER_OK, registration());
+ ResolvePromise(SERVICE_WORKER_OK, std::string(), registration());
Complete(SERVICE_WORKER_ERROR_EXISTS);
return;
}

Powered by Google App Engine
This is Rietveld 408576698