Index: content/renderer/render_widget.cc |
diff --git a/content/renderer/render_widget.cc b/content/renderer/render_widget.cc |
index 8c5c6d6893bfbfd4f368e714bfa72c5c94e0759e..e3c2602b74c8bdd7d6976db1f6e2ee47f5720cf1 100644 |
--- a/content/renderer/render_widget.cc |
+++ b/content/renderer/render_widget.cc |
@@ -248,7 +248,7 @@ class RenderWidget::ScreenMetricsEmulator { |
// Scale and offset used to convert between host coordinates |
// and webwidget coordinates. |
float scale() { return scale_; } |
- gfx::Point offset() { return offset_; } |
+ gfx::PointF offset() { return offset_; } |
gfx::Rect applied_widget_rect() const { return applied_widget_rect_; } |
gfx::Rect original_screen_rect() const { return original_view_screen_rect_; } |
const WebScreenInfo& original_screen_info() { return original_screen_info_; } |
@@ -278,7 +278,7 @@ class RenderWidget::ScreenMetricsEmulator { |
// The computed scale and offset used to fit widget into browser window. |
float scale_; |
- gfx::Point offset_; |
+ gfx::PointF offset_; |
// Widget rect as passed to webwidget. |
gfx::Rect applied_widget_rect_; |
@@ -314,7 +314,7 @@ RenderWidget::ScreenMetricsEmulator::~ScreenMetricsEmulator() { |
widget_->screen_info_ = original_screen_info_; |
widget_->SetDeviceScaleFactor(original_screen_info_.deviceScaleFactor); |
- widget_->SetScreenMetricsEmulationParameters(0.f, gfx::Point(), 1.f); |
+ widget_->SetScreenMetricsEmulationParameters(false, params_); |
widget_->view_screen_rect_ = original_view_screen_rect_; |
widget_->window_screen_rect_ = original_window_screen_rect_; |
widget_->Resize(original_size_, |
@@ -392,8 +392,11 @@ void RenderWidget::ScreenMetricsEmulator::Apply( |
// even when emulating different scale factor; |
// - in order to fit into view, WebView applies offset and scale to the |
// root layer. |
- widget_->SetScreenMetricsEmulationParameters( |
- original_screen_info_.deviceScaleFactor, offset_, scale_); |
+ blink::WebDeviceEmulationParams modified_params = params_; |
+ modified_params.deviceScaleFactor = original_screen_info_.deviceScaleFactor; |
+ modified_params.offset = blink::WebFloatPoint(offset_.x(), offset_.y()); |
+ modified_params.scale = scale_; |
+ widget_->SetScreenMetricsEmulationParameters(true, modified_params); |
widget_->SetDeviceScaleFactor(applied_device_scale_factor); |
widget_->view_screen_rect_ = applied_widget_rect_; |
@@ -656,18 +659,6 @@ void RenderWidget::WasSwappedOut() { |
RenderProcess::current()->ReleaseProcess(); |
} |
-void RenderWidget::EnableScreenMetricsEmulation( |
- const WebDeviceEmulationParams& params) { |
- if (!screen_metrics_emulator_) |
- screen_metrics_emulator_.reset(new ScreenMetricsEmulator(this, params)); |
- else |
- screen_metrics_emulator_->ChangeEmulationParams(params); |
-} |
- |
-void RenderWidget::DisableScreenMetricsEmulation() { |
- screen_metrics_emulator_.reset(); |
-} |
- |
void RenderWidget::SetPopupOriginAdjustmentsForEmulation( |
ScreenMetricsEmulator* emulator) { |
popup_origin_scale_for_emulation_ = emulator->scale(); |
@@ -686,9 +677,8 @@ gfx::Rect RenderWidget::AdjustValidationMessageAnchor(const gfx::Rect& anchor) { |
} |
void RenderWidget::SetScreenMetricsEmulationParameters( |
- float device_scale_factor, |
- const gfx::Point& root_layer_offset, |
- float root_layer_scale) { |
+ bool enabled, |
+ const blink::WebDeviceEmulationParams& params) { |
// This is only supported in RenderView. |
NOTREACHED(); |
} |
@@ -732,6 +722,10 @@ bool RenderWidget::OnMessageReceived(const IPC::Message& message) { |
IPC_MESSAGE_HANDLER(ViewMsg_Close, OnClose) |
IPC_MESSAGE_HANDLER(ViewMsg_CreatingNew_ACK, OnCreatingNewAck) |
IPC_MESSAGE_HANDLER(ViewMsg_Resize, OnResize) |
+ IPC_MESSAGE_HANDLER(ViewMsg_EnableDeviceEmulation, |
+ OnEnableDeviceEmulation) |
+ IPC_MESSAGE_HANDLER(ViewMsg_DisableDeviceEmulation, |
+ OnDisableDeviceEmulation) |
IPC_MESSAGE_HANDLER(ViewMsg_ColorProfile, OnColorProfile) |
IPC_MESSAGE_HANDLER(ViewMsg_ChangeResizeRect, OnChangeResizeRect) |
IPC_MESSAGE_HANDLER(ViewMsg_WasHidden, OnWasHidden) |
@@ -915,6 +909,18 @@ void RenderWidget::OnResize(const ViewMsg_Resize_Params& params) { |
OnOrientationChange(); |
} |
+void RenderWidget::OnEnableDeviceEmulation( |
+ const blink::WebDeviceEmulationParams& params) { |
+ if (!screen_metrics_emulator_) |
+ screen_metrics_emulator_.reset(new ScreenMetricsEmulator(this, params)); |
+ else |
+ screen_metrics_emulator_->ChangeEmulationParams(params); |
+} |
+ |
+void RenderWidget::OnDisableDeviceEmulation() { |
+ screen_metrics_emulator_.reset(); |
+} |
+ |
void RenderWidget::OnColorProfile(const std::vector<char>& color_profile) { |
SetDeviceColorProfile(color_profile); |
} |