diff options
Diffstat (limited to 'e2e/ambassador/src')
-rw-r--r-- | e2e/ambassador/src/background/index.js | 9 | ||||
-rw-r--r-- | e2e/ambassador/src/client/keys.js | 20 | ||||
-rw-r--r-- | e2e/ambassador/src/client/scrolls.js | 20 | ||||
-rw-r--r-- | e2e/ambassador/src/content/events.js | 31 | ||||
-rw-r--r-- | e2e/ambassador/src/content/index.js | 29 | ||||
-rw-r--r-- | e2e/ambassador/src/content/scrolls.js | 20 | ||||
-rw-r--r-- | e2e/ambassador/src/shared/messages.js | 4 |
7 files changed, 100 insertions, 33 deletions
diff --git a/e2e/ambassador/src/background/index.js b/e2e/ambassador/src/background/index.js index f9fda7e..c3e9dc1 100644 --- a/e2e/ambassador/src/background/index.js +++ b/e2e/ambassador/src/background/index.js @@ -2,6 +2,7 @@ import { WINDOWS_CREATE, WINDOWS_REMOVE, WINDOWS_GET, TABS_CREATE, EVENT_KEYPRESS, EVENT_KEYDOWN, EVENT_KEYUP, + SCROLL_GET, SCROLL_SET, } from '../shared/messages'; import * as tabs from './tabs'; import { receiveContentMessage } from './ipc'; @@ -19,15 +20,11 @@ receiveContentMessage((message) => { url: message.url, windowId: message.windowId, }); - } -}); - - -receiveContentMessage((message) => { - switch (message.type) { case EVENT_KEYPRESS: case EVENT_KEYDOWN: case EVENT_KEYUP: + case SCROLL_GET: + case SCROLL_SET: return browser.tabs.sendMessage( message.tabId, message diff --git a/e2e/ambassador/src/client/keys.js b/e2e/ambassador/src/client/keys.js index af0fb3d..37b9c0a 100644 --- a/e2e/ambassador/src/client/keys.js +++ b/e2e/ambassador/src/client/keys.js @@ -1,29 +1,31 @@ import { EVENT_KEYPRESS, EVENT_KEYDOWN, EVENT_KEYUP } from '../shared/messages'; import * as ipc from './ipc'; -const press = (tabId, key) => { - return ipc.send({ +const NEUTRAL_MODIFIERS = { shiftKey: false, altKey: false, ctrlKey: false }; + +const press = (tabId, key, modifiers = NEUTRAL_MODIFIERS) => { + return ipc.send(Object.assign({}, modifiers, { type: EVENT_KEYPRESS, tabId, key, - }); + })); }; -const down = (tabId, key) => { - return ipc.send({ +const down = (tabId, key, modifiers = NEUTRAL_MODIFIERS) => { + return ipc.send(Object.assign({}, modifiers, { type: EVENT_KEYDOWN, tabId, key, - }); + })); }; -const up = (tabId, key) => { - return ipc.send({ +const up = (tabId, key, modifiers = NEUTRAL_MODIFIERS) => { + return ipc.send(Object.assign({}, modifiers, { type: EVENT_KEYUP, tabId, key, - }); + })); }; export { press, down, up }; diff --git a/e2e/ambassador/src/client/scrolls.js b/e2e/ambassador/src/client/scrolls.js new file mode 100644 index 0000000..f8f82e9 --- /dev/null +++ b/e2e/ambassador/src/client/scrolls.js @@ -0,0 +1,20 @@ +import { SCROLL_GET, SCROLL_SET } from '../shared/messages'; +import * as ipc from './ipc'; + +const get = (tabId) => { + return ipc.send({ + type: SCROLL_GET, + tabId, + }); +}; + +const set = (tabId, x, y) => { + return ipc.send({ + type: SCROLL_SET, + tabId, + x, + y, + }); +}; + +export { get, set }; diff --git a/e2e/ambassador/src/content/events.js b/e2e/ambassador/src/content/events.js new file mode 100644 index 0000000..1e45909 --- /dev/null +++ b/e2e/ambassador/src/content/events.js @@ -0,0 +1,31 @@ +const keypress = (opts) => { + let event = new KeyboardEvent('keypress', { + key: opts.key, + altKey: opts.altKey, + shiftKey: opts.shiftKey, + ctrlKey: opts.ctrlKey + }); + document.body.dispatchEvent(event); +}; + +const keydown = (opts) => { + let event = new KeyboardEvent('keydown', { + key: opts.key, + altKey: opts.altKey, + shiftKey: opts.shiftKey, + ctrlKey: opts.ctrlKey + }); + document.body.dispatchEvent(event); +}; + +const keyup = (opts) => { + let event = new KeyboardEvent('keyup', { + key: opts.key, + altKey: opts.altKey, + shiftKey: opts.shiftKey, + ctrlKey: opts.ctrlKey + }); + document.body.dispatchEvent(event); +}; + +export { keypress, keydown, keyup }; diff --git a/e2e/ambassador/src/content/index.js b/e2e/ambassador/src/content/index.js index 8573d66..fd19136 100644 --- a/e2e/ambassador/src/content/index.js +++ b/e2e/ambassador/src/content/index.js @@ -1,37 +1,30 @@ import { - WINDOWS_CREATE, WINDOWS_REMOVE, WINDOWS_GET, - TABS_CREATE, EVENT_KEYPRESS, EVENT_KEYDOWN, EVENT_KEYUP, + SCROLL_GET, SCROLL_SET, } from '../shared/messages'; import * as ipc from './ipc'; +import * as events from './events'; +import * as scrolls from './scrolls'; ipc.receivePageMessage((message) => { - switch (message.type) { - case WINDOWS_CREATE: - case WINDOWS_REMOVE: - case WINDOWS_GET: - case TABS_CREATE: - case EVENT_KEYPRESS: - case EVENT_KEYDOWN: - case EVENT_KEYUP: - return ipc.sendToBackground(message); - } + return ipc.sendToBackground(message); }); ipc.receiveBackgroundMesssage((message) => { switch (message.type) { case EVENT_KEYPRESS: - document.body.dispatchEvent( - new KeyboardEvent('keypress', { 'key': message.key })); + events.keypress(message); break; case EVENT_KEYDOWN: - document.body.dispatchEvent( - new KeyboardEvent('keydown', { 'key': message.key })); + events.keydown(message); break; case EVENT_KEYUP: - document.body.dispatchEvent( - new KeyboardEvent('keyup', { 'key': message.key })); + events.keyup(message); break; + case SCROLL_GET: + return Promise.resolve(scrolls.get()); + case SCROLL_SET: + return Promise.resolve(scrolls.set(message.x, message.y)); } return Promise.resolve({}); }); diff --git a/e2e/ambassador/src/content/scrolls.js b/e2e/ambassador/src/content/scrolls.js new file mode 100644 index 0000000..4227cf7 --- /dev/null +++ b/e2e/ambassador/src/content/scrolls.js @@ -0,0 +1,20 @@ +const get = () => { + let element = document.documentElement; + return { + xMax: element.scrollWidth - element.clientWidth, + yMax: element.scrollHeight - element.clientHeight, + x: element.scrollLeft, + y: element.scrollTop, + frameWidth: element.clientWidth, + frameHeight: element.clientHeight, + }; +}; + +const set = (x, y) => { + let element = document.documentElement; + element.scrollLeft = x; + element.scrollTop = y; + return get(); +}; + +export { get, set }; diff --git a/e2e/ambassador/src/shared/messages.js b/e2e/ambassador/src/shared/messages.js index 32b7aa2..dd389db 100644 --- a/e2e/ambassador/src/shared/messages.js +++ b/e2e/ambassador/src/shared/messages.js @@ -7,6 +7,8 @@ const TABS_CREATE = 'tabs.create'; const EVENT_KEYPRESS = 'event.keypress'; const EVENT_KEYDOWN = 'event.keydown'; const EVENT_KEYUP = 'event.keyup'; +const SCROLL_GET = 'scroll.get'; +const SCROLL_SET = 'scroll.set'; export { METHOD_REQUEST, @@ -21,4 +23,6 @@ export { EVENT_KEYPRESS, EVENT_KEYDOWN, EVENT_KEYUP, + SCROLL_GET, + SCROLL_SET, }; |