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

Unified Diff: content/renderer/render_frame_impl.cc

Issue 2813243002: network service: pass PlzNavigate resulting data via mojo data pipe (Closed)
Patch Set: Created 3 years, 8 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/renderer/render_frame_impl.cc
diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc
index 334cdbae23ed6bdebd46b145e896f50eaf807c91..47ee33bdcd493625f2116a749c87f48ddef4b6b9 100644
--- a/content/renderer/render_frame_impl.cc
+++ b/content/renderer/render_frame_impl.cc
@@ -1587,6 +1587,8 @@ bool RenderFrameImpl::OnMessageReceived(const IPC::Message& msg) {
IPC_MESSAGE_HANDLER(FrameMsg_ExtractSmartClipData, OnExtractSmartClipData)
IPC_MESSAGE_HANDLER(FrameMsg_UpdateOpener, OnUpdateOpener)
IPC_MESSAGE_HANDLER(FrameMsg_CommitNavigation, OnCommitNavigation)
+ IPC_MESSAGE_HANDLER(FrameMsg_CommitNavigationNetworkService,
+ OnCommitNavigationNetworkService)
IPC_MESSAGE_HANDLER(FrameMsg_DidUpdateSandboxFlags, OnDidUpdateSandboxFlags)
IPC_MESSAGE_HANDLER(FrameMsg_SetFrameOwnerProperties,
OnSetFrameOwnerProperties)
@@ -5226,6 +5228,38 @@ void RenderFrameImpl::OnCommitNavigation(
}
// PlzNavigate
+void RenderFrameImpl::OnCommitNavigationNetworkService(
+ const ResourceResponseHead& response,
+ mojo::DataPipeConsumerHandle handle,
+ const CommonNavigationParams& common_params,
+ const RequestNavigationParams& request_params) {
+ CHECK(IsBrowserSideNavigationEnabled());
+ // This will override the url requested by the WebURLLoader, as well as
+ // provide it with the response to the request.
+ std::unique_ptr<StreamOverrideParameters> stream_override(
+ new StreamOverrideParameters());
+ stream_override->consumer_handle = mojo::ScopedDataPipeConsumerHandle(handle);
+ stream_override->response = response;
+ stream_override->redirects = request_params.redirects;
+ stream_override->redirect_responses = request_params.redirect_response;
+ stream_override->redirect_infos = request_params.redirect_infos;
+
+ // If the request was initiated in the context of a user gesture then make
+ // sure that the navigation also executes in the context of a user gesture.
+ std::unique_ptr<blink::WebScopedUserGesture> gesture(
+ request_params.has_user_gesture ? new blink::WebScopedUserGesture(frame_)
+ : nullptr);
+
+ browser_side_navigation_pending_ = false;
+
+ NavigateInternal(common_params, StartNavigationParams(), request_params,
+ std::move(stream_override));
+
+ // Don't add code after this since NavigateInternal may have destroyed this
+ // RenderFrameImpl.
+}
+
+// PlzNavigate
void RenderFrameImpl::OnFailedNavigation(
const CommonNavigationParams& common_params,
const RequestNavigationParams& request_params,

Powered by Google App Engine
This is Rietveld 408576698