aboutsummaryrefslogtreecommitdiff
path: root/e2e/ambassador/src/client/ipc.js
diff options
context:
space:
mode:
authorShin'ya Ueoka <ueokande@i-beam.org>2018-02-14 18:43:28 +0900
committerGitHub <noreply@github.com>2018-02-14 18:43:28 +0900
commita48915d4e090378a672d780b2fbc93e1af6e082c (patch)
tree2e6a4295935577c5e0facbb3f5d569893bf28afe /e2e/ambassador/src/client/ipc.js
parent5412584a7c453d074dca6d58814e29590085ff73 (diff)
parentf63920e25e80ca0e472d3514fd56e27fbc505e6f (diff)
Merge pull request #329 from ueokande/e2e-test
End-to-End testing
Diffstat (limited to 'e2e/ambassador/src/client/ipc.js')
-rw-r--r--e2e/ambassador/src/client/ipc.js29
1 files changed, 29 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 };