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

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

Issue 9473001: Extract minimal RenderViewHost interface for embedders, leaving (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Merge to LKGR. Created 8 years, 10 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
diff --git a/content/browser/tab_contents/render_view_host_manager.cc b/content/browser/tab_contents/render_view_host_manager.cc
index 62399d3d9b399d4d9f7e0a9d993421c152180b9e..29faba0a420c534f0b9f9f486b39f8b36f878987 100644
--- a/content/browser/tab_contents/render_view_host_manager.cc
+++ b/content/browser/tab_contents/render_view_host_manager.cc
@@ -51,7 +51,7 @@ RenderViewHostManager::~RenderViewHostManager() {
CancelPending();
// We should always have a main RenderViewHost.
- RenderViewHost* render_view_host = render_view_host_;
+ RenderViewHostImpl* render_view_host = render_view_host_;
render_view_host_ = NULL;
render_view_host->Shutdown();
@@ -71,25 +71,35 @@ void RenderViewHostManager::Init(content::BrowserContext* browser_context,
// ref counted.
if (!site_instance)
site_instance = SiteInstance::Create(browser_context);
- render_view_host_ = RenderViewHostFactory::Create(
- site_instance, render_view_delegate_, routing_id, delegate_->
- GetControllerForRenderManager().GetSessionStorageNamespace());
+ render_view_host_ = static_cast<RenderViewHostImpl*>(
+ RenderViewHostFactory::Create(
+ site_instance, render_view_delegate_, routing_id, delegate_->
+ GetControllerForRenderManager().GetSessionStorageNamespace()));
// Keep track of renderer processes as they start to shut down.
registrar_.Add(this, content::NOTIFICATION_RENDERER_PROCESS_CLOSING,
content::NotificationService::AllSources());
}
+RenderViewHostImpl* RenderViewHostManager::current_host() const {
+ return render_view_host_;
+}
+
+RenderViewHostImpl* RenderViewHostManager::pending_render_view_host() const {
+ return pending_render_view_host_;
+}
+
RenderWidgetHostView* RenderViewHostManager::GetRenderWidgetHostView() const {
if (!render_view_host_)
return NULL;
- return render_view_host_->view();
+ return render_view_host_->GetView();
}
-RenderViewHost* RenderViewHostManager::Navigate(
+RenderViewHostImpl* RenderViewHostManager::Navigate(
const NavigationEntryImpl& entry) {
// Create a pending RenderViewHost. It will give us the one we should use
- RenderViewHost* dest_render_view_host = UpdateRendererStateForNavigate(entry);
+ RenderViewHostImpl* dest_render_view_host =
+ static_cast<RenderViewHostImpl*>(UpdateRendererStateForNavigate(entry));
if (!dest_render_view_host)
return NULL; // We weren't able to create a pending render view host.
@@ -113,8 +123,8 @@ RenderViewHost* RenderViewHostManager::Navigate(
// our primary one. Otherwise, we might crash if we try to call Show()
// on it later.
if (dest_render_view_host != render_view_host_ &&
- dest_render_view_host->view()) {
- dest_render_view_host->view()->Hide();
+ dest_render_view_host->GetView()) {
+ dest_render_view_host->GetView()->Hide();
} else {
// This is our primary renderer, notify here as we won't be calling
// CommitPending (which does the notify).
@@ -140,7 +150,7 @@ void RenderViewHostManager::Stop() {
// will lead to a DidFailProvisionalLoad, which will properly destroy them.
if (cross_navigation_pending_) {
pending_render_view_host_->Send(
- new ViewMsg_Stop(pending_render_view_host_->routing_id()));
+ new ViewMsg_Stop(pending_render_view_host_->GetRoutingID()));
}
}
@@ -176,9 +186,9 @@ bool RenderViewHostManager::ShouldCloseTabOnUnresponsiveRenderer() {
// CrossSiteResourceHandler will already be cleaned up.)
ViewMsg_SwapOut_Params params;
params.new_render_process_host_id =
- pending_render_view_host_->process()->GetID();
+ pending_render_view_host_->GetProcess()->GetID();
params.new_request_id = pending_request_id;
- current_host()->process()->CrossSiteSwapOutACK(params);
+ current_host()->GetProcess()->CrossSiteSwapOutACK(params);
}
return false;
}
@@ -203,8 +213,8 @@ void RenderViewHostManager::DidNavigateMainFrame(
// then we still need to swap out the old RVH first and run its unload
// handler. OK for that to happen in the background.
if (pending_render_view_host_->GetPendingRequestId() == -1) {
- OnCrossSiteResponse(pending_render_view_host_->process()->GetID(),
- pending_render_view_host_->routing_id());
+ OnCrossSiteResponse(pending_render_view_host_->GetProcess()->GetID(),
+ pending_render_view_host_->GetRoutingID());
}
CommitPending();
@@ -248,7 +258,7 @@ void RenderViewHostManager::RendererProcessClosing(
for (RenderViewHostMap::iterator iter = swapped_out_hosts_.begin();
iter != swapped_out_hosts_.end();
++iter) {
- if (iter->second->process() == render_process_host)
+ if (iter->second->GetProcess() == render_process_host)
ids_to_remove.push_back(iter->first);
}
@@ -349,7 +359,7 @@ bool RenderViewHostManager::ShouldSwapProcessesForNavigation(
// 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()->GetSite();
+ render_view_host_->GetSiteInstance()->GetSite();
content::BrowserContext* browser_context =
delegate_->GetControllerForRenderManager().GetBrowserContext();
const WebUIControllerFactory* web_ui_factory =
@@ -525,22 +535,23 @@ bool RenderViewHostManager::CreatePendingRenderView(
pending_render_view_host_ = iter->second;
// Prevent the process from exiting while we're trying to use it.
- pending_render_view_host_->process()->AddPendingView();
+ pending_render_view_host_->GetProcess()->AddPendingView();
return true;
}
- pending_render_view_host_ = RenderViewHostFactory::Create(
- instance, render_view_delegate_, MSG_ROUTING_NONE, delegate_->
- GetControllerForRenderManager().GetSessionStorageNamespace());
+ pending_render_view_host_ = static_cast<RenderViewHostImpl*>(
+ RenderViewHostFactory::Create(
+ instance, render_view_delegate_, MSG_ROUTING_NONE, delegate_->
+ GetControllerForRenderManager().GetSessionStorageNamespace()));
// Prevent the process from exiting while we're trying to use it.
- pending_render_view_host_->process()->AddPendingView();
+ pending_render_view_host_->GetProcess()->AddPendingView();
bool success = InitRenderView(pending_render_view_host_, entry);
if (success) {
// Don't show the view until we get a DidNavigate from it.
- pending_render_view_host_->view()->Hide();
+ pending_render_view_host_->GetView()->Hide();
} else {
CancelPending();
}
@@ -582,27 +593,27 @@ void RenderViewHostManager::CommitPending() {
// Remember if the page was focused so we can focus the new renderer in
// that case.
bool focus_render_view = !will_focus_location_bar &&
- render_view_host_->view() && render_view_host_->view()->HasFocus();
+ render_view_host_->GetView() && render_view_host_->GetView()->HasFocus();
// Swap in the pending view and make it active.
- RenderViewHost* old_render_view_host = render_view_host_;
+ RenderViewHostImpl* old_render_view_host = render_view_host_;
render_view_host_ = pending_render_view_host_;
pending_render_view_host_ = NULL;
// The process will no longer try to exit, so we can decrement the count.
- render_view_host_->process()->RemovePendingView();
+ render_view_host_->GetProcess()->RemovePendingView();
// If the view is gone, then this RenderViewHost died while it was hidden.
// We ignored the RenderViewGone call at the time, so we should send it now
// to make sure the sad tab shows up, etc.
- if (render_view_host_->view())
- render_view_host_->view()->Show();
+ if (render_view_host_->GetView())
+ render_view_host_->GetView()->Show();
else
delegate_->RenderViewGoneFromRenderManager(render_view_host_);
// Hide the old view now that the new one is visible.
- if (old_render_view_host->view()) {
- old_render_view_host->view()->Hide();
+ if (old_render_view_host->GetView()) {
+ old_render_view_host->GetView()->Hide();
old_render_view_host->WasSwappedOut();
}
@@ -611,8 +622,8 @@ void RenderViewHostManager::CommitPending() {
if (will_focus_location_bar)
delegate_->SetFocusToLocationBar(false);
- else if (focus_render_view && render_view_host_->view())
- RenderWidgetHostViewPort::FromRWHV(render_view_host_->view())->Focus();
+ else if (focus_render_view && render_view_host_->GetView())
+ RenderWidgetHostViewPort::FromRWHV(render_view_host_->GetView())->Focus();
std::pair<RenderViewHost*, RenderViewHost*> details =
std::make_pair(old_render_view_host, render_view_host_);
@@ -623,7 +634,7 @@ void RenderViewHostManager::CommitPending() {
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()->GetId());
+ swapped_out_hosts_.erase(render_view_host_->GetSiteInstance()->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.
@@ -633,7 +644,8 @@ void RenderViewHostManager::CommitPending() {
// 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()->GetId();
+ int32 old_site_instance_id =
+ old_render_view_host->GetSiteInstance()->GetId();
RenderViewHostMap::iterator iter =
swapped_out_hosts_.find(old_site_instance_id);
if (iter != swapped_out_hosts_.end() &&
@@ -651,7 +663,7 @@ void RenderViewHostManager::CommitPending() {
delegate_->NotifySwappedFromRenderManager();
}
-RenderViewHost* RenderViewHostManager::UpdateRendererStateForNavigate(
+RenderViewHostImpl* RenderViewHostManager::UpdateRendererStateForNavigate(
const NavigationEntryImpl& entry) {
// If we are cross-navigating, then we want to get back to normal and navigate
// as usual.
@@ -671,7 +683,7 @@ RenderViewHost* RenderViewHostManager::UpdateRendererStateForNavigate(
// render_view_host_ will not be deleted before the end of this method, so we
// don't have to worry about this SiteInstance's ref count dropping to zero.
- SiteInstance* curr_instance = render_view_host_->site_instance();
+ SiteInstance* curr_instance = render_view_host_->GetSiteInstance();
// Determine if we need a new SiteInstance for this entry.
// Again, new_instance won't be deleted before the end of this method, so it
@@ -709,7 +721,8 @@ RenderViewHost* RenderViewHostManager::UpdateRendererStateForNavigate(
// Otherwise, it's safe to treat this as a pending cross-site transition.
// Make sure the old render view stops, in case a load is in progress.
- render_view_host_->Send(new ViewMsg_Stop(render_view_host_->routing_id()));
+ render_view_host_->Send(
+ new ViewMsg_Stop(render_view_host_->GetRoutingID()));
// Suspend the new render view (i.e., don't let it send the cross-site
// Navigate message) until we hear back from the old renderer's
@@ -741,7 +754,7 @@ RenderViewHost* RenderViewHostManager::UpdateRendererStateForNavigate(
// happen. We must overwrite to recover the mode.
if (entry.IsViewSourceMode()) {
render_view_host_->Send(
- new ViewMsg_EnableViewSourceMode(render_view_host_->routing_id()));
+ new ViewMsg_EnableViewSourceMode(render_view_host_->GetRoutingID()));
}
}
@@ -752,7 +765,7 @@ RenderViewHost* RenderViewHostManager::UpdateRendererStateForNavigate(
}
void RenderViewHostManager::CancelPending() {
- RenderViewHost* pending_render_view_host = pending_render_view_host_;
+ RenderViewHostImpl* pending_render_view_host = pending_render_view_host_;
pending_render_view_host_ = NULL;
content::DevToolsManagerImpl::GetInstance()->OnCancelPendingNavigation(
@@ -760,7 +773,7 @@ void RenderViewHostManager::CancelPending() {
render_view_host_);
// We no longer need to prevent the process from exiting.
- pending_render_view_host->process()->RemovePendingView();
+ pending_render_view_host->GetProcess()->RemovePendingView();
// The pending RVH may already be on the swapped out list if we started to
// swap it back in and then canceled. If so, make sure it gets swapped out
@@ -810,9 +823,9 @@ void RenderViewHostManager::RenderViewDeleted(RenderViewHost* rvh) {
}
bool RenderViewHostManager::IsSwappedOut(RenderViewHost* rvh) {
- if (!rvh->site_instance())
+ if (!rvh->GetSiteInstance())
return false;
- return swapped_out_hosts_.find(rvh->site_instance()->GetId()) !=
+ return swapped_out_hosts_.find(rvh->GetSiteInstance()->GetId()) !=
swapped_out_hosts_.end();
}

Powered by Google App Engine
This is Rietveld 408576698