| 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 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 54 | 54 |
| 55 RenderFrameHostManager::RenderFrameHostManager( | 55 RenderFrameHostManager::RenderFrameHostManager( |
| 56 FrameTreeNode* frame_tree_node, | 56 FrameTreeNode* frame_tree_node, |
| 57 RenderFrameHostDelegate* render_frame_delegate, | 57 RenderFrameHostDelegate* render_frame_delegate, |
| 58 RenderWidgetHostDelegate* render_widget_delegate, | 58 RenderWidgetHostDelegate* render_widget_delegate, |
| 59 Delegate* delegate) | 59 Delegate* delegate) |
| 60 : frame_tree_node_(frame_tree_node), | 60 : frame_tree_node_(frame_tree_node), |
| 61 delegate_(delegate), | 61 delegate_(delegate), |
| 62 render_frame_delegate_(render_frame_delegate), | 62 render_frame_delegate_(render_frame_delegate), |
| 63 render_widget_delegate_(render_widget_delegate), | 63 render_widget_delegate_(render_widget_delegate), |
| 64 interstitial_page_(nullptr), | |
| 65 weak_factory_(this) { | 64 weak_factory_(this) { |
| 66 DCHECK(frame_tree_node_); | 65 DCHECK(frame_tree_node_); |
| 67 } | 66 } |
| 68 | 67 |
| 69 RenderFrameHostManager::~RenderFrameHostManager() { | 68 RenderFrameHostManager::~RenderFrameHostManager() { |
| 70 if (pending_render_frame_host_) | 69 if (pending_render_frame_host_) |
| 71 UnsetPendingRenderFrameHost(); | 70 UnsetPendingRenderFrameHost(); |
| 72 | 71 |
| 73 if (speculative_render_frame_host_) | 72 if (speculative_render_frame_host_) |
| 74 UnsetSpeculativeRenderFrameHost(); | 73 UnsetSpeculativeRenderFrameHost(); |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 126 if (speculative_render_frame_host_) | 125 if (speculative_render_frame_host_) |
| 127 return speculative_render_frame_host_->web_ui(); | 126 return speculative_render_frame_host_->web_ui(); |
| 128 } else { | 127 } else { |
| 129 if (pending_render_frame_host_) | 128 if (pending_render_frame_host_) |
| 130 return pending_render_frame_host_->web_ui(); | 129 return pending_render_frame_host_->web_ui(); |
| 131 } | 130 } |
| 132 return render_frame_host_->pending_web_ui(); | 131 return render_frame_host_->pending_web_ui(); |
| 133 } | 132 } |
| 134 | 133 |
| 135 RenderWidgetHostView* RenderFrameHostManager::GetRenderWidgetHostView() const { | 134 RenderWidgetHostView* RenderFrameHostManager::GetRenderWidgetHostView() const { |
| 136 if (interstitial_page_) | 135 if (delegate_->GetInterstitialForRenderManager()) |
| 137 return interstitial_page_->GetView(); | 136 return delegate_->GetInterstitialForRenderManager()->GetView(); |
| 138 if (render_frame_host_) | 137 if (render_frame_host_) |
| 139 return render_frame_host_->GetView(); | 138 return render_frame_host_->GetView(); |
| 140 return nullptr; | 139 return nullptr; |
| 141 } | 140 } |
| 142 | 141 |
| 143 bool RenderFrameHostManager::ForInnerDelegate() { | 142 bool RenderFrameHostManager::ForInnerDelegate() { |
| 144 return delegate_->GetOuterDelegateFrameTreeNodeId() != | 143 return delegate_->GetOuterDelegateFrameTreeNodeId() != |
| 145 FrameTreeNode::kFrameTreeNodeInvalidId; | 144 FrameTreeNode::kFrameTreeNodeInvalidId; |
| 146 } | 145 } |
| 147 | 146 |
| (...skipping 1270 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1418 | 1417 |
| 1419 // TODO(creis): Once we intercept links and script-based navigations, we | 1418 // TODO(creis): Once we intercept links and script-based navigations, we |
| 1420 // will be able to enforce that all entries in a SiteInstance actually have | 1419 // will be able to enforce that all entries in a SiteInstance actually have |
| 1421 // the same site, and it will be safe to compare the URL against the | 1420 // the same site, and it will be safe to compare the URL against the |
| 1422 // SiteInstance's site, as follows: | 1421 // SiteInstance's site, as follows: |
| 1423 // const GURL& current_url = current_instance_impl->site(); | 1422 // const GURL& current_url = current_instance_impl->site(); |
| 1424 // For now, though, we're in a hybrid model where you only switch | 1423 // For now, though, we're in a hybrid model where you only switch |
| 1425 // SiteInstances if you type in a cross-site URL. This means we have to | 1424 // SiteInstances if you type in a cross-site URL. This means we have to |
| 1426 // compare the entry's URL to the last committed entry's URL. | 1425 // compare the entry's URL to the last committed entry's URL. |
| 1427 NavigationEntry* current_entry = controller.GetLastCommittedEntry(); | 1426 NavigationEntry* current_entry = controller.GetLastCommittedEntry(); |
| 1428 if (interstitial_page_) { | 1427 if (delegate_->GetInterstitialForRenderManager()) { |
| 1429 // The interstitial is currently the last committed entry, but we want to | 1428 // The interstitial is currently the last committed entry, but we want to |
| 1430 // compare against the last non-interstitial entry. | 1429 // compare against the last non-interstitial entry. |
| 1431 current_entry = controller.GetEntryAtOffset(-1); | 1430 current_entry = controller.GetEntryAtOffset(-1); |
| 1432 } | 1431 } |
| 1433 | 1432 |
| 1434 // View-source URLs must use a new SiteInstance and BrowsingInstance. | 1433 // View-source URLs must use a new SiteInstance and BrowsingInstance. |
| 1435 // We don't need a swap when going from view-source to a debug URL like | 1434 // We don't need a swap when going from view-source to a debug URL like |
| 1436 // chrome://crash, however. | 1435 // chrome://crash, however. |
| 1437 // TODO(creis): Refactor this method so this duplicated code isn't needed. | 1436 // TODO(creis): Refactor this method so this duplicated code isn't needed. |
| 1438 // See http://crbug.com/123007. | 1437 // See http://crbug.com/123007. |
| (...skipping 1405 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2844 resolved_url)) { | 2843 resolved_url)) { |
| 2845 DCHECK(!dest_instance || | 2844 DCHECK(!dest_instance || |
| 2846 dest_instance == render_frame_host_->GetSiteInstance()); | 2845 dest_instance == render_frame_host_->GetSiteInstance()); |
| 2847 return false; | 2846 return false; |
| 2848 } | 2847 } |
| 2849 | 2848 |
| 2850 return true; | 2849 return true; |
| 2851 } | 2850 } |
| 2852 | 2851 |
| 2853 void RenderFrameHostManager::EnsureRenderFrameHostVisibilityConsistent() { | 2852 void RenderFrameHostManager::EnsureRenderFrameHostVisibilityConsistent() { |
| 2854 if (render_frame_host_->GetView() && | 2853 RenderWidgetHostView* view = GetRenderWidgetHostView(); |
| 2855 render_frame_host_->render_view_host()->GetWidget()->is_hidden() != | 2854 if (view && static_cast<RenderWidgetHostImpl*>(view->GetRenderWidgetHost()) |
| 2856 delegate_->IsHidden()) { | 2855 ->is_hidden() != delegate_->IsHidden()) { |
| 2857 if (delegate_->IsHidden()) { | 2856 if (delegate_->IsHidden()) { |
| 2858 render_frame_host_->GetView()->Hide(); | 2857 view->Hide(); |
| 2859 } else { | 2858 } else { |
| 2860 render_frame_host_->GetView()->Show(); | 2859 view->Show(); |
| 2861 } | 2860 } |
| 2862 } | 2861 } |
| 2863 } | 2862 } |
| 2864 | 2863 |
| 2865 } // namespace content | 2864 } // namespace content |
| OLD | NEW |