| Index: third_party/WebKit/Source/devtools/front_end/common/Throttler.js
|
| diff --git a/third_party/WebKit/Source/devtools/front_end/common/Throttler.js b/third_party/WebKit/Source/devtools/front_end/common/Throttler.js
|
| index a5775d6e160740229c0d302711cb623120b2149a..978278829dea6c9642502a577653240ce9417c66 100644
|
| --- a/third_party/WebKit/Source/devtools/front_end/common/Throttler.js
|
| +++ b/third_party/WebKit/Source/devtools/front_end/common/Throttler.js
|
| @@ -1,108 +1,97 @@
|
| // Copyright 2014 The Chromium Authors. All rights reserved.
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
| -
|
| /**
|
| - * @constructor
|
| - * @param {number} timeout
|
| + * @unrestricted
|
| */
|
| -WebInspector.Throttler = function(timeout)
|
| -{
|
| +WebInspector.Throttler = class {
|
| + /**
|
| + * @param {number} timeout
|
| + */
|
| + constructor(timeout) {
|
| this._timeout = timeout;
|
| this._isRunningProcess = false;
|
| this._asSoonAsPossible = false;
|
| /** @type {?function():(!Promise.<?>)} */
|
| this._process = null;
|
| this._lastCompleteTime = 0;
|
| -};
|
| + }
|
|
|
| -WebInspector.Throttler.prototype = {
|
| - _processCompleted: function()
|
| - {
|
| - this._lastCompleteTime = window.performance.now();
|
| - this._isRunningProcess = false;
|
| - if (this._process)
|
| - this._innerSchedule(false);
|
| - this._processCompletedForTests();
|
| - },
|
| + _processCompleted() {
|
| + this._lastCompleteTime = window.performance.now();
|
| + this._isRunningProcess = false;
|
| + if (this._process)
|
| + this._innerSchedule(false);
|
| + this._processCompletedForTests();
|
| + }
|
|
|
| - _processCompletedForTests: function()
|
| - {
|
| - // For sniffing in tests.
|
| - },
|
| + _processCompletedForTests() {
|
| + // For sniffing in tests.
|
| + }
|
|
|
| - _onTimeout: function()
|
| - {
|
| - delete this._processTimeout;
|
| - this._asSoonAsPossible = false;
|
| - this._isRunningProcess = true;
|
| + _onTimeout() {
|
| + delete this._processTimeout;
|
| + this._asSoonAsPossible = false;
|
| + this._isRunningProcess = true;
|
|
|
| - Promise.resolve()
|
| - .then(this._process)
|
| - .catch(console.error.bind(console))
|
| - .then(this._processCompleted.bind(this));
|
| - this._process = null;
|
| - },
|
| + Promise.resolve().then(this._process).catch(console.error.bind(console)).then(this._processCompleted.bind(this));
|
| + this._process = null;
|
| + }
|
|
|
| - /**
|
| - * @param {function():(!Promise.<?>)} process
|
| - * @param {boolean=} asSoonAsPossible
|
| - */
|
| - schedule: function(process, asSoonAsPossible)
|
| - {
|
| - // Deliberately skip previous process.
|
| - this._process = process;
|
| + /**
|
| + * @param {function():(!Promise.<?>)} process
|
| + * @param {boolean=} asSoonAsPossible
|
| + */
|
| + schedule(process, asSoonAsPossible) {
|
| + // Deliberately skip previous process.
|
| + this._process = process;
|
|
|
| - // Run the first scheduled task instantly.
|
| - var hasScheduledTasks = !!this._processTimeout || this._isRunningProcess;
|
| - var okToFire = window.performance.now() - this._lastCompleteTime > this._timeout;
|
| - asSoonAsPossible = !!asSoonAsPossible || (!hasScheduledTasks && okToFire);
|
| + // Run the first scheduled task instantly.
|
| + var hasScheduledTasks = !!this._processTimeout || this._isRunningProcess;
|
| + var okToFire = window.performance.now() - this._lastCompleteTime > this._timeout;
|
| + asSoonAsPossible = !!asSoonAsPossible || (!hasScheduledTasks && okToFire);
|
|
|
| - var forceTimerUpdate = asSoonAsPossible && !this._asSoonAsPossible;
|
| - this._asSoonAsPossible = this._asSoonAsPossible || asSoonAsPossible;
|
| + var forceTimerUpdate = asSoonAsPossible && !this._asSoonAsPossible;
|
| + this._asSoonAsPossible = this._asSoonAsPossible || asSoonAsPossible;
|
|
|
| - this._innerSchedule(forceTimerUpdate);
|
| - },
|
| + this._innerSchedule(forceTimerUpdate);
|
| + }
|
|
|
| - flush: function()
|
| - {
|
| - if (this._process)
|
| - this._onTimeout();
|
| - },
|
| + flush() {
|
| + if (this._process)
|
| + this._onTimeout();
|
| + }
|
|
|
| - /**
|
| - * @param {boolean} forceTimerUpdate
|
| - */
|
| - _innerSchedule: function(forceTimerUpdate)
|
| - {
|
| - if (this._isRunningProcess)
|
| - return;
|
| - if (this._processTimeout && !forceTimerUpdate)
|
| - return;
|
| - if (this._processTimeout)
|
| - this._clearTimeout(this._processTimeout);
|
| + /**
|
| + * @param {boolean} forceTimerUpdate
|
| + */
|
| + _innerSchedule(forceTimerUpdate) {
|
| + if (this._isRunningProcess)
|
| + return;
|
| + if (this._processTimeout && !forceTimerUpdate)
|
| + return;
|
| + if (this._processTimeout)
|
| + this._clearTimeout(this._processTimeout);
|
|
|
| - var timeout = this._asSoonAsPossible ? 0 : this._timeout;
|
| - this._processTimeout = this._setTimeout(this._onTimeout.bind(this), timeout);
|
| - },
|
| + var timeout = this._asSoonAsPossible ? 0 : this._timeout;
|
| + this._processTimeout = this._setTimeout(this._onTimeout.bind(this), timeout);
|
| + }
|
|
|
| - /**
|
| - * @param {number} timeoutId
|
| - */
|
| - _clearTimeout: function(timeoutId)
|
| - {
|
| - clearTimeout(timeoutId);
|
| - },
|
| + /**
|
| + * @param {number} timeoutId
|
| + */
|
| + _clearTimeout(timeoutId) {
|
| + clearTimeout(timeoutId);
|
| + }
|
|
|
| - /**
|
| - * @param {function()} operation
|
| - * @param {number} timeout
|
| - * @return {number}
|
| - */
|
| - _setTimeout: function(operation, timeout)
|
| - {
|
| - return setTimeout(operation, timeout);
|
| - }
|
| + /**
|
| + * @param {function()} operation
|
| + * @param {number} timeout
|
| + * @return {number}
|
| + */
|
| + _setTimeout(operation, timeout) {
|
| + return setTimeout(operation, timeout);
|
| + }
|
| };
|
|
|
| /** @typedef {function(!Error=)} */
|
|
|