diff --git a/platform/chromium/vapi-background.js b/platform/chromium/vapi-background.js index 9d29238..6d7485e 100644 --- a/platform/chromium/vapi-background.js +++ b/platform/chromium/vapi-background.js @@ -294,12 +294,6 @@ vAPI.tabs.replace = function(tabId, url) { /******************************************************************************/ -vAPI.tabs.remove = function(tabId) { - chrome.tabs.remove(tabId, resetLastError); -}; - -/******************************************************************************/ - vAPI.tabs.reload = function(tabId, bypassCache) { if ( typeof tabId !== 'number' || tabId < 0 ) { return; } chrome.tabs.reload(tabId, { bypassCache: bypassCache === true }); @@ -307,22 +301,6 @@ vAPI.tabs.reload = function(tabId, bypassCache) { /******************************************************************************/ -vAPI.tabs.injectScript = function(tabId, details, callback) { - var onScriptExecuted = function() { - resetLastError(); - if ( typeof callback === 'function' ) { - callback(); - } - }; - if ( tabId ) { - chrome.tabs.executeScript(tabId, details, onScriptExecuted); - } else { - chrome.tabs.executeScript(details, onScriptExecuted); - } -}; - -/******************************************************************************/ - // Must read: https://code.google.com/p/chromium/issues/detail?id=410868#c8 // https://github.com/chrisaljoudi/uBlock/issues/19 @@ -562,21 +540,6 @@ vAPI.net = { /******************************************************************************/ /******************************************************************************/ -vAPI.contextMenu = { - create: function(details, callback) { - this.menuId = details.id; - this.callback = callback; - chrome.contextMenus.create(details); - chrome.contextMenus.onClicked.addListener(this.callback); - }, - remove: function() { - chrome.contextMenus.onClicked.removeListener(this.callback); - chrome.contextMenus.remove(this.menuId); - } -}; - -/******************************************************************************/ - vAPI.lastError = function() { return chrome.runtime.lastError; }; @@ -584,28 +547,6 @@ vAPI.lastError = function() { /******************************************************************************/ /******************************************************************************/ -// This is called only once, when everything has been loaded in memory after -// the extension was launched. It can be used to inject content scripts -// in already opened web pages, to remove whatever nuisance could make it to -// the web pages before uBlock was ready. - -vAPI.onLoadAllCompleted = function() { -}; - -/******************************************************************************/ -/******************************************************************************/ - -vAPI.punycodeHostname = function(hostname) { - return hostname; -}; - -vAPI.punycodeURL = function(url) { - return url; -}; - -/******************************************************************************/ -/******************************************************************************/ - vAPI.browserData = {}; /******************************************************************************/ @@ -616,17 +557,6 @@ vAPI.browserData.clearCache = function(callback) { chrome.browsingData.removeCache({ since: 0 }, callback); }; -/******************************************************************************/ - -// Not supported on Chromium - -vAPI.browserData.clearOrigin = function(domain, callback) { - // unsupported on Chromium - if ( typeof callback === 'function' ) { - callback(undefined); - } -}; - /******************************************************************************/ /******************************************************************************/ diff --git a/src/background.html b/src/background.html index 0a6a791..1a28d03 100644 --- a/src/background.html +++ b/src/background.html @@ -17,7 +17,6 @@ - diff --git a/src/js/httpsb.js b/src/js/httpsb.js index f3a0173..c041152 100644 --- a/src/js/httpsb.js +++ b/src/js/httpsb.js @@ -61,93 +61,6 @@ return hn === '' ? '*' : hn; }; -µMatrix.scopeFromURL = µMatrix.hostnameFromURL; - -/******************************************************************************/ - -µMatrix.evaluateURL = function(srcURL, desHostname, type) { - var srcHostname = this.URI.hostnameFromURI(srcURL); - return this.tMatrix.evaluateCellZXY(srcHostname, desHostname, type); -}; - - -/******************************************************************************/ - -// Whitelist something - -µMatrix.whitelistTemporarily = function(srcHostname, desHostname, type) { - this.tMatrix.whitelistCell(srcHostname, desHostname, type); -}; - -µMatrix.whitelistPermanently = function(srcHostname, desHostname, type) { - if ( this.pMatrix.whitelistCell(srcHostname, desHostname, type) ) { - this.saveMatrix(); - } -}; - -/******************************************************************************/ - -// Auto-whitelisting the `all` cell is a serious action, hence this will be -// done only from within a scope. - -µMatrix.autoWhitelistAllTemporarily = function(pageURL) { - var srcHostname = this.URI.hostnameFromURI(pageURL); - if ( this.mustBlock(srcHostname, '*', '*') === false ) { - return false; - } - this.tMatrix.whitelistCell(srcHostname, '*', '*'); - return true; -}; - -/******************************************************************************/ - -// Blacklist something - -µMatrix.blacklistTemporarily = function(srcHostname, desHostname, type) { - this.tMatrix.blacklistCell(srcHostname, desHostname, type); -}; - -µMatrix.blacklistPermanently = function(srcHostname, desHostname, type) { - if ( this.pMatrix.blacklist(srcHostname, desHostname, type) ) { - this.saveMatrix(); - } -}; - -/******************************************************************************/ - -// Remove something from both black and white lists. - -µMatrix.graylistTemporarily = function(srcHostname, desHostname, type) { - this.tMatrix.graylistCell(srcHostname, desHostname, type); -}; - -µMatrix.graylistPermanently = function(srcHostname, desHostname, type) { - if ( this.pMatrix.graylistCell(srcHostname, desHostname, type) ) { - this.saveMatrix(); - } -}; - -/******************************************************************************/ - -// TODO: Should type be transposed by the caller or in place here? Not an -// issue at this point but to keep in mind as this function is called -// more and more from different places. - -µMatrix.filterRequest = function(fromURL, type, toURL) { - // Block request? - var srcHostname = this.hostnameFromURL(fromURL); - var desHostname = this.hostnameFromURL(toURL); - - // If no valid hostname, use the hostname of the source. - // For example, this case can happen with data URI. - if ( desHostname === '' ) { - desHostname = srcHostname; - } - - // Blocked by matrix filtering? - return this.mustBlock(srcHostname, desHostname, type); -}; - /******************************************************************************/ µMatrix.mustBlock = function(srcHostname, desHostname, type) { @@ -160,35 +73,6 @@ /******************************************************************************/ -// Commit temporary permissions. - -µMatrix.commitPermissions = function(persist) { - this.pMatrix.assign(this.tMatrix); - if ( persist ) { - this.saveMatrix(); - } -}; - -/******************************************************************************/ - -// Reset all rules to their default state. - -µMatrix.revertAllRules = function() { - this.tMatrix.assign(this.pMatrix); -}; - -/******************************************************************************/ - -µMatrix.turnOff = function() { - vAPI.app.start(); -}; - -µMatrix.turnOn = function() { - vAPI.app.stop(); -}; - -/******************************************************************************/ - µMatrix.formatCount = function(count) { if ( typeof count !== 'number' ) { return ''; diff --git a/src/js/messaging.js b/src/js/messaging.js index 6738ef1..c8f08d0 100644 --- a/src/js/messaging.js +++ b/src/js/messaging.js @@ -106,10 +106,6 @@ function onMessage(request, sender, callback) { µm.gotoExtensionURL(request); break; - case 'gotoURL': - µm.gotoURL(request); - break; - case 'graylistMatrixCell': µm.tMatrix.graylistCell( request.srcHostname, @@ -887,7 +883,7 @@ var restoreUserData = function(userData) { // If we are going to restore all, might as well wipe out clean local // storage - µm.XAL.keyvalRemoveAll(onAllRemoved); + vAPI.storage.clear(onAllRemoved); }; /******************************************************************************/ @@ -896,7 +892,7 @@ var resetUserData = function() { var onAllRemoved = function() { vAPI.app.restart(); }; - µm.XAL.keyvalRemoveAll(onAllRemoved); + vAPI.storage.clear(onAllRemoved); }; /******************************************************************************/ diff --git a/src/js/storage.js b/src/js/storage.js index 002f9ab..701fdb5 100644 --- a/src/js/storage.js +++ b/src/js/storage.js @@ -41,7 +41,7 @@ /******************************************************************************/ µMatrix.saveUserSettings = function() { - this.XAL.keyvalSetMany( + vAPI.storage.set( this.userSettings, this.getBytesInUse.bind(this) ); diff --git a/src/js/uritools.js b/src/js/uritools.js index 2e45f7f..9885112 100644 --- a/src/js/uritools.js +++ b/src/js/uritools.js @@ -49,9 +49,7 @@ var reRFC3986 = /^([^:\/?#]+:)?(\/\/[^\/?#]*)?([^?#]*)(\?[^#]*)?(#.*)?/; // Derived var reSchemeFromURI = /^[^:\/?#]+:/; var reAuthorityFromURI = /^(?:[^:\/?#]+:)?(\/\/[^\/?#]+)/; -var reOriginFromURI = /^(?:[^:\/?#]+:)?(?:\/\/[^\/?#]+)/; var reCommonHostnameFromURL = /^https?:\/\/([0-9a-z_][0-9a-z._-]*[0-9a-z])\//; -var rePathFromURI = /^(?:[^:\/?#]+:)?(?:\/\/[^\/?#]*)?([^?#]*)/; var reMustNormalizeHostname = /[^0-9a-z._-]/; // These are to parse authority field, not parsed by above official regex @@ -70,7 +68,6 @@ var reHostFromAuthority = /^(?:[^@]*@)?([^:]+)(?::\d*)?$/; var reIPv6FromAuthority = /^(?:[^@]*@)?(\[[0-9a-f:]+\])(?::\d*)?$/i; // Coarse (but fast) tests -var reValidHostname = /^([a-z\d]+(-*[a-z\d]+)*)(\.[a-z\d]+(-*[a-z\d])*)*$/; var reIPAddressNaive = /^\d+\.\d+\.\d+\.\d+$|^\[[\da-zA-Z:]+\]$/; // Accurate tests @@ -229,13 +226,6 @@ URI.assemble = function(bits) { /******************************************************************************/ -URI.originFromURI = function(uri) { - var matches = reOriginFromURI.exec(uri); - return matches !== null ? matches[0].toLowerCase() : ''; -}; - -/******************************************************************************/ - URI.schemeFromURI = function(uri) { var matches = reSchemeFromURI.exec(uri); if ( matches === null ) { @@ -247,16 +237,11 @@ URI.schemeFromURI = function(uri) { /******************************************************************************/ const reNetworkScheme = /^(?:https?|wss?|ftps?)\b/; -const reNetworkURI = /^(?:ftps?|https?|wss?):\/\//; URI.isNetworkScheme = function(scheme) { return reNetworkScheme.test(scheme); }; -URI.isNetworkURI = function(uri) { - return reNetworkURI.test(uri); -}; - /******************************************************************************/ URI.isSecureScheme = function(scheme) { @@ -267,16 +252,6 @@ URI.reSecureScheme = /^(?:https|wss|ftps)\b/; /******************************************************************************/ -URI.authorityFromURI = function(uri) { - var matches = reAuthorityFromURI.exec(uri); - if ( !matches ) { - return ''; - } - return matches[1].slice(2).toLowerCase(); -}; - -/******************************************************************************/ - // The most used function, so it better be fast. // https://github.com/gorhill/uBlock/issues/1559 @@ -325,21 +300,10 @@ URI.domainFromHostname = function(hostname) { return domainCacheAdd(hostname, hostname); }; -URI.domain = function() { - return this.domainFromHostname(this.hostname); -}; - // It is expected that there is higher-scoped `publicSuffixList` lingering // somewhere. Cache it. See . var psl = publicSuffixList; -/******************************************************************************/ - -URI.pathFromURI = function(uri) { - var matches = rePathFromURI.exec(uri); - return matches !== null ? matches[1] : ''; -}; - /******************************************************************************/ // Trying to alleviate the worries of looking up too often the domain name from @@ -435,92 +399,6 @@ URI.normalizedURI = function() { /******************************************************************************/ -URI.rootURL = function() { - if ( !this.hostname ) { - return ''; - } - return this.assemble(this.schemeBit | this.hostnameBit); -}; - -/******************************************************************************/ - -URI.isValidHostname = function(hostname) { - var r; - try { - r = reValidHostname.test(hostname); - } - catch (e) { - return false; - } - return r; -}; - -/******************************************************************************/ - -// Return the parent domain. For IP address, there is no parent domain. - -URI.parentHostnameFromHostname = function(hostname) { - // `locahost` => `` - // `example.org` => `example.org` - // `www.example.org` => `example.org` - // `tomato.www.example.org` => `example.org` - var domain = this.domainFromHostname(hostname); - - // `locahost` === `` => bye - // `example.org` === `example.org` => bye - // `www.example.org` !== `example.org` => stay - // `tomato.www.example.org` !== `example.org` => stay - if ( domain === '' || domain === hostname ) { - return undefined; - } - - // Parent is hostname minus first label - return hostname.slice(hostname.indexOf('.') + 1); -}; - -/******************************************************************************/ - -// Return all possible parent hostnames which can be derived from `hostname`, -// ordered from direct parent up to domain inclusively. - -URI.parentHostnamesFromHostname = function(hostname) { - // TODO: I should create an object which is optimized to receive - // the list of hostnames by making it reusable (junkyard etc.) and which - // has its own element counter property in order to avoid memory - // alloc/dealloc. - var domain = this.domainFromHostname(hostname); - if ( domain === '' || domain === hostname ) { - return []; - } - var nodes = []; - var pos; - for (;;) { - pos = hostname.indexOf('.'); - if ( pos < 0 ) { - break; - } - hostname = hostname.slice(pos + 1); - nodes.push(hostname); - if ( hostname === domain ) { - break; - } - } - return nodes; -}; - -/******************************************************************************/ - -// Return all possible hostnames which can be derived from `hostname`, -// ordered from self up to domain inclusively. - -URI.allHostnamesFromHostname = function(hostname) { - var nodes = this.parentHostnamesFromHostname(hostname); - nodes.unshift(hostname); - return nodes; -}; - -/******************************************************************************/ - URI.toString = function() { return this.assemble(); }; diff --git a/src/js/utils.js b/src/js/utils.js index 31b9a4d..2b153dc 100644 --- a/src/js/utils.js +++ b/src/js/utils.js @@ -23,12 +23,6 @@ /******************************************************************************/ -µMatrix.gotoURL = function(details) { - vAPI.tabs.open(details); -}; - -/******************************************************************************/ - µMatrix.gotoExtensionURL = function(details) { if ( details.url.startsWith('logger-ui.html') ) { if ( details.shiftKey ) { @@ -85,26 +79,6 @@ /******************************************************************************/ -µMatrix.setToArray = typeof Array.from === 'function' ? - Array.from : - function(dict) { - var out = [], - entries = dict.values(), - entry; - for (;;) { - entry = entries.next(); - if ( entry.done ) { break; } - out.push(entry.value); - } - return out; - }; - -µMatrix.setFromArray = function(arr) { - return new Set(arr); -}; - -/******************************************************************************/ - µMatrix.toMap = function(input) { if ( input instanceof Map ) { return input; diff --git a/src/js/xal.js b/src/js/xal.js deleted file mode 100644 index 10e980e..0000000 --- a/src/js/xal.js +++ /dev/null @@ -1,71 +0,0 @@ -/******************************************************************************* - - µMatrix - a Chromium browser extension to black/white list requests. - Copyright (C) 2014 Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uMatrix -*/ - -/* global chrome, µMatrix */ - -/******************************************************************************/ - -µMatrix.XAL = (function(){ - -/******************************************************************************/ - -var exports = {}; -var noopFunc = function(){}; - -/******************************************************************************/ - -exports.keyvalSetOne = function(key, val, callback) { - var bin = {}; - bin[key] = val; - vAPI.storage.set(bin, callback || noopFunc); -}; - -/******************************************************************************/ - -exports.keyvalGetOne = function(key, callback) { - vAPI.storage.get(key, callback); -}; - -/******************************************************************************/ - -exports.keyvalSetMany = function(dict, callback) { - vAPI.storage.set(dict, callback || noopFunc); -}; - -/******************************************************************************/ - -exports.keyvalRemoveOne = function(key, callback) { - vAPI.storage.remove(key, callback || noopFunc); -}; - -/******************************************************************************/ - -exports.keyvalRemoveAll = function(callback) { - vAPI.storage.clear(callback || noopFunc); -}; - -/******************************************************************************/ - -return exports; - -/******************************************************************************/ - -})();