Commit bee6eb72 authored by sail@chromium.org's avatar sail@chromium.org

HiDPI: Scale viewport for pepper flash fullscreen

Pepper flash fullscreen mode was not rendering correctly in HiDPI mode. The problem was that we weren't taking into account the display scale factor when setting the view port.

This CL pipes the screen info to RenderWidgetFullscreenPepper so that the display scale factor can be used.

BUG=130323
TEST=

Review URL: https://chromiumcodereview.appspot.com/10807039

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@148508 0039d316-1c4b-4281-b951-d872f2087c98
parent 4cdc9a28
......@@ -1722,7 +1722,7 @@ RenderWidgetFullscreenPepper* RenderViewImpl::CreatePepperFullscreenContainer(
if (webview() && webview()->mainFrame())
active_url = GURL(webview()->mainFrame()->document().url());
RenderWidgetFullscreenPepper* widget = RenderWidgetFullscreenPepper::Create(
routing_id_, plugin, active_url);
routing_id_, plugin, active_url, screen_info_);
widget->show(WebKit::WebNavigationPolicyIgnore);
return widget;
}
......
......@@ -13,7 +13,7 @@ using WebKit::WebWidget;
RenderWidgetFullscreen* RenderWidgetFullscreen::Create(int32 opener_id) {
DCHECK_NE(MSG_ROUTING_NONE, opener_id);
scoped_refptr<RenderWidgetFullscreen> widget(
new RenderWidgetFullscreen());
new RenderWidgetFullscreen(WebKit::WebScreenInfo()));
widget->Init(opener_id);
return widget.release();
}
......@@ -30,8 +30,9 @@ void RenderWidgetFullscreen::show(WebKit::WebNavigationPolicy) {
}
}
RenderWidgetFullscreen::RenderWidgetFullscreen()
: RenderWidget(WebKit::WebPopupTypeNone, WebKit::WebScreenInfo(), false) {
RenderWidgetFullscreen::RenderWidgetFullscreen(
const WebKit::WebScreenInfo& screen_info)
: RenderWidget(WebKit::WebPopupTypeNone, screen_info, false) {
}
RenderWidgetFullscreen::~RenderWidgetFullscreen() {}
......
......@@ -19,7 +19,7 @@ class RenderWidgetFullscreen : public RenderWidget {
virtual void show(WebKit::WebNavigationPolicy);
protected:
RenderWidgetFullscreen();
RenderWidgetFullscreen(const WebKit::WebScreenInfo& screen_info);
virtual ~RenderWidgetFullscreen();
virtual WebKit::WebWidget* CreateWebWidget();
......
......@@ -255,18 +255,20 @@ void DestroyContext(WebGraphicsContext3DCommandBufferImpl* context,
// static
RenderWidgetFullscreenPepper* RenderWidgetFullscreenPepper::Create(
int32 opener_id, webkit::ppapi::PluginInstance* plugin,
const GURL& active_url) {
const GURL& active_url,
const WebKit::WebScreenInfo& screen_info) {
DCHECK_NE(MSG_ROUTING_NONE, opener_id);
scoped_refptr<RenderWidgetFullscreenPepper> widget(
new RenderWidgetFullscreenPepper(plugin, active_url));
new RenderWidgetFullscreenPepper(plugin, active_url, screen_info));
widget->Init(opener_id);
return widget.release();
}
RenderWidgetFullscreenPepper::RenderWidgetFullscreenPepper(
webkit::ppapi::PluginInstance* plugin,
const GURL& active_url)
: RenderWidgetFullscreen(),
const GURL& active_url,
const WebKit::WebScreenInfo& screen_info)
: RenderWidgetFullscreen(screen_info),
active_url_(active_url),
plugin_(plugin),
context_(NULL),
......@@ -413,8 +415,9 @@ void RenderWidgetFullscreenPepper::OnResize(const gfx::Size& size,
const gfx::Rect& resizer_rect,
bool is_fullscreen) {
if (context_) {
context_->reshape(size.width(), size.height());
context_->viewport(0, 0, size.width(), size.height());
gfx::Size pixel_size = size.Scale(deviceScaleFactor());
context_->reshape(pixel_size.width(), pixel_size.height());
context_->viewport(0, 0, pixel_size.width(), pixel_size.height());
}
RenderWidget::OnResize(size, resizer_rect, is_fullscreen);
}
......@@ -501,8 +504,9 @@ const float kTexCoords[] = {
} // anonymous namespace
bool RenderWidgetFullscreenPepper::InitContext() {
context_->reshape(size().width(), size().height());
context_->viewport(0, 0, size().width(), size().height());
gfx::Size pixel_size = size().Scale(deviceScaleFactor());
context_->reshape(pixel_size.width(), pixel_size.height());
context_->viewport(0, 0, pixel_size.width(), pixel_size.height());
program_ = context_->createProgram();
......
......@@ -37,7 +37,8 @@ class RenderWidgetFullscreenPepper :
static RenderWidgetFullscreenPepper* Create(
int32 opener_id,
webkit::ppapi::PluginInstance* plugin,
const GURL& active_url);
const GURL& active_url,
const WebKit::WebScreenInfo& screen_info);
// WebGraphicscontext3DSwapBuffersClient implementation
virtual void OnViewContextSwapBuffersPosted() OVERRIDE;
......@@ -66,7 +67,8 @@ class RenderWidgetFullscreenPepper :
protected:
RenderWidgetFullscreenPepper(webkit::ppapi::PluginInstance* plugin,
const GURL& active_url);
const GURL& active_url,
const WebKit::WebScreenInfo& screen_info);
virtual ~RenderWidgetFullscreenPepper();
// RenderWidget API.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment