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

Side by Side Diff: content/browser/frame_host/render_frame_host_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 unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/browser/frame_host/render_frame_host_impl.h" 5 #include "content/browser/frame_host/render_frame_host_impl.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
99 #include "device/geolocation/geolocation_service_context.h" 99 #include "device/geolocation/geolocation_service_context.h"
100 #include "device/vr/features.h" 100 #include "device/vr/features.h"
101 #include "device/wake_lock/public/interfaces/wake_lock_context.mojom.h" 101 #include "device/wake_lock/public/interfaces/wake_lock_context.mojom.h"
102 #include "device/wake_lock/public/interfaces/wake_lock_service.mojom.h" 102 #include "device/wake_lock/public/interfaces/wake_lock_service.mojom.h"
103 #include "media/base/media_switches.h" 103 #include "media/base/media_switches.h"
104 #include "media/media_features.h" 104 #include "media/media_features.h"
105 #include "media/mojo/interfaces/media_service.mojom.h" 105 #include "media/mojo/interfaces/media_service.mojom.h"
106 #include "media/mojo/interfaces/remoting.mojom.h" 106 #include "media/mojo/interfaces/remoting.mojom.h"
107 #include "mojo/public/cpp/bindings/associated_interface_ptr.h" 107 #include "mojo/public/cpp/bindings/associated_interface_ptr.h"
108 #include "mojo/public/cpp/bindings/strong_binding.h" 108 #include "mojo/public/cpp/bindings/strong_binding.h"
109 #include "mojo/public/cpp/system/data_pipe.h"
109 #include "services/service_manager/public/cpp/connector.h" 110 #include "services/service_manager/public/cpp/connector.h"
110 #include "services/service_manager/public/cpp/interface_provider.h" 111 #include "services/service_manager/public/cpp/interface_provider.h"
111 #include "ui/accessibility/ax_tree.h" 112 #include "ui/accessibility/ax_tree.h"
112 #include "ui/accessibility/ax_tree_id_registry.h" 113 #include "ui/accessibility/ax_tree_id_registry.h"
113 #include "ui/accessibility/ax_tree_update.h" 114 #include "ui/accessibility/ax_tree_update.h"
114 #include "ui/gfx/geometry/quad_f.h" 115 #include "ui/gfx/geometry/quad_f.h"
115 #include "url/gurl.h" 116 #include "url/gurl.h"
116 117
117 #if defined(OS_ANDROID) 118 #if defined(OS_ANDROID)
118 #include "content/browser/android/java_interfaces_impl.h" 119 #include "content/browser/android/java_interfaces_impl.h"
(...skipping 2524 matching lines...) Expand 10 before | Expand all | Expand 10 after
2643 void RenderFrameHostImpl::NavigateToInterstitialURL(const GURL& data_url) { 2644 void RenderFrameHostImpl::NavigateToInterstitialURL(const GURL& data_url) {
2644 DCHECK(data_url.SchemeIs(url::kDataScheme)); 2645 DCHECK(data_url.SchemeIs(url::kDataScheme));
2645 CommonNavigationParams common_params( 2646 CommonNavigationParams common_params(
2646 data_url, Referrer(), ui::PAGE_TRANSITION_LINK, 2647 data_url, Referrer(), ui::PAGE_TRANSITION_LINK,
2647 FrameMsg_Navigate_Type::DIFFERENT_DOCUMENT, false, false, 2648 FrameMsg_Navigate_Type::DIFFERENT_DOCUMENT, false, false,
2648 base::TimeTicks::Now(), FrameMsg_UILoadMetricsReportType::NO_REPORT, 2649 base::TimeTicks::Now(), FrameMsg_UILoadMetricsReportType::NO_REPORT,
2649 GURL(), GURL(), PREVIEWS_OFF, base::TimeTicks::Now(), "GET", nullptr, 2650 GURL(), GURL(), PREVIEWS_OFF, base::TimeTicks::Now(), "GET", nullptr,
2650 base::Optional<SourceLocation>(), 2651 base::Optional<SourceLocation>(),
2651 CSPDisposition::CHECK /* should_check_main_world_csp */); 2652 CSPDisposition::CHECK /* should_check_main_world_csp */);
2652 if (IsBrowserSideNavigationEnabled()) { 2653 if (IsBrowserSideNavigationEnabled()) {
2653 CommitNavigation(nullptr, nullptr, common_params, RequestNavigationParams(), 2654 CommitNavigation(nullptr, nullptr, mojo::ScopedDataPipeConsumerHandle(),
2654 false); 2655 common_params, RequestNavigationParams(), false);
2655 } else { 2656 } else {
2656 Navigate(common_params, StartNavigationParams(), RequestNavigationParams()); 2657 Navigate(common_params, StartNavigationParams(), RequestNavigationParams());
2657 } 2658 }
2658 } 2659 }
2659 2660
2660 void RenderFrameHostImpl::Stop() { 2661 void RenderFrameHostImpl::Stop() {
2661 Send(new FrameMsg_Stop(routing_id_)); 2662 Send(new FrameMsg_Stop(routing_id_));
2662 } 2663 }
2663 2664
2664 void RenderFrameHostImpl::DispatchBeforeUnload(bool for_navigation, 2665 void RenderFrameHostImpl::DispatchBeforeUnload(bool for_navigation,
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after
2803 const base::string16& user_input) { 2804 const base::string16& user_input) {
2804 FrameHostMsg_RunJavaScriptDialog::WriteReplyParams(reply_msg, success, 2805 FrameHostMsg_RunJavaScriptDialog::WriteReplyParams(reply_msg, success,
2805 user_input); 2806 user_input);
2806 Send(reply_msg); 2807 Send(reply_msg);
2807 } 2808 }
2808 2809
2809 // PlzNavigate 2810 // PlzNavigate
2810 void RenderFrameHostImpl::CommitNavigation( 2811 void RenderFrameHostImpl::CommitNavigation(
2811 ResourceResponse* response, 2812 ResourceResponse* response,
2812 std::unique_ptr<StreamHandle> body, 2813 std::unique_ptr<StreamHandle> body,
2814 mojo::ScopedDataPipeConsumerHandle handle,
2813 const CommonNavigationParams& common_params, 2815 const CommonNavigationParams& common_params,
2814 const RequestNavigationParams& request_params, 2816 const RequestNavigationParams& request_params,
2815 bool is_view_source) { 2817 bool is_view_source) {
2816 DCHECK( 2818 DCHECK(
2817 (response && body.get()) || 2819 (response && (body.get() || handle.is_valid())) ||
2818 common_params.url.SchemeIs(url::kDataScheme) || 2820 common_params.url.SchemeIs(url::kDataScheme) ||
2819 !ShouldMakeNetworkRequestForURL(common_params.url) || 2821 !ShouldMakeNetworkRequestForURL(common_params.url) ||
2820 FrameMsg_Navigate_Type::IsSameDocument(common_params.navigation_type) || 2822 FrameMsg_Navigate_Type::IsSameDocument(common_params.navigation_type) ||
2821 IsRendererDebugURL(common_params.url)); 2823 IsRendererDebugURL(common_params.url));
2822 UpdatePermissionsForNavigation(common_params, request_params); 2824 UpdatePermissionsForNavigation(common_params, request_params);
2823 2825
2824 // Get back to a clean state, in case we start a new navigation without 2826 // Get back to a clean state, in case we start a new navigation without
2825 // completing an unload handler. 2827 // completing an unload handler.
2826 ResetWaitingState(); 2828 ResetWaitingState();
2827 2829
2828 // The renderer can exit view source mode when any error or cancellation 2830 // The renderer can exit view source mode when any error or cancellation
2829 // happen. When reusing the same renderer, overwrite to recover the mode. 2831 // happen. When reusing the same renderer, overwrite to recover the mode.
2830 if (is_view_source && 2832 if (is_view_source &&
2831 this == frame_tree_node_->render_manager()->current_frame_host()) { 2833 this == frame_tree_node_->render_manager()->current_frame_host()) {
2832 DCHECK(!GetParent()); 2834 DCHECK(!GetParent());
2833 render_view_host()->Send(new FrameMsg_EnableViewSourceMode(routing_id_)); 2835 render_view_host()->Send(new FrameMsg_EnableViewSourceMode(routing_id_));
2834 } 2836 }
2835 2837
2836 const GURL body_url = body.get() ? body->GetURL() : GURL(); 2838 const GURL body_url = body.get() ? body->GetURL() : GURL();
2837 const ResourceResponseHead head = response ? 2839 const ResourceResponseHead head = response ?
2838 response->head : ResourceResponseHead(); 2840 response->head : ResourceResponseHead();
2839 Send(new FrameMsg_CommitNavigation(routing_id_, head, body_url, common_params, 2841 const bool network_service_enabled =
2840 request_params)); 2842 base::CommandLine::ForCurrentProcess()->HasSwitch(
2843 switches::kEnableNetworkService);
2844 if (network_service_enabled) {
2845 Send(new FrameMsg_CommitNavigationNetworkService(
2846 routing_id_, head, handle.release(), common_params, request_params));
2847 } else {
2848 Send(new FrameMsg_CommitNavigation(routing_id_, head, body_url,
2849 common_params, request_params));
2850 }
2841 2851
2842 // If a network request was made, update the Previews state. 2852 // If a network request was made, update the Previews state.
2843 if (ShouldMakeNetworkRequestForURL(common_params.url) && 2853 if (ShouldMakeNetworkRequestForURL(common_params.url) &&
2844 !FrameMsg_Navigate_Type::IsSameDocument(common_params.navigation_type)) { 2854 !FrameMsg_Navigate_Type::IsSameDocument(common_params.navigation_type)) {
2845 last_navigation_previews_state_ = common_params.previews_state; 2855 last_navigation_previews_state_ = common_params.previews_state;
2846 } 2856 }
2847 2857
2848 // TODO(clamy): Release the stream handle once the renderer has finished 2858 // TODO(clamy): Release the stream handle once the renderer has finished
2849 // reading it. 2859 // reading it.
2850 stream_handle_ = std::move(body); 2860 stream_handle_ = std::move(body);
(...skipping 811 matching lines...) Expand 10 before | Expand all | Expand 10 after
3662 } 3672 }
3663 3673
3664 void RenderFrameHostImpl::ForwardGetInterfaceToRenderFrame( 3674 void RenderFrameHostImpl::ForwardGetInterfaceToRenderFrame(
3665 const std::string& interface_name, 3675 const std::string& interface_name,
3666 mojo::ScopedMessagePipeHandle pipe) { 3676 mojo::ScopedMessagePipeHandle pipe) {
3667 GetRemoteInterfaces()->GetInterface(interface_name, std::move(pipe)); 3677 GetRemoteInterfaces()->GetInterface(interface_name, std::move(pipe));
3668 } 3678 }
3669 #endif 3679 #endif
3670 3680
3671 } // namespace content 3681 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698