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

Unified Diff: content/browser/frame_host/navigation_request.cc

Issue 1294243004: PlzNavigate: Make ServiceWorker work with PlzNavigate. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Review comments Created 5 years, 2 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/frame_host/navigation_request.cc
diff --git a/content/browser/frame_host/navigation_request.cc b/content/browser/frame_host/navigation_request.cc
index 94f061ad1f3236a509801b56c99981317f673394..62196e2fa858e25d894e7e14a94a44957b383043 100644
--- a/content/browser/frame_host/navigation_request.cc
+++ b/content/browser/frame_host/navigation_request.cc
@@ -13,6 +13,7 @@
#include "content/browser/loader/navigation_url_loader.h"
#include "content/browser/site_instance_impl.h"
#include "content/common/resource_request_body.h"
+#include "content/common/service_worker/service_worker_types.h"
#include "content/public/browser/navigation_controller.h"
#include "content/public/browser/navigation_throttle.h"
#include "content/public/browser/stream_handle.h"
@@ -20,6 +21,7 @@
#include "net/base/load_flags.h"
#include "net/http/http_request_headers.h"
#include "net/url_request/redirect_info.h"
+#include "third_party/WebKit/public/web/WebSandboxFlags.h"
namespace content {
@@ -50,6 +52,19 @@ int LoadFlagFromNavigationType(FrameMsg_Navigate_Type::Value navigation_type) {
return load_flags;
}
+// Next ServiceWorkerProviderHost ID for navigations, starts at -2 and keeps
+// going down.
+int g_next_navigation_provider_id = -2;
+
+// Returns the next ServiceWorkerProviderHost ID for navigations,
+// kInvalidServiceWorkerProviderId if the frame is sandboxed.
+int GetNextNavigationProviderId(blink::WebSandboxFlags sandbox_flags) {
+ if ((sandbox_flags & blink::WebSandboxFlags::Origin) ==
+ blink::WebSandboxFlags::Origin)
+ return kInvalidServiceWorkerProviderId;
+ return g_next_navigation_provider_id--;
+}
+
} // namespace
// static
@@ -209,6 +224,16 @@ bool NavigationRequest::BeginNavigation() {
return false;
}
+ // Initialize the service_worker_provider_id here.
+ blink::WebSandboxFlags sandbox_flags =
+ frame_tree_node_->current_replication_state().sandbox_flags;
+ int service_worker_provider_id = GetNextNavigationProviderId(sandbox_flags);
+
+ info_->service_worker_provider_id = service_worker_provider_id;
+ request_params_.service_worker_provider_id = service_worker_provider_id;
+ navigation_handle_->set_service_worker_provider_id(
+ service_worker_provider_id);
+
loader_ = NavigationURLLoader::Create(
frame_tree_node_->navigator()->GetController()->GetBrowserContext(),
info_.Pass(), this);

Powered by Google App Engine
This is Rietveld 408576698