diff --git a/clearurls.js b/clearurls.js index f0b9cbb..f9b2d40 100644 --- a/clearurls.js +++ b/clearurls.js @@ -1,8 +1,8 @@ /* - * ################################################################## - * # Fetch Rules & Exception from URL # - * ################################################################## - */ +* ################################################################## +* # Fetch Rules & Exception from URL # +* ################################################################## +*/ var data = []; var providers = []; var prvKeys = []; @@ -11,24 +11,24 @@ var badges = []; var badgedStatus; var tabid = 0; var globalCounter; -var globalURLCounter; +var globalurlcounter; var siteBlockedAlert = browser.extension.getURL ('./siteBlockedAlert.html'); /** - * Initialize the JSON provider object keys. - * - * @param {JSON Object} obj - */ +* Initialize the JSON provider object keys. +* +* @param {JSON Object} obj +*/ function getKeys(obj){ - for(var key in obj){ - prvKeys.push(key); - } + for(var key in obj){ + prvKeys.push(key); + } }; /** - * Initialize the providers form the JSON object. - * - */ +* Initialize the providers form the JSON object. +* +*/ function createProviders() { for(var p = 0; p < prvKeys.length; p++) @@ -54,11 +54,11 @@ function createProviders() }; /** - * Convert the external data to JSON Objects and - * call the create provider function. - * - * @param {String} retrievedText - pure data form github - */ +* Convert the external data to JSON Objects and +* call the create provider function. +* +* @param {String} retrievedText - pure data form github +*/ function toJSON(retrievedText) { data = JSON.parse(retrievedText); getKeys(data.providers); @@ -66,10 +66,10 @@ function toJSON(retrievedText) { } /** - * Load local saved data, if the browser is offline or - * some other network trouble. - * - */ +* Load local saved data, if the browser is offline or +* some other network trouble. +* +*/ function loadOldDataFromStore() { browser.storage.local.get('ClearURLsData', function(data){ @@ -85,9 +85,9 @@ function loadOldDataFromStore() } /** - * Fetch the Rules & Exception github. - * - */ +* Fetch the Rules & Exception github. +* +*/ function fetchFromURL() { fetch("https://raw.githubusercontent.com/KevinRoebert/ClearUrls/master/data/data.json?flush_cache=true") @@ -105,7 +105,7 @@ function fetchFromURL() toJSON(responseText); } else { - loadOldDataFromStore(); + loadOldDataFromStore(); } }); }; @@ -114,16 +114,16 @@ function fetchFromURL() // ################################################################## /* - * ################################################################## - * # Supertyp Provider # - * ################################################################## - */ +* ################################################################## +* # Supertyp Provider # +* ################################################################## +*/ /** - * Declare constructor - * - * @param {String} _name Provider name - * @param {boolean} completeProvider Set URL Pattern as rule - */ +* Declare constructor +* +* @param {String} _name Provider name +* @param {boolean} completeProvider Set URL Pattern as rule +*/ function Provider(_name,_completeProvider = false){ var name = _name; var urlPattern; @@ -136,73 +136,73 @@ function Provider(_name,_completeProvider = false){ } /** - * Add URL pattern. - * - * @require urlPatterns as RegExp - */ + * Add URL pattern. + * + * @require urlPatterns as RegExp + */ this.setURLPattern = function(urlPatterns) { urlPattern = new RegExp(urlPatterns, "mgi"); }; /** - * Return if the Provider Request is canceled - * @return {Boolean} isCanceled - */ + * Return if the Provider Request is canceled + * @return {Boolean} isCanceled + */ this.isCaneling = function() { return canceling; }; /** - * Check the url is matching the ProviderURL. - * - * @return {String} ProviderURL as RegExp - */ + * Check the url is matching the ProviderURL. + * + * @return {String} ProviderURL as RegExp + */ this.matchURL = function(url) { return !(this.matchException(url)) && (url.match(urlPattern) != null) && (url.match(urlPattern).length > 0); }; /** - * Add a rule to the rule array. - * - * @param String rule RegExp as string - */ + * Add a rule to the rule array. + * + * @param String rule RegExp as string + */ this.addRule = function(rule) { rules.push(rule); }; /** - * Set the rules for the provider - * @param String _rules RegEx as string - */ + * Set the rules for the provider + * @param String _rules RegEx as string + */ this.setRules = function(_rules) { rules = _rules; }; /** - * Return all rules as an array. - * - * @return Array RegExp strings - */ + * Return all rules as an array. + * + * @return Array RegExp strings + */ this.getRules = function() { return rules; }; /** - * Add a exception to the exceptions array. - * - * @param String exception RegExp as string - */ + * Add a exception to the exceptions array. + * + * @param String exception RegExp as string + */ this.addException = function(exception) { exceptions.push(exception); }; /** - * Private helper method to check if the url - * an exception. - * - * @param {String} url RegExp as string - * @return {boolean} if matching? true: false - */ + * Private helper method to check if the url + * an exception. + * + * @param {String} url RegExp as string + * @return {boolean} if matching? true: false + */ this.matchException = function(url) { var result = false; @@ -221,13 +221,13 @@ function Provider(_name,_completeProvider = false){ // ################################################################## /** - * Helper function which remove the tracking fields - * for each provider given as parameter. - * - * @param {Provider} provider Provider-Object - * @param {webRequest} request webRequest-Object - * @return {Array} Array with changes and url fields - */ +* Helper function which remove the tracking fields +* for each provider given as parameter. +* +* @param {Provider} provider Provider-Object +* @param {webRequest} request webRequest-Object +* @return {Array} Array with changes and url fields +*/ function removeFieldsFormURL(provider, request) { var url = request.url; @@ -289,10 +289,10 @@ function removeFieldsFormURL(provider, request) }; /** - * Return the number of parameters query strings. - * @param {String} url URL as String - * @return {int} Number of Parameters - */ +* Return the number of parameters query strings. +* @param {String} url URL as String +* @return {int} Number of Parameters +*/ function countFields(url) { var matches = (url.match(/[^\/|\?|&]+=[^\/|\?|&]+/gi) || []); @@ -302,100 +302,114 @@ function countFields(url) } /** - * Function which called from the webRequest to - * remove the tracking fields from the url. - * - * @param {webRequest} request webRequest-Object - * @return {Array} redirectUrl or none - */ +* Function which called from the webRequest to +* remove the tracking fields from the url. +* +* @param {webRequest} request webRequest-Object +* @return {Array} redirectUrl or none +*/ function clearUrl(request) { - var URLbeforeReplaceCount = countFields(request.url); - //Add Fields form Request to global url counter - globalURLCounter += URLbeforeReplaceCount; - browser.storage.local.set({"globalURLCounter": globalURLCounter}); - - browser.storage.local.get('globalStatus', clear); - - function clear(data){ - globalStatus = data.globalStatus; - - if(globalStatus == null){ - globalStatus = true; - } - } - - if(globalStatus){ - - var result = { - "changes": false, - "url": "" - }; - - /* - * Call for every provider the removeFieldsFormURL method. - */ - for (var i = 0; i < providers.length; i++) { - result = removeFieldsFormURL(providers[i], request); - - /* - * Cancel the Request and redirect to the site blocked alert page, - * to inform the user about the full url blocking. - */ - if(result["cancel"]){ - return { - redirectUrl: siteBlockedAlert - }; + if(globalurlcounter === null || typeof(globalurlcounter) == "undefined") + { + /** + * Get the globalURLCounter value from the browser storage + * @param {(data){} Return value form browser.storage.local.get + */ + browser.storage.local.get('globalurlcounter', function(data){ + if(data.globalurlcounter){ + globalurlcounter = data.globalurlcounter; + } + else { + globalurlcounter = 0; } + return clearUrl(request); + }); + } + else if(globalCounter === null || typeof(globalCounter) == "undefined") { + /** + * Get the globalCounter value from the browser storage + * @param {(data){} Return value form browser.storage.local.get + */ + browser.storage.local.get('globalCounter', function(data){ + if(data.globalCounter){ + globalCounter = data.globalCounter; + } + else { + globalCounter = 0; + } + + return clearUrl(request); + }); + } + else { + var URLbeforeReplaceCount = countFields(request.url); + + //Add Fields form Request to global url counter + globalurlcounter += URLbeforeReplaceCount; + + browser.storage.local.set({"globalurlcounter": globalurlcounter}); + + browser.storage.local.get('globalStatus', clear); + + function clear(data){ + globalStatus = data.globalStatus; + + if(globalStatus == null){ + globalStatus = true; + } + } + + if(globalStatus){ + + var result = { + "changes": false, + "url": "" + }; + /* - * Ensure that the function go not into - * an loop. - */ - if(result["changes"]){ - return { - redirectUrl: result["url"] - }; + * Call for every provider the removeFieldsFormURL method. + */ + for (var i = 0; i < providers.length; i++) { + result = removeFieldsFormURL(providers[i], request); + + /* + * Cancel the Request and redirect to the site blocked alert page, + * to inform the user about the full url blocking. + */ + if(result["cancel"]){ + return { + redirectUrl: siteBlockedAlert + }; + } + + /* + * Ensure that the function go not into + * an loop. + */ + if(result["changes"]){ + return { + redirectUrl: result["url"] + }; + } } } } }; /** - * Call by each tab is closed. - */ +* Call by each tab is closed. +*/ function handleRemoved(tabId, removeInfo) { delete badges[tabId]; } /** - * Get the globalCounter value from the browser storage - * @param {(data){} Return value form browser.storage.local.get - */ -function setGlobalCounter() { - browser.storage.local.get('globalCounter', function(data){ - if(data.globalCounter){ - globalCounter = data.globalCounter; - } - else { - globalCounter = 0; - } - }); - browser.storage.local.get('globalURLCounter', function(data){ - if(data.globalURLCounter){ - globalURLCounter = data.globalURLCounter; - } - else { - globalURLCounter = 0; - } - }); -} - -/** - * Get the badged status from the browser storage and put the value - * into a local variable. - * - */ +* Get the badged status from the browser storage and put the value +* into a local variable. +* +*/ function setBadgedStatus() { browser.storage.local.get('badgedStatus', function(data) { if(data.badgedStatus) { @@ -414,42 +428,40 @@ function setBadgedStatus() { } /** - * Call the fetch, counter and status functions - */ +* Call the fetch, counter and status functions +*/ fetchFromURL(); setBadgedStatus(); -setGlobalCounter(); /** - * Call by each change in the browser storage. - */ -browser.storage.onChanged.addListener(setGlobalCounter); +* Call by each change in the browser storage. +*/ browser.storage.onChanged.addListener(setBadgedStatus); /** - * Call by each tab is closed. - */ +* Call by each tab is closed. +*/ browser.tabs.onRemoved.addListener(handleRemoved); /** - * Call by each tab change to set the actual tab id - */ +* Call by each tab change to set the actual tab id +*/ function handleActivated(activeInfo) { tabid = activeInfo.tabId; } /** - * Call by each tab change. - */ +* Call by each tab change. +*/ browser.tabs.onActivated.addListener(handleActivated); /** - * Call by each Request and checking the url. - * - * @type {Array} - */ +* Call by each Request and checking the url. +* +* @type {Array} +*/ browser.webRequest.onBeforeRequest.addListener( - clearUrl, - {urls: [""]}, - ["blocking"] + clearUrl, + {urls: [""]}, + ["blocking"] ); diff --git a/popup_new.js b/popup_new.js index 8217005..be12fa4 100644 --- a/popup_new.js +++ b/popup_new.js @@ -1,6 +1,6 @@ /** * Initialize the UI. - * + * */ function init() { @@ -21,9 +21,9 @@ function changeStatistics(){ var elTotal = $('#statistics_total_elements'); var globalPercentage = 0; var globalCounter; - var globalURLCounter; + var globalurlcounter; - browser.storage.local.get('globalCounter', function(data){ + browser.storage.local.get('globalCounter', function(data){ if(data.globalCounter){ globalCounter = data.globalCounter; } @@ -34,29 +34,29 @@ function changeStatistics(){ element.text(globalCounter.toLocaleString()); }); - browser.storage.local.get('globalURLCounter', function(data){ - if(data.globalURLCounter){ - globalURLCounter = data.globalURLCounter; + browser.storage.local.get('globalurlcounter', function(data){ + if(data.globalurlcounter){ + globalurlcounter = data.globalurlcounter; } else { - globalURLCounter = 0; + globalurlcounter = 0; } - globalPercentage = ((globalCounter/globalURLCounter)*100).toFixed(3); + globalPercentage = ((globalCounter/globalurlcounter)*100).toFixed(3); if(isNaN(Number(globalPercentage))) globalPercentage = 0; elGlobalPercentage.text(globalPercentage+"%"); elProgressbar_blocked.css('width', globalPercentage+'%'); elProgressbar_non_blocked.css('width', (100-globalPercentage)+'%'); - elTotal.text(globalURLCounter); + elTotal.text(globalurlcounter.toLocaleString()); }); }; /** * Change the value of the globalStatus. * Call by onChange() - * + * */ function changeGlobalStatus() { var element = $('#globalStatus').is(':checked'); @@ -87,7 +87,7 @@ function setGlobalStatus() { /** * Change the value of the badgedStatus. * Call by onChange() - * + * */ function changeTabcounter() { var element = $('#tabcounter').is(':checked'); @@ -118,11 +118,11 @@ function setTabcounter() { /** * Reset the global statistic - * + * */ function resetGlobalCounter(){ browser.storage.local.set({"globalCounter": 0}); - browser.storage.local.set({"globalURLCounter": 0}); + browser.storage.local.set({"globalurlcounter": 0}); }; $(document).ready(function(){ @@ -132,4 +132,4 @@ $(document).ready(function(){ $('#tabcounter').on('change', changeTabcounter); browser.storage.onChanged.addListener(changeStatistics); -}); \ No newline at end of file +});