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_dispatcher.h" | 5 #include "content/renderer/service_worker/embedded_worker_dispatcher.h" |
6 | 6 |
7 #include "base/memory/scoped_ptr.h" | 7 #include <memory> |
| 8 |
8 #include "base/metrics/histogram_macros.h" | 9 #include "base/metrics/histogram_macros.h" |
9 #include "base/strings/string16.h" | 10 #include "base/strings/string16.h" |
10 #include "base/strings/utf_string_conversions.h" | 11 #include "base/strings/utf_string_conversions.h" |
11 #include "content/child/child_process.h" | 12 #include "content/child/child_process.h" |
12 #include "content/child/scoped_child_process_reference.h" | 13 #include "content/child/scoped_child_process_reference.h" |
13 #include "content/child/thread_safe_sender.h" | 14 #include "content/child/thread_safe_sender.h" |
14 #include "content/child/worker_thread_registry.h" | 15 #include "content/child/worker_thread_registry.h" |
15 #include "content/common/devtools_messages.h" | 16 #include "content/common/devtools_messages.h" |
16 #include "content/common/service_worker/embedded_worker_messages.h" | 17 #include "content/common/service_worker/embedded_worker_messages.h" |
17 #include "content/public/common/content_client.h" | 18 #include "content/public/common/content_client.h" |
(...skipping 14 matching lines...) Expand all Loading... |
32 WorkerWrapper(blink::WebEmbeddedWorker* worker, int devtools_agent_route_id) | 33 WorkerWrapper(blink::WebEmbeddedWorker* worker, int devtools_agent_route_id) |
33 : worker_(worker), | 34 : worker_(worker), |
34 dev_tools_agent_( | 35 dev_tools_agent_( |
35 new EmbeddedWorkerDevToolsAgent(worker, devtools_agent_route_id)) {} | 36 new EmbeddedWorkerDevToolsAgent(worker, devtools_agent_route_id)) {} |
36 ~WorkerWrapper() {} | 37 ~WorkerWrapper() {} |
37 | 38 |
38 blink::WebEmbeddedWorker* worker() { return worker_.get(); } | 39 blink::WebEmbeddedWorker* worker() { return worker_.get(); } |
39 | 40 |
40 private: | 41 private: |
41 ScopedChildProcessReference process_ref_; | 42 ScopedChildProcessReference process_ref_; |
42 scoped_ptr<blink::WebEmbeddedWorker> worker_; | 43 std::unique_ptr<blink::WebEmbeddedWorker> worker_; |
43 scoped_ptr<EmbeddedWorkerDevToolsAgent> dev_tools_agent_; | 44 std::unique_ptr<EmbeddedWorkerDevToolsAgent> dev_tools_agent_; |
44 }; | 45 }; |
45 | 46 |
46 EmbeddedWorkerDispatcher::EmbeddedWorkerDispatcher() : weak_factory_(this) {} | 47 EmbeddedWorkerDispatcher::EmbeddedWorkerDispatcher() : weak_factory_(this) {} |
47 | 48 |
48 EmbeddedWorkerDispatcher::~EmbeddedWorkerDispatcher() {} | 49 EmbeddedWorkerDispatcher::~EmbeddedWorkerDispatcher() {} |
49 | 50 |
50 bool EmbeddedWorkerDispatcher::OnMessageReceived( | 51 bool EmbeddedWorkerDispatcher::OnMessageReceived( |
51 const IPC::Message& message) { | 52 const IPC::Message& message) { |
52 bool handled = true; | 53 bool handled = true; |
53 IPC_BEGIN_MESSAGE_MAP(EmbeddedWorkerDispatcher, message) | 54 IPC_BEGIN_MESSAGE_MAP(EmbeddedWorkerDispatcher, message) |
(...skipping 17 matching lines...) Expand all Loading... |
71 | 72 |
72 RenderThreadImpl::current()->thread_safe_sender()->Send( | 73 RenderThreadImpl::current()->thread_safe_sender()->Send( |
73 new EmbeddedWorkerHostMsg_WorkerStopped(embedded_worker_id)); | 74 new EmbeddedWorkerHostMsg_WorkerStopped(embedded_worker_id)); |
74 workers_.Remove(embedded_worker_id); | 75 workers_.Remove(embedded_worker_id); |
75 } | 76 } |
76 | 77 |
77 void EmbeddedWorkerDispatcher::OnStartWorker( | 78 void EmbeddedWorkerDispatcher::OnStartWorker( |
78 const EmbeddedWorkerMsg_StartWorker_Params& params) { | 79 const EmbeddedWorkerMsg_StartWorker_Params& params) { |
79 DCHECK(!workers_.Lookup(params.embedded_worker_id)); | 80 DCHECK(!workers_.Lookup(params.embedded_worker_id)); |
80 TRACE_EVENT0("ServiceWorker", "EmbeddedWorkerDispatcher::OnStartWorker"); | 81 TRACE_EVENT0("ServiceWorker", "EmbeddedWorkerDispatcher::OnStartWorker"); |
81 scoped_ptr<WorkerWrapper> wrapper( | 82 std::unique_ptr<WorkerWrapper> wrapper(new WorkerWrapper( |
82 new WorkerWrapper(blink::WebEmbeddedWorker::create( | 83 blink::WebEmbeddedWorker::create( |
83 new ServiceWorkerContextClient( | 84 new ServiceWorkerContextClient(params.embedded_worker_id, |
84 params.embedded_worker_id, | 85 params.service_worker_version_id, |
85 params.service_worker_version_id, | 86 params.scope, params.script_url, |
86 params.scope, | 87 params.worker_devtools_agent_route_id), |
87 params.script_url, | 88 NULL), |
88 params.worker_devtools_agent_route_id), | 89 params.worker_devtools_agent_route_id)); |
89 NULL), | |
90 params.worker_devtools_agent_route_id)); | |
91 | 90 |
92 blink::WebEmbeddedWorkerStartData start_data; | 91 blink::WebEmbeddedWorkerStartData start_data; |
93 start_data.scriptURL = params.script_url; | 92 start_data.scriptURL = params.script_url; |
94 start_data.userAgent = base::UTF8ToUTF16(GetContentClient()->GetUserAgent()); | 93 start_data.userAgent = base::UTF8ToUTF16(GetContentClient()->GetUserAgent()); |
95 start_data.waitForDebuggerMode = | 94 start_data.waitForDebuggerMode = |
96 params.wait_for_debugger ? | 95 params.wait_for_debugger ? |
97 blink::WebEmbeddedWorkerStartData::WaitForDebugger : | 96 blink::WebEmbeddedWorkerStartData::WaitForDebugger : |
98 blink::WebEmbeddedWorkerStartData::DontWaitForDebugger; | 97 blink::WebEmbeddedWorkerStartData::DontWaitForDebugger; |
99 start_data.v8CacheOptions = static_cast<blink::WebSettings::V8CacheOptions>( | 98 start_data.v8CacheOptions = static_cast<blink::WebSettings::V8CacheOptions>( |
100 params.settings.v8_cache_options); | 99 params.settings.v8_cache_options); |
(...skipping 27 matching lines...) Expand all Loading... |
128 "EmbeddedWorkerDispatcher::OnResumeAfterDownload"); | 127 "EmbeddedWorkerDispatcher::OnResumeAfterDownload"); |
129 WorkerWrapper* wrapper = workers_.Lookup(embedded_worker_id); | 128 WorkerWrapper* wrapper = workers_.Lookup(embedded_worker_id); |
130 if (!wrapper) { | 129 if (!wrapper) { |
131 LOG(WARNING) << "Got OnResumeAfterDownload for nonexistent worker"; | 130 LOG(WARNING) << "Got OnResumeAfterDownload for nonexistent worker"; |
132 return; | 131 return; |
133 } | 132 } |
134 wrapper->worker()->resumeAfterDownload(); | 133 wrapper->worker()->resumeAfterDownload(); |
135 } | 134 } |
136 | 135 |
137 } // namespace content | 136 } // namespace content |
OLD | NEW |