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/browser/service_worker/embedded_worker_instance.h" | 5 #include "content/browser/service_worker/embedded_worker_instance.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <utility> | 8 #include <utility> |
9 | 9 |
10 #include "base/bind_helpers.h" | 10 #include "base/bind_helpers.h" |
| 11 #include "base/debug/trace_event.h" |
11 #include "content/browser/devtools/embedded_worker_devtools_manager.h" | 12 #include "content/browser/devtools/embedded_worker_devtools_manager.h" |
12 #include "content/browser/service_worker/embedded_worker_registry.h" | 13 #include "content/browser/service_worker/embedded_worker_registry.h" |
13 #include "content/browser/service_worker/service_worker_context_core.h" | 14 #include "content/browser/service_worker/service_worker_context_core.h" |
14 #include "content/common/service_worker/embedded_worker_messages.h" | 15 #include "content/common/service_worker/embedded_worker_messages.h" |
15 #include "content/common/service_worker/service_worker_types.h" | 16 #include "content/common/service_worker/service_worker_types.h" |
16 #include "content/public/browser/browser_thread.h" | 17 #include "content/public/browser/browser_thread.h" |
17 #include "content/public/browser/render_process_host.h" | 18 #include "content/public/browser/render_process_host.h" |
18 #include "ipc/ipc_message.h" | 19 #include "ipc/ipc_message.h" |
19 #include "url/gurl.h" | 20 #include "url/gurl.h" |
20 | 21 |
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
129 const std::vector<int>& possible_process_ids, | 130 const std::vector<int>& possible_process_ids, |
130 const StatusCallback& callback) { | 131 const StatusCallback& callback) { |
131 if (!context_) { | 132 if (!context_) { |
132 callback.Run(SERVICE_WORKER_ERROR_ABORT); | 133 callback.Run(SERVICE_WORKER_ERROR_ABORT); |
133 return; | 134 return; |
134 } | 135 } |
135 DCHECK(status_ == STOPPED); | 136 DCHECK(status_ == STOPPED); |
136 status_ = STARTING; | 137 status_ = STARTING; |
137 scoped_ptr<EmbeddedWorkerMsg_StartWorker_Params> params( | 138 scoped_ptr<EmbeddedWorkerMsg_StartWorker_Params> params( |
138 new EmbeddedWorkerMsg_StartWorker_Params()); | 139 new EmbeddedWorkerMsg_StartWorker_Params()); |
| 140 TRACE_EVENT_ASYNC_BEGIN2("ServiceWorker", |
| 141 "EmbeddedWorkerInstance::ProcessAllocate", |
| 142 params.get(), |
| 143 "Scope", scope.spec(), |
| 144 "Script URL", script_url.spec()); |
139 params->embedded_worker_id = embedded_worker_id_; | 145 params->embedded_worker_id = embedded_worker_id_; |
140 params->service_worker_version_id = service_worker_version_id; | 146 params->service_worker_version_id = service_worker_version_id; |
141 params->scope = scope; | 147 params->scope = scope; |
142 params->script_url = script_url; | 148 params->script_url = script_url; |
143 params->worker_devtools_agent_route_id = MSG_ROUTING_NONE; | 149 params->worker_devtools_agent_route_id = MSG_ROUTING_NONE; |
144 params->pause_after_download = pause_after_download; | 150 params->pause_after_download = pause_after_download; |
145 params->wait_for_debugger = false; | 151 params->wait_for_debugger = false; |
146 context_->process_manager()->AllocateWorkerProcess( | 152 context_->process_manager()->AllocateWorkerProcess( |
147 embedded_worker_id_, | 153 embedded_worker_id_, |
148 SortProcesses(possible_process_ids), | 154 SortProcesses(possible_process_ids), |
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
241 ServiceWorkerStatusCode status) { | 247 ServiceWorkerStatusCode status) { |
242 DCHECK_EQ(process_id_, -1); | 248 DCHECK_EQ(process_id_, -1); |
243 if (status != SERVICE_WORKER_OK) { | 249 if (status != SERVICE_WORKER_OK) { |
244 status_ = STOPPED; | 250 status_ = STOPPED; |
245 callback.Run(status); | 251 callback.Run(status); |
246 return; | 252 return; |
247 } | 253 } |
248 const int64 service_worker_version_id = params->service_worker_version_id; | 254 const int64 service_worker_version_id = params->service_worker_version_id; |
249 process_id_ = process_id; | 255 process_id_ = process_id; |
250 GURL script_url(params->script_url); | 256 GURL script_url(params->script_url); |
| 257 TRACE_EVENT_ASYNC_END1("ServiceWorker", |
| 258 "EmbeddedWorkerInstance::ProcessAllocate", |
| 259 params.get(), |
| 260 "Status", status); |
251 RegisterToWorkerDevToolsManager( | 261 RegisterToWorkerDevToolsManager( |
252 process_id, | 262 process_id, |
253 context_.get(), | 263 context_.get(), |
254 context_, | 264 context_, |
255 service_worker_version_id, | 265 service_worker_version_id, |
256 script_url, | 266 script_url, |
257 base::Bind(&EmbeddedWorkerInstance::SendStartWorker, | 267 base::Bind(&EmbeddedWorkerInstance::SendStartWorker, |
258 weak_factory_.GetWeakPtr(), | 268 weak_factory_.GetWeakPtr(), |
259 base::Passed(¶ms), | 269 base::Passed(¶ms), |
260 callback)); | 270 callback)); |
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
372 // Sort descending by the reference count. | 382 // Sort descending by the reference count. |
373 std::sort(counted.begin(), counted.end(), SecondGreater()); | 383 std::sort(counted.begin(), counted.end(), SecondGreater()); |
374 | 384 |
375 std::vector<int> result(counted.size()); | 385 std::vector<int> result(counted.size()); |
376 for (size_t i = 0; i < counted.size(); ++i) | 386 for (size_t i = 0; i < counted.size(); ++i) |
377 result[i] = counted[i].first; | 387 result[i] = counted[i].first; |
378 return result; | 388 return result; |
379 } | 389 } |
380 | 390 |
381 } // namespace content | 391 } // namespace content |
OLD | NEW |