mirror of
https://github.com/gorhill/uBlock.git
synced 2024-10-06 09:37:12 +02:00
Add advanced setting requestStatsDisabled
To disable collating global blocked/allowed counts. Boolean, default to `false`. Setting to `true` will prevent uBO from loading/saving global blocked/allowed counts, and in such case the "Blocked since install" count instead reflects the count since uBO launched. Setting back to `false` will cause the counts to resume from last time they were saved. Related issue: https://github.com/uBlockOrigin/uBlock-issues/issues/3100
This commit is contained in:
parent
e0971fe0ac
commit
e02ea69c86
@ -83,6 +83,7 @@ const hiddenSettingsDefault = {
|
||||
popupPanelLockedSections: 0,
|
||||
popupPanelHeightMode: 0,
|
||||
requestJournalProcessPeriod: 1000,
|
||||
requestStatsDisabled: false,
|
||||
selfieAfter: 2,
|
||||
strictBlockingBypassDuration: 120,
|
||||
toolbarWarningTimeout: 60,
|
||||
|
@ -97,7 +97,13 @@ import {
|
||||
/******************************************************************************/
|
||||
|
||||
{
|
||||
µb.loadLocalSettings = ( ) => Promise.all([
|
||||
const requestStats = µb.requestStats;
|
||||
let requestStatsDisabled = false;
|
||||
|
||||
µb.loadLocalSettings = async ( ) => {
|
||||
requestStatsDisabled = µb.hiddenSettings.requestStatsDisabled;
|
||||
if ( requestStatsDisabled ) { return; }
|
||||
return Promise.all([
|
||||
vAPI.sessionStorage.get('requestStats'),
|
||||
vAPI.storage.get('requestStats'),
|
||||
vAPI.storage.get([ 'blockedRequestCount', 'allowedRequestCount' ]),
|
||||
@ -112,37 +118,59 @@ import {
|
||||
}
|
||||
return { blockedCount: 0, allowedCount: 0 };
|
||||
}).then(({ blockedCount, allowedCount }) => {
|
||||
µb.requestStats.blockedCount += blockedCount;
|
||||
µb.requestStats.allowedCount += allowedCount;
|
||||
requestStats.blockedCount += blockedCount;
|
||||
requestStats.allowedCount += allowedCount;
|
||||
});
|
||||
};
|
||||
|
||||
const SAVE_DELAY_IN_MINUTES = 3.6;
|
||||
const QUICK_SAVE_DELAY_IN_SECONDS = 23;
|
||||
|
||||
const stopTimers = ( ) => {
|
||||
vAPI.alarms.clear('saveLocalSettings');
|
||||
quickSaveTimer.off();
|
||||
saveTimer.off();
|
||||
};
|
||||
|
||||
const saveTimer = vAPI.defer.create(( ) => {
|
||||
µb.saveLocalSettings();
|
||||
});
|
||||
|
||||
const quickSaveTimer = vAPI.defer.create(( ) => {
|
||||
if ( vAPI.sessionStorage.unavailable !== true ) {
|
||||
vAPI.sessionStorage.set({ requestStats: requestStats });
|
||||
}
|
||||
if ( requestStatsDisabled ) { return; }
|
||||
saveTimer.on({ min: SAVE_DELAY_IN_MINUTES });
|
||||
if ( vAPI.sessionStorage.unavailable ) { return; }
|
||||
vAPI.sessionStorage.set({ requestStats: µb.requestStats });
|
||||
vAPI.alarms.createIfNotPresent('saveLocalSettings', {
|
||||
delayInMinutes: SAVE_DELAY_IN_MINUTES + 0.5
|
||||
});
|
||||
});
|
||||
|
||||
µb.incrementRequestStats = (blocked, allowed) => {
|
||||
µb.requestStats.blockedCount += blocked;
|
||||
µb.requestStats.allowedCount += allowed;
|
||||
requestStats.blockedCount += blocked;
|
||||
requestStats.allowedCount += allowed;
|
||||
quickSaveTimer.on({ sec: QUICK_SAVE_DELAY_IN_SECONDS });
|
||||
};
|
||||
|
||||
µb.saveLocalSettings = ( ) => {
|
||||
vAPI.alarms.clear('saveLocalSettings');
|
||||
quickSaveTimer.off(); saveTimer.off();
|
||||
stopTimers();
|
||||
if ( requestStatsDisabled ) { return; }
|
||||
return vAPI.storage.set({ requestStats: µb.requestStats });
|
||||
};
|
||||
|
||||
onBroadcast(msg => {
|
||||
if ( msg.what !== 'hiddenSettingsChanged' ) { return; }
|
||||
const newState = µb.hiddenSettings.requestStatsDisabled;
|
||||
if ( requestStatsDisabled === newState ) { return; }
|
||||
requestStatsDisabled = newState;
|
||||
if ( newState ) {
|
||||
stopTimers();
|
||||
µb.requestStats.blockedCount = µb.requestStats.allowedCount = 0;
|
||||
} else {
|
||||
µb.loadLocalSettings();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/******************************************************************************/
|
||||
|
Loading…
Reference in New Issue
Block a user