diff options
-rw-r--r-- | content/renderer/render_view_impl.cc | 8 | ||||
-rw-r--r-- | content/renderer/render_view_impl.h | 3 | ||||
-rw-r--r-- | content/renderer/render_widget.cc | 17 | ||||
-rw-r--r-- | content/renderer/render_widget.h | 2 | ||||
-rw-r--r-- | content/test/layouttest_support.cc | 18 |
5 files changed, 33 insertions, 15 deletions
diff --git a/content/renderer/render_view_impl.cc b/content/renderer/render_view_impl.cc index cca0524..3f79c62 100644 --- a/content/renderer/render_view_impl.cc +++ b/content/renderer/render_view_impl.cc @@ -6553,6 +6553,14 @@ void RenderViewImpl::SetDeviceScaleFactorForTesting(float factor) { OnResize(params); } +void RenderViewImpl::ForceResizeForTesting(const gfx::Size& new_size) { + gfx::Rect new_position(rootWindowRect().x, + rootWindowRect().y, + new_size.width(), + new_size.height()); + ResizeSynchronously(new_position); +} + void RenderViewImpl::UseSynchronousResizeModeForTesting(bool enable) { resizing_mode_selector_->set_is_synchronous_mode(enable); } diff --git a/content/renderer/render_view_impl.h b/content/renderer/render_view_impl.h index 46292da..1830ba5 100644 --- a/content/renderer/render_view_impl.h +++ b/content/renderer/render_view_impl.h @@ -387,6 +387,9 @@ class CONTENT_EXPORT RenderViewImpl // Change the device scale factor and force the compositor to resize. void SetDeviceScaleFactorForTesting(float factor); + // Used to force the size of a window when running layout tests. + void ForceResizeForTesting(const gfx::Size& new_size); + void UseSynchronousResizeModeForTesting(bool enable); // Control autoresize mode. diff --git a/content/renderer/render_widget.cc b/content/renderer/render_widget.cc index 1d73fa2..5cd8cde 100644 --- a/content/renderer/render_widget.cc +++ b/content/renderer/render_widget.cc @@ -703,6 +703,15 @@ void RenderWidget::Resize(const gfx::Size& new_size, DCHECK(resize_ack != SEND_RESIZE_ACK || next_paint_is_resize_ack()); } +void RenderWidget::ResizeSynchronously(const gfx::Rect& new_position) { + Resize(new_position.size(), new_position.size(), overdraw_bottom_height_, + gfx::Rect(), is_fullscreen_, NO_RESIZE_ACK); + view_screen_rect_ = new_position; + window_screen_rect_ = new_position; + if (!did_show_) + initial_pos_ = new_position; +} + void RenderWidget::OnClose() { if (closing_) return; @@ -2016,13 +2025,7 @@ void RenderWidget::setWindowRect(const WebRect& rect) { initial_pos_ = pos; } } else { - WebSize new_size(pos.width, pos.height); - Resize(new_size, new_size, overdraw_bottom_height_, - WebRect(), is_fullscreen_, NO_RESIZE_ACK); - view_screen_rect_ = pos; - window_screen_rect_ = pos; - if (!did_show_) - initial_pos_ = pos; + ResizeSynchronously(pos); } } diff --git a/content/renderer/render_widget.h b/content/renderer/render_widget.h index 097041d..85e7eb9 100644 --- a/content/renderer/render_widget.h +++ b/content/renderer/render_widget.h @@ -311,6 +311,8 @@ class CONTENT_EXPORT RenderWidget const gfx::Rect& resizer_rect, bool is_fullscreen, ResizeAck resize_ack); + // 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); void SetExternalPopupOriginAdjustmentsForEmulation( diff --git a/content/test/layouttest_support.cc b/content/test/layouttest_support.cc index b110b5f..dccc77b 100644 --- a/content/test/layouttest_support.cc +++ b/content/test/layouttest_support.cc @@ -53,16 +53,20 @@ RenderViewImpl* CreateWebTestProxy(RenderViewImplParams* params) { return render_view_proxy; } +WebTestProxyBase* GetWebTestProxyBase(RenderViewImpl* render_view) { + typedef WebTestProxy<RenderViewImpl, RenderViewImplParams*> ViewProxy; + + ViewProxy* render_view_proxy = static_cast<ViewProxy*>(render_view); + return static_cast<WebTestProxyBase*>(render_view_proxy); +} + RenderFrameImpl* CreateWebFrameTestProxy( RenderViewImpl* render_view, int32 routing_id) { - typedef WebTestProxy<RenderViewImpl, RenderViewImplParams*> ViewProxy; typedef WebFrameTestProxy<RenderFrameImpl, RenderViewImpl*, int32> FrameProxy; - ViewProxy* render_view_proxy = static_cast<ViewProxy*>(render_view); - WebTestProxyBase* base = static_cast<WebTestProxyBase*>(render_view_proxy); FrameProxy* render_frame_proxy = new FrameProxy(render_view, routing_id); - render_frame_proxy->setBaseProxy(base); + render_frame_proxy->setBaseProxy(GetWebTestProxyBase(render_view)); render_frame_proxy->setVersion(3); return render_frame_proxy; @@ -122,10 +126,8 @@ void SetFocusAndActivate(RenderView* render_view, bool enable) { void ForceResizeRenderView(RenderView* render_view, const WebSize& new_size) { RenderViewImpl* render_view_impl = static_cast<RenderViewImpl*>(render_view); - render_view_impl->setWindowRect(WebRect(render_view_impl->rootWindowRect().x, - render_view_impl->rootWindowRect().y, - new_size.width, - new_size.height)); + render_view_impl->ForceResizeForTesting(new_size); + GetWebTestProxyBase(render_view_impl)->didForceResize(); } void SetDeviceScaleFactor(RenderView* render_view, float factor) { |