| 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" |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 49 FROM_HERE, | 49 FROM_HERE, |
| 50 base::Bind(NotifyWorkerDestroyed, worker_process_id, worker_route_id)); | 50 base::Bind(NotifyWorkerDestroyed, worker_process_id, worker_route_id)); |
| 51 return; | 51 return; |
| 52 } | 52 } |
| 53 EmbeddedWorkerDevToolsManager::GetInstance()->WorkerDestroyed( | 53 EmbeddedWorkerDevToolsManager::GetInstance()->WorkerDestroyed( |
| 54 worker_process_id, worker_route_id); | 54 worker_process_id, worker_route_id); |
| 55 } | 55 } |
| 56 | 56 |
| 57 void RegisterToWorkerDevToolsManager( | 57 void RegisterToWorkerDevToolsManager( |
| 58 int process_id, | 58 int process_id, |
| 59 const ServiceWorkerContextCore* const service_worker_context, | 59 const ServiceWorkerContextCore* service_worker_context, |
| 60 base::WeakPtr<ServiceWorkerContextCore> service_worker_context_weak, |
| 60 int64 service_worker_version_id, | 61 int64 service_worker_version_id, |
| 62 const GURL& url, |
| 61 const base::Callback<void(int worker_devtools_agent_route_id, | 63 const base::Callback<void(int worker_devtools_agent_route_id, |
| 62 bool wait_for_debugger)>& callback) { | 64 bool wait_for_debugger)>& callback) { |
| 63 if (!BrowserThread::CurrentlyOn(BrowserThread::UI)) { | 65 if (!BrowserThread::CurrentlyOn(BrowserThread::UI)) { |
| 64 BrowserThread::PostTask(BrowserThread::UI, | 66 BrowserThread::PostTask(BrowserThread::UI, |
| 65 FROM_HERE, | 67 FROM_HERE, |
| 66 base::Bind(RegisterToWorkerDevToolsManager, | 68 base::Bind(RegisterToWorkerDevToolsManager, |
| 67 process_id, | 69 process_id, |
| 68 service_worker_context, | 70 service_worker_context, |
| 71 service_worker_context_weak, |
| 69 service_worker_version_id, | 72 service_worker_version_id, |
| 73 url, |
| 70 callback)); | 74 callback)); |
| 71 return; | 75 return; |
| 72 } | 76 } |
| 73 int worker_devtools_agent_route_id = MSG_ROUTING_NONE; | 77 int worker_devtools_agent_route_id = MSG_ROUTING_NONE; |
| 74 bool wait_for_debugger = false; | 78 bool wait_for_debugger = false; |
| 75 if (RenderProcessHost* rph = RenderProcessHost::FromID(process_id)) { | 79 if (RenderProcessHost* rph = RenderProcessHost::FromID(process_id)) { |
| 76 // |rph| may be NULL in unit tests. | 80 // |rph| may be NULL in unit tests. |
| 77 worker_devtools_agent_route_id = rph->GetNextRoutingID(); | 81 worker_devtools_agent_route_id = rph->GetNextRoutingID(); |
| 78 wait_for_debugger = | 82 wait_for_debugger = |
| 79 EmbeddedWorkerDevToolsManager::GetInstance()->ServiceWorkerCreated( | 83 EmbeddedWorkerDevToolsManager::GetInstance()->ServiceWorkerCreated( |
| 80 process_id, | 84 process_id, |
| 81 worker_devtools_agent_route_id, | 85 worker_devtools_agent_route_id, |
| 82 EmbeddedWorkerDevToolsManager::ServiceWorkerIdentifier( | 86 EmbeddedWorkerDevToolsManager::ServiceWorkerIdentifier( |
| 83 service_worker_context, service_worker_version_id)); | 87 service_worker_context, |
| 88 service_worker_context_weak, |
| 89 service_worker_version_id, |
| 90 url)); |
| 84 } | 91 } |
| 85 BrowserThread::PostTask( | 92 BrowserThread::PostTask( |
| 86 BrowserThread::IO, | 93 BrowserThread::IO, |
| 87 FROM_HERE, | 94 FROM_HERE, |
| 88 base::Bind(callback, worker_devtools_agent_route_id, wait_for_debugger)); | 95 base::Bind(callback, worker_devtools_agent_route_id, wait_for_debugger)); |
| 89 } | 96 } |
| 90 | 97 |
| 91 } // namespace | 98 } // namespace |
| 92 | 99 |
| 93 EmbeddedWorkerInstance::~EmbeddedWorkerInstance() { | 100 EmbeddedWorkerInstance::~EmbeddedWorkerInstance() { |
| (...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 216 int process_id, | 223 int process_id, |
| 217 ServiceWorkerStatusCode status) { | 224 ServiceWorkerStatusCode status) { |
| 218 DCHECK_EQ(process_id_, -1); | 225 DCHECK_EQ(process_id_, -1); |
| 219 if (status != SERVICE_WORKER_OK) { | 226 if (status != SERVICE_WORKER_OK) { |
| 220 status_ = STOPPED; | 227 status_ = STOPPED; |
| 221 callback.Run(status); | 228 callback.Run(status); |
| 222 return; | 229 return; |
| 223 } | 230 } |
| 224 const int64 service_worker_version_id = params->service_worker_version_id; | 231 const int64 service_worker_version_id = params->service_worker_version_id; |
| 225 process_id_ = process_id; | 232 process_id_ = process_id; |
| 233 GURL script_url(params->script_url); |
| 226 RegisterToWorkerDevToolsManager( | 234 RegisterToWorkerDevToolsManager( |
| 227 process_id, | 235 process_id, |
| 228 context_.get(), | 236 context_.get(), |
| 237 context_, |
| 229 service_worker_version_id, | 238 service_worker_version_id, |
| 239 script_url, |
| 230 base::Bind(&EmbeddedWorkerInstance::SendStartWorker, | 240 base::Bind(&EmbeddedWorkerInstance::SendStartWorker, |
| 231 weak_factory_.GetWeakPtr(), | 241 weak_factory_.GetWeakPtr(), |
| 232 base::Passed(¶ms), | 242 base::Passed(¶ms), |
| 233 callback)); | 243 callback)); |
| 234 } | 244 } |
| 235 | 245 |
| 236 void EmbeddedWorkerInstance::SendStartWorker( | 246 void EmbeddedWorkerInstance::SendStartWorker( |
| 237 scoped_ptr<EmbeddedWorkerMsg_StartWorker_Params> params, | 247 scoped_ptr<EmbeddedWorkerMsg_StartWorker_Params> params, |
| 238 const StatusCallback& callback, | 248 const StatusCallback& callback, |
| 239 int worker_devtools_agent_route_id, | 249 int worker_devtools_agent_route_id, |
| (...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 339 // Sort descending by the reference count. | 349 // Sort descending by the reference count. |
| 340 std::sort(counted.begin(), counted.end(), SecondGreater()); | 350 std::sort(counted.begin(), counted.end(), SecondGreater()); |
| 341 | 351 |
| 342 std::vector<int> result(counted.size()); | 352 std::vector<int> result(counted.size()); |
| 343 for (size_t i = 0; i < counted.size(); ++i) | 353 for (size_t i = 0; i < counted.size(); ++i) |
| 344 result[i] = counted[i].first; | 354 result[i] = counted[i].first; |
| 345 return result; | 355 return result; |
| 346 } | 356 } |
| 347 | 357 |
| 348 } // namespace content | 358 } // namespace content |
| OLD | NEW |