first webextension test

This commit is contained in:
Shin'ya Ueoka 2018-02-04 19:27:22 +09:00
parent bb5b6d367c
commit f6f64297aa
10 changed files with 149 additions and 0 deletions

View file

@ -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);
}
});

View file

@ -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 };