diff options
Diffstat (limited to 'ext/js/background')
| -rw-r--r-- | ext/js/background/backend.js | 11 | ||||
| -rw-r--r-- | ext/js/background/background-main.js | 2 | ||||
| -rw-r--r-- | ext/js/background/offscreen-proxy.js | 22 | 
3 files changed, 17 insertions, 18 deletions
| diff --git a/ext/js/background/backend.js b/ext/js/background/backend.js index db7a3c0f..b61f27b1 100644 --- a/ext/js/background/backend.js +++ b/ext/js/background/backend.js @@ -49,9 +49,11 @@ import {injectStylesheet} from './script-manager.js';   */  export class Backend {      /** -     * Creates a new instance. +     * @param {import('../extension/web-extension.js').WebExtension} webExtension       */ -    constructor() { +    constructor(webExtension) { +        /** @type {import('../extension/web-extension.js').WebExtension} */ +        this._webExtension = webExtension;          /** @type {JapaneseUtil} */          this._japaneseUtil = new JapaneseUtil(wanakana);          /** @type {Environment} */ @@ -80,7 +82,7 @@ export class Backend {              });          } else {              /** @type {?OffscreenProxy} */ -            this._offscreen = new OffscreenProxy(); +            this._offscreen = new OffscreenProxy(webExtension);              /** @type {DictionaryDatabase|DictionaryDatabaseProxy} */              this._dictionaryDatabase = new DictionaryDatabaseProxy(this._offscreen);              /** @type {Translator|TranslatorProxy} */ @@ -1902,8 +1904,7 @@ export class Backend {       * @param {import('application').ApiMessage<TName>} message       */      _sendMessageIgnoreResponse(message) { -        const callback = () => this._checkLastError(chrome.runtime.lastError); -        chrome.runtime.sendMessage(message, callback); +        this._webExtension.sendMessageIgnoreResponse(message);      }      /** diff --git a/ext/js/background/background-main.js b/ext/js/background/background-main.js index 2c19e871..f5871a14 100644 --- a/ext/js/background/background-main.js +++ b/ext/js/background/background-main.js @@ -23,7 +23,7 @@ import {Backend} from './backend.js';  async function main() {      yomitan.prepare(true); -    const backend = new Backend(); +    const backend = new Backend(yomitan.webExtension);      await backend.prepare();  } diff --git a/ext/js/background/offscreen-proxy.js b/ext/js/background/offscreen-proxy.js index 77f5448a..555c3abc 100644 --- a/ext/js/background/offscreen-proxy.js +++ b/ext/js/background/offscreen-proxy.js @@ -16,12 +16,17 @@   * along with this program.  If not, see <https://www.gnu.org/licenses/>.   */ -import {isObject} from '../core/utilities.js';  import {ExtensionError} from '../core/extension-error.js'; +import {isObject} from '../core/utilities.js';  import {ArrayBufferUtil} from '../data/sandbox/array-buffer-util.js';  export class OffscreenProxy { -    constructor() { +    /** +     * @param {import('../extension/web-extension.js').WebExtension} webExtension +     */ +    constructor(webExtension) { +        /** @type {import('../extension/web-extension.js').WebExtension} */ +        this._webExtension = webExtension;          /** @type {?Promise<void>} */          this._creatingOffscreen = null;      } @@ -76,16 +81,9 @@ export class OffscreenProxy {       * @param {import('offscreen').ApiMessage<TMessageType>} message       * @returns {Promise<import('offscreen').ApiReturn<TMessageType>>}       */ -    sendMessagePromise(message) { -        return new Promise((resolve, reject) => { -            chrome.runtime.sendMessage(message, (response) => { -                try { -                    resolve(this._getMessageResponseResult(response)); -                } catch (error) { -                    reject(error); -                } -            }); -        }); +    async sendMessagePromise(message) { +        const response = await this._webExtension.sendMessagePromise(message); +        return this._getMessageResponseResult(/** @type {import('core').Response<import('offscreen').ApiReturn<TMessageType>>} */ (response));      }      /** |