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 1283 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1431 | 1430 |
1432 // TODO(creis): Once we intercept links and script-based navigations, we | 1431 // TODO(creis): Once we intercept links and script-based navigations, we |
1433 // will be able to enforce that all entries in a SiteInstance actually have | 1432 // will be able to enforce that all entries in a SiteInstance actually have |
1434 // the same site, and it will be safe to compare the URL against the | 1433 // the same site, and it will be safe to compare the URL against the |
1435 // SiteInstance's site, as follows: | 1434 // SiteInstance's site, as follows: |
1436 // const GURL& current_url = current_instance_impl->site(); | 1435 // const GURL& current_url = current_instance_impl->site(); |
1437 // For now, though, we're in a hybrid model where you only switch | 1436 // For now, though, we're in a hybrid model where you only switch |
1438 // SiteInstances if you type in a cross-site URL. This means we have to | 1437 // SiteInstances if you type in a cross-site URL. This means we have to |
1439 // compare the entry's URL to the last committed entry's URL. | 1438 // compare the entry's URL to the last committed entry's URL. |
1440 NavigationEntry* current_entry = controller.GetLastCommittedEntry(); | 1439 NavigationEntry* current_entry = controller.GetLastCommittedEntry(); |
1441 if (interstitial_page_) { | 1440 if (delegate_->GetInterstitialForRenderManager()) { |
1442 // The interstitial is currently the last committed entry, but we want to | 1441 // The interstitial is currently the last committed entry, but we want to |
1443 // compare against the last non-interstitial entry. | 1442 // compare against the last non-interstitial entry. |
1444 current_entry = controller.GetEntryAtOffset(-1); | 1443 current_entry = controller.GetEntryAtOffset(-1); |
1445 } | 1444 } |
1446 | 1445 |
1447 // View-source URLs must use a new SiteInstance and BrowsingInstance. | 1446 // View-source URLs must use a new SiteInstance and BrowsingInstance. |
1448 // We don't need a swap when going from view-source to a debug URL like | 1447 // We don't need a swap when going from view-source to a debug URL like |
1449 // chrome://crash, however. | 1448 // chrome://crash, however. |
1450 // TODO(creis): Refactor this method so this duplicated code isn't needed. | 1449 // TODO(creis): Refactor this method so this duplicated code isn't needed. |
1451 // See http://crbug.com/123007. | 1450 // See http://crbug.com/123007. |
(...skipping 1405 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2857 resolved_url)) { | 2856 resolved_url)) { |
2858 DCHECK(!dest_instance || | 2857 DCHECK(!dest_instance || |
2859 dest_instance == render_frame_host_->GetSiteInstance()); | 2858 dest_instance == render_frame_host_->GetSiteInstance()); |
2860 return false; | 2859 return false; |
2861 } | 2860 } |
2862 | 2861 |
2863 return true; | 2862 return true; |
2864 } | 2863 } |
2865 | 2864 |
2866 void RenderFrameHostManager::EnsureRenderFrameHostVisibilityConsistent() { | 2865 void RenderFrameHostManager::EnsureRenderFrameHostVisibilityConsistent() { |
2867 if (render_frame_host_->GetView() && | 2866 RenderWidgetHostView* view = GetRenderWidgetHostView(); |
2868 render_frame_host_->render_view_host()->GetWidget()->is_hidden() != | 2867 if (view && static_cast<RenderWidgetHostImpl*>(view->GetRenderWidgetHost()) |
2869 delegate_->IsHidden()) { | 2868 ->is_hidden() != delegate_->IsHidden()) { |
2870 if (delegate_->IsHidden()) { | 2869 if (delegate_->IsHidden()) { |
2871 render_frame_host_->GetView()->Hide(); | 2870 view->Hide(); |
2872 } else { | 2871 } else { |
2873 render_frame_host_->GetView()->Show(); | 2872 view->Show(); |
2874 } | 2873 } |
2875 } | 2874 } |
2876 } | 2875 } |
2877 | 2876 |
2878 } // namespace content | 2877 } // namespace content |
OLD | NEW |