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

Unified Diff: content/browser/frame_host/render_frame_host_manager.cc

Issue 1308623003: Assume crashed RenderWidgetHost to be invisible (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Check dest_render_frame_host->render_view_host()->is_hidden() Created 5 years, 3 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 side-by-side diff with in-line comments
Download patch
Index: content/browser/frame_host/render_frame_host_manager.cc
diff --git a/content/browser/frame_host/render_frame_host_manager.cc b/content/browser/frame_host/render_frame_host_manager.cc
index 71ec817e8d78b47bf48cc58b0cf878138f5921cd..6ed4f00477e0a4a2a8116a23ac0ccbed70934919 100644
--- a/content/browser/frame_host/render_frame_host_manager.cc
+++ b/content/browser/frame_host/render_frame_host_manager.cc
@@ -405,7 +405,7 @@ RenderFrameHostImpl* RenderFrameHostManager::Navigate(
frame_tree_node_->IsMainFrame());
}
- // If the renderer crashed, then try to create a new one to satisfy this
+ // If the renderer isn't live, then try to create a new one to satisfy this
// navigation request.
if (!dest_render_frame_host->IsRenderFrameLive()) {
// Instruct the destination render frame host to set up a Mojo connection
@@ -432,6 +432,19 @@ RenderFrameHostImpl* RenderFrameHostManager::Navigate(
if (dest_render_frame_host->GetView())
dest_render_frame_host->GetView()->Hide();
} else {
+ // After a renderer crash we'd have marked the host as invisible, so we
+ // need to set the visibility of the new View to the correct value here
+ // after reload.
+ if (dest_render_frame_host->GetView() &&
+ dest_render_frame_host->render_view_host()->is_hidden() !=
+ delegate_->IsHidden()) {
+ if (delegate_->IsHidden()) {
+ dest_render_frame_host->GetView()->Hide();
+ } else {
+ dest_render_frame_host->GetView()->Show();
+ }
+ }
+
// TODO(nasko): This is a very ugly hack. The Chrome extensions process
// manager still uses NotificationService and expects to see a
// RenderViewHost changed notification after WebContents and

Powered by Google App Engine
This is Rietveld 408576698