aboutsummaryrefslogtreecommitdiff
path: root/e2e/ambassador/src/client
diff options
context:
space:
mode:
authorShin'ya Ueoka <ueokande@i-beam.org>2018-05-01 13:51:07 +0900
committerShin'ya Ueoka <ueokande@i-beam.org>2018-05-01 13:51:07 +0900
commit4d7c24f38a6861e1d498b6e7dd5c7be2d1a0ad15 (patch)
tree0948f730a25eeda127c56a0f01009f14d066e4dc /e2e/ambassador/src/client
parent177940981ed9c4f096ad7db20f0b7ee044fd7b17 (diff)
parentfb8a0f36aa4d070df936cc7598ef8dd988ee1b15 (diff)
Merge remote-tracking branch 'origin/master' into background-adjacent-tabs
Diffstat (limited to 'e2e/ambassador/src/client')
-rw-r--r--e2e/ambassador/src/client/ipc.js29
-rw-r--r--e2e/ambassador/src/client/keys.js31
-rw-r--r--e2e/ambassador/src/client/scrolls.js20
-rw-r--r--e2e/ambassador/src/client/tabs.js37
-rw-r--r--e2e/ambassador/src/client/windows.js27
5 files changed, 144 insertions, 0 deletions
diff --git a/e2e/ambassador/src/client/ipc.js b/e2e/ambassador/src/client/ipc.js
new file mode 100644
index 0000000..9f232ea
--- /dev/null
+++ b/e2e/ambassador/src/client/ipc.js
@@ -0,0 +1,29 @@
+import { METHOD_REQUEST, METHOD_RESPONSE } from '../shared/messages';
+
+const generateId = () => {
+ return Math.random().toString();
+};
+
+const send = (message) => {
+ return new Promise((resolve) => {
+ let id = generateId();
+ let callback = (e) => {
+ let packet = e.data;
+ if (e.source !== window || packet.method !== METHOD_RESPONSE ||
+ packet.id !== id) {
+ return;
+ }
+ window.removeEventListener('message', callback);
+ resolve(packet.message);
+ };
+ window.addEventListener('message', callback);
+
+ window.postMessage({
+ id,
+ method: METHOD_REQUEST,
+ message
+ }, window.origin);
+ });
+};
+
+export { send };
diff --git a/e2e/ambassador/src/client/keys.js b/e2e/ambassador/src/client/keys.js
new file mode 100644
index 0000000..37b9c0a
--- /dev/null
+++ b/e2e/ambassador/src/client/keys.js
@@ -0,0 +1,31 @@
+import { EVENT_KEYPRESS, EVENT_KEYDOWN, EVENT_KEYUP } from '../shared/messages';
+import * as ipc from './ipc';
+
+const NEUTRAL_MODIFIERS = { shiftKey: false, altKey: false, ctrlKey: false };
+
+const press = (tabId, key, modifiers = NEUTRAL_MODIFIERS) => {
+ return ipc.send(Object.assign({}, modifiers, {
+ type: EVENT_KEYPRESS,
+ tabId,
+ key,
+ }));
+};
+
+const down = (tabId, key, modifiers = NEUTRAL_MODIFIERS) => {
+ return ipc.send(Object.assign({}, modifiers, {
+ type: EVENT_KEYDOWN,
+ tabId,
+ key,
+ }));
+};
+
+
+const up = (tabId, key, modifiers = NEUTRAL_MODIFIERS) => {
+ return ipc.send(Object.assign({}, modifiers, {
+ type: EVENT_KEYUP,
+ tabId,
+ key,
+ }));
+};
+
+export { press, down, up };
diff --git a/e2e/ambassador/src/client/scrolls.js b/e2e/ambassador/src/client/scrolls.js
new file mode 100644
index 0000000..f8f82e9
--- /dev/null
+++ b/e2e/ambassador/src/client/scrolls.js
@@ -0,0 +1,20 @@
+import { SCROLL_GET, SCROLL_SET } from '../shared/messages';
+import * as ipc from './ipc';
+
+const get = (tabId) => {
+ return ipc.send({
+ type: SCROLL_GET,
+ tabId,
+ });
+};
+
+const set = (tabId, x, y) => {
+ return ipc.send({
+ type: SCROLL_SET,
+ tabId,
+ x,
+ y,
+ });
+};
+
+export { get, set };
diff --git a/e2e/ambassador/src/client/tabs.js b/e2e/ambassador/src/client/tabs.js
new file mode 100644
index 0000000..c7b1340
--- /dev/null
+++ b/e2e/ambassador/src/client/tabs.js
@@ -0,0 +1,37 @@
+import {
+ TABS_CREATE, TABS_SELECT_AT, TABS_GET_ZOOM, TABS_SET_ZOOM,
+} from '../shared/messages';
+import * as ipc from './ipc';
+
+const create = (windowId, url) => {
+ return ipc.send({
+ type: TABS_CREATE,
+ windowId,
+ url,
+ });
+};
+
+const selectAt = (windowId, index) => {
+ return ipc.send({
+ type: TABS_SELECT_AT,
+ windowId,
+ index,
+ });
+};
+
+const getZoom = (tabId) => {
+ return ipc.send({
+ tabId,
+ type: TABS_GET_ZOOM,
+ });
+};
+
+const setZoom = (tabId, factor) => {
+ return ipc.send({
+ type: TABS_SET_ZOOM,
+ tabId,
+ factor,
+ });
+};
+
+export { create, selectAt, getZoom, setZoom };
diff --git a/e2e/ambassador/src/client/windows.js b/e2e/ambassador/src/client/windows.js
new file mode 100644
index 0000000..f92405a
--- /dev/null
+++ b/e2e/ambassador/src/client/windows.js
@@ -0,0 +1,27 @@
+import {
+ WINDOWS_CREATE, WINDOWS_REMOVE, WINDOWS_GET
+} from '../shared/messages';
+import * as ipc from './ipc';
+
+const create = (url) => {
+ return ipc.send({
+ type: WINDOWS_CREATE,
+ url,
+ });
+};
+
+const remove = (windowId) => {
+ return ipc.send({
+ type: WINDOWS_REMOVE,
+ windowId,
+ });
+};
+
+const get = (windowId) => {
+ return ipc.send({
+ type: WINDOWS_GET,
+ windowId,
+ });
+};
+
+export { create, remove, get };