Index: content/browser/service_worker/service_worker_dispatcher_host.cc |
diff --git a/content/browser/service_worker/service_worker_dispatcher_host.cc b/content/browser/service_worker/service_worker_dispatcher_host.cc |
index b1c8b4d57f0ee302383bde3b56e1ce7b912cca29..fd9d52359356ecbbba92ad5ffa5180c8651964c2 100644 |
--- a/content/browser/service_worker/service_worker_dispatcher_host.cc |
+++ b/content/browser/service_worker/service_worker_dispatcher_host.cc |
@@ -161,6 +161,8 @@ bool ServiceWorkerDispatcherHost::OnMessageReceived( |
OnUnregisterServiceWorker) |
IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_GetRegistration, |
OnGetRegistration) |
+ IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_GetRegistrationForReady, |
+ OnGetRegistrationForReady) |
IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_ProviderCreated, |
OnProviderCreated) |
IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_ProviderDestroyed, |
@@ -490,6 +492,29 @@ void ServiceWorkerDispatcherHost::OnGetRegistration( |
request_id)); |
} |
+void ServiceWorkerDispatcherHost::OnGetRegistrationForReady( |
+ int thread_id, |
+ int request_id, |
+ int provider_id) { |
+ TRACE_EVENT0("ServiceWorker", |
+ "ServiceWorkerDispatcherHost::OnGetRegistrationForReady"); |
+ if (!GetContext()) |
+ return; |
+ ServiceWorkerProviderHost* provider_host = |
+ GetContext()->GetProviderHost(render_process_id_, provider_id); |
+ if (!provider_host || !provider_host->IsContextAlive()) |
+ return; |
+ |
+ TRACE_EVENT_ASYNC_BEGIN0( |
+ "ServiceWorker", |
+ "ServiceWorkerDispatcherHost::GetRegistrationForReady", |
+ request_id); |
+ |
+ provider_host->GetRegistrationForReady( |
falken
2015/02/16 09:18:29
GetRegistrationForReady does a DCHECK that it hasn
xiang
2015/02/26 06:52:14
Done. I put it into GetRegistrationForReadyComplet
|
+ base::Bind(&ServiceWorkerDispatcherHost::GetRegistrationForReadyComplete, |
+ this, thread_id, request_id, provider_host->AsWeakPtr())); |
+} |
+ |
void ServiceWorkerDispatcherHost::OnPostMessageToWorker( |
int handle_id, |
const base::string16& message, |
@@ -900,6 +925,27 @@ void ServiceWorkerDispatcherHost::GetRegistrationComplete( |
thread_id, request_id, info, attrs)); |
} |
+void ServiceWorkerDispatcherHost::GetRegistrationForReadyComplete( |
+ int thread_id, |
+ int request_id, |
+ base::WeakPtr<ServiceWorkerProviderHost> provider_host, |
+ ServiceWorkerRegistration* registration) { |
+ DCHECK(registration); |
+ TRACE_EVENT_ASYNC_END1("ServiceWorker", |
+ "ServiceWorkerDispatcherHost::GetRegistrationForReady", |
+ request_id, |
+ "Registration ID", |
+ registration ? registration->id() |
+ : kInvalidServiceWorkerRegistrationId); |
+ |
+ ServiceWorkerRegistrationObjectInfo info; |
+ ServiceWorkerVersionAttributes attrs; |
+ GetRegistrationObjectInfoAndVersionAttributes( |
+ provider_host, registration, &info, &attrs); |
+ Send(new ServiceWorkerMsg_DidGetRegistrationForReady( |
+ thread_id, request_id, info, attrs)); |
+} |
+ |
void ServiceWorkerDispatcherHost::SendRegistrationError( |
int thread_id, |
int request_id, |