OLD | NEW |
| (Empty) |
1 <import src="/gen/mojo/services/input_events/public/interfaces/input_event_const
ants.mojom.sky" as="constants" /> | |
2 <import src="/gen/mojo/services/input_events/public/interfaces/input_events.mojo
m.sky" as="events" /> | |
3 <import src="/gen/mojo/services/input_events/public/interfaces/input_key_codes.m
ojom.sky" as="codes" /> | |
4 <import src="/gen/sky/services/testing/test_harness.mojom.sky" as="harness" /> | |
5 <import src="/sky/framework/shell.sky" as="shell" /> | |
6 <script> | |
7 var harness = shell.connectToService("mojo:sky_tester", harness.TestHarness); | |
8 | |
9 var isDone = false; | |
10 var keyPressesRemaining = 0; | |
11 | |
12 function keyDown(key, flag) { | |
13 var eventFlags = constants.EventFlags.NONE; | |
14 // TODO(abarth): Support more than one flag. | |
15 if (constants.EventFlags.hasOwnProperty(flag)) | |
16 eventFlags = constants.EventFlags[flag]; | |
17 | |
18 if (key.length != 1 && codes.KeyboardCode.hasOwnProperty(key)) { | |
19 var keyCode = codes.KeyboardCode[key]; | |
20 | |
21 harness.dispatchInputEvent(new events.Event({ | |
22 action: constants.EventType.KEY_PRESSED, | |
23 flags: eventFlags, | |
24 key_data: new events.KeyData({ | |
25 key_code: keyCode, | |
26 windows_key_code: keyCode, | |
27 })})); | |
28 | |
29 harness.dispatchInputEvent(new events.Event({ | |
30 action: constants.EventType.KEY_PRESSED, | |
31 flags: eventFlags, | |
32 key_data: new events.KeyData({ | |
33 is_char: true, | |
34 windows_key_code: keyCode, | |
35 })})); | |
36 } else { | |
37 ++keyPressesRemaining; | |
38 var keyCode = key.charCodeAt(0); | |
39 harness.dispatchInputEvent(new events.Event({ | |
40 action: constants.EventType.KEY_PRESSED, | |
41 flags: eventFlags, | |
42 key_data: new events.KeyData({ | |
43 key_code: keyCode, | |
44 is_char: true, | |
45 character: keyCode, | |
46 text: keyCode, | |
47 unmodified_text: keyCode, | |
48 })})); | |
49 } | |
50 } | |
51 | |
52 function done() { | |
53 if (isDone) | |
54 throw "Already done."; | |
55 isDone = true; | |
56 checkComplete(); | |
57 } | |
58 | |
59 function checkComplete() { | |
60 if (!isDone) | |
61 return; | |
62 if (keyPressesRemaining != 0) | |
63 return; | |
64 setTimeout(function() { | |
65 internals.notifyTestComplete(internals.contentAsText()); | |
66 }); | |
67 } | |
68 | |
69 document.addEventListener('keypress', function() { | |
70 --keyPressesRemaining; | |
71 checkComplete(); | |
72 }); | |
73 | |
74 module.exports = { | |
75 keyDown: keyDown, | |
76 done: done, | |
77 }; | |
78 </script> | |
79 </sky> | |
OLD | NEW |