#!mojo mojo:sky_viewer
<sky>
<script>
import "../resources/third_party/unittest/unittest.dart";
import "../resources/unit.dart";
import "dart:sky";
import "package:mojom/mojo/input_event_constants.mojom.dart" as constants;
import "package:mojom/mojo/input_events.mojom.dart" as events;
import "package:mojom/sky/test_harness.mojom.dart" as harness;
import "package:sky/framework/embedder.dart";

void main() {
  initUnit();

  test('should be able to send events', () {
    document.addEventListener('keypress', expectAsync((event) {
      expect(event.type, equals('keypress'));
      expect(event.key, equals(0));
      expect(event.charCode, equals(0x41));
    }));

    var testHarness = new harness.TestHarnessProxy.unbound();
    embedder.connectToService("mojo:sky_tester", testHarness);
    var keyData = new events.KeyData();
    keyData.windowsKeyCode = 0x41;
    keyData.text = 0x41;
    keyData.unmodifiedText = 0x41;
    keyData.isChar = true;
    keyData.character = 0x41;
    var event = new events.Event();
    event.action = constants.EventType_KEY_PRESSED;
    event.keyData = keyData;
    testHarness.ptr.dispatchInputEvent(event);
  });
}
</script>
</sky>
