diff options
Diffstat (limited to 'bg')
| -rw-r--r-- | bg/ExternalLicenses.js | 12 | ||||
| -rw-r--r-- | bg/ResponseProcessor.js | 22 | 
2 files changed, 23 insertions, 11 deletions
| diff --git a/bg/ExternalLicenses.js b/bg/ExternalLicenses.js index 6eda008..6d35863 100644 --- a/bg/ExternalLicenses.js +++ b/bg/ExternalLicenses.js @@ -48,7 +48,17 @@ const ExternalLicenses = {      cachedHrefs.delete(tabId);    }, -  // Checks external script using web labels +  /** +   * Checks external script using web labels +   *  +   * If the script cannot be found in the web labels table, returns null. +   *  +   * If the script can be found in the web labels table, and at least +   * one of its licenses can be found in our free license DB, returns +   * "free". +   * +   * Otherwise returns "nonfree". +   */    async check(script) {      const { url, tabId, frameId, documentUrl } = script;      const tabCache = cachedHrefs.get(tabId); diff --git a/bg/ResponseProcessor.js b/bg/ResponseProcessor.js index 3c90d9c..429b778 100644 --- a/bg/ResponseProcessor.js +++ b/bg/ResponseProcessor.js @@ -29,6 +29,11 @@ const { ResponseMetaData } = require('./ResponseMetaData');  const listeners = new WeakMap();  const webRequestEvent = browser.webRequest.onHeadersReceived; +// Some hardcoded return values for the onHeadersReceived callback. +const BLOCKING_RESPONSES = { +  ACCEPT: {}, // Do nothing +  REJECT: { cancel: true }, // Cancel the request.  See docs of BlockingResponse +};  class ResponseProcessor { @@ -53,13 +58,6 @@ class ResponseProcessor {    }  } -Object.assign(ResponseProcessor, { -  // control flow values to be returned by handler.pre() callbacks -  ACCEPT: {}, -  REJECT: { cancel: true }, -  CONTINUE: null -}); -  class ResponseTextFilter {    constructor(request) {      this.request = request; @@ -72,13 +70,16 @@ class ResponseTextFilter {    }    async process(handler) { -    if (!this.canProcess) return ResponseProcessor.ACCEPT; +    if (!this.canProcess) return BlockingResponses.ACCEPT;      const { metaData, request } = this;      const response = { request, metaData }; // we keep it around allowing callbacks to store state      if (typeof handler.pre !== 'function' || typeof handler.post !== 'function') {        throw new Error('handler should have a pre and post function.');      } + +    // If can determine without checking and filtering response +    // payload then return.      const res = await handler.pre(response);      if (res) return res; @@ -132,8 +133,9 @@ class ResponseTextFilter {        filter.close();      } -    return ResponseProcessor.ACCEPT; +    // Accepting the filtered payload. +    return BLOCKING_RESPONSES.ACCEPT;    }  } -module.exports = { ResponseProcessor }; +module.exports = { ResponseProcessor, BLOCKING_RESPONSES }; | 
