Index: content/browser/service_worker/service_worker_dispatcher_host.cc |
diff --git a/content/browser/service_worker/service_worker_dispatcher_host.cc b/content/browser/service_worker/service_worker_dispatcher_host.cc |
index 96f7899364741790b225525b89fba6ff67e527e8..1fb1130b493ef61f803b9a9205f9924391c1a082 100644 |
--- a/content/browser/service_worker/service_worker_dispatcher_host.cc |
+++ b/content/browser/service_worker/service_worker_dispatcher_host.cc |
@@ -119,11 +119,8 @@ ServiceWorkerDispatcherHost::ServiceWorkerDispatcherHost( |
} |
ServiceWorkerDispatcherHost::~ServiceWorkerDispatcherHost() { |
- if (GetContext()) { |
- GetContext()->RemoveAllProviderHostsForProcess(render_process_id_); |
- GetContext()->embedded_worker_registry()->RemoveChildProcessSender( |
- render_process_id_); |
- } |
+ if (GetContext()) |
+ GetContext()->RemoveDispatcherHost(render_process_id_); |
} |
void ServiceWorkerDispatcherHost::Init( |
@@ -138,8 +135,7 @@ void ServiceWorkerDispatcherHost::Init( |
context_wrapper_ = context_wrapper; |
if (!GetContext()) |
return; |
- GetContext()->embedded_worker_registry()->AddChildProcessSender( |
- render_process_id_, this); |
+ GetContext()->AddDispatcherHost(render_process_id_, this); |
} |
void ServiceWorkerDispatcherHost::OnFilterAdded(IPC::Channel* channel) { |
@@ -156,11 +152,8 @@ void ServiceWorkerDispatcherHost::OnFilterAdded(IPC::Channel* channel) { |
void ServiceWorkerDispatcherHost::OnFilterRemoved() { |
// Don't wait until the destructor to teardown since a new dispatcher host |
// for this process might be created before then. |
- if (GetContext()) { |
- GetContext()->RemoveAllProviderHostsForProcess(render_process_id_); |
- GetContext()->embedded_worker_registry()->RemoveChildProcessSender( |
- render_process_id_); |
- } |
+ if (GetContext()) |
+ GetContext()->RemoveDispatcherHost(render_process_id_); |
context_wrapper_ = nullptr; |
channel_ready_ = false; |
} |
@@ -185,12 +178,6 @@ bool ServiceWorkerDispatcherHost::OnMessageReceived( |
OnGetRegistrations) |
IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_GetRegistrationForReady, |
OnGetRegistrationForReady) |
- IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_ProviderCreated, |
- OnProviderCreated) |
- IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_ProviderDestroyed, |
- OnProviderDestroyed) |
- IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_SetVersionId, |
- OnSetHostedVersionId) |
IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_PostMessageToWorker, |
OnPostMessageToWorker) |
IPC_MESSAGE_HANDLER(EmbeddedWorkerHostMsg_WorkerReadyForInspection, |
@@ -1004,10 +991,7 @@ void ServiceWorkerDispatcherHost::DispatchExtendableMessageEvent( |
} |
void ServiceWorkerDispatcherHost::OnProviderCreated( |
- int provider_id, |
- int route_id, |
- ServiceWorkerProviderType provider_type, |
- bool is_parent_frame_secure) { |
+ ServiceWorkerProviderHostInfo info) { |
// TODO(pkasting): Remove ScopedTracker below once crbug.com/477117 is fixed. |
tracked_objects::ScopedTracker tracking_profile( |
FROM_HERE_WITH_EXPLICIT_FUNCTION( |
@@ -1016,19 +1000,19 @@ void ServiceWorkerDispatcherHost::OnProviderCreated( |
"ServiceWorkerDispatcherHost::OnProviderCreated"); |
if (!GetContext()) |
return; |
- if (GetContext()->GetProviderHost(render_process_id_, provider_id)) { |
+ if (GetContext()->GetProviderHost(render_process_id_, info.provider_id)) { |
bad_message::ReceivedBadMessage(this, |
bad_message::SWDH_PROVIDER_CREATED_NO_HOST); |
return; |
} |
- std::unique_ptr<ServiceWorkerProviderHost> provider_host; |
if (IsBrowserSideNavigationEnabled() && |
- ServiceWorkerUtils::IsBrowserAssignedProviderId(provider_id)) { |
+ ServiceWorkerUtils::IsBrowserAssignedProviderId(info.provider_id)) { |
+ std::unique_ptr<ServiceWorkerProviderHost> provider_host; |
// PlzNavigate |
// Retrieve the provider host previously created for navigation requests. |
ServiceWorkerNavigationHandleCore* navigation_handle_core = |
- GetContext()->GetNavigationHandleCore(provider_id); |
+ GetContext()->GetNavigationHandleCore(info.provider_id); |
if (navigation_handle_core != nullptr) |
provider_host = navigation_handle_core->RetrievePreCreatedHost(); |
@@ -1036,25 +1020,19 @@ void ServiceWorkerDispatcherHost::OnProviderCreated( |
// Just return as the navigation will be stopped in the renderer as well. |
if (provider_host == nullptr) |
return; |
- DCHECK_EQ(SERVICE_WORKER_PROVIDER_FOR_WINDOW, provider_type); |
- provider_host->CompleteNavigationInitialized(render_process_id_, route_id, |
- this); |
+ DCHECK_EQ(SERVICE_WORKER_PROVIDER_FOR_WINDOW, info.type); |
+ provider_host->CompleteNavigationInitialized(render_process_id_, |
+ info.route_id, this); |
+ GetContext()->AddProviderHost(std::move(provider_host)); |
} else { |
- if (ServiceWorkerUtils::IsBrowserAssignedProviderId(provider_id)) { |
+ if (ServiceWorkerUtils::IsBrowserAssignedProviderId(info.provider_id)) { |
bad_message::ReceivedBadMessage( |
this, bad_message::SWDH_PROVIDER_CREATED_NO_HOST); |
return; |
} |
- ServiceWorkerProviderHost::FrameSecurityLevel parent_frame_security_level = |
- is_parent_frame_secure |
- ? ServiceWorkerProviderHost::FrameSecurityLevel::SECURE |
- : ServiceWorkerProviderHost::FrameSecurityLevel::INSECURE; |
- provider_host = std::unique_ptr<ServiceWorkerProviderHost>( |
- new ServiceWorkerProviderHost( |
- render_process_id_, route_id, provider_id, provider_type, |
- parent_frame_security_level, GetContext()->AsWeakPtr(), this)); |
- } |
- GetContext()->AddProviderHost(std::move(provider_host)); |
+ GetContext()->AddProviderHost(ServiceWorkerProviderHost::Create( |
+ render_process_id_, std::move(info), GetContext()->AsWeakPtr(), this)); |
+ } |
} |
void ServiceWorkerDispatcherHost::OnProviderDestroyed(int provider_id) { |