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..a788ca2526655f2491f42395559eab11cabdd1a7 100644 | 
| --- a/content/browser/service_worker/service_worker_provider_host.cc | 
| +++ b/content/browser/service_worker/service_worker_provider_host.cc | 
| @@ -91,22 +91,31 @@ 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( | 
| 
 
dcheng
2017/02/14 08:47:46
In general, base::WrapUnique(new T(...)) should be
 
shimazu
2017/02/15 02:24:18
That's because the constructor is private:
https:/
 
dcheng
2017/02/15 04:29:35
Ah oops. Thanks for pointing that out.
 
 | 
| ChildProcessHost::kInvalidUniqueID, MSG_ROUTING_NONE, provider_id, | 
| - SERVICE_WORKER_PROVIDER_FOR_WINDOW, | 
| - are_ancestors_secure ? FrameSecurityLevel::SECURE | 
| - : FrameSecurityLevel::INSECURE, | 
| - context, nullptr); | 
| + SERVICE_WORKER_PROVIDER_FOR_WINDOW, are_ancestors_secure, context, | 
| + nullptr)); | 
| host->web_contents_getter_ = web_contents_getter; | 
| return 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( | 
| + process_id, info.route_id, info.provider_id, info.type, | 
| + info.is_parent_frame_secure, context, dispatcher_host)); | 
| +} | 
| + | 
| ServiceWorkerProviderHost::ServiceWorkerProviderHost( | 
| int render_process_id, | 
| int route_id, | 
| int provider_id, | 
| ServiceWorkerProviderType provider_type, | 
| - FrameSecurityLevel parent_frame_security_level, | 
| + bool is_parent_frame_secure, | 
| base::WeakPtr<ServiceWorkerContextCore> context, | 
| ServiceWorkerDispatcherHost* dispatcher_host) | 
| : client_uuid_(base::GenerateGUID()), | 
| @@ -115,7 +124,7 @@ ServiceWorkerProviderHost::ServiceWorkerProviderHost( | 
| render_thread_id_(kDocumentMainThreadId), | 
| provider_id_(provider_id), | 
| provider_type_(provider_type), | 
| - parent_frame_security_level_(parent_frame_security_level), | 
| + is_parent_frame_secure_(is_parent_frame_secure), | 
| context_(context), | 
| dispatcher_host_(dispatcher_host), | 
| allow_association_(true) { | 
| @@ -486,12 +495,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(), | 
| + is_parent_frame_secure(), context_, dispatcher_host())); | 
| + | 
| for (const GURL& pattern : associated_patterns_) | 
| DecreaseProcessReference(pattern); | 
| @@ -511,6 +526,7 @@ void ServiceWorkerProviderHost::PrepareForCrossSiteTransfer() { | 
| provider_id_ = kInvalidServiceWorkerProviderId; | 
| provider_type_ = SERVICE_WORKER_PROVIDER_UNKNOWN; | 
| dispatcher_host_ = nullptr; | 
| + return new_provider_host; | 
| } | 
| void ServiceWorkerProviderHost::CompleteCrossSiteTransfer( |