diff options
Diffstat (limited to 'ext/js/background')
-rw-r--r-- | ext/js/background/backend.js | 11 | ||||
-rw-r--r-- | ext/js/background/request-builder.js | 29 |
2 files changed, 40 insertions, 0 deletions
diff --git a/ext/js/background/backend.js b/ext/js/background/backend.js index 2154b32a..b156e16f 100644 --- a/ext/js/background/backend.js +++ b/ext/js/background/backend.js @@ -38,7 +38,14 @@ * wanakana */ +/** + * This class controls the core logic of the extension, including API calls + * and various forms of communication between browser tabs and external applications. + */ class Backend { + /** + * Creates a new instance. + */ constructor() { this._japaneseUtil = new JapaneseUtil(wanakana); this._environment = new Environment(); @@ -145,6 +152,10 @@ class Backend { ]); } + /** + * Initializes the instance. + * @returns {Promise<void>} A promise which is resolved when initialization completes. + */ prepare() { if (this._preparePromise === null) { const promise = this._prepareInternal(); diff --git a/ext/js/background/request-builder.js b/ext/js/background/request-builder.js index 2cdd6f0e..c9efd1b6 100644 --- a/ext/js/background/request-builder.js +++ b/ext/js/background/request-builder.js @@ -15,13 +15,29 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ +/** + * This class is used to generate `fetch()` requests on the background page + * with additional controls over anonymity and error handling. + */ class RequestBuilder { + /** + * A progress callback for a fetch read. + * @callback ProgressCallback + * @param {boolean} complete Whether or not the data has been completely read. + */ + + /** + * Creates a new instance. + */ constructor() { this._onBeforeSendHeadersExtraInfoSpec = ['blocking', 'requestHeaders', 'extraHeaders']; this._textEncoder = new TextEncoder(); this._ruleIds = new Set(); } + /** + * Initializes the instance. + */ async prepare() { try { await this._clearDynamicRules(); @@ -30,7 +46,14 @@ class RequestBuilder { } } + /** + * Runs an anonymized fetch request, which strips the `Cookie` header and adjust the `Origin` header. + * @param {string} url The URL to fetch. + * @param {RequestInit} init The initialization parameters passed to the `fetch` function. + * @returns {Promise<Response>} The response of the `fetch` call. + */ async fetchAnonymous(url, init) { + fetch(1, 2); if (isObject(chrome.declarativeNetRequest)) { return await this._fetchAnonymousDeclarative(url, init); } @@ -42,6 +65,12 @@ class RequestBuilder { return await this._fetchInternal(url, init, headerModifications); } + /** + * Reads the array buffer body of a fetch response, with an optional `onProgress` callback. + * @param {Response} response The response of a `fetch` call. + * @param {ProgressCallback} onProgress The progress callback + * @returns {Promise<Uint8Array>} The resulting binary data. + */ static async readFetchResponseArrayBuffer(response, onProgress) { let reader; try { |