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 |