| OLD | NEW |
| 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 #include "content/browser/frame_host/render_frame_host_manager.h" | 5 #include "content/browser/frame_host/render_frame_host_manager.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include <algorithm> | 9 #include <algorithm> |
| 10 #include <string> | 10 #include <string> |
| (...skipping 227 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 238 GetNavigatingWebUI()->RenderFrameCreated(dest_render_frame_host); | 238 GetNavigatingWebUI()->RenderFrameCreated(dest_render_frame_host); |
| 239 } | 239 } |
| 240 | 240 |
| 241 // Now that we've created a new renderer, be sure to hide it if it isn't | 241 // Now that we've created a new renderer, be sure to hide it if it isn't |
| 242 // our primary one. Otherwise, we might crash if we try to call Show() | 242 // our primary one. Otherwise, we might crash if we try to call Show() |
| 243 // on it later. | 243 // on it later. |
| 244 if (dest_render_frame_host != render_frame_host_.get()) { | 244 if (dest_render_frame_host != render_frame_host_.get()) { |
| 245 if (dest_render_frame_host->GetView()) | 245 if (dest_render_frame_host->GetView()) |
| 246 dest_render_frame_host->GetView()->Hide(); | 246 dest_render_frame_host->GetView()->Hide(); |
| 247 } else { | 247 } else { |
| 248 // After a renderer crash we'd have marked the host as invisible, so we | 248 EnsureRenderFrameHostVisibilityConsistent(); |
| 249 // need to set the visibility of the new View to the correct value here | |
| 250 // after reload. | |
| 251 if (dest_render_frame_host->GetView() && | |
| 252 dest_render_frame_host->render_view_host() | |
| 253 ->GetWidget() | |
| 254 ->is_hidden() != delegate_->IsHidden()) { | |
| 255 if (delegate_->IsHidden()) { | |
| 256 dest_render_frame_host->GetView()->Hide(); | |
| 257 } else { | |
| 258 dest_render_frame_host->GetView()->Show(); | |
| 259 } | |
| 260 } | |
| 261 | 249 |
| 262 // TODO(nasko): This is a very ugly hack. The Chrome extensions process | 250 // TODO(nasko): This is a very ugly hack. The Chrome extensions process |
| 263 // manager still uses NotificationService and expects to see a | 251 // manager still uses NotificationService and expects to see a |
| 264 // RenderViewHost changed notification after WebContents and | 252 // RenderViewHost changed notification after WebContents and |
| 265 // RenderFrameHostManager are completely initialized. This should be | 253 // RenderFrameHostManager are completely initialized. This should be |
| 266 // removed once the process manager moves away from NotificationService. | 254 // removed once the process manager moves away from NotificationService. |
| 267 // See https://crbug.com/462682. | 255 // See https://crbug.com/462682. |
| 268 delegate_->NotifyMainFrameSwappedFromRenderManager( | 256 delegate_->NotifyMainFrameSwappedFromRenderManager( |
| 269 nullptr, render_frame_host_->render_view_host()); | 257 nullptr, render_frame_host_->render_view_host()); |
| 270 } | 258 } |
| (...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 454 | 442 |
| 455 void RenderFrameHostManager::CommitPendingIfNecessary( | 443 void RenderFrameHostManager::CommitPendingIfNecessary( |
| 456 RenderFrameHostImpl* render_frame_host, | 444 RenderFrameHostImpl* render_frame_host, |
| 457 bool was_caused_by_user_gesture) { | 445 bool was_caused_by_user_gesture) { |
| 458 if (!pending_render_frame_host_ && !speculative_render_frame_host_) { | 446 if (!pending_render_frame_host_ && !speculative_render_frame_host_) { |
| 459 // There's no pending/speculative RenderFrameHost so it must be that the | 447 // There's no pending/speculative RenderFrameHost so it must be that the |
| 460 // current renderer process completed a navigation. | 448 // current renderer process completed a navigation. |
| 461 | 449 |
| 462 // We should only hear this from our current renderer. | 450 // We should only hear this from our current renderer. |
| 463 DCHECK_EQ(render_frame_host_.get(), render_frame_host); | 451 DCHECK_EQ(render_frame_host_.get(), render_frame_host); |
| 452 EnsureRenderFrameHostVisibilityConsistent(); |
| 464 | 453 |
| 465 // If the current RenderFrameHost has a pending WebUI it must be committed. | 454 // If the current RenderFrameHost has a pending WebUI it must be committed. |
| 466 // Note: When one tries to move same-site commit logic into RenderFrameHost | 455 // Note: When one tries to move same-site commit logic into RenderFrameHost |
| 467 // itself, mind that the focus setting logic inside CommitPending also needs | 456 // itself, mind that the focus setting logic inside CommitPending also needs |
| 468 // to be moved there. | 457 // to be moved there. |
| 469 if (render_frame_host_->pending_web_ui()) | 458 if (render_frame_host_->pending_web_ui()) |
| 470 CommitPendingWebUI(); | 459 CommitPendingWebUI(); |
| 471 return; | 460 return; |
| 472 } | 461 } |
| 473 | 462 |
| (...skipping 2326 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2800 if (!IsRendererTransferNeededForNavigation(render_frame_host_.get(), | 2789 if (!IsRendererTransferNeededForNavigation(render_frame_host_.get(), |
| 2801 resolved_url)) { | 2790 resolved_url)) { |
| 2802 DCHECK(!dest_instance || | 2791 DCHECK(!dest_instance || |
| 2803 dest_instance == render_frame_host_->GetSiteInstance()); | 2792 dest_instance == render_frame_host_->GetSiteInstance()); |
| 2804 return false; | 2793 return false; |
| 2805 } | 2794 } |
| 2806 | 2795 |
| 2807 return true; | 2796 return true; |
| 2808 } | 2797 } |
| 2809 | 2798 |
| 2799 void RenderFrameHostManager::EnsureRenderFrameHostVisibilityConsistent() { |
| 2800 if (render_frame_host_->GetView() && |
| 2801 render_frame_host_->render_view_host()->GetWidget()->is_hidden() != |
| 2802 delegate_->IsHidden()) { |
| 2803 if (delegate_->IsHidden()) { |
| 2804 render_frame_host_->GetView()->Hide(); |
| 2805 } else { |
| 2806 render_frame_host_->GetView()->Show(); |
| 2807 } |
| 2808 } |
| 2809 } |
| 2810 |
| 2810 } // namespace content | 2811 } // namespace content |
| OLD | NEW |