blob: 5f49e8cc4f27d6ad6a227d56b320be7a5c1c0e24 [file] [log] [blame]
// 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
* @extends {WebInspector.Widget}
*/
WebInspector.ThrottledWidget = function()
{
WebInspector.Widget.call(this);
this._updateThrottler = new WebInspector.Throttler(100);
this._updateWhenVisible = false;
}
WebInspector.ThrottledWidget.prototype = {
/**
* @protected
* @return {!Promise.<?>}
*/
doUpdate: function()
{
return Promise.resolve();
},
update: function()
{
this._updateWhenVisible = !this.isShowing();
if (this._updateWhenVisible)
return;
this._updateThrottler.schedule(innerUpdate.bind(this));
/**
* @this {WebInspector.ThrottledWidget}
* @return {!Promise.<?>}
*/
function innerUpdate()
{
if (this.isShowing()) {
return this.doUpdate();
} else {
this._updateWhenVisible = true;
return Promise.resolve();
}
}
},
/**
* @override
*/
wasShown: function()
{
WebInspector.Widget.prototype.wasShown.call(this);
if (this._updateWhenVisible)
this.update();
},
__proto__: WebInspector.Widget.prototype
}