diff --git a/lib/interceptor.js b/lib/interceptor.js index 4c019958bd3bb3e19265df9c89f37ef4355b4d68..89f669db7a6339aa8a6b15d5277ff024833494d8 100644 --- a/lib/interceptor.js +++ b/lib/interceptor.js @@ -25,6 +25,8 @@ var { Cc, Ci, Cr } = require('chrome'); var observerService = Cc['@mozilla.org/observer-service;1'] .getService(Ci.nsIObserverService); +var preferences = require('sdk/simple-prefs').prefs; + var requestAnalyzer = require('./request-analyzer'); var dataHandler = require('./data-handler'); @@ -84,15 +86,13 @@ var Interceptor = new Class({ httpChannel.redirectTo(redirectionURI); //noinspection JSUnresolvedVariable - require('sdk/simple-prefs').prefs.amountInjected++; + preferences.amountInjected++; }, handleMissingCandidate: function (httpChannel) { //noinspection JSUnresolvedVariable - var blockMissing = require('sdk/simple-prefs').prefs.blockMissing; - - if (blockMissing) { + if (preferences.blockMissing) { httpChannel.cancel(Cr.NS_ERROR_NOT_AVAILABLE); } } diff --git a/lib/request-analyzer.js b/lib/request-analyzer.js index 15616e7f2784bc66f06e79127c6e031114a6a5a3..2120b21a2da95395b54ece36e0771fd51b52323c 100644 --- a/lib/request-analyzer.js +++ b/lib/request-analyzer.js @@ -17,6 +17,8 @@ * Imports */ +var preferences = require('sdk/simple-prefs').prefs; + /** * Resource version mappings. * @var {object} mappings @@ -34,18 +36,25 @@ function isValidCandidate(httpChannel) { } //noinspection JSUnresolvedVariable - var whitelistedDomains = require('sdk/simple-prefs').prefs.domainWhitelist.split(";"); + var domainWhitelist = preferences.domainWhitelist; + + if (domainWhitelist.length > 0 && httpChannel.referrer) { - if (httpChannel.referrer) { + var whitelistedDomains = domainWhitelist.split(';'); for (var domain in whitelistedDomains) { - if (whitelistedDomains[domain] === httpChannel.referrer.host) { + if (whitelistedDomains.hasOwnProperty(domain)) { + + if (whitelistedDomains[domain] === httpChannel.referrer.host || + 'www.' + whitelistedDomains[domain] === httpChannel.referrer.host) { + + // Remove referer header from request. + httpChannel.setRequestHeader('Referer', null, false); - // Remove referer header from request. - httpChannel.setRequestHeader('Referer', null, false); + return false; + } - return false; } } }