| Index: third_party/WebKit/Source/devtools/front_end/emulation/OverridesSupport.js
|
| diff --git a/third_party/WebKit/Source/devtools/front_end/emulation/OverridesSupport.js b/third_party/WebKit/Source/devtools/front_end/emulation/OverridesSupport.js
|
| deleted file mode 100644
|
| index 32508021c72b46d89853ad190f4d0838e51de10b..0000000000000000000000000000000000000000
|
| --- a/third_party/WebKit/Source/devtools/front_end/emulation/OverridesSupport.js
|
| +++ /dev/null
|
| @@ -1,820 +0,0 @@
|
| -/*
|
| - * Copyright (C) 2012 Google Inc. All rights reserved.
|
| - *
|
| - * Redistribution and use in source and binary forms, with or without
|
| - * modification, are permitted provided that the following conditions are
|
| - * met:
|
| - *
|
| - * * Redistributions of source code must retain the above copyright
|
| - * notice, this list of conditions and the following disclaimer.
|
| - * * Redistributions in binary form must reproduce the above
|
| - * copyright notice, this list of conditions and the following disclaimer
|
| - * in the documentation and/or other materials provided with the
|
| - * distribution.
|
| - * * Neither the name of Google Inc. nor the names of its
|
| - * contributors may be used to endorse or promote products derived from
|
| - * this software without specific prior written permission.
|
| - *
|
| - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
| - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
| - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
| - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
| - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
| - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
| - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
| - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
| - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
| - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
| - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
| - */
|
| -
|
| -/**
|
| - * @constructor
|
| - * @extends {WebInspector.Object}
|
| - */
|
| -WebInspector.OverridesSupport = function()
|
| -{
|
| - this._touchEmulationSuspended = false;
|
| - this._emulateMobileEnabled = false;
|
| - this._userAgent = "";
|
| - this._pageResizer = null;
|
| - this._deviceScale = 1;
|
| - this._fixedDeviceScale = false;
|
| - this._initialized = false;
|
| - this._deviceMetricsThrottler = new WebInspector.Throttler(0);
|
| -
|
| - this.settings = {};
|
| - this.settings._emulationEnabled = WebInspector.settings.createSetting("emulationEnabled", false);
|
| - if (Runtime.experiments.isEnabled("deviceMode"))
|
| - this.settings._emulationEnabled.set(false);
|
| -
|
| - this.settings.userAgent = WebInspector.settings.createSetting("userAgent", "");
|
| -
|
| - this.settings.emulateResolution = WebInspector.settings.createSetting("emulateResolution", true);
|
| - this.settings.deviceWidth = WebInspector.settings.createSetting("deviceWidth", 360);
|
| - this.settings.deviceHeight = WebInspector.settings.createSetting("deviceHeight", 640);
|
| - this.settings.deviceScaleFactor = WebInspector.settings.createSetting("deviceScaleFactor", 0);
|
| - this.settings.deviceFitWindow = WebInspector.settings.createSetting("deviceFitWindow", true);
|
| - this.settings.emulateMobile = WebInspector.settings.createSetting("emulateMobile", false);
|
| -
|
| - this.settings.emulateTouch = WebInspector.settings.createSetting("emulateTouch", false);
|
| -
|
| - this.settings.geolocationOverride = WebInspector.settings.createSetting("geolocationOverride", "");
|
| - this.settings.deviceOrientationOverride = WebInspector.settings.createSetting("deviceOrientationOverride", "");
|
| -
|
| - this.settings.screenOrientationOverride = WebInspector.settings.createSetting("screenOrientationOverride", "");
|
| -
|
| - this.settings.javaScriptDisabled = WebInspector.moduleSetting("javaScriptDisabled");
|
| -}
|
| -
|
| -WebInspector.OverridesSupport.Events = {
|
| - OverridesWarningUpdated: "OverridesWarningUpdated",
|
| - EmulationStateChanged: "EmulationStateChanged"
|
| -}
|
| -
|
| -WebInspector.OverridesSupport.MaxDeviceSize = 9999;
|
| -
|
| -/**
|
| - * @interface
|
| - * @extends {WebInspector.EventTarget}
|
| - */
|
| -WebInspector.OverridesSupport.PageResizer = function()
|
| -{
|
| -};
|
| -
|
| -WebInspector.OverridesSupport.PageResizer.Events = {
|
| - AvailableSizeChanged: "AvailableSizeChanged",
|
| - ResizeRequested: "ResizeRequested",
|
| - FixedScaleRequested: "FixedScaleRequested",
|
| - InsetsChanged: "InsetsChanged"
|
| -};
|
| -
|
| -WebInspector.OverridesSupport.PageResizer.prototype = {
|
| - /**
|
| - * Zero width and height mean default size.
|
| - * Scale should be applied to page-scale-dependent UI bits. Zero means no scale.
|
| - * @param {number} dipWidth
|
| - * @param {number} dipHeight
|
| - * @param {number} scale
|
| - * @param {number} pageWidth
|
| - * @param {number} pageHeight
|
| - */
|
| - update: function(dipWidth, dipHeight, scale, pageWidth, pageHeight) { }
|
| -};
|
| -
|
| -/** @typedef {{width: number, height: number, deviceScaleFactor: number, userAgent: string, touch: boolean, mobile: boolean}} */
|
| -WebInspector.OverridesSupport.Device = {};
|
| -
|
| -/**
|
| - * @constructor
|
| - * @param {number} latitude
|
| - * @param {number} longitude
|
| - * @param {string} error
|
| - */
|
| -WebInspector.OverridesSupport.GeolocationPosition = function(latitude, longitude, error)
|
| -{
|
| - this.latitude = latitude;
|
| - this.longitude = longitude;
|
| - this.error = error;
|
| -}
|
| -
|
| -WebInspector.OverridesSupport.GeolocationPosition.prototype = {
|
| - /**
|
| - * @return {string}
|
| - */
|
| - toSetting: function()
|
| - {
|
| - return (typeof this.latitude === "number" && typeof this.longitude === "number" && typeof this.error === "string") ? this.latitude + "@" + this.longitude + ":" + this.error : "";
|
| - }
|
| -}
|
| -
|
| -/**
|
| - * @return {!WebInspector.OverridesSupport.GeolocationPosition}
|
| - */
|
| -WebInspector.OverridesSupport.GeolocationPosition.parseSetting = function(value)
|
| -{
|
| - if (value) {
|
| - var splitError = value.split(":");
|
| - if (splitError.length === 2) {
|
| - var splitPosition = splitError[0].split("@");
|
| - if (splitPosition.length === 2)
|
| - return new WebInspector.OverridesSupport.GeolocationPosition(parseFloat(splitPosition[0]), parseFloat(splitPosition[1]), splitError[1]);
|
| - }
|
| - }
|
| - return new WebInspector.OverridesSupport.GeolocationPosition(0, 0, "");
|
| -}
|
| -
|
| -/**
|
| - * @return {?WebInspector.OverridesSupport.GeolocationPosition}
|
| - */
|
| -WebInspector.OverridesSupport.GeolocationPosition.parseUserInput = function(latitudeString, longitudeString, errorStatus)
|
| -{
|
| - function isUserInputValid(value)
|
| - {
|
| - if (!value)
|
| - return true;
|
| - return /^[-]?[0-9]*[.]?[0-9]*$/.test(value);
|
| - }
|
| -
|
| - if (!latitudeString && !longitudeString)
|
| - return null;
|
| -
|
| - var isLatitudeValid = isUserInputValid(latitudeString);
|
| - var isLongitudeValid = isUserInputValid(longitudeString);
|
| -
|
| - if (!isLatitudeValid && !isLongitudeValid)
|
| - return null;
|
| -
|
| - var latitude = isLatitudeValid ? parseFloat(latitudeString) : -1;
|
| - var longitude = isLongitudeValid ? parseFloat(longitudeString) : -1;
|
| -
|
| - return new WebInspector.OverridesSupport.GeolocationPosition(latitude, longitude, errorStatus ? "PositionUnavailable" : "");
|
| -}
|
| -
|
| -/**
|
| - * @constructor
|
| - * @param {number} alpha
|
| - * @param {number} beta
|
| - * @param {number} gamma
|
| - */
|
| -WebInspector.OverridesSupport.DeviceOrientation = function(alpha, beta, gamma)
|
| -{
|
| - this.alpha = alpha;
|
| - this.beta = beta;
|
| - this.gamma = gamma;
|
| -}
|
| -
|
| -WebInspector.OverridesSupport.DeviceOrientation.prototype = {
|
| - /**
|
| - * @return {string}
|
| - */
|
| - toSetting: function()
|
| - {
|
| - return JSON.stringify(this);
|
| - }
|
| -}
|
| -
|
| -/**
|
| - * @return {!WebInspector.OverridesSupport.DeviceOrientation}
|
| - */
|
| -WebInspector.OverridesSupport.DeviceOrientation.parseSetting = function(value)
|
| -{
|
| - if (value) {
|
| - var jsonObject = JSON.parse(value);
|
| - return new WebInspector.OverridesSupport.DeviceOrientation(jsonObject.alpha, jsonObject.beta, jsonObject.gamma);
|
| - }
|
| - return new WebInspector.OverridesSupport.DeviceOrientation(0, 0, 0);
|
| -}
|
| -
|
| -/**
|
| - * @return {?WebInspector.OverridesSupport.DeviceOrientation}
|
| - */
|
| -WebInspector.OverridesSupport.DeviceOrientation.parseUserInput = function(alphaString, betaString, gammaString)
|
| -{
|
| - function isUserInputValid(value)
|
| - {
|
| - if (!value)
|
| - return true;
|
| - return /^[-]?[0-9]*[.]?[0-9]*$/.test(value);
|
| - }
|
| -
|
| - if (!alphaString && !betaString && !gammaString)
|
| - return null;
|
| -
|
| - var isAlphaValid = isUserInputValid(alphaString);
|
| - var isBetaValid = isUserInputValid(betaString);
|
| - var isGammaValid = isUserInputValid(gammaString);
|
| -
|
| - if (!isAlphaValid && !isBetaValid && !isGammaValid)
|
| - return null;
|
| -
|
| - var alpha = isAlphaValid ? parseFloat(alphaString) : -1;
|
| - var beta = isBetaValid ? parseFloat(betaString) : -1;
|
| - var gamma = isGammaValid ? parseFloat(gammaString) : -1;
|
| -
|
| - return new WebInspector.OverridesSupport.DeviceOrientation(alpha, beta, gamma);
|
| -}
|
| -
|
| -/**
|
| - * @param {string} value
|
| - * @return {string}
|
| - */
|
| -WebInspector.OverridesSupport.deviceSizeValidator = function(value)
|
| -{
|
| - if (!value || (/^[\d]+$/.test(value) && value >= 0 && value <= WebInspector.OverridesSupport.MaxDeviceSize))
|
| - return "";
|
| - return WebInspector.UIString("Value must be non-negative integer");
|
| -}
|
| -
|
| -/**
|
| - * @param {string} value
|
| - * @return {string}
|
| - */
|
| -WebInspector.OverridesSupport.deviceScaleFactorValidator = function(value)
|
| -{
|
| - if (!value || (/^[\d]+(\.\d+)?|\.\d+$/.test(value) && value >= 0 && value <= 10))
|
| - return "";
|
| - return WebInspector.UIString("Value must be non-negative float");
|
| -}
|
| -
|
| -WebInspector.OverridesSupport._touchEventsScriptIdSymbol = Symbol("OverridesSupport.touchEventsScriptIdSymbol");
|
| -
|
| -WebInspector.OverridesSupport.prototype = {
|
| - /**
|
| - * @return {boolean}
|
| - */
|
| - canEmulate: function()
|
| - {
|
| - return !!this._target && this._targetCanEmulate;
|
| - },
|
| -
|
| - /**
|
| - * @return {boolean}
|
| - */
|
| - emulationEnabled: function()
|
| - {
|
| - return this.canEmulate() && this.settings._emulationEnabled.get();
|
| - },
|
| -
|
| - /**
|
| - * @param {boolean} enabled
|
| - */
|
| - setEmulationEnabled: function(enabled)
|
| - {
|
| - if (this.canEmulate()) {
|
| - this.settings._emulationEnabled.set(enabled);
|
| - this.dispatchEventToListeners(WebInspector.OverridesSupport.Events.EmulationStateChanged);
|
| - if (enabled && this.settings.emulateResolution.get())
|
| - this._target.emulationAgent().resetPageScaleFactor();
|
| - }
|
| - },
|
| -
|
| - /**
|
| - * @param {!WebInspector.Target} target
|
| - * @param {function()} callback
|
| - */
|
| - init: function(target, callback)
|
| - {
|
| - if (target.isPage())
|
| - target.emulationAgent().canEmulate(canEmulateCallback.bind(this));
|
| - else
|
| - canEmulateCallback.call(this, null, false);
|
| -
|
| - /**
|
| - * @param {?Protocol.Error} error
|
| - * @param {boolean} canEmulate
|
| - * @this {WebInspector.OverridesSupport}
|
| - */
|
| - function canEmulateCallback(error, canEmulate)
|
| - {
|
| - this._target = target;
|
| - this._targetCanEmulate = !error && canEmulate;
|
| - this._initialized = true;
|
| -
|
| - if (this.canEmulate()) {
|
| - target.resourceTreeModel.addEventListener(WebInspector.ResourceTreeModel.EventTypes.MainFrameNavigated, this._onMainFrameNavigated, this);
|
| - if (!Runtime.experiments.isEnabled("deviceMode")) {
|
| - var domModel = WebInspector.DOMModel.fromTarget(this._target);
|
| - if (domModel)
|
| - domModel.addEventListener(WebInspector.DOMModel.Events.InspectModeWillBeToggled, this._inspectModeWillBeToggled, this);
|
| - }
|
| - this._applyInitialOverrides();
|
| - }
|
| -
|
| - this.dispatchEventToListeners(WebInspector.OverridesSupport.Events.EmulationStateChanged);
|
| -
|
| - callback();
|
| - }
|
| - },
|
| -
|
| - /**
|
| - * @param {?WebInspector.OverridesSupport.PageResizer} pageResizer
|
| - * @param {!Size} availableSize
|
| - * @param {!Insets} insets
|
| - */
|
| - setPageResizer: function(pageResizer, availableSize, insets)
|
| - {
|
| - if (pageResizer === this._pageResizer)
|
| - return;
|
| -
|
| - if (this._pageResizer) {
|
| - this._pageResizer.removeEventListener(WebInspector.OverridesSupport.PageResizer.Events.AvailableSizeChanged, this._onPageResizerAvailableSizeChanged, this);
|
| - this._pageResizer.removeEventListener(WebInspector.OverridesSupport.PageResizer.Events.ResizeRequested, this._onPageResizerResizeRequested, this);
|
| - this._pageResizer.removeEventListener(WebInspector.OverridesSupport.PageResizer.Events.FixedScaleRequested, this._onPageResizerFixedScaleRequested, this);
|
| - this._pageResizer.removeEventListener(WebInspector.OverridesSupport.PageResizer.Events.InsetsChanged, this._onPageResizerInsetsChanged, this);
|
| - }
|
| - this._pageResizer = pageResizer;
|
| - this._pageResizerAvailableSize = availableSize;
|
| - this._pageResizerInsets = insets;
|
| - if (this._pageResizer) {
|
| - this._pageResizer.addEventListener(WebInspector.OverridesSupport.PageResizer.Events.AvailableSizeChanged, this._onPageResizerAvailableSizeChanged, this);
|
| - this._pageResizer.addEventListener(WebInspector.OverridesSupport.PageResizer.Events.ResizeRequested, this._onPageResizerResizeRequested, this);
|
| - this._pageResizer.addEventListener(WebInspector.OverridesSupport.PageResizer.Events.FixedScaleRequested, this._onPageResizerFixedScaleRequested, this);
|
| - this._pageResizer.addEventListener(WebInspector.OverridesSupport.PageResizer.Events.InsetsChanged, this._onPageResizerInsetsChanged, this);
|
| - }
|
| - this._deviceMetricsChanged(false);
|
| - },
|
| -
|
| - /**
|
| - * @param {!WebInspector.OverridesSupport.Device} device
|
| - */
|
| - emulateDevice: function(device)
|
| - {
|
| - this._deviceMetricsChangedListenerMuted = true;
|
| - this._userAgentChangedListenerMuted = true;
|
| - this.settings.userAgent.set(device.userAgent);
|
| - this.settings.emulateResolution.set(true);
|
| - this.settings.deviceWidth.set(device.width);
|
| - this.settings.deviceHeight.set(device.height);
|
| - this.settings.deviceScaleFactor.set(device.deviceScaleFactor);
|
| - this.settings.emulateTouch.set(device.touch);
|
| - this.settings.emulateMobile.set(device.mobile);
|
| - delete this._deviceMetricsChangedListenerMuted;
|
| - delete this._userAgentChangedListenerMuted;
|
| -
|
| - if (this._initialized) {
|
| - this._deviceMetricsChanged(true);
|
| - this._userAgentChanged();
|
| - }
|
| - },
|
| -
|
| - reset: function()
|
| - {
|
| - this._deviceMetricsChangedListenerMuted = true;
|
| - this._userAgentChangedListenerMuted = true;
|
| - this.settings.userAgent.set("");
|
| - this.settings.emulateResolution.set(false);
|
| - this.settings.deviceScaleFactor.set(0);
|
| - this.settings.emulateTouch.set(false);
|
| - this.settings.emulateMobile.set(false);
|
| - this.settings.screenOrientationOverride.set("");
|
| - delete this._deviceMetricsChangedListenerMuted;
|
| - delete this._userAgentChangedListenerMuted;
|
| -
|
| - if (this._initialized) {
|
| - this._deviceMetricsChanged(false);
|
| - this._userAgentChanged();
|
| - }
|
| - },
|
| -
|
| - /**
|
| - * @param {!WebInspector.OverridesSupport.Device} device
|
| - * @return {boolean}
|
| - */
|
| - isEmulatingDevice: function(device)
|
| - {
|
| - var sameResolution = this.settings.emulateResolution.get() ?
|
| - (this.settings.deviceWidth.get() === device.width && this.settings.deviceHeight.get() === device.height && this.settings.deviceScaleFactor.get() === device.deviceScaleFactor) :
|
| - (!device.width && !device.height && !device.deviceScaleFactor);
|
| - return this.settings.userAgent.get() === device.userAgent
|
| - && this.settings.emulateTouch.get() === device.touch
|
| - && this.settings.emulateMobile.get() === device.mobile
|
| - && sameResolution;
|
| - },
|
| -
|
| - /**
|
| - * @param {!WebInspector.Event} event
|
| - */
|
| - _inspectModeWillBeToggled: function(event)
|
| - {
|
| - var inspectModeEnabled = /** @type {boolean} */ (event.data);
|
| - this._touchEmulationSuspended = inspectModeEnabled;
|
| - this._emulateTouchEventsChanged();
|
| - },
|
| -
|
| - _applyInitialOverrides: function()
|
| - {
|
| - this.settings._emulationEnabled.addChangeListener(this._userAgentChanged, this);
|
| - this.settings.userAgent.addChangeListener(this._userAgentChanged, this);
|
| -
|
| - this.settings._emulationEnabled.addChangeListener(this._deviceMetricsChanged.bind(this, false));
|
| - this.settings.emulateResolution.addChangeListener(this._deviceMetricsChanged.bind(this, false));
|
| - this.settings.deviceWidth.addChangeListener(this._deviceMetricsChanged.bind(this, false));
|
| - this.settings.deviceHeight.addChangeListener(this._deviceMetricsChanged.bind(this, false));
|
| - this.settings.deviceScaleFactor.addChangeListener(this._deviceMetricsChanged.bind(this, false));
|
| - this.settings.emulateMobile.addChangeListener(this._deviceMetricsChanged.bind(this, false));
|
| - this.settings.deviceFitWindow.addChangeListener(this._deviceMetricsChanged.bind(this, false));
|
| -
|
| - this.settings.geolocationOverride.addChangeListener(this._geolocationPositionChanged, this);
|
| - this.settings.deviceOrientationOverride.addChangeListener(this._deviceOrientationChanged, this);
|
| -
|
| - this.settings._emulationEnabled.addChangeListener(this._screenOrientationChanged, this);
|
| - this.settings.screenOrientationOverride.addChangeListener(this._screenOrientationChanged, this);
|
| -
|
| - this.settings._emulationEnabled.addChangeListener(this._emulateTouchEventsChanged, this);
|
| - this.settings.emulateTouch.addChangeListener(this._emulateTouchEventsChanged, this);
|
| -
|
| - this.settings.javaScriptDisabled.addChangeListener(this._javaScriptDisabledChanged, this);
|
| - this._javaScriptDisabledChanged();
|
| -
|
| - this.settings._emulationEnabled.addChangeListener(this._showRulersChanged, this);
|
| - WebInspector.moduleSetting("showMetricsRulers").addChangeListener(this._showRulersChanged, this);
|
| - this._showRulersChanged();
|
| -
|
| - if (this.emulationEnabled()) {
|
| - if (this.settings.screenOrientationOverride.get())
|
| - this._screenOrientationChanged();
|
| -
|
| - if (this.settings.emulateTouch.get())
|
| - this._emulateTouchEventsChanged();
|
| -
|
| - this._deviceMetricsChanged(true);
|
| -
|
| - this._userAgentChanged();
|
| - }
|
| - },
|
| -
|
| - _userAgentChanged: function()
|
| - {
|
| - if (this._userAgentChangedListenerMuted)
|
| - return;
|
| - var userAgent = this.emulationEnabled() ? this.settings.userAgent.get() : "";
|
| - WebInspector.multitargetNetworkManager.setUserAgentOverride(userAgent);
|
| - if (this._userAgent !== userAgent)
|
| - this._updateUserAgentWarningMessage(WebInspector.UIString("You might need to reload the page for proper user agent spoofing and viewport rendering."));
|
| - this._userAgent = userAgent;
|
| - },
|
| -
|
| - /**
|
| - * @param {!WebInspector.Event} event
|
| - */
|
| - _onPageResizerAvailableSizeChanged: function(event)
|
| - {
|
| - this._pageResizerAvailableSize = /** @type {!Size} */ (event.data.size);
|
| - this._pageResizerInsets = /** @type {!Insets} */ (event.data.insets);
|
| - this._deviceMetricsChanged(false);
|
| - },
|
| -
|
| - /**
|
| - * @param {!WebInspector.Event} event
|
| - */
|
| - _onPageResizerInsetsChanged: function(event)
|
| - {
|
| - var insets = /** @type {!Insets} */ (event.data);
|
| - if (!insets.isEqual(this._pageResizerInsets)) {
|
| - this._pageResizerInsets = insets;
|
| - this._deviceMetricsChanged(false);
|
| - }
|
| - },
|
| -
|
| - /**
|
| - * @param {!WebInspector.Event} event
|
| - */
|
| - _onPageResizerResizeRequested: function(event)
|
| - {
|
| - if (typeof event.data.width !== "undefined") {
|
| - var width = /** @type {number} */ (event.data.width);
|
| - if (width !== this.settings.deviceWidth.get())
|
| - this.settings.deviceWidth.set(width);
|
| - }
|
| - if (typeof event.data.height !== "undefined") {
|
| - var height = /** @type {number} */ (event.data.height);
|
| - if (height !== this.settings.deviceHeight.get())
|
| - this.settings.deviceHeight.set(height);
|
| - }
|
| - },
|
| -
|
| - /**
|
| - * @param {!WebInspector.Event} event
|
| - */
|
| - _onPageResizerFixedScaleRequested: function(event)
|
| - {
|
| - this._fixedDeviceScale = /** @type {boolean} */ (event.data);
|
| - this._deviceMetricsChanged(false);
|
| - },
|
| -
|
| - /**
|
| - * @param {boolean} resetPageScaleFactor
|
| - */
|
| - _deviceMetricsChanged: function(resetPageScaleFactor)
|
| - {
|
| - if (!this._initialized)
|
| - return;
|
| -
|
| - this._showRulersChanged();
|
| -
|
| - if (this._deviceMetricsChangedListenerMuted)
|
| - return;
|
| -
|
| - if (!this.emulationEnabled()) {
|
| - this._deviceMetricsThrottler.schedule(clearDeviceMetricsOverride.bind(this));
|
| - if (this._pageResizer)
|
| - this._pageResizer.update(0, 0, 1, 0, 0);
|
| - return;
|
| - }
|
| -
|
| - var dipWidth = this.settings.emulateResolution.get() ? this.settings.deviceWidth.get() : 0;
|
| - var dipHeight = this.settings.emulateResolution.get() ? this.settings.deviceHeight.get() : 0;
|
| -
|
| - var overrideWidth = dipWidth;
|
| - var overrideHeight = dipHeight;
|
| - var screenWidth = dipWidth;
|
| - var screenHeight = dipHeight;
|
| - var positionX = 0;
|
| - var positionY = 0;
|
| - var scale = 1;
|
| - if (this._pageResizer) {
|
| - var available = this._pageResizerAvailableSize;
|
| - var insets = this._pageResizerInsets;
|
| - if (this.settings.deviceFitWindow.get()) {
|
| - if (this._fixedDeviceScale) {
|
| - scale = this._deviceScale;
|
| - } else {
|
| - scale = 1;
|
| - while (available.width < (dipWidth + insets.left + insets.right) * scale || available.height < (dipHeight + insets.top + insets.bottom) * scale)
|
| - scale *= 0.8;
|
| - }
|
| - }
|
| -
|
| - this._pageResizer.update(
|
| - Math.min(dipWidth * scale, available.width - insets.left * scale), Math.min(dipHeight * scale, available.height - insets.top * scale),
|
| - scale,
|
| - (dipWidth + insets.left + insets.right) * scale, (dipHeight + insets.top + insets.bottom) * scale);
|
| - if (scale === 1 && available.width >= dipWidth && available.height >= dipHeight) {
|
| - // When we have enough space, no page size override is required. This will speed things up and remove lag.
|
| - overrideWidth = 0;
|
| - overrideHeight = 0;
|
| - }
|
| - if (dipWidth === 0 && dipHeight !== 0)
|
| - overrideWidth = Math.round(available.width / scale);
|
| - if (dipHeight === 0 && dipWidth !== 0)
|
| - overrideHeight = Math.round(available.height / scale);
|
| - screenWidth = dipWidth + insets.left + insets.right;
|
| - screenHeight = dipHeight + insets.top + insets.bottom;
|
| - positionX = insets.left;
|
| - positionY = insets.top;
|
| - }
|
| - this._deviceScale = scale;
|
| -
|
| - this._deviceMetricsThrottler.schedule(setDeviceMetricsOverride.bind(this));
|
| -
|
| - /**
|
| - * @this {WebInspector.OverridesSupport}
|
| - * @return {!Promise.<?>}
|
| - */
|
| - function setDeviceMetricsOverride()
|
| - {
|
| - var setDevicePromise = this._target.emulationAgent().setDeviceMetricsOverride(
|
| - overrideWidth, overrideHeight, this.settings.emulateResolution.get() ? this.settings.deviceScaleFactor.get() : 0,
|
| - this.settings.emulateMobile.get(), this._pageResizer ? false : this.settings.deviceFitWindow.get(), scale, 0, 0,
|
| - screenWidth, screenHeight, positionX, positionY, apiCallback.bind(this))
|
| - var allPromises = [ setDevicePromise ];
|
| - if (resetPageScaleFactor)
|
| - allPromises.push(this._target.emulationAgent().resetPageScaleFactor());
|
| - return Promise.all(allPromises);
|
| - }
|
| -
|
| - /**
|
| - * @this {WebInspector.OverridesSupport}
|
| - * @return {!Promise.<?>}
|
| - */
|
| - function clearDeviceMetricsOverride()
|
| - {
|
| - return this._target.emulationAgent().clearDeviceMetricsOverride(apiCallback.bind(this))
|
| - }
|
| -
|
| - /**
|
| - * @param {?Protocol.Error} error
|
| - * @this {WebInspector.OverridesSupport}
|
| - */
|
| - function apiCallback(error)
|
| - {
|
| - if (error) {
|
| - this._updateDeviceMetricsWarningMessage(WebInspector.UIString("Screen emulation is not available on this page."));
|
| - this._deviceMetricsOverrideAppliedForTest();
|
| - return;
|
| - }
|
| -
|
| - var mobileEnabled = this.emulationEnabled() && this.settings.emulateMobile.get();
|
| - if (this._emulateMobileEnabled !== mobileEnabled)
|
| - this._updateDeviceMetricsWarningMessage(WebInspector.UIString("You might need to reload the page for proper user agent spoofing and viewport rendering."));
|
| - this._emulateMobileEnabled = mobileEnabled;
|
| - this._deviceMetricsOverrideAppliedForTest();
|
| - }
|
| - },
|
| -
|
| - _deviceMetricsOverrideAppliedForTest: function()
|
| - {
|
| - // Used for sniffing in tests.
|
| - },
|
| -
|
| - /**
|
| - * @param {boolean} enabled
|
| - */
|
| - setGeolocationOverrideEnabled: function(enabled)
|
| - {
|
| - this._overrideGeolocation = enabled;
|
| - this._geolocationPositionChanged();
|
| - },
|
| -
|
| - _geolocationPositionChanged: function()
|
| - {
|
| - if (!this._overrideGeolocation) {
|
| - this._target.emulationAgent().clearGeolocationOverride();
|
| - return;
|
| - }
|
| - var geolocation = WebInspector.OverridesSupport.GeolocationPosition.parseSetting(this.settings.geolocationOverride.get());
|
| - if (geolocation.error)
|
| - this._target.emulationAgent().setGeolocationOverride();
|
| - else
|
| - this._target.emulationAgent().setGeolocationOverride(geolocation.latitude, geolocation.longitude, 150);
|
| - },
|
| -
|
| - /**
|
| - * @param {boolean} enabled
|
| - */
|
| - setDeviceOrientationOverrideEnabled: function(enabled)
|
| - {
|
| - this._overrideDeviceOrientation = enabled;
|
| - this._deviceOrientationChanged();
|
| - },
|
| -
|
| - _deviceOrientationChanged: function()
|
| - {
|
| - if (!this._overrideDeviceOrientation) {
|
| - this._target.deviceOrientationAgent().clearDeviceOrientationOverride();
|
| - return;
|
| - }
|
| -
|
| - var deviceOrientation = WebInspector.OverridesSupport.DeviceOrientation.parseSetting(this.settings.deviceOrientationOverride.get());
|
| - this._target.deviceOrientationAgent().setDeviceOrientationOverride(deviceOrientation.alpha, deviceOrientation.beta, deviceOrientation.gamma);
|
| - },
|
| -
|
| - _screenOrientationChanged: function()
|
| - {
|
| - if (!this.emulationEnabled() || !this.settings.screenOrientationOverride.get()) {
|
| - this._target.screenOrientationAgent().clearScreenOrientationOverride();
|
| - return;
|
| - }
|
| -
|
| - var screenOrientation = this.settings.screenOrientationOverride.get();
|
| - this._target.screenOrientationAgent().setScreenOrientationOverride(screenOrientation === "landscapePrimary" ? 90 : 0, screenOrientation);
|
| - },
|
| -
|
| - _emulateTouchEventsChanged: function()
|
| - {
|
| - var emulationEnabled = this.emulationEnabled() && this.settings.emulateTouch.get() && !this._touchEmulationSuspended;
|
| - var configuration = this.settings.emulateMobile.get() ? "mobile" : "desktop";
|
| - var target = this._target;
|
| -
|
| - /**
|
| - * @suppressGlobalPropertiesCheck
|
| - */
|
| - const injectedFunction = function() {
|
| - const touchEvents = ["ontouchstart", "ontouchend", "ontouchmove", "ontouchcancel"];
|
| - var recepients = [window.__proto__, document.__proto__];
|
| - for (var i = 0; i < touchEvents.length; ++i) {
|
| - for (var j = 0; j < recepients.length; ++j) {
|
| - if (!(touchEvents[i] in recepients[j]))
|
| - Object.defineProperty(recepients[j], touchEvents[i], { value: null, writable: true, configurable: true, enumerable: true });
|
| - }
|
| - }
|
| - };
|
| -
|
| - var symbol = WebInspector.OverridesSupport._touchEventsScriptIdSymbol;
|
| -
|
| - if (typeof target[symbol] !== "undefined") {
|
| - target.pageAgent().removeScriptToEvaluateOnLoad(target[symbol]);
|
| - delete target[symbol];
|
| - }
|
| -
|
| - if (emulationEnabled)
|
| - target.pageAgent().addScriptToEvaluateOnLoad("(" + injectedFunction.toString() + ")()", scriptAddedCallback);
|
| -
|
| - /**
|
| - * @param {?Protocol.Error} error
|
| - * @param {string} scriptId
|
| - */
|
| - function scriptAddedCallback(error, scriptId)
|
| - {
|
| - if (error)
|
| - delete target[symbol];
|
| - else
|
| - target[symbol] = scriptId;
|
| - }
|
| -
|
| - target.emulationAgent().setTouchEmulationEnabled(emulationEnabled, configuration);
|
| - },
|
| -
|
| - _javaScriptDisabledChanged: function()
|
| - {
|
| - this._target.emulationAgent().setScriptExecutionDisabled(this.settings.javaScriptDisabled.get());
|
| - },
|
| -
|
| - _pageResizerActive: function()
|
| - {
|
| - return this._pageResizer && this.emulationEnabled();
|
| - },
|
| -
|
| - _showRulersChanged: function()
|
| - {
|
| - var showRulersValue = WebInspector.moduleSetting("showMetricsRulers").get();
|
| - for (var target of WebInspector.targetManager.targets(WebInspector.Target.Type.Page)) {
|
| - var domModel = WebInspector.DOMModel.fromTarget(target);
|
| - if (domModel)
|
| - domModel.setHighlightSettings(showRulersValue && !this._pageResizerActive(), showRulersValue);
|
| - }
|
| - },
|
| -
|
| - _onMainFrameNavigated: function()
|
| - {
|
| - if (!Runtime.experiments.isEnabled("deviceMode"))
|
| - this._deviceMetricsChanged(false);
|
| - this._updateUserAgentWarningMessage("");
|
| - this._updateDeviceMetricsWarningMessage("");
|
| - },
|
| -
|
| - _dispatchWarningChanged: function()
|
| - {
|
| - this.dispatchEventToListeners(WebInspector.OverridesSupport.Events.OverridesWarningUpdated);
|
| - },
|
| -
|
| - /**
|
| - * @param {string} warningMessage
|
| - */
|
| - _updateDeviceMetricsWarningMessage: function(warningMessage)
|
| - {
|
| - this._deviceMetricsWarningMessage = warningMessage;
|
| - this._dispatchWarningChanged();
|
| - },
|
| -
|
| - /**
|
| - * @param {string} warningMessage
|
| - */
|
| - _updateUserAgentWarningMessage: function(warningMessage)
|
| - {
|
| - this._userAgentWarningMessage = warningMessage;
|
| - this._dispatchWarningChanged();
|
| - },
|
| -
|
| - /**
|
| - * @return {string}
|
| - */
|
| - warningMessage: function()
|
| - {
|
| - return this._deviceMetricsWarningMessage || this._userAgentWarningMessage || "";
|
| - },
|
| -
|
| - clearWarningMessage: function()
|
| - {
|
| - this._deviceMetricsWarningMessage = "";
|
| - this._userAgentWarningMessage = "";
|
| - this._dispatchWarningChanged();
|
| - },
|
| -
|
| - swapDimensions: function()
|
| - {
|
| - var width = WebInspector.overridesSupport.settings.deviceWidth.get();
|
| - var height = WebInspector.overridesSupport.settings.deviceHeight.get();
|
| - WebInspector.overridesSupport.settings.deviceWidth.set(height);
|
| - WebInspector.overridesSupport.settings.deviceHeight.set(width);
|
| - },
|
| -
|
| - __proto__: WebInspector.Object.prototype
|
| -}
|
| -
|
| -
|
| -/**
|
| - * @type {!WebInspector.OverridesSupport}
|
| - */
|
| -WebInspector.overridesSupport;
|
|
|