aboutsummaryrefslogtreecommitdiff
path: root/e2e/ambassador/src/content
diff options
context:
space:
mode:
authorShin'ya Ueoka <ueokande@i-beam.org>2018-02-04 19:27:22 +0900
committerShin'ya Ueoka <ueokande@i-beam.org>2018-02-04 19:27:22 +0900
commitf6f64297aa030cd3fbad4bbb9e322e469bc762e8 (patch)
tree02ad2374c6e7060c7f13658e7dd4c3c0d99b5b9f /e2e/ambassador/src/content
parentbb5b6d367cdd19a1d81c78cf8a79c47520ca469e (diff)
first webextension test
Diffstat (limited to 'e2e/ambassador/src/content')
-rw-r--r--e2e/ambassador/src/content/index.js11
-rw-r--r--e2e/ambassador/src/content/ipc.js31
2 files changed, 42 insertions, 0 deletions
diff --git a/e2e/ambassador/src/content/index.js b/e2e/ambassador/src/content/index.js
index e69de29..dd46688 100644
--- a/e2e/ambassador/src/content/index.js
+++ b/e2e/ambassador/src/content/index.js
@@ -0,0 +1,11 @@
+import { WINDOWS_CREATE, WINDOWS_REMOVE } from '../shared/messages';
+import * as ipc from './ipc';
+
+ipc.receivePageMessage((message) => {
+ switch (message.type) {
+ case WINDOWS_CREATE:
+ return ipc.send(message);
+ case WINDOWS_REMOVE:
+ return ipc.send(message);
+ }
+});
diff --git a/e2e/ambassador/src/content/ipc.js b/e2e/ambassador/src/content/ipc.js
new file mode 100644
index 0000000..62fcac1
--- /dev/null
+++ b/e2e/ambassador/src/content/ipc.js
@@ -0,0 +1,31 @@
+import { METHOD_REQUEST, METHOD_RESPONSE } from '../shared/messages';
+
+const send = (message) => {
+ return browser.runtime.sendMessage(message);
+};
+
+const receivePageMessage = (func) => {
+ window.addEventListener('message', (e) => {
+ let packet = e.data;
+ if (e.origin !== window.origin || packet.method !== METHOD_REQUEST) {
+ return;
+ }
+
+ let resp = {
+ id: packet.id,
+ method: METHOD_RESPONSE,
+ };
+ let respMessage = func(packet.message);
+ if (respMessage instanceof Promise) {
+ return respMessage.then((data) => {
+ resp.message = data;
+ e.source.postMessage(resp, e.origin);
+ });
+ } else if (respMessage) {
+ resp.message = respMessage;
+ }
+ e.source.postMessage(resp, e.origin);
+ });
+};
+
+export { send, receivePageMessage };