Index: third_party/WebKit/LayoutTests/inspector-protocol/emulation/device-emulation-partial.js |
diff --git a/third_party/WebKit/LayoutTests/inspector-protocol/emulation/device-emulation-partial.js b/third_party/WebKit/LayoutTests/inspector-protocol/emulation/device-emulation-partial.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..8d3c637ff07f1dd4131692aa8455565fb54220ab |
--- /dev/null |
+++ b/third_party/WebKit/LayoutTests/inspector-protocol/emulation/device-emulation-partial.js |
@@ -0,0 +1,95 @@ |
+(async function(testRunner) { |
+ let {page, session, dp} = await testRunner.startHTML(` |
+ <head> |
+ <style> |
+ body { |
+ margin: 0; |
+ min-height: 1000px; |
+ } |
+ </style> |
+ </head> |
+ `, 'Tests that overriding only a single parameter does not affect others.'); |
+ |
+ function dumpMetrics() { |
+ return JSON.stringify({ |
+ width: window.innerWidth, |
+ height: window.innerHeight, |
+ screenWidth: window.screen.width, |
+ screenHeight: window.screen.height, |
+ screenX: window.screenX, |
+ screenY: window.screenY, |
+ deviceScaleFactor: window.devicePixelRatio |
+ }); |
+ } |
+ |
+ var initialMetrics; |
+ |
+ async function testPartialOverride(name, value) { |
+ var params = {width: 0, height: 0, deviceScaleFactor: 0, mobile: false, fitWindow: false}; |
+ if (name === null) { |
+ await dp.Emulation.clearDeviceMetricsOverride(); |
+ } else { |
+ if (name) |
+ params[name] = value; |
+ await dp.Emulation.setDeviceMetricsOverride(params); |
+ } |
+ |
+ var metrics = JSON.parse(await session.evaluate(dumpMetrics)); |
+ var fail = false; |
+ for (var key in initialMetrics) { |
+ var expected = key === name ? value : initialMetrics[key]; |
+ if (metrics[key] !== expected) { |
+ testRunner.log('[FAIL]: ' + metrics[key] + ' instead of ' + expected + ' for ' + key); |
+ fail = true; |
+ } |
+ } |
+ if (!fail) |
+ testRunner.log(name ? ('[PASS]: ' + name + '=' + value) : '[PASS]'); |
+ } |
+ |
+ await testRunner.runTestSuite([ |
+ async function collectMetrics() { |
+ initialMetrics = JSON.parse(await session.evaluate(dumpMetrics)); |
+ }, |
+ |
+ async function noOverrides() { |
+ await testPartialOverride('', 0); |
+ }, |
+ |
+ async function width() { |
+ await testPartialOverride('width', 300); |
+ }, |
+ |
+ async function height() { |
+ await testPartialOverride('height', 400); |
+ }, |
+ |
+ async function deviceScaleFactor1() { |
+ await testPartialOverride('deviceScaleFactor', 1); |
+ }, |
+ |
+ async function deviceScaleFactor2() { |
+ await testPartialOverride('deviceScaleFactor', 2); |
+ }, |
+ |
+ async function clear() { |
+ await testPartialOverride(null, null); |
+ }, |
+ |
+ async function anotherWidth() { |
+ await testPartialOverride('width', 400); |
+ }, |
+ |
+ async function anotherHeight() { |
+ await testPartialOverride('height', 300); |
+ }, |
+ |
+ async function deviceScaleFactor3() { |
+ await testPartialOverride('deviceScaleFactor', 3); |
+ }, |
+ |
+ async function clear() { |
+ await testPartialOverride(null, null); |
+ } |
+ ]); |
+}) |