/** * @license * Copyright Google Inc. All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ import { setTestabilityGetter } from '@angular/core'; import { getDOM } from '../dom/dom_adapter'; import { global, isPresent } from '../facade/lang'; export var BrowserGetTestability = (function () { function BrowserGetTestability() { } /** * @return {?} */ BrowserGetTestability.init = function () { setTestabilityGetter(new BrowserGetTestability()); }; /** * @param {?} registry * @return {?} */ BrowserGetTestability.prototype.addToWindow = function (registry) { global.getAngularTestability = function (elem, findInAncestors) { if (findInAncestors === void 0) { findInAncestors = true; } var /** @type {?} */ testability = registry.findTestabilityInTree(elem, findInAncestors); if (testability == null) { throw new Error('Could not find testability for element.'); } return testability; }; global.getAllAngularTestabilities = function () { return registry.getAllTestabilities(); }; global.getAllAngularRootElements = function () { return registry.getAllRootElements(); }; var /** @type {?} */ whenAllStable = function (callback /** TODO #9100 */) { var /** @type {?} */ testabilities = global.getAllAngularTestabilities(); var /** @type {?} */ count = testabilities.length; var /** @type {?} */ didWork = false; var /** @type {?} */ decrement = function (didWork_ /** TODO #9100 */) { didWork = didWork || didWork_; count--; if (count == 0) { callback(didWork); } }; testabilities.forEach(function (testability /** TODO #9100 */) { testability.whenStable(decrement); }); }; if (!global['frameworkStabilizers']) { global['frameworkStabilizers'] = []; } global['frameworkStabilizers'].push(whenAllStable); }; /** * @param {?} registry * @param {?} elem * @param {?} findInAncestors * @return {?} */ BrowserGetTestability.prototype.findTestabilityInTree = function (registry, elem, findInAncestors) { if (elem == null) { return null; } var /** @type {?} */ t = registry.getTestability(elem); if (isPresent(t)) { return t; } else if (!findInAncestors) { return null; } if (getDOM().isShadowRoot(elem)) { return this.findTestabilityInTree(registry, getDOM().getHost(elem), true); } return this.findTestabilityInTree(registry, getDOM().parentElement(elem), true); }; return BrowserGetTestability; }()); //# sourceMappingURL=testability.js.map