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 |