| Index: content/browser/service_worker/service_worker_context_core.cc
|
| diff --git a/content/browser/service_worker/service_worker_context_core.cc b/content/browser/service_worker/service_worker_context_core.cc
|
| index 55d93d46e84a4443032afb878b5ebf51234c05c7..a0bbc665b4cbcdbdb437d04c5d49de1439778830 100644
|
| --- a/content/browser/service_worker/service_worker_context_core.cc
|
| +++ b/content/browser/service_worker/service_worker_context_core.cc
|
| @@ -24,6 +24,7 @@
|
| #include "content/browser/service_worker/service_worker_context_observer.h"
|
| #include "content/browser/service_worker/service_worker_context_wrapper.h"
|
| #include "content/browser/service_worker/service_worker_database_task_manager.h"
|
| +#include "content/browser/service_worker/service_worker_dispatcher_host.h"
|
| #include "content/browser/service_worker/service_worker_info.h"
|
| #include "content/browser/service_worker/service_worker_job_coordinator.h"
|
| #include "content/browser/service_worker/service_worker_process_manager.h"
|
| @@ -220,8 +221,8 @@ ServiceWorkerContextCore::ServiceWorkerContextCore(
|
| base::ObserverListThreadSafe<ServiceWorkerContextObserver>* observer_list,
|
| ServiceWorkerContextWrapper* wrapper)
|
| : wrapper_(wrapper),
|
| - providers_(new ProcessToProviderMap),
|
| - provider_by_uuid_(new ProviderByClientUUIDMap),
|
| + providers_(base::MakeUnique<ProcessToProviderMap>()),
|
| + provider_by_uuid_(base::MakeUnique<ProviderByClientUUIDMap>()),
|
| force_update_on_page_load_(false),
|
| next_handle_id_(0),
|
| next_registration_handle_id_(0),
|
| @@ -241,6 +242,7 @@ ServiceWorkerContextCore::ServiceWorkerContextCore(
|
| ServiceWorkerContextCore* old_context,
|
| ServiceWorkerContextWrapper* wrapper)
|
| : wrapper_(wrapper),
|
| + dispatcher_hosts_(std::move(old_context->dispatcher_hosts_)),
|
| providers_(old_context->providers_.release()),
|
| provider_by_uuid_(old_context->provider_by_uuid_.release()),
|
| next_handle_id_(old_context->next_handle_id_),
|
| @@ -268,12 +270,26 @@ ServiceWorkerContextCore::~ServiceWorkerContextCore() {
|
| weak_factory_.InvalidateWeakPtrs();
|
| }
|
|
|
| -ServiceWorkerProviderHost* ServiceWorkerContextCore::GetProviderHost(
|
| - int process_id, int provider_id) {
|
| - ProviderMap* map = GetProviderMapForProcess(process_id);
|
| - if (!map)
|
| - return NULL;
|
| - return map->Lookup(provider_id);
|
| +void ServiceWorkerContextCore::AddDispatcherHost(
|
| + int process_id,
|
| + content::ServiceWorkerDispatcherHost* dispatcher_host) {
|
| + DCHECK(dispatcher_hosts_.find(process_id) == dispatcher_hosts_.end());
|
| + dispatcher_hosts_[process_id] = dispatcher_host;
|
| +}
|
| +
|
| +ServiceWorkerDispatcherHost* ServiceWorkerContextCore::GetDispatcherHost(
|
| + int process_id) {
|
| + auto it = dispatcher_hosts_.find(process_id);
|
| + if (it == dispatcher_hosts_.end())
|
| + return nullptr;
|
| + return it->second;
|
| +}
|
| +
|
| +void ServiceWorkerContextCore::RemoveDispatcherHost(int process_id) {
|
| + DCHECK(dispatcher_hosts_.find(process_id) != dispatcher_hosts_.end());
|
| + RemoveAllProviderHostsForProcess(process_id);
|
| + embedded_worker_registry_->RemoveProcess(process_id);
|
| + dispatcher_hosts_.erase(process_id);
|
| }
|
|
|
| void ServiceWorkerContextCore::AddProviderHost(
|
| @@ -288,6 +304,15 @@ void ServiceWorkerContextCore::AddProviderHost(
|
| map->AddWithID(std::move(host), provider_id);
|
| }
|
|
|
| +ServiceWorkerProviderHost* ServiceWorkerContextCore::GetProviderHost(
|
| + int process_id,
|
| + int provider_id) {
|
| + ProviderMap* map = GetProviderMapForProcess(process_id);
|
| + if (!map)
|
| + return nullptr;
|
| + return map->Lookup(provider_id);
|
| +}
|
| +
|
| void ServiceWorkerContextCore::RemoveProviderHost(
|
| int process_id, int provider_id) {
|
| ProviderMap* map = GetProviderMapForProcess(process_id);
|
| @@ -505,7 +530,7 @@ void ServiceWorkerContextCore::UnregistrationComplete(
|
| ServiceWorkerRegistration* ServiceWorkerContextCore::GetLiveRegistration(
|
| int64_t id) {
|
| RegistrationsMap::iterator it = live_registrations_.find(id);
|
| - return (it != live_registrations_.end()) ? it->second : NULL;
|
| + return (it != live_registrations_.end()) ? it->second : nullptr;
|
| }
|
|
|
| void ServiceWorkerContextCore::AddLiveRegistration(
|
| @@ -527,7 +552,7 @@ void ServiceWorkerContextCore::RemoveLiveRegistration(int64_t id) {
|
|
|
| ServiceWorkerVersion* ServiceWorkerContextCore::GetLiveVersion(int64_t id) {
|
| VersionMap::iterator it = live_versions_.find(id);
|
| - return (it != live_versions_.end()) ? it->second : NULL;
|
| + return (it != live_versions_.end()) ? it->second : nullptr;
|
| }
|
|
|
| // PlzNavigate
|
| @@ -636,14 +661,7 @@ ServiceWorkerContextCore::TransferProviderHostOut(int process_id,
|
| ProviderMap* map = GetProviderMapForProcess(process_id);
|
| ServiceWorkerProviderHost* transferee = map->Lookup(provider_id);
|
| std::unique_ptr<ServiceWorkerProviderHost> replacement =
|
| - base::MakeUnique<ServiceWorkerProviderHost>(
|
| - process_id, transferee->frame_id(), provider_id,
|
| - transferee->provider_type(),
|
| - transferee->is_parent_frame_secure()
|
| - ? ServiceWorkerProviderHost::FrameSecurityLevel::SECURE
|
| - : ServiceWorkerProviderHost::FrameSecurityLevel::INSECURE,
|
| - AsWeakPtr(), transferee->dispatcher_host());
|
| - transferee->PrepareForCrossSiteTransfer();
|
| + transferee->PrepareForCrossSiteTransfer();
|
| return map->Replace(provider_id, std::move(replacement));
|
| }
|
|
|
|
|