Chromium Code Reviews| Index: content/browser/service_worker/service_worker_provider_host.cc |
| diff --git a/content/browser/service_worker/service_worker_provider_host.cc b/content/browser/service_worker/service_worker_provider_host.cc |
| index a32fdd32fea0d945eff3b333e822dd761e6becec..9133d9f6cb6a65e65e74e58f662cd99abac748a2 100644 |
| --- a/content/browser/service_worker/service_worker_provider_host.cc |
| +++ b/content/browser/service_worker/service_worker_provider_host.cc |
| @@ -91,16 +91,43 @@ ServiceWorkerProviderHost::PreCreateNavigationHost( |
| CHECK(IsBrowserSideNavigationEnabled()); |
| // Generate a new browser-assigned id for the host. |
| int provider_id = g_next_navigation_provider_id--; |
| - auto host = base::MakeUnique<ServiceWorkerProviderHost>( |
| + auto host = base::WrapUnique(new ServiceWorkerProviderHost( |
| ChildProcessHost::kInvalidUniqueID, MSG_ROUTING_NONE, provider_id, |
| SERVICE_WORKER_PROVIDER_FOR_WINDOW, |
| are_ancestors_secure ? FrameSecurityLevel::SECURE |
| : FrameSecurityLevel::INSECURE, |
| - context, nullptr); |
| + context, nullptr)); |
| host->web_contents_getter_ = web_contents_getter; |
| return host; |
| } |
| +// static |
| +std::unique_ptr<ServiceWorkerProviderHost> |
| +ServiceWorkerProviderHost::CreateForTesting( |
| + int process_id, |
| + int provider_id, |
| + ServiceWorkerProviderType type, |
| + base::WeakPtr<ServiceWorkerContextCore> context, |
| + int route_id, |
| + ServiceWorkerDispatcherHost* dispatcher_host) { |
| + return base::WrapUnique(new ServiceWorkerProviderHost( |
| + process_id, route_id, provider_id, type, |
| + FrameSecurityLevel::UNINITIALIZED, context, dispatcher_host)); |
| +} |
| + |
| +// static |
| +std::unique_ptr<ServiceWorkerProviderHost> ServiceWorkerProviderHost::Create( |
| + int process_id, |
| + ServiceWorkerProviderHostInfo info, |
| + base::WeakPtr<ServiceWorkerContextCore> context, |
| + ServiceWorkerDispatcherHost* dispatcher_host) { |
| + return base::WrapUnique(new ServiceWorkerProviderHost( |
|
falken
2017/01/26 05:15:43
MakeUnique is preferred
shimazu
2017/01/26 09:27:23
The constructor is private, so WrapUnique is used
|
| + process_id, info.route_id, info.provider_id, info.type, |
| + info.is_parent_frame_secure ? FrameSecurityLevel::SECURE |
| + : FrameSecurityLevel::INSECURE, |
| + context, dispatcher_host)); |
| +} |
| + |
| ServiceWorkerProviderHost::ServiceWorkerProviderHost( |
| int render_process_id, |
| int route_id, |
| @@ -486,12 +513,18 @@ bool ServiceWorkerProviderHost::GetRegistrationForReady( |
| return true; |
| } |
| -void ServiceWorkerProviderHost::PrepareForCrossSiteTransfer() { |
| +std::unique_ptr<ServiceWorkerProviderHost> |
| +ServiceWorkerProviderHost::PrepareForCrossSiteTransfer() { |
| DCHECK_NE(ChildProcessHost::kInvalidUniqueID, render_process_id_); |
| DCHECK_NE(MSG_ROUTING_NONE, route_id_); |
| DCHECK_EQ(kDocumentMainThreadId, render_thread_id_); |
| DCHECK_NE(SERVICE_WORKER_PROVIDER_UNKNOWN, provider_type_); |
| + std::unique_ptr<ServiceWorkerProviderHost> new_provider_host = |
| + base::WrapUnique(new ServiceWorkerProviderHost( |
| + process_id(), frame_id(), provider_id(), provider_type(), |
| + parent_frame_security_level_, context_, dispatcher_host())); |
| + |
| for (const GURL& pattern : associated_patterns_) |
| DecreaseProcessReference(pattern); |
| @@ -511,6 +544,7 @@ void ServiceWorkerProviderHost::PrepareForCrossSiteTransfer() { |
| provider_id_ = kInvalidServiceWorkerProviderId; |
| provider_type_ = SERVICE_WORKER_PROVIDER_UNKNOWN; |
| dispatcher_host_ = nullptr; |
| + return new_provider_host; |
| } |
| void ServiceWorkerProviderHost::CompleteCrossSiteTransfer( |