Index: sky/tests/resources/event-sender.sky |
diff --git a/sky/tests/resources/event-sender.sky b/sky/tests/resources/event-sender.sky |
new file mode 100644 |
index 0000000000000000000000000000000000000000..854d822aa12320cc99ab544d998e189d5703cb90 |
--- /dev/null |
+++ b/sky/tests/resources/event-sender.sky |
@@ -0,0 +1,77 @@ |
+<import src="/mojo/services/public/interfaces/input_events/input_event_constants.mojom.sky" as="constants" /> |
+<import src="/mojo/services/public/interfaces/input_events/input_events.mojom.sky" as="events" /> |
+<import src="/mojo/services/public/interfaces/input_events/input_key_codes.mojom.sky" as="codes" /> |
+<import src="/sky/framework/shell.sky" as="shell" /> |
+<import src="/sky/services/testing/test_harness.mojom.sky" as="harness" /> |
+<script> |
+var harness = shell.connectToService("mojo:sky_tester", harness.TestHarness); |
+ |
+var g_done = false; |
rafaelw
2014/11/13 00:57:25
no need for g_ prefix
abarth-chromium
2014/11/13 01:00:50
Done.
|
+var g_keyDownCount = 0; |
+ |
+function keyDown(key, flag) { |
+ var eventFlags = constants.EventFlags.NONE; |
+ // TODO(abarth): Support more than one flag. |
+ if (constants.EventFlags.hasOwnProperty(flag)) |
+ eventFlags = constants.EventFlags[flag]; |
+ |
+ if (key.length != 1 && codes.KeyboardCode.hasOwnProperty(key)) { |
+ var keyCode = codes.KeyboardCode[key]; |
+ |
+ harness.dispatchInputEvent(new events.Event({ |
+ action: constants.EventType.KEY_PRESSED, |
+ flags: eventFlags, |
+ key_data: new events.KeyData({ |
+ key_code: keyCode, |
+ windows_key_code: keyCode, |
+ })})); |
+ |
+ harness.dispatchInputEvent(new events.Event({ |
+ action: constants.EventType.KEY_PRESSED, |
+ flags: eventFlags, |
+ key_data: new events.KeyData({ |
+ is_char: true, |
+ windows_key_code: keyCode, |
+ })})); |
+ } else { |
+ ++g_keyDownCount; |
+ var keyCode = key.charCodeAt(0); |
+ harness.dispatchInputEvent(new events.Event({ |
+ action: constants.EventType.KEY_PRESSED, |
+ flags: eventFlags, |
+ key_data: new events.KeyData({ |
+ key_code: keyCode, |
+ is_char: true, |
+ character: keyCode, |
+ text: keyCode, |
+ unmodified_text: keyCode, |
+ })})); |
+ } |
+} |
+ |
+function done() { |
+ g_done = true; |
rafaelw
2014/11/13 00:57:25
it's a little wierd this module is unusable after
abarth-chromium
2014/11/13 01:00:50
Done.
abarth-chromium
2014/11/13 01:00:50
Done.
|
+ checkComplete(); |
+} |
+ |
+function checkComplete() { |
+ if (!g_done) |
+ return; |
+ if (g_keyDownCount != 0) |
rafaelw
2014/11/13 00:57:25
indent
abarth-chromium
2014/11/13 01:00:50
Fixed.
|
+ return; |
+ setTimeout(function() { |
+ internals.notifyTestComplete(internals.contentAsText()); |
+ }); |
+} |
+ |
+document.addEventListener('keypress', function() { |
+ --g_keyDownCount; |
+ checkComplete(); |
+}); |
+ |
+module.exports = { |
+ keyDown: keyDown, |
+ done: done, |
+}; |
+</script> |
+</sky> |