send press key to tabs

This commit is contained in:
Shin'ya Ueoka 2018-02-11 15:40:34 +09:00
parent cf03d278eb
commit 3f8bbe11d9
11 changed files with 153 additions and 30 deletions

View file

@ -1,11 +1,35 @@
import { WINDOWS_CREATE, WINDOWS_REMOVE } from '../shared/messages';
import {
WINDOWS_CREATE, WINDOWS_REMOVE, TABS_CREATE,
EVENT_KEYPRESS, EVENT_KEYDOWN, EVENT_KEYUP,
} 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);
case TABS_CREATE:
case EVENT_KEYPRESS:
case EVENT_KEYDOWN:
case EVENT_KEYUP:
return ipc.sendToBackground(message);
}
});
ipc.receiveBackgroundMesssage((message) => {
switch (message.type) {
case EVENT_KEYPRESS:
document.body.dispatchEvent(
new KeyboardEvent('keypress', { 'key': message.key }));
break;
case EVENT_KEYDOWN:
document.body.dispatchEvent(
new KeyboardEvent('keydown', { 'key': message.key }));
break;
case EVENT_KEYUP:
document.body.dispatchEvent(
new KeyboardEvent('keyup', { 'key': message.key }));
break;
}
return Promise.resolve({});
});

View file

@ -1,9 +1,15 @@
import { METHOD_REQUEST, METHOD_RESPONSE } from '../shared/messages';
const send = (message) => {
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;
@ -28,4 +34,7 @@ const receivePageMessage = (func) => {
});
};
export { send, receivePageMessage };
export {
sendToBackground, receiveBackgroundMesssage,
receivePageMessage,
};