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

Unified Diff: Source/devtools/front_end/sdk/OverridesSupport.js

Issue 319143002: DevTools: introduce WebInspector.Throttler (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: address @vsevik & @aandrey comments Created 6 years, 6 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: 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 8d46a0cde1002f1fbfdd9dbd296d0cb6e27801e9..e4829152af4c55006e45c897c018be02e4a5fcaa 100644
--- a/Source/devtools/front_end/sdk/OverridesSupport.js
+++ b/Source/devtools/front_end/sdk/OverridesSupport.js
@@ -42,6 +42,7 @@ WebInspector.OverridesSupport = function(responsiveDesignAvailable)
this._userAgent = "";
this._pageResizer = null;
this._initialized = false;
+ this._deviceMetricsThrottler = new WebInspector.Throttler(0);
WebInspector.targetManager.observeTargets(this);
this._responsiveDesignAvailable = responsiveDesignAvailable;
}
@@ -623,10 +624,9 @@ WebInspector.OverridesSupport.prototype = {
var overrideDeviceResolution = this.settings.overrideDeviceResolution.get();
var emulationEnabled = overrideDeviceResolution || this.settings.emulateViewport.get();
if (responsiveDesignAvailableAndDisabled || !emulationEnabled) {
- PageAgent.clearDeviceMetricsOverride(apiCallback.bind(this));
+ this._deviceMetricsThrottler.schedule(clearDeviceMetricsOverride.bind(this));
if (this._pageResizer && !emulationEnabled)
this._pageResizer.update(0, 0, 0);
- this.maybeHasActiveOverridesChanged();
return;
}
@@ -651,47 +651,41 @@ WebInspector.OverridesSupport.prototype = {
}
}
- // 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._deviceMetricsThrottler.schedule(setDeviceMetricsOverride.bind(this));
/**
+ * @param {!WebInspector.Throttler.FinishCallback} finishCallback
* @this {WebInspector.OverridesSupport}
*/
- function setDeviceMetricsOverride()
+ function setDeviceMetricsOverride(finishCallback)
{
- // 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, this.settings.deviceScaleFactor.get(),
this.settings.emulateViewport.get(), this._pageResizer ? false : this.settings.deviceFitWindow.get(),
this.settings.deviceTextAutosizing.get(), this._fontScaleFactor(overrideWidth || dipWidth, overrideHeight || dipHeight),
- apiCallback.bind(this));
+ apiCallback.bind(this, finishCallback));
}
- this.maybeHasActiveOverridesChanged();
+ /**
+ * @param {!WebInspector.Throttler.FinishCallback} finishCallback
+ * @this {WebInspector.OverridesSupport}
+ */
+ function clearDeviceMetricsOverride(finishCallback)
+ {
+ PageAgent.clearDeviceMetricsOverride(apiCallback.bind(this, finishCallback));
+ }
/**
+ * @param {!WebInspector.Throttler.FinishCallback} finishCallback
* @param {?Protocol.Error} error
* @this {WebInspector.OverridesSupport}
*/
- function apiCallback(error)
+ function apiCallback(finishCallback, error)
{
if (error) {
this._updateDeviceMetricsWarningMessage(WebInspector.UIString("Screen emulation is not available on this page."));
this._deviceMetricsOverrideAppliedForTest();
+ finishCallback();
return;
}
@@ -702,6 +696,8 @@ WebInspector.OverridesSupport.prototype = {
this._overrideDeviceResolution = overrideDeviceResolution;
this._emulateViewportEnabled = viewportEnabled;
this._deviceMetricsOverrideAppliedForTest();
+ this.maybeHasActiveOverridesChanged();
+ finishCallback();
}
},

Powered by Google App Engine
This is Rietveld 408576698