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

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>
