| 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 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 101 } | 101 } |
| 102 BrowserThread::PostTask( | 102 BrowserThread::PostTask( |
| 103 BrowserThread::IO, | 103 BrowserThread::IO, |
| 104 FROM_HERE, | 104 FROM_HERE, |
| 105 base::Bind(callback, worker_devtools_agent_route_id, wait_for_debugger)); | 105 base::Bind(callback, worker_devtools_agent_route_id, wait_for_debugger)); |
| 106 } | 106 } |
| 107 | 107 |
| 108 void SetupMojoOnUIThread( | 108 void SetupMojoOnUIThread( |
| 109 int process_id, | 109 int process_id, |
| 110 int thread_id, | 110 int thread_id, |
| 111 shell::mojom::InterfaceProviderRequest remote_interfaces, | 111 service_manager::mojom::InterfaceProviderRequest remote_interfaces, |
| 112 shell::mojom::InterfaceProviderPtrInfo exposed_interfaces) { | 112 service_manager::mojom::InterfaceProviderPtrInfo exposed_interfaces) { |
| 113 RenderProcessHost* rph = RenderProcessHost::FromID(process_id); | 113 RenderProcessHost* rph = RenderProcessHost::FromID(process_id); |
| 114 // |rph| or its InterfaceProvider may be NULL in unit tests. | 114 // |rph| or its InterfaceProvider may be NULL in unit tests. |
| 115 if (!rph || !rph->GetRemoteInterfaces()) | 115 if (!rph || !rph->GetRemoteInterfaces()) |
| 116 return; | 116 return; |
| 117 mojom::EmbeddedWorkerSetupPtr setup; | 117 mojom::EmbeddedWorkerSetupPtr setup; |
| 118 rph->GetRemoteInterfaces()->GetInterface(&setup); | 118 rph->GetRemoteInterfaces()->GetInterface(&setup); |
| 119 setup->ExchangeInterfaceProviders( | 119 setup->ExchangeInterfaceProviders( |
| 120 thread_id, std::move(remote_interfaces), | 120 thread_id, std::move(remote_interfaces), |
| 121 mojo::MakeProxy(std::move(exposed_interfaces))); | 121 mojo::MakeProxy(std::move(exposed_interfaces))); |
| 122 } | 122 } |
| (...skipping 320 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 443 return; | 443 return; |
| 444 } | 444 } |
| 445 DCHECK(status_ == EmbeddedWorkerStatus::STOPPED); | 445 DCHECK(status_ == EmbeddedWorkerStatus::STOPPED); |
| 446 | 446 |
| 447 DCHECK(!params->pause_after_download || !params->is_installed); | 447 DCHECK(!params->pause_after_download || !params->is_installed); |
| 448 DCHECK_NE(kInvalidServiceWorkerVersionId, params->service_worker_version_id); | 448 DCHECK_NE(kInvalidServiceWorkerVersionId, params->service_worker_version_id); |
| 449 step_time_ = base::TimeTicks::Now(); | 449 step_time_ = base::TimeTicks::Now(); |
| 450 status_ = EmbeddedWorkerStatus::STARTING; | 450 status_ = EmbeddedWorkerStatus::STARTING; |
| 451 starting_phase_ = ALLOCATING_PROCESS; | 451 starting_phase_ = ALLOCATING_PROCESS; |
| 452 network_accessed_for_script_ = false; | 452 network_accessed_for_script_ = false; |
| 453 interface_registry_.reset(new shell::InterfaceRegistry); | 453 interface_registry_.reset(new service_manager::InterfaceRegistry); |
| 454 remote_interfaces_.reset(new shell::InterfaceProvider); | 454 remote_interfaces_.reset(new service_manager::InterfaceProvider); |
| 455 FOR_EACH_OBSERVER(Listener, listener_list_, OnStarting()); | 455 FOR_EACH_OBSERVER(Listener, listener_list_, OnStarting()); |
| 456 | 456 |
| 457 params->embedded_worker_id = embedded_worker_id_; | 457 params->embedded_worker_id = embedded_worker_id_; |
| 458 params->worker_devtools_agent_route_id = MSG_ROUTING_NONE; | 458 params->worker_devtools_agent_route_id = MSG_ROUTING_NONE; |
| 459 params->wait_for_debugger = false; | 459 params->wait_for_debugger = false; |
| 460 params->settings.v8_cache_options = GetV8CacheOptions(); | 460 params->settings.v8_cache_options = GetV8CacheOptions(); |
| 461 | 461 |
| 462 mojom::EmbeddedWorkerInstanceClientRequest request; | 462 mojom::EmbeddedWorkerInstanceClientRequest request; |
| 463 if (ServiceWorkerUtils::IsMojoForServiceWorkerEnabled()) { | 463 if (ServiceWorkerUtils::IsMojoForServiceWorkerEnabled()) { |
| 464 request = mojo::GetProxy(&client_); | 464 request = mojo::GetProxy(&client_); |
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 532 | 532 |
| 533 void EmbeddedWorkerInstance::ResumeAfterDownload() { | 533 void EmbeddedWorkerInstance::ResumeAfterDownload() { |
| 534 if (process_id() == ChildProcessHost::kInvalidUniqueID || | 534 if (process_id() == ChildProcessHost::kInvalidUniqueID || |
| 535 status_ != EmbeddedWorkerStatus::STARTING) { | 535 status_ != EmbeddedWorkerStatus::STARTING) { |
| 536 return; | 536 return; |
| 537 } | 537 } |
| 538 registry_->Send(process_id(), new EmbeddedWorkerMsg_ResumeAfterDownload( | 538 registry_->Send(process_id(), new EmbeddedWorkerMsg_ResumeAfterDownload( |
| 539 embedded_worker_id_)); | 539 embedded_worker_id_)); |
| 540 } | 540 } |
| 541 | 541 |
| 542 shell::InterfaceRegistry* EmbeddedWorkerInstance::GetInterfaceRegistry() { | 542 service_manager::InterfaceRegistry* |
| 543 EmbeddedWorkerInstance::GetInterfaceRegistry() { |
| 543 DCHECK(status_ == EmbeddedWorkerStatus::STARTING || | 544 DCHECK(status_ == EmbeddedWorkerStatus::STARTING || |
| 544 status_ == EmbeddedWorkerStatus::RUNNING) | 545 status_ == EmbeddedWorkerStatus::RUNNING) |
| 545 << static_cast<int>(status_); | 546 << static_cast<int>(status_); |
| 546 return interface_registry_.get(); | 547 return interface_registry_.get(); |
| 547 } | 548 } |
| 548 | 549 |
| 549 shell::InterfaceProvider* EmbeddedWorkerInstance::GetRemoteInterfaces() { | 550 service_manager::InterfaceProvider* |
| 551 EmbeddedWorkerInstance::GetRemoteInterfaces() { |
| 550 DCHECK(status_ == EmbeddedWorkerStatus::STARTING || | 552 DCHECK(status_ == EmbeddedWorkerStatus::STARTING || |
| 551 status_ == EmbeddedWorkerStatus::RUNNING) | 553 status_ == EmbeddedWorkerStatus::RUNNING) |
| 552 << static_cast<int>(status_); | 554 << static_cast<int>(status_); |
| 553 return remote_interfaces_.get(); | 555 return remote_interfaces_.get(); |
| 554 } | 556 } |
| 555 | 557 |
| 556 EmbeddedWorkerInstance::EmbeddedWorkerInstance( | 558 EmbeddedWorkerInstance::EmbeddedWorkerInstance( |
| 557 base::WeakPtr<ServiceWorkerContextCore> context, | 559 base::WeakPtr<ServiceWorkerContextCore> context, |
| 558 int embedded_worker_id) | 560 int embedded_worker_id) |
| 559 : context_(context), | 561 : context_(context), |
| (...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 690 starting_phase_ = THREAD_STARTED; | 692 starting_phase_ = THREAD_STARTED; |
| 691 if (!step_time_.is_null()) { | 693 if (!step_time_.is_null()) { |
| 692 base::TimeDelta duration = UpdateStepTime(); | 694 base::TimeDelta duration = UpdateStepTime(); |
| 693 if (inflight_start_task_->is_installed()) | 695 if (inflight_start_task_->is_installed()) |
| 694 ServiceWorkerMetrics::RecordTimeToStartThread(duration, start_situation_); | 696 ServiceWorkerMetrics::RecordTimeToStartThread(duration, start_situation_); |
| 695 } | 697 } |
| 696 | 698 |
| 697 thread_id_ = thread_id; | 699 thread_id_ = thread_id; |
| 698 FOR_EACH_OBSERVER(Listener, listener_list_, OnThreadStarted()); | 700 FOR_EACH_OBSERVER(Listener, listener_list_, OnThreadStarted()); |
| 699 | 701 |
| 700 shell::mojom::InterfaceProviderPtr exposed_interfaces; | 702 service_manager::mojom::InterfaceProviderPtr exposed_interfaces; |
| 701 interface_registry_->Bind(mojo::GetProxy(&exposed_interfaces)); | 703 interface_registry_->Bind(mojo::GetProxy(&exposed_interfaces)); |
| 702 shell::mojom::InterfaceProviderPtr remote_interfaces; | 704 service_manager::mojom::InterfaceProviderPtr remote_interfaces; |
| 703 shell::mojom::InterfaceProviderRequest request = | 705 service_manager::mojom::InterfaceProviderRequest request = |
| 704 mojo::GetProxy(&remote_interfaces); | 706 mojo::GetProxy(&remote_interfaces); |
| 705 remote_interfaces_->Bind(std::move(remote_interfaces)); | 707 remote_interfaces_->Bind(std::move(remote_interfaces)); |
| 706 BrowserThread::PostTask( | 708 BrowserThread::PostTask( |
| 707 BrowserThread::UI, FROM_HERE, | 709 BrowserThread::UI, FROM_HERE, |
| 708 base::Bind(SetupMojoOnUIThread, process_id(), thread_id_, | 710 base::Bind(SetupMojoOnUIThread, process_id(), thread_id_, |
| 709 base::Passed(&request), | 711 base::Passed(&request), |
| 710 base::Passed(exposed_interfaces.PassInterface()))); | 712 base::Passed(exposed_interfaces.PassInterface()))); |
| 711 } | 713 } |
| 712 | 714 |
| 713 void EmbeddedWorkerInstance::OnScriptLoadFailed() { | 715 void EmbeddedWorkerInstance::OnScriptLoadFailed() { |
| (...skipping 211 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 925 case SCRIPT_READ_FINISHED: | 927 case SCRIPT_READ_FINISHED: |
| 926 return "Script read finished"; | 928 return "Script read finished"; |
| 927 case STARTING_PHASE_MAX_VALUE: | 929 case STARTING_PHASE_MAX_VALUE: |
| 928 NOTREACHED(); | 930 NOTREACHED(); |
| 929 } | 931 } |
| 930 NOTREACHED() << phase; | 932 NOTREACHED() << phase; |
| 931 return std::string(); | 933 return std::string(); |
| 932 } | 934 } |
| 933 | 935 |
| 934 } // namespace content | 936 } // namespace content |
| OLD | NEW |