| Index: content/browser/web_contents/web_contents_impl.cc | 
| diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc | 
| index e02f12d2f7e62dff8f4fd333e2661d4084ffd63a..c74c4ad9ad1ced3127c86edea6fab52f11f82048 100644 | 
| --- a/content/browser/web_contents/web_contents_impl.cc | 
| +++ b/content/browser/web_contents/web_contents_impl.cc | 
| @@ -342,8 +342,7 @@ WebContentsImpl::WebContentsImpl( | 
| #if defined(OS_WIN) && defined(USE_AURA) | 
| accessible_parent_(NULL), | 
| #endif | 
| -      render_manager_(this, this, this), | 
| -      frame_tree_(new Navigator(&controller_, this)), | 
| +      frame_tree_(new Navigator(&controller_, this), this, this, this), | 
| is_loading_(false), | 
| crashed_status_(base::TERMINATION_STATUS_STILL_RUNNING), | 
| crashed_error_code_(0), | 
| @@ -409,7 +408,7 @@ WebContentsImpl::~WebContentsImpl() { | 
| } | 
| #endif | 
|  | 
| -  RenderViewHost* pending_rvh = render_manager_.pending_render_view_host(); | 
| +  RenderViewHost* pending_rvh = GetRenderManager()->pending_render_view_host(); | 
| if (pending_rvh) { | 
| FOR_EACH_OBSERVER(WebContentsObserver, | 
| observers_, | 
| @@ -418,7 +417,7 @@ WebContentsImpl::~WebContentsImpl() { | 
|  | 
| FOR_EACH_OBSERVER(WebContentsObserver, | 
| observers_, | 
| -                    RenderViewDeleted(render_manager_.current_host())); | 
| +                    RenderViewDeleted(GetRenderManager()->current_host())); | 
|  | 
| FOR_EACH_OBSERVER(WebContentsObserver, | 
| observers_, | 
| @@ -466,7 +465,7 @@ BrowserPluginGuest* WebContentsImpl::CreateGuest( | 
| } | 
|  | 
| RenderViewHostManager* WebContentsImpl::GetRenderManagerForTesting() { | 
| -  return &render_manager_; | 
| +  return GetRenderManager(); | 
| } | 
|  | 
| bool WebContentsImpl::OnMessageReceived(RenderViewHost* render_view_host, | 
| @@ -602,12 +601,12 @@ void WebContentsImpl::SetDelegate(WebContentsDelegate* delegate) { | 
| } | 
|  | 
| RenderProcessHost* WebContentsImpl::GetRenderProcessHost() const { | 
| -  RenderViewHostImpl* host = render_manager_.current_host(); | 
| +  RenderViewHostImpl* host = GetRenderManager()->current_host(); | 
| return host ? host->GetProcess() : NULL; | 
| } | 
|  | 
| RenderViewHost* WebContentsImpl::GetRenderViewHost() const { | 
| -  return render_manager_.current_host(); | 
| +  return GetRenderManager()->current_host(); | 
| } | 
|  | 
| void WebContentsImpl::GetRenderViewHostAtPosition( | 
| @@ -647,7 +646,7 @@ int WebContentsImpl::GetFullscreenWidgetRoutingID() const { | 
| } | 
|  | 
| RenderWidgetHostView* WebContentsImpl::GetRenderWidgetHostView() const { | 
| -  return render_manager_.GetRenderWidgetHostView(); | 
| +  return GetRenderManager()->GetRenderWidgetHostView(); | 
| } | 
|  | 
| RenderWidgetHostViewPort* WebContentsImpl::GetRenderWidgetHostViewPort() const { | 
| @@ -685,12 +684,12 @@ WebUI* WebContentsImpl::CreateWebUI(const GURL& url) { | 
| } | 
|  | 
| WebUI* WebContentsImpl::GetWebUI() const { | 
| -  return render_manager_.web_ui() ? render_manager_.web_ui() | 
| -      : render_manager_.pending_web_ui(); | 
| +  return GetRenderManager()->web_ui() ? GetRenderManager()->web_ui() | 
| +      : GetRenderManager()->pending_web_ui(); | 
| } | 
|  | 
| WebUI* WebContentsImpl::GetCommittedWebUI() const { | 
| -  return render_manager_.web_ui(); | 
| +  return GetRenderManager()->web_ui(); | 
| } | 
|  | 
| void WebContentsImpl::SetUserAgentOverride(const std::string& override) { | 
| @@ -737,8 +736,8 @@ const string16& WebContentsImpl::GetTitle() const { | 
| if (entry) { | 
| return entry->GetTitleForDisplay(accept_languages); | 
| } | 
| -  WebUI* our_web_ui = render_manager_.pending_web_ui() ? | 
| -      render_manager_.pending_web_ui() : render_manager_.web_ui(); | 
| +  WebUI* our_web_ui = GetRenderManager()->pending_web_ui() ? | 
| +      GetRenderManager()->pending_web_ui() : GetRenderManager()->web_ui(); | 
| if (our_web_ui) { | 
| // Don't override the title in view source mode. | 
| entry = controller_.GetVisibleEntry(); | 
| @@ -799,13 +798,13 @@ void WebContentsImpl::CopyMaxPageIDsFrom(WebContents* web_contents) { | 
| } | 
|  | 
| SiteInstance* WebContentsImpl::GetSiteInstance() const { | 
| -  return render_manager_.current_host()->GetSiteInstance(); | 
| +  return GetRenderManager()->current_host()->GetSiteInstance(); | 
| } | 
|  | 
| SiteInstance* WebContentsImpl::GetPendingSiteInstance() const { | 
| -  RenderViewHost* dest_rvh = render_manager_.pending_render_view_host() ? | 
| -      render_manager_.pending_render_view_host() : | 
| -      render_manager_.current_host(); | 
| +  RenderViewHost* dest_rvh = GetRenderManager()->pending_render_view_host() ? | 
| +      GetRenderManager()->pending_render_view_host() : | 
| +      GetRenderManager()->current_host(); | 
| return dest_rvh->GetSiteInstance(); | 
| } | 
|  | 
| @@ -964,7 +963,7 @@ bool WebContentsImpl::NeedToFireBeforeUnload() { | 
| } | 
|  | 
| void WebContentsImpl::Stop() { | 
| -  render_manager_.Stop(); | 
| +  GetRenderManager()->Stop(); | 
| FOR_EACH_OBSERVER(WebContentsObserver, observers_, NavigationStopped()); | 
| } | 
|  | 
| @@ -1007,11 +1006,12 @@ WebContents* WebContentsImpl::GetWebContents() { | 
| } | 
|  | 
| void WebContentsImpl::Init(const WebContents::CreateParams& params) { | 
| -  // This is set before initializing the render_manager_ since render_manager_ | 
| -  // init calls back into us via its delegate to ask if it should be hidden. | 
| +  // This is set before initializing the render manager since | 
| +  // RenderViewHostManager::Init calls back into us via its delegate to ask if | 
| +  // it should be hidden. | 
| should_normally_be_visible_ = !params.initially_hidden; | 
|  | 
| -  render_manager_.Init( | 
| +  GetRenderManager()->Init( | 
| params.browser_context, params.site_instance, params.routing_id, | 
| params.main_frame_routing_id); | 
|  | 
| @@ -1580,7 +1580,7 @@ void WebContentsImpl::RenderViewForInterstitialPageCreated( | 
| void WebContentsImpl::AttachInterstitialPage( | 
| InterstitialPageImpl* interstitial_page) { | 
| DCHECK(interstitial_page); | 
| -  render_manager_.set_interstitial_page(interstitial_page); | 
| +  GetRenderManager()->set_interstitial_page(interstitial_page); | 
|  | 
| // Cancel any visible dialogs so that they don't interfere with the | 
| // interstitial. | 
| @@ -1593,7 +1593,7 @@ void WebContentsImpl::AttachInterstitialPage( | 
|  | 
| void WebContentsImpl::DetachInterstitialPage() { | 
| if (GetInterstitialPage()) | 
| -    render_manager_.remove_interstitial_page(); | 
| +    GetRenderManager()->remove_interstitial_page(); | 
| FOR_EACH_OBSERVER(WebContentsObserver, observers_, | 
| DidDetachInterstitialPage()); | 
| } | 
| @@ -1612,7 +1612,7 @@ bool WebContentsImpl::NavigateToEntry( | 
| } | 
|  | 
| RenderViewHostImpl* dest_render_view_host = | 
| -      static_cast<RenderViewHostImpl*>(render_manager_.Navigate(entry)); | 
| +      static_cast<RenderViewHostImpl*>(GetRenderManager()->Navigate(entry)); | 
| if (!dest_render_view_host) | 
| return false;  // Unable to create the desired render view host. | 
|  | 
| @@ -1671,7 +1671,7 @@ void WebContentsImpl::SetHistoryLengthAndPrune( | 
| int32 minimum_page_id) { | 
| // SetHistoryLengthAndPrune doesn't work when there are pending cross-site | 
| // navigations. Callers should ensure that this is the case. | 
| -  if (render_manager_.pending_render_view_host()) { | 
| +  if (GetRenderManager()->pending_render_view_host()) { | 
| NOTREACHED(); | 
| return; | 
| } | 
| @@ -1691,18 +1691,18 @@ void WebContentsImpl::SetHistoryLengthAndPrune( | 
|  | 
| void WebContentsImpl::FocusThroughTabTraversal(bool reverse) { | 
| if (ShowingInterstitialPage()) { | 
| -    render_manager_.interstitial_page()->FocusThroughTabTraversal(reverse); | 
| +    GetRenderManager()->interstitial_page()->FocusThroughTabTraversal(reverse); | 
| return; | 
| } | 
| GetRenderViewHostImpl()->SetInitialFocus(reverse); | 
| } | 
|  | 
| bool WebContentsImpl::ShowingInterstitialPage() const { | 
| -  return render_manager_.interstitial_page() != NULL; | 
| +  return GetRenderManager()->interstitial_page() != NULL; | 
| } | 
|  | 
| InterstitialPage* WebContentsImpl::GetInterstitialPage() const { | 
| -  return render_manager_.interstitial_page(); | 
| +  return GetRenderManager()->interstitial_page(); | 
| } | 
|  | 
| bool WebContentsImpl::IsSavable() { | 
| @@ -2094,7 +2094,7 @@ void WebContentsImpl::DidFailProvisionalLoadWithError( | 
| return; | 
| } | 
|  | 
| -    render_manager_.RendererAbortedProvisionalLoad(render_view_host); | 
| +    GetRenderManager()->RendererAbortedProvisionalLoad(render_view_host); | 
| } | 
|  | 
| // Do not usually clear the pending entry if one exists, so that the user's | 
| @@ -2501,7 +2501,7 @@ void WebContentsImpl::SetIsLoading(RenderViewHost* render_view_host, | 
| upload_position_ = 0; | 
| } | 
|  | 
| -  render_manager_.SetIsLoading(is_loading); | 
| +  GetRenderManager()->SetIsLoading(is_loading); | 
|  | 
| is_loading_ = is_loading; | 
| waiting_for_response_ = is_loading; | 
| @@ -2692,7 +2692,7 @@ RenderViewHostDelegateView* WebContentsImpl::GetDelegateView() { | 
|  | 
| RenderViewHostDelegate::RendererManagement* | 
| WebContentsImpl::GetRendererManagementDelegate() { | 
| -  return &render_manager_; | 
| +  return GetRenderManager(); | 
| } | 
|  | 
| RendererPreferences WebContentsImpl::GetRendererPrefs( | 
| @@ -2732,8 +2732,8 @@ void WebContentsImpl::RenderViewCreated(RenderViewHost* render_view_host) { | 
|  | 
| // When we're creating views, we're still doing initial setup, so we always | 
| // use the pending Web UI rather than any possibly existing committed one. | 
| -  if (render_manager_.pending_web_ui()) | 
| -    render_manager_.pending_web_ui()->RenderViewCreated(render_view_host); | 
| +  if (GetRenderManager()->pending_web_ui()) | 
| +    GetRenderManager()->pending_web_ui()->RenderViewCreated(render_view_host); | 
|  | 
| NavigationEntry* entry = controller_.GetPendingEntry(); | 
| if (entry && entry->IsViewSourceMode()) { | 
| @@ -2796,7 +2796,7 @@ void WebContentsImpl::RenderViewTerminated(RenderViewHost* rvh, | 
|  | 
| void WebContentsImpl::RenderViewDeleted(RenderViewHost* rvh) { | 
| ClearPowerSaveBlockers(rvh); | 
| -  render_manager_.RenderViewDeleted(rvh); | 
| +  GetRenderManager()->RenderViewDeleted(rvh); | 
| FOR_EACH_OBSERVER(WebContentsObserver, observers_, RenderViewDeleted(rvh)); | 
| } | 
|  | 
| @@ -2847,7 +2847,7 @@ void WebContentsImpl::DidNavigate( | 
| if (delegate_ && delegate_->CanOverscrollContent()) | 
| controller_.TakeScreenshot(); | 
|  | 
| -    render_manager_.DidNavigateMainFrame(rvh); | 
| +    GetRenderManager()->DidNavigateMainFrame(rvh); | 
| } | 
|  | 
| // Update the site of the SiteInstance if it doesn't have one yet, unless | 
| @@ -2932,7 +2932,8 @@ void WebContentsImpl::UpdateState(RenderViewHost* rvh, | 
| const PageState& page_state) { | 
| // Ensure that this state update comes from either the active RVH or one of | 
| // the swapped out RVHs.  We don't expect to hear from any other RVHs. | 
| -  DCHECK(rvh == GetRenderViewHost() || render_manager_.IsOnSwappedOutList(rvh)); | 
| +  DCHECK(rvh == GetRenderViewHost() || | 
| +         GetRenderManager()->IsOnSwappedOutList(rvh)); | 
|  | 
| // We must be prepared to handle state updates for any page, these occur | 
| // when the user is scrolling and entering form data, as well as when we're | 
| @@ -3015,7 +3016,7 @@ void WebContentsImpl::SwappedOut(RenderViewHost* rvh) { | 
| delegate_->SwappedOut(this); | 
|  | 
| // Allow the navigation to proceed. | 
| -  render_manager_.SwappedOut(rvh); | 
| +  GetRenderManager()->SwappedOut(rvh); | 
| } | 
|  | 
| void WebContentsImpl::RequestMove(const gfx::Rect& new_bounds) { | 
| @@ -3073,7 +3074,7 @@ void WebContentsImpl::DidDisownOpener(RenderViewHost* rvh) { | 
| // Notify all swapped out RenderViewHosts for this tab.  This is important | 
| // in case we go back to them, or if another window in those processes tries | 
| // to access window.opener. | 
| -  render_manager_.DidDisownOpener(rvh); | 
| +  GetRenderManager()->DidDisownOpener(rvh); | 
| } | 
|  | 
| void WebContentsImpl::DidAccessInitialDocument() { | 
| @@ -3148,13 +3149,13 @@ void WebContentsImpl::RequestTransferURL( | 
| params.should_replace_current_entry = should_replace_current_entry; | 
| params.user_gesture = user_gesture; | 
|  | 
| -  if (render_manager_.web_ui()) { | 
| +  if (GetRenderManager()->web_ui()) { | 
| // Web UI pages sometimes want to override the page transition type for | 
| // link clicks (e.g., so the new tab page can specify AUTO_BOOKMARK for | 
| // automatically generated suggestions).  We don't override other types | 
| // like TYPED because they have different implications (e.g., autocomplete). | 
| if (PageTransitionCoreTypeIs(params.transition, PAGE_TRANSITION_LINK)) | 
| -      params.transition = render_manager_.web_ui()->GetLinkTransitionType(); | 
| +      params.transition = GetRenderManager()->web_ui()->GetLinkTransitionType(); | 
|  | 
| // Note also that we hide the referrer for Web UI pages. We don't really | 
| // want web sites to see a referrer of "chrome://blah" (and some | 
| @@ -3358,13 +3359,13 @@ WebPreferences WebContentsImpl::GetWebkitPrefs() { | 
| GURL url = controller_.GetActiveEntry() | 
| ? controller_.GetActiveEntry()->GetURL() : GURL::EmptyGURL(); | 
|  | 
| -  return render_manager_.current_host()->GetWebkitPrefs(url); | 
| +  return GetRenderManager()->current_host()->GetWebkitPrefs(url); | 
| } | 
|  | 
| int WebContentsImpl::CreateSwappedOutRenderView( | 
| SiteInstance* instance) { | 
| -  return render_manager_.CreateRenderView(instance, MSG_ROUTING_NONE, | 
| -                                          true, true); | 
| +  return GetRenderManager()->CreateRenderView(instance, MSG_ROUTING_NONE, | 
| +                                              true, true); | 
| } | 
|  | 
| void WebContentsImpl::OnUserGesture() { | 
| @@ -3401,7 +3402,7 @@ void WebContentsImpl::RendererUnresponsive(RenderViewHost* rvh, | 
| // Pretend the handler fired so tab closing continues as if it had. | 
| rvhi->set_sudden_termination_allowed(true); | 
|  | 
| -    if (!render_manager_.ShouldCloseTabOnUnresponsiveRenderer()) | 
| +    if (!GetRenderManager()->ShouldCloseTabOnUnresponsiveRenderer()) | 
| return; | 
|  | 
| // If the tab hangs in the beforeunload/unload handler there's really | 
| @@ -3518,22 +3519,23 @@ int WebContentsImpl::CreateOpenerRenderViews(SiteInstance* instance) { | 
|  | 
| // If any of the renderers (current, pending, or swapped out) for this | 
| // WebContents has the same SiteInstance, use it. | 
| -  if (render_manager_.current_host()->GetSiteInstance() == instance) | 
| -    return render_manager_.current_host()->GetRoutingID(); | 
| +  if (GetRenderManager()->current_host()->GetSiteInstance() == instance) | 
| +    return GetRenderManager()->current_host()->GetRoutingID(); | 
|  | 
| -  if (render_manager_.pending_render_view_host() && | 
| -      render_manager_.pending_render_view_host()->GetSiteInstance() == instance) | 
| -    return render_manager_.pending_render_view_host()->GetRoutingID(); | 
| +  if (GetRenderManager()->pending_render_view_host() && | 
| +      GetRenderManager()->pending_render_view_host()->GetSiteInstance() == | 
| +          instance) | 
| +    return GetRenderManager()->pending_render_view_host()->GetRoutingID(); | 
|  | 
| -  RenderViewHostImpl* rvh = render_manager_.GetSwappedOutRenderViewHost( | 
| +  RenderViewHostImpl* rvh = GetRenderManager()->GetSwappedOutRenderViewHost( | 
| instance); | 
| if (rvh) | 
| return rvh->GetRoutingID(); | 
|  | 
| // Create a swapped out RenderView in the given SiteInstance if none exists, | 
| // setting its opener to the given route_id.  Return the new view's route_id. | 
| -  return render_manager_.CreateRenderView(instance, opener_route_id, | 
| -                                          true, true); | 
| +  return GetRenderManager()->CreateRenderView(instance, opener_route_id, | 
| +                                              true, true); | 
| } | 
|  | 
| NavigationControllerImpl& WebContentsImpl::GetControllerForRenderManager() { | 
| @@ -3624,6 +3626,10 @@ bool WebContentsImpl::IsHidden() { | 
| return capturer_count_ == 0 && !should_normally_be_visible_; | 
| } | 
|  | 
| +RenderViewHostManager* WebContentsImpl::GetRenderManager() const { | 
| +  return frame_tree_.root()->render_manager(); | 
| +} | 
| + | 
| RenderViewHostImpl* WebContentsImpl::GetRenderViewHostImpl() { | 
| return static_cast<RenderViewHostImpl*>(GetRenderViewHost()); | 
| } | 
|  |