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_client) | |
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_client_(std::move(embedded_worker_client)) { | |
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_client_) { | |
horo
2016/09/27 01:59:23
if (ServiceWorkerUtils::IsMojoForServiceWorkerEnab
shimazu
2016/10/06 03:50:51
Done.
| |
449 main_thread_task_runner_->PostTask( | |
450 FROM_HERE, | |
451 base::Bind(&EmbeddedWorkerInstanceClientImpl::StopWorkerCompleted, | |
452 base::Passed(std::move(embedded_worker_client_)))); | |
dcheng
2016/09/30 08:25:28
base::Passed(&embedded_worker_client_)
shimazu
2016/10/06 03:50:51
Done.
| |
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 |