Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(207)

Unified Diff: content/browser/service_worker/service_worker_dispatcher_host.cc

Issue 1257553002: [Proof-of-concept] PlzNavigate and Service Worker Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Pass navigation_provider_id Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/browser/service_worker/service_worker_dispatcher_host.cc
diff --git a/content/browser/service_worker/service_worker_dispatcher_host.cc b/content/browser/service_worker/service_worker_dispatcher_host.cc
index 2afe6668d3cfce2aba57c507ffda61ff2db0b0bf..bf570075f3d0500edbdd2993de97b4c05be4c19a 100644
--- a/content/browser/service_worker/service_worker_dispatcher_host.cc
+++ b/content/browser/service_worker/service_worker_dispatcher_host.cc
@@ -697,7 +697,8 @@ void ServiceWorkerDispatcherHost::OnPostMessageToWorker(
void ServiceWorkerDispatcherHost::OnProviderCreated(
int provider_id,
int route_id,
- ServiceWorkerProviderType provider_type) {
+ ServiceWorkerProviderType provider_type,
+ int navigation_provider_id) {
michaeln 2015/07/30 01:35:08 i don't like long names but 'nav_provider_id' is v
Fabrice (no longer in Chrome) 2015/08/06 15:39:15 Not using PlzNavigate prefix in variable/class nam
// TODO(pkasting): Remove ScopedTracker below once crbug.com/477117 is fixed.
tracked_objects::ScopedTracker tracking_profile(
FROM_HERE_WITH_EXPLICIT_FUNCTION(
@@ -711,6 +712,19 @@ void ServiceWorkerDispatcherHost::OnProviderCreated(
bad_message::SWDH_PROVIDER_CREATED_NO_HOST);
return;
}
+
+ // PlzNavigate:
+ if (navigation_provider_id != kInvalidServiceWorkerProviderId) {
+ DCHECK_EQ(SERVICE_WORKER_PROVIDER_FOR_WINDOW, provider_type);
+ scoped_ptr<ServiceWorkerProviderHost> navigation_provider_host(
+ GetContext()->TakeNavigationProviderHost(navigation_provider_id));
+ DCHECK(navigation_provider_host);
michaeln 2015/07/30 01:35:08 we can't trust these values are legit, !nav_provid
+ navigation_provider_host->CompleteCrossSiteTransfer(
+ render_process_id_, route_id, provider_id, provider_type, this);
+ GetContext()->AddProviderHost(navigation_provider_host.Pass());
+ return;
+ }
+
scoped_ptr<ServiceWorkerProviderHost> provider_host(
new ServiceWorkerProviderHost(render_process_id_, route_id, provider_id,
provider_type, GetContext()->AsWeakPtr(),

Powered by Google App Engine
This is Rietveld 408576698