Don't rely on creating VisualProperties to change autoresize in tests
Stop relying on the RenderWidget holding all the VisualProperties
state and constructing a VisualProperties in order for web tests to
toggle auto resize on the widget/view.
[email protected]
Bug: 419087
Change-Id: I1a20c1ead527489ed0075907a45b70812b63f84f
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1811430
Reviewed-by: Avi Drissman <[email protected]>
Commit-Queue: danakj <[email protected]>
Cr-Commit-Position: refs/heads/master@{#697755}
diff --git a/content/renderer/render_widget.cc b/content/renderer/render_widget.cc
index a910da7..d10024d5 100644
--- a/content/renderer/render_widget.cc
+++ b/content/renderer/render_widget.cc
@@ -798,25 +798,10 @@
delegate()->ApplyNewDisplayModeForWidget(visual_properties.display_mode);
}
- bool auto_resize_mode_changed =
- auto_resize_mode_ != visual_properties.auto_resize_enabled;
- auto_resize_mode_ = visual_properties.auto_resize_enabled;
- min_size_for_auto_resize_ = visual_properties.min_size_for_auto_resize;
- max_size_for_auto_resize_ = visual_properties.max_size_for_auto_resize;
-
- if (auto_resize_mode_) {
- gfx::Size min_auto_size = min_size_for_auto_resize_;
- gfx::Size max_auto_size = max_size_for_auto_resize_;
- if (compositor_deps_->IsUseZoomForDSFEnabled()) {
- min_auto_size = gfx::ScaleToCeiledSize(
- min_auto_size, visual_properties.screen_info.device_scale_factor);
- max_auto_size = gfx::ScaleToCeiledSize(
- max_auto_size, visual_properties.screen_info.device_scale_factor);
- }
- delegate()->ApplyAutoResizeLimitsForWidget(min_auto_size, max_auto_size);
- } else if (auto_resize_mode_changed) {
- delegate()->DisableAutoResizeForWidget();
- }
+ SetAutoResizeMode(visual_properties.auto_resize_enabled,
+ visual_properties.min_size_for_auto_resize,
+ visual_properties.max_size_for_auto_resize,
+ visual_properties.screen_info.device_scale_factor);
browser_controls_shrink_blink_size_ =
visual_properties.browser_controls_shrink_blink_size;
@@ -886,7 +871,7 @@
visual_properties.bottom_controls_height,
visual_properties.browser_controls_shrink_blink_size);
- if (!visual_properties.auto_resize_enabled) {
+ if (!auto_resize_mode_) {
if (visual_properties.is_fullscreen_granted != is_fullscreen_granted_) {
is_fullscreen_granted_ = visual_properties.is_fullscreen_granted;
if (is_fullscreen_granted_)
@@ -993,6 +978,31 @@
}
}
+void RenderWidget::SetAutoResizeMode(bool auto_resize,
+ const gfx::Size& min_size_before_dsf,
+ const gfx::Size& max_size_before_dsf,
+ float device_scale_factor) {
+ bool was_changed = auto_resize_mode_ != auto_resize;
+ auto_resize_mode_ = auto_resize;
+
+ min_size_for_auto_resize_ = min_size_before_dsf;
+ max_size_for_auto_resize_ = max_size_before_dsf;
+
+ if (auto_resize) {
+ gfx::Size min_auto_size = min_size_for_auto_resize_;
+ gfx::Size max_auto_size = max_size_for_auto_resize_;
+ if (compositor_deps_->IsUseZoomForDSFEnabled()) {
+ min_auto_size =
+ gfx::ScaleToCeiledSize(min_auto_size, device_scale_factor);
+ max_auto_size =
+ gfx::ScaleToCeiledSize(max_auto_size, device_scale_factor);
+ }
+ delegate()->ApplyAutoResizeLimitsForWidget(min_auto_size, max_auto_size);
+ } else if (was_changed) {
+ delegate()->DisableAutoResizeForWidget();
+ }
+}
+
void RenderWidget::OnDisableDeviceEmulation() {
screen_metrics_emulator_.reset();
}
@@ -1710,7 +1720,7 @@
// but not others.
gfx::Rect new_compositor_viewport_pixel_rect =
- visual_properties.auto_resize_enabled
+ auto_resize_mode_
? gfx::Rect(gfx::ScaleToCeiledSize(
size_, visual_properties.screen_info.device_scale_factor))
: visual_properties.compositor_viewport_pixel_rect;
@@ -1740,7 +1750,7 @@
}
}
- if (!visual_properties.auto_resize_enabled) {
+ if (!auto_resize_mode_) {
visible_viewport_size_ = visual_properties.visible_viewport_size;
display_mode_ = visual_properties.display_mode;
size_ = visual_properties.new_size;
@@ -3836,43 +3846,23 @@
void RenderWidget::EnableAutoResizeForTesting(const gfx::Size& min_size,
const gfx::Size& max_size) {
- VisualProperties visual_properties;
- visual_properties.auto_resize_enabled = true;
- visual_properties.min_size_for_auto_resize = min_size;
- visual_properties.max_size_for_auto_resize = max_size;
- visual_properties.local_surface_id_allocation =
- base::Optional<viz::LocalSurfaceIdAllocation>(
- viz::LocalSurfaceIdAllocation(
- viz::LocalSurfaceId(1, 1, base::UnguessableToken::Create()),
- base::TimeTicks::Now()));
- OnSynchronizeVisualProperties(visual_properties);
+ SetAutoResizeMode(true, min_size, max_size,
+ page_properties_->GetDeviceScaleFactor());
}
void RenderWidget::DisableAutoResizeForTesting(const gfx::Size& new_size) {
if (!auto_resize_mode_)
return;
- VisualProperties visual_properties;
- visual_properties.auto_resize_enabled = false;
- visual_properties.screen_info = page_properties_->GetScreenInfo();
- visual_properties.new_size = new_size;
- visual_properties.compositor_viewport_pixel_rect = CompositorViewportRect();
- visual_properties.browser_controls_shrink_blink_size =
- browser_controls_shrink_blink_size_;
- visual_properties.top_controls_height = top_controls_height_;
- visual_properties.visible_viewport_size = visible_viewport_size_;
- visual_properties.is_fullscreen_granted = is_fullscreen_granted_;
- visual_properties.display_mode = display_mode_;
+ SetAutoResizeMode(false, gfx::Size(), gfx::Size(),
+ page_properties_->GetDeviceScaleFactor());
- if (new_size.IsEmpty()) {
- // The |new_size| is empty when resetting auto resize in between tests. In
- // this case the current size should just be preserved.
- visual_properties.new_size = size_;
- } else {
- visual_properties.new_size = new_size;
+ // The |new_size| is empty when resetting auto resize in between tests. In
+ // this case the current size should just be preserved.
+ if (!new_size.IsEmpty()) {
+ size_ = new_size;
+ ResizeWebWidget();
}
-
- OnSynchronizeVisualProperties(visual_properties);
}
blink::WebLocalFrame* RenderWidget::GetFocusedWebLocalFrameInWidget() const {