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 f15022e589991540a4988eb0f7b2b81b9e850775..40a00374088869c3373f2ca7191e02ab95b7275f 100644 |
--- a/content/browser/service_worker/service_worker_provider_host.cc |
+++ b/content/browser/service_worker/service_worker_provider_host.cc |
@@ -90,22 +90,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( |
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()), |
@@ -114,7 +123,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) { |
@@ -490,12 +499,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); |
@@ -515,6 +530,7 @@ void ServiceWorkerProviderHost::PrepareForCrossSiteTransfer() { |
provider_id_ = kInvalidServiceWorkerProviderId; |
provider_type_ = SERVICE_WORKER_PROVIDER_UNKNOWN; |
dispatcher_host_ = nullptr; |
+ return new_provider_host; |
} |
void ServiceWorkerProviderHost::CompleteCrossSiteTransfer( |