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 0416733b35fd9fec878fa3d7a7e3d8c08f54f817..e6879b6a9a6081701e68175db4a2b92087448a7e 100644 |
--- a/content/browser/service_worker/service_worker_context_core.cc |
+++ b/content/browser/service_worker/service_worker_context_core.cc |
@@ -141,6 +141,7 @@ ServiceWorkerContextCore::ServiceWorkerContextCore( |
provider_by_uuid_(new ProviderByClientUUIDMap), |
next_handle_id_(0), |
next_registration_handle_id_(0), |
+ next_navigation_provider_host_id_(0), |
observer_list_(observer_list), |
weak_factory_(this) { |
// These get a WeakPtr from weak_factory_, so must be set after weak_factory_ |
@@ -163,6 +164,8 @@ ServiceWorkerContextCore::ServiceWorkerContextCore( |
provider_by_uuid_(old_context->provider_by_uuid_.release()), |
next_handle_id_(old_context->next_handle_id_), |
next_registration_handle_id_(old_context->next_registration_handle_id_), |
+ next_navigation_provider_host_id_( |
+ old_context->next_navigation_provider_host_id_), |
observer_list_(old_context->observer_list_), |
weak_factory_(this) { |
// These get a WeakPtr from weak_factory_, so must be set after weak_factory_ |
@@ -228,6 +231,27 @@ ServiceWorkerContextCore::GetClientProviderHostIterator(const GURL& origin) { |
providers_.get(), base::Bind(IsSameOriginClientProviderHost, origin))); |
} |
+scoped_ptr<ServiceWorkerProviderHost> |
+ServiceWorkerContextCore::CreateNavigationProviderHost() { |
+ return scoped_ptr<ServiceWorkerProviderHost>(new ServiceWorkerProviderHost( |
+ ServiceWorkerProviderHost::kVirtualProcessIDForNavigationRequest, |
+ MSG_ROUTING_NONE, next_navigation_provider_host_id_++, |
+ SERVICE_WORKER_PROVIDER_FOR_WINDOW, AsWeakPtr(), nullptr)); |
+} |
+ |
+void ServiceWorkerContextCore::RegisterNavigationProviderHost( |
+ const GURL& response_stream_url, |
+ scoped_ptr<ServiceWorkerProviderHost> provider_host) { |
+ navigation_provider_host_map_.add(response_stream_url.spec(), |
+ provider_host.Pass()); |
+} |
+ |
+scoped_ptr<ServiceWorkerProviderHost> |
+ServiceWorkerContextCore::TakeNavigationProviderHost( |
+ const GURL& response_stream_url) { |
+ return navigation_provider_host_map_.take(response_stream_url.spec()); |
+} |
+ |
void ServiceWorkerContextCore::RegisterProviderHostByClientID( |
const std::string& client_uuid, |
ServiceWorkerProviderHost* provider_host) { |