diff options
| -rw-r--r-- | ext/issues.html | 17 | ||||
| -rw-r--r-- | ext/js/background/backend.js | 15 | 
2 files changed, 26 insertions, 6 deletions
| diff --git a/ext/issues.html b/ext/issues.html index df6e6135..a436222e 100644 --- a/ext/issues.html +++ b/ext/issues.html @@ -25,7 +25,7 @@      <h1>Yomichan Issues</h1> -    <h2 id="audio-download-failed">Audio download failed due to possible extension permissions error <em>(Chrome)</em></h2> +    <h2 id="audio-download-failed-permissions-error">Audio download failed due to possible extension permissions error <em>(Chrome)</em></h2>      <div class="settings-group">          <div class="settings-item"><div class="settings-item-inner"><div class="settings-item-left"><div class="settings-item-label">              <p> @@ -42,6 +42,21 @@          </div></div></div></div>      </div> +    <h2 id="audio-download-failed-expired-server-certificate">Audio download failed due to an expired server certificate</h2> +    <div class="settings-group"> +        <div class="settings-item"><div class="settings-item-inner"><div class="settings-item-left"><div class="settings-item-label"> +            <p> +                If a website failes to keep its HTTPS certificate up to date, +                downloads can fail because the browser flags the connection as insecure. +                This has happened occasionally for some websites that Yomichan interacts with, +                and the issue is usually resolved within a day. +            </p> +            <p> +                This issue is a server-side issue that Yomichan doesn't have control over. +            </p> +        </div></div></div></div> +    </div> +      <h2 id="audio-download-idle-timeout">Audio download was cancelled due to an idle timeout</h2>      <div class="settings-group">          <div class="settings-item"><div class="settings-item-inner"><div class="settings-item-left"><div class="settings-item-label"> diff --git a/ext/js/background/backend.js b/ext/js/background/backend.js index 20402539..197734b1 100644 --- a/ext/js/background/backend.js +++ b/ext/js/background/backend.js @@ -1936,11 +1936,16 @@ class Backend {                      if (!isObject(error2.data)) { continue; }                      const {details} = error2.data;                      if (!isObject(details)) { continue; } -                    if (details.error === 'net::ERR_FAILED') { -                        // This is potentially an error due to the extension not having enough URL privileges. -                        // The message logged to the console looks like this: -                        //  Access to fetch at '<URL>' from origin 'chrome-extension://<ID>' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled. -                        return this._createAudioDownloadError('Audio download failed due to possible extension permissions error', 'audio-download-failed', errors); +                    switch (details.error) { +                        case 'net::ERR_FAILED': +                            // This is potentially an error due to the extension not having enough URL privileges. +                            // The message logged to the console looks like this: +                            //  Access to fetch at '<URL>' from origin 'chrome-extension://<ID>' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled. +                            return this._createAudioDownloadError('Audio download failed due to possible extension permissions error', 'audio-download-failed-permissions-error', errors); +                        case 'net::ERR_CERT_DATE_INVALID': // Chrome +                        case 'Peer’s Certificate has expired.': // Firefox +                            // This error occurs when a server certificate expires. +                            return this._createAudioDownloadError('Audio download failed due to an expired server certificate', 'audio-download-failed-expired-server-certificate', errors);                      }                  }              } |