Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(310)

Side by Side Diff: content/browser/service_worker/embedded_worker_instance.cc

Issue 2456493003: Add frame-specific InterfaceProviderSpec. (Closed)
Patch Set: . Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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_ =
466 service_manager::Identity(), service_manager::InterfaceProviderSpec()); 466 base::MakeUnique<service_manager::InterfaceRegistry>(std::string());
467 remote_interfaces_.reset(new service_manager::InterfaceProvider); 467 remote_interfaces_.reset(new service_manager::InterfaceProvider);
468 for (auto& observer : listener_list_) 468 for (auto& observer : listener_list_)
469 observer.OnStarting(); 469 observer.OnStarting();
470 470
471 params->embedded_worker_id = embedded_worker_id_; 471 params->embedded_worker_id = embedded_worker_id_;
472 params->worker_devtools_agent_route_id = MSG_ROUTING_NONE; 472 params->worker_devtools_agent_route_id = MSG_ROUTING_NONE;
473 params->wait_for_debugger = false; 473 params->wait_for_debugger = false;
474 params->settings.v8_cache_options = GetV8CacheOptions(); 474 params->settings.v8_cache_options = GetV8CacheOptions();
475 475
476 mojom::EmbeddedWorkerInstanceClientRequest request; 476 mojom::EmbeddedWorkerInstanceClientRequest request;
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after
616 616
617 ServiceWorkerStatusCode EmbeddedWorkerInstance::SendMojoStartWorker( 617 ServiceWorkerStatusCode EmbeddedWorkerInstance::SendMojoStartWorker(
618 std::unique_ptr<EmbeddedWorkerStartParams> params) { 618 std::unique_ptr<EmbeddedWorkerStartParams> params) {
619 if (!context_) 619 if (!context_)
620 return SERVICE_WORKER_ERROR_ABORT; 620 return SERVICE_WORKER_ERROR_ABORT;
621 service_manager::mojom::InterfaceProviderPtr remote_interfaces; 621 service_manager::mojom::InterfaceProviderPtr remote_interfaces;
622 service_manager::mojom::InterfaceProviderRequest request = 622 service_manager::mojom::InterfaceProviderRequest request =
623 mojo::GetProxy(&remote_interfaces); 623 mojo::GetProxy(&remote_interfaces);
624 remote_interfaces_->Bind(std::move(remote_interfaces)); 624 remote_interfaces_->Bind(std::move(remote_interfaces));
625 service_manager::mojom::InterfaceProviderPtr exposed_interfaces; 625 service_manager::mojom::InterfaceProviderPtr exposed_interfaces;
626 interface_registry_->Bind(mojo::GetProxy(&exposed_interfaces), 626 interface_registry_->Bind(
627 service_manager::Identity(), 627 mojo::GetProxy(&exposed_interfaces), service_manager::Identity(),
628 service_manager::InterfaceProviderSpec()); 628 service_manager::InterfaceProviderSpec(), service_manager::Identity(),
629 service_manager::InterfaceProviderSpec());
629 client_->StartWorker(*params, std::move(exposed_interfaces), 630 client_->StartWorker(*params, std::move(exposed_interfaces),
630 std::move(request)); 631 std::move(request));
631 registry_->BindWorkerToProcess(process_id(), embedded_worker_id()); 632 registry_->BindWorkerToProcess(process_id(), embedded_worker_id());
632 TRACE_EVENT_ASYNC_STEP_PAST1("ServiceWorker", "EmbeddedWorkerInstance::Start", 633 TRACE_EVENT_ASYNC_STEP_PAST1("ServiceWorker", "EmbeddedWorkerInstance::Start",
633 this, "SendStartWorker", "Status", "mojo"); 634 this, "SendStartWorker", "Status", "mojo");
634 OnStartWorkerMessageSent(); 635 OnStartWorkerMessageSent();
635 return SERVICE_WORKER_OK; 636 return SERVICE_WORKER_OK;
636 } 637 }
637 638
638 void EmbeddedWorkerInstance::OnStartWorkerMessageSent() { 639 void EmbeddedWorkerInstance::OnStartWorkerMessageSent() {
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
729 730
730 thread_id_ = thread_id; 731 thread_id_ = thread_id;
731 for (auto& observer : listener_list_) 732 for (auto& observer : listener_list_)
732 observer.OnThreadStarted(); 733 observer.OnThreadStarted();
733 734
734 // This code is for BackgroundSync and FetchEvent, which have been already 735 // This code is for BackgroundSync and FetchEvent, which have been already
735 // mojofied. Interfaces are exchanged at StartWorker when mojo for the service 736 // 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. 737 // worker is enabled, so this code isn't necessary when the flag is enabled.
737 if (!ServiceWorkerUtils::IsMojoForServiceWorkerEnabled()) { 738 if (!ServiceWorkerUtils::IsMojoForServiceWorkerEnabled()) {
738 service_manager::mojom::InterfaceProviderPtr exposed_interfaces; 739 service_manager::mojom::InterfaceProviderPtr exposed_interfaces;
739 interface_registry_->Bind(mojo::GetProxy(&exposed_interfaces), 740 interface_registry_->Bind(
740 service_manager::Identity(), 741 mojo::GetProxy(&exposed_interfaces), service_manager::Identity(),
741 service_manager::InterfaceProviderSpec()); 742 service_manager::InterfaceProviderSpec(), service_manager::Identity(),
743 service_manager::InterfaceProviderSpec());
742 service_manager::mojom::InterfaceProviderPtr remote_interfaces; 744 service_manager::mojom::InterfaceProviderPtr remote_interfaces;
743 service_manager::mojom::InterfaceProviderRequest request = 745 service_manager::mojom::InterfaceProviderRequest request =
744 mojo::GetProxy(&remote_interfaces); 746 mojo::GetProxy(&remote_interfaces);
745 remote_interfaces_->Bind(std::move(remote_interfaces)); 747 remote_interfaces_->Bind(std::move(remote_interfaces));
746 BrowserThread::PostTask( 748 BrowserThread::PostTask(
747 BrowserThread::UI, FROM_HERE, 749 BrowserThread::UI, FROM_HERE,
748 base::Bind(SetupMojoOnUIThread, process_id(), thread_id_, 750 base::Bind(SetupMojoOnUIThread, process_id(), thread_id_,
749 base::Passed(&request), 751 base::Passed(&request),
750 base::Passed(exposed_interfaces.PassInterface()))); 752 base::Passed(exposed_interfaces.PassInterface())));
751 } 753 }
(...skipping 218 matching lines...) Expand 10 before | Expand all | Expand 10 after
970 case SCRIPT_READ_FINISHED: 972 case SCRIPT_READ_FINISHED:
971 return "Script read finished"; 973 return "Script read finished";
972 case STARTING_PHASE_MAX_VALUE: 974 case STARTING_PHASE_MAX_VALUE:
973 NOTREACHED(); 975 NOTREACHED();
974 } 976 }
975 NOTREACHED() << phase; 977 NOTREACHED() << phase;
976 return std::string(); 978 return std::string();
977 } 979 }
978 980
979 } // namespace content 981 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698