diff options
Diffstat (limited to 'ext/js')
| -rw-r--r-- | ext/js/app/content-script-main.js | 4 | ||||
| -rw-r--r-- | ext/js/background/background-main.js | 2 | ||||
| -rw-r--r-- | ext/js/comm/api.js | 39 | ||||
| -rw-r--r-- | ext/js/display/popup-main.js | 4 | ||||
| -rw-r--r-- | ext/js/display/search-main.js | 4 | ||||
| -rw-r--r-- | ext/js/pages/action-popup-main.js | 4 | ||||
| -rw-r--r-- | ext/js/pages/info-main.js | 2 | ||||
| -rw-r--r-- | ext/js/pages/permissions-main.js | 2 | ||||
| -rw-r--r-- | ext/js/pages/welcome-main.js | 2 | ||||
| -rw-r--r-- | ext/js/settings/main.js | 4 | ||||
| -rw-r--r-- | ext/js/settings/pitch-accents-preview-main.js | 4 | ||||
| -rw-r--r-- | ext/js/settings/popup-preview-frame-main.js | 3 | ||||
| -rw-r--r-- | ext/js/settings/settings-main.js | 2 | ||||
| -rw-r--r-- | ext/js/yomichan.js | 12 | 
14 files changed, 43 insertions, 45 deletions
| diff --git a/ext/js/app/content-script-main.js b/ext/js/app/content-script-main.js index 5dee4c56..ee05034e 100644 --- a/ext/js/app/content-script-main.js +++ b/ext/js/app/content-script-main.js @@ -24,8 +24,8 @@  (async () => {      try { -        api.forwardLogsToBackend(); -        await yomichan.backendReady(); +        api.prepare(); +        await yomichan.prepare();          const {tabId, frameId} = await api.frameInformationGet();          if (typeof frameId !== 'number') { diff --git a/ext/js/background/background-main.js b/ext/js/background/background-main.js index 01e57d0f..11df1706 100644 --- a/ext/js/background/background-main.js +++ b/ext/js/background/background-main.js @@ -20,6 +20,8 @@   */  (() => { +    yomichan.prepare(true); +      const backend = new Backend();      backend.prepare();  })(); diff --git a/ext/js/comm/api.js b/ext/js/comm/api.js index d37b091a..26397d1f 100644 --- a/ext/js/comm/api.js +++ b/ext/js/comm/api.js @@ -22,8 +22,8 @@  const api = (() => {      class API {          constructor() { -            this._forwardLogsToBackendEnabled = false; -            this._crossFrame = new CrossFrameAPI(); +            this._prepared = false; +            this._crossFrame = null;          }          get crossFrame() { @@ -31,20 +31,11 @@ const api = (() => {          }          prepare() { +            if (this._prepared) { return; } +            this._crossFrame = new CrossFrameAPI();              this._crossFrame.prepare(); -        } - -        forwardLogsToBackend() { -            if (this._forwardLogsToBackendEnabled) { return; } -            this._forwardLogsToBackendEnabled = true; - -            yomichan.on('log', async ({error, level, context}) => { -                try { -                    await this.log(serializeError(error), level, context); -                } catch (e) { -                    // NOP -                } -            }); +            yomichan.on('log', this._onLog.bind(this)); +            this._prepared = true;          }          // Invoke functions @@ -161,10 +152,6 @@ const api = (() => {              return this._invoke('getMedia', {targets});          } -        log(error, level, context) { -            return this._invoke('log', {error, level, context}); -        } -          logIndicatorClear() {              return this._invoke('logIndicatorClear');          } @@ -331,10 +318,16 @@ const api = (() => {          _checkLastError() {              // NOP          } + +        async _onLog({error, level, context}) { +            try { +                error = serializeError(error); +                await this._invoke('log', {error, level, context}); +            } catch (e) { +                // NOP +            } +        }      } -    // eslint-disable-next-line no-shadow -    const api = new API(); -    api.prepare(); -    return api; +    return new API();  })(); diff --git a/ext/js/display/popup-main.js b/ext/js/display/popup-main.js index 7c048b62..f1228aa6 100644 --- a/ext/js/display/popup-main.js +++ b/ext/js/display/popup-main.js @@ -29,8 +29,8 @@          const documentFocusController = new DocumentFocusController();          documentFocusController.prepare(); -        api.forwardLogsToBackend(); -        await yomichan.backendReady(); +        api.prepare(); +        await yomichan.prepare();          const {tabId, frameId} = await api.frameInformationGet(); diff --git a/ext/js/display/search-main.js b/ext/js/display/search-main.js index c7ec595a..d3e8af0b 100644 --- a/ext/js/display/search-main.js +++ b/ext/js/display/search-main.js @@ -30,8 +30,8 @@          const documentFocusController = new DocumentFocusController();          documentFocusController.prepare(); -        api.forwardLogsToBackend(); -        await yomichan.backendReady(); +        api.prepare(); +        await yomichan.prepare();          const {tabId, frameId} = await api.frameInformationGet(); diff --git a/ext/js/pages/action-popup-main.js b/ext/js/pages/action-popup-main.js index 5cc56745..99a76bdf 100644 --- a/ext/js/pages/action-popup-main.js +++ b/ext/js/pages/action-popup-main.js @@ -221,8 +221,8 @@ class DisplayController {  }  (async () => { -    api.forwardLogsToBackend(); -    await yomichan.backendReady(); +    api.prepare(); +    await yomichan.prepare();      api.logIndicatorClear(); diff --git a/ext/js/pages/info-main.js b/ext/js/pages/info-main.js index 6cf82595..7d34d47a 100644 --- a/ext/js/pages/info-main.js +++ b/ext/js/pages/info-main.js @@ -54,7 +54,7 @@ function getOperatingSystemDisplayName(os) {          const manifest = chrome.runtime.getManifest();          const language = chrome.i18n.getUILanguage(); -        api.forwardLogsToBackend(); +        api.prepare();          await yomichan.prepare();          const {userAgent} = navigator; diff --git a/ext/js/pages/permissions-main.js b/ext/js/pages/permissions-main.js index 5b17a5dd..7c0427b9 100644 --- a/ext/js/pages/permissions-main.js +++ b/ext/js/pages/permissions-main.js @@ -69,7 +69,7 @@ function setupPermissionsToggles() {              node.textContent = chrome.runtime.getURL('/');          } -        api.forwardLogsToBackend(); +        api.prepare();          await yomichan.prepare();          setupEnvironmentInfo(); diff --git a/ext/js/pages/welcome-main.js b/ext/js/pages/welcome-main.js index 57b265dc..626cbd3a 100644 --- a/ext/js/pages/welcome-main.js +++ b/ext/js/pages/welcome-main.js @@ -49,7 +49,7 @@ async function setupGenericSettingsController(genericSettingController) {          const statusFooter = new StatusFooter(document.querySelector('.status-footer-container'));          statusFooter.prepare(); -        api.forwardLogsToBackend(); +        api.prepare();          await yomichan.prepare();          setupEnvironmentInfo(); diff --git a/ext/js/settings/main.js b/ext/js/settings/main.js index 9786d196..0707ea3c 100644 --- a/ext/js/settings/main.js +++ b/ext/js/settings/main.js @@ -51,8 +51,8 @@ async function setupEnvironmentInfo() {  (async () => {      try { -        api.forwardLogsToBackend(); -        await yomichan.backendReady(); +        api.prepare(); +        await yomichan.prepare();          setupEnvironmentInfo();          showExtensionInformation(); diff --git a/ext/js/settings/pitch-accents-preview-main.js b/ext/js/settings/pitch-accents-preview-main.js index f292170a..7bc995a2 100644 --- a/ext/js/settings/pitch-accents-preview-main.js +++ b/ext/js/settings/pitch-accents-preview-main.js @@ -17,10 +17,14 @@  /* global   * DisplayGenerator + * api   */  (async () => {      try { +        api.prepare(); +        await yomichan.prepare(); +          const displayGenerator = new DisplayGenerator({              japaneseUtil: null,              mediaLoader: null diff --git a/ext/js/settings/popup-preview-frame-main.js b/ext/js/settings/popup-preview-frame-main.js index dcbc0d96..f61b26dc 100644 --- a/ext/js/settings/popup-preview-frame-main.js +++ b/ext/js/settings/popup-preview-frame-main.js @@ -24,7 +24,8 @@  (async () => {      try { -        api.forwardLogsToBackend(); +        api.prepare(); +        await yomichan.prepare();          const {tabId, frameId} = await api.frameInformationGet(); diff --git a/ext/js/settings/settings-main.js b/ext/js/settings/settings-main.js index 24248110..a7e6b7b0 100644 --- a/ext/js/settings/settings-main.js +++ b/ext/js/settings/settings-main.js @@ -66,7 +66,7 @@ async function setupGenericSettingsController(genericSettingController) {          const statusFooter = new StatusFooter(document.querySelector('.status-footer-container'));          statusFooter.prepare(); -        api.forwardLogsToBackend(); +        api.prepare();          await yomichan.prepare();          setupEnvironmentInfo(); diff --git a/ext/js/yomichan.js b/ext/js/yomichan.js index 61301e30..7d101a4c 100644 --- a/ext/js/yomichan.js +++ b/ext/js/yomichan.js @@ -71,13 +71,13 @@ const yomichan = (() => {              return this._isExtensionUnloaded;          } -        prepare() { +        async prepare(isBackground=false) {              chrome.runtime.onMessage.addListener(this._onMessage.bind(this)); -        } -        backendReady() { -            this.sendMessage({action: 'requestBackendReadySignal'}); -            return this._isBackendReadyPromise; +            if (!isBackground) { +                this.sendMessage({action: 'requestBackendReadySignal'}); +                await this._isBackendReadyPromise; +            }          }          ready() { @@ -302,5 +302,3 @@ const yomichan = (() => {      return new Yomichan();  })(); - -yomichan.prepare(); |