aboutsummaryrefslogtreecommitdiff
path: root/e2e/ambassador/src/content/ipc.js
blob: 917623c50eb7697b19e530608d8b0f71c5c4275b (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
32
33
34
35
36
37
38
39
40
import { METHOD_REQUEST, METHOD_RESPONSE } from '../shared/messages';

const sendToBackground = (message) => {
  return browser.runtime.sendMessage(message);
};

const receiveBackgroundMesssage = (func) => {
  return browser.runtime.onMessage.addListener((message) => {
    return Promise.resolve(func(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 {
  sendToBackground, receiveBackgroundMesssage,
  receivePageMessage,
};