Chromium Code Reviews| Index: components/dom_distiller/content/distiller_page_web_contents.cc |
| diff --git a/components/dom_distiller/content/distiller_page_web_contents.cc b/components/dom_distiller/content/distiller_page_web_contents.cc |
| index 41187eb2b88cd63044797c7e10f6e3be814f4025..0967fac90873cd4bf893e7674927effcb517826b 100644 |
| --- a/components/dom_distiller/content/distiller_page_web_contents.cc |
| +++ b/components/dom_distiller/content/distiller_page_web_contents.cc |
| @@ -33,11 +33,12 @@ scoped_ptr<content::WebContents> SourcePageHandleWebContents::GetWebContents() { |
| return web_contents_.Pass(); |
| } |
| -scoped_ptr<DistillerPage> DistillerPageWebContentsFactory::CreateDistillerPage() |
| - const { |
| +scoped_ptr<DistillerPage> DistillerPageWebContentsFactory::CreateDistillerPage( |
| + const gfx::Size& render_view_size) const { |
| DCHECK(browser_context_); |
| return scoped_ptr<DistillerPage>(new DistillerPageWebContents( |
| - browser_context_, scoped_ptr<SourcePageHandleWebContents>())); |
| + browser_context_, render_view_size, |
| + scoped_ptr<SourcePageHandleWebContents>())); |
| } |
| scoped_ptr<DistillerPage> |
| @@ -48,19 +49,25 @@ DistillerPageWebContentsFactory::CreateDistillerPageWithHandle( |
| scoped_ptr<SourcePageHandleWebContents>( |
| static_cast<SourcePageHandleWebContents*>(handle.release())); |
| return scoped_ptr<DistillerPage>(new DistillerPageWebContents( |
| - browser_context_, web_contents_handle.Pass())); |
| + browser_context_, gfx::Size(), web_contents_handle.Pass())); |
| } |
| DistillerPageWebContents::DistillerPageWebContents( |
| content::BrowserContext* browser_context, |
| + const gfx::Size& render_view_size, |
| scoped_ptr<SourcePageHandleWebContents> optional_web_contents_handle) |
| - : state_(IDLE), browser_context_(browser_context) { |
| + : state_(IDLE), browser_context_(browser_context), |
| + render_view_size_(render_view_size) { |
| if (optional_web_contents_handle) { |
| web_contents_ = optional_web_contents_handle->GetWebContents().Pass(); |
| + if (render_view_size.IsEmpty()) |
| + render_view_size_ = web_contents_->GetContainerBounds().size(); |
| } |
| } |
| DistillerPageWebContents::~DistillerPageWebContents() { |
| + if (web_contents_) |
| + web_contents_->SetDelegate(NULL); |
| } |
| void DistillerPageWebContents::DistillPageImpl(const GURL& url, |
| @@ -101,12 +108,28 @@ void DistillerPageWebContents::CreateNewWebContents(const GURL& url) { |
| web_contents_.reset(content::WebContents::Create(create_params)); |
| DCHECK(web_contents_.get()); |
| + web_contents_->SetDelegate(this); |
| + |
| // Start observing WebContents and load the requested URL. |
| content::WebContentsObserver::Observe(web_contents_.get()); |
| content::NavigationController::LoadURLParams params(url); |
| web_contents_->GetController().LoadURLWithParams(params); |
| } |
| +gfx::Size DistillerPageWebContents::GetSizeForNewRenderView( |
| + content::WebContents* web_contents) const { |
| + gfx::Size size(render_view_size_); |
| + if (size.IsEmpty()) |
| + web_contents->GetContainerBounds().size(); |
|
nyquist
2014/07/15 17:13:02
was this supposed to say |size = wc->GCB().size()|
Yaron
2014/07/16 17:46:28
+1 (or early return but I think Tommy's suggestion
kuan
2014/07/17 09:57:25
Done. gd catch!
kuan
2014/07/17 09:57:25
Done.
|
| + // If size is still empty, set an arbitary size so that document.offsetWidth |
| + // in the executed domdistiller.js won't be 0. |
| + if (size.IsEmpty()) { |
| + DVLOG(1) << "Using default RenderView size 800x600"; |
|
Yaron
2014/07/15 01:46:27
Can this actually happen?
kuan
2014/07/15 16:52:51
i hope not, but i figured i shld handle and log it
Yaron
2014/07/16 17:46:28
Hmm. Maybe just do a fullscreen result in that cas
kuan
2014/07/17 09:57:26
Done.
|
| + size = gfx::Size(800, 600); |
| + } |
| + return size; |
| +} |
| + |
| void DistillerPageWebContents::DocumentLoadedInFrame( |
| content::RenderFrameHost* render_frame_host) { |
| if (render_frame_host == web_contents_->GetMainFrame()) { |