diff options
author | Jesús <heckyel@hyperbola.info> | 2022-04-06 10:38:06 +0800 |
---|---|---|
committer | Jesús <heckyel@hyperbola.info> | 2022-04-06 10:38:06 +0800 |
commit | 8aeb670be1d252807252ee2bfe99b15b81c3e28d (patch) | |
tree | ced0973165449d620c5c40876c37ab16b17655f9 /js/vapi-browser.js | |
parent | 5aa99a2ea2b683ba35eb36dfc54efd79f3cfcb85 (diff) | |
download | ematrix-8aeb670be1d252807252ee2bfe99b15b81c3e28d.tar.lz ematrix-8aeb670be1d252807252ee2bfe99b15b81c3e28d.tar.xz ematrix-8aeb670be1d252807252ee2bfe99b15b81c3e28d.zip |
update from upstream
Diffstat (limited to 'js/vapi-browser.js')
-rw-r--r-- | js/vapi-browser.js | 244 |
1 files changed, 122 insertions, 122 deletions
diff --git a/js/vapi-browser.js b/js/vapi-browser.js index 48474f9..2d92498 100644 --- a/js/vapi-browser.js +++ b/js/vapi-browser.js @@ -2,7 +2,7 @@ ηMatrix - a browser extension to black/white list requests. Copyright (C) 2014-2019 The uMatrix/uBlock Origin authors - Copyright (C) 2019-2020 Alessio Vanni + Copyright (C) 2019-2022 Alessio Vanni 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 @@ -17,7 +17,7 @@ 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://libregit.spks.xyz/heckyel/ematrix + Home: https://gitlab.com/vannilla/ematrix uMatrix Home: https://github.com/gorhill/uMatrix */ @@ -29,48 +29,48 @@ vAPI.browser = {}; vAPI.browser.getTabBrowser = function (win) { - return win && win.gBrowser || null; + return win && win.gBrowser || null; }; vAPI.browser.getOwnerWindow = function (target) { - if (target.ownerDocument) { + if (target.ownerDocument) { return target.ownerDocument.defaultView; - } + } - return null; + return null; }; vAPI.browser.settings = { - // For now, only booleans. - originalValues: {}, + // For now, only booleans. + originalValues: {}, - rememberOriginalValue: function (path, setting) { + rememberOriginalValue: function (path, setting) { let key = path + '.' + setting; if (this.originalValues.hasOwnProperty(key)) { - return; + return; } let hasUserValue; let branch = Services.prefs.getBranch(path + '.'); try { - hasUserValue = branch.prefHasUserValue(setting); + hasUserValue = branch.prefHasUserValue(setting); } catch (ex) { - // Ignore + // Ignore } if (hasUserValue !== undefined) { - this.originalValues[key] = hasUserValue - ? this.getValue(path, setting) - : undefined; + this.originalValues[key] = hasUserValue + ? this.getValue(path, setting) + : undefined; } - }, - clear: function (path, setting) { + }, + clear: function (path, setting) { let key = path + '.' + setting; // Value was not overriden -- nothing to restore if (this.originalValues.hasOwnProperty(key) === false) { - return; + return; } let value = this.originalValues[key]; @@ -82,160 +82,160 @@ // Original value was a default one if (value === undefined) { - try { + try { Services.prefs.getBranch(path + '.').clearUserPref(setting); - } catch (ex) { - // Ignore - } - return; + } catch (ex) { + // Ignore + } + return; } // Reset to original value this.setValue(path, setting, value); - }, - getValue: function (path, setting) { + }, + getValue: function (path, setting) { let branch = Services.prefs.getBranch(path + '.'); - try { - switch (branch.getPrefType(setting)) { - case branch.PREF_INT: - return branch.getIntPref(setting); - case branch.PREF_BOOL: - return branch.getBoolPref(setting); - default: - // not supported - return; - } - } catch (e) { - // Ignore - } - }, - setValue: function (path, setting, value) { - let branch = Services.prefs.getBranch(path + '.'); - - try { - switch (typeof value) { - case 'number': - return branch.setIntPref(setting, value); - case 'boolean': - return branch.setBoolPref(setting, value); - default: - // not supported - return; - } - } catch (e) { - // Ignore - } - }, - setSetting: function (setting, value) { + try { + switch (branch.getPrefType(setting)) { + case branch.PREF_INT: + return branch.getIntPref(setting); + case branch.PREF_BOOL: + return branch.getBoolPref(setting); + default: + // not supported + return; + } + } catch (e) { + // Ignore + } + }, + setValue: function (path, setting, value) { + let branch = Services.prefs.getBranch(path + '.'); + + try { + switch (typeof value) { + case 'number': + return branch.setIntPref(setting, value); + case 'boolean': + return branch.setBoolPref(setting, value); + default: + // not supported + return; + } + } catch (e) { + // Ignore + } + }, + setSetting: function (setting, value) { switch (setting) { case 'prefetching': - this.rememberOriginalValue('network', 'prefetch-next'); - // https://bugzilla.mozilla.org/show_bug.cgi?id=814169 - // Sigh. - // eMatrix: doesn't seem the case for Pale - // Moon/Basilisk, but let's keep this anyway - this.rememberOriginalValue('network.http', 'speculative-parallel-limit'); - - // https://github.com/gorhill/uBlock/issues/292 - // "true" means "do not disable", i.e. leave entry alone - if (value) { + this.rememberOriginalValue('network', 'prefetch-next'); + // https://bugzilla.mozilla.org/show_bug.cgi?id=814169 + // Sigh. + // eMatrix: doesn't seem the case for Pale + // Moon/Basilisk, but let's keep this anyway + this.rememberOriginalValue('network.http', 'speculative-parallel-limit'); + + // https://github.com/gorhill/uBlock/issues/292 + // "true" means "do not disable", i.e. leave entry alone + if (value) { this.clear('network', 'prefetch-next'); this.clear('network.http', 'speculative-parallel-limit'); - } else { + } else { this.setValue('network', 'prefetch-next', false); this.setValue('network.http', - 'speculative-parallel-limit', 0); - } - break; + 'speculative-parallel-limit', 0); + } + break; case 'hyperlinkAuditing': - this.rememberOriginalValue('browser', 'send_pings'); - this.rememberOriginalValue('beacon', 'enabled'); + this.rememberOriginalValue('browser', 'send_pings'); + this.rememberOriginalValue('beacon', 'enabled'); - // https://github.com/gorhill/uBlock/issues/292 - // "true" means "do not disable", i.e. leave entry alone - if (value) { + // https://github.com/gorhill/uBlock/issues/292 + // "true" means "do not disable", i.e. leave entry alone + if (value) { this.clear('browser', 'send_pings'); this.clear('beacon', 'enabled'); - } else { + } else { this.setValue('browser', 'send_pings', false); this.setValue('beacon', 'enabled', false); - } - break; + } + break; case 'webrtcIPAddress': - let prefName; - let prefVal; - - // https://github.com/gorhill/uBlock/issues/894 - // Do not disable completely WebRTC if it can be avoided. FF42+ - // has a `media.peerconnection.ice.default_address_only` pref which - // purpose is to prevent local IP address leakage. - if (this.getValue('media.peerconnection', - 'ice.default_address_only') !== undefined) { + let prefName; + let prefVal; + + // https://github.com/gorhill/uBlock/issues/894 + // Do not disable completely WebRTC if it can be avoided. FF42+ + // has a `media.peerconnection.ice.default_address_only` pref which + // purpose is to prevent local IP address leakage. + if (this.getValue('media.peerconnection', + 'ice.default_address_only') !== undefined) { prefName = 'ice.default_address_only'; prefVal = true; - } else { + } else { prefName = 'enabled'; prefVal = false; - } + } - this.rememberOriginalValue('media.peerconnection', prefName); - if (value) { + this.rememberOriginalValue('media.peerconnection', prefName); + if (value) { this.clear('media.peerconnection', prefName); - } else { + } else { this.setValue('media.peerconnection', prefName, prefVal); - } - break; + } + break; default: - break; + break; } - }, - set: function (details) { + }, + set: function (details) { for (let setting in details) { - if (details.hasOwnProperty(setting) === false) { + if (details.hasOwnProperty(setting) === false) { continue; - } - this.setSetting(setting, !!details[setting]); + } + this.setSetting(setting, !!details[setting]); } - }, - restoreAll: function () { + }, + restoreAll: function () { let pos; for (let key in this.originalValues) { - if (this.originalValues.hasOwnProperty(key) === false) { + if (this.originalValues.hasOwnProperty(key) === false) { continue; - } + } - pos = key.lastIndexOf('.'); - this.clear(key.slice(0, pos), key.slice(pos + 1)); + pos = key.lastIndexOf('.'); + this.clear(key.slice(0, pos), key.slice(pos + 1)); } - }, + }, }; vAPI.addCleanUpTask(vAPI.browser.settings - .restoreAll.bind(vAPI.browser.settings)); + .restoreAll.bind(vAPI.browser.settings)); vAPI.browser.data = {}; vAPI.browser.data.clearCache = function (callback) { - // PURGE_DISK_DATA_ONLY:1 - // PURGE_DISK_ALL:2 - // PURGE_EVERYTHING:3 - // However I verified that no argument does clear the cache data. - // There is no cache2 for older versions of Firefox. - if (Services.cache2) { + // PURGE_DISK_DATA_ONLY:1 + // PURGE_DISK_ALL:2 + // PURGE_EVERYTHING:3 + // However I verified that no argument does clear the cache data. + // There is no cache2 for older versions of Firefox. + if (Services.cache2) { Services.cache2.clear(); - } else if (Services.cache) { + } else if (Services.cache) { Services.cache.evictEntries(Services.cache.STORE_ON_DISK); - } + } - if (typeof callback === 'function') { + if (typeof callback === 'function') { callback(); - } + } }; vAPI.browser.data.clearOrigin = function(/* domain */) { - // TODO - // eMatrix: is this actually needed? I don't really know what - // it's supposed to do anyway. + // TODO + // eMatrix: is this actually needed? I don't really know what + // it's supposed to do anyway. }; })(); |