Chromium Code Reviews| 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 b4ce1c924ba0ea8e7222fec9d2009c05b4ada234..115adefa7246980afde665f1be8e1883b07f9df5 100644 |
| --- a/content/browser/service_worker/service_worker_version.cc |
| +++ b/content/browser/service_worker/service_worker_version.cc |
| @@ -892,6 +892,7 @@ void ServiceWorkerVersion::OnReportConsoleMessage(int source_identifier, |
| bool ServiceWorkerVersion::OnMessageReceived(const IPC::Message& message) { |
| bool handled = true; |
| IPC_BEGIN_MESSAGE_MAP(ServiceWorkerVersion, message) |
| + IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_GetClient, OnGetClient) |
| IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_GetClients, |
| OnGetClients) |
| IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_OpenWindow, |
| @@ -944,6 +945,32 @@ void ServiceWorkerVersion::DispatchExtendableMessageEventAfterStartWorker( |
| request_id, message, sent_message_ports, new_routing_ids)); |
| } |
| +void ServiceWorkerVersion::OnGetClient(int request_id, |
| + const std::string& client_uuid) { |
| + TRACE_EVENT_ASYNC_BEGIN1("ServiceWorker", "ServiceWorkerVersion::OnGetClient", |
| + request_id, "client_uuid", client_uuid); |
| + service_worker_client_utils::GetClient( |
| + weak_factory_.GetWeakPtr(), client_uuid, context_, |
| + base::Bind(&ServiceWorkerVersion::OnGetClientFinished, |
| + weak_factory_.GetWeakPtr(), request_id)); |
| +} |
| + |
| +void ServiceWorkerVersion::OnGetClientFinished( |
| + int request_id, |
| + const ServiceWorkerClientInfo& client) { |
| + DCHECK_CURRENTLY_ON(BrowserThread::IO); |
| + TRACE_EVENT_ASYNC_END1("ServiceWorker", "ServiceWorkerVersion::OnGetClient", |
| + request_id, "client_type", client.client_type); |
| + |
| + // When Clients.matchAll() is called on the script evaluation phase, the |
|
nhiroki
2016/02/17 02:40:28
s/matchAll()/get()/
jungkees
2016/02/17 14:01:12
Done.
|
| + // running status can be STARTING here. |
| + if (running_status() != STARTING && running_status() != RUNNING) |
| + return; |
| + |
| + embedded_worker_->SendMessage( |
| + ServiceWorkerMsg_DidGetClient(request_id, client)); |
| +} |
| + |
| void ServiceWorkerVersion::OnGetClients( |
| int request_id, |
| const ServiceWorkerClientQueryOptions& options) { |