Chromium Code Reviews| Index: chrome/browser/prerender/prerender_contents.cc |
| =================================================================== |
| --- chrome/browser/prerender/prerender_contents.cc (revision 98422) |
| +++ chrome/browser/prerender/prerender_contents.cc (working copy) |
| @@ -172,7 +172,6 @@ |
| prerender_contents_.reset(new TabContentsWrapper(new_contents)); |
| TabContentsObserver::Observe(new_contents); |
| - gfx::Rect tab_bounds; |
| if (source_render_view_host) { |
| DCHECK(source_render_view_host->view() != NULL); |
| TabContents* source_tc = |
| @@ -183,7 +182,7 @@ |
| starting_page_id_ = source_tc->GetMaxPageID(); |
| // Set the size of the new TC to that of the old TC. |
| - source_tc->view()->GetContainerBounds(&tab_bounds); |
| + source_tc->view()->GetContainerBounds(&tab_bounds_); |
| } |
| } else { |
| int max_page_id = -1; |
| @@ -209,7 +208,7 @@ |
| if (active_browser) { |
| TabContents* active_tab_contents = active_browser->GetTabContentsAt( |
| active_browser->active_index()); |
| - active_tab_contents->view()->GetContainerBounds(&tab_bounds); |
| + active_tab_contents->view()->GetContainerBounds(&tab_bounds_); |
| } |
| } |
| @@ -223,9 +222,6 @@ |
| tab_contents_delegate_.reset(new TabContentsDelegateImpl(this)); |
| new_contents->set_delegate(tab_contents_delegate_.get()); |
| - // Set the size of the prerender TabContents. |
| - prerender_contents_->view()->SizeContents(tab_bounds.size()); |
| - |
| // Register as an observer of the RenderViewHost so we get messages. |
| render_view_host_observer_.reset( |
| new PrerenderRenderViewHostObserver(this, render_view_host_mutable())); |
| @@ -258,12 +254,6 @@ |
| this, content::NOTIFICATION_RENDER_VIEW_HOST_CREATED_FOR_TAB, |
| Source<TabContents>(new_contents)); |
| - // Register to be told when the RenderView is ready, so we can hide it. |
| - // It will automatically be set to visible when we resize it, otherwise. |
| - notification_registrar_.Add(this, |
| - content::NOTIFICATION_TAB_CONTENTS_CONNECTED, |
| - Source<TabContents>(new_contents)); |
| - |
| // Register for redirect notifications sourced from |this|. |
| notification_registrar_.Add( |
| this, content::NOTIFICATION_RESOURCE_RECEIVED_REDIRECT, |
| @@ -381,20 +371,17 @@ |
| new ChromeViewMsg_SetIsPrerendering( |
| new_render_view_host->routing_id(), |
| true)); |
| - } |
| - break; |
| - } |
| - case content::NOTIFICATION_TAB_CONTENTS_CONNECTED: { |
| - if (prerender_contents_.get()) { |
| - DCHECK_EQ(Source<TabContents>(source).ptr(), |
| - prerender_contents_->tab_contents()); |
| - // Set the new TabContents and its RenderViewHost as hidden, to reduce |
| - // resource usage. This can only be done after the size has been sent |
| - // to the RenderView, which is why it's done here. |
| + // Set the size of the prerender TabContents. This must be done after |
| + // the RenderView has been created so that the RenderView will be |
| + // informated promptly of the size change. |
|
cbentzel
2011/08/29 12:26:18
Nit: informed
|
| + prerender_contents_->view()->SizeContents(tab_bounds_.size()); |
|
cbentzel
2011/08/29 12:26:18
Is the RenderWidgetHostView hidden at this point?
mmenke
2011/08/29 12:30:35
RenderWidgetHostViews start out as visible. This
|
| + |
| + // Hide the tab contents. Must be done after setting the size, as |
| + // resizing currently forces the RenderView to set itself as visible. |
| prerender_contents_->tab_contents()->HideContents(); |
| } |
| - return; |
| + break; |
| } |
| case content::NOTIFICATION_CREATING_NEW_WINDOW_CANCELLED: { |