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

Side by Side Diff: content/browser/frame_host/render_frame_host_impl.h

Issue 2821473002: Service CreateNewWindow on the UI thread with a new mojo interface (Closed)
Patch Set: devlin review 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 #ifndef CONTENT_BROWSER_FRAME_HOST_RENDER_FRAME_HOST_IMPL_H_ 5 #ifndef CONTENT_BROWSER_FRAME_HOST_RENDER_FRAME_HOST_IMPL_H_
6 #define CONTENT_BROWSER_FRAME_HOST_RENDER_FRAME_HOST_IMPL_H_ 6 #define CONTENT_BROWSER_FRAME_HOST_RENDER_FRAME_HOST_IMPL_H_
7 7
8 #include <stddef.h> 8 #include <stddef.h>
9 #include <stdint.h> 9 #include <stdint.h>
10 10
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
76 class WebBluetoothService; 76 class WebBluetoothService;
77 } 77 }
78 } 78 }
79 79
80 namespace gfx { 80 namespace gfx {
81 class Range; 81 class Range;
82 } 82 }
83 83
84 namespace content { 84 namespace content {
85 class AssociatedInterfaceProviderImpl; 85 class AssociatedInterfaceProviderImpl;
86 class AssociatedInterfaceRegistryImpl;
86 class FeaturePolicy; 87 class FeaturePolicy;
87 class FrameTree; 88 class FrameTree;
88 class FrameTreeNode; 89 class FrameTreeNode;
89 class MediaInterfaceProxy; 90 class MediaInterfaceProxy;
90 class NavigationHandleImpl; 91 class NavigationHandleImpl;
91 class PermissionServiceContext; 92 class PermissionServiceContext;
92 class RenderFrameHostDelegate; 93 class RenderFrameHostDelegate;
93 class RenderFrameProxyHost; 94 class RenderFrameProxyHost;
94 class RenderProcessHost; 95 class RenderProcessHost;
95 class RenderViewHostImpl; 96 class RenderViewHostImpl;
(...skipping 12 matching lines...) Expand all
108 struct ResourceResponse; 109 struct ResourceResponse;
109 110
110 namespace mojom { 111 namespace mojom {
111 class CreateNewWindowParams; 112 class CreateNewWindowParams;
112 } 113 }
113 114
114 class CONTENT_EXPORT RenderFrameHostImpl 115 class CONTENT_EXPORT RenderFrameHostImpl
115 : public RenderFrameHost, 116 : public RenderFrameHost,
116 public base::SupportsUserData, 117 public base::SupportsUserData,
117 NON_EXPORTED_BASE(public mojom::FrameHost), 118 NON_EXPORTED_BASE(public mojom::FrameHost),
119 NON_EXPORTED_BASE(public mojom::FrameHostIPC),
118 public BrowserAccessibilityDelegate, 120 public BrowserAccessibilityDelegate,
119 public SiteInstanceImpl::Observer, 121 public SiteInstanceImpl::Observer,
120 public NON_EXPORTED_BASE( 122 public NON_EXPORTED_BASE(
121 service_manager::InterfaceFactory<media::mojom::InterfaceFactory>), 123 service_manager::InterfaceFactory<media::mojom::InterfaceFactory>),
122 public CSPContext { 124 public CSPContext {
123 public: 125 public:
124 using AXTreeSnapshotCallback = 126 using AXTreeSnapshotCallback =
125 base::Callback<void( 127 base::Callback<void(
126 const ui::AXTreeUpdate&)>; 128 const ui::AXTreeUpdate&)>;
127 using SmartClipCallback = base::Callback<void(const base::string16& text, 129 using SmartClipCallback = base::Callback<void(const base::string16& text,
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
247 void OnCreateChildFrame(int new_routing_id, 249 void OnCreateChildFrame(int new_routing_id,
248 blink::WebTreeScopeType scope, 250 blink::WebTreeScopeType scope,
249 const std::string& frame_name, 251 const std::string& frame_name,
250 const std::string& frame_unique_name, 252 const std::string& frame_unique_name,
251 blink::WebSandboxFlags sandbox_flags, 253 blink::WebSandboxFlags sandbox_flags,
252 const FrameOwnerProperties& frame_owner_properties); 254 const FrameOwnerProperties& frame_owner_properties);
253 255
254 // Called when this frame tries to open a new WebContents, e.g. via a script 256 // Called when this frame tries to open a new WebContents, e.g. via a script
255 // call to window.open(). The renderer has already been told to create the 257 // call to window.open(). The renderer has already been told to create the
256 // RenderView and RenderFrame with the specified route ids, which were 258 // RenderView and RenderFrame with the specified route ids, which were
257 // assigned on the IO thread. 259 // assigned on the IO thread.
alexmos 2017/04/19 22:28:03 nit: update this comment. Other random thoughts
Charlie Harrison 2017/04/20 14:02:23 Good point, I think I slightly just prefer inlinin
258 void OnCreateNewWindow(int32_t render_view_route_id, 260 void OnCreateNewWindow(int32_t render_view_route_id,
259 int32_t main_frame_route_id, 261 int32_t main_frame_route_id,
260 int32_t main_frame_widget_route_id, 262 int32_t main_frame_widget_route_id,
261 const mojom::CreateNewWindowParams& params, 263 const mojom::CreateNewWindowParams& params,
262 SessionStorageNamespace* session_storage_namespace); 264 SessionStorageNamespace* session_storage_namespace);
263 265
264 // Update this frame's last committed origin. 266 // Update this frame's last committed origin.
265 void SetLastCommittedOrigin(const url::Origin& origin); 267 void SetLastCommittedOrigin(const url::Origin& origin);
266 268
267 RenderViewHostImpl* render_view_host() { return render_view_host_; } 269 RenderViewHostImpl* render_view_host() { return render_view_host_; }
(...skipping 518 matching lines...) Expand 10 before | Expand all | Expand 10 after
786 #if defined(OS_ANDROID) 788 #if defined(OS_ANDROID)
787 void OnNavigationHandledByEmbedder(); 789 void OnNavigationHandledByEmbedder();
788 void ForwardGetInterfaceToRenderFrame(const std::string& interface_name, 790 void ForwardGetInterfaceToRenderFrame(const std::string& interface_name,
789 mojo::ScopedMessagePipeHandle pipe); 791 mojo::ScopedMessagePipeHandle pipe);
790 #endif 792 #endif
791 void OnShowCreatedWindow(int pending_widget_routing_id, 793 void OnShowCreatedWindow(int pending_widget_routing_id,
792 WindowOpenDisposition disposition, 794 WindowOpenDisposition disposition,
793 const gfx::Rect& initial_rect, 795 const gfx::Rect& initial_rect,
794 bool user_gesture); 796 bool user_gesture);
795 797
798 // mojom::FrameHostIPC
799 void CreateNewWindow(mojom::CreateNewWindowParamsPtr params,
800 const CreateNewWindowCallback& callback) override;
801
802 void RunCreateWindowCompleteCallback(const CreateNewWindowCallback& callback,
803 mojom::CreateNewWindowReplyPtr reply,
804 int render_view_route_id,
805 int main_frame_route_id,
806 int main_frame_widget_route_id,
807 int cloned_session_storage_namespace_id);
808
796 // Registers Mojo interfaces that this frame host makes available. 809 // Registers Mojo interfaces that this frame host makes available.
797 void RegisterMojoInterfaces(); 810 void RegisterMojoInterfaces();
798 811
799 // Resets any waiting state of this RenderFrameHost that is no longer 812 // Resets any waiting state of this RenderFrameHost that is no longer
800 // relevant. 813 // relevant.
801 void ResetWaitingState(); 814 void ResetWaitingState();
802 815
803 // Returns whether the given origin is allowed to commit in the current 816 // Returns whether the given origin is allowed to commit in the current
804 // RenderFrameHost. The |url| is used to ensure it matches the origin in cases 817 // RenderFrameHost. The |url| is used to ensure it matches the origin in cases
805 // where it is applicable. This is a more conservative check than 818 // where it is applicable. This is a more conservative check than
(...skipping 227 matching lines...) Expand 10 before | Expand all | Expand 10 after
1033 // such as for a new subframe navigation in a different frame. Tracking this 1046 // such as for a new subframe navigation in a different frame. Tracking this
1034 // allows us to send things like title and state updates to the latest 1047 // allows us to send things like title and state updates to the latest
1035 // relevant NavigationEntry. 1048 // relevant NavigationEntry.
1036 int nav_entry_id_; 1049 int nav_entry_id_;
1037 1050
1038 // Used to swap out or shut down this RFH when the unload event is taking too 1051 // Used to swap out or shut down this RFH when the unload event is taking too
1039 // long to execute, depending on the number of active frames in the 1052 // long to execute, depending on the number of active frames in the
1040 // SiteInstance. May be null in tests. 1053 // SiteInstance. May be null in tests.
1041 std::unique_ptr<TimeoutMonitor> swapout_event_monitor_timeout_; 1054 std::unique_ptr<TimeoutMonitor> swapout_event_monitor_timeout_;
1042 1055
1056 std::unique_ptr<AssociatedInterfaceRegistryImpl> associated_registry_;
1057
1043 std::unique_ptr<service_manager::InterfaceRegistry> interface_registry_; 1058 std::unique_ptr<service_manager::InterfaceRegistry> interface_registry_;
1044 std::unique_ptr<service_manager::InterfaceProvider> remote_interfaces_; 1059 std::unique_ptr<service_manager::InterfaceProvider> remote_interfaces_;
1045 1060
1046 service_manager::ServiceInfo browser_info_; 1061 service_manager::ServiceInfo browser_info_;
1047 service_manager::ServiceInfo renderer_info_; 1062 service_manager::ServiceInfo renderer_info_;
1048 1063
1049 int on_connect_handler_id_ = 0; 1064 int on_connect_handler_id_ = 0;
1050 1065
1051 std::list<std::unique_ptr<WebBluetoothServiceImpl>> web_bluetooth_services_; 1066 std::list<std::unique_ptr<WebBluetoothServiceImpl>> web_bluetooth_services_;
1052 1067
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
1120 1135
1121 // If true, then the RenderFrame has selected text. 1136 // If true, then the RenderFrame has selected text.
1122 bool has_selection_; 1137 bool has_selection_;
1123 1138
1124 // PlzNavigate: The Previews state of the last navigation. This is used during 1139 // PlzNavigate: The Previews state of the last navigation. This is used during
1125 // history navigation of subframes to ensure that subframes navigate with the 1140 // history navigation of subframes to ensure that subframes navigate with the
1126 // same Previews status as the top-level frame. 1141 // same Previews status as the top-level frame.
1127 PreviewsState last_navigation_previews_state_; 1142 PreviewsState last_navigation_previews_state_;
1128 1143
1129 mojo::Binding<mojom::FrameHost> frame_host_binding_; 1144 mojo::Binding<mojom::FrameHost> frame_host_binding_;
1145 mojo::AssociatedBinding<mojom::FrameHostIPC> frame_host_associated_binding_;
1130 mojom::FramePtr frame_; 1146 mojom::FramePtr frame_;
1131 mojom::FrameBindingsControlAssociatedPtr frame_bindings_control_; 1147 mojom::FrameBindingsControlAssociatedPtr frame_bindings_control_;
1132 1148
1133 // If this is true then this object was created in response to a renderer 1149 // If this is true then this object was created in response to a renderer
1134 // initiated request. Init() will be called, and until then navigation 1150 // initiated request. Init() will be called, and until then navigation
1135 // requests should be queued. 1151 // requests should be queued.
1136 bool waiting_for_init_; 1152 bool waiting_for_init_;
1137 1153
1138 // If true then this frame's document has a focused element which is editable. 1154 // If true then this frame's document has a focused element which is editable.
1139 bool has_focused_editable_element_; 1155 bool has_focused_editable_element_;
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
1177 1193
1178 // NOTE: This must be the last member. 1194 // NOTE: This must be the last member.
1179 base::WeakPtrFactory<RenderFrameHostImpl> weak_ptr_factory_; 1195 base::WeakPtrFactory<RenderFrameHostImpl> weak_ptr_factory_;
1180 1196
1181 DISALLOW_COPY_AND_ASSIGN(RenderFrameHostImpl); 1197 DISALLOW_COPY_AND_ASSIGN(RenderFrameHostImpl);
1182 }; 1198 };
1183 1199
1184 } // namespace content 1200 } // namespace content
1185 1201
1186 #endif // CONTENT_BROWSER_FRAME_HOST_RENDER_FRAME_HOST_IMPL_H_ 1202 #endif // CONTENT_BROWSER_FRAME_HOST_RENDER_FRAME_HOST_IMPL_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698