| // 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 A simple callback mechanism for notification about module |
| * loads. Should be considered package-private to goog.module. |
| * |
| */ |
| |
| goog.provide('goog.module.ModuleLoadCallback'); |
| |
| goog.require('goog.debug.entryPointRegistry'); |
| goog.require('goog.debug.errorHandlerWeakDep'); |
| /** @suppress {extraRequire} */ |
| goog.require('goog.module'); |
| |
| |
| |
| /** |
| * Class used to encapsulate the callbacks to be called when a module loads. |
| * @param {Function} fn Callback function. |
| * @param {Object=} opt_handler Optional handler under whose scope to execute |
| * the callback. |
| * @constructor |
| * @final |
| */ |
| goog.module.ModuleLoadCallback = function(fn, opt_handler) { |
| /** |
| * Callback function. |
| * @type {Function} |
| * @private |
| */ |
| this.fn_ = fn; |
| |
| /** |
| * Optional handler under whose scope to execute the callback. |
| * @type {Object|undefined} |
| * @private |
| */ |
| this.handler_ = opt_handler; |
| }; |
| |
| |
| /** |
| * Completes the operation and calls the callback function if appropriate. |
| * @param {*} context The module context. |
| */ |
| goog.module.ModuleLoadCallback.prototype.execute = function(context) { |
| if (this.fn_) { |
| this.fn_.call(this.handler_ || null, context); |
| this.handler_ = null; |
| this.fn_ = null; |
| } |
| }; |
| |
| |
| /** |
| * Abort the callback, but not the actual module load. |
| */ |
| goog.module.ModuleLoadCallback.prototype.abort = function() { |
| this.fn_ = null; |
| this.handler_ = null; |
| }; |
| |
| |
| // Register the browser event handler as an entry point, so that |
| // it can be monitored for exception handling, etc. |
| goog.debug.entryPointRegistry.register( |
| /** |
| * @param {function(!Function): !Function} transformer The transforming |
| * function. |
| */ |
| function(transformer) { |
| goog.module.ModuleLoadCallback.prototype.execute = |
| transformer(goog.module.ModuleLoadCallback.prototype.execute); |
| }); |