OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/embedded_worker_context_client.h" | 5 #include "content/renderer/service_worker/embedded_worker_context_client.h" |
6 | 6 |
7 #include <map> | 7 #include <map> |
8 #include <string> | 8 #include <string> |
9 | 9 |
10 #include "base/debug/trace_event.h" | 10 #include "base/debug/trace_event.h" |
11 #include "base/lazy_instance.h" | 11 #include "base/lazy_instance.h" |
12 #include "base/message_loop/message_loop_proxy.h" | 12 #include "base/message_loop/message_loop_proxy.h" |
13 #include "base/pickle.h" | 13 #include "base/pickle.h" |
14 #include "base/strings/string16.h" | 14 #include "base/strings/string16.h" |
15 #include "base/strings/utf_string_conversions.h" | 15 #include "base/strings/utf_string_conversions.h" |
16 #include "base/threading/thread_local.h" | 16 #include "base/threading/thread_local.h" |
17 #include "content/child/request_extra_data.h" | 17 #include "content/child/request_extra_data.h" |
18 #include "content/child/service_worker/service_worker_network_provider.h" | 18 #include "content/child/service_worker/service_worker_network_provider.h" |
| 19 #include "content/child/service_worker/web_cross_origin_service_worker_client_im
pl.h" |
19 #include "content/child/thread_safe_sender.h" | 20 #include "content/child/thread_safe_sender.h" |
20 #include "content/child/worker_task_runner.h" | 21 #include "content/child/worker_task_runner.h" |
21 #include "content/child/worker_thread_task_runner.h" | 22 #include "content/child/worker_thread_task_runner.h" |
22 #include "content/common/devtools_messages.h" | 23 #include "content/common/devtools_messages.h" |
23 #include "content/common/service_worker/embedded_worker_messages.h" | 24 #include "content/common/service_worker/embedded_worker_messages.h" |
24 #include "content/common/service_worker/service_worker_types.h" | 25 #include "content/common/service_worker/service_worker_types.h" |
25 #include "content/public/renderer/document_state.h" | 26 #include "content/public/renderer/document_state.h" |
26 #include "content/renderer/render_thread_impl.h" | 27 #include "content/renderer/render_thread_impl.h" |
27 #include "content/renderer/service_worker/embedded_worker_dispatcher.h" | 28 #include "content/renderer/service_worker/embedded_worker_dispatcher.h" |
28 #include "content/renderer/service_worker/service_worker_script_context.h" | 29 #include "content/renderer/service_worker/service_worker_script_context.h" |
(...skipping 301 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
330 blink::WebServiceWorkerEventResult result) { | 331 blink::WebServiceWorkerEventResult result) { |
331 DCHECK(script_context_); | 332 DCHECK(script_context_); |
332 script_context_->DidHandlePushEvent(request_id, result); | 333 script_context_->DidHandlePushEvent(request_id, result); |
333 } | 334 } |
334 | 335 |
335 void EmbeddedWorkerContextClient::didHandleSyncEvent(int request_id) { | 336 void EmbeddedWorkerContextClient::didHandleSyncEvent(int request_id) { |
336 DCHECK(script_context_); | 337 DCHECK(script_context_); |
337 script_context_->DidHandleSyncEvent(request_id); | 338 script_context_->DidHandleSyncEvent(request_id); |
338 } | 339 } |
339 | 340 |
| 341 void EmbeddedWorkerContextClient::didHandleCrossOriginConnectEvent( |
| 342 int request_id, |
| 343 bool accept_connect) { |
| 344 DCHECK(script_context_); |
| 345 script_context_->DidHandleCrossOriginConnectEvent(request_id, accept_connect); |
| 346 } |
| 347 |
340 blink::WebServiceWorkerNetworkProvider* | 348 blink::WebServiceWorkerNetworkProvider* |
341 EmbeddedWorkerContextClient::createServiceWorkerNetworkProvider( | 349 EmbeddedWorkerContextClient::createServiceWorkerNetworkProvider( |
342 blink::WebDataSource* data_source) { | 350 blink::WebDataSource* data_source) { |
343 // Create a content::ServiceWorkerNetworkProvider for this data source so | 351 // Create a content::ServiceWorkerNetworkProvider for this data source so |
344 // we can observe its requests. | 352 // we can observe its requests. |
345 scoped_ptr<ServiceWorkerNetworkProvider> provider( | 353 scoped_ptr<ServiceWorkerNetworkProvider> provider( |
346 new ServiceWorkerNetworkProvider()); | 354 new ServiceWorkerNetworkProvider()); |
347 | 355 |
348 // Tell the network provider about which version to load. | 356 // Tell the network provider about which version to load. |
349 provider->SetServiceWorkerVersionId(service_worker_version_id_); | 357 provider->SetServiceWorkerVersionId(service_worker_version_id_); |
(...skipping 11 matching lines...) Expand all Loading... |
361 | 369 |
362 void EmbeddedWorkerContextClient::postMessageToClient( | 370 void EmbeddedWorkerContextClient::postMessageToClient( |
363 int client_id, | 371 int client_id, |
364 const blink::WebString& message, | 372 const blink::WebString& message, |
365 blink::WebMessagePortChannelArray* channels) { | 373 blink::WebMessagePortChannelArray* channels) { |
366 DCHECK(script_context_); | 374 DCHECK(script_context_); |
367 script_context_->PostMessageToDocument(client_id, message, | 375 script_context_->PostMessageToDocument(client_id, message, |
368 make_scoped_ptr(channels)); | 376 make_scoped_ptr(channels)); |
369 } | 377 } |
370 | 378 |
| 379 void EmbeddedWorkerContextClient::postCrossOriginMessage( |
| 380 blink::WebCrossOriginServiceWorkerClient* client, |
| 381 const blink::WebString& message, |
| 382 blink::WebMessagePortChannelArray* channels) { |
| 383 DCHECK(script_context_); |
| 384 script_context_->PostCrossOriginMessage( |
| 385 static_cast<WebCrossOriginServiceWorkerClientImpl*>(client), message, |
| 386 make_scoped_ptr(channels)); |
| 387 } |
| 388 |
371 void EmbeddedWorkerContextClient::OnMessageToWorker( | 389 void EmbeddedWorkerContextClient::OnMessageToWorker( |
372 int thread_id, | 390 int thread_id, |
373 int embedded_worker_id, | 391 int embedded_worker_id, |
374 const IPC::Message& message) { | 392 const IPC::Message& message) { |
375 if (!script_context_) | 393 if (!script_context_) |
376 return; | 394 return; |
377 DCHECK_EQ(embedded_worker_id_, embedded_worker_id); | 395 DCHECK_EQ(embedded_worker_id_, embedded_worker_id); |
378 script_context_->OnMessageReceived(message); | 396 script_context_->OnMessageReceived(message); |
379 } | 397 } |
380 | 398 |
381 void EmbeddedWorkerContextClient::SendWorkerStarted() { | 399 void EmbeddedWorkerContextClient::SendWorkerStarted() { |
382 DCHECK(worker_task_runner_->RunsTasksOnCurrentThread()); | 400 DCHECK(worker_task_runner_->RunsTasksOnCurrentThread()); |
383 TRACE_EVENT_ASYNC_END0("ServiceWorker", | 401 TRACE_EVENT_ASYNC_END0("ServiceWorker", |
384 "EmbeddedWorkerContextClient::StartingWorkerContext", | 402 "EmbeddedWorkerContextClient::StartingWorkerContext", |
385 this); | 403 this); |
386 Send(new EmbeddedWorkerHostMsg_WorkerStarted(embedded_worker_id_)); | 404 Send(new EmbeddedWorkerHostMsg_WorkerStarted(embedded_worker_id_)); |
387 } | 405 } |
388 | 406 |
389 } // namespace content | 407 } // namespace content |
OLD | NEW |