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

Side by Side Diff: content/browser/renderer_host/render_view_host_impl.h

Issue 464593003: Don't swap out the old RenderFrameHost until the new one commits. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Major rebase Created 6 years, 4 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 (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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_RENDERER_HOST_RENDER_VIEW_HOST_IMPL_H_ 5 #ifndef CONTENT_BROWSER_RENDERER_HOST_RENDER_VIEW_HOST_IMPL_H_
6 #define CONTENT_BROWSER_RENDERER_HOST_RENDER_VIEW_HOST_IMPL_H_ 6 #define CONTENT_BROWSER_RENDERER_HOST_RENDER_VIEW_HOST_IMPL_H_
7 7
8 #include <map> 8 #include <map>
9 #include <string> 9 #include <string>
10 #include <vector> 10 #include <vector>
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
89 class CONTENT_EXPORT RenderViewHostImpl 89 class CONTENT_EXPORT RenderViewHostImpl
90 : public RenderViewHost, 90 : public RenderViewHost,
91 public RenderWidgetHostImpl { 91 public RenderWidgetHostImpl {
92 public: 92 public:
93 // Keeps track of the state of the RenderViewHostImpl, particularly with 93 // Keeps track of the state of the RenderViewHostImpl, particularly with
94 // respect to swap out. 94 // respect to swap out.
95 enum RenderViewHostImplState { 95 enum RenderViewHostImplState {
96 // The standard state for a RVH handling the communication with a 96 // The standard state for a RVH handling the communication with a
97 // RenderView. 97 // RenderView.
98 STATE_DEFAULT = 0, 98 STATE_DEFAULT = 0,
99 // The RVH has sent the SwapOut request to the renderer, but has not
100 // received the SwapOutACK yet. The new page has not been committed yet
101 // either.
102 STATE_WAITING_FOR_UNLOAD_ACK,
103 // The RVH received the SwapOutACK from the RenderView, but the new page has
104 // not been committed yet.
105 STATE_WAITING_FOR_COMMIT,
106 // The RVH is waiting for the CloseACK from the RenderView. 99 // The RVH is waiting for the CloseACK from the RenderView.
107 STATE_WAITING_FOR_CLOSE, 100 STATE_WAITING_FOR_CLOSE,
108 // The RVH has not received the SwapOutACK yet, but the new page has 101 // The RVH has not received the SwapOutACK yet, but the new page has
109 // committed in a different RVH. The number of active views of the RVH 102 // committed in a different RVH. The number of active views of the RVH
110 // SiteInstanceImpl is not zero. Upon reception of the SwapOutACK, the RVH 103 // SiteInstanceImpl is not zero. Upon reception of the SwapOutACK, the RVH
111 // will be swapped out. 104 // will be swapped out.
112 STATE_PENDING_SWAP_OUT, 105 STATE_PENDING_SWAP_OUT,
113 // The RVH has not received the SwapOutACK yet, but the new page has 106 // The RVH has not received the SwapOutACK yet, but the new page has
114 // committed in a different RVH. The number of active views of the RVH 107 // committed in a different RVH. The number of active views of the RVH
115 // SiteInstanceImpl is zero. Upon reception of the SwapOutACK, the RVH will 108 // SiteInstanceImpl is zero. Upon reception of the SwapOutACK, the RVH will
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after
270 // Tells the renderer that this RenderView will soon be swapped out, and thus 263 // Tells the renderer that this RenderView will soon be swapped out, and thus
271 // not to create any new modal dialogs until it happens. This must be done 264 // not to create any new modal dialogs until it happens. This must be done
272 // separately so that the PageGroupLoadDeferrers of any current dialogs are no 265 // separately so that the PageGroupLoadDeferrers of any current dialogs are no
273 // longer on the stack when we attempt to swap it out. 266 // longer on the stack when we attempt to swap it out.
274 void SuppressDialogsUntilSwapOut(); 267 void SuppressDialogsUntilSwapOut();
275 268
276 // Called when either the SwapOut request has been acknowledged or has timed 269 // Called when either the SwapOut request has been acknowledged or has timed
277 // out. 270 // out.
278 void OnSwappedOut(bool timed_out); 271 void OnSwappedOut(bool timed_out);
279 272
280 // Called when the RenderFrameHostManager has swapped in a new
281 // RenderFrameHost. Should |this| RVH switch to the pending shutdown state,
282 // |pending_delete_on_swap_out| will be executed upon reception of the
283 // SwapOutACK, or when the unload timer times out.
284 void WasSwappedOut(const base::Closure& pending_delete_on_swap_out);
285
286 // Set |this| as pending shutdown. |on_swap_out| will be called 273 // Set |this| as pending shutdown. |on_swap_out| will be called
287 // when the SwapOutACK is received, or when the unload timer times out. 274 // when the SwapOutACK is received, or when the unload timer times out.
288 void SetPendingShutdown(const base::Closure& on_swap_out); 275 void SetPendingShutdown(const base::Closure& on_swap_out);
289 276
290 // Close the page ignoring whether it has unload events registers. 277 // Close the page ignoring whether it has unload events registers.
291 // This is called after the beforeunload and unload events have fired 278 // This is called after the beforeunload and unload events have fired
292 // and the user has agreed to continue with closing the page. 279 // and the user has agreed to continue with closing the page.
293 void ClosePageIgnoringUnloadEvents(); 280 void ClosePageIgnoringUnloadEvents();
294 281
295 // Tells the renderer view to focus the first (last if reverse is true) node. 282 // Tells the renderer view to focus the first (last if reverse is true) node.
(...skipping 279 matching lines...) Expand 10 before | Expand all | Expand 10 after
575 DISALLOW_COPY_AND_ASSIGN(RenderViewHostImpl); 562 DISALLOW_COPY_AND_ASSIGN(RenderViewHostImpl);
576 }; 563 };
577 564
578 #if defined(COMPILER_MSVC) 565 #if defined(COMPILER_MSVC)
579 #pragma warning(pop) 566 #pragma warning(pop)
580 #endif 567 #endif
581 568
582 } // namespace content 569 } // namespace content
583 570
584 #endif // CONTENT_BROWSER_RENDERER_HOST_RENDER_VIEW_HOST_IMPL_H_ 571 #endif // CONTENT_BROWSER_RENDERER_HOST_RENDER_VIEW_HOST_IMPL_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698