| 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 <utility> | 7 #include <utility> |
| 8 | 8 |
| 9 #include "base/bind_helpers.h" | 9 #include "base/bind_helpers.h" |
| 10 #include "base/macros.h" | 10 #include "base/macros.h" |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 49 ServiceWorkerDevToolsManager::GetInstance()->WorkerDestroyed( | 49 ServiceWorkerDevToolsManager::GetInstance()->WorkerDestroyed( |
| 50 worker_process_id, worker_route_id); | 50 worker_process_id, worker_route_id); |
| 51 } | 51 } |
| 52 | 52 |
| 53 void NotifyWorkerStopIgnoredOnUI(int worker_process_id, int worker_route_id) { | 53 void NotifyWorkerStopIgnoredOnUI(int worker_process_id, int worker_route_id) { |
| 54 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 54 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 55 ServiceWorkerDevToolsManager::GetInstance()->WorkerStopIgnored( | 55 ServiceWorkerDevToolsManager::GetInstance()->WorkerStopIgnored( |
| 56 worker_process_id, worker_route_id); | 56 worker_process_id, worker_route_id); |
| 57 } | 57 } |
| 58 | 58 |
| 59 void NotifyWorkerVersionInstalledOnUI(int worker_process_id, |
| 60 int worker_route_id) { |
| 61 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 62 ServiceWorkerDevToolsManager::GetInstance()->WorkerVersionInstalled( |
| 63 worker_process_id, worker_route_id); |
| 64 } |
| 65 |
| 66 void NotifyWorkerVersionDoomedOnUI(int worker_process_id, int worker_route_id) { |
| 67 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 68 ServiceWorkerDevToolsManager::GetInstance()->WorkerVersionDoomed( |
| 69 worker_process_id, worker_route_id); |
| 70 } |
| 71 |
| 59 void RegisterToWorkerDevToolsManagerOnUI( | 72 void RegisterToWorkerDevToolsManagerOnUI( |
| 60 int process_id, | 73 int process_id, |
| 61 const ServiceWorkerContextCore* service_worker_context, | 74 const ServiceWorkerContextCore* service_worker_context, |
| 62 const base::WeakPtr<ServiceWorkerContextCore>& service_worker_context_weak, | 75 const base::WeakPtr<ServiceWorkerContextCore>& service_worker_context_weak, |
| 63 int64_t service_worker_version_id, | 76 int64_t service_worker_version_id, |
| 64 const GURL& url, | 77 const GURL& url, |
| 65 const GURL& scope, | 78 const GURL& scope, |
| 79 bool is_installed, |
| 66 const base::Callback<void(int worker_devtools_agent_route_id, | 80 const base::Callback<void(int worker_devtools_agent_route_id, |
| 67 bool wait_for_debugger)>& callback) { | 81 bool wait_for_debugger)>& callback) { |
| 68 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 82 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 69 int worker_devtools_agent_route_id = MSG_ROUTING_NONE; | 83 int worker_devtools_agent_route_id = MSG_ROUTING_NONE; |
| 70 bool wait_for_debugger = false; | 84 bool wait_for_debugger = false; |
| 71 if (RenderProcessHost* rph = RenderProcessHost::FromID(process_id)) { | 85 if (RenderProcessHost* rph = RenderProcessHost::FromID(process_id)) { |
| 72 // |rph| may be NULL in unit tests. | 86 // |rph| may be NULL in unit tests. |
| 73 worker_devtools_agent_route_id = rph->GetNextRoutingID(); | 87 worker_devtools_agent_route_id = rph->GetNextRoutingID(); |
| 74 wait_for_debugger = | 88 wait_for_debugger = |
| 75 ServiceWorkerDevToolsManager::GetInstance()->WorkerCreated( | 89 ServiceWorkerDevToolsManager::GetInstance()->WorkerCreated( |
| 76 process_id, worker_devtools_agent_route_id, | 90 process_id, worker_devtools_agent_route_id, |
| 77 ServiceWorkerDevToolsManager::ServiceWorkerIdentifier( | 91 ServiceWorkerDevToolsManager::ServiceWorkerIdentifier( |
| 78 service_worker_context, service_worker_context_weak, | 92 service_worker_context, service_worker_context_weak, |
| 79 service_worker_version_id, url, scope)); | 93 service_worker_version_id, url, scope), |
| 94 is_installed); |
| 80 } | 95 } |
| 81 BrowserThread::PostTask( | 96 BrowserThread::PostTask( |
| 82 BrowserThread::IO, | 97 BrowserThread::IO, |
| 83 FROM_HERE, | 98 FROM_HERE, |
| 84 base::Bind(callback, worker_devtools_agent_route_id, wait_for_debugger)); | 99 base::Bind(callback, worker_devtools_agent_route_id, wait_for_debugger)); |
| 85 } | 100 } |
| 86 | 101 |
| 87 void SetupMojoOnUIThread( | 102 void SetupMojoOnUIThread( |
| 88 int process_id, | 103 int process_id, |
| 89 int thread_id, | 104 int thread_id, |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 126 } | 141 } |
| 127 | 142 |
| 128 void NotifyWorkerStopIgnored() { | 143 void NotifyWorkerStopIgnored() { |
| 129 DCHECK(CalledOnValidThread()); | 144 DCHECK(CalledOnValidThread()); |
| 130 BrowserThread::PostTask(BrowserThread::UI, | 145 BrowserThread::PostTask(BrowserThread::UI, |
| 131 FROM_HERE, | 146 FROM_HERE, |
| 132 base::Bind(NotifyWorkerStopIgnoredOnUI, | 147 base::Bind(NotifyWorkerStopIgnoredOnUI, |
| 133 process_id_, agent_route_id_)); | 148 process_id_, agent_route_id_)); |
| 134 } | 149 } |
| 135 | 150 |
| 151 void NotifyWorkerVersionInstalled() { |
| 152 DCHECK(CalledOnValidThread()); |
| 153 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, |
| 154 base::Bind(NotifyWorkerVersionInstalledOnUI, |
| 155 process_id_, agent_route_id_)); |
| 156 } |
| 157 |
| 158 void NotifyWorkerVersionDoomed() { |
| 159 DCHECK(CalledOnValidThread()); |
| 160 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, |
| 161 base::Bind(NotifyWorkerVersionDoomedOnUI, |
| 162 process_id_, agent_route_id_)); |
| 163 } |
| 164 |
| 136 int agent_route_id() const { return agent_route_id_; } | 165 int agent_route_id() const { return agent_route_id_; } |
| 137 | 166 |
| 138 private: | 167 private: |
| 139 const int process_id_; | 168 const int process_id_; |
| 140 const int agent_route_id_; | 169 const int agent_route_id_; |
| 141 DISALLOW_COPY_AND_ASSIGN(DevToolsProxy); | 170 DISALLOW_COPY_AND_ASSIGN(DevToolsProxy); |
| 142 }; | 171 }; |
| 143 | 172 |
| 144 // A handle for a worker process managed by ServiceWorkerProcessManager on the | 173 // A handle for a worker process managed by ServiceWorkerProcessManager on the |
| 145 // UI thread. | 174 // UI thread. |
| (...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 309 params->settings.data_saver_enabled = settings.data_saver_enabled; | 338 params->settings.data_saver_enabled = settings.data_saver_enabled; |
| 310 | 339 |
| 311 // Register the instance to DevToolsManager on UI thread. | 340 // Register the instance to DevToolsManager on UI thread. |
| 312 const int64_t service_worker_version_id = params->service_worker_version_id; | 341 const int64_t service_worker_version_id = params->service_worker_version_id; |
| 313 const GURL& scope = params->scope; | 342 const GURL& scope = params->scope; |
| 314 GURL script_url(params->script_url); | 343 GURL script_url(params->script_url); |
| 315 BrowserThread::PostTask( | 344 BrowserThread::PostTask( |
| 316 BrowserThread::UI, FROM_HERE, | 345 BrowserThread::UI, FROM_HERE, |
| 317 base::Bind(RegisterToWorkerDevToolsManagerOnUI, process_id, | 346 base::Bind(RegisterToWorkerDevToolsManagerOnUI, process_id, |
| 318 instance_->context_.get(), instance_->context_, | 347 instance_->context_.get(), instance_->context_, |
| 319 service_worker_version_id, script_url, scope, | 348 service_worker_version_id, script_url, scope, is_installed_, |
| 320 base::Bind(&StartTask::OnRegisteredToDevToolsManager, | 349 base::Bind(&StartTask::OnRegisteredToDevToolsManager, |
| 321 weak_factory_.GetWeakPtr(), base::Passed(¶ms), | 350 weak_factory_.GetWeakPtr(), base::Passed(¶ms), |
| 322 is_new_process))); | 351 is_new_process))); |
| 323 } | 352 } |
| 324 | 353 |
| 325 void OnRegisteredToDevToolsManager( | 354 void OnRegisteredToDevToolsManager( |
| 326 std::unique_ptr<EmbeddedWorkerMsg_StartWorker_Params> params, | 355 std::unique_ptr<EmbeddedWorkerMsg_StartWorker_Params> params, |
| 327 bool is_new_process, | 356 bool is_new_process, |
| 328 int worker_devtools_agent_route_id, | 357 int worker_devtools_agent_route_id, |
| 329 bool wait_for_debugger) { | 358 bool wait_for_debugger) { |
| (...skipping 241 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 571 TRACE_EVENT_ASYNC_STEP_PAST0("ServiceWorker", "EmbeddedWorkerInstance::Start", | 600 TRACE_EVENT_ASYNC_STEP_PAST0("ServiceWorker", "EmbeddedWorkerInstance::Start", |
| 572 inflight_start_task_.get(), "OnURLJobCreated"); | 601 inflight_start_task_.get(), "OnURLJobCreated"); |
| 573 if (!step_time_.is_null()) { | 602 if (!step_time_.is_null()) { |
| 574 base::TimeDelta duration = UpdateStepTime(); | 603 base::TimeDelta duration = UpdateStepTime(); |
| 575 if (inflight_start_task_->is_installed()) | 604 if (inflight_start_task_->is_installed()) |
| 576 ServiceWorkerMetrics::RecordTimeToURLJob( | 605 ServiceWorkerMetrics::RecordTimeToURLJob( |
| 577 duration, inflight_start_task_->start_situation()); | 606 duration, inflight_start_task_->start_situation()); |
| 578 } | 607 } |
| 579 } | 608 } |
| 580 | 609 |
| 610 void EmbeddedWorkerInstance::OnWorkerVersionInstalled() { |
| 611 if (devtools_proxy_) |
| 612 devtools_proxy_->NotifyWorkerVersionInstalled(); |
| 613 } |
| 614 |
| 615 void EmbeddedWorkerInstance::OnWorkerVersionDoomed() { |
| 616 if (devtools_proxy_) |
| 617 devtools_proxy_->NotifyWorkerVersionDoomed(); |
| 618 } |
| 619 |
| 581 void EmbeddedWorkerInstance::OnThreadStarted(int thread_id) { | 620 void EmbeddedWorkerInstance::OnThreadStarted(int thread_id) { |
| 582 if (!inflight_start_task_) | 621 if (!inflight_start_task_) |
| 583 return; | 622 return; |
| 584 TRACE_EVENT_ASYNC_STEP_PAST0("ServiceWorker", "EmbeddedWorkerInstance::Start", | 623 TRACE_EVENT_ASYNC_STEP_PAST0("ServiceWorker", "EmbeddedWorkerInstance::Start", |
| 585 inflight_start_task_.get(), "OnThreadStarted"); | 624 inflight_start_task_.get(), "OnThreadStarted"); |
| 586 | 625 |
| 587 starting_phase_ = THREAD_STARTED; | 626 starting_phase_ = THREAD_STARTED; |
| 588 if (!step_time_.is_null()) { | 627 if (!step_time_.is_null()) { |
| 589 base::TimeDelta duration = UpdateStepTime(); | 628 base::TimeDelta duration = UpdateStepTime(); |
| 590 if (inflight_start_task_->is_installed()) | 629 if (inflight_start_task_->is_installed()) |
| (...skipping 219 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 810 case SCRIPT_READ_FINISHED: | 849 case SCRIPT_READ_FINISHED: |
| 811 return "Script read finished"; | 850 return "Script read finished"; |
| 812 case STARTING_PHASE_MAX_VALUE: | 851 case STARTING_PHASE_MAX_VALUE: |
| 813 NOTREACHED(); | 852 NOTREACHED(); |
| 814 } | 853 } |
| 815 NOTREACHED() << phase; | 854 NOTREACHED() << phase; |
| 816 return std::string(); | 855 return std::string(); |
| 817 } | 856 } |
| 818 | 857 |
| 819 } // namespace content | 858 } // namespace content |
| OLD | NEW |