add scroll test

This commit is contained in:
Shin'ya Ueoka 2018-02-14 21:11:03 +09:00
parent f63920e25e
commit b694afb7ce
6 changed files with 133 additions and 18 deletions

View file

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

View file

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

View file

@ -1,21 +1,12 @@
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 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) => {
@ -32,6 +23,10 @@ ipc.receiveBackgroundMesssage((message) => {
document.body.dispatchEvent(
new KeyboardEvent('keyup', { 'key': message.key }));
break;
case SCROLL_GET:
return Promise.resolve(scrolls.get());
case SCROLL_SET:
return Promise.resolve(scrolls.set(message.x, message.y));
}
return Promise.resolve({});
});

View file

@ -0,0 +1,18 @@
const get = () => {
let element = document.documentElement;
return {
xMax: element.scrollWidth - element.clientWidth,
yMax: element.scrollHeight - element.clientHeight,
x: element.scrollLeft,
y: element.scrollTop,
};
};
const set = (x, y) => {
let element = document.documentElement;
element.scrollLeft = x;
element.scrollTop = y;
return get();
};
export { get, set };

View file

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