diff options
author | siikamiika <siikamiika@users.noreply.github.com> | 2020-01-25 18:11:19 +0200 |
---|---|---|
committer | siikamiika <siikamiika@users.noreply.github.com> | 2020-02-09 21:51:33 +0200 |
commit | 679e42c21ccc3ab778f4b26406b353769e171878 (patch) | |
tree | b34ce746d8530f30737bbdffab3b6c35213d3a6f /ext/bg/js/search.js | |
parent | ddc7c71e4f9da861d9d2bd56e60804ee9e70f621 (diff) |
move apiClipboardGet Firefox handling to Backend
Diffstat (limited to 'ext/bg/js/search.js')
-rw-r--r-- | ext/bg/js/search.js | 44 |
1 files changed, 7 insertions, 37 deletions
diff --git a/ext/bg/js/search.js b/ext/bg/js/search.js index f5c641a8..9508346e 100644 --- a/ext/bg/js/search.js +++ b/ext/bg/js/search.js @@ -36,8 +36,6 @@ class DisplaySearch extends Display { this.introVisible = true; this.introAnimationTimer = null; - this.isFirefox = false; - this.clipboardMonitorTimerId = null; this.clipboardMonitorTimerToken = null; this.clipboardInterval = 250; @@ -53,7 +51,6 @@ class DisplaySearch extends Display { async prepare() { try { await this.initialize(); - this.isFirefox = await DisplaySearch._isFirefox(); if (this.search !== null) { this.search.addEventListener('click', (e) => this.onSearch(e), false); @@ -250,13 +247,18 @@ class DisplaySearch extends Display { startClipboardMonitor() { // The token below is used as a unique identifier to ensure that a new clipboard monitor - // hasn't been started during the await call. The check below the await this.getClipboardText() + // hasn't been started during the await call. The check below the await apiClipboardGet() // call will exit early if the reference has changed. const token = {}; const intervalCallback = async () => { this.clipboardMonitorTimerId = null; - let text = await this.getClipboardText(); + let text = null; + try { + text = await apiClipboardGet(); + } catch (e) { + // NOP + } if (this.clipboardMonitorTimerToken !== token) { return; } if ( @@ -288,27 +290,6 @@ class DisplaySearch extends Display { } } - async getClipboardText() { - /* - Notes: - apiClipboardGet doesn't work on Firefox because document.execCommand('paste') - results in an empty string on the web extension background page. - This may be a bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1603985 - Therefore, navigator.clipboard.readText() is used on Firefox. - - navigator.clipboard.readText() can't be used in Chrome for two reasons: - * Requires page to be focused, else it rejects with an exception. - * When the page is focused, Chrome will request clipboard permission, despite already - being an extension with clipboard permissions. It effectively asks for the - non-extension permission for clipboard access. - */ - try { - return this.isFirefox ? await navigator.clipboard.readText() : await apiClipboardGet(); - } catch (e) { - return null; - } - } - isWanakanaEnabled() { return this.wanakanaEnable !== null && this.wanakanaEnable.checked; } @@ -399,17 +380,6 @@ class DisplaySearch extends Display { const match = /^[^?#]*\?(?:[^&#]*&)?query=([^&#]*)/.exec(url); return match !== null ? decodeURIComponent(match[1]) : null; } - - static async _isFirefox() { - const {browser} = await apiGetEnvironmentInfo(); - switch (browser) { - case 'firefox': - case 'firefox-mobile': - return true; - default: - return false; - } - } } DisplaySearch.onKeyDownIgnoreKeys = { |