summaryrefslogtreecommitdiffstats
path: root/content
diff options
context:
space:
mode:
authordgozman@chromium.org <dgozman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-11-08 14:05:58 +0000
committerdgozman@chromium.org <dgozman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-11-08 14:05:58 +0000
commit7f99fc2dbf51e36dc3c15fdcba84de68077f71a0 (patch)
tree142edc81fa5523f56fd0d7c06659b59b22dac607 /content
parent8b987084e89a255cc123a9a12734c32bf4dd6ae0 (diff)
downloadchromium_src-7f99fc2dbf51e36dc3c15fdcba84de68077f71a0.zip
chromium_src-7f99fc2dbf51e36dc3c15fdcba84de68077f71a0.tar.gz
chromium_src-7f99fc2dbf51e36dc3c15fdcba84de68077f71a0.tar.bz2
DevTools: pass device emulation gutter size through API call.
BUG=315095 Review URL: https://codereview.chromium.org/60003002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@233894 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content')
-rw-r--r--content/renderer/devtools/devtools_agent.cc16
-rw-r--r--content/renderer/devtools/devtools_agent.h4
-rw-r--r--content/renderer/render_view_impl.cc8
-rw-r--r--content/renderer/render_view_impl.h4
-rw-r--r--content/renderer/render_widget.cc50
-rw-r--r--content/renderer/render_widget.h6
6 files changed, 55 insertions, 33 deletions
diff --git a/content/renderer/devtools/devtools_agent.cc b/content/renderer/devtools/devtools_agent.cc
index 5c37855..1a49f69 100644
--- a/content/renderer/devtools/devtools_agent.cc
+++ b/content/renderer/devtools/devtools_agent.cc
@@ -171,16 +171,28 @@ void DevToolsAgent::TraceEventCallbackWrapper(
}
void DevToolsAgent::enableDeviceEmulation(
- const blink::WebSize& device_size,
+ const blink::WebRect& device_rect,
const blink::WebRect& view_rect,
float device_scale_factor,
bool fit_to_view) {
RenderViewImpl* impl = static_cast<RenderViewImpl*>(render_view());
impl->webview()->settings()->setForceCompositingMode(true);
- impl->EnableScreenMetricsEmulation(gfx::Size(device_size),
+ impl->EnableScreenMetricsEmulation(gfx::Rect(device_rect),
gfx::Rect(view_rect), device_scale_factor, fit_to_view);
}
+void DevToolsAgent::enableDeviceEmulation(
+ const blink::WebSize& device_size,
+ const blink::WebRect& view_rect,
+ float device_scale_factor,
+ bool fit_to_view) {
+ enableDeviceEmulation(
+ blink::WebRect(10, 10, device_size.width, device_size.height),
+ view_rect,
+ device_scale_factor,
+ fit_to_view);
+}
+
void DevToolsAgent::disableDeviceEmulation() {
RenderViewImpl* impl = static_cast<RenderViewImpl*>(render_view());
impl->DisableScreenMetricsEmulation();
diff --git a/content/renderer/devtools/devtools_agent.h b/content/renderer/devtools/devtools_agent.h
index fcefaaf..6d67911 100644
--- a/content/renderer/devtools/devtools_agent.h
+++ b/content/renderer/devtools/devtools_agent.h
@@ -66,6 +66,10 @@ class DevToolsAgent : public RenderViewObserver,
const blink::WebSize& device_size,
const blink::WebRect& view_rect, float device_scale_factor,
bool fit_to_view);
+ virtual void enableDeviceEmulation(
+ const blink::WebRect& device_rect,
+ const blink::WebRect& view_rect, float device_scale_factor,
+ bool fit_to_view);
virtual void disableDeviceEmulation();
void OnAttach();
diff --git a/content/renderer/render_view_impl.cc b/content/renderer/render_view_impl.cc
index 755360e..98a7a96 100644
--- a/content/renderer/render_view_impl.cc
+++ b/content/renderer/render_view_impl.cc
@@ -6138,10 +6138,14 @@ bool RenderViewImpl::AllowPartialSwap() const {
}
void RenderViewImpl::SetScreenMetricsEmulationParameters(
- float device_scale_factor, float root_layer_scale) {
+ float device_scale_factor,
+ const gfx::Point& root_layer_offset,
+ float root_layer_scale) {
if (webview()) {
webview()->setCompositorDeviceScaleFactorOverride(device_scale_factor);
- webview()->setRootLayerScaleTransform(root_layer_scale);
+ webview()->setRootLayerTransform(
+ blink::WebSize(root_layer_offset.x(), root_layer_offset.y()),
+ root_layer_scale);
}
}
diff --git a/content/renderer/render_view_impl.h b/content/renderer/render_view_impl.h
index 10de4cd..8391a6b 100644
--- a/content/renderer/render_view_impl.h
+++ b/content/renderer/render_view_impl.h
@@ -779,7 +779,9 @@ class CONTENT_EXPORT RenderViewImpl
void Initialize(RenderViewImplParams* params);
virtual void SetScreenMetricsEmulationParameters(
- float device_scale_factor, float root_layer_scale) OVERRIDE;
+ float device_scale_factor,
+ const gfx::Point& root_layer_offset,
+ float root_layer_scale) OVERRIDE;
// Do not delete directly. This class is reference counted.
virtual ~RenderViewImpl();
diff --git a/content/renderer/render_widget.cc b/content/renderer/render_widget.cc
index 06adc63..d967879 100644
--- a/content/renderer/render_widget.cc
+++ b/content/renderer/render_widget.cc
@@ -159,7 +159,7 @@ class RenderWidget::ScreenMetricsEmulator {
public:
ScreenMetricsEmulator(
RenderWidget* widget,
- const gfx::Size& device_size,
+ const gfx::Rect& device_rect,
const gfx::Rect& widget_rect,
float device_scale_factor,
bool fit_to_view);
@@ -170,7 +170,7 @@ class RenderWidget::ScreenMetricsEmulator {
gfx::Rect original_screen_rect() const { return original_view_screen_rect_; }
void ChangeEmulationParams(
- const gfx::Size& device_size,
+ const gfx::Rect& device_rect,
const gfx::Rect& widget_rect,
float device_scale_factor,
bool fit_to_view);
@@ -188,8 +188,8 @@ class RenderWidget::ScreenMetricsEmulator {
RenderWidget* widget_;
- // Parameters as passed by RenderWidget::EmulateScreenMetrics.
- gfx::Size device_size_;
+ // Parameters as passed by RenderWidget::EnableScreenMetricsEmulation.
+ gfx::Rect device_rect_;
gfx::Rect widget_rect_;
float device_scale_factor_;
bool fit_to_view_;
@@ -207,12 +207,12 @@ class RenderWidget::ScreenMetricsEmulator {
RenderWidget::ScreenMetricsEmulator::ScreenMetricsEmulator(
RenderWidget* widget,
- const gfx::Size& device_size,
+ const gfx::Rect& device_rect,
const gfx::Rect& widget_rect,
float device_scale_factor,
bool fit_to_view)
: widget_(widget),
- device_size_(device_size),
+ device_rect_(device_rect),
widget_rect_(widget_rect),
device_scale_factor_(device_scale_factor),
fit_to_view_(fit_to_view),
@@ -230,7 +230,7 @@ RenderWidget::ScreenMetricsEmulator::~ScreenMetricsEmulator() {
widget_->screen_info_ = original_screen_info_;
widget_->SetDeviceScaleFactor(original_screen_info_.deviceScaleFactor);
- widget_->SetScreenMetricsEmulationParameters(0.f, 1.f);
+ widget_->SetScreenMetricsEmulationParameters(0.f, gfx::Point(), 1.f);
widget_->view_screen_rect_ = original_view_screen_rect_;
widget_->window_screen_rect_ = original_window_screen_rect_;
widget_->Resize(original_size_, original_physical_backing_size_,
@@ -239,11 +239,11 @@ RenderWidget::ScreenMetricsEmulator::~ScreenMetricsEmulator() {
}
void RenderWidget::ScreenMetricsEmulator::ChangeEmulationParams(
- const gfx::Size& device_size,
+ const gfx::Rect& device_rect,
const gfx::Rect& widget_rect,
float device_scale_factor,
bool fit_to_view) {
- device_size_ = device_size;
+ device_rect_ = device_rect;
widget_rect_ = widget_rect;
device_scale_factor_ = device_scale_factor;
fit_to_view_ = fit_to_view;
@@ -256,12 +256,10 @@ void RenderWidget::ScreenMetricsEmulator::Apply(
if (fit_to_view_) {
DCHECK(!original_size_.IsEmpty());
- // TODO(pfeldman): pass gutter_width along with the fit_to_view flag.
- int gutter_width = 10;
int width_with_gutter =
- std::max(original_size_.width() - 2 * gutter_width, 1);
+ std::max(original_size_.width() - 2 * device_rect_.x(), 1);
int height_with_gutter =
- std::max(original_size_.height() - 2 * gutter_width, 1);
+ std::max(original_size_.height() - 2 * device_rect_.y(), 1);
float width_ratio =
static_cast<float>(widget_rect_.width()) / width_with_gutter;
float height_ratio =
@@ -272,17 +270,17 @@ void RenderWidget::ScreenMetricsEmulator::Apply(
scale_ = 1.f;
}
- widget_->screen_info_.rect = gfx::Rect(device_size_);
- widget_->screen_info_.availableRect = gfx::Rect(device_size_);
+ widget_->screen_info_.rect = gfx::Rect(device_rect_.size());
+ widget_->screen_info_.availableRect = gfx::Rect(device_rect_.size());
widget_->screen_info_.deviceScaleFactor = device_scale_factor_;
- // Pass two emulation parameters to the blink side:
+ // Pass three emulation parameters to the blink side:
// - we keep the real device scale factor in compositor to produce sharp image
// even when emulating different scale factor;
- // - in order to fit into view, WebView applies scaling transform to the
+ // - in order to fit into view, WebView applies offset and scale to the
// root layer.
widget_->SetScreenMetricsEmulationParameters(
- original_screen_info_.deviceScaleFactor, scale_);
+ original_screen_info_.deviceScaleFactor, device_rect_.origin(), scale_);
widget_->SetDeviceScaleFactor(device_scale_factor_);
widget_->view_screen_rect_ = widget_rect_;
@@ -320,12 +318,10 @@ void RenderWidget::ScreenMetricsEmulator::OnUpdateScreenRectsMessage(
void RenderWidget::ScreenMetricsEmulator::OnShowContextMenu(
ContextMenuParams* params) {
- // TODO(pfeldman): pass gutter_width along with the fit_to_view flag.
- int gutter_width = 10;
params->x *= scale_;
- params->x += gutter_width;
+ params->x += device_rect_.x();
params->y *= scale_;
- params->y += gutter_width;
+ params->y += device_rect_.y();
}
// RenderWidget ---------------------------------------------------------------
@@ -515,15 +511,15 @@ bool RenderWidget::UsingSynchronousRendererCompositor() const {
}
void RenderWidget::EnableScreenMetricsEmulation(
- const gfx::Size& device_size,
+ const gfx::Rect& device_rect,
const gfx::Rect& widget_rect,
float device_scale_factor,
bool fit_to_view) {
if (!screen_metrics_emulator_) {
screen_metrics_emulator_.reset(new ScreenMetricsEmulator(this,
- device_size, widget_rect, device_scale_factor, fit_to_view));
+ device_rect, widget_rect, device_scale_factor, fit_to_view));
} else {
- screen_metrics_emulator_->ChangeEmulationParams(device_size,
+ screen_metrics_emulator_->ChangeEmulationParams(device_rect,
widget_rect, device_scale_factor, fit_to_view);
}
}
@@ -541,7 +537,9 @@ void RenderWidget::SetPopupOriginAdjustmentsForEmulation(
}
void RenderWidget::SetScreenMetricsEmulationParameters(
- float device_scale_factor, float root_layer_scale) {
+ float device_scale_factor,
+ const gfx::Point& root_layer_offset,
+ float root_layer_scale) {
// This is only supported in RenderView.
NOTREACHED();
}
diff --git a/content/renderer/render_widget.h b/content/renderer/render_widget.h
index c8812f4..a908077 100644
--- a/content/renderer/render_widget.h
+++ b/content/renderer/render_widget.h
@@ -231,7 +231,7 @@ class CONTENT_EXPORT RenderWidget
// Emulates screen and widget metrics. Supplied values override everything
// coming from host.
void EnableScreenMetricsEmulation(
- const gfx::Size& device_size,
+ const gfx::Rect& device_rect,
const gfx::Rect& widget_rect,
float device_scale_factor,
bool fit_to_view);
@@ -318,7 +318,9 @@ class CONTENT_EXPORT RenderWidget
// Used to force the size of a window when running layout tests.
void ResizeSynchronously(const gfx::Rect& new_position);
virtual void SetScreenMetricsEmulationParameters(
- float device_scale_factor, float root_layer_scale);
+ float device_scale_factor,
+ const gfx::Point& root_layer_offset,
+ float root_layer_scale);
void SetExternalPopupOriginAdjustmentsForEmulation(
ExternalPopupMenu* popup, ScreenMetricsEmulator* emulator);
virtual void OnShowHostContextMenu(ContextMenuParams* params);