| 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 d787d5c1d9e71227ef5df1d4b66fd1540badb902..457fc13fb6c325d20a5987d4ca5185c95f152f01 100644
|
| --- a/content/browser/service_worker/service_worker_context_core.cc
|
| +++ b/content/browser/service_worker/service_worker_context_core.cc
|
| @@ -278,13 +278,14 @@ ServiceWorkerProviderHost* ServiceWorkerContextCore::GetProviderHost(
|
|
|
| void ServiceWorkerContextCore::AddProviderHost(
|
| std::unique_ptr<ServiceWorkerProviderHost> host) {
|
| - ServiceWorkerProviderHost* host_ptr = host.release(); // we take ownership
|
| - ProviderMap* map = GetProviderMapForProcess(host_ptr->process_id());
|
| + int process_id = host->process_id();
|
| + int provider_id = host->provider_id();
|
| + ProviderMap* map = GetProviderMapForProcess(process_id);
|
| if (!map) {
|
| - map = new ProviderMap;
|
| - providers_->AddWithID(map, host_ptr->process_id());
|
| + providers_->AddWithID(base::MakeUnique<ProviderMap>(), process_id);
|
| + map = GetProviderMapForProcess(process_id);
|
| }
|
| - map->AddWithID(host_ptr, host_ptr->provider_id());
|
| + map->AddWithID(std::move(host), provider_id);
|
| }
|
|
|
| void ServiceWorkerContextCore::RemoveProviderHost(
|
| @@ -634,16 +635,16 @@ ServiceWorkerContextCore::TransferProviderHostOut(int process_id,
|
| int provider_id) {
|
| ProviderMap* map = GetProviderMapForProcess(process_id);
|
| ServiceWorkerProviderHost* transferee = map->Lookup(provider_id);
|
| - ServiceWorkerProviderHost* replacement = new 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());
|
| - map->Replace(provider_id, replacement);
|
| + 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();
|
| - return base::WrapUnique(transferee);
|
| + return map->Replace(provider_id, std::move(replacement));
|
| }
|
|
|
| void ServiceWorkerContextCore::TransferProviderHostIn(
|
| @@ -661,8 +662,7 @@ void ServiceWorkerContextCore::TransferProviderHostIn(
|
| new_provider_id,
|
| temp->provider_type(),
|
| temp->dispatcher_host());
|
| - map->Replace(new_provider_id, transferee.release());
|
| - delete temp;
|
| + map->Replace(new_provider_id, std::move(transferee));
|
| }
|
|
|
| void ServiceWorkerContextCore::ClearAllServiceWorkersForTest(
|
|
|