OLD | NEW |
1 @TestOn('browser') | 1 @TestOn('browser') |
2 library polymer_elements.test.iron_a11y_keys_behavior_test; | 2 library polymer_elements.test.iron_a11y_keys_behavior_test; |
3 | 3 |
4 import 'dart:async'; | 4 import 'dart:async'; |
5 import 'dart:convert'; | 5 import 'dart:convert'; |
6 import 'dart:html'; | 6 import 'dart:html'; |
7 import 'dart:js'; | 7 import 'dart:js'; |
8 import 'package:polymer_elements/iron_a11y_keys_behavior.dart'; | 8 import 'package:polymer_elements/iron_a11y_keys_behavior.dart'; |
9 import 'package:polymer_interop/polymer_interop.dart'; | 9 import 'package:polymer_interop/polymer_interop.dart'; |
10 import 'package:polymer/polymer.dart'; | 10 import 'package:polymer/polymer.dart'; |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
50 keys.removeOwnKeyBindings(); | 50 keys.removeOwnKeyBindings(); |
51 | 51 |
52 pressEnter(keys); | 52 pressEnter(keys); |
53 expect(keys.keyCount, 0); | 53 expect(keys.keyCount, 0); |
54 | 54 |
55 // **Dart Note**: All our key bindings are imperative, so this part of | 55 // **Dart Note**: All our key bindings are imperative, so this part of |
56 // the test isn't valid. | 56 // the test isn't valid. |
57 // pressSpace(keys); | 57 // pressSpace(keys); |
58 // expect(keys.keyCount, 1); | 58 // expect(keys.keyCount, 1); |
59 }); | 59 }); |
| 60 |
| 61 test('allows propagation beyond the key combo handler', () { |
| 62 var called = false; |
| 63 var done = document.on['keydown'].first.then((_) { |
| 64 called = true; |
| 65 }); |
| 66 |
| 67 pressEnter(keys); |
| 68 |
| 69 expect(called, true); |
| 70 |
| 71 return done; |
| 72 }); |
60 | 73 |
61 group('edge cases', () { | 74 group('edge cases', () { |
62 test('knows that `spacebar` is the same as `space`', () { | 75 test('knows that `spacebar` is the same as `space`', () { |
63 var event = new CustomEvent('keydown'); | 76 var event = new CustomEvent('keydown'); |
64 new JsObject.fromBrowserObject(event)['key'] = 'spacebar'; | 77 new JsObject.fromBrowserObject(event)['key'] = 'spacebar'; |
65 expect(keys.keyboardEventMatchesKeys(event, 'space'), true); | 78 expect(keys.keyboardEventMatchesKeys(event, 'space'), true); |
66 }); | 79 }); |
67 }); | 80 }); |
68 | 81 |
69 group('matching keyboard events to keys', () { | 82 group('matching keyboard events to keys', () { |
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
134 keys = fixture('BehaviorKeys'); | 147 keys = fixture('BehaviorKeys'); |
135 }); | 148 }); |
136 | 149 |
137 test('bindings in other behaviors are transitive', () { | 150 test('bindings in other behaviors are transitive', () { |
138 pressEnter(keys); | 151 pressEnter(keys); |
139 pressSpace(keys); | 152 pressSpace(keys); |
140 | 153 |
141 expect(keys.keyCount, 2); | 154 expect(keys.keyCount, 2); |
142 }); | 155 }); |
143 }); | 156 }); |
| 157 |
| 158 group('stopping propagation automatically', () { |
| 159 setUp(() { |
| 160 keys = fixture('NonPropagatingKeys'); |
| 161 }); |
| 162 |
| 163 test('does not propagate key events beyond the combo handler', () async { |
| 164 var called = false; |
| 165 |
| 166 document.on['keydown'].first.then((_) { |
| 167 called = true; |
| 168 }); |
| 169 |
| 170 pressEnter(keys); |
| 171 await wait(1); |
| 172 |
| 173 expect(called, isFalse); |
| 174 }); |
| 175 }); |
144 }); | 176 }); |
145 } | 177 } |
146 | 178 |
147 @behavior | 179 @behavior |
148 abstract class KeysTestBehavior implements PolymerMixin, PolymerBase, HtmlElemen
t, IronA11yKeysBehavior { | 180 abstract class KeysTestBehavior implements PolymerMixin, PolymerBase, HtmlElemen
t, IronA11yKeysBehavior { |
149 @property | 181 @property |
150 int keyCount = 0; | 182 int keyCount = 0; |
151 | 183 |
152 @property | 184 @property |
153 Event lastEvent; | 185 Event lastEvent; |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
195 | 227 |
196 @PolymerRegister('x-a11y-behavior-keys') | 228 @PolymerRegister('x-a11y-behavior-keys') |
197 class XA11yBehaviorKeys extends PolymerElement | 229 class XA11yBehaviorKeys extends PolymerElement |
198 with IronA11yKeysBehavior, KeysTestBehavior, XA11yBehavior { | 230 with IronA11yKeysBehavior, KeysTestBehavior, XA11yBehavior { |
199 XA11yBehaviorKeys.created() : super.created(); | 231 XA11yBehaviorKeys.created() : super.created(); |
200 | 232 |
201 ready() { | 233 ready() { |
202 addOwnKeyBinding('space', 'keyHandler'); | 234 addOwnKeyBinding('space', 'keyHandler'); |
203 } | 235 } |
204 } | 236 } |
OLD | NEW |