Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1580)

Unified Diff: content/renderer/render_view_browsertest.cc

Issue 1737733002: [DevTools] Handle emulated device scale factor and original device scale factor properly. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « content/renderer/gpu/render_widget_compositor.h ('k') | content/renderer/render_view_impl.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/renderer/render_view_browsertest.cc
diff --git a/content/renderer/render_view_browsertest.cc b/content/renderer/render_view_browsertest.cc
index 4a050966d4e9e87cdefcafabd57f5df108c64ad4..8cf3327e4a649047be82e543049f48877673a86c 100644
--- a/content/renderer/render_view_browsertest.cc
+++ b/content/renderer/render_view_browsertest.cc
@@ -17,8 +17,10 @@
#include "base/time/time.h"
#include "base/win/windows_version.h"
#include "build/build_config.h"
+#include "cc/trees/layer_tree_host.h"
#include "content/child/request_extra_data.h"
#include "content/child/service_worker/service_worker_network_provider.h"
+#include "content/common/content_switches_internal.h"
#include "content/common/frame_messages.h"
#include "content/common/frame_replication_state.h"
#include "content/common/site_isolation_policy.h"
@@ -42,6 +44,7 @@
#include "content/public/test/test_utils.h"
#include "content/renderer/accessibility/renderer_accessibility.h"
#include "content/renderer/devtools/devtools_agent.h"
+#include "content/renderer/gpu/render_widget_compositor.h"
#include "content/renderer/history_controller.h"
#include "content/renderer/history_serialization.h"
#include "content/renderer/navigation_state_impl.h"
@@ -421,7 +424,7 @@ class RenderViewImplBlinkSettingsTest : public RenderViewImplTest {
};
class RenderViewImplScaleFactorTest : public RenderViewImplBlinkSettingsTest {
- public:
+ protected:
void SetDeviceScaleFactor(float dsf) {
ResizeParams params;
params.screen_info.deviceScaleFactor = dsf;
@@ -432,6 +435,33 @@ class RenderViewImplScaleFactorTest : public RenderViewImplBlinkSettingsTest {
view()->OnResize(params);
ASSERT_EQ(dsf, view()->device_scale_factor_);
}
+
+ void TestEmulatedSizeDprDsf(int width, int height, float dpr,
+ float compositor_dsf) {
+ static base::string16 get_width =
+ base::ASCIIToUTF16("Number(window.innerWidth)");
+ static base::string16 get_height =
+ base::ASCIIToUTF16("Number(window.innerHeight)");
+ static base::string16 get_dpr =
+ base::ASCIIToUTF16("Number(window.devicePixelRatio * 10)");
+
+ int emulated_width, emulated_height;
+ int emulated_dpr;
+ blink::WebDeviceEmulationParams params;
+ params.viewSize.width = width;
+ params.viewSize.height = height;
+ params.deviceScaleFactor = dpr;
+ view()->OnEnableDeviceEmulation(params);
+ EXPECT_TRUE(ExecuteJavaScriptAndReturnIntValue(get_width, &emulated_width));
+ EXPECT_EQ(width, emulated_width);
+ EXPECT_TRUE(ExecuteJavaScriptAndReturnIntValue(get_height,
+ &emulated_height));
+ EXPECT_EQ(height, emulated_height);
+ EXPECT_TRUE(ExecuteJavaScriptAndReturnIntValue(get_dpr, &emulated_dpr));
+ EXPECT_EQ(static_cast<int>(dpr * 10), emulated_dpr);
+ EXPECT_EQ(compositor_dsf,
+ view()->compositor()->layer_tree_host()->device_scale_factor());
+ }
};
// Ensure that the main RenderFrame is deleted and cleared from the RenderView
@@ -2459,36 +2489,6 @@ TEST_F(RenderViewImplTest, OnSetAccessibilityMode) {
ASSERT_NE((RendererAccessibility*) NULL, frame()->renderer_accessibility());
}
-TEST_F(RenderViewImplTest, ScreenMetricsEmulation) {
- LoadHTML("<body style='min-height:1000px;'></body>");
-
- blink::WebDeviceEmulationParams params;
- base::string16 get_width = base::ASCIIToUTF16("Number(window.innerWidth)");
- base::string16 get_height = base::ASCIIToUTF16("Number(window.innerHeight)");
- int width, height;
-
- params.viewSize.width = 327;
- params.viewSize.height = 415;
- view()->OnEnableDeviceEmulation(params);
- EXPECT_TRUE(ExecuteJavaScriptAndReturnIntValue(get_width, &width));
- EXPECT_EQ(params.viewSize.width, width);
- EXPECT_TRUE(ExecuteJavaScriptAndReturnIntValue(get_height, &height));
- EXPECT_EQ(params.viewSize.height, height);
-
- params.viewSize.width = 1005;
- params.viewSize.height = 1102;
- view()->OnEnableDeviceEmulation(params);
- EXPECT_TRUE(ExecuteJavaScriptAndReturnIntValue(get_width, &width));
- EXPECT_EQ(params.viewSize.width, width);
- EXPECT_TRUE(ExecuteJavaScriptAndReturnIntValue(get_height, &height));
- EXPECT_EQ(params.viewSize.height, height);
-
- view()->OnDisableDeviceEmulation();
-
- view()->OnEnableDeviceEmulation(params);
- // Don't disable here to test that emulation is being shutdown properly.
-}
-
// Sanity check for the Navigation Timing API |navigationStart| override. We
// are asserting only most basic constraints, as TimeTicks (passed as the
// override) are not comparable with the wall time (returned by the Blink API).
@@ -2657,10 +2657,10 @@ TEST_F(RenderViewImplBlinkSettingsTest, Negative) {
EXPECT_TRUE(settings()->viewportEnabled());
}
-#if !defined(OS_CHROMEOS)
-// UseZoomForDSF is enabled on ChromeOS.
TEST_F(RenderViewImplScaleFactorTest, ConverViewportToWindowWithoutZoomForDSF) {
DoSetUp();
+ if (IsUseZoomForDSFEnabled())
+ return;
SetDeviceScaleFactor(2.f);
blink::WebRect rect(20, 10, 200, 100);
view()->convertViewportToWindow(&rect);
@@ -2669,7 +2669,66 @@ TEST_F(RenderViewImplScaleFactorTest, ConverViewportToWindowWithoutZoomForDSF) {
EXPECT_EQ(200, rect.width);
EXPECT_EQ(100, rect.height);
}
-#endif
+
+TEST_F(RenderViewImplScaleFactorTest, ScreenMetricsEmulationWithOriginalDSF1) {
+ DoSetUp();
+ SetDeviceScaleFactor(1.f);
+
+ LoadHTML("<body style='min-height:1000px;'></body>");
+ {
+ SCOPED_TRACE("327x415 1dpr");
+ TestEmulatedSizeDprDsf(327, 415, 1.f, 1.f);
+ }
+ {
+ SCOPED_TRACE("327x415 1.5dpr");
+ TestEmulatedSizeDprDsf(327, 415, 1.5f, 1.f);
+ }
+ {
+ SCOPED_TRACE("1005x1102 2dpr");
+ TestEmulatedSizeDprDsf(1005, 1102, 2.f, 1.f);
+ }
+ {
+ SCOPED_TRACE("1005x1102 3dpr");
+ TestEmulatedSizeDprDsf(1005, 1102, 3.f, 1.f);
+ }
+
+ view()->OnDisableDeviceEmulation();
+
+ blink::WebDeviceEmulationParams params;
+ view()->OnEnableDeviceEmulation(params);
+ // Don't disable here to test that emulation is being shutdown properly.
+}
+
+TEST_F(RenderViewImplScaleFactorTest, ScreenMetricsEmulationWithOriginalDSF2) {
+ DoSetUp();
+ SetDeviceScaleFactor(2.f);
+ float compositor_dsf =
+ IsUseZoomForDSFEnabled() ? 1.f : 2.f;
+
+ LoadHTML("<body style='min-height:1000px;'></body>");
+ {
+ SCOPED_TRACE("327x415 1dpr");
+ TestEmulatedSizeDprDsf(327, 415, 1.f, compositor_dsf);
+ }
+ {
+ SCOPED_TRACE("327x415 1.5dpr");
+ TestEmulatedSizeDprDsf(327, 415, 1.5f, compositor_dsf);
+ }
+ {
+ SCOPED_TRACE("1005x1102 2dpr");
+ TestEmulatedSizeDprDsf(1005, 1102, 2.f, compositor_dsf);
+ }
+ {
+ SCOPED_TRACE("1005x1102 3dpr");
+ TestEmulatedSizeDprDsf(1005, 1102, 3.f, compositor_dsf);
+ }
+
+ view()->OnDisableDeviceEmulation();
+
+ blink::WebDeviceEmulationParams params;
+ view()->OnEnableDeviceEmulation(params);
+ // Don't disable here to test that emulation is being shutdown properly.
+}
TEST_F(RenderViewImplScaleFactorTest, ConverViewportToWindowWithZoomForDSF) {
base::CommandLine::ForCurrentProcess()->AppendSwitch(
« no previous file with comments | « content/renderer/gpu/render_widget_compositor.h ('k') | content/renderer/render_view_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698