| 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 22 matching lines...) Expand all Loading... |
| 33 #include "content/common/service_worker/embedded_worker_messages.h" | 33 #include "content/common/service_worker/embedded_worker_messages.h" |
| 34 #include "content/common/service_worker/service_worker_messages.h" | 34 #include "content/common/service_worker/service_worker_messages.h" |
| 35 #include "content/public/common/push_event_payload.h" | 35 #include "content/public/common/push_event_payload.h" |
| 36 #include "content/public/common/referrer.h" | 36 #include "content/public/common/referrer.h" |
| 37 #include "content/public/renderer/content_renderer_client.h" | 37 #include "content/public/renderer/content_renderer_client.h" |
| 38 #include "content/public/renderer/document_state.h" | 38 #include "content/public/renderer/document_state.h" |
| 39 #include "content/renderer/background_sync/background_sync_client_impl.h" | 39 #include "content/renderer/background_sync/background_sync_client_impl.h" |
| 40 #include "content/renderer/devtools/devtools_agent.h" | 40 #include "content/renderer/devtools/devtools_agent.h" |
| 41 #include "content/renderer/render_thread_impl.h" | 41 #include "content/renderer/render_thread_impl.h" |
| 42 #include "content/renderer/service_worker/embedded_worker_dispatcher.h" | 42 #include "content/renderer/service_worker/embedded_worker_dispatcher.h" |
| 43 #include "content/renderer/service_worker/embedded_worker_instance_client_impl.h
" |
| 43 #include "content/renderer/service_worker/service_worker_type_util.h" | 44 #include "content/renderer/service_worker/service_worker_type_util.h" |
| 44 #include "ipc/ipc_message.h" | 45 #include "ipc/ipc_message.h" |
| 45 #include "ipc/ipc_message_macros.h" | 46 #include "ipc/ipc_message_macros.h" |
| 46 #include "mojo/public/cpp/bindings/interface_request.h" | 47 #include "mojo/public/cpp/bindings/interface_request.h" |
| 47 #include "services/shell/public/cpp/interface_provider.h" | 48 #include "services/shell/public/cpp/interface_provider.h" |
| 48 #include "services/shell/public/cpp/interface_registry.h" | 49 #include "services/shell/public/cpp/interface_registry.h" |
| 49 #include "third_party/WebKit/public/platform/URLConversion.h" | 50 #include "third_party/WebKit/public/platform/URLConversion.h" |
| 50 #include "third_party/WebKit/public/platform/WebMessagePortChannel.h" | 51 #include "third_party/WebKit/public/platform/WebMessagePortChannel.h" |
| 51 #include "third_party/WebKit/public/platform/WebReferrerPolicy.h" | 52 #include "third_party/WebKit/public/platform/WebReferrerPolicy.h" |
| 52 #include "third_party/WebKit/public/platform/WebSecurityOrigin.h" | 53 #include "third_party/WebKit/public/platform/WebSecurityOrigin.h" |
| (...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 214 ServiceWorkerContextClient* | 215 ServiceWorkerContextClient* |
| 215 ServiceWorkerContextClient::ThreadSpecificInstance() { | 216 ServiceWorkerContextClient::ThreadSpecificInstance() { |
| 216 return g_worker_client_tls.Pointer()->Get(); | 217 return g_worker_client_tls.Pointer()->Get(); |
| 217 } | 218 } |
| 218 | 219 |
| 219 ServiceWorkerContextClient::ServiceWorkerContextClient( | 220 ServiceWorkerContextClient::ServiceWorkerContextClient( |
| 220 int embedded_worker_id, | 221 int embedded_worker_id, |
| 221 int64_t service_worker_version_id, | 222 int64_t service_worker_version_id, |
| 222 const GURL& service_worker_scope, | 223 const GURL& service_worker_scope, |
| 223 const GURL& script_url, | 224 const GURL& script_url, |
| 224 int worker_devtools_agent_route_id) | 225 int worker_devtools_agent_route_id, |
| 226 std::unique_ptr<EmbeddedWorkerInstanceClientImpl> embedded_worker) |
| 225 : embedded_worker_id_(embedded_worker_id), | 227 : embedded_worker_id_(embedded_worker_id), |
| 226 service_worker_version_id_(service_worker_version_id), | 228 service_worker_version_id_(service_worker_version_id), |
| 227 service_worker_scope_(service_worker_scope), | 229 service_worker_scope_(service_worker_scope), |
| 228 script_url_(script_url), | 230 script_url_(script_url), |
| 229 worker_devtools_agent_route_id_(worker_devtools_agent_route_id), | 231 worker_devtools_agent_route_id_(worker_devtools_agent_route_id), |
| 230 sender_(ChildThreadImpl::current()->thread_safe_sender()), | 232 sender_(ChildThreadImpl::current()->thread_safe_sender()), |
| 231 main_thread_task_runner_(base::ThreadTaskRunnerHandle::Get()), | 233 main_thread_task_runner_(base::ThreadTaskRunnerHandle::Get()), |
| 232 proxy_(nullptr) { | 234 proxy_(nullptr), |
| 235 embedded_worker_(std::move(embedded_worker)) { |
| 233 TRACE_EVENT_ASYNC_BEGIN0("ServiceWorker", | 236 TRACE_EVENT_ASYNC_BEGIN0("ServiceWorker", |
| 234 "ServiceWorkerContextClient::StartingWorkerContext", | 237 "ServiceWorkerContextClient::StartingWorkerContext", |
| 235 this); | 238 this); |
| 236 TRACE_EVENT_ASYNC_STEP_INTO0( | 239 TRACE_EVENT_ASYNC_STEP_INTO0( |
| 237 "ServiceWorker", | 240 "ServiceWorker", |
| 238 "ServiceWorkerContextClient::StartingWorkerContext", | 241 "ServiceWorkerContextClient::StartingWorkerContext", |
| 239 this, | 242 this, |
| 240 "PrepareWorker"); | 243 "PrepareWorker"); |
| 241 } | 244 } |
| 242 | 245 |
| (...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 434 // this client. | 437 // this client. |
| 435 g_worker_client_tls.Pointer()->Set(NULL); | 438 g_worker_client_tls.Pointer()->Set(NULL); |
| 436 | 439 |
| 437 GetContentClient()->renderer()->WillDestroyServiceWorkerContextOnWorkerThread( | 440 GetContentClient()->renderer()->WillDestroyServiceWorkerContextOnWorkerThread( |
| 438 context, embedded_worker_id_, script_url_); | 441 context, embedded_worker_id_, script_url_); |
| 439 } | 442 } |
| 440 | 443 |
| 441 void ServiceWorkerContextClient::workerContextDestroyed() { | 444 void ServiceWorkerContextClient::workerContextDestroyed() { |
| 442 DCHECK(g_worker_client_tls.Pointer()->Get() == NULL); | 445 DCHECK(g_worker_client_tls.Pointer()->Get() == NULL); |
| 443 | 446 |
| 447 // Check if mojo is enabled |
| 448 if (embedded_worker_) { |
| 449 main_thread_task_runner_->PostTask( |
| 450 FROM_HERE, |
| 451 base::Bind(&EmbeddedWorkerInstanceClientImpl::StopWorkerCompleted, |
| 452 base::Passed(std::move(embedded_worker_)))); |
| 453 return; |
| 454 } |
| 455 |
| 444 // Now we should be able to free the WebEmbeddedWorker container on the | 456 // Now we should be able to free the WebEmbeddedWorker container on the |
| 445 // main thread. | 457 // main thread. |
| 446 main_thread_task_runner_->PostTask( | 458 main_thread_task_runner_->PostTask( |
| 447 FROM_HERE, | 459 FROM_HERE, |
| 448 base::Bind(&CallWorkerContextDestroyedOnMainThread, | 460 base::Bind(&CallWorkerContextDestroyedOnMainThread, |
| 449 embedded_worker_id_)); | 461 embedded_worker_id_)); |
| 450 } | 462 } |
| 451 | 463 |
| 452 void ServiceWorkerContextClient::reportException( | 464 void ServiceWorkerContextClient::reportException( |
| 453 const blink::WebString& error_message, | 465 const blink::WebString& error_message, |
| (...skipping 603 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1057 } | 1069 } |
| 1058 | 1070 |
| 1059 base::WeakPtr<ServiceWorkerContextClient> | 1071 base::WeakPtr<ServiceWorkerContextClient> |
| 1060 ServiceWorkerContextClient::GetWeakPtr() { | 1072 ServiceWorkerContextClient::GetWeakPtr() { |
| 1061 DCHECK(worker_task_runner_->RunsTasksOnCurrentThread()); | 1073 DCHECK(worker_task_runner_->RunsTasksOnCurrentThread()); |
| 1062 DCHECK(context_); | 1074 DCHECK(context_); |
| 1063 return context_->weak_factory.GetWeakPtr(); | 1075 return context_->weak_factory.GetWeakPtr(); |
| 1064 } | 1076 } |
| 1065 | 1077 |
| 1066 } // namespace content | 1078 } // namespace content |
| OLD | NEW |