summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--content/renderer/render_view_impl.cc8
-rw-r--r--content/renderer/render_view_impl.h3
-rw-r--r--content/renderer/render_widget.cc17
-rw-r--r--content/renderer/render_widget.h2
-rw-r--r--content/test/layouttest_support.cc18
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) {