aboutsummaryrefslogtreecommitdiff
path: root/e2e/ambassador/src/content/ipc.js
blob: 62fcac1fa51135bec549cec2c1149142c778658d (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
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 };