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

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

Issue 1294243004: PlzNavigate: Make ServiceWorker work with PlzNavigate. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Style, placeholders, all that stuff Created 5 years, 4 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 61e00876ff90acfedd5b76e23e8af7dc4d2835ca..22d97f608d2fe1441d16e16668e4cf55ce7d907a 100644
--- a/content/browser/service_worker/service_worker_dispatcher_host.cc
+++ b/content/browser/service_worker/service_worker_dispatcher_host.cc
@@ -4,6 +4,7 @@
#include "content/browser/service_worker/service_worker_dispatcher_host.h"
+#include "base/command_line.h"
#include "base/logging.h"
#include "base/profiler/scoped_tracker.h"
#include "base/strings/utf_string_conversions.h"
@@ -23,6 +24,7 @@
#include "content/common/service_worker/service_worker_utils.h"
#include "content/public/browser/content_browser_client.h"
#include "content/public/common/content_client.h"
+#include "content/public/common/content_switches.h"
#include "content/public/common/origin_util.h"
#include "ipc/ipc_message_macros.h"
#include "net/base/net_util.h"
@@ -732,6 +734,24 @@ void ServiceWorkerDispatcherHost::OnProviderCreated(
bad_message::SWDH_PROVIDER_CREATED_NO_HOST);
return;
}
+
+ // PlzNavigate:
+ if (provider_id < kInvalidServiceWorkerProviderId) {
kinuko 2015/08/21 14:00:44 nit: Could we have a small helper function to chec
Fabrice (no longer in Chrome) 2015/08/26 13:23:24 Done.
+ CHECK(base::CommandLine::ForCurrentProcess()->HasSwitch(
+ switches::kEnableBrowserSideNavigation));
+ DCHECK_EQ(SERVICE_WORKER_PROVIDER_FOR_WINDOW, provider_type);
+ scoped_ptr<ServiceWorkerProviderHost> navigation_provider_host(
+ GetContext()->TakeBrowserProviderHost(provider_id));
michaeln 2015/09/01 01:15:23 If anything should prevent navigation from proceed
+ if (navigation_provider_host == nullptr) {
+ bad_message::ReceivedBadMessage(this, bad_message::SWDH_NOT_HANDLED);
+ return;
+ }
+ navigation_provider_host->CompleteCrossSiteTransfer(
nasko 2015/08/20 16:49:50 There are no cross-site transfers in PlzNavigate.
kinuko 2015/08/21 14:00:44 This method is used to complete the NavigationProv
Fabrice (no longer in Chrome) 2015/08/26 13:23:24 Agreed, bad name for PlzNavigate. I'm not sure we
+ 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