@@ -10,17 +10,8 @@ import 'dart:js' as js;
1010// Proxies a Dart function that accepts up to 10 parameters.
1111js.JsFunction _jsFunction (Function fn) {
1212 const Object X = __varargSentinel;
13- return new js.JsFunction .withThis ((thisArg,
14- [o1 = X ,
15- o2 = X ,
16- o3 = X ,
17- o4 = X ,
18- o5 = X ,
19- o6 = X ,
20- o7 = X ,
21- o8 = X ,
22- o9 = X ,
23- o10 = X ]) {
13+ return new js.JsFunction .withThis ((thisArg, [o1 = X , o2 = X , o3 = X , o4 = X ,
14+ o5 = X , o6 = X , o7 = X , o8 = X , o9 = X , o10 = X ]) {
2415 return __invokeFn (fn, o1, o2, o3, o4, o5, o6, o7, o8, o9, o10);
2516 });
2617}
@@ -91,19 +82,46 @@ class PublicTestability implements _JsObjectProxyable {
9182
9283class GetTestability {
9384 static addToWindow (TestabilityRegistry registry) {
94- js.context['getAngularTestability' ] = _jsify ((Element elem,
95- [bool findInAncestors = true ]) {
96- Testability testability = registry.findTestabilityInTree (elem, findInAncestors);
97- if (testability == null ) {
85+ var jsRegistry = js.context['ngTestabilityRegistries' ];
86+ if (jsRegistry == null ) {
87+ js.context['ngTestabilityRegistries' ] = jsRegistry = new js.JsArray ();
88+ js.context['getAngularTestability' ] = _jsify ((Element elem,
89+ [bool findInAncestors = true ]) {
90+ var registry = js.context['ngTestabilityRegistries' ];
91+ for (int i = 0 ; i < registry.length; i++ ) {
92+ var result = registry[i].callMethod (
93+ 'getAngularTestability' , [elem, findInAncestors]);
94+ if (result != null ) return result;
95+ }
9896 throw 'Could not find testability for element.' ;
99- }
97+ });
98+ js.context['getAllAngularTestabilities' ] = _jsify (() {
99+ var registry = js.context['ngTestabilityRegistries' ];
100+ var result = [];
101+ for (int i = 0 ; i < registry.length; i++ ) {
102+ var testabilities =
103+ registry[i].callMethod ('getAllAngularTestabilities' );
104+ if (testabilities != null ) result.addAll (testabilities);
105+ }
106+ return _jsify (result);
107+ });
108+ }
109+ jsRegistry.add (_createRegistry (registry));
110+ }
111+
112+ static js.JsObject _createRegistry (TestabilityRegistry registry) {
113+ var object = new js.JsObject (js.context['Object' ]);
114+ object['getAngularTestability' ] = _jsify ((Element elem,
115+ bool findInAncestors) {
116+ var testability = registry.findTestabilityInTree (elem, findInAncestors);
100117 return _jsify (new PublicTestability (testability));
101118 });
102- js.context ['getAllAngularTestabilities' ] = _jsify (() {
103- List < Testability > testabilities = registry. getAllTestabilities ();
104- var publicTestabilities = testabilities
119+ object ['getAllAngularTestabilities' ] = _jsify (() {
120+ var publicTestabilities = registry
121+ . getAllTestabilities ()
105122 .map ((testability) => new PublicTestability (testability));
106123 return _jsify (publicTestabilities);
107124 });
125+ return object;
108126 }
109127}
0 commit comments