| Index: Source/devtools/front_end/OverridesSupport.js
|
| diff --git a/Source/devtools/front_end/OverridesSupport.js b/Source/devtools/front_end/OverridesSupport.js
|
| index 517bcc294ce0dbaa5e2ec7076442ec73c8893329..b2af92c844a2ef62b9a01b0b44043b5664465fb4 100644
|
| --- a/Source/devtools/front_end/OverridesSupport.js
|
| +++ b/Source/devtools/front_end/OverridesSupport.js
|
| @@ -66,48 +66,16 @@ WebInspector.OverridesSupport.Events = {
|
| * @param {number} width
|
| * @param {number} height
|
| * @param {number} deviceScaleFactor
|
| - * @param {number} fontScaleFactor
|
| * @param {boolean} textAutosizing
|
| + * @param {boolean} useAndroidFontMetrics
|
| */
|
| -WebInspector.OverridesSupport.DeviceMetrics = function(width, height, deviceScaleFactor, fontScaleFactor, textAutosizing)
|
| +WebInspector.OverridesSupport.DeviceMetrics = function(width, height, deviceScaleFactor, textAutosizing, useAndroidFontMetrics)
|
| {
|
| this.width = width;
|
| this.height = height;
|
| this.deviceScaleFactor = deviceScaleFactor;
|
| - this.fontScaleFactor = fontScaleFactor;
|
| this.textAutosizing = textAutosizing;
|
| -}
|
| -
|
| -/**
|
| - * Android computes a font scale factor fudged for improved legibility. This value is
|
| - * not computed on non-Android builds so we duplicate the Android-specific logic here.
|
| - * For a description of this algorithm, see:
|
| - * chrome/browser/chrome_content_browser_client.cc, GetFontScaleMultiplier(...)
|
| - *
|
| - * @param {number} width
|
| - * @param {number} height
|
| - * @param {number} deviceScaleFactor
|
| - * @return {number} fontScaleFactor for Android.
|
| - */
|
| -// FIXME(crbug.com/313410): Unify this calculation with the c++ side so we don't duplicate this logic.
|
| -WebInspector.OverridesSupport.DeviceMetrics._computeFontScaleFactorForAndroid = function(width, height, deviceScaleFactor)
|
| -{
|
| - var minWidth = Math.min(width, height) / deviceScaleFactor;
|
| -
|
| - var kMinFSM = 1.05;
|
| - var kWidthForMinFSM = 320;
|
| - var kMaxFSM = 1.3;
|
| - var kWidthForMaxFSM = 800;
|
| -
|
| - if (minWidth <= kWidthForMinFSM)
|
| - return kMinFSM;
|
| - if (minWidth >= kWidthForMaxFSM)
|
| - return kMaxFSM;
|
| -
|
| - // The font scale multiplier varies linearly between kMinFSM and kMaxFSM.
|
| - var ratio = (minWidth - kWidthForMinFSM) / (kWidthForMaxFSM - kWidthForMinFSM);
|
| - var fontScaleFactor = ratio * (kMaxFSM - kMinFSM) + kMinFSM;
|
| - return Math.round(fontScaleFactor * 1000) / 1000;
|
| + this.useAndroidFontMetrics = useAndroidFontMetrics;
|
| }
|
|
|
| /**
|
| @@ -118,27 +86,25 @@ WebInspector.OverridesSupport.DeviceMetrics.parseSetting = function(value)
|
| var width = 0;
|
| var height = 0;
|
| var deviceScaleFactor = 1;
|
| - var fontScaleFactor = 1;
|
| var textAutosizing = false;
|
| + var useAndroidFontMetrics = false;
|
| if (value) {
|
| var splitMetrics = value.split("x");
|
| if (splitMetrics.length === 5) {
|
| width = parseInt(splitMetrics[0], 10);
|
| height = parseInt(splitMetrics[1], 10);
|
| deviceScaleFactor = parseFloat(splitMetrics[2]);
|
| - fontScaleFactor = parseFloat(splitMetrics[3]);
|
| - if (fontScaleFactor == 0)
|
| - fontScaleFactor = WebInspector.OverridesSupport.DeviceMetrics._computeFontScaleFactorForAndroid(width, height, deviceScaleFactor);
|
| + useAndroidFontMetrics = splitMetrics[3] == 1;
|
| textAutosizing = splitMetrics[4] == 1;
|
| }
|
| }
|
| - return new WebInspector.OverridesSupport.DeviceMetrics(width, height, deviceScaleFactor, fontScaleFactor, textAutosizing);
|
| + return new WebInspector.OverridesSupport.DeviceMetrics(width, height, deviceScaleFactor, textAutosizing, useAndroidFontMetrics);
|
| }
|
|
|
| /**
|
| * @return {?WebInspector.OverridesSupport.DeviceMetrics}
|
| */
|
| -WebInspector.OverridesSupport.DeviceMetrics.parseUserInput = function(widthString, heightString, deviceScaleFactorString, fontScaleFactorString, textAutosizing)
|
| +WebInspector.OverridesSupport.DeviceMetrics.parseUserInput = function(widthString, heightString, deviceScaleFactorString, textAutosizing, useAndroidFontMetrics)
|
| {
|
| function isUserInputValid(value, isInteger)
|
| {
|
| @@ -153,17 +119,15 @@ WebInspector.OverridesSupport.DeviceMetrics.parseUserInput = function(widthStrin
|
| var isWidthValid = isUserInputValid(widthString, true);
|
| var isHeightValid = isUserInputValid(heightString, true);
|
| var isDeviceScaleFactorValid = isUserInputValid(deviceScaleFactorString, false);
|
| - var isFontScaleFactorValid = isUserInputValid(fontScaleFactorString, false);
|
|
|
| - if (!isWidthValid && !isHeightValid && !isDeviceScaleFactorValid && !isFontScaleFactorValid)
|
| + if (!isWidthValid && !isHeightValid && !isDeviceScaleFactorValid)
|
| return null;
|
|
|
| var width = isWidthValid ? parseInt(widthString || "0", 10) : -1;
|
| var height = isHeightValid ? parseInt(heightString || "0", 10) : -1;
|
| var deviceScaleFactor = isDeviceScaleFactorValid ? parseFloat(deviceScaleFactorString) : -1;
|
| - var fontScaleFactor = isFontScaleFactorValid ? parseFloat(fontScaleFactorString) : -1;
|
|
|
| - return new WebInspector.OverridesSupport.DeviceMetrics(width, height, deviceScaleFactor, fontScaleFactor, textAutosizing);
|
| + return new WebInspector.OverridesSupport.DeviceMetrics(width, height, deviceScaleFactor, textAutosizing, useAndroidFontMetrics);
|
| }
|
|
|
| WebInspector.OverridesSupport.DeviceMetrics.prototype = {
|
| @@ -172,7 +136,7 @@ WebInspector.OverridesSupport.DeviceMetrics.prototype = {
|
| */
|
| isValid: function()
|
| {
|
| - return this.isWidthValid() && this.isHeightValid() && this.isDeviceScaleFactorValid() && this.isFontScaleFactorValid();
|
| + return this.isWidthValid() && this.isHeightValid() && this.isDeviceScaleFactorValid();
|
| },
|
|
|
| /**
|
| @@ -202,17 +166,9 @@ WebInspector.OverridesSupport.DeviceMetrics.prototype = {
|
| /**
|
| * @return {boolean}
|
| */
|
| - isFontScaleFactorValid: function()
|
| - {
|
| - return this.fontScaleFactor > 0;
|
| - },
|
| -
|
| - /**
|
| - * @return {boolean}
|
| - */
|
| - isTextAutosizingValid: function()
|
| + isUseAndroidFontMetricsDisabled: function()
|
| {
|
| - return true;
|
| + return !this.textAutosizing;
|
| },
|
|
|
| /**
|
| @@ -223,7 +179,7 @@ WebInspector.OverridesSupport.DeviceMetrics.prototype = {
|
| if (!this.isValid())
|
| return "";
|
|
|
| - return this.width && this.height ? this.width + "x" + this.height + "x" + this.deviceScaleFactor + "x" + this.fontScaleFactor + "x" + (this.textAutosizing ? "1" : "0") : "";
|
| + return this.width && this.height ? this.width + "x" + this.height + "x" + this.deviceScaleFactor + "x" + (this.useAndroidFontMetrics ? "1" : "0") + "x" + (this.textAutosizing ? "1" : "0") : "";
|
| },
|
|
|
| /**
|
| @@ -251,11 +207,38 @@ WebInspector.OverridesSupport.DeviceMetrics.prototype = {
|
| },
|
|
|
| /**
|
| - * @return {string}
|
| + * Compute the font scale factor.
|
| + *
|
| + * Android uses a device scale adjustment for fonts used in text autosizing for improved
|
| + * legibility. This function computes this adjusted value if useAndroidFontMetrics is true.
|
| + *
|
| + * For a description of the Android device scale adjustment algorithm, see:
|
| + * chrome/browser/chrome_content_browser_client.cc, GetFontScaleMultiplier(...)
|
| + *
|
| + * @return {number} font scale factor for Android if useAndroidFontMetrics, or 1.
|
| */
|
| - fontScaleFactorToInput: function()
|
| + fontScaleFactor: function()
|
| {
|
| - return this.isFontScaleFactorValid() && this.fontScaleFactor ? String(this.fontScaleFactor) : "";
|
| + if (this.useAndroidFontMetrics && this.isValid()) {
|
| + var minWidth = Math.min(this.width, this.height) / this.deviceScaleFactor;
|
| +
|
| + var kMinFSM = 1.05;
|
| + var kWidthForMinFSM = 320;
|
| + var kMaxFSM = 1.3;
|
| + var kWidthForMaxFSM = 800;
|
| +
|
| + if (minWidth <= kWidthForMinFSM)
|
| + return kMinFSM;
|
| + if (minWidth >= kWidthForMaxFSM)
|
| + return kMaxFSM;
|
| +
|
| + // The font scale multiplier varies linearly between kMinFSM and kMaxFSM.
|
| + var ratio = (minWidth - kWidthForMinFSM) / (kWidthForMaxFSM - kWidthForMinFSM);
|
| +
|
| + return ratio * (kMaxFSM - kMinFSM) + kMinFSM;
|
| + }
|
| +
|
| + return 1;
|
| }
|
| }
|
|
|
| @@ -468,7 +451,7 @@ WebInspector.OverridesSupport.prototype = {
|
| return;
|
| }
|
|
|
| - PageAgent.setDeviceMetricsOverride(dipWidth, dipHeight, metrics.deviceScaleFactor, WebInspector.settings.emulateViewport.get(), WebInspector.settings.deviceFitWindow.get(), metrics.textAutosizing, metrics.fontScaleFactor, apiCallback.bind(this));
|
| + PageAgent.setDeviceMetricsOverride(dipWidth, dipHeight, metrics.deviceScaleFactor, WebInspector.settings.emulateViewport.get(), WebInspector.settings.deviceFitWindow.get(), metrics.textAutosizing, metrics.fontScaleFactor(), apiCallback.bind(this));
|
|
|
| /**
|
| * param {?Protocol.Error} error
|
|
|