aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--e2e/contents/follow.test.js162
-rw-r--r--e2e/contents/navigate.test.js200
-rw-r--r--e2e/contents/scroll.test.js183
-rw-r--r--e2e/contents/tab.test.js359
-rw-r--r--e2e/contents/zoom.test.js78
-rw-r--r--src/background/actions/command.js68
-rw-r--r--src/background/actions/setting.js13
-rw-r--r--src/background/actions/tab.js27
-rw-r--r--src/background/components/background.js15
-rw-r--r--src/background/components/indicator.js14
-rw-r--r--src/background/components/tab.js7
-rw-r--r--src/background/index.js18
-rw-r--r--src/background/shared/completions/bookmarks.js23
-rw-r--r--src/background/shared/completions/histories.js27
-rw-r--r--src/background/shared/completions/index.js116
-rw-r--r--src/background/shared/tabs.js209
-rw-r--r--src/background/shared/zooms.js30
-rw-r--r--src/console/components/console.js7
-rw-r--r--src/content/actions/find.js46
-rw-r--r--src/content/components/common/index.js13
-rw-r--r--src/settings/actions/setting.js19
-rw-r--r--src/shared/settings/storage.js42
-rw-r--r--src/shared/versions/index.js13
-rw-r--r--src/shared/versions/storage.js7
-rw-r--r--test/shared/versions/index.test.js47
-rw-r--r--test/shared/versions/storage.test.js33
26 files changed, 722 insertions, 1054 deletions
diff --git a/e2e/contents/follow.test.js b/e2e/contents/follow.test.js
index f852dc0..f78780b 100644
--- a/e2e/contents/follow.test.js
+++ b/e2e/contents/follow.test.js
@@ -6,116 +6,78 @@ import { CLIENT_URL } from '../web-server/url';
describe("tab test", () => {
let targetWindow;
- beforeEach(() => {
- return windows.create(CLIENT_URL).then((win) => {
- targetWindow = win;
- });
+ beforeEach(async () => {
+ targetWindow = await windows.create(CLIENT_URL);
});
- afterEach(() => {
- return windows.remove(targetWindow.id);
- });
+ afterEach(async () => {
+ await windows.remove(targetWindow.id);
+ });return
+
+ it('follows link by `f`', async() => {
+ let tab = await tabs.create(targetWindow.id, CLIENT_URL + '/follow');
+ await keys.press(tab.id, 'f');
+ await new Promise(resolve => { setTimeout(() => resolve(), 10) });
+ await keys.press(tab.id, 'a');
+ await new Promise(resolve => { setTimeout(() => resolve(), 10) });
- it('follows link by `f`', () => {
- let targetTab;
- return tabs.create(targetWindow.id, CLIENT_URL + '/follow').then((tab) => {
- targetTab = tab;
- return keys.press(targetTab.id, 'f');
- }).then(() => {
- return new Promise(resolve => { setTimeout(() => resolve(), 10) });
- }).then(() => {
- return keys.press(targetTab.id, 'a');
- }).then(() => {
- return new Promise(resolve => { setTimeout(() => resolve(), 10) });
- }).then(() => {
- return tabs.get(targetTab.id);
- }).then((tab) => {
- expect(tab.url).to.be.equal(CLIENT_URL + '/follow#a');
- });
+ tab = tabs.get(tab.id);
+ expect(tab.url).to.be.equal(CLIENT_URL + '/follow#a');
});
- it('follows link into new tab by `F`', () => {
- let targetTab;
- return tabs.create(targetWindow.id, CLIENT_URL + '/follow').then((tab) => {
- targetTab = tab;
- return keys.press(targetTab.id, 'F', { shiftKey: true });
- }).then(() => {
- return new Promise(resolve => { setTimeout(() => resolve(), 10) });
- }).then(() => {
- return keys.press(targetTab.id, 'a');
- }).then(() => {
- return new Promise(resolve => { setTimeout(() => resolve(), 500) });
- }).then(() => {
- return windows.get(targetWindow.id);
- }).then((win) => {
- let urls = win.tabs.map(t => t.url);
- expect(urls).to.have.lengthOf(3);
- expect(urls).to.include(CLIENT_URL + '/');
- expect(urls).to.include(CLIENT_URL + '/follow');
- expect(urls).to.include(CLIENT_URL + '/follow#a');
- });
+ it('follows link into new tab by `F`', async () => {
+ let tab = await tabs.create(targetWindow.id, CLIENT_URL + '/follow');
+ await keys.press(tab.id, 'F', { shiftKey: true });
+ await new Promise(resolve => { setTimeout(() => resolve(), 10) });
+ await keys.press(tab.id, 'a');
+ await new Promise(resolve => { setTimeout(() => resolve(), 500) });
+
+ let win = await windows.get(targetWindow.id);
+ let urls = win.tabs.map(t => t.url);
+ expect(urls).to.have.lengthOf(3);
+ expect(urls).to.include(CLIENT_URL + '/');
+ expect(urls).to.include(CLIENT_URL + '/follow');
+ expect(urls).to.include(CLIENT_URL + '/follow#a');
});
- it('follows link with target=_blank into new tab by `f`', () => {
- let targetTab;
- return tabs.create(targetWindow.id, CLIENT_URL + '/follow').then((tab) => {
- targetTab = tab;
- return keys.press(targetTab.id, 'f');
- }).then(() => {
- return new Promise(resolve => { setTimeout(() => resolve(), 10) });
- }).then(() => {
- return keys.press(targetTab.id, 'b');
- }).then(() => {
- return new Promise(resolve => { setTimeout(() => resolve(), 500) });
- }).then(() => {
- return windows.get(targetWindow.id);
- }).then((win) => {
- let urls = win.tabs.map(t => t.url);
- expect(urls).to.have.lengthOf(3);
- expect(urls).to.include(CLIENT_URL + '/');
- expect(urls).to.include(CLIENT_URL + '/follow');
- expect(urls).to.include(CLIENT_URL + '/follow#external');
- });
+ it('follows link with target=_blank into new tab by `f`', async () => {
+ let tab = await tabs.create(targetWindow.id, CLIENT_URL + '/follow');
+ await keys.press(tab.id, 'f');
+ await new Promise(resolve => { setTimeout(() => resolve(), 10) });
+ await keys.press(tab.id, 'b');
+ await new Promise(resolve => { setTimeout(() => resolve(), 500) });
+
+ let win = await windows.get(targetWindow.id);
+ let urls = win.tabs.map(t => t.url);
+ expect(urls).to.have.lengthOf(3);
+ expect(urls).to.include(CLIENT_URL + '/');
+ expect(urls).to.include(CLIENT_URL + '/follow');
+ expect(urls).to.include(CLIENT_URL + '/follow#external');
});
- it('follows link with target=_blank into new tab by `F`', () => {
- let targetTab;
- return tabs.create(targetWindow.id, CLIENT_URL + '/follow').then((tab) => {
- targetTab = tab;
- return keys.press(targetTab.id, 'F', { shiftKey: true });
- }).then(() => {
- }).then(() => {
- return new Promise(resolve => { setTimeout(() => resolve(), 10) });
- }).then(() => {
- return keys.press(targetTab.id, 'b');
- }).then(() => {
- return new Promise(resolve => { setTimeout(() => resolve(), 500) });
- }).then(() => {
- return windows.get(targetWindow.id);
- }).then((win) => {
- let urls = win.tabs.map(t => t.url);
- expect(urls).to.have.lengthOf(3);
- expect(urls).to.include(CLIENT_URL + '/');
- expect(urls).to.include(CLIENT_URL + '/follow');
- expect(urls).to.include(CLIENT_URL + '/follow#external');
- });
+ it('follows link with target=_blank into new tab by `F`', async () => {
+ let tab = await tabs.create(targetWindow.id, CLIENT_URL + '/follow');
+ await keys.press(tab.id, 'F', { shiftKey: true });
+ await new Promise(resolve => { setTimeout(() => resolve(), 10) });
+ await keys.press(tab.id, 'b');
+ await new Promise(resolve => { setTimeout(() => resolve(), 500) });
+
+ let win = await windows.get(targetWindow.id);
+ let urls = win.tabs.map(t => t.url);
+ expect(urls).to.have.lengthOf(3);
+ expect(urls).to.include(CLIENT_URL + '/');
+ expect(urls).to.include(CLIENT_URL + '/follow');
+ expect(urls).to.include(CLIENT_URL + '/follow#external');
});
- it('follows area by `F`', () => {
- let targetTab;
- return tabs.create(targetWindow.id, CLIENT_URL + '/follow').then((tab) => {
- targetTab = tab;
- return keys.press(targetTab.id, 'f');
- }).then(() => {
- return new Promise(resolve => { setTimeout(() => resolve(), 10) });
- }).then(() => {
- return keys.press(targetTab.id, 'c');
- }).then(() => {
- return new Promise(resolve => { setTimeout(() => resolve(), 10) });
- }).then(() => {
- return tabs.get(targetTab.id);
- }).then((tab) => {
- expect(tab.url).to.be.equal(CLIENT_URL + '/follow#area');
- });
+ it('follows area by `F`', async () => {
+ let tab = await tabs.create(targetWindow.id, CLIENT_URL + '/follow');
+ await keys.press(tab.id, 'f');
+ await new Promise(resolve => { setTimeout(() => resolve(), 10) });
+ await keys.press(tab.id, 'c');
+ await new Promise(resolve => { setTimeout(() => resolve(), 10) });
+
+ tab = await tabs.get(tab.id);
+ expect(tab.url).to.be.equal(CLIENT_URL + '/follow#area');
});
});
diff --git a/e2e/contents/navigate.test.js b/e2e/contents/navigate.test.js
index b3f5f32..d36b167 100644
--- a/e2e/contents/navigate.test.js
+++ b/e2e/contents/navigate.test.js
@@ -7,150 +7,96 @@ import { CLIENT_URL } from '../web-server/url';
describe("navigate test", () => {
let targetWindow;
- before(() => {
- return windows.create().then((win) => {
- targetWindow = win;
- return tabs.create(targetWindow.id, CLIENT_URL);
- });
+ before(async () => {
+ targetWindow = await windows.create();
+ await tabs.create(targetWindow.id, CLIENT_URL);
});
- after(() => {
- return windows.remove(targetWindow.id);
+ after(async () => {
+ await windows.remove(targetWindow.id);
});
- it('goes to parent', () => {
- let targetTab;
- return tabs.create(targetWindow.id, CLIENT_URL + '/a/b/c').then((tab) => {
- targetTab = tab;
- return keys.press(targetTab.id, 'g');
- }).then(() => {
- return keys.press(targetTab.id, 'u');
- }).then(() => {
- return new Promise(resolve => { setTimeout(() => resolve(), 10) });
- }).then(() => {
- return tabs.get(targetTab.id);
- }).then((tab) => {
- expect(tab.url).to.be.equal(CLIENT_URL + '/a/b/');
- });
+ it('goes to parent', async () => {
+ let tab = await tabs.create(targetWindow.id, CLIENT_URL + '/a/b/c');
+ await keys.press(tab.id, 'g');
+ await keys.press(tab.id, 'u');
+ await new Promise(resolve => { setTimeout(() => resolve(), 10) });
+
+ tab = await tabs.get(tab.id);
+ expect(tab.url).to.be.equal(CLIENT_URL + '/a/b/');
});
- it('removes hash', () => {
- let targetTab;
- return tabs.create(targetWindow.id, CLIENT_URL + '/a/b/c#navigate').then((tab) => {
- targetTab = tab;
- return keys.press(targetTab.id, 'g');
- }).then(() => {
- return keys.press(targetTab.id, 'u');
- }).then(() => {
- return tabs.get(targetTab.id);
- }).then((tab) => {
- expect(tab.url).to.be.equal(CLIENT_URL + '/a/b/c#');
- });
+ it('removes hash', async () => {
+ let tab = await tabs.create(targetWindow.id, CLIENT_URL + '/a/b/c#navigate');
+ await keys.press(tab.id, 'g');
+ await keys.press(tab.id, 'u');
+ tab = await tabs.get(tab.id);
+ expect(tab.url).to.be.equal(CLIENT_URL + '/a/b/c#');
});
- it('goes to root', () => {
- let targetTab;
- return tabs.create(targetWindow.id, CLIENT_URL + '/a/b/c').then((tab) => {
- targetTab = tab;
- return keys.press(targetTab.id, 'g');
- }).then(() => {
- return keys.press(targetTab.id, 'U', { shiftKey: true });
- }).then(() => {
- return new Promise(resolve => { setTimeout(() => resolve(), 10) });
- }).then(() => {
- return tabs.get(targetTab.id);
- }).then((tab) => {
- expect(tab.url).to.be.equal(CLIENT_URL + '/');
- });
+ it('goes to root', async () => {
+ let tab = await tabs.create(targetWindow.id, CLIENT_URL + '/a/b/c');
+ await keys.press(tab.id, 'g');
+ await keys.press(tab.id, 'U', { shiftKey: true });
+ await new Promise(resolve => { setTimeout(() => resolve(), 10) });
+
+ tab = await tabs.get(tab.id);
+ expect(tab.url).to.be.equal(CLIENT_URL + '/');
});
- it('goes back and forward in history', () => {
- let targetTab;
- return tabs.create(targetWindow.id, CLIENT_URL + '/#navigate').then((tab) => {
- targetTab = tab;
- return keys.press(targetTab.id, 'g');
- }).then(() => {
- return keys.press(targetTab.id, 'u');
- }).then(() => {
- return keys.press(targetTab.id, 'H', { shiftKey: true });
- }).then(() => {
- return new Promise(resolve => { setTimeout(() => resolve(), 10) });
- }).then(() => {
- return tabs.get(targetTab.id);
- }).then((tab) => {
- expect(tab.url, 'go back in history').to.be.equal(CLIENT_URL + '/#navigate');
- }).then(() => {
- return new Promise(resolve => { setTimeout(() => resolve(), 10) });
- }).then(() => {
- return keys.press(targetTab.id, 'L', { shiftKey: true });
- }).then(() => {
- return tabs.get(targetTab.id);
- }).then((tab) => {
- expect(tab.url, 'go next in history').to.be.equal(CLIENT_URL + '/#');
- });
+ it('goes back and forward in history', async () => {
+ let tab = await tabs.create(targetWindow.id, CLIENT_URL + '/#navigate');
+ await keys.press(tab.id, 'g');
+ await keys.press(tab.id, 'u');
+ await keys.press(tab.id, 'H', { shiftKey: true });
+ await new Promise(resolve => { setTimeout(() => resolve(), 10) });
+
+ tab = await tabs.get(tab.id);
+ expect(tab.url, 'go back in history').to.be.equal(CLIENT_URL + '/#navigate');
+ await new Promise(resolve => { setTimeout(() => resolve(), 10) });
+ await keys.press(tab.id, 'L', { shiftKey: true });
+
+ tab = await tabs.get(tab.id);
+ expect(tab.url, 'go next in history').to.be.equal(CLIENT_URL + '/#');
});
- it('goes previous page by <a>', () => {
- let targetTab;
- return tabs.create(targetWindow.id, CLIENT_URL + '/a-pagenation?page=10').then((tab) => {
- targetTab = tab;
- return keys.press(targetTab.id, '[');
- }).then(() => {
- return keys.press(targetTab.id, '[');
- }).then(() => {
- return new Promise(resolve => { setTimeout(() => resolve(), 10) });
- }).then(() => {
- return tabs.get(targetTab.id);
- }).then((tab) => {
- expect(tab.url).to.be.equal(CLIENT_URL + '/a-pagenation?page=9');
- });
+ it('goes previous page by <a>', async () => {
+ let tab = await tabs.create(targetWindow.id, CLIENT_URL + '/a-pagenation?page=10');
+ await keys.press(tab.id, '[');
+ await keys.press(tab.id, '[');
+ await new Promise(resolve => { setTimeout(() => resolve(), 10) });
+
+ tab = await tabs.get(tab.id);
+ expect(tab.url).to.be.equal(CLIENT_URL + '/a-pagenation?page=9');
})
- it('goes next page by <a>', () => {
- let targetTab;
- return tabs.create(targetWindow.id, CLIENT_URL + '/a-pagenation?page=10').then((tab) => {
- targetTab = tab;
- return keys.press(targetTab.id, ']');
- }).then(() => {
- return keys.press(targetTab.id, ']');
- }).then(() => {
- return new Promise(resolve => { setTimeout(() => resolve(), 10) });
- }).then(() => {
- return tabs.get(targetTab.id);
- }).then((tab) => {
- expect(tab.url).to.be.equal(CLIENT_URL + '/a-pagenation?page=11');
- });
+ it('goes next page by <a>', async () => {
+ let tab = await tabs.create(targetWindow.id, CLIENT_URL + '/a-pagenation?page=10');
+ await keys.press(tab.id, ']');
+ await keys.press(tab.id, ']');
+ await new Promise(resolve => { setTimeout(() => resolve(), 10) });
+
+ tab = await tabs.get(tab.id);
+ expect(tab.url).to.be.equal(CLIENT_URL + '/a-pagenation?page=11');
})
- it('goes previous page by <link>', () => {
- let targetTab;
- return tabs.create(targetWindow.id, CLIENT_URL + '/link-pagenation?page=10').then((tab) => {
- targetTab = tab;
- return keys.press(targetTab.id, '[');
- }).then(() => {
- return keys.press(targetTab.id, '[');
- }).then(() => {
- return new Promise(resolve => { setTimeout(() => resolve(), 10) });
- }).then(() => {
- return tabs.get(targetTab.id);
- }).then((tab) => {
- expect(tab.url).to.be.equal(CLIENT_URL + '/link-pagenation?page=9');
- });
+ it('goes previous page by <link>', async () => {
+ let tab = await tabs.create(targetWindow.id, CLIENT_URL + '/link-pagenation?page=10');
+ await keys.press(tab.id, '[');
+ await keys.press(tab.id, '[');
+ await new Promise(resolve => { setTimeout(() => resolve(), 10) });
+
+ tab = await tabs.get(tab.id);
+ expect(tab.url).to.be.equal(CLIENT_URL + '/link-pagenation?page=9');
})
- it('goes next page by <link>', () => {
- let targetTab;
- return tabs.create(targetWindow.id, CLIENT_URL + '/link-pagenation?page=10').then((tab) => {
- targetTab = tab;
- return keys.press(targetTab.id, ']');
- }).then(() => {
- return keys.press(targetTab.id, ']');
- }).then(() => {
- return new Promise(resolve => { setTimeout(() => resolve(), 10) });
- }).then(() => {
- return tabs.get(targetTab.id);
- }).then((tab) => {
- expect(tab.url).to.be.equal(CLIENT_URL + '/link-pagenation?page=11');
- });
+ it('goes next page by <link>', async () => {
+ let tab = await tabs.create(targetWindow.id, CLIENT_URL + '/link-pagenation?page=10');
+ await keys.press(tab.id, ']');
+ await keys.press(tab.id, ']');
+ await new Promise(resolve => { setTimeout(() => resolve(), 10) });
+
+ tab = await tabs.get(tab.id);
+ expect(tab.url).to.be.equal(CLIENT_URL + '/link-pagenation?page=11');
})
});
diff --git a/e2e/contents/scroll.test.js b/e2e/contents/scroll.test.js
index 9410343..f364890 100644
--- a/e2e/contents/scroll.test.js
+++ b/e2e/contents/scroll.test.js
@@ -8,142 +8,99 @@ describe("scroll test", () => {
let targetWindow;
let targetTab;
- before(() => {
- return windows.create().then((win) => {
- targetWindow = win;
- return tabs.create(targetWindow.id, CLIENT_URL + '/scroll');
- }).then((tab) => {
- targetTab = tab;
- });
+ before(async () => {
+ targetWindow = await windows.create();
+ targetTab = await tabs.create(targetWindow.id, CLIENT_URL + '/scroll');
});
- after(() => {
- return windows.remove(targetWindow.id);
+ after(async () => {
+ await windows.remove(targetWindow.id);
});
- it('scrolls up by k', () => {
- let before
- return scrolls.set(targetTab.id, 100, 100).then((scroll) => {
- before = scroll;
- return keys.press(targetTab.id, 'k');
- }).then(() => {
- return scrolls.get(targetTab.id);
- }).then((actual) => {
- expect(actual.y).to.be.lessThan(before.y);
- });
+ it('scrolls up by k', async () => {
+ let before = await scrolls.set(targetTab.id, 100, 100);
+ await keys.press(targetTab.id, 'k');
+
+ let actual = await scrolls.get(targetTab.id);
+ expect(actual.y).to.be.lessThan(before.y);
});
- it('scrolls down by j', () => {
- let before
- return scrolls.set(targetTab.id, 100, 100).then((scroll) => {
- before = scroll;
- return keys.press(targetTab.id, 'j');
- }).then(() => {
- return scrolls.get(targetTab.id);
- }).then((actual) => {
- expect(actual.y).to.be.greaterThan(before.y);
- });
+ it('scrolls down by j', async () => {
+ let before = await scrolls.set(targetTab.id, 100, 100);
+ await keys.press(targetTab.id, 'j');
+
+ let actual = await scrolls.get(targetTab.id);
+ expect(actual.y).to.be.greaterThan(before.y);
});
- it('scrolls left by h', () => {
- let before
- return scrolls.set(targetTab.id, 100, 100).then((scroll) => {
- before = scroll;
- return keys.press(targetTab.id, 'h');
- }).then(() => {
- return scrolls.get(targetTab.id);
- }).then((actual) => {
- expect(actual.x).to.be.lessThan(before.x);
- });
+ it('scrolls left by h', async () => {
+ let before = await scrolls.set(targetTab.id, 100, 100)
+ await keys.press(targetTab.id, 'h');
+
+ let actual = await scrolls.get(targetTab.id);
+ expect(actual.x).to.be.lessThan(before.x);
});
- it('scrolls top by gg', () => {
- return scrolls.set(targetTab.id, 100, 100).then((scroll) => {
- return keys.press(targetTab.id, 'g');
- }).then(() => {
- return keys.press(targetTab.id, 'g');
- }).then(() => {
- return scrolls.get(targetTab.id);
- }).then((actual) => {
- expect(actual.y).to.be.equals(0);
- });
+ it('scrolls top by gg', async () => {
+ await scrolls.set(targetTab.id, 100, 100);
+ await keys.press(targetTab.id, 'g');
+ await keys.press(targetTab.id, 'g');
+ let actual = await scrolls.get(targetTab.id);
+ expect(actual.y).to.be.equals(0);
});
- it('scrolls bottom by G', () => {
- return scrolls.set(targetTab.id, 100, 100).then((scroll) => {
- return keys.press(targetTab.id, 'G', { shiftKey: true });
- }).then(() => {
- return scrolls.get(targetTab.id);
- }).then((actual) => {
- expect(actual.y).to.be.equals(actual.yMax);
- });
+ it('scrolls bottom by G', async () => {
+ await scrolls.set(targetTab.id, 100, 100);
+ await keys.press(targetTab.id, 'G', { shiftKey: true });
+
+ let actual = await scrolls.get(targetTab.id);
+ expect(actual.y).to.be.equals(actual.yMax);
});
- it('scrolls bottom by 0', () => {
- return scrolls.set(targetTab.id, 100, 100).then((scroll) => {
- return keys.press(targetTab.id, '0');
- }).then(() => {
- return scrolls.get(targetTab.id);
- }).then((actual) => {
- expect(actual.x).to.be.equals(0);
- });
+ it('scrolls bottom by 0', async () => {
+ await scrolls.set(targetTab.id, 100, 100);
+ await keys.press(targetTab.id, '0');
+
+ let actual = await scrolls.get(targetTab.id);
+ expect(actual.x).to.be.equals(0);
});
- it('scrolls bottom by $', () => {
- return scrolls.set(targetTab.id, 100, 100).then((scroll) => {
- return keys.press(targetTab.id, '$');
- }).then(() => {
- return scrolls.get(targetTab.id);
- }).then((actual) => {
- expect(actual.x).to.be.equals(actual.xMax);
- });
+ it('scrolls bottom by $', async () => {
+ await scrolls.set(targetTab.id, 100, 100);
+ await keys.press(targetTab.id, '$');
+
+ let actual = await scrolls.get(targetTab.id);
+ expect(actual.x).to.be.equals(actual.xMax);
});
- it('scrolls bottom by <C-U>', () => {
- let before
- return scrolls.set(targetTab.id, 5000, 5000).then((scroll) => {
- before = scroll;
- return keys.press(targetTab.id, 'u', { ctrlKey: true });
- }).then(() => {
- return scrolls.get(targetTab.id);
- }).then((actual) => {
- expect(actual.y).to.closeTo(before.y - before.frameHeight / 2, 1);
- });
+ it('scrolls bottom by <C-U>', async () => {
+ let before = await scrolls.set(targetTab.id, 5000, 5000);
+ await keys.press(targetTab.id, 'u', { ctrlKey: true });
+
+ let actual = await scrolls.get(targetTab.id);
+ expect(actual.y).to.closeTo(before.y - before.frameHeight / 2, 1);
});
- it('scrolls bottom by <C-D>', () => {
- let before
- return scrolls.set(targetTab.id, 5000, 5000).then((scroll) => {
- before = scroll;
- return keys.press(targetTab.id, 'd', { ctrlKey: true });
- }).then(() => {
- return scrolls.get(targetTab.id);
- }).then((actual) => {
- expect(actual.y).to.closeTo(before.y + before.frameHeight / 2, 1);
- });
+ it('scrolls bottom by <C-D>', async () => {
+ let before = await scrolls.set(targetTab.id, 5000, 5000);
+ await keys.press(targetTab.id, 'd', { ctrlKey: true });
+
+ let actual = await scrolls.get(targetTab.id);
+ expect(actual.y).to.closeTo(before.y + before.frameHeight / 2, 1);
});
- it('scrolls bottom by <C-B>', () => {
- let before
- return scrolls.set(targetTab.id, 5000, 5000).then((scroll) => {
- before = scroll;
- return keys.press(targetTab.id, 'b', { ctrlKey: true });
- }).then(() => {
- return scrolls.get(targetTab.id);
- }).then((actual) => {
- expect(actual.y).to.equals(before.y - before.frameHeight);
- });
+ it('scrolls bottom by <C-B>', async () => {
+ let before = await scrolls.set(targetTab.id, 5000, 5000);
+ await keys.press(targetTab.id, 'b', { ctrlKey: true });
+
+ let actual = await await scrolls.get(targetTab.id);
+ expect(actual.y).to.equals(before.y - before.frameHeight);
});
- it('scrolls bottom by <C-F>', () => {
- let before
- return scrolls.set(targetTab.id, 5000, 5000).then((scroll) => {
- before = scroll;
- return keys.press(targetTab.id, 'f', { ctrlKey: true });
- }).then(() => {
- return scrolls.get(targetTab.id);
- }).then((actual) => {
- expect(actual.y).to.equals(before.y + before.frameHeight);
- });
+ it('scrolls bottom by <C-F>', async () => {
+ let before = await scrolls.set(targetTab.id, 5000, 5000);
+ await keys.press(targetTab.id, 'f', { ctrlKey: true });
+ let actual = await scrolls.get(targetTab.id);
+ expect(actual.y).to.equals(before.y + before.frameHeight);
});
});
diff --git a/e2e/contents/tab.test.js b/e2e/contents/tab.test.js
index 3846248..2d7f548 100644
--- a/e2e/contents/tab.test.js
+++ b/e2e/contents/tab.test.js
@@ -6,260 +6,161 @@ import { CLIENT_URL } from '../web-server/url';
describe("tab test", () => {
let targetWindow;
- beforeEach(() => {
- return windows.create(CLIENT_URL).then((win) => {
- targetWindow = win;
- });
+ beforeEach(async () => {
+ targetWindow = await windows.create(CLIENT_URL);
});
- afterEach(() => {
- return windows.remove(targetWindow.id);
+ afterEach(async () => {
+ await windows.remove(targetWindow.id);
});
- it('deletes tab by d', () => {
- let before;
- let targetTab;
- return tabs.create(targetWindow.id, CLIENT_URL).then((tab) => {
- targetTab = tab;
- return windows.get(targetWindow.id);
- }).then((win) => {
- before = win;
- return keys.press(targetTab.id, 'd');
- }).then(() => {
- return windows.get(targetWindow.id);
- }).then((actual) => {
- expect(actual.tabs).to.have.lengthOf(before.tabs.length - 1);
- });
+ it('deletes tab by d', async () => {
+ let tab = await tabs.create(targetWindow.id, CLIENT_URL);
+ let before = await windows.get(targetWindow.id);
+ await keys.press(tab.id, 'd');
+
+ let actual = await windows.get(targetWindow.id);
+ expect(actual.tabs).to.have.lengthOf(before.tabs.length - 1);
+ });
+
+ it('duplicates tab by zd', async () => {
+ let tab = await tabs.create(targetWindow.id, CLIENT_URL);
+ let before = await windows.get(targetWindow.id)
+ await keys.press(tab.id, 'z');
+ await keys.press(tab.id, 'd');
+
+ let actual = await windows.get(targetWindow.id);
+ expect(actual.tabs).to.have.lengthOf(before.tabs.length + 1);
+ });
+
+ it('makes pinned by zp', async () => {
+ let tab = await tabs.create(targetWindow.id, CLIENT_URL);
+ let before = await windows.get(targetWindow.id);
+ await keys.press(tab.id, 'z');
+ await keys.press(tab.id, 'p');
+
+ let actual = await windows.get(targetWindow.id);
+ expect(actual.tabs[0].pinned).to.be.true;
});
- it('duplicates tab by zd', () => {
- let before;
- let targetTab;
- return tabs.create(targetWindow.id, CLIENT_URL).then((tab) => {
- targetTab = tab;
- return windows.get(targetWindow.id)
- }).then((win) => {;
- before = win;
- return keys.press(targetTab.id, 'z');
- }).then(() => {
- return keys.press(targetTab.id, 'd');
- }).then(() => {
- return windows.get(targetWindow.id);
- }).then((actual) => {
- expect(actual.tabs).to.have.lengthOf(before.tabs.length + 1);
- });
- })
-
- it('makes pinned by zp', () => {
- let before;
- let targetTab;
- return tabs.create(targetWindow.id, CLIENT_URL).then((tab) => {
- targetTab = tab;
- return windows.get(targetWindow.id)
- }).then((win) => {;
- before = win;
- return keys.press(targetTab.id, 'z');
- }).then(() => {
- return keys.press(targetTab.id, 'p');
- }).then(() => {
- return windows.get(targetWindow.id);
- }).then((actual) => {
- expect(actual.tabs[0].pinned).to.be.true;
- });
- })
-
- it('selects previous tab by K', () => {
- return Promise.resolve().then(() => {
- return tabs.create(targetWindow.id, CLIENT_URL + '#1')
- }).then(() => {
- return tabs.create(targetWindow.id, CLIENT_URL + '#2')
- }).then(() => {
- return tabs.create(targetWindow.id, CLIENT_URL + '#3');
- }).then(() => {
- return tabs.selectAt(targetWindow.id, 2);
- }).then((tab) => {
- return keys.press(tab.id, 'K', { shiftKey: true });
- }).then(() => {
- return windows.get(targetWindow.id);
- }).then((win) => {
- expect(win.tabs[1].active).to.be.true;
- });
+ it('selects previous tab by K', async () => {
+ await tabs.create(targetWindow.id, CLIENT_URL + '#1');
+ await tabs.create(targetWindow.id, CLIENT_URL + '#2');
+ await tabs.create(targetWindow.id, CLIENT_URL + '#3');
+ let tab = await tabs.selectAt(targetWindow.id, 2);
+ await keys.press(tab.id, 'K', { shiftKey: true });
+
+ let win = await windows.get(targetWindow.id);
+ expect(win.tabs[1].active).to.be.true;
});
- it('selects previous tab by K rotatory', () => {
- return Promise.resolve().then(() => {
- return tabs.create(targetWindow.id, CLIENT_URL + '#1')
- }).then(() => {
- return tabs.create(targetWindow.id, CLIENT_URL + '#2')
- }).then(() => {
- return tabs.create(targetWindow.id, CLIENT_URL + '#3');
- }).then(() => {
- return tabs.selectAt(targetWindow.id, 0);
- }).then((tab) => {
- return keys.press(tab.id, 'K', { shiftKey: true });
- }).then(() => {
- return windows.get(targetWindow.id);
- }).then((win) => {
- expect(win.tabs[3].active).to.be.true;
- });
+ it('selects previous tab by K rotatory', async () => {
+ await tabs.create(targetWindow.id, CLIENT_URL + '#1');
+ await tabs.create(targetWindow.id, CLIENT_URL + '#2');
+ await tabs.create(targetWindow.id, CLIENT_URL + '#3');
+ let tab = await tabs.selectAt(targetWindow.id, 0);
+ await keys.press(tab.id, 'K', { shiftKey: true });
+
+ let win = await windows.get(targetWindow.id);
+ expect(win.tabs[3].active).to.be.true;
});
- it('selects next tab by J', () => {
- return Promise.resolve().then(() => {
- return tabs.create(targetWindow.id, CLIENT_URL + '#1')
- }).then(() => {
- return tabs.create(targetWindow.id, CLIENT_URL + '#2')
- }).then(() => {
- return tabs.create(targetWindow.id, CLIENT_URL + '#3');
- }).then(() => {
- return tabs.selectAt(targetWindow.id, 2);
- }).then((tab) => {
- return keys.press(tab.id, 'J', { shiftKey: true });
- }).then(() => {
- return windows.get(targetWindow.id);
- }).then((win) => {
- expect(win.tabs[3].active).to.be.true;
- });
+ it('selects next tab by J', async () => {
+ await tabs.create(targetWindow.id, CLIENT_URL + '#1');
+ await tabs.create(targetWindow.id, CLIENT_URL + '#2');
+ await tabs.create(targetWindow.id, CLIENT_URL + '#3');
+ let tab = await tabs.selectAt(targetWindow.id, 2);
+ await keys.press(tab.id, 'J', { shiftKey: true });
+
+ let win = await windows.get(targetWindow.id);
+ expect(win.tabs[3].active).to.be.true;
});
- it('selects previous tab by J rotatory', () => {
- return Promise.resolve().then(() => {
- return tabs.create(targetWindow.id, CLIENT_URL + '#1')
- }).then(() => {
- return tabs.create(targetWindow.id, CLIENT_URL + '#2')
- }).then(() => {
- return tabs.create(targetWindow.id, CLIENT_URL + '#3');
- }).then(() => {
- return tabs.selectAt(targetWindow.id, 3);
- }).then((tab) => {
- return keys.press(tab.id, 'J', { shiftKey: true });
- }).then(() => {
- return windows.get(targetWindow.id);
- }).then((win) => {
- expect(win.tabs[0].active).to.be.true;
- });
+ it('selects previous tab by J rotatory', async () => {
+ await tabs.create(targetWindow.id, CLIENT_URL + '#1');
+ await tabs.create(targetWindow.id, CLIENT_URL + '#2');
+ await tabs.create(targetWindow.id, CLIENT_URL + '#3');
+ let tab = await tabs.selectAt(targetWindow.id, 3);
+ await keys.press(tab.id, 'J', { shiftKey: true });
+
+ let win = await windows.get(targetWindow.id);
+ expect(win.tabs[0].active).to.be.true;
});
- it('selects first tab by g0', () => {
- return Promise.resolve().then(() => {
- return tabs.create(targetWindow.id, CLIENT_URL + '#1')
- }).then(() => {
- return tabs.create(targetWindow.id, CLIENT_URL + '#2')
- }).then(() => {
- return tabs.create(targetWindow.id, CLIENT_URL + '#3');
- }).then(() => {
- return tabs.selectAt(targetWindow.id, 2);
- }).then((tab) => {
- return keys.press(tab.id, 'g').then(() => tab);
- }).then((tab) => {
- return keys.press(tab.id, '0');
- }).then(() => {
- return windows.get(targetWindow.id);
- }).then((win) => {
- expect(win.tabs[0].active).to.be.true;
- });
+ it('selects first tab by g0', async () => {
+ await tabs.create(targetWindow.id, CLIENT_URL + '#1');
+ await tabs.create(targetWindow.id, CLIENT_URL + '#2');
+ await tabs.create(targetWindow.id, CLIENT_URL + '#3');
+ let tab = await tabs.selectAt(targetWindow.id, 2);
+ await keys.press(tab.id, 'g');
+ await keys.press(tab.id, '0');
+
+ let win = await windows.get(targetWindow.id);
+ expect(win.tabs[0].active).to.be.true;
});
- it('selects last tab by g$', () => {
- return Promise.resolve().then(() => {
- return tabs.create(targetWindow.id, CLIENT_URL + '#1')
- }).then(() => {
- return tabs.create(targetWindow.id, CLIENT_URL + '#2')
- }).then(() => {
- return tabs.create(targetWindow.id, CLIENT_URL + '#3');
- }).then(() => {
- return tabs.selectAt(targetWindow.id, 2);
- }).then((tab) => {
- return keys.press(tab.id, 'g').then(() => tab);
- }).then((tab) => {
- return keys.press(tab.id, '$');
- }).then(() => {
- return windows.get(targetWindow.id);
- }).then((win) => {
- expect(win.tabs[3].active).to.be.true;
- });
+ it('selects last tab by g$', async () => {
+ await tabs.create(targetWindow.id, CLIENT_URL + '#1');
+ await tabs.create(targetWindow.id, CLIENT_URL + '#2');
+ await tabs.create(targetWindow.id, CLIENT_URL + '#3');
+ let tab = await tabs.selectAt(targetWindow.id, 2);
+ await keys.press(tab.id, 'g');
+ await keys.press(tab.id, '$');
+
+ let win = await windows.get(targetWindow.id);
+ expect(win.tabs[3].active).to.be.true;
});
- it('selects last selected tab by <C-6>', () => {
- return Promise.resolve().then(() => {
- return tabs.create(targetWindow.id, CLIENT_URL + '#1')
- }).then(() => {
- return tabs.create(targetWindow.id, CLIENT_URL + '#2')
- }).then(() => {
- return tabs.create(targetWindow.id, CLIENT_URL + '#3');
- }).then(() => {
- return tabs.selectAt(targetWindow.id, 1);
- }).then(() => {
- return tabs.selectAt(targetWindow.id, 3);
- }).then((tab) => {
- return keys.press(tab.id, '6', { ctrlKey: true });
- }).then(() => {
- return windows.get(targetWindow.id);
- }).then((win) => {
- expect(win.tabs[1].active).to.be.true;
- });
+ it('selects last selected tab by <C-6>', async () => {
+ await tabs.create(targetWindow.id, CLIENT_URL + '#1');
+ await tabs.create(targetWindow.id, CLIENT_URL + '#2');
+ await tabs.create(targetWindow.id, CLIENT_URL + '#3');
+ await tabs.selectAt(targetWindow.id, 1);
+ let tab = await tabs.selectAt(targetWindow.id, 3);
+ await keys.press(tab.id, '6', { ctrlKey: true });
+
+ let win = await windows.get(targetWindow.id);
+ expect(win.tabs[1].active).to.be.true;
});
- it('deletes tab by d', () => {
- return Promise.resolve().then(() => {
- return tabs.create(targetWindow.id, CLIENT_URL + '#1');
- }).then((tab) => {
- return keys.press(tab.id, 'd');
- }).then(() => {
- return windows.get(targetWindow.id);
- }).then((win) => {
- expect(win.tabs).to.have.lengthOf(1);
- });
+ it('deletes tab by d', async () => {
+ let tab = await tabs.create(targetWindow.id, CLIENT_URL + '#1');
+ await keys.press(tab.id, 'd');
+
+ let win = await windows.get(targetWindow.id);
+ expect(win.tabs).to.have.lengthOf(1);
});
- it('reopen tab by u', () => {
- return Promise.resolve().then(() => {
- return tabs.create(targetWindow.id, CLIENT_URL + '#1');
- }).then((tab) => {
- return keys.press(tab.id, 'd');
- }).then(() => {
- return windows.get(targetWindow.id);
- }).then((win) => {
- expect(win.tabs).to.have.lengthOf(1);
- return keys.press(win.tabs[0].id, 'u');
- }).then(() => {
- return new Promise((resolve) => setTimeout(resolve, 100));
- }).then(() => {
- return windows.get(targetWindow.id);
- }).then((win) => {
- expect(win.tabs).to.have.lengthOf(2);
- });
+ it('reopen tab by u', async () => {
+ let tab = await tabs.create(targetWindow.id, CLIENT_URL + '#1');
+ await keys.press(tab.id, 'd');
+
+ let win = await windows.get(targetWindow.id);
+ expect(win.tabs).to.have.lengthOf(1);
+
+ await keys.press(win.tabs[0].id, 'u');
+ await new Promise((resolve) => setTimeout(resolve, 100));
+
+ win = await windows.get(targetWindow.id);
+ expect(win.tabs).to.have.lengthOf(2);
});
- it('does not delete pinned tab by d', () => {
- return Promise.resolve().then(() => {
- return tabs.create(targetWindow.id, CLIENT_URL + '#1');
- }).then((tab) => {
- return tabs.update(tab.id, { pinned: true });
- }).then((tab) => {
- return keys.press(tab.id, 'd');
- }).then(() => {
- return windows.get(targetWindow.id);
- }).then((win) => {
- expect(win.tabs).to.have.lengthOf(2);
- });
+ it('does not delete pinned tab by d', async () => {
+ let tab = await tabs.create(targetWindow.id, CLIENT_URL + '#1');
+ tab = await tabs.update(tab.id, { pinned: true });
+ await keys.press(tab.id, 'd');
+
+ let win = await windows.get(targetWindow.id);
+ expect(win.tabs).to.have.lengthOf(2);
});
- it('deletes pinned tab by !d', () => {
- let target;
- return Promise.resolve().then(() => {
- return tabs.create(targetWindow.id, CLIENT_URL + '#1');
- }).then((tab) => {
- return tabs.update(tab.id, { pinned: true });
- }).then((tab) => {
- target = tab;
- return keys.press(target.id, '!');
- }).then(() => {
- return keys.press(target.id, 'd');
- }).then(() => {
- return windows.get(targetWindow.id);
- }).then((win) => {
- expect(win.tabs).to.have.lengthOf(1);
- });
+ it('deletes pinned tab by !d', async () => {
+ let tab = await tabs.create(targetWindow.id, CLIENT_URL + '#1');
+ tab = await tabs.update(tab.id, { pinned: true });
+ await keys.press(tab.id, '!');
+ await keys.press(tab.id, 'd');
+
+ let win = await windows.get(targetWindow.id);
+ expect(win.tabs).to.have.lengthOf(1);
});
});
diff --git a/e2e/contents/zoom.test.js b/e2e/contents/zoom.test.js
index c7efc93..2d90e28 100644
--- a/e2e/contents/zoom.test.js
+++ b/e2e/contents/zoom.test.js
@@ -7,64 +7,44 @@ describe("zoom test", () => {
let targetWindow;
let targetTab;
- before(() => {
- return windows.create(CLIENT_URL).then((win) => {
- targetWindow = win;
- });
+ before(async () => {
+ targetWindow = await windows.create(CLIENT_URL);
});
- after(() => {
- return windows.remove(targetWindow.id);
+ after(async () => {
+ await windows.remove(targetWindow.id);
});
- beforeEach(() => {
- return tabs.create(targetWindow.id, CLIENT_URL).then((tab) => {
- targetTab = tab;
- });
+ beforeEach(async () => {
+ targetTab = await tabs.create(targetWindow.id, CLIENT_URL);
});
- it('zooms-in by zi', () => {
- let before;
- return tabs.getZoom(targetTab.id).then((zoom) => {
- before = zoom;
- return keys.press(targetTab.id, 'z');
- }).then(() => {
- return keys.press(targetTab.id, 'i');
- }).then(() => {
- return tabs.getZoom(targetTab.id);
- }).then((actual) => {
- expect(actual).to.be.greaterThan(before);
- });
+ it('zooms-in by zi', async () => {
+ let before = await tabs.getZoom(targetTab.id);
+ await keys.press(targetTab.id, 'z');
+ await keys.press(targetTab.id, 'i');
+
+ let actual = await tabs.getZoom(targetTab.id);
+ expect(actual).to.be.greaterThan(before);
});
- it('zooms-in by zo', () => {
- let before;
- return tabs.getZoom(targetTab.id).then((zoom) => {
- before = zoom;
- return keys.press(targetTab.id, 'z');
- }).then(() => {
- return keys.press(targetTab.id, 'o');
- }).then(() => {
- return tabs.getZoom(targetTab.id);
- }).then((actual) => {
- expect(actual).to.be.lessThan(before);
- });
+ it('zooms-in by zo', async () => {
+ let before = await tabs.getZoom(targetTab.id);
+ await keys.press(targetTab.id, 'z');
+ await keys.press(targetTab.id, 'o');
+
+ let actual = await tabs.getZoom(targetTab.id);
+ expect(actual).to.be.lessThan(before);
});
- it('zooms-in by zz', () => {
- let before;
- tabs.setZoom(targetTab.id, 1.5).then(() => {
- return tabs.getZoom(targetTab.id);
- }).then((zoom) => {
- before = zoom;
- return keys.press(targetTab.id, 'z');
- }).then(() => {
- return keys.press(targetTab.id, 'z');
- }).then(() => {
- return tabs.getZoom(targetTab.id);
- }).then((actual) => {
- expect(actual).to.be.lessThan(before);
- expect(actual).to.be.be(1);
- });
+ it('zooms-in by zz', async () => {
+ await tabs.setZoom(targetTab.id, 1.5);
+ let before = await tabs.getZoom(targetTab.id);
+ await keys.press(targetTab.id, 'z');
+ await keys.press(targetTab.id, 'z');
+
+ let actual = await tabs.getZoom(targetTab.id);
+ expect(actual).to.be.lessThan(before);
+ expect(actual).to.equal(1);
});
});
diff --git a/src/background/actions/command.js b/src/background/actions/command.js
index f1ee5b5..a6e426a 100644
--- a/src/background/actions/command.js
+++ b/src/background/actions/command.js
@@ -5,56 +5,63 @@ import * as bookmarks from '../shared/bookmarks';
import * as parsers from 'shared/commands/parsers';
import * as properties from 'shared/settings/properties';
-const openCommand = (url) => {
- return browser.tabs.query({
+const openCommand = async(url) => {
+ let got = await browser.tabs.query({
active: true, currentWindow: true
- }).then((gotTabs) => {
- if (gotTabs.length > 0) {
- return browser.tabs.update(gotTabs[0].id, { url: url });
- }
});
+ if (got.length > 0) {
+ return browser.tabs.update(got[0].id, { url: url });
+ }
};
const tabopenCommand = (url) => {
return browser.tabs.create({ url: url });
};
-const tabcloseCommand = () => {
- return browser.tabs.query({
+const tabcloseCommand = async() => {
+ let got = await browser.tabs.query({
active: true, currentWindow: true
- }).then((tabList) => {
- return browser.tabs.remove(tabList.map(tab => tab.id));
});
+ return browser.tabs.remove(got.map(tab => tab.id));
};
const winopenCommand = (url) => {
return browser.windows.create({ url });
};
-const bufferCommand = (keywords) => {
+const bufferCommand = async(keywords) => {
if (keywords.length === 0) {
return Promise.resolve([]);
}
let keywordsStr = keywords.join(' ');
- return browser.tabs.query({
+ let got = await browser.tabs.query({
active: true, currentWindow: true
- }).then((gotTabs) => {
- if (gotTabs.length > 0) {
- if (isNaN(keywordsStr)) {
- return tabs.selectByKeyword(gotTabs[0], keywordsStr);
- }
- let index = parseInt(keywordsStr, 10) - 1;
- return tabs.selectAt(index);
- }
});
+ if (got.length === 0) {
+ return;
+ }
+ if (isNaN(keywordsStr)) {
+ return tabs.selectByKeyword(got[0], keywordsStr);
+ }
+ let index = parseInt(keywordsStr, 10) - 1;
+ return tabs.selectAt(index);
};
-const addBookmarkCommand = (tab, args) => {
+const addbookmarkCommand = async(tab, args) => {
if (!args[0]) {
- return Promise.resolve();
+ return;
}
-
- return bookmarks.create(args.join(' '), tab.url);
+ let item = await bookmarks.create(args.join(' '), tab.url);
+ if (!item) {
+ return browser.tabs.sendMessage(tab.id, {
+ type: messages.CONSOLE_SHOW_ERROR,
+ text: 'Could not create a bookmark',
+ });
+ }
+ return browser.tabs.sendMessage(tab.id, {
+ type: messages.CONSOLE_SHOW_INFO,
+ text: 'Saved current page: ' + item.url,
+ });
};
const setCommand = (args) => {
@@ -100,18 +107,7 @@ const exec = (tab, line, settings) => {
case 'bdeletes!':
return tabs.closeTabsByKeywordsForce(args.join(' '));
case 'addbookmark':
- return addBookmarkCommand(tab, args).then((item) => {
- if (!item) {
- return browser.tabs.sendMessage(tab.id, {
- type: messages.CONSOLE_SHOW_ERROR,
- text: 'Could not create a bookmark',
- });
- }
- return browser.tabs.sendMessage(tab.id, {
- type: messages.CONSOLE_SHOW_INFO,
- text: 'Saved current page: ' + item.url,
- });
- });
+ return addbookmarkCommand(tab, args);
case 'set':
return setCommand(args);
case 'q':
diff --git a/src/background/actions/setting.js b/src/background/actions/setting.js
index 773142f..7eeb5de 100644
--- a/src/background/actions/setting.js
+++ b/src/background/actions/setting.js
@@ -1,13 +1,12 @@
import actions from '../actions';
import * as settingsStorage from 'shared/settings/storage';
-const load = () => {
- return settingsStorage.loadValue().then((value) => {
- return {
- type: actions.SETTING_SET_SETTINGS,
- value,
- };
- });
+const load = async() => {
+ let value = await settingsStorage.loadValue();
+ return {
+ type: actions.SETTING_SET_SETTINGS,
+ value,
+ };
};
const setProperty = (name, value) => {
diff --git a/src/background/actions/tab.js b/src/background/actions/tab.js
index 0d439fd..5cf1e8c 100644
--- a/src/background/actions/tab.js
+++ b/src/background/actions/tab.js
@@ -1,19 +1,20 @@
import actions from './index';
-const openNewTab = (url, openerTabId, background = false, adjacent = false) => {
- if (adjacent) {
- return browser.tabs.query({
- active: true, currentWindow: true
- }).then((tabs) => {
- return browser.tabs.create({
- url,
- openerTabId,
- active: !background,
- index: tabs[0].index + 1
- });
- });
+const openNewTab = async(
+ url, openerTabId, background = false, adjacent = false
+) => {
+ if (!adjacent) {
+ return browser.tabs.create({ url, active: !background });
}
- return browser.tabs.create({ url, active: !background });
+ let tabs = await browser.tabs.query({
+ active: true, currentWindow: true
+ });
+ return browser.tabs.create({
+ url,
+ openerTabId,
+ active: !background,
+ index: tabs[0].index + 1
+ });
};
const openToTab = (url, tab) => {
diff --git a/src/background/components/background.js b/src/background/components/background.js
index 29124a6..c7a79a1 100644
--- a/src/background/components/background.js
+++ b/src/background/components/background.js
@@ -56,13 +56,12 @@ export default class BackgroundComponent {
}
}
- broadcastSettingsChanged() {
- return browser.tabs.query({}).then((tabs) => {
- for (let tab of tabs) {
- browser.tabs.sendMessage(tab.id, {
- type: messages.SETTINGS_CHANGED,
- });
- }
- });
+ async broadcastSettingsChanged() {
+ let tabs = await browser.tabs.query({});
+ for (let tab of tabs) {
+ browser.tabs.sendMessage(tab.id, {
+ type: messages.SETTINGS_CHANGED,
+ });
+ }
}
}
diff --git a/src/background/components/indicator.js b/src/background/components/indicator.js
index cceb119..1ded329 100644
--- a/src/background/components/indicator.js
+++ b/src/background/components/indicator.js
@@ -8,19 +8,17 @@ export default class IndicatorComponent {
messages.onMessage(this.onMessage.bind(this));
browser.browserAction.onClicked.addListener(this.onClicked);
- browser.tabs.onActivated.addListener((info) => {
- return browser.tabs.query({ currentWindow: true }).then(() => {
- return this.onTabActivated(info);
- });
+ browser.tabs.onActivated.addListener(async(info) => {
+ await browser.tabs.query({ currentWindow: true });
+ return this.onTabActivated(info);
});
}
- onTabActivated(info) {
- return browser.tabs.sendMessage(info.tabId, {
+ async onTabActivated(info) {
+ let { enabled } = await browser.tabs.sendMessage(info.tabId, {
type: messages.ADDON_ENABLED_QUERY,
- }).then((resp) => {
- return this.updateIndicator(resp.enabled);
});
+ return this.updateIndicator(enabled);
}
onClicked(tab) {
diff --git a/src/background/components/tab.js b/src/background/components/tab.js
index b273546..6af3fd7 100644
--- a/src/background/components/tab.js
+++ b/src/background/components/tab.js
@@ -4,10 +4,9 @@ export default class TabComponent {
constructor(store) {
this.store = store;
- browser.tabs.onActivated.addListener((info) => {
- return browser.tabs.query({ currentWindow: true }).then(() => {
- return this.onTabActivated(info);
- });
+ browser.tabs.onActivated.addListener(async(info) => {
+ await browser.tabs.query({ currentWindow: true });
+ return this.onTabActivated(info);
});
}
diff --git a/src/background/index.js b/src/background/index.js
index 3f1013c..02de53f 100644
--- a/src/background/index.js
+++ b/src/background/index.js
@@ -18,6 +18,15 @@ const store = createStore(reducers, (e, sender) => {
}
});
+const checkAndNotifyUpdated = async() => {
+ let updated = await versions.checkUpdated();
+ if (!updated) {
+ return;
+ }
+ await versions.notify();
+ await versions.commit();
+};
+
/* eslint-disable no-unused-vars */
const backgroundComponent = new BackgroundComponent(store);
const operationComponent = new OperationComponent(store);
@@ -27,11 +36,4 @@ const indicatorComponent = new IndicatorComponent(store);
store.dispatch(settingActions.load());
-versions.checkUpdated().then((updated) => {
- if (!updated) {
- return;
- }
- return versions.notify();
-}).then(() => {
- return versions.commit();
-});
+checkAndNotifyUpdated();
diff --git a/src/background/shared/completions/bookmarks.js b/src/background/shared/completions/bookmarks.js
index 1adb350..bd753af 100644
--- a/src/background/shared/completions/bookmarks.js
+++ b/src/background/shared/completions/bookmarks.js
@@ -1,15 +1,14 @@
-const getCompletions = (keywords) => {
- return browser.bookmarks.search({ query: keywords }).then((items) => {
- return items.filter((item) => {
- let url = undefined;
- try {
- url = new URL(item.url);
- } catch (e) {
- return false;
- }
- return item.type === 'bookmark' && url.protocol !== 'place:';
- }).slice(0, 10);
- });
+const getCompletions = async(keywords) => {
+ let items = await browser.bookmarks.search({ query: keywords });
+ return items.filter((item) => {
+ let url = undefined;
+ try {
+ url = new URL(item.url);
+ } catch (e) {
+ return false;
+ }
+ return item.type === 'bookmark' && url.protocol !== 'place:';
+ }).slice(0, 10);
};
export { getCompletions };
diff --git a/src/background/shared/completions/histories.js b/src/background/shared/completions/histories.js
index a7d3d47..2d35401 100644
--- a/src/background/shared/completions/histories.js
+++ b/src/background/shared/completions/histories.js
@@ -61,23 +61,22 @@ const reduceByOrigin = (items, min) => {
return filtered;
};
-const getCompletions = (keyword) => {
- return browser.history.search({
+const getCompletions = async(keyword) => {
+ let historyItems = await browser.history.search({
text: keyword,
startTime: 0,
- }).then((historyItems) => {
- return [historyItems.map(item => [item, new URL(item.url)])]
- .map(filterEmptyTitle)
- .map(filterHttp)
- .map(filterClosedPath)
- .map(items => reduceByPathname(items, 10))
- .map(items => reduceByOrigin(items, 10))
- .map(items => items
- .sort((x, y) => x[0].visitCount < y[0].visitCount)
- .slice(0, 10)
- .map(item => item[0])
- )[0];
});
+ return [historyItems.map(item => [item, new URL(item.url)])]
+ .map(filterEmptyTitle)
+ .map(filterHttp)
+ .map(filterClosedPath)
+ .map(items => reduceByPathname(items, 10))
+ .map(items => reduceByOrigin(items, 10))
+ .map(items => items
+ .sort((x, y) => x[0].visitCount < y[0].visitCount)
+ .slice(0, 10)
+ .map(item => item[0])
+ )[0];
};
export { getCompletions };
diff --git a/src/background/shared/completions/index.js b/src/background/shared/completions/index.js
index 728cee7..d5875fe 100644
--- a/src/background/shared/completions/index.js
+++ b/src/background/shared/completions/index.js
@@ -12,76 +12,66 @@ const getSearchCompletions = (command, keywords, searchConfig) => {
return Promise.resolve(engineItems);
};
-const getHistoryCompletions = (command, keywords) => {
- return histories.getCompletions(keywords).then((pages) => {
- return pages.map((page) => {
- return {
- caption: page.title,
- content: command + ' ' + page.url,
- url: page.url
- };
- });
+const getHistoryCompletions = async(command, keywords) => {
+ let items = await histories.getCompletions(keywords);
+ return items.map((page) => {
+ return {
+ caption: page.title,
+ content: command + ' ' + page.url,
+ url: page.url
+ };
});
};
-const getBookmarksCompletions = (command, keywords) => {
- return bookmarks.getCompletions(keywords).then((items) => {
- return items.map((item) => {
- return {
- caption: item.title,
- content: command + ' ' + item.url,
- url: item.url,
- };
- });
- });
+const getBookmarksCompletions = async(command, keywords) => {
+ let items = await bookmarks.getCompletions(keywords);
+ return items.map(item => ({
+ caption: item.title,
+ content: command + ' ' + item.url,
+ url: item.url,
+ }));
};
-const getOpenCompletions = (command, keywords, searchConfig) => {
- return Promise.all([
- getSearchCompletions(command, keywords, searchConfig),
- getHistoryCompletions(command, keywords),
- getBookmarksCompletions(command, keywords),
- ]).then(([engineItems, historyItems, bookmarkItems]) => {
- let completions = [];
- if (engineItems.length > 0) {
- completions.push({
- name: 'Search Engines',
- items: engineItems
- });
- }
- if (historyItems.length > 0) {
- completions.push({
- name: 'History',
- items: historyItems
- });
- }
- if (bookmarkItems.length > 0) {
- completions.push({
- name: 'Bookmarks',
- items: bookmarkItems
- });
- }
- return completions;
- });
+const getOpenCompletions = async(command, keywords, searchConfig) => {
+ let engineItems = await getSearchCompletions(command, keywords, searchConfig);
+ let historyItems = await getHistoryCompletions(command, keywords);
+ let bookmarkItems = await getBookmarksCompletions(command, keywords);
+ let completions = [];
+ if (engineItems.length > 0) {
+ completions.push({
+ name: 'Search Engines',
+ items: engineItems
+ });
+ }
+ if (historyItems.length > 0) {
+ completions.push({
+ name: 'History',
+ items: historyItems
+ });
+ }
+ if (bookmarkItems.length > 0) {
+ completions.push({
+ name: 'Bookmarks',
+ items: bookmarkItems
+ });
+ }
+ return completions;
};
-const getBufferCompletions = (command, keywords, excludePinned) => {
- return tabs.getCompletions(keywords, excludePinned).then((got) => {
- let items = got.map((tab) => {
- return {
- caption: tab.title,
- content: command + ' ' + tab.title,
- url: tab.url,
- icon: tab.favIconUrl
- };
- });
- return [
- {
- name: 'Buffers',
- items: items
- }
- ];
- });
+const getBufferCompletions = async(command, keywords, excludePinned) => {
+ let items = await tabs.getCompletions(keywords, excludePinned);
+ items = items.map(tab => ({
+ caption: tab.title,
+ content: command + ' ' + tab.title,
+ url: tab.url,
+ icon: tab.favIconUrl
+ }));
+ return [
+ {
+ name: 'Buffers',
+ items: items
+ }
+ ];
};
const getCompletions = (line, settings) => {
diff --git a/src/background/shared/tabs.js b/src/background/shared/tabs.js
index 5c67a9f..33a4fac 100644
--- a/src/background/shared/tabs.js
+++ b/src/background/shared/tabs.js
@@ -1,143 +1,127 @@
import * as tabCompletions from './completions/tabs';
-const closeTab = (id) => {
- return browser.tabs.get(id).then((tab) => {
- if (!tab.pinned) {
- return browser.tabs.remove(id);
- }
- });
+const closeTab = async(id) => {
+ let tab = await browser.tabs.get(id);
+ if (!tab.pinned) {
+ return browser.tabs.remove(id);
+ }
};
const closeTabForce = (id) => {
return browser.tabs.remove(id);
};
-const queryByKeyword = (keyword, excludePinned = false) => {
- return browser.tabs.query({ currentWindow: true }).then((tabs) => {
- return tabs.filter((t) => {
- return t.url.toLowerCase().includes(keyword.toLowerCase()) ||
- t.title && t.title.toLowerCase().includes(keyword.toLowerCase());
- }).filter((t) => {
- return !(excludePinned && t.pinned);
- });
+const queryByKeyword = async(keyword, excludePinned = false) => {
+ let tabs = await browser.tabs.query({ currentWindow: true });
+ return tabs.filter((t) => {
+ return t.url.toLowerCase().includes(keyword.toLowerCase()) ||
+ t.title && t.title.toLowerCase().includes(keyword.toLowerCase());
+ }).filter((t) => {
+ return !(excludePinned && t.pinned);
});
};
-const closeTabByKeywords = (keyword) => {
- return queryByKeyword(keyword, false).then((tabs) => {
- if (tabs.length === 0) {
- throw new Error('No matching buffer for ' + keyword);
- } else if (tabs.length > 1) {
- throw new Error('More than one match for ' + keyword);
- }
- browser.tabs.remove(tabs[0].id);
- });
-};
-
-const closeTabByKeywordsForce = (keyword) => {
- return queryByKeyword(keyword, true).then((tabs) => {
- if (tabs.length === 0) {
- throw new Error('No matching buffer for ' + keyword);
- } else if (tabs.length > 1) {
- throw new Error('More than one match for ' + keyword);
- }
- browser.tabs.remove(tabs[0].id);
- });
+const closeTabByKeywords = async(keyword) => {
+ let tabs = await queryByKeyword(keyword, false);
+ if (tabs.length === 0) {
+ throw new Error('No matching buffer for ' + keyword);
+ } else if (tabs.length > 1) {
+ throw new Error('More than one match for ' + keyword);
+ }
+ return browser.tabs.remove(tabs[0].id);
};
-const closeTabsByKeywords = (keyword) => {
- tabCompletions.getCompletions(keyword).then((tabs) => {
- let tabs2 = tabs.filter(tab => !tab.pinned);
- browser.tabs.remove(tabs2.map(tab => tab.id));
- });
+const closeTabByKeywordsForce = async(keyword) => {
+ let tabs = await queryByKeyword(keyword, true);
+ if (tabs.length === 0) {
+ throw new Error('No matching buffer for ' + keyword);
+ } else if (tabs.length > 1) {
+ throw new Error('More than one match for ' + keyword);
+ }
+ return browser.tabs.remove(tabs[0].id);
};
-const closeTabsByKeywordsForce = (keyword) => {
- tabCompletions.getCompletions(keyword).then((tabs) => {
- browser.tabs.remove(tabs.map(tab => tab.id));
- });
+const closeTabsByKeywords = async(keyword) => {
+ let tabs = await tabCompletions.getCompletions(keyword);
+ tabs = tabs.filter(tab => !tab.pinned);
+ return browser.tabs.remove(tabs.map(tab => tab.id));
};
-const reopenTab = () => {
- let window = null;
- return browser.windows.getCurrent().then().then((w) => {
- window = w;
- return browser.sessions.getRecentlyClosed();
- }).then((sessions) => {
- let session = sessions.find((s) => {
- return s.tab && s.tab.windowId === window.id;
- });
- if (!session) {
- return;
- }
- if (session.tab) {
- return browser.sessions.restore(session.tab.sessionId);
- }
- return browser.sessions.restore(session.window.sessionId);
- });
+const closeTabsByKeywordsForce = async(keyword) => {
+ let tabs = await tabCompletions.getCompletions(keyword);
+ return browser.tabs.remove(tabs.map(tab => tab.id));
};
-const selectAt = (index) => {
- return browser.tabs.query({ currentWindow: true }).then((tabs) => {
- if (tabs.length < 2) {
- return;
- }
- if (index < 0 || tabs.length <= index) {
- throw new RangeError(`tab ${index + 1} does not exist`);
- }
- let id = tabs[index].id;
- return browser.tabs.update(id, { active: true });
+const reopenTab = async() => {
+ let window = await browser.windows.getCurrent();
+ let sessions = await browser.sessions.getRecentlyClosed();
+ let session = sessions.find((s) => {
+ return s.tab && s.tab.windowId === window.id;
});
+ if (!session) {
+ return;
+ }
+ if (session.tab) {
+ return browser.sessions.restore(session.tab.sessionId);
+ }
+ return browser.sessions.restore(session.window.sessionId);
+};
+
+const selectAt = async(index) => {
+ let tabs = await browser.tabs.query({ currentWindow: true });
+ if (tabs.length < 2) {
+ return;
+ }
+ if (index < 0 || tabs.length <= index) {
+ throw new RangeError(`tab ${index + 1} does not exist`);
+ }
+ let id = tabs[index].id;
+ return browser.tabs.update(id, { active: true });
};
-const selectByKeyword = (current, keyword) => {
- return queryByKeyword(keyword).then((tabs) => {
- if (tabs.length === 0) {
- throw new RangeError('No matching buffer for ' + keyword);
+const selectByKeyword = async(current, keyword) => {
+ let tabs = await queryByKeyword(keyword);
+ if (tabs.length === 0) {
+ throw new RangeError('No matching buffer for ' + keyword);
+ }
+ for (let tab of tabs) {
+ if (tab.index > current.index) {
+ return browser.tabs.update(tab.id, { active: true });
}
- for (let tab of tabs) {
- if (tab.index > current.index) {
- return browser.tabs.update(tab.id, { active: true });
- }
- }
- return browser.tabs.update(tabs[0].id, { active: true });
- });
+ }
+ return browser.tabs.update(tabs[0].id, { active: true });
};
-const selectPrevTab = (current, count) => {
- return browser.tabs.query({ currentWindow: true }).then((tabs) => {
- if (tabs.length < 2) {
- return;
- }
- let select = (current - count + tabs.length) % tabs.length;
- let id = tabs[select].id;
- return browser.tabs.update(id, { active: true });
- });
+const selectPrevTab = async(current, count) => {
+ let tabs = await browser.tabs.query({ currentWindow: true });
+ if (tabs.length < 2) {
+ return;
+ }
+ let select = (current - count + tabs.length) % tabs.length;
+ let id = tabs[select].id;
+ return browser.tabs.update(id, { active: true });
};
-const selectNextTab = (current, count) => {
- return browser.tabs.query({ currentWindow: true }).then((tabs) => {
- if (tabs.length < 2) {
- return;
- }
- let select = (current + count) % tabs.length;
- let id = tabs[select].id;
- return browser.tabs.update(id, { active: true });
- });
+const selectNextTab = async(current, count) => {
+ let tabs = await browser.tabs.query({ currentWindow: true });
+ if (tabs.length < 2) {
+ return;
+ }
+ let select = (current + count) % tabs.length;
+ let id = tabs[select].id;
+ return browser.tabs.update(id, { active: true });
};
-const selectFirstTab = () => {
- return browser.tabs.query({ currentWindow: true }).then((tabs) => {
- let id = tabs[0].id;
- return browser.tabs.update(id, { active: true });
- });
+const selectFirstTab = async() => {
+ let tabs = await browser.tabs.query({ currentWindow: true });
+ let id = tabs[0].id;
+ return browser.tabs.update(id, { active: true });
};
-const selectLastTab = () => {
- return browser.tabs.query({ currentWindow: true }).then((tabs) => {
- let id = tabs[tabs.length - 1].id;
- return browser.tabs.update(id, { active: true });
- });
+const selectLastTab = async() => {
+ let tabs = await browser.tabs.query({ currentWindow: true });
+ let id = tabs[tabs.length - 1].id;
+ return browser.tabs.update(id, { active: true });
};
const selectTab = (id) => {
@@ -152,14 +136,11 @@ const reload = (current, cache) => {
};
const updateTabPinned = (current, pinned) => {
- return browser.tabs.query({ currentWindow: true, active: true })
- .then(() => {
- return browser.tabs.update(current.id, { pinned: pinned });
- });
+ return browser.tabs.update(current.id, { pinned });
};
const toggleTabPinned = (current) => {
- updateTabPinned(current, !current.pinned);
+ return updateTabPinned(current, !current.pinned);
};
const duplicate = (id) => {
diff --git a/src/background/shared/zooms.js b/src/background/shared/zooms.js
index e3e2aa6..17b28fa 100644
--- a/src/background/shared/zooms.js
+++ b/src/background/shared/zooms.js
@@ -9,26 +9,20 @@ const ZOOM_SETTINGS = [
1.10, 1.25, 1.50, 1.75, 2.00, 2.50, 3.00
];
-const zoomIn = (tabId = undefined) => {
- return browser.tabs.getZoom(tabId).then((factor) => {
- for (let f of ZOOM_SETTINGS) {
- if (f > factor) {
- browser.tabs.setZoom(tabId, f);
- break;
- }
- }
- });
+const zoomIn = async(tabId = undefined) => {
+ let current = await browser.tabs.getZoom(tabId);
+ let factor = ZOOM_SETTINGS.find(f => f > current);
+ if (factor) {
+ return browser.tabs.setZoom(tabId, factor);
+ }
};
-const zoomOut = (tabId = undefined) => {
- return browser.tabs.getZoom(tabId).then((factor) => {
- for (let f of [].concat(ZOOM_SETTINGS).reverse()) {
- if (f < factor) {
- browser.tabs.setZoom(tabId, f);
- break;
- }
- }
- });
+const zoomOut = async(tabId = undefined) => {
+ let current = await browser.tabs.getZoom(tabId);
+ let factor = [].concat(ZOOM_SETTINGS).reverse().find(f => f < current);
+ if (factor) {
+ return browser.tabs.setZoom(tabId, factor);
+ }
};
const neutral = (tabId = undefined) => {
diff --git a/src/console/components/console.js b/src/console/components/console.js
index a9ae4ed..417c9f6 100644
--- a/src/console/components/console.js
+++ b/src/console/components/console.js
@@ -107,16 +107,15 @@ export default class ConsoleComponent {
}
}
- onInput(e) {
+ async onInput(e) {
this.store.dispatch(consoleActions.setConsoleText(e.target.value));
let source = e.target.value;
- return browser.runtime.sendMessage({
+ let completions = await browser.runtime.sendMessage({
type: messages.CONSOLE_QUERY_COMPLETIONS,
text: source,
- }).then((completions) => {
- this.store.dispatch(consoleActions.setCompletions(source, completions));
});
+ this.store.dispatch(consoleActions.setCompletions(source, completions));
}
onInputShown(state) {
diff --git a/src/content/actions/find.js b/src/content/actions/find.js
index 249a8a9..b3d7e30 100644
--- a/src/content/actions/find.js
+++ b/src/content/actions/find.js
@@ -35,47 +35,45 @@ const find = (string, backwards) => {
// NOTE: aWholeWord dows not implemented, and aSearchInFrames does not work
// because of same origin policy
+ let found = window.find(string, caseSensitive, backwards, wrapScan);
+ if (found) {
+ return found;
+ }
+ window.getSelection().removeAllRanges();
return window.find(string, caseSensitive, backwards, wrapScan);
};
-const findNext = (currentKeyword, reset, backwards) => {
+const findNext = async(currentKeyword, reset, backwards) => {
if (reset) {
window.getSelection().removeAllRanges();
}
- let promise = Promise.resolve(currentKeyword);
+ let keyword = currentKeyword;
if (currentKeyword) {
browser.runtime.sendMessage({
type: messages.FIND_SET_KEYWORD,
keyword: currentKeyword,
});
} else {
- promise = browser.runtime.sendMessage({
+ keyword = await browser.runtime.sendMessage({
type: messages.FIND_GET_KEYWORD,
});
}
+ if (!keyword) {
+ return postNoPrevious();
+ }
+ let found = find(keyword, backwards);
+ if (found) {
+ postPatternFound(keyword);
+ } else {
+ postPatternNotFound(keyword);
+ }
- return promise.then((keyword) => {
- if (!keyword) {
- return postNoPrevious();
- }
- let found = find(keyword, backwards);
- if (!found) {
- window.getSelection().removeAllRanges();
- found = find(keyword, backwards);
- }
- if (found) {
- postPatternFound(keyword);
- } else {
- postPatternNotFound(keyword);
- }
-
- return {
- type: actions.FIND_SET_KEYWORD,
- keyword,
- found,
- };
- });
+ return {
+ type: actions.FIND_SET_KEYWORD,
+ keyword,
+ found,
+ };
};
const next = (currentKeyword, reset) => {
diff --git a/src/content/components/common/index.js b/src/content/components/common/index.js
index 9b7b083..6437011 100644
--- a/src/content/components/common/index.js
+++ b/src/content/components/common/index.js
@@ -44,15 +44,16 @@ export default class Common {
}
}
- reloadSettings() {
- browser.runtime.sendMessage({
- type: messages.SETTINGS_QUERY,
- }).then((settings) => {
+ async reloadSettings() {
+ try {
+ let settings = await browser.runtime.sendMessage({
+ type: messages.SETTINGS_QUERY,
+ });
this.store.dispatch(settingActions.set(settings));
- }).catch((e) => {
+ } catch (e) {
// Sometime sendMessage fails when background script is not ready.
console.warn(e);
setTimeout(() => this.reloadSettings(), 500);
- });
+ }
}
}
diff --git a/src/settings/actions/setting.js b/src/settings/actions/setting.js
index 92c9f8a..1219ba5 100644
--- a/src/settings/actions/setting.js
+++ b/src/settings/actions/setting.js
@@ -4,20 +4,17 @@ import DefaultSettings from 'shared/settings/default';
import * as settingsStorage from 'shared/settings/storage';
import * as settingsValues from 'shared/settings/values';
-const load = () => {
- return settingsStorage.loadRaw().then((settings) => {
- return set(settings);
- });
+const load = async() => {
+ let settings = await settingsStorage.loadRaw();
+ return set(settings);
};
-const save = (settings) => {
- return settingsStorage.save(settings).then(() => {
- return browser.runtime.sendMessage({
- type: messages.SETTINGS_RELOAD
- });
- }).then(() => {
- return set(settings);
+const save = async(settings) => {
+ await settingsStorage.save(settings);
+ await browser.runtime.sendMessage({
+ type: messages.SETTINGS_RELOAD
});
+ return set(settings);
};
const set = (settings) => {
diff --git a/src/shared/settings/storage.js b/src/shared/settings/storage.js
index 9b8045d..87843ed 100644
--- a/src/shared/settings/storage.js
+++ b/src/shared/settings/storage.js
@@ -1,30 +1,28 @@
import DefaultSettings from './default';
import * as settingsValues from './values';
-const loadRaw = () => {
- return browser.storage.local.get('settings').then(({ settings }) => {
- if (!settings) {
- return DefaultSettings;
- }
- return Object.assign({}, DefaultSettings, settings);
- });
+const loadRaw = async() => {
+ let { settings } = await browser.storage.local.get('settings');
+ if (!settings) {
+ return DefaultSettings;
+ }
+ return Object.assign({}, DefaultSettings, settings);
};
-const loadValue = () => {
- return loadRaw().then((settings) => {
- let value = JSON.parse(DefaultSettings.json);
- if (settings.source === 'json') {
- value = settingsValues.valueFromJson(settings.json);
- } else if (settings.source === 'form') {
- value = settingsValues.valueFromForm(settings.form);
- }
- if (!value.properties) {
- value.properties = {};
- }
- return Object.assign({},
- settingsValues.valueFromJson(DefaultSettings.json),
- value);
- });
+const loadValue = async() => {
+ let settings = await loadRaw();
+ let value = JSON.parse(DefaultSettings.json);
+ if (settings.source === 'json') {
+ value = settingsValues.valueFromJson(settings.json);
+ } else if (settings.source === 'form') {
+ value = settingsValues.valueFromForm(settings.form);
+ }
+ if (!value.properties) {
+ value.properties = {};
+ }
+ return Object.assign({},
+ settingsValues.valueFromJson(DefaultSettings.json),
+ value);
};
const save = (settings) => {
diff --git a/src/shared/versions/index.js b/src/shared/versions/index.js
index ee9f3b5..ba3d183 100644
--- a/src/shared/versions/index.js
+++ b/src/shared/versions/index.js
@@ -13,13 +13,12 @@ const notificationClickListener = (id) => {
browser.notifications.onClicked.removeListener(notificationClickListener);
};
-const checkUpdated = () => {
- return storage.load().then((prev) => {
- if (!prev) {
- return true;
- }
- return manifest.version !== prev;
- });
+const checkUpdated = async() => {
+ let prev = await storage.load();
+ if (!prev) {
+ return true;
+ }
+ return manifest.version !== prev;
};
const notify = () => {
diff --git a/src/shared/versions/storage.js b/src/shared/versions/storage.js
index 37603c8..7883258 100644
--- a/src/shared/versions/storage.js
+++ b/src/shared/versions/storage.js
@@ -1,7 +1,6 @@
-const load = () => {
- return browser.storage.local.get('version').then(({ version }) => {
- return version;
- });
+const load = async() => {
+ let { version } = await browser.storage.local.get('version');
+ return version;
};
const save = (version) => {
diff --git a/test/shared/versions/index.test.js b/test/shared/versions/index.test.js
index 3bb307a..d90f04c 100644
--- a/test/shared/versions/index.test.js
+++ b/test/shared/versions/index.test.js
@@ -7,32 +7,21 @@ describe("shared/versions/storage", () => {
return browser.storage.local.remove('version');
});
- it('return true if no previous versions', () => {
- return Promise.resolve().then(() => {
- return versions.checkUpdated();
- }).then((updated) => {
- expect(updated).to.be.true;
- });
+ it('return true if no previous versions', async() => {
+ let updated = await versions.checkUpdated();
+ expect(updated).to.be.true;
});
- it('return true if updated', () => {
- return Promise.resolve().then(() => {
- return browser.storage.local.set({ version: '0.001' });
- }).then(() => {
- return versions.checkUpdated();
- }).then((updated) => {
- expect(updated).to.be.true;
- });
+ it('return true if updated', async() => {
+ await browser.storage.local.set({ version: '0.001' });
+ let updated = await versions.checkUpdated();
+ expect(updated).to.be.true;
});
- it('return false if not updated', () => {
- return Promise.resolve().then(() => {
- return browser.storage.local.set({ version: manifest.version });
- }).then(() => {
- return versions.checkUpdated();
- }).then((updated) => {
- expect(updated).to.be.false;
- });
+ it('return false if not updated', async() => {
+ await browser.storage.local.set({ version: manifest.version });
+ let updated = await versions.checkUpdated();
+ expect(updated).to.be.false;
});
});
@@ -41,15 +30,11 @@ describe("shared/versions/storage", () => {
return browser.storage.local.remove('version');
});
- it('saves current version from manifest.json', () => {
- return Promise.resolve().then(() => {
- return versions.commit();
- }).then(() => {
- return browser.storage.local.get('version');
- }).then(({version}) => {
- expect(version).to.be.a('string');
- expect(version).to.equal(manifest.version);
- });
+ it('saves current version from manifest.json', async() => {
+ await versions.commit();
+ let { version } = await browser.storage.local.get('version');
+ expect(version).to.be.a('string');
+ expect(version).to.equal(manifest.version);
});
});
});
diff --git a/test/shared/versions/storage.test.js b/test/shared/versions/storage.test.js
index bcfa259..f541abf 100644
--- a/test/shared/versions/storage.test.js
+++ b/test/shared/versions/storage.test.js
@@ -6,34 +6,23 @@ describe("shared/versions/storage", () => {
return browser.storage.local.remove('version');
});
- it('loads saved version', () => {
- return Promise.resolve().then(() => {
- return browser.storage.local.set({ version: '1.2.3' });
- }).then(() => {
- return storage.load();
- }).then((version) => {
- expect(version).to.equal('1.2.3');
- });
+ it('loads saved version', async() => {
+ await browser.storage.local.set({ version: '1.2.3' });
+ let version = await storage.load();
+ expect(version).to.equal('1.2.3');
});
- it('returns undefined if no versions in storage', () => {
- return Promise.resolve().then(() => {
- return storage.load();
- }).then((version) => {
- expect(version).to.be.a('undefined');
- });
+ it('returns undefined if no versions in storage', async() => {
+ let version = await storage.load();
+ expect(version).to.be.a('undefined');
});
});
describe('#save', () => {
- it('saves version string', () => {
- return Promise.resolve().then(() => {
- return storage.save('2.3.4');
- }).then(() => {
- return browser.storage.local.get('version');
- }).then(({version}) => {
- expect(version).to.equal('2.3.4');
- });
+ it('saves version string', async() => {
+ await storage.save('2.3.4');
+ let { version } = await browser.storage.local.get('version');
+ expect(version).to.equal('2.3.4');
});
});
});