| (async function(testRunner) { |
| let {page, session, dp} = await testRunner.startBlank('Tests that device emulation of window segments is propagated and powers getWindowSegments API.'); |
| |
| let deviceMetrics = { |
| width: 800, |
| height: 600, |
| deviceScaleFactor: 2, |
| mobile: false, |
| fitWindow: false, |
| scale: 0.5, |
| screenWidth: 1200, |
| screenHeight: 1000, |
| positionX: 110, |
| positionY: 120, |
| }; |
| |
| await session.protocol.Emulation.setDeviceMetricsOverride(deviceMetrics); |
| |
| await session.navigate('../resources/device-emulation.html'); |
| |
| testRunner.log("No segments:"); |
| testRunner.log(await session.evaluate(`dumpWindowSegments()`)); |
| |
| testRunner.log("Side-by-side segments"); |
| deviceMetrics.displayFeature = { |
| orientation: "vertical", |
| offset: 390, |
| maskLength: 20 |
| }; |
| await session.protocol.Emulation.setDeviceMetricsOverride(deviceMetrics); |
| testRunner.log(await session.evaluate(`dumpWindowSegments()`)); |
| |
| testRunner.log("Unspecified display feature with scale"); |
| delete deviceMetrics.displayFeature; |
| // Setting width/height to 0 indicates that the widget should have an |
| // emulated size based on the size of the widget in DIP, but takes the |
| // scale into account. Given a scale of 0.5, we expect the window |
| // segment (and window itself) dimensions to double. |
| deviceMetrics.width = 0; |
| deviceMetrics.height = 0; |
| await session.protocol.Emulation.setDeviceMetricsOverride(deviceMetrics); |
| testRunner.log(await session.evaluate(`dumpWindowSegments()`)); |
| |
| testRunner.log("Stacked segments"); |
| deviceMetrics.width = 800; |
| deviceMetrics.height = 600; |
| deviceMetrics.displayFeature = { |
| orientation: "horizontal", |
| offset: 290, |
| maskLength: 20 |
| }; |
| await session.protocol.Emulation.setDeviceMetricsOverride(deviceMetrics); |
| testRunner.log(await session.evaluate(`dumpWindowSegments()`)); |
| |
| testRunner.log("Emulation disabled"); |
| await dp.Emulation.clearDeviceMetricsOverride(); |
| testRunner.log(await session.evaluate(`dumpWindowSegments()`)); |
| |
| testRunner.completeTest(); |
| }) |