2014-06-24 00:42:43 +02:00
|
|
|
/*******************************************************************************
|
|
|
|
|
2016-06-29 04:01:15 +02:00
|
|
|
uBlock Origin - a browser extension to block requests.
|
2018-02-15 23:25:38 +01:00
|
|
|
Copyright (C) 2014-2018 Raymond Hill
|
2014-06-24 00:42:43 +02:00
|
|
|
|
|
|
|
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/uBlock
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
2017-03-05 14:25:55 +01:00
|
|
|
/* global objectAssign */
|
2014-06-24 00:42:43 +02:00
|
|
|
|
2017-03-05 14:25:55 +01:00
|
|
|
'use strict';
|
2014-08-21 05:19:27 +02:00
|
|
|
|
|
|
|
/******************************************************************************/
|
|
|
|
|
2017-03-05 14:25:55 +01:00
|
|
|
var µBlock = (function() { // jshint ignore:line
|
2014-09-26 03:21:55 +02:00
|
|
|
|
2017-03-05 14:25:55 +01:00
|
|
|
var oneSecond = 1000,
|
|
|
|
oneMinute = 60 * oneSecond;
|
2014-09-26 03:21:55 +02:00
|
|
|
|
2017-03-05 14:25:55 +01:00
|
|
|
var hiddenSettingsDefault = {
|
2017-01-18 19:17:47 +01:00
|
|
|
assetFetchTimeout: 30,
|
|
|
|
autoUpdateAssetFetchPeriod: 120,
|
|
|
|
autoUpdatePeriod: 7,
|
2016-11-03 16:20:47 +01:00
|
|
|
ignoreRedirectFilters: false,
|
|
|
|
ignoreScriptInjectFilters: false,
|
2018-02-21 14:19:43 +01:00
|
|
|
streamScriptInjectFilters: false,
|
2017-01-18 19:17:47 +01:00
|
|
|
manualUpdateAssetFetchPeriod: 2000,
|
2016-11-06 22:27:21 +01:00
|
|
|
popupFontSize: 'unset',
|
2017-03-05 18:54:47 +01:00
|
|
|
suspendTabsUntilReady: false,
|
|
|
|
userResourcesLocation: 'unset'
|
2017-03-05 14:25:55 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
return {
|
|
|
|
firstInstall: false,
|
|
|
|
|
|
|
|
onBeforeStartQueue: [],
|
|
|
|
onStartCompletedQueue: [],
|
|
|
|
|
|
|
|
userSettings: {
|
|
|
|
advancedUserEnabled: false,
|
|
|
|
alwaysDetachLogger: false,
|
|
|
|
autoUpdate: true,
|
|
|
|
cloudStorageEnabled: false,
|
|
|
|
collapseBlocked: true,
|
|
|
|
colorBlindFriendly: false,
|
|
|
|
contextMenuEnabled: true,
|
|
|
|
dynamicFilteringEnabled: false,
|
|
|
|
externalLists: [],
|
|
|
|
firewallPaneMinimized: true,
|
|
|
|
hyperlinkAuditingDisabled: true,
|
|
|
|
ignoreGenericCosmeticFilters: false,
|
|
|
|
largeMediaSize: 50,
|
|
|
|
parseAllABPHideFilters: true,
|
|
|
|
prefetchingDisabled: true,
|
|
|
|
requestLogMaxEntries: 1000,
|
|
|
|
showIconBadge: true,
|
|
|
|
tooltipsDisabled: false,
|
|
|
|
webrtcIPAddressHidden: false
|
|
|
|
},
|
|
|
|
|
|
|
|
hiddenSettingsDefault: hiddenSettingsDefault,
|
|
|
|
hiddenSettings: (function() {
|
|
|
|
var out = objectAssign({}, hiddenSettingsDefault),
|
2018-02-21 19:29:36 +01:00
|
|
|
json = vAPI.localStorage.getItem('immediateHiddenSettings');
|
2017-03-05 14:25:55 +01:00
|
|
|
if ( typeof json === 'string' ) {
|
|
|
|
try {
|
|
|
|
var o = JSON.parse(json);
|
|
|
|
if ( o instanceof Object ) {
|
|
|
|
for ( var k in o ) {
|
|
|
|
if ( out.hasOwnProperty(k) ) {
|
|
|
|
out[k] = o[k];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
catch(ex) {
|
|
|
|
}
|
|
|
|
}
|
2018-02-21 19:29:36 +01:00
|
|
|
// Remove once 1.15.12+ is widespread.
|
|
|
|
vAPI.localStorage.removeItem('hiddenSettings');
|
2017-03-05 14:25:55 +01:00
|
|
|
return out;
|
|
|
|
})(),
|
|
|
|
|
|
|
|
// Features detection.
|
|
|
|
privacySettingsSupported: vAPI.browserSettings instanceof Object,
|
|
|
|
cloudStorageSupported: vAPI.cloud instanceof Object,
|
2017-12-28 19:49:02 +01:00
|
|
|
canFilterResponseBody: vAPI.net.canFilterResponseBody === true,
|
2017-03-05 14:25:55 +01:00
|
|
|
|
|
|
|
// https://github.com/chrisaljoudi/uBlock/issues/180
|
|
|
|
// Whitelist directives need to be loaded once the PSL is available
|
|
|
|
netWhitelist: {},
|
|
|
|
netWhitelistModifyTime: 0,
|
|
|
|
netWhitelistDefault: [
|
|
|
|
'about-scheme',
|
|
|
|
'behind-the-scene',
|
|
|
|
'chrome-extension-scheme',
|
|
|
|
'chrome-scheme',
|
|
|
|
'moz-extension-scheme',
|
|
|
|
'opera-scheme',
|
|
|
|
'vivaldi-scheme',
|
|
|
|
''
|
|
|
|
].join('\n'),
|
|
|
|
|
|
|
|
localSettings: {
|
|
|
|
blockedRequestCount: 0,
|
|
|
|
allowedRequestCount: 0
|
|
|
|
},
|
|
|
|
localSettingsLastModified: 0,
|
|
|
|
localSettingsLastSaved: 0,
|
|
|
|
|
|
|
|
// read-only
|
|
|
|
systemSettings: {
|
2017-12-28 19:49:02 +01:00
|
|
|
compiledMagic: 'puuijtkfpspv',
|
2018-02-15 23:25:38 +01:00
|
|
|
selfieMagic: 'tuqilngsxkwo'
|
2017-03-05 14:25:55 +01:00
|
|
|
},
|
|
|
|
|
|
|
|
restoreBackupSettings: {
|
|
|
|
lastRestoreFile: '',
|
|
|
|
lastRestoreTime: 0,
|
|
|
|
lastBackupFile: '',
|
|
|
|
lastBackupTime: 0
|
|
|
|
},
|
|
|
|
|
|
|
|
// Allows to fully customize uBO's assets, typically set through admin
|
|
|
|
// settings. The content of 'assets.json' will also tell which filter
|
|
|
|
// lists to enable by default when uBO is first installed.
|
|
|
|
assetsBootstrapLocation: 'assets/assets.json',
|
|
|
|
|
|
|
|
userFiltersPath: 'user-filters',
|
|
|
|
pslAssetKey: 'public_suffix_list.dat',
|
|
|
|
|
|
|
|
selectedFilterLists: [],
|
|
|
|
availableFilterLists: {},
|
|
|
|
|
2017-06-02 14:17:09 +02:00
|
|
|
selfieAfter: 17 * oneMinute,
|
2017-03-05 14:25:55 +01:00
|
|
|
|
|
|
|
pageStores: {},
|
|
|
|
pageStoresToken: 0,
|
|
|
|
|
|
|
|
storageQuota: vAPI.storage.QUOTA_BYTES,
|
|
|
|
storageUsed: 0,
|
|
|
|
|
|
|
|
noopFunc: function(){},
|
|
|
|
|
|
|
|
apiErrorCount: 0,
|
2017-09-06 01:49:48 +02:00
|
|
|
|
|
|
|
mouseEventRegister: {
|
|
|
|
tabId: '',
|
|
|
|
x: -1,
|
|
|
|
y: -1,
|
|
|
|
url: ''
|
|
|
|
},
|
|
|
|
|
2017-03-05 14:25:55 +01:00
|
|
|
epickerTarget: '',
|
2017-05-27 17:51:24 +02:00
|
|
|
epickerZap: false,
|
2017-03-05 14:25:55 +01:00
|
|
|
epickerEprom: null,
|
|
|
|
|
|
|
|
scriptlets: {
|
|
|
|
},
|
|
|
|
|
|
|
|
// so that I don't have to care for last comma
|
|
|
|
dummy: 0
|
|
|
|
};
|
2014-06-24 00:42:43 +02:00
|
|
|
|
|
|
|
})();
|
|
|
|
|
|
|
|
/******************************************************************************/
|