diff --git a/src/blocker.js b/src/blocker.js index 76b3500..678e3b3 100644 --- a/src/blocker.js +++ b/src/blocker.js @@ -1,9 +1,13 @@ -var currentPatterns = []; - function blockRequest(details) { - console.log("Blocked: ", details.url); + if (probability > Math.random()) { + console.log("Blocked: ", details.url); + return { + cancel: true + }; + } + console.log("Not blocked: ", details.url); return { - cancel: true + cancel: false }; } @@ -12,12 +16,12 @@ function isValidPattern(urlPattern) { return !!urlPattern.match(validPattern); } -function updateFilters() { +function updateFilters(urls) { if (chrome.webRequest.onBeforeRequest.hasListener(blockRequest)) { chrome.webRequest.onBeforeRequest.removeListener(blockRequest); } - var validPatterns = currentPatterns.filter(isValidPattern); + var validPatterns = patterns.filter(isValidPattern); if (validPatterns.length) { try{ @@ -31,23 +35,27 @@ function updateFilters() { } function load(callback) { - chrome.storage.sync.get('blocked_patterns', function(data) { - callback(data['blocked_patterns'] || []); + chrome.storage.sync.get(['blocked_patterns', 'probability'], function(data) { + callback(data['blocked_patterns'] || [], data['probability'] || 1); }); } -function save(newPatterns, callback) { - currentPatterns = newPatterns; +function save(newPatterns, newProbability, callback) { + patterns = newPatterns; + probability = newProbability; + chrome.storage.sync.set({ - 'blocked_patterns': newPatterns + 'blocked_patterns': newPatterns, + 'probability': probability }, function() { updateFilters(); callback.call(); }); } -load(function(patterns) { - currentPatterns = patterns; +load(function(pat, prob) { + patterns = pat; + probability = prob; updateFilters(); }); diff --git a/src/popup.html b/src/popup.html index ead0b84..f94ec3e 100644 --- a/src/popup.html +++ b/src/popup.html @@ -35,6 +35,14 @@

{{patterns.length}} Pattern(s) (Url patterns must comply with the format specified at https://developer.chrome.com/extensions/match_patterns (ex: *://evilsite.com/*). Invalid patterns will be ignored.

+
+ +
+ + +
+ +
diff --git a/src/popup.js b/src/popup.js index 4c4a63c..350bee2 100644 --- a/src/popup.js +++ b/src/popup.js @@ -17,6 +17,7 @@ app.controller('PopupController', function($scope) { } }; }); + $scope.probability = $scope.backgroundPage.probability; $scope.remove = function(patternToRemove) { var index = $scope.patterns.indexOf(patternToRemove); @@ -37,9 +38,11 @@ app.controller('PopupController', function($scope) { return x.pattern; }); - $scope.backgroundPage.save(patterns, function() { + var probability = $scope.probability; + + $scope.backgroundPage.save(patterns, probability, function() { $scope.$apply(function() { - $scope.success('Patterns saved successfully!'); + $scope.success('Patterns saved successfully!!'); }); }); };