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 <algorithm> | 7 #include <algorithm> |
8 #include <utility> | 8 #include <utility> |
9 | 9 |
10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
(...skipping 1251 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1262 !base::CommandLine::ForCurrentProcess()->HasSwitch( | 1262 !base::CommandLine::ForCurrentProcess()->HasSwitch( |
1263 switches::kProcessPerTab); | 1263 switches::kProcessPerTab); |
1264 } | 1264 } |
1265 | 1265 |
1266 bool RenderFrameHostManager::ShouldSwapBrowsingInstancesForNavigation( | 1266 bool RenderFrameHostManager::ShouldSwapBrowsingInstancesForNavigation( |
1267 const GURL& current_effective_url, | 1267 const GURL& current_effective_url, |
1268 bool current_is_view_source_mode, | 1268 bool current_is_view_source_mode, |
1269 SiteInstance* new_site_instance, | 1269 SiteInstance* new_site_instance, |
1270 const GURL& new_effective_url, | 1270 const GURL& new_effective_url, |
1271 bool new_is_view_source_mode) const { | 1271 bool new_is_view_source_mode) const { |
| 1272 // A subframe must stay in the same BrowsingInstance as its parent. |
| 1273 // TODO(nasko): Ensure that SiteInstance swap is still triggered for subframes |
| 1274 // in the cases covered by the rest of the checks in this method. |
| 1275 if (!frame_tree_node_->IsMainFrame()) |
| 1276 return false; |
| 1277 |
1272 // If new_entry already has a SiteInstance, assume it is correct. We only | 1278 // If new_entry already has a SiteInstance, assume it is correct. We only |
1273 // need to force a swap if it is in a different BrowsingInstance. | 1279 // need to force a swap if it is in a different BrowsingInstance. |
1274 if (new_site_instance) { | 1280 if (new_site_instance) { |
1275 return !new_site_instance->IsRelatedSiteInstance( | 1281 return !new_site_instance->IsRelatedSiteInstance( |
1276 render_frame_host_->GetSiteInstance()); | 1282 render_frame_host_->GetSiteInstance()); |
1277 } | 1283 } |
1278 | 1284 |
1279 // Check for reasons to swap processes even if we are in a process model that | 1285 // Check for reasons to swap processes even if we are in a process model that |
1280 // doesn't usually swap (e.g., process-per-tab). Any time we return true, | 1286 // doesn't usually swap (e.g., process-per-tab). Any time we return true, |
1281 // the new_entry will be rendered in a new SiteInstance AND BrowsingInstance. | 1287 // the new_entry will be rendered in a new SiteInstance AND BrowsingInstance. |
(...skipping 1373 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2655 int RenderFrameHostManager::GetOpenerRoutingID(SiteInstance* instance) { | 2661 int RenderFrameHostManager::GetOpenerRoutingID(SiteInstance* instance) { |
2656 if (!frame_tree_node_->opener()) | 2662 if (!frame_tree_node_->opener()) |
2657 return MSG_ROUTING_NONE; | 2663 return MSG_ROUTING_NONE; |
2658 | 2664 |
2659 return frame_tree_node_->opener() | 2665 return frame_tree_node_->opener() |
2660 ->render_manager() | 2666 ->render_manager() |
2661 ->GetRoutingIdForSiteInstance(instance); | 2667 ->GetRoutingIdForSiteInstance(instance); |
2662 } | 2668 } |
2663 | 2669 |
2664 } // namespace content | 2670 } // namespace content |
OLD | NEW |