From 7a9628946cba13120f68a8ed540a03955f1c397c Mon Sep 17 00:00:00 2001
From: sandinosaso
Date: Mon, 11 Nov 2019 11:30:00 -0300
Subject: [PATCH] Feature: Probability config:
- Add an option to set a probability of blocking the request
- This may be usefull for people using the plugin to test that an app or website
works ok when random failures happens.
- By default probability is set to 1 so it works just as blocking everything
---
src/blocker.js | 34 +++++++++++++++++++++-------------
src/popup.html | 8 ++++++++
src/popup.js | 7 +++++--
3 files changed, 34 insertions(+), 15 deletions(-)
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 @@
+
+
+
+
+
+
+
+
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!!');
});
});
};