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

Unified Diff: components/dom_distiller/content/distiller_page_web_contents.cc

Issue 396503003: DomDistiller: fix 0 document width (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: resolve patch conflicts Created 6 years, 5 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: 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..4c6ff1c6e07ca1eb93a07d35be8b7caa533f9afa 100644
--- a/components/dom_distiller/content/distiller_page_web_contents.cc
+++ b/components/dom_distiller/content/distiller_page_web_contents.cc
@@ -16,6 +16,7 @@
#include "content/public/browser/render_view_host.h"
#include "content/public/browser/web_contents.h"
#include "content/public/browser/web_contents_observer.h"
+#include "ui/gfx/screen.h"
#include "url/gurl.h"
namespace dom_distiller {
@@ -33,11 +34,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 +50,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 +109,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())
+ size = web_contents->GetContainerBounds().size();
+ // If size is still empty, set it to fullscreen so that document.offsetWidth
+ // in the executed domdistiller.js won't be 0.
+ if (size.IsEmpty()) {
+ DVLOG(1) << "Using fullscreen as default RenderView size";
+ size = gfx::Screen::GetNativeScreen()->GetPrimaryDisplay().size();
+ }
+ return size;
+}
+
void DistillerPageWebContents::DocumentLoadedInFrame(
content::RenderFrameHost* render_frame_host) {
if (render_frame_host == web_contents_->GetMainFrame()) {

Powered by Google App Engine
This is Rietveld 408576698