| 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 | 8 |
| 9 /** | 9 /** |
| 10 * Verifies that [actual] has the same graph structure as [expected]. | 10 * Verifies that [actual] has the same graph structure as [expected]. |
| (...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 156 reason: '$path attribute [$key] values differ'); | 156 reason: '$path attribute [$key] values differ'); |
| 157 } | 157 } |
| 158 } | 158 } |
| 159 for (var i = 0; i < a.nodes.length; ++i) { | 159 for (var i = 0; i < a.nodes.length; ++i) { |
| 160 validateNodeTree(a.nodes[i], b.nodes[i], '$path[$i].'); | 160 validateNodeTree(a.nodes[i], b.nodes[i], '$path[$i].'); |
| 161 } | 161 } |
| 162 } | 162 } |
| 163 | 163 |
| 164 Future loadCustomElementPolyfill() { | 164 Future loadCustomElementPolyfill() { |
| 165 if (!document.supportsRegister) { | 165 if (!document.supportsRegister) { |
| 166 if (!MutationObserver.supported) { | |
| 167 var script = new ScriptElement() | |
| 168 ..src = '/packages/mutation_observer/mutation_observer.js'; | |
| 169 document.head.append(script); | |
| 170 } | |
| 171 var script = new ScriptElement() | 166 var script = new ScriptElement() |
| 172 ..src = '/packages/custom_element/custom-elements.debug.js'; | 167 ..src = '/packages/custom_element/custom-elements.debug.js'; |
| 173 document.head.append(script); | 168 document.head.append(script); |
| 174 return document.on['WebComponentsReady'].first; | 169 return document.on['WebComponentsReady'].first; |
| 175 } | 170 } |
| 176 return new Future.value(); | 171 return new Future.value(); |
| 177 } | 172 } |
| 178 | 173 |
| 179 Future loadPolyfills() { | 174 Future loadPolyfills() { |
| 180 return loadCustomElementPolyfill(); | 175 return loadCustomElementPolyfill(); |
| 181 } | 176 } |
| 182 | 177 |
| 183 /** | 178 /** |
| 184 * Upgrade all custom elements in the subtree which have not been upgraded. | 179 * Upgrade all custom elements in the subtree which have not been upgraded. |
| 185 * | 180 * |
| 186 * This is needed to cover timing scenarios which the custom element polyfill | 181 * This is needed to cover timing scenarios which the custom element polyfill |
| 187 * does not cover. | 182 * does not cover. |
| 188 */ | 183 */ |
| 189 void upgradeCustomElements(Node node) { | 184 void upgradeCustomElements(Node node) { |
| 190 if (js.context.hasProperty('CustomElements') && | 185 if (js.context.hasProperty('CustomElements') && |
| 191 js.context['CustomElements'].hasProperty('upgradeAll')) { | 186 js.context['CustomElements'].hasProperty('upgradeAll')) { |
| 192 js.context['CustomElements'].callMethod('upgradeAll', [node]); | 187 js.context['CustomElements'].callMethod('upgradeAll', [node]); |
| 193 } | 188 } |
| 194 } | 189 } |
| OLD | NEW |