Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(200)

Side by Side Diff: content/renderer/service_worker/embedded_worker_dispatcher.cc

Issue 2630273002: ServiceWorker: mojofy ResumeAfterDownload and AddMessageToConsole (Closed)
Patch Set: s/is/was/ , add :: before blink and remove unnecessary include Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 <memory> 7 #include <memory>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/memory/ptr_util.h" 10 #include "base/memory/ptr_util.h"
11 #include "base/metrics/histogram_macros.h" 11 #include "base/metrics/histogram_macros.h"
12 #include "base/strings/string16.h" 12 #include "base/strings/string16.h"
13 #include "base/strings/utf_string_conversions.h" 13 #include "base/strings/utf_string_conversions.h"
14 #include "content/child/child_process.h" 14 #include "content/child/child_process.h"
15 #include "content/child/thread_safe_sender.h" 15 #include "content/child/thread_safe_sender.h"
16 #include "content/child/worker_thread_registry.h" 16 #include "content/child/worker_thread_registry.h"
17 #include "content/common/devtools_messages.h" 17 #include "content/common/devtools_messages.h"
18 #include "content/common/service_worker/embedded_worker_messages.h" 18 #include "content/common/service_worker/embedded_worker_messages.h"
19 #include "content/public/common/content_client.h" 19 #include "content/public/common/content_client.h"
20 #include "content/renderer/render_thread_impl.h" 20 #include "content/renderer/render_thread_impl.h"
21 #include "content/renderer/service_worker/embedded_worker_devtools_agent.h" 21 #include "content/renderer/service_worker/embedded_worker_devtools_agent.h"
22 #include "content/renderer/service_worker/embedded_worker_instance_client_impl.h " 22 #include "content/renderer/service_worker/embedded_worker_instance_client_impl.h "
23 #include "content/renderer/service_worker/service_worker_context_client.h" 23 #include "content/renderer/service_worker/service_worker_context_client.h"
24 #include "third_party/WebKit/public/platform/WebString.h" 24 #include "third_party/WebKit/public/platform/WebString.h"
25 #include "third_party/WebKit/public/platform/WebURL.h" 25 #include "third_party/WebKit/public/platform/WebURL.h"
26 #include "third_party/WebKit/public/web/WebConsoleMessage.h"
27 #include "third_party/WebKit/public/web/WebEmbeddedWorker.h" 26 #include "third_party/WebKit/public/web/WebEmbeddedWorker.h"
28 #include "third_party/WebKit/public/web/WebEmbeddedWorkerStartData.h" 27 #include "third_party/WebKit/public/web/WebEmbeddedWorkerStartData.h"
29 28
30 namespace content { 29 namespace content {
31 30
32 EmbeddedWorkerDispatcher::WorkerWrapper::WorkerWrapper( 31 EmbeddedWorkerDispatcher::WorkerWrapper::WorkerWrapper(
33 blink::WebEmbeddedWorker* worker, 32 blink::WebEmbeddedWorker* worker,
34 int devtools_agent_route_id) 33 int devtools_agent_route_id)
35 : worker_(worker), 34 : worker_(worker),
36 devtools_agent_( 35 devtools_agent_(
37 new EmbeddedWorkerDevToolsAgent(worker, devtools_agent_route_id)) {} 36 new EmbeddedWorkerDevToolsAgent(worker, devtools_agent_route_id)) {}
38 37
39 EmbeddedWorkerDispatcher::WorkerWrapper::~WorkerWrapper() {} 38 EmbeddedWorkerDispatcher::WorkerWrapper::~WorkerWrapper() {}
40 39
41 EmbeddedWorkerDispatcher::EmbeddedWorkerDispatcher() : weak_factory_(this) {} 40 EmbeddedWorkerDispatcher::EmbeddedWorkerDispatcher() : weak_factory_(this) {}
42 41
43 EmbeddedWorkerDispatcher::~EmbeddedWorkerDispatcher() {} 42 EmbeddedWorkerDispatcher::~EmbeddedWorkerDispatcher() {}
44 43
45 bool EmbeddedWorkerDispatcher::OnMessageReceived( 44 bool EmbeddedWorkerDispatcher::OnMessageReceived(
46 const IPC::Message& message) { 45 const IPC::Message& message) {
47 bool handled = true; 46 bool handled = true;
48 IPC_BEGIN_MESSAGE_MAP(EmbeddedWorkerDispatcher, message) 47 IPC_BEGIN_MESSAGE_MAP(EmbeddedWorkerDispatcher, message)
49 IPC_MESSAGE_HANDLER(EmbeddedWorkerMsg_StopWorker, OnStopWorker) 48 IPC_MESSAGE_HANDLER(EmbeddedWorkerMsg_StopWorker, OnStopWorker)
50 IPC_MESSAGE_HANDLER(EmbeddedWorkerMsg_ResumeAfterDownload,
51 OnResumeAfterDownload)
52 IPC_MESSAGE_HANDLER(EmbeddedWorkerMsg_AddMessageToConsole,
53 OnAddMessageToConsole)
54 IPC_MESSAGE_UNHANDLED(handled = false) 49 IPC_MESSAGE_UNHANDLED(handled = false)
55 IPC_END_MESSAGE_MAP() 50 IPC_END_MESSAGE_MAP()
56 return handled; 51 return handled;
57 } 52 }
58 53
59 void EmbeddedWorkerDispatcher::WorkerContextDestroyed( 54 void EmbeddedWorkerDispatcher::WorkerContextDestroyed(
60 int embedded_worker_id) { 55 int embedded_worker_id) {
61 RenderThreadImpl::current()->thread_safe_sender()->Send( 56 RenderThreadImpl::current()->thread_safe_sender()->Send(
62 new EmbeddedWorkerHostMsg_WorkerStopped(embedded_worker_id)); 57 new EmbeddedWorkerHostMsg_WorkerStopped(embedded_worker_id));
63 UnregisterWorker(embedded_worker_id); 58 UnregisterWorker(embedded_worker_id);
64 } 59 }
65 60
66 void EmbeddedWorkerDispatcher::OnStopWorker(int embedded_worker_id) { 61 void EmbeddedWorkerDispatcher::OnStopWorker(int embedded_worker_id) {
67 TRACE_EVENT0("ServiceWorker", "EmbeddedWorkerDispatcher::OnStopWorker"); 62 TRACE_EVENT0("ServiceWorker", "EmbeddedWorkerDispatcher::OnStopWorker");
68 WorkerWrapper* wrapper = workers_.Lookup(embedded_worker_id); 63 WorkerWrapper* wrapper = workers_.Lookup(embedded_worker_id);
69 // OnStopWorker is possible to be called twice. 64 // OnStopWorker is possible to be called twice.
70 if (!wrapper) { 65 if (!wrapper) {
71 LOG(WARNING) << "Got OnStopWorker for nonexistent worker"; 66 LOG(WARNING) << "Got OnStopWorker for nonexistent worker";
72 return; 67 return;
73 } 68 }
74 // This should eventually call WorkerContextDestroyed. (We may need to post 69 // This should eventually call WorkerContextDestroyed. (We may need to post
75 // a delayed task to forcibly abort the worker context if we find it 70 // a delayed task to forcibly abort the worker context if we find it
76 // necessary) 71 // necessary)
77 stop_worker_times_[embedded_worker_id] = base::TimeTicks::Now(); 72 stop_worker_times_[embedded_worker_id] = base::TimeTicks::Now();
78 wrapper->worker()->terminateWorkerContext(); 73 wrapper->worker()->terminateWorkerContext();
79 } 74 }
80 75
81 void EmbeddedWorkerDispatcher::OnResumeAfterDownload(int embedded_worker_id) {
82 TRACE_EVENT0("ServiceWorker",
83 "EmbeddedWorkerDispatcher::OnResumeAfterDownload");
84 WorkerWrapper* wrapper = workers_.Lookup(embedded_worker_id);
85 if (!wrapper) {
86 LOG(WARNING) << "Got OnResumeAfterDownload for nonexistent worker";
87 return;
88 }
89 wrapper->worker()->resumeAfterDownload();
90 }
91
92 void EmbeddedWorkerDispatcher::OnAddMessageToConsole(
93 int embedded_worker_id,
94 ConsoleMessageLevel level,
95 const std::string& message) {
96 WorkerWrapper* wrapper = workers_.Lookup(embedded_worker_id);
97 if (!wrapper)
98 return;
99 blink::WebConsoleMessage::Level target_level =
100 blink::WebConsoleMessage::LevelLog;
101 switch (level) {
102 case CONSOLE_MESSAGE_LEVEL_DEBUG:
103 target_level = blink::WebConsoleMessage::LevelDebug;
104 break;
105 case CONSOLE_MESSAGE_LEVEL_LOG:
106 target_level = blink::WebConsoleMessage::LevelLog;
107 break;
108 case CONSOLE_MESSAGE_LEVEL_WARNING:
109 target_level = blink::WebConsoleMessage::LevelWarning;
110 break;
111 case CONSOLE_MESSAGE_LEVEL_ERROR:
112 target_level = blink::WebConsoleMessage::LevelError;
113 break;
114 }
115 wrapper->worker()->addMessageToConsole(blink::WebConsoleMessage(
116 target_level, blink::WebString::fromUTF8(message)));
117 }
118
119 std::unique_ptr<EmbeddedWorkerDispatcher::WorkerWrapper> 76 std::unique_ptr<EmbeddedWorkerDispatcher::WorkerWrapper>
120 EmbeddedWorkerDispatcher::StartWorkerContext( 77 EmbeddedWorkerDispatcher::StartWorkerContext(
121 const EmbeddedWorkerStartParams& params, 78 const EmbeddedWorkerStartParams& params,
122 std::unique_ptr<ServiceWorkerContextClient> context_client) { 79 std::unique_ptr<ServiceWorkerContextClient> context_client) {
123 std::unique_ptr<WorkerWrapper> wrapper(new WorkerWrapper( 80 std::unique_ptr<WorkerWrapper> wrapper(new WorkerWrapper(
124 blink::WebEmbeddedWorker::create(context_client.release(), nullptr), 81 blink::WebEmbeddedWorker::create(context_client.release(), nullptr),
125 params.worker_devtools_agent_route_id)); 82 params.worker_devtools_agent_route_id));
126 83
127 blink::WebEmbeddedWorkerStartData start_data; 84 blink::WebEmbeddedWorkerStartData start_data;
128 start_data.scriptURL = params.script_url; 85 start_data.scriptURL = params.script_url;
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
163 void EmbeddedWorkerDispatcher::RecordStopWorkerTimer(int embedded_worker_id) { 120 void EmbeddedWorkerDispatcher::RecordStopWorkerTimer(int embedded_worker_id) {
164 WorkerWrapper* wrapper = workers_.Lookup(embedded_worker_id); 121 WorkerWrapper* wrapper = workers_.Lookup(embedded_worker_id);
165 DCHECK(wrapper); 122 DCHECK(wrapper);
166 // This should eventually call WorkerContextDestroyed. (We may need to post 123 // This should eventually call WorkerContextDestroyed. (We may need to post
167 // a delayed task to forcibly abort the worker context if we find it 124 // a delayed task to forcibly abort the worker context if we find it
168 // necessary) 125 // necessary)
169 stop_worker_times_[embedded_worker_id] = base::TimeTicks::Now(); 126 stop_worker_times_[embedded_worker_id] = base::TimeTicks::Now();
170 } 127 }
171 128
172 } // namespace content 129 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698