goog.provide('webfont.StyleSheetWaiter');

/**

* A utility class for handling callback from DomHelper.loadStylesheet().
*
* @constructor
*/

webfont.StyleSheetWaiter = function() {

/** @private @type {number} */
this.waitingCount_ = 0;
/** @private @type {Function} */
this.onReady_ = null;

};

goog.scope(function () {

var StyleSheetWaiter = webfont.StyleSheetWaiter;

/**
 * @return {function(Error)}
 */
StyleSheetWaiter.prototype.startWaitingLoad = function() {
  var self = this;
  self.waitingCount_++;
  return function(error) {
    self.waitingCount_--;
    self.fireIfReady_();
  };
};

/**
 * @param {Function} fn
 */
StyleSheetWaiter.prototype.waitWhileNeededThen = function(fn) {
  this.onReady_ = fn;
  this.fireIfReady_();
};

/**
 * @private
 */
StyleSheetWaiter.prototype.fireIfReady_ = function() {
  var isReady = 0 == this.waitingCount_;
  if (isReady && this.onReady_) {
    this.onReady_();
    this.onReady_ = null;
  }
};

});