Index: content/browser/web_contents/render_view_host_manager.h |
diff --git a/content/browser/web_contents/render_view_host_manager.h b/content/browser/web_contents/render_view_host_manager.h |
index 68b1704f87faee807dead7f13bacae659cffe145..32d2fca06210fcb8652d4a6e77ddc22f2d0eb09a 100644 |
--- a/content/browser/web_contents/render_view_host_manager.h |
+++ b/content/browser/web_contents/render_view_host_manager.h |
@@ -235,26 +235,30 @@ class CONTENT_EXPORT RenderViewHostManager |
// switch. Can be overridden in unit tests. |
bool ShouldTransitionCrossSite(); |
- // Returns true if the two navigation entries are incompatible in some way |
- // other than site instances. Cases where this can happen include Web UI |
- // to regular web pages. It will cause us to swap RenderViewHosts (and hence |
- // RenderProcessHosts) even if the site instance would otherwise be the same. |
- // As part of this, we'll also force new SiteInstances and BrowsingInstances. |
+ // Returns true if for the navigation from |current_entry| to |new_entry|, |
+ // a new SiteInstance and BrowsingInstance should be created (even if we are |
+ // in a process model that doesn't usually swap). This forces a process swap |
+ // and severs script connections with existing tabs. Cases where this can |
+ // happen include transitions between WebUI and regular web pages. |
// Either of the entries may be NULL. |
- bool ShouldSwapProcessesForNavigation( |
- const content::NavigationEntry* curr_entry, |
+ bool ShouldSwapBrowsingInstanceForNavigation( |
+ const content::NavigationEntry* current_entry, |
const content::NavigationEntryImpl* new_entry) const; |
+ // Returns true if it is safe to reuse the current WebUI when navigating from |
+ // |curr_entry| to |new_entry|. |
bool ShouldReuseWebUI( |
const content::NavigationEntry* curr_entry, |
const content::NavigationEntryImpl* new_entry) const; |
// Returns an appropriate SiteInstance object for the given NavigationEntry, |
- // possibly reusing the current SiteInstance. |
- // Never called if --process-per-tab is used. |
+ // possibly reusing the current SiteInstance. If --process-per-tab is used, |
+ // this is only called when ShouldSwapBrowsingInstancesForNavigation returns |
+ // true. |
content::SiteInstance* GetSiteInstanceForEntry( |
const content::NavigationEntryImpl& entry, |
- content::SiteInstance* curr_instance); |
+ content::SiteInstance* curr_instance, |
+ bool force_swap); |
// Sets up the necessary state for a new RenderViewHost with the given opener. |
bool InitRenderView(content::RenderViewHost* render_view_host, |