chromium/third_party/blink/web_tests/inspector-protocol/resources/device-emulator.js

(class DeviceEmulator {
  constructor(testRunner, session) {
    this._testRunner = testRunner;
    this._session = session;
  }

  async emulate(width, height, deviceScaleFactor, insets) {
    this._testRunner.log(`Emulating device: ${width}x${height}x${deviceScaleFactor}`);
    var full = !!width && !!height && !!deviceScaleFactor;
    var params = {
      width,
      height,
      deviceScaleFactor,
      mobile: true,
      fitWindow: false,
      scale: 1,
      screenWidth: width,
      screenHeight: height,
      positionX: 0,
      positionY: 0
    };
    if (insets) {
      params.screenWidth += insets.left + insets.right;
      params.positionX = insets.left;
      params.screenHeight += insets.top + insets.bottom;
      params.positionY = insets.top;
    }
    var response = await this._session.protocol.Emulation.setDeviceMetricsOverride(params);
    if (response.error)
      this._testRunner.log('Error: ' + response.error);
  }

  async clear() {
    await this._session.protocol.Emulation.clearDeviceMetricsOverride();
  }
})