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 tests.html.mirrors_test; | 5 library tests.html.mirrors_test; |
6 | 6 |
7 @MirrorsUsed(targets: const [A, B]) | 7 @MirrorsUsed(targets: const [A, B]) |
8 import 'dart:mirrors'; | 8 import 'dart:mirrors'; |
9 import 'dart:html'; | 9 import 'dart:html'; |
10 import 'package:unittest/unittest.dart'; | 10 import 'package:unittest/unittest.dart'; |
11 import 'package:unittest/html_config.dart'; | 11 import 'package:unittest/html_config.dart'; |
12 import '../utils.dart'; | 12 import '../utils.dart'; |
13 | 13 |
14 /// Regression test for a tricky mirrors+custom_elements issue: | 14 /// Regression test for a tricky mirrors+custom_elements issue: |
15 /// dart2js mirrors cache dispatch information on the Object's constructor. | 15 /// dart2js mirrors cache dispatch information on the Object's constructor. |
16 /// This was failing for custom elements on IE 10, because the constructor was | 16 /// This was failing for custom elements on IE 10, because the constructor was |
17 /// HTMLUnknownElement for all of them. So mirrors called the wrong method. | 17 /// HTMLUnknownElement for all of them. So mirrors called the wrong method. |
18 main() { | 18 main() { |
19 useHtmlConfiguration(); | 19 useHtmlConfiguration(); |
20 | 20 |
21 var registered = false; | 21 var registered = false; |
22 setUp(() => customElementsReady.then((_) { | 22 setUp(() => customElementsReady.then((_) { |
23 if (!registered) { | 23 if (!registered) { |
24 registered = true; | 24 registered = true; |
25 document.registerElement(A.tag, A); | 25 document.registerElement(A.tag, A); |
26 document.registerElement(B.tag, B); | 26 document.registerElement(B.tag, B); |
27 } | 27 } |
28 })); | 28 })); |
29 | 29 |
30 test('dynamic dispatch', () { | 30 test('dynamic dispatch', () { |
31 var a = new A(); | 31 var a = new A(); |
32 expect(a.fooBar, 1); | 32 expect(a.fooBar, 1); |
33 reflect(a).setField(#fooBar, 123); | 33 reflect(a).setField(#fooBar, 123); |
34 expect(a.fooBar, 123); | 34 expect(a.fooBar, 123); |
35 | 35 |
36 // Even though A was set first, B.fooBar= should dispatch to B. | 36 // Even though A was set first, B.fooBar= should dispatch to B. |
37 var b = new B(); | 37 var b = new B(); |
38 expect(b.fooBar, 2); | 38 expect(b.fooBar, 2); |
(...skipping 19 matching lines...) Expand all Loading... |
58 | 58 |
59 int _fooBar = 2; | 59 int _fooBar = 2; |
60 int _fooBarSet = 0; | 60 int _fooBarSet = 0; |
61 | 61 |
62 int get fooBar => _fooBar; | 62 int get fooBar => _fooBar; |
63 set fooBar(value) { | 63 set fooBar(value) { |
64 _fooBarSet++; | 64 _fooBarSet++; |
65 _fooBar = value; | 65 _fooBar = value; |
66 } | 66 } |
67 } | 67 } |
OLD | NEW |