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 444 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
455 return; | 455 return; |
456 } | 456 } |
457 DCHECK(status_ == EmbeddedWorkerStatus::STOPPED); | 457 DCHECK(status_ == EmbeddedWorkerStatus::STOPPED); |
458 | 458 |
459 DCHECK(!params->pause_after_download || !params->is_installed); | 459 DCHECK(!params->pause_after_download || !params->is_installed); |
460 DCHECK_NE(kInvalidServiceWorkerVersionId, params->service_worker_version_id); | 460 DCHECK_NE(kInvalidServiceWorkerVersionId, params->service_worker_version_id); |
461 step_time_ = base::TimeTicks::Now(); | 461 step_time_ = base::TimeTicks::Now(); |
462 status_ = EmbeddedWorkerStatus::STARTING; | 462 status_ = EmbeddedWorkerStatus::STARTING; |
463 starting_phase_ = ALLOCATING_PROCESS; | 463 starting_phase_ = ALLOCATING_PROCESS; |
464 network_accessed_for_script_ = false; | 464 network_accessed_for_script_ = false; |
465 interface_registry_ = base::MakeUnique<service_manager::InterfaceRegistry>( | 465 interface_registry_ = base::MakeUnique<service_manager::InterfaceRegistry>(); |
466 service_manager::Identity(), service_manager::InterfaceProviderSpec()); | |
467 remote_interfaces_.reset(new service_manager::InterfaceProvider); | 466 remote_interfaces_.reset(new service_manager::InterfaceProvider); |
468 for (auto& observer : listener_list_) | 467 for (auto& observer : listener_list_) |
469 observer.OnStarting(); | 468 observer.OnStarting(); |
470 | 469 |
471 params->embedded_worker_id = embedded_worker_id_; | 470 params->embedded_worker_id = embedded_worker_id_; |
472 params->worker_devtools_agent_route_id = MSG_ROUTING_NONE; | 471 params->worker_devtools_agent_route_id = MSG_ROUTING_NONE; |
473 params->wait_for_debugger = false; | 472 params->wait_for_debugger = false; |
474 params->settings.v8_cache_options = GetV8CacheOptions(); | 473 params->settings.v8_cache_options = GetV8CacheOptions(); |
475 | 474 |
476 mojom::EmbeddedWorkerInstanceClientRequest request; | 475 mojom::EmbeddedWorkerInstanceClientRequest request; |
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
616 | 615 |
617 ServiceWorkerStatusCode EmbeddedWorkerInstance::SendMojoStartWorker( | 616 ServiceWorkerStatusCode EmbeddedWorkerInstance::SendMojoStartWorker( |
618 std::unique_ptr<EmbeddedWorkerStartParams> params) { | 617 std::unique_ptr<EmbeddedWorkerStartParams> params) { |
619 if (!context_) | 618 if (!context_) |
620 return SERVICE_WORKER_ERROR_ABORT; | 619 return SERVICE_WORKER_ERROR_ABORT; |
621 service_manager::mojom::InterfaceProviderPtr remote_interfaces; | 620 service_manager::mojom::InterfaceProviderPtr remote_interfaces; |
622 service_manager::mojom::InterfaceProviderRequest request = | 621 service_manager::mojom::InterfaceProviderRequest request = |
623 mojo::GetProxy(&remote_interfaces); | 622 mojo::GetProxy(&remote_interfaces); |
624 remote_interfaces_->Bind(std::move(remote_interfaces)); | 623 remote_interfaces_->Bind(std::move(remote_interfaces)); |
625 service_manager::mojom::InterfaceProviderPtr exposed_interfaces; | 624 service_manager::mojom::InterfaceProviderPtr exposed_interfaces; |
626 interface_registry_->Bind(mojo::GetProxy(&exposed_interfaces), | 625 interface_registry_->Bind( |
627 service_manager::Identity(), | 626 mojo::GetProxy(&exposed_interfaces), service_manager::Identity(), |
628 service_manager::InterfaceProviderSpec()); | 627 service_manager::InterfaceProviderSpec(), service_manager::Identity(), |
| 628 service_manager::InterfaceProviderSpec()); |
629 client_->StartWorker(*params, std::move(exposed_interfaces), | 629 client_->StartWorker(*params, std::move(exposed_interfaces), |
630 std::move(request)); | 630 std::move(request)); |
631 registry_->BindWorkerToProcess(process_id(), embedded_worker_id()); | 631 registry_->BindWorkerToProcess(process_id(), embedded_worker_id()); |
632 TRACE_EVENT_ASYNC_STEP_PAST1("ServiceWorker", "EmbeddedWorkerInstance::Start", | 632 TRACE_EVENT_ASYNC_STEP_PAST1("ServiceWorker", "EmbeddedWorkerInstance::Start", |
633 this, "SendStartWorker", "Status", "mojo"); | 633 this, "SendStartWorker", "Status", "mojo"); |
634 OnStartWorkerMessageSent(); | 634 OnStartWorkerMessageSent(); |
635 return SERVICE_WORKER_OK; | 635 return SERVICE_WORKER_OK; |
636 } | 636 } |
637 | 637 |
638 void EmbeddedWorkerInstance::OnStartWorkerMessageSent() { | 638 void EmbeddedWorkerInstance::OnStartWorkerMessageSent() { |
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
729 | 729 |
730 thread_id_ = thread_id; | 730 thread_id_ = thread_id; |
731 for (auto& observer : listener_list_) | 731 for (auto& observer : listener_list_) |
732 observer.OnThreadStarted(); | 732 observer.OnThreadStarted(); |
733 | 733 |
734 // This code is for BackgroundSync and FetchEvent, which have been already | 734 // This code is for BackgroundSync and FetchEvent, which have been already |
735 // mojofied. Interfaces are exchanged at StartWorker when mojo for the service | 735 // mojofied. Interfaces are exchanged at StartWorker when mojo for the service |
736 // worker is enabled, so this code isn't necessary when the flag is enabled. | 736 // worker is enabled, so this code isn't necessary when the flag is enabled. |
737 if (!ServiceWorkerUtils::IsMojoForServiceWorkerEnabled()) { | 737 if (!ServiceWorkerUtils::IsMojoForServiceWorkerEnabled()) { |
738 service_manager::mojom::InterfaceProviderPtr exposed_interfaces; | 738 service_manager::mojom::InterfaceProviderPtr exposed_interfaces; |
739 interface_registry_->Bind(mojo::GetProxy(&exposed_interfaces), | 739 interface_registry_->Bind( |
740 service_manager::Identity(), | 740 mojo::GetProxy(&exposed_interfaces), service_manager::Identity(), |
741 service_manager::InterfaceProviderSpec()); | 741 service_manager::InterfaceProviderSpec(), service_manager::Identity(), |
| 742 service_manager::InterfaceProviderSpec()); |
742 service_manager::mojom::InterfaceProviderPtr remote_interfaces; | 743 service_manager::mojom::InterfaceProviderPtr remote_interfaces; |
743 service_manager::mojom::InterfaceProviderRequest request = | 744 service_manager::mojom::InterfaceProviderRequest request = |
744 mojo::GetProxy(&remote_interfaces); | 745 mojo::GetProxy(&remote_interfaces); |
745 remote_interfaces_->Bind(std::move(remote_interfaces)); | 746 remote_interfaces_->Bind(std::move(remote_interfaces)); |
746 BrowserThread::PostTask( | 747 BrowserThread::PostTask( |
747 BrowserThread::UI, FROM_HERE, | 748 BrowserThread::UI, FROM_HERE, |
748 base::Bind(SetupMojoOnUIThread, process_id(), thread_id_, | 749 base::Bind(SetupMojoOnUIThread, process_id(), thread_id_, |
749 base::Passed(&request), | 750 base::Passed(&request), |
750 base::Passed(exposed_interfaces.PassInterface()))); | 751 base::Passed(exposed_interfaces.PassInterface()))); |
751 } | 752 } |
(...skipping 218 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
970 case SCRIPT_READ_FINISHED: | 971 case SCRIPT_READ_FINISHED: |
971 return "Script read finished"; | 972 return "Script read finished"; |
972 case STARTING_PHASE_MAX_VALUE: | 973 case STARTING_PHASE_MAX_VALUE: |
973 NOTREACHED(); | 974 NOTREACHED(); |
974 } | 975 } |
975 NOTREACHED() << phase; | 976 NOTREACHED() << phase; |
976 return std::string(); | 977 return std::string(); |
977 } | 978 } |
978 | 979 |
979 } // namespace content | 980 } // namespace content |
OLD | NEW |