| Index: Source/devtools/front_end/sdk/OverridesSupport.js
|
| diff --git a/Source/devtools/front_end/sdk/OverridesSupport.js b/Source/devtools/front_end/sdk/OverridesSupport.js
|
| index 986f56a6ec1d2a5ebb4cec09fa4f18459b252493..61d0a43a7438b14ae11205db03593a7b6f7b8859 100644
|
| --- a/Source/devtools/front_end/sdk/OverridesSupport.js
|
| +++ b/Source/devtools/front_end/sdk/OverridesSupport.js
|
| @@ -491,6 +491,14 @@ WebInspector.OverridesSupport.prototype = {
|
|
|
| _onPageResizerAvailableSizeChanged: function()
|
| {
|
| + var metrics = WebInspector.OverridesSupport.DeviceMetrics.parseSetting(this.settings.deviceMetrics.get());
|
| + if (!metrics.isValid())
|
| + return;
|
| +
|
| + var available = this._pageResizer.availableDipSize();
|
| + if (available.width > metrics.width && available.height > metrics.height)
|
| + return;
|
| +
|
| this._deviceMetricsChanged();
|
| },
|
|
|
| @@ -550,21 +558,39 @@ WebInspector.OverridesSupport.prototype = {
|
| overrideWidth = 0;
|
| overrideHeight = 0;
|
| } else {
|
| - var widthScale = dipWidth ? dipWidth / Math.max(available.width, 1) : 1;
|
| - var heightScale = dipHeight ? dipHeight / Math.max(available.height, 1) : 1;
|
| - var scale = 1 / Math.max(widthScale, heightScale);
|
| - this._pageResizer.enable(dipWidth ? Math.max(Math.floor(dipWidth * scale), 1) : 0, dipHeight ? Math.max(Math.floor(dipHeight * scale), 1) : 0, scale);
|
| - if (!dipWidth)
|
| - overrideWidth = Math.round(available.width / scale);
|
| - if (!dipHeight)
|
| - overrideHeight = Math.round(available.height / scale);
|
| + this._pageResizer.enable(Math.min(dipWidth, available.width), Math.min(dipHeight, available.height), 0);
|
| }
|
| }
|
| - PageAgent.setDeviceMetricsOverride(
|
| - overrideWidth, overrideHeight, metrics.deviceScaleFactor,
|
| - this.settings.emulateViewport.get(), this._pageResizer ? true : this.settings.deviceFitWindow.get(),
|
| - metrics.textAutosizing, metrics.fontScaleFactor(),
|
| - apiCallback.bind(this));
|
| +
|
| + // Do not emulate resolution more often than 10Hz.
|
| + this._setDeviceMetricsTimers = (this._setDeviceMetricsTimers || 0) + 1;
|
| + if (overrideWidth || overrideHeight)
|
| + setTimeout(setDeviceMetricsOverride.bind(this), 100);
|
| + else
|
| + setDeviceMetricsOverride.call(this);
|
| +
|
| + /**
|
| + * @this {WebInspector.OverridesSupport}
|
| + */
|
| + function setDeviceMetricsOverride()
|
| + {
|
| + // Drop heavy intermediate commands.
|
| + this._setDeviceMetricsTimers--;
|
| + var isExpensive = overrideWidth || overrideHeight;
|
| + if (isExpensive && this._setDeviceMetricsTimers) {
|
| + var commandThreshold = 100;
|
| + var time = window.performance.now();
|
| + if (time - this._lastExpensivePageAgentCommandTime < commandThreshold)
|
| + return;
|
| + this._lastExpensivePageAgentCommandTime = time;
|
| + }
|
| +
|
| + PageAgent.setDeviceMetricsOverride(
|
| + overrideWidth, overrideHeight, metrics.deviceScaleFactor,
|
| + this.settings.emulateViewport.get(), this._pageResizer ? false : this.settings.deviceFitWindow.get(),
|
| + metrics.textAutosizing, metrics.fontScaleFactor(),
|
| + apiCallback.bind(this));
|
| + }
|
|
|
| this.maybeHasActiveOverridesChanged();
|
|
|
| @@ -656,6 +682,8 @@ WebInspector.OverridesSupport.prototype = {
|
|
|
| _showRulersChanged: function()
|
| {
|
| + if (WebInspector.experimentsSettings.responsiveDesign.isEnabled())
|
| + return;
|
| PageAgent.setShowViewportSizeOnResize(true, this.showMetricsRulers());
|
| },
|
|
|
|
|