first webextension test
This commit is contained in:
parent
bb5b6d367c
commit
f6f64297aa
10 changed files with 149 additions and 0 deletions
|
@ -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);
|
||||
}
|
||||
});
|
31
e2e/ambassador/src/content/ipc.js
Normal file
31
e2e/ambassador/src/content/ipc.js
Normal 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 };
|
Reference in a new issue