| OLD | NEW |
| 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 library custom_elements_test; | 5 library custom_elements_test; |
| 6 import 'dart:async'; | 6 import 'dart:async'; |
| 7 import 'dart:html'; | 7 import 'dart:html'; |
| 8 import 'dart:js' as js; |
| 8 import 'package:unittest/html_individual_config.dart'; | 9 import 'package:unittest/html_individual_config.dart'; |
| 9 import 'package:unittest/unittest.dart'; | 10 import 'package:unittest/unittest.dart'; |
| 10 import 'utils.dart'; | 11 import 'utils.dart'; |
| 11 | 12 |
| 12 class CustomMixin { | 13 class CustomMixin { |
| 13 var mixinMethodCalled; | 14 var mixinMethodCalled; |
| 14 | 15 |
| 15 void mixinMethod() { | 16 void mixinMethod() { |
| 16 mixinMethodCalled = true; | 17 mixinMethodCalled = true; |
| 17 } | 18 } |
| (...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 111 var preElement = dom.children[0]; | 112 var preElement = dom.children[0]; |
| 112 expect(preElement, isNotNull); | 113 expect(preElement, isNotNull); |
| 113 expect(preElement is HtmlElement, isTrue); | 114 expect(preElement is HtmlElement, isTrue); |
| 114 expect(preElement is CustomType, isFalse); | 115 expect(preElement is CustomType, isFalse); |
| 115 var firedOnPre = false; | 116 var firedOnPre = false; |
| 116 preElement.onFocus.listen((_) { | 117 preElement.onFocus.listen((_) { |
| 117 firedOnPre = true; | 118 firedOnPre = true; |
| 118 }); | 119 }); |
| 119 | 120 |
| 120 document.register(tag, CustomType); | 121 document.register(tag, CustomType); |
| 121 Platform.upgradeCustomElements(dom); | 122 customElementsTakeRecords(); |
| 122 | 123 |
| 123 var postElement = dom.children[0]; | 124 var postElement = dom.children[0]; |
| 124 expect(postElement, isNotNull); | 125 expect(postElement, isNotNull); |
| 125 expect(postElement is CustomType, isTrue); | 126 expect(postElement is CustomType, isTrue); |
| 126 expect(postElement.createdCalled, isTrue); | 127 expect(postElement.createdCalled, isTrue); |
| 127 | 128 |
| 128 // Element from first query remains an UnknownElement. | 129 // Element from first query remains an UnknownElement. |
| 129 expect(preElement is HtmlElement, isTrue); | 130 expect(preElement is HtmlElement, isTrue); |
| 130 expect(preElement.parent, dom); | 131 expect(preElement.parent, dom); |
| 131 expect(dom.children.length, 1); | 132 expect(dom.children.length, 1); |
| 132 | 133 |
| 133 var firedOnPost = false; | 134 var firedOnPost = false; |
| 134 postElement.onFocus.listen((_) { | 135 postElement.onFocus.listen((_) { |
| 135 firedOnPost = true; | 136 firedOnPost = true; |
| 136 }); | 137 }); |
| 137 // Event handlers persist on old and new element. | 138 // Event handlers persist on old and new element. |
| 138 postElement.dispatchEvent(new Event('focus')); | 139 postElement.dispatchEvent(new Event('focus')); |
| 139 expect(firedOnPre, isTrue); | 140 expect(firedOnPre, isTrue); |
| 140 expect(firedOnPost, isTrue); | 141 expect(firedOnPost, isTrue); |
| 141 }); | 142 }); |
| 142 });*/ | 143 });*/ |
| 143 | 144 |
| 144 group('innerHtml', () { | 145 group('innerHtml', () { |
| 145 test('query', () { | 146 test('query', () { |
| 146 var tag = nextTag; | 147 var tag = nextTag; |
| 147 document.register(tag, CustomType); | 148 document.register(tag, CustomType); |
| 148 var element = new DivElement(); | 149 var element = new DivElement(); |
| 149 element.setInnerHtml('<$tag></$tag>', | 150 element.setInnerHtml('<$tag></$tag>', |
| 150 treeSanitizer: new NullTreeSanitizer()); | 151 treeSanitizer: new NullTreeSanitizer()); |
| 151 » Platform.upgradeCustomElements(element); | 152 customElementsTakeRecords(); |
| 152 document.body.nodes.add(element); | 153 document.body.nodes.add(element); |
| 153 var queried = query(tag); | 154 var queried = query(tag); |
| 154 | 155 |
| 155 expect(queried, isNotNull); | 156 expect(queried, isNotNull); |
| 156 expect(queried is CustomType, isTrue); | 157 expect(queried is CustomType, isTrue); |
| 157 expect(queried.createdCalled, isTrue); | 158 expect(queried.createdCalled, isTrue); |
| 158 }); | 159 }); |
| 159 | 160 |
| 160 test('query id', () { | 161 test('query id', () { |
| 161 var tag = nextTag; | 162 var tag = nextTag; |
| 162 document.register(tag, CustomType); | 163 document.register(tag, CustomType); |
| 163 var element = new DivElement(); | 164 var element = new DivElement(); |
| 164 element.setInnerHtml('<$tag id="someid"></$tag>', | 165 element.setInnerHtml('<$tag id="someid"></$tag>', |
| 165 treeSanitizer: new NullTreeSanitizer()); | 166 treeSanitizer: new NullTreeSanitizer()); |
| 166 » Platform.upgradeCustomElements(element); | 167 customElementsTakeRecords(); |
| 167 document.body.nodes.add(element); | 168 document.body.nodes.add(element); |
| 168 var queried = query('#someid'); | 169 var queried = query('#someid'); |
| 169 | 170 |
| 170 expect(queried, isNotNull); | 171 expect(queried, isNotNull); |
| 171 expect(queried is CustomType, isTrue); | 172 expect(queried is CustomType, isTrue); |
| 172 expect(queried.id, "someid"); | 173 expect(queried.id, "someid"); |
| 173 }); | 174 }); |
| 174 }); | 175 }); |
| 175 | 176 |
| 176 group('lifecycle', () { | 177 group('lifecycle', () { |
| 177 test('created', () { | 178 test('created', () { |
| 178 int oldCount = customCreatedCount; | 179 int oldCount = customCreatedCount; |
| 179 var tag = nextTag; | 180 var tag = nextTag; |
| 180 document.register(tag, CustomType); | 181 document.register(tag, CustomType); |
| 181 var element = new DivElement(); | 182 var element = new DivElement(); |
| 182 element.setInnerHtml('<$tag></$tag>', | 183 element.setInnerHtml('<$tag></$tag>', |
| 183 treeSanitizer: new NullTreeSanitizer()); | 184 treeSanitizer: new NullTreeSanitizer()); |
| 184 Platform.upgradeCustomElements(element); | 185 customElementsTakeRecords(); |
| 185 document.body.nodes.add(element); | 186 document.body.nodes.add(element); |
| 186 expect(customCreatedCount, oldCount + 1); | 187 expect(customCreatedCount, oldCount + 1); |
| 187 }); | 188 }); |
| 188 }); | 189 }); |
| 189 | 190 |
| 190 group('mixins', () { | 191 group('mixins', () { |
| 191 test('can invoke mixin methods', () { | 192 test('can invoke mixin methods', () { |
| 192 var tag = nextTag; | 193 var tag = nextTag; |
| 193 document.register(tag, CustomType); | 194 document.register(tag, CustomType); |
| 194 | 195 |
| 195 var element = new Element.tag(tag); | 196 var element = new Element.tag(tag); |
| 196 element.invokeMixinMethod(); | 197 element.invokeMixinMethod(); |
| 197 expect(element.mixinMethodCalled, isTrue); | 198 expect(element.mixinMethodCalled, isTrue); |
| 198 }); | 199 }); |
| 199 }); | 200 }); |
| 200 } | 201 } |
| OLD | NEW |