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

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

Issue 2630273002: ServiceWorker: mojofy ResumeAfterDownload and AddMessageToConsole (Closed)
Patch Set: Added a comment 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"
(...skipping 29 matching lines...) Expand all
40 40
41 EmbeddedWorkerDispatcher::EmbeddedWorkerDispatcher() : weak_factory_(this) {} 41 EmbeddedWorkerDispatcher::EmbeddedWorkerDispatcher() : weak_factory_(this) {}
42 42
43 EmbeddedWorkerDispatcher::~EmbeddedWorkerDispatcher() {} 43 EmbeddedWorkerDispatcher::~EmbeddedWorkerDispatcher() {}
44 44
45 bool EmbeddedWorkerDispatcher::OnMessageReceived( 45 bool EmbeddedWorkerDispatcher::OnMessageReceived(
46 const IPC::Message& message) { 46 const IPC::Message& message) {
47 bool handled = true; 47 bool handled = true;
48 IPC_BEGIN_MESSAGE_MAP(EmbeddedWorkerDispatcher, message) 48 IPC_BEGIN_MESSAGE_MAP(EmbeddedWorkerDispatcher, message)
49 IPC_MESSAGE_HANDLER(EmbeddedWorkerMsg_StopWorker, OnStopWorker) 49 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) 50 IPC_MESSAGE_UNHANDLED(handled = false)
55 IPC_END_MESSAGE_MAP() 51 IPC_END_MESSAGE_MAP()
56 return handled; 52 return handled;
57 } 53 }
58 54
59 void EmbeddedWorkerDispatcher::WorkerContextDestroyed( 55 void EmbeddedWorkerDispatcher::WorkerContextDestroyed(
60 int embedded_worker_id) { 56 int embedded_worker_id) {
61 RenderThreadImpl::current()->thread_safe_sender()->Send( 57 RenderThreadImpl::current()->thread_safe_sender()->Send(
62 new EmbeddedWorkerHostMsg_WorkerStopped(embedded_worker_id)); 58 new EmbeddedWorkerHostMsg_WorkerStopped(embedded_worker_id));
63 UnregisterWorker(embedded_worker_id); 59 UnregisterWorker(embedded_worker_id);
64 } 60 }
65 61
66 void EmbeddedWorkerDispatcher::OnStopWorker(int embedded_worker_id) { 62 void EmbeddedWorkerDispatcher::OnStopWorker(int embedded_worker_id) {
67 TRACE_EVENT0("ServiceWorker", "EmbeddedWorkerDispatcher::OnStopWorker"); 63 TRACE_EVENT0("ServiceWorker", "EmbeddedWorkerDispatcher::OnStopWorker");
68 WorkerWrapper* wrapper = workers_.Lookup(embedded_worker_id); 64 WorkerWrapper* wrapper = workers_.Lookup(embedded_worker_id);
69 // OnStopWorker is possible to be called twice. 65 // OnStopWorker is possible to be called twice.
70 if (!wrapper) { 66 if (!wrapper) {
71 LOG(WARNING) << "Got OnStopWorker for nonexistent worker"; 67 LOG(WARNING) << "Got OnStopWorker for nonexistent worker";
72 return; 68 return;
73 } 69 }
74 // This should eventually call WorkerContextDestroyed. (We may need to post 70 // This should eventually call WorkerContextDestroyed. (We may need to post
75 // a delayed task to forcibly abort the worker context if we find it 71 // a delayed task to forcibly abort the worker context if we find it
76 // necessary) 72 // necessary)
77 stop_worker_times_[embedded_worker_id] = base::TimeTicks::Now(); 73 stop_worker_times_[embedded_worker_id] = base::TimeTicks::Now();
78 wrapper->worker()->terminateWorkerContext(); 74 wrapper->worker()->terminateWorkerContext();
79 } 75 }
80 76
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> 77 std::unique_ptr<EmbeddedWorkerDispatcher::WorkerWrapper>
120 EmbeddedWorkerDispatcher::StartWorkerContext( 78 EmbeddedWorkerDispatcher::StartWorkerContext(
121 const EmbeddedWorkerStartParams& params, 79 const EmbeddedWorkerStartParams& params,
122 std::unique_ptr<ServiceWorkerContextClient> context_client) { 80 std::unique_ptr<ServiceWorkerContextClient> context_client) {
123 std::unique_ptr<WorkerWrapper> wrapper(new WorkerWrapper( 81 std::unique_ptr<WorkerWrapper> wrapper(new WorkerWrapper(
124 blink::WebEmbeddedWorker::create(context_client.release(), nullptr), 82 blink::WebEmbeddedWorker::create(context_client.release(), nullptr),
125 params.worker_devtools_agent_route_id)); 83 params.worker_devtools_agent_route_id));
126 84
127 blink::WebEmbeddedWorkerStartData start_data; 85 blink::WebEmbeddedWorkerStartData start_data;
128 start_data.scriptURL = params.script_url; 86 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) { 121 void EmbeddedWorkerDispatcher::RecordStopWorkerTimer(int embedded_worker_id) {
164 WorkerWrapper* wrapper = workers_.Lookup(embedded_worker_id); 122 WorkerWrapper* wrapper = workers_.Lookup(embedded_worker_id);
165 DCHECK(wrapper); 123 DCHECK(wrapper);
166 // This should eventually call WorkerContextDestroyed. (We may need to post 124 // This should eventually call WorkerContextDestroyed. (We may need to post
167 // a delayed task to forcibly abort the worker context if we find it 125 // a delayed task to forcibly abort the worker context if we find it
168 // necessary) 126 // necessary)
169 stop_worker_times_[embedded_worker_id] = base::TimeTicks::Now(); 127 stop_worker_times_[embedded_worker_id] = base::TimeTicks::Now();
170 } 128 }
171 129
172 } // namespace content 130 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698