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

Unified Diff: content/browser/service_worker/service_worker_dispatcher_host.cc

Issue 2638313002: Manage ServiceWorkerDispatcherHost in ServiceWorkerContextCore (Closed)
Patch Set: Rebase Created 3 years, 10 months 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 side-by-side diff with in-line comments
Download patch
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) {

Powered by Google App Engine
This is Rietveld 408576698