OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "content/renderer/service_worker/service_worker_context_client.h" | 5 #include "content/renderer/service_worker/service_worker_context_client.h" |
6 | 6 |
7 #include <memory> | 7 #include <memory> |
8 #include <utility> | 8 #include <utility> |
9 | 9 |
10 #include "base/lazy_instance.h" | 10 #include "base/lazy_instance.h" |
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
169 IDMap<blink::WebServiceWorkerClientsClaimCallbacks, IDMapOwnPointer>; | 169 IDMap<blink::WebServiceWorkerClientsClaimCallbacks, IDMapOwnPointer>; |
170 using ClientCallbacksMap = | 170 using ClientCallbacksMap = |
171 IDMap<blink::WebServiceWorkerClientCallbacks, IDMapOwnPointer>; | 171 IDMap<blink::WebServiceWorkerClientCallbacks, IDMapOwnPointer>; |
172 using SkipWaitingCallbacksMap = | 172 using SkipWaitingCallbacksMap = |
173 IDMap<blink::WebServiceWorkerSkipWaitingCallbacks, IDMapOwnPointer>; | 173 IDMap<blink::WebServiceWorkerSkipWaitingCallbacks, IDMapOwnPointer>; |
174 using SyncEventCallbacksMap = | 174 using SyncEventCallbacksMap = |
175 IDMap<const base::Callback<void(blink::mojom::ServiceWorkerEventStatus)>, | 175 IDMap<const base::Callback<void(blink::mojom::ServiceWorkerEventStatus)>, |
176 IDMapOwnPointer>; | 176 IDMapOwnPointer>; |
177 | 177 |
178 explicit WorkerContextData(ServiceWorkerContextClient* owner) | 178 explicit WorkerContextData(ServiceWorkerContextClient* owner) |
179 : weak_factory(owner), proxy_weak_factory(owner->proxy_) {} | 179 : interface_registry(nullptr), |
| 180 weak_factory(owner), |
| 181 proxy_weak_factory(owner->proxy_) {} |
180 | 182 |
181 ~WorkerContextData() { | 183 ~WorkerContextData() { |
182 DCHECK(thread_checker.CalledOnValidThread()); | 184 DCHECK(thread_checker.CalledOnValidThread()); |
183 } | 185 } |
184 | 186 |
185 // Pending callbacks for GetClientDocuments(). | 187 // Pending callbacks for GetClientDocuments(). |
186 ClientsCallbacksMap clients_callbacks; | 188 ClientsCallbacksMap clients_callbacks; |
187 | 189 |
188 // Pending callbacks for OpenWindow() and FocusClient(). | 190 // Pending callbacks for OpenWindow() and FocusClient(). |
189 ClientCallbacksMap client_callbacks; | 191 ClientCallbacksMap client_callbacks; |
190 | 192 |
191 // Pending callbacks for SkipWaiting(). | 193 // Pending callbacks for SkipWaiting(). |
192 SkipWaitingCallbacksMap skip_waiting_callbacks; | 194 SkipWaitingCallbacksMap skip_waiting_callbacks; |
193 | 195 |
194 // Pending callbacks for ClaimClients(). | 196 // Pending callbacks for ClaimClients(). |
195 ClaimClientsCallbacksMap claim_clients_callbacks; | 197 ClaimClientsCallbacksMap claim_clients_callbacks; |
196 | 198 |
197 // Pending callbacks for Background Sync Events | 199 // Pending callbacks for Background Sync Events |
198 SyncEventCallbacksMap sync_event_callbacks; | 200 SyncEventCallbacksMap sync_event_callbacks; |
199 | 201 |
200 ServiceRegistryImpl service_registry; | 202 shell::InterfaceRegistry interface_registry; |
| 203 shell::InterfaceProvider remote_interfaces; |
201 | 204 |
202 base::ThreadChecker thread_checker; | 205 base::ThreadChecker thread_checker; |
203 base::WeakPtrFactory<ServiceWorkerContextClient> weak_factory; | 206 base::WeakPtrFactory<ServiceWorkerContextClient> weak_factory; |
204 base::WeakPtrFactory<blink::WebServiceWorkerContextProxy> proxy_weak_factory; | 207 base::WeakPtrFactory<blink::WebServiceWorkerContextProxy> proxy_weak_factory; |
205 }; | 208 }; |
206 | 209 |
207 ServiceWorkerContextClient* | 210 ServiceWorkerContextClient* |
208 ServiceWorkerContextClient::ThreadSpecificInstance() { | 211 ServiceWorkerContextClient::ThreadSpecificInstance() { |
209 return g_worker_client_tls.Pointer()->Get(); | 212 return g_worker_client_tls.Pointer()->Get(); |
210 } | 213 } |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
266 OnNavigateClientError) | 269 OnNavigateClientError) |
267 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_DidSkipWaiting, OnDidSkipWaiting) | 270 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_DidSkipWaiting, OnDidSkipWaiting) |
268 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_DidClaimClients, OnDidClaimClients) | 271 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_DidClaimClients, OnDidClaimClients) |
269 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_ClaimClientsError, OnClaimClientsError) | 272 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_ClaimClientsError, OnClaimClientsError) |
270 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_Ping, OnPing); | 273 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_Ping, OnPing); |
271 IPC_MESSAGE_UNHANDLED(handled = false) | 274 IPC_MESSAGE_UNHANDLED(handled = false) |
272 IPC_END_MESSAGE_MAP() | 275 IPC_END_MESSAGE_MAP() |
273 DCHECK(handled); | 276 DCHECK(handled); |
274 } | 277 } |
275 | 278 |
276 void ServiceWorkerContextClient::BindServiceRegistry( | 279 void ServiceWorkerContextClient::BindInterfaceProviders( |
277 shell::mojom::InterfaceProviderRequest services, | 280 shell::mojom::InterfaceProviderRequest request, |
278 shell::mojom::InterfaceProviderPtr exposed_services) { | 281 shell::mojom::InterfaceProviderPtr remote_interfaces) { |
279 context_->service_registry.Bind(std::move(services)); | 282 context_->interface_registry.Bind(std::move(request)); |
280 mojo::FuseInterface(context_->service_registry.TakeRemoteRequest(), | 283 context_->remote_interfaces.Bind(std::move(remote_interfaces)); |
281 exposed_services.PassInterface()); | |
282 } | 284 } |
283 | 285 |
284 blink::WebURL ServiceWorkerContextClient::scope() const { | 286 blink::WebURL ServiceWorkerContextClient::scope() const { |
285 return service_worker_scope_; | 287 return service_worker_scope_; |
286 } | 288 } |
287 | 289 |
288 void ServiceWorkerContextClient::getClient( | 290 void ServiceWorkerContextClient::getClient( |
289 const blink::WebString& id, | 291 const blink::WebString& id, |
290 blink::WebServiceWorkerClientCallbacks* callbacks) { | 292 blink::WebServiceWorkerClientCallbacks* callbacks) { |
291 DCHECK(callbacks); | 293 DCHECK(callbacks); |
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
369 // willDestroyWorkerContext. | 371 // willDestroyWorkerContext. |
370 context_.reset(new WorkerContextData(this)); | 372 context_.reset(new WorkerContextData(this)); |
371 | 373 |
372 ServiceWorkerRegistrationObjectInfo registration_info; | 374 ServiceWorkerRegistrationObjectInfo registration_info; |
373 ServiceWorkerVersionAttributes version_attrs; | 375 ServiceWorkerVersionAttributes version_attrs; |
374 provider_context_->GetAssociatedRegistration(®istration_info, | 376 provider_context_->GetAssociatedRegistration(®istration_info, |
375 &version_attrs); | 377 &version_attrs); |
376 DCHECK_NE(registration_info.registration_id, | 378 DCHECK_NE(registration_info.registration_id, |
377 kInvalidServiceWorkerRegistrationId); | 379 kInvalidServiceWorkerRegistrationId); |
378 | 380 |
379 // Register Mojo services. | 381 // Register Mojo interfaces. |
380 context_->service_registry.ServiceRegistry::AddService( | 382 context_->interface_registry.AddInterface( |
381 base::Bind(&BackgroundSyncClientImpl::Create)); | 383 base::Bind(&BackgroundSyncClientImpl::Create)); |
382 | 384 |
383 SetRegistrationInServiceWorkerGlobalScope(registration_info, version_attrs); | 385 SetRegistrationInServiceWorkerGlobalScope(registration_info, version_attrs); |
384 | 386 |
385 Send(new EmbeddedWorkerHostMsg_WorkerThreadStarted( | 387 Send(new EmbeddedWorkerHostMsg_WorkerThreadStarted( |
386 embedded_worker_id_, WorkerThread::GetCurrentId(), | 388 embedded_worker_id_, WorkerThread::GetCurrentId(), |
387 provider_context_->provider_id())); | 389 provider_context_->provider_id())); |
388 | 390 |
389 TRACE_EVENT_ASYNC_STEP_INTO0( | 391 TRACE_EVENT_ASYNC_STEP_INTO0( |
390 "ServiceWorker", | 392 "ServiceWorker", |
(...skipping 633 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1024 } | 1026 } |
1025 | 1027 |
1026 base::WeakPtr<ServiceWorkerContextClient> | 1028 base::WeakPtr<ServiceWorkerContextClient> |
1027 ServiceWorkerContextClient::GetWeakPtr() { | 1029 ServiceWorkerContextClient::GetWeakPtr() { |
1028 DCHECK(worker_task_runner_->RunsTasksOnCurrentThread()); | 1030 DCHECK(worker_task_runner_->RunsTasksOnCurrentThread()); |
1029 DCHECK(context_); | 1031 DCHECK(context_); |
1030 return context_->weak_factory.GetWeakPtr(); | 1032 return context_->weak_factory.GetWeakPtr(); |
1031 } | 1033 } |
1032 | 1034 |
1033 } // namespace content | 1035 } // namespace content |
OLD | NEW |