OLD | NEW |
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, 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 register_element_proxy_test; | 5 library register_element_proxy_test; |
6 | 6 |
7 import 'dart:async'; | 7 import 'dart:async'; |
8 import 'dart:html'; | 8 import 'dart:html'; |
9 import 'dart:js' as js; | 9 import 'dart:js' as js; |
10 import 'package:unittest/html_config.dart'; | 10 import 'package:unittest/html_config.dart'; |
(...skipping 15 matching lines...) Expand all Loading... |
26 | 26 |
27 bool get fooCreated => _proxy['fooCreated']; | 27 bool get fooCreated => _proxy['fooCreated']; |
28 } | 28 } |
29 | 29 |
30 main() { | 30 main() { |
31 useHtmlConfiguration(); | 31 useHtmlConfiguration(); |
32 | 32 |
33 var registered = false; | 33 var registered = false; |
34 var upgrader; | 34 var upgrader; |
35 setUp(() => customElementsReady.then((_) { | 35 setUp(() => customElementsReady.then((_) { |
36 if (!registered) { | 36 if (!registered) { |
37 registered = true; | 37 registered = true; |
38 upgrader = document.createElementUpgrader(FooElement); | 38 upgrader = document.createElementUpgrader(FooElement); |
39 js.context['upgradeListener'] = (e) { | 39 js.context['upgradeListener'] = (e) { |
40 upgrader.upgrade(e); | 40 upgrader.upgrade(e); |
41 }; | 41 }; |
42 | 42 |
43 document.registerElement('custom-element', CustomElement); | 43 document.registerElement('custom-element', CustomElement); |
44 } | 44 } |
45 })); | 45 })); |
46 | 46 |
47 test('created gets proxied', () { | 47 test('created gets proxied', () { |
48 var element = document.createElement(FooElement.tag); | 48 var element = document.createElement(FooElement.tag); |
49 expect(element is FooElement, isTrue); | 49 expect(element is FooElement, isTrue); |
50 expect(element.initializedField, 666); | 50 expect(element.initializedField, 666); |
51 expect(element.text, 'constructed'); | 51 expect(element.text, 'constructed'); |
52 | 52 |
53 js.context.callMethod('validateIsFoo', [element]); | 53 js.context.callMethod('validateIsFoo', [element]); |
54 | 54 |
55 expect(element.doSomething(), 'didSomething'); | 55 expect(element.doSomething(), 'didSomething'); |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
92 }); | 92 }); |
93 | 93 |
94 test('cannot upgrade custom elements', () { | 94 test('cannot upgrade custom elements', () { |
95 var custom = new CustomElement(); | 95 var custom = new CustomElement(); |
96 expect(() { | 96 expect(() { |
97 upgrader.upgrade(custom); | 97 upgrader.upgrade(custom); |
98 }, throws); | 98 }, throws); |
99 }); | 99 }); |
100 | 100 |
101 test('can upgrade with extendsTag', () { | 101 test('can upgrade with extendsTag', () { |
102 var upgrader = | 102 var upgrader = document.createElementUpgrader(CustomDiv, extendsTag: 'div'); |
103 document.createElementUpgrader(CustomDiv, extendsTag: 'div'); | |
104 var div = new DivElement(); | 103 var div = new DivElement(); |
105 var customDiv = upgrader.upgrade(div); | 104 var customDiv = upgrader.upgrade(div); |
106 expect(customDiv is CustomDiv, isTrue); | 105 expect(customDiv is CustomDiv, isTrue); |
107 | 106 |
108 var htmlElement = document.createElement('not-registered'); | 107 var htmlElement = document.createElement('not-registered'); |
109 expect(() { | 108 expect(() { |
110 upgrader.upgrade(htmlElement); | 109 upgrader.upgrade(htmlElement); |
111 }, throws); | 110 }, throws); |
112 }); | 111 }); |
113 | 112 |
114 test('cannot create upgrader for built-in types', () { | 113 test('cannot create upgrader for built-in types', () { |
115 expect(() { | 114 expect(() { |
116 document.createElementUpgrader(HtmlElement); | 115 document.createElementUpgrader(HtmlElement); |
117 }, throws); | 116 }, throws); |
118 }); | 117 }); |
119 } | 118 } |
120 | 119 |
121 class HtmlElementInterface implements HtmlElement { | 120 class HtmlElementInterface implements HtmlElement { |
122 HtmlElementInterface.created(); | 121 HtmlElementInterface.created(); |
123 } | 122 } |
124 | 123 |
125 class CustomDiv extends DivElement { | 124 class CustomDiv extends DivElement { |
126 CustomDiv.created() : super.created(); | 125 CustomDiv.created() : super.created(); |
127 } | 126 } |
128 | 127 |
129 class CustomElement extends HtmlElement { | 128 class CustomElement extends HtmlElement { |
130 factory CustomElement() => document.createElement('custom-element'); | 129 factory CustomElement() => document.createElement('custom-element'); |
131 CustomElement.created() : super.created(); | 130 CustomElement.created() : super.created(); |
132 } | 131 } |
OLD | NEW |