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

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

Issue 281663002: Create RenderFrameProxyHost at time of swap-out instead of commit. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Ready for review Created 6 years, 7 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 | Annotate | Revision Log
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 <map> 8 #include <map>
9 #include <vector> 9 #include <vector>
10 10
(...skipping 18 matching lines...) Expand all
29 class ListValue; 29 class ListValue;
30 } 30 }
31 31
32 namespace content { 32 namespace content {
33 33
34 class CrossProcessFrameConnector; 34 class CrossProcessFrameConnector;
35 class CrossSiteTransferringRequest; 35 class CrossSiteTransferringRequest;
36 class FrameTree; 36 class FrameTree;
37 class FrameTreeNode; 37 class FrameTreeNode;
38 class RenderFrameHostDelegate; 38 class RenderFrameHostDelegate;
39 class RenderFrameProxyHost;
39 class RenderProcessHost; 40 class RenderProcessHost;
40 class RenderViewHostImpl; 41 class RenderViewHostImpl;
41 struct ContextMenuParams; 42 struct ContextMenuParams;
42 struct GlobalRequestID; 43 struct GlobalRequestID;
43 struct Referrer; 44 struct Referrer;
44 struct ShowDesktopNotificationHostMsgParams; 45 struct ShowDesktopNotificationHostMsgParams;
45 46
46 class CONTENT_EXPORT RenderFrameHostImpl : public RenderFrameHost { 47 class CONTENT_EXPORT RenderFrameHostImpl : public RenderFrameHost {
47 public: 48 public:
48 static RenderFrameHostImpl* FromID(int process_id, int routing_id); 49 static RenderFrameHostImpl* FromID(int process_id, int routing_id);
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
85 // |cross_process_frame_connector| allows the non-swapped-out 86 // |cross_process_frame_connector| allows the non-swapped-out
86 // RenderFrameHost for a frame to communicate with the parent process 87 // RenderFrameHost for a frame to communicate with the parent process
87 // so that it may composite drawing data. 88 // so that it may composite drawing data.
88 // 89 //
89 // Ownership is not transfered. 90 // Ownership is not transfered.
90 void set_cross_process_frame_connector( 91 void set_cross_process_frame_connector(
91 CrossProcessFrameConnector* cross_process_frame_connector) { 92 CrossProcessFrameConnector* cross_process_frame_connector) {
92 cross_process_frame_connector_ = cross_process_frame_connector; 93 cross_process_frame_connector_ = cross_process_frame_connector;
93 } 94 }
94 95
96 void set_render_frame_proxy(RenderFrameProxyHost* proxy) {
Charlie Reis 2014/05/15 00:32:50 nit: set_render_frame_proxy_host
nasko 2014/05/15 18:47:13 Done.
97 render_frame_proxy_ = proxy;
98 }
99
95 // Returns a bitwise OR of bindings types that have been enabled for this 100 // Returns a bitwise OR of bindings types that have been enabled for this
96 // RenderFrameHostImpl's RenderView. See BindingsPolicy for details. 101 // RenderFrameHostImpl's RenderView. See BindingsPolicy for details.
97 // TODO(creis): Make bindings frame-specific, to support cases like <webview>. 102 // TODO(creis): Make bindings frame-specific, to support cases like <webview>.
98 int GetEnabledBindings(); 103 int GetEnabledBindings();
99 104
100 // Called on the pending RenderFrameHost when the network response is ready to 105 // Called on the pending RenderFrameHost when the network response is ready to
101 // commit. We should ensure that the old RenderFrameHost runs its unload 106 // commit. We should ensure that the old RenderFrameHost runs its unload
102 // handler and determine whether a transfer to a different RenderFrameHost is 107 // handler and determine whether a transfer to a different RenderFrameHost is
103 // needed. 108 // needed.
104 void OnCrossSiteResponse( 109 void OnCrossSiteResponse(
105 const GlobalRequestID& global_request_id, 110 const GlobalRequestID& global_request_id,
106 scoped_ptr<CrossSiteTransferringRequest> cross_site_transferring_request, 111 scoped_ptr<CrossSiteTransferringRequest> cross_site_transferring_request,
107 const std::vector<GURL>& transfer_url_chain, 112 const std::vector<GURL>& transfer_url_chain,
108 const Referrer& referrer, 113 const Referrer& referrer,
109 PageTransition page_transition, 114 PageTransition page_transition,
110 bool should_replace_current_entry); 115 bool should_replace_current_entry);
111 116
112 // Tells the renderer that this RenderFrame is being swapped out for one in a 117 // Tells the renderer that this RenderFrame is being swapped out for one in a
113 // different renderer process. It should run its unload handler and move to 118 // different renderer process. It should run its unload handler and move to
114 // a blank document. The renderer should preserve the Frame object until it 119 // a blank document. The renderer should preserve the Frame object until it
115 // exits, in case we come back. The renderer can exit if it has no other 120 // exits, in case we come back. The renderer can exit if it has no other
116 // active RenderFrames, but not until WasSwappedOut is called (when it is no 121 // active RenderFrames, but not until WasSwappedOut is called (when it is no
117 // longer visible). 122 // longer visible).
118 void SwapOut(); 123 void SwapOut(RenderFrameProxyHost* proxy);
Charlie Reis 2014/05/15 00:32:50 Can you mention what |proxy| is for in the comment
nasko 2014/05/15 18:47:13 Done.
119 124
120 void OnSwappedOut(bool timed_out); 125 void OnSwappedOut(bool timed_out);
121 bool is_swapped_out() { return is_swapped_out_; } 126 bool is_swapped_out() { return is_swapped_out_; }
122 void set_swapped_out(bool is_swapped_out) { 127 void set_swapped_out(bool is_swapped_out) {
123 is_swapped_out_ = is_swapped_out; 128 is_swapped_out_ = is_swapped_out;
124 } 129 }
125 130
126 // Sets the RVH for |this| as pending shutdown. |on_swap_out| will be called 131 // Sets the RVH for |this| as pending shutdown. |on_swap_out| will be called
127 // when the SwapOutACK is received. 132 // when the SwapOutACK is received.
128 void SetPendingShutdown(const base::Closure& on_swap_out); 133 void SetPendingShutdown(const base::Closure& on_swap_out);
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after
254 // 259 //
255 // This is only non-NULL when this is the swapped out RenderFrameHost in 260 // This is only non-NULL when this is the swapped out RenderFrameHost in
256 // the same site instance as this frame's parent. 261 // the same site instance as this frame's parent.
257 // 262 //
258 // See the class comment above CrossProcessFrameConnector for more 263 // See the class comment above CrossProcessFrameConnector for more
259 // information. 264 // information.
260 // 265 //
261 // This will move to RenderFrameProxyHost when that class is created. 266 // This will move to RenderFrameProxyHost when that class is created.
262 CrossProcessFrameConnector* cross_process_frame_connector_; 267 CrossProcessFrameConnector* cross_process_frame_connector_;
263 268
269 // The proxy created for this RenderFrameHost. It is used to send and receive
270 // IPC messages while in swapped out state.
271 // TODO(nasko): This can be removed once we don't use swapping out of
Charlie Reis 2014/05/15 00:32:50 There are a lot of comments like this, but the wor
nasko 2014/05/15 18:47:13 Done.
272 // RenderFrameHost objects.
273 RenderFrameProxyHost* render_frame_proxy_;
Charlie Reis 2014/05/15 00:32:50 nit: render_frame_proxy_host_ That's more consist
nasko 2014/05/15 18:47:13 Done.
274
264 // Reference to the whole frame tree that this RenderFrameHost belongs to. 275 // Reference to the whole frame tree that this RenderFrameHost belongs to.
265 // Allows this RenderFrameHost to add and remove nodes in response to 276 // Allows this RenderFrameHost to add and remove nodes in response to
266 // messages from the renderer requesting DOM manipulation. 277 // messages from the renderer requesting DOM manipulation.
267 FrameTree* frame_tree_; 278 FrameTree* frame_tree_;
268 279
269 // The FrameTreeNode which this RenderFrameHostImpl is hosted in. 280 // The FrameTreeNode which this RenderFrameHostImpl is hosted in.
270 FrameTreeNode* frame_tree_node_; 281 FrameTreeNode* frame_tree_node_;
271 282
272 // The mapping of pending JavaScript calls created by 283 // The mapping of pending JavaScript calls created by
273 // ExecuteJavaScript and their corresponding callbacks. 284 // ExecuteJavaScript and their corresponding callbacks.
274 std::map<int, JavaScriptResultCallback> javascript_callbacks_; 285 std::map<int, JavaScriptResultCallback> javascript_callbacks_;
275 286
276 // Map from notification_id to a callback to cancel them. 287 // Map from notification_id to a callback to cancel them.
277 std::map<int, base::Closure> cancel_notification_callbacks_; 288 std::map<int, base::Closure> cancel_notification_callbacks_;
278 289
279 int routing_id_; 290 int routing_id_;
280 bool is_swapped_out_; 291 bool is_swapped_out_;
281 292
282 // When the last BeforeUnload message was sent. 293 // When the last BeforeUnload message was sent.
283 base::TimeTicks send_before_unload_start_time_; 294 base::TimeTicks send_before_unload_start_time_;
284 295
285 base::WeakPtrFactory<RenderFrameHostImpl> weak_ptr_factory_; 296 base::WeakPtrFactory<RenderFrameHostImpl> weak_ptr_factory_;
286 297
287 DISALLOW_COPY_AND_ASSIGN(RenderFrameHostImpl); 298 DISALLOW_COPY_AND_ASSIGN(RenderFrameHostImpl);
288 }; 299 };
289 300
290 } // namespace content 301 } // namespace content
291 302
292 #endif // CONTENT_BROWSER_FRAME_HOST_RENDER_FRAME_HOST_IMPL_H_ 303 #endif // CONTENT_BROWSER_FRAME_HOST_RENDER_FRAME_HOST_IMPL_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698