Chromium Code Reviews| Index: content/browser/frame_host/render_frame_host_manager.cc |
| diff --git a/content/browser/frame_host/render_frame_host_manager.cc b/content/browser/frame_host/render_frame_host_manager.cc |
| index db0cf760cfc4157ccbf39a35869061d2f6cf3c87..7b8ac94f7a1c56f3148e1815ffab84fd6d44b381 100644 |
| --- a/content/browser/frame_host/render_frame_host_manager.cc |
| +++ b/content/browser/frame_host/render_frame_host_manager.cc |
| @@ -40,6 +40,7 @@ |
| #include "content/common/frame_owner_properties.h" |
| #include "content/common/site_isolation_policy.h" |
| #include "content/common/view_messages.h" |
| +#include "content/public/browser/browser_context.h" |
| #include "content/public/browser/content_browser_client.h" |
| #include "content/public/browser/render_process_host_observer.h" |
| #include "content/public/browser/render_widget_host_iterator.h" |
| @@ -811,6 +812,24 @@ RenderFrameHostImpl* RenderFrameHostManager::GetFrameHostForNavigation( |
| no_renderer_swap |= !CanSubframeSwapProcess( |
| request.common_params().url, request.source_site_instance(), |
| request.dest_site_instance(), was_server_redirect); |
| + |
| + // Even if the url should warrant a process swap, check if the newly created |
| + // SiteInstance would use the same storage partition as its parent. If |
|
nasko
2017/03/03 23:04:23
nit: StoragePartition
arthursonzogni
2017/03/06 15:10:13
Done.
|
| + // that's not the case, the subframe should not swap processes, as there is |
| + // not support for having an OOPIF that does not share the storage partition |
| + // of its parent. |
|
nasko
2017/03/03 23:04:23
That seems like a good property to enforce long te
arthursonzogni
2017/03/06 15:10:13
I moved it to:
https://codereview.chromium.org/273
|
| + BrowserContext* browser_context = |
| + frame_tree_node_->navigator()->GetController()->GetBrowserContext(); |
| + bool share_parent_storage_partition = |
| + BrowserContext::GetStoragePartition(browser_context, |
| + dest_site_instance.get()) == |
| + BrowserContext::GetStoragePartition(browser_context, |
| + frame_tree_node_->parent() |
| + ->current_frame_host() |
| + ->GetSiteInstance()); |
| + no_renderer_swap |= |
| + (!SiteIsolationPolicy::UseDedicatedProcessesForAllSites() && |
|
nasko
2017/03/03 23:04:23
Why check for UseDedicatedProcessesForAllSites? If
arthursonzogni
2017/03/06 15:10:13
I checked with Camille. It was because what is wri
|
| + !share_parent_storage_partition); |
| } |
| if (no_renderer_swap) { |