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

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

Issue 538913002: ServiceWorker: Insert TRACE_EVENT to watch a breakdown of the ServiceWorker's performance on chome:… (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Remove unnecessary include Created 6 years, 3 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_context_client.h" 5 #include "content/renderer/service_worker/embedded_worker_context_client.h"
6 6
7 #include <map> 7 #include <map>
8 #include <string> 8 #include <string>
9 9
10 #include "base/debug/trace_event.h"
10 #include "base/lazy_instance.h" 11 #include "base/lazy_instance.h"
11 #include "base/message_loop/message_loop_proxy.h" 12 #include "base/message_loop/message_loop_proxy.h"
12 #include "base/pickle.h" 13 #include "base/pickle.h"
13 #include "base/strings/string16.h" 14 #include "base/strings/string16.h"
14 #include "base/strings/utf_string_conversions.h" 15 #include "base/strings/utf_string_conversions.h"
15 #include "base/threading/thread_local.h" 16 #include "base/threading/thread_local.h"
16 #include "content/child/request_extra_data.h" 17 #include "content/child/request_extra_data.h"
17 #include "content/child/service_worker/service_worker_network_provider.h" 18 #include "content/child/service_worker/service_worker_network_provider.h"
18 #include "content/child/thread_safe_sender.h" 19 #include "content/child/thread_safe_sender.h"
19 #include "content/child/worker_task_runner.h" 20 #include "content/child/worker_task_runner.h"
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
92 const GURL& script_url, 93 const GURL& script_url,
93 int worker_devtools_agent_route_id) 94 int worker_devtools_agent_route_id)
94 : embedded_worker_id_(embedded_worker_id), 95 : embedded_worker_id_(embedded_worker_id),
95 service_worker_version_id_(service_worker_version_id), 96 service_worker_version_id_(service_worker_version_id),
96 service_worker_scope_(service_worker_scope), 97 service_worker_scope_(service_worker_scope),
97 script_url_(script_url), 98 script_url_(script_url),
98 worker_devtools_agent_route_id_(worker_devtools_agent_route_id), 99 worker_devtools_agent_route_id_(worker_devtools_agent_route_id),
99 sender_(ChildThread::current()->thread_safe_sender()), 100 sender_(ChildThread::current()->thread_safe_sender()),
100 main_thread_proxy_(base::MessageLoopProxy::current()), 101 main_thread_proxy_(base::MessageLoopProxy::current()),
101 weak_factory_(this) { 102 weak_factory_(this) {
103 TRACE_EVENT_ASYNC_BEGIN0("ServiceWorker",
104 "EmbeddedWorkerContextClient::StartingWorkerContext",
105 this);
106 TRACE_EVENT_ASYNC_STEP_INTO0(
107 "ServiceWorker",
108 "EmbeddedWorkerContextClient::StartingWorkerContext",
109 this,
110 "PrepareWorker");
102 } 111 }
103 112
104 EmbeddedWorkerContextClient::~EmbeddedWorkerContextClient() { 113 EmbeddedWorkerContextClient::~EmbeddedWorkerContextClient() {
105 } 114 }
106 115
107 bool EmbeddedWorkerContextClient::OnMessageReceived( 116 bool EmbeddedWorkerContextClient::OnMessageReceived(
108 const IPC::Message& msg) { 117 const IPC::Message& msg) {
109 bool handled = true; 118 bool handled = true;
110 IPC_BEGIN_MESSAGE_MAP(EmbeddedWorkerContextClient, msg) 119 IPC_BEGIN_MESSAGE_MAP(EmbeddedWorkerContextClient, msg)
111 IPC_MESSAGE_HANDLER(EmbeddedWorkerContextMsg_MessageToWorker, 120 IPC_MESSAGE_HANDLER(EmbeddedWorkerContextMsg_MessageToWorker,
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
169 embedded_worker_id_, 178 embedded_worker_id_,
170 WorkerTaskRunner::Instance()->CurrentWorkerId())); 179 WorkerTaskRunner::Instance()->CurrentWorkerId()));
171 180
172 // Schedule a task to send back WorkerStarted asynchronously, 181 // Schedule a task to send back WorkerStarted asynchronously,
173 // so that at the time we send it we can be sure that the worker 182 // so that at the time we send it we can be sure that the worker
174 // script has been evaluated and worker run loop has been started. 183 // script has been evaluated and worker run loop has been started.
175 worker_task_runner_->PostTask( 184 worker_task_runner_->PostTask(
176 FROM_HERE, 185 FROM_HERE,
177 base::Bind(&EmbeddedWorkerContextClient::SendWorkerStarted, 186 base::Bind(&EmbeddedWorkerContextClient::SendWorkerStarted,
178 weak_factory_.GetWeakPtr())); 187 weak_factory_.GetWeakPtr()));
188 TRACE_EVENT_ASYNC_STEP_INTO0(
189 "ServiceWorker",
190 "EmbeddedWorkerContextClient::StartingWorkerContext",
191 this,
192 "ExecuteScript");
179 } 193 }
180 194
181 void EmbeddedWorkerContextClient::willDestroyWorkerContext() { 195 void EmbeddedWorkerContextClient::willDestroyWorkerContext() {
182 // At this point OnWorkerRunLoopStopped is already called, so 196 // At this point OnWorkerRunLoopStopped is already called, so
183 // worker_task_runner_->RunsTasksOnCurrentThread() returns false 197 // worker_task_runner_->RunsTasksOnCurrentThread() returns false
184 // (while we're still on the worker thread). 198 // (while we're still on the worker thread).
185 script_context_.reset(); 199 script_context_.reset();
186 200
187 // This also lets the message filter stop dispatching messages to 201 // This also lets the message filter stop dispatching messages to
188 // this client. 202 // this client.
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after
323 int embedded_worker_id, 337 int embedded_worker_id,
324 const IPC::Message& message) { 338 const IPC::Message& message) {
325 if (!script_context_) 339 if (!script_context_)
326 return; 340 return;
327 DCHECK_EQ(embedded_worker_id_, embedded_worker_id); 341 DCHECK_EQ(embedded_worker_id_, embedded_worker_id);
328 script_context_->OnMessageReceived(message); 342 script_context_->OnMessageReceived(message);
329 } 343 }
330 344
331 void EmbeddedWorkerContextClient::SendWorkerStarted() { 345 void EmbeddedWorkerContextClient::SendWorkerStarted() {
332 DCHECK(worker_task_runner_->RunsTasksOnCurrentThread()); 346 DCHECK(worker_task_runner_->RunsTasksOnCurrentThread());
347 TRACE_EVENT_ASYNC_END0("ServiceWorker",
348 "EmbeddedWorkerContextClient::StartingWorkerContext",
349 this);
333 Send(new EmbeddedWorkerHostMsg_WorkerStarted(embedded_worker_id_)); 350 Send(new EmbeddedWorkerHostMsg_WorkerStarted(embedded_worker_id_));
334 } 351 }
335 352
336 } // namespace content 353 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698