diff options
Diffstat (limited to 'contexts/data/lib/closure-library/closure/goog/net/multiiframeloadmonitor.js')
-rw-r--r-- | contexts/data/lib/closure-library/closure/goog/net/multiiframeloadmonitor.js | 116 |
1 files changed, 0 insertions, 116 deletions
diff --git a/contexts/data/lib/closure-library/closure/goog/net/multiiframeloadmonitor.js b/contexts/data/lib/closure-library/closure/goog/net/multiiframeloadmonitor.js deleted file mode 100644 index 721f5cc..0000000 --- a/contexts/data/lib/closure-library/closure/goog/net/multiiframeloadmonitor.js +++ /dev/null @@ -1,116 +0,0 @@ -// Copyright 2008 The Closure Library Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS-IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -/** - * @fileoverview Class that can be used to determine when multiple iframes have - * been loaded. Refactored from static APIs in IframeLoadMonitor. - */ -goog.provide('goog.net.MultiIframeLoadMonitor'); - -goog.require('goog.net.IframeLoadMonitor'); - - - -/** - * Provides a wrapper around IframeLoadMonitor, to allow the caller to wait for - * multiple iframes to load. - * - * @param {Array.<HTMLIFrameElement>} iframes Array of iframe elements to - * wait until they are loaded. - * @param {function():void} callback The callback to invoke once the frames have - * loaded. - * @param {boolean=} opt_hasContent true if the monitor should wait until the - * iframes have content (body.firstChild != null). - * @constructor - */ -goog.net.MultiIframeLoadMonitor = function(iframes, callback, opt_hasContent) { - /** - * Array of IframeLoadMonitors we use to track the loaded status of any - * currently unloaded iframes. - * @type {Array.<goog.net.IframeLoadMonitor>} - * @private - */ - this.pendingIframeLoadMonitors_ = []; - - /** - * Callback which is invoked when all of the iframes are loaded. - * @type {function():void} - * @private - */ - this.callback_ = callback; - - for (var i = 0; i < iframes.length; i++) { - var iframeLoadMonitor = new goog.net.IframeLoadMonitor( - iframes[i], opt_hasContent); - if (iframeLoadMonitor.isLoaded()) { - // Already loaded - don't need to wait - iframeLoadMonitor.dispose(); - } else { - // Iframe isn't loaded yet - register to be notified when it is - // loaded, and track this monitor so we can dispose later as - // required. - this.pendingIframeLoadMonitors_.push(iframeLoadMonitor); - goog.events.listen( - iframeLoadMonitor, goog.net.IframeLoadMonitor.LOAD_EVENT, this); - } - } - if (!this.pendingIframeLoadMonitors_.length) { - // All frames were already loaded - this.callback_(); - } -}; - - -/** - * Handles a pending iframe load monitor load event. - * @param {goog.events.Event} e The goog.net.IframeLoadMonitor.LOAD_EVENT event. - */ -goog.net.MultiIframeLoadMonitor.prototype.handleEvent = function(e) { - var iframeLoadMonitor = e.target; - // iframeLoadMonitor is now loaded, remove it from the array of - // pending iframe load monitors. - for (var i = 0; i < this.pendingIframeLoadMonitors_.length; i++) { - if (this.pendingIframeLoadMonitors_[i] == iframeLoadMonitor) { - this.pendingIframeLoadMonitors_.splice(i, 1); - break; - } - } - - // Disposes of the iframe load monitor. We created this iframe load monitor - // and installed the single listener on it, so it is safe to dispose it - // in the middle of this event handler. - iframeLoadMonitor.dispose(); - - // If there are no more pending iframe load monitors, all the iframes - // have loaded, and so we invoke the callback. - if (!this.pendingIframeLoadMonitors_.length) { - this.callback_(); - } -}; - - -/** - * Stops monitoring the iframes, cleaning up any associated resources. In - * general, the object cleans up its own resources before invoking the - * callback, so this API should only be used if the caller wants to stop the - * monitoring before the iframes are loaded (for example, if the caller is - * implementing a timeout). - */ -goog.net.MultiIframeLoadMonitor.prototype.stopMonitoring = function() { - for (var i = 0; i < this.pendingIframeLoadMonitors_.length; i++) { - this.pendingIframeLoadMonitors_[i].dispose(); - } - this.pendingIframeLoadMonitors_.length = 0; -}; - |