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