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

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

Issue 1799163002: Remove swapped out state from RenderFrameHost. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixing failing layout test and adding an explicit test. Created 4 years, 9 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 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
103 const ui::AXTreeUpdate&)>; 103 const ui::AXTreeUpdate&)>;
104 104
105 // Keeps track of the state of the RenderFrameHostImpl, particularly with 105 // Keeps track of the state of the RenderFrameHostImpl, particularly with
106 // respect to swap out. 106 // respect to swap out.
107 enum RenderFrameHostImplState { 107 enum RenderFrameHostImplState {
108 // The standard state for a RFH handling the communication with an active 108 // The standard state for a RFH handling the communication with an active
109 // RenderFrame. 109 // RenderFrame.
110 STATE_DEFAULT = 0, 110 STATE_DEFAULT = 0,
111 // The RFH has not received the SwapOutACK yet, but the new page has 111 // The RFH has not received the SwapOutACK yet, but the new page has
112 // committed in a different RFH. Upon reception of the SwapOutACK, the RFH 112 // committed in a different RFH. Upon reception of the SwapOutACK, the RFH
113 // will either enter STATE_SWAPPED_OUT (if it is a main frame and there are 113 // will be deleted.
114 // other active frames in its SiteInstance) or it will be deleted.
115 STATE_PENDING_SWAP_OUT, 114 STATE_PENDING_SWAP_OUT,
116 // The RFH is swapped out and stored inside a RenderFrameProxyHost, being
117 // used as a placeholder to allow cross-process communication. Only main
118 // frames can enter this state.
119 STATE_SWAPPED_OUT,
120 }; 115 };
121 // Helper function to determine whether the RFH state should contribute to the 116 // Helper function to determine whether the RFH state should contribute to the
122 // number of active frames of a SiteInstance or not. 117 // number of active frames of a SiteInstance or not.
123 static bool IsRFHStateActive(RenderFrameHostImplState rfh_state); 118 static bool IsRFHStateActive(RenderFrameHostImplState rfh_state);
124 119
125 // An accessibility reset is only allowed to prevent very rare corner cases 120 // An accessibility reset is only allowed to prevent very rare corner cases
126 // or race conditions where the browser and renderer get out of sync. If 121 // or race conditions where the browser and renderer get out of sync. If
127 // this happens more than this many times, kill the renderer. 122 // this happens more than this many times, kill the renderer.
128 static const int kMaxAccessibilityResets = 5; 123 static const int kMaxAccessibilityResets = 5;
129 124
(...skipping 223 matching lines...) Expand 10 before | Expand all | Expand 10 after
353 return is_waiting_for_beforeunload_ack_; 348 return is_waiting_for_beforeunload_ack_;
354 } 349 }
355 350
356 // Whether the RFH is waiting for an unload ACK from the renderer. 351 // Whether the RFH is waiting for an unload ACK from the renderer.
357 bool IsWaitingForUnloadACK() const; 352 bool IsWaitingForUnloadACK() const;
358 353
359 // Called when either the SwapOut request has been acknowledged or has timed 354 // Called when either the SwapOut request has been acknowledged or has timed
360 // out. 355 // out.
361 void OnSwappedOut(); 356 void OnSwappedOut();
362 357
363 // Whether this RenderFrameHost has been swapped out, such that the frame is
364 // now rendered by a RenderFrameHost in a different process.
365 bool is_swapped_out() const { return rfh_state_ == STATE_SWAPPED_OUT; }
366
367 // The current state of this RFH. 358 // The current state of this RFH.
368 RenderFrameHostImplState rfh_state() const { return rfh_state_; } 359 RenderFrameHostImplState rfh_state() const { return rfh_state_; }
369 360
370 // Sends the given navigation message. Use this rather than sending it 361 // Sends the given navigation message. Use this rather than sending it
371 // yourself since this does the internal bookkeeping described below. This 362 // yourself since this does the internal bookkeeping described below. This
372 // function takes ownership of the provided message pointer. 363 // function takes ownership of the provided message pointer.
373 // 364 //
374 // If a cross-site request is in progress, we may be suspended while waiting 365 // If a cross-site request is in progress, we may be suspended while waiting
375 // for the onbeforeunload handler, so this function might buffer the message 366 // for the onbeforeunload handler, so this function might buffer the message
376 // rather than sending it. 367 // rather than sending it.
(...skipping 565 matching lines...) Expand 10 before | Expand all | Expand 10 after
942 933
943 // NOTE: This must be the last member. 934 // NOTE: This must be the last member.
944 base::WeakPtrFactory<RenderFrameHostImpl> weak_ptr_factory_; 935 base::WeakPtrFactory<RenderFrameHostImpl> weak_ptr_factory_;
945 936
946 DISALLOW_COPY_AND_ASSIGN(RenderFrameHostImpl); 937 DISALLOW_COPY_AND_ASSIGN(RenderFrameHostImpl);
947 }; 938 };
948 939
949 } // namespace content 940 } // namespace content
950 941
951 #endif // CONTENT_BROWSER_FRAME_HOST_RENDER_FRAME_HOST_IMPL_H_ 942 #endif // CONTENT_BROWSER_FRAME_HOST_RENDER_FRAME_HOST_IMPL_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698