OLD | NEW |
1 library TestUtils; | 1 library TestUtils; |
2 | 2 |
3 import 'dart:async'; | 3 import 'dart:async'; |
4 import 'dart:html'; | 4 import 'dart:html'; |
5 import 'dart:js' as js; | 5 import 'dart:js' as js; |
6 import 'dart:typed_data'; | 6 import 'dart:typed_data'; |
7 import 'package:unittest/unittest.dart'; | 7 import 'package:unittest/unittest.dart'; |
| 8 export 'package:web_components/polyfill.dart'; |
8 | 9 |
9 /** | 10 /** |
10 * Verifies that [actual] has the same graph structure as [expected]. | 11 * Verifies that [actual] has the same graph structure as [expected]. |
11 * Detects cycles and DAG structure in Maps and Lists. | 12 * Detects cycles and DAG structure in Maps and Lists. |
12 */ | 13 */ |
13 verifyGraph(expected, actual) { | 14 verifyGraph(expected, actual) { |
14 var eItems = []; | 15 var eItems = []; |
15 var aItems = []; | 16 var aItems = []; |
16 | 17 |
17 message(path, reason) => path == '' | 18 message(path, reason) => path == '' |
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
154 for (var key in aE.attributes.keys) { | 155 for (var key in aE.attributes.keys) { |
155 expect(aE.attributes[key], bE.attributes[key], | 156 expect(aE.attributes[key], bE.attributes[key], |
156 reason: '$path attribute [$key] values differ'); | 157 reason: '$path attribute [$key] values differ'); |
157 } | 158 } |
158 } | 159 } |
159 for (var i = 0; i < a.nodes.length; ++i) { | 160 for (var i = 0; i < a.nodes.length; ++i) { |
160 validateNodeTree(a.nodes[i], b.nodes[i], '$path[$i].'); | 161 validateNodeTree(a.nodes[i], b.nodes[i], '$path[$i].'); |
161 } | 162 } |
162 } | 163 } |
163 | 164 |
164 Future loadCustomElementPolyfill() { | |
165 if (!document.supportsRegister) { | |
166 var script = new ScriptElement() | |
167 ..src = '/packages/custom_element/custom-elements.debug.js'; | |
168 document.head.append(script); | |
169 return document.on['WebComponentsReady'].first; | |
170 } | |
171 return new Future.value(); | |
172 } | |
173 | |
174 Future loadPolyfills() { | |
175 return loadCustomElementPolyfill(); | |
176 } | |
177 | |
178 /** | 165 /** |
179 * Upgrade all custom elements in the subtree which have not been upgraded. | 166 * Upgrade all custom elements in the subtree which have not been upgraded. |
180 * | 167 * |
181 * This is needed to cover timing scenarios which the custom element polyfill | 168 * This is needed to cover timing scenarios which the custom element polyfill |
182 * does not cover. | 169 * does not cover. |
183 */ | 170 */ |
184 void upgradeCustomElements(Node node) { | 171 void upgradeCustomElements(Node node) { |
185 if (js.context.hasProperty('CustomElements') && | 172 if (js.context.hasProperty('CustomElements') && |
186 js.context['CustomElements'].hasProperty('upgradeAll')) { | 173 js.context['CustomElements'].hasProperty('upgradeAll')) { |
187 js.context['CustomElements'].callMethod('upgradeAll', [node]); | 174 js.context['CustomElements'].callMethod('upgradeAll', [node]); |
188 } | 175 } |
189 } | 176 } |
OLD | NEW |