Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1402)

Unified Diff: content/browser/tab_contents/render_view_host_manager.cc

Issue 9146028: Define the public interface for content browser SiteInstance. This interface is implemented by th... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 8 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/browser/tab_contents/render_view_host_manager.cc
===================================================================
--- content/browser/tab_contents/render_view_host_manager.cc (revision 118952)
+++ content/browser/tab_contents/render_view_host_manager.cc (working copy)
@@ -12,7 +12,7 @@
#include "content/browser/renderer_host/render_view_host.h"
#include "content/browser/renderer_host/render_view_host_factory.h"
#include "content/browser/renderer_host/render_widget_host_view.h"
-#include "content/browser/site_instance.h"
+#include "content/browser/site_instance_impl.h"
#include "content/browser/tab_contents/navigation_controller_impl.h"
#include "content/browser/tab_contents/navigation_entry_impl.h"
#include "content/browser/webui/web_ui_impl.h"
@@ -30,6 +30,7 @@
using content::NavigationController;
using content::NavigationEntry;
using content::NavigationEntryImpl;
+using content::SiteInstance;
RenderViewHostManager::RenderViewHostManager(
content::RenderViewHostDelegate* render_view_delegate,
@@ -66,7 +67,7 @@
// immediately give this SiteInstance to a RenderViewHost so that it is
// ref counted.
if (!site_instance)
- site_instance = SiteInstance::CreateSiteInstance(browser_context);
+ site_instance = SiteInstance::Create(browser_context);
render_view_host_ = RenderViewHostFactory::Create(
site_instance, render_view_delegate_, routing_id, delegate_->
GetControllerForRenderManager().GetSessionStorageNamespace());
@@ -345,7 +346,7 @@
// page and one isn't. If there's no cur_entry, check the current RVH's
// site, which might already be committed to a Web UI URL (such as the NTP).
const GURL& current_url = (cur_entry) ? cur_entry->GetURL() :
- render_view_host_->site_instance()->site();
+ render_view_host_->site_instance()->GetSite();
content::BrowserContext* browser_context =
delegate_->GetControllerForRenderManager().GetBrowserContext();
const content::WebUIFactory* web_ui_factory =
@@ -407,26 +408,29 @@
entry.GetTransitionType() == content::PAGE_TRANSITION_GENERATED)
return curr_instance;
+ SiteInstanceImpl* curr_site_instance =
+ static_cast<SiteInstanceImpl*>(curr_instance);
+
// If we haven't used our SiteInstance (and thus RVH) yet, then we can use it
// for this entry. We won't commit the SiteInstance to this site until the
// navigation commits (in DidNavigate), unless the navigation entry was
// restored or it's a Web UI as described below.
- if (!curr_instance->has_site()) {
+ if (!curr_site_instance->HasSite()) {
// If we've already created a SiteInstance for our destination, we don't
// want to use this unused SiteInstance; use the existing one. (We don't
// do this check if the curr_instance has a site, because for now, we want
// to compare against the current URL and not the SiteInstance's site. In
// this case, there is no current URL, so comparing against the site is ok.
// See additional comments below.)
- if (curr_instance->HasRelatedSiteInstance(dest_url))
- return curr_instance->GetRelatedSiteInstance(dest_url);
+ if (curr_site_instance->HasRelatedSiteInstance(dest_url))
+ return curr_site_instance->GetRelatedSiteInstance(dest_url);
// For extensions, Web UI URLs (such as the new tab page), and apps we do
// not want to use the curr_instance if it has no site, since it will have a
// RenderProcessHost of PRIV_NORMAL. Create a new SiteInstance for this
// URL instead (with the correct process type).
- if (curr_instance->HasWrongProcessForURL(dest_url))
- return curr_instance->GetRelatedSiteInstance(dest_url);
+ if (curr_site_instance->HasWrongProcessForURL(dest_url))
+ return curr_site_instance->GetRelatedSiteInstance(dest_url);
// Normally the "site" on the SiteInstance is set lazily when the load
// actually commits. This is to support better process sharing in case
@@ -437,9 +441,9 @@
// we need to set the site first, otherwise after a restore none of the
// pages would share renderers in process-per-site.
if (entry.restore_type() != NavigationEntryImpl::RESTORE_NONE)
- curr_instance->SetSite(dest_url);
+ curr_site_instance->SetSite(dest_url);
- return curr_instance;
+ return curr_site_instance;
}
// Otherwise, only create a new SiteInstance for cross-site navigation.
@@ -469,13 +473,14 @@
// the page to a different same-site URL. (This seems very unlikely in
// practice.)
const GURL& current_url = (curr_entry) ? curr_entry->GetURL() :
- curr_instance->site();
+ curr_instance->GetSite();
// Use the current SiteInstance for same site navigations, as long as the
// process type is correct. (The URL may have been installed as an app since
// the last time we visited it.)
if (SiteInstance::IsSameWebSite(browser_context, current_url, dest_url) &&
- !curr_instance->HasWrongProcessForURL(dest_url)) {
+ !static_cast<SiteInstanceImpl*>(curr_instance)->HasWrongProcessForURL(
+ dest_url)) {
return curr_instance;
} else if (ShouldSwapProcessesForNavigation(curr_entry, &entry)) {
// When we're swapping, we need to force the site instance AND browsing
@@ -484,7 +489,7 @@
// Pages), keeping them in the same process. When you navigate away from
// that page, we want to explicity ignore that BrowsingInstance and group
// this page into the appropriate SiteInstance for its URL.
- return SiteInstance::CreateSiteInstanceForURL(browser_context, dest_url);
+ return SiteInstance::CreateForURL(browser_context, dest_url);
} else {
// Start the new renderer in a new SiteInstance, but in the current
// BrowsingInstance. It is important to immediately give this new
@@ -496,7 +501,7 @@
}
bool RenderViewHostManager::CreatePendingRenderView(
- const NavigationEntryImpl& entry, SiteInstance* instance) {
+ const NavigationEntryImpl& entry, SiteInstance* instance) {
NavigationEntry* curr_entry =
delegate_->GetControllerForRenderManager().GetLastCommittedEntry();
if (curr_entry) {
@@ -508,7 +513,7 @@
// Check if we've already created an RVH for this SiteInstance.
CHECK(instance);
RenderViewHostMap::iterator iter =
- swapped_out_hosts_.find(instance->id());
+ swapped_out_hosts_.find(instance->GetId());
if (iter != swapped_out_hosts_.end()) {
// Re-use the existing RenderViewHost, which has already been initialized.
// We'll remove it from the list of swapped out hosts if it commits.
@@ -613,7 +618,7 @@
content::Details<std::pair<RenderViewHost*, RenderViewHost*> >(&details));
// If the pending view was on the swapped out list, we can remove it.
- swapped_out_hosts_.erase(render_view_host_->site_instance()->id());
+ swapped_out_hosts_.erase(render_view_host_->site_instance()->GetId());
// If the old RVH is live, we are swapping it out and should keep track of it
// in case we navigate back to it.
@@ -623,7 +628,7 @@
// sure we don't get different rvh instances for the same site instance
// in the same rvhmgr.
// TODO(creis): Clean this up.
- int32 old_site_instance_id = old_render_view_host->site_instance()->id();
+ int32 old_site_instance_id = old_render_view_host->site_instance()->GetId();
RenderViewHostMap::iterator iter =
swapped_out_hosts_.find(old_site_instance_id);
if (iter != swapped_out_hosts_.end() &&
@@ -815,6 +820,6 @@
if (!rvh->site_instance())
return false;
- return swapped_out_hosts_.find(rvh->site_instance()->id()) !=
+ return swapped_out_hosts_.find(rvh->site_instance()->GetId()) !=
swapped_out_hosts_.end();
}

Powered by Google App Engine
This is Rietveld 408576698