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

Unified Diff: third_party/WebKit/Source/devtools/front_end/emulation/OverridesSupport.js

Issue 1647653003: [DevTools] Remove old responsive design v1 code. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 11 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
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;

Powered by Google App Engine
This is Rietveld 408576698