diff options
author | dgozman@chromium.org <dgozman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-11-08 14:05:58 +0000 |
---|---|---|
committer | dgozman@chromium.org <dgozman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-11-08 14:05:58 +0000 |
commit | 7f99fc2dbf51e36dc3c15fdcba84de68077f71a0 (patch) | |
tree | 142edc81fa5523f56fd0d7c06659b59b22dac607 /content | |
parent | 8b987084e89a255cc123a9a12734c32bf4dd6ae0 (diff) | |
download | chromium_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.cc | 16 | ||||
-rw-r--r-- | content/renderer/devtools/devtools_agent.h | 4 | ||||
-rw-r--r-- | content/renderer/render_view_impl.cc | 8 | ||||
-rw-r--r-- | content/renderer/render_view_impl.h | 4 | ||||
-rw-r--r-- | content/renderer/render_widget.cc | 50 | ||||
-rw-r--r-- | content/renderer/render_widget.h | 6 |
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); |