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 fade655ca6c776b425fb9cfb1a995e62a7a17a2b..405cf6b0e1c345fcf681c6daa0e9dcd91af1dd81 100644 |
--- a/content/browser/service_worker/service_worker_version.cc |
+++ b/content/browser/service_worker/service_worker_version.cc |
@@ -85,6 +85,29 @@ void HandleEventFinished(base::WeakPtr<ServiceWorkerVersion> version, |
callback.Run(SERVICE_WORKER_OK); |
} |
+void HandleInstallEventFinished(base::WeakPtr<ServiceWorkerVersion> version, |
kinuko
2014/03/25 11:16:49
I think we'll want to use this too for activate ev
falken
2014/03/26 07:53:56
Done.
|
+ const StatusCallback& callback, |
+ ServiceWorkerStatusCode status, |
+ const IPC::Message& message) { |
+ if (status != SERVICE_WORKER_OK) { |
+ version->SetStatus(ServiceWorkerVersion::NEW); |
+ callback.Run(status); |
+ return; |
+ } |
+ if (message.type() != ServiceWorkerHostMsg_InstallEventFinished::ID) { |
+ NOTREACHED() << "Got unexpected response for InstallEvent: " |
+ << message.type(); |
+ version->SetStatus(ServiceWorkerVersion::NEW); |
+ callback.Run(SERVICE_WORKER_ERROR_FAILED); |
+ return; |
+ } |
+ Tuple1<ServiceWorkerInstallEventResult> result; |
+ ServiceWorkerHostMsg_InstallEventFinished::Read(&message, &result); |
+ if (result.a == SERVICE_WORKER_INSTALL_EVENT_RESULT_REJECTED) |
+ status = SERVICE_WORKER_ERROR_INSTALL_WORKER_FAILED; |
+ callback.Run(status); |
+} |
+ |
void HandleFetchResponse(const ServiceWorkerVersion::FetchCallback& callback, |
ServiceWorkerStatusCode status, |
const IPC::Message& message) { |
@@ -253,9 +276,8 @@ void ServiceWorkerVersion::DispatchInstallEvent( |
SetStatus(INSTALLING); |
SendMessageAndRegisterCallback( |
ServiceWorkerMsg_InstallEvent(active_version_embedded_worker_id), |
- base::Bind(&HandleEventFinished, weak_factory_.GetWeakPtr(), |
- ServiceWorkerHostMsg_InstallEventFinished::ID, |
- callback, INSTALLED, NEW)); |
+ base::Bind( |
+ &HandleInstallEventFinished, weak_factory_.GetWeakPtr(), callback)); |
} |
void ServiceWorkerVersion::DispatchActivateEvent( |