Still storing some non-tracking domains
It looks like we are still recording non-tracking subdomains of tracking domains. This should be fewer non-tracking domains than before, but still, we shouldn't store any.
You can see if you have any such domains by running the following code in your Badger's background page:
(function () {
const actionMap = badger.storage.getBadgerStorageObject("action_map"),
actions = actionMap.getItemClones();
for (const domain in actions) {
const map = actions[domain];
if (map.userAction == "" && map.heuristicAction == "") {
console.log(domain);
}
}
}());
This follows up on https://github.com/EFForg/privacybadger/pull/1795#issuecomment-365009452 and #1446.
One complication is that we don't want to keep rechecking DNT on blocked domains.
We store last check time in the same action_map data structure. Discarding (never storing) non-tracking subdomains will discard these timestamps and precipitate DNT checks next time these subdomains are encountered and blocked (because of an already-blocked parent domain).
A potential fix would be to move last DNT check timestamps out of action_map into their own data structure subject to periodic cleanup.
This is related to #888 (for example #2676).
Firefox doesn't seem to enforce any storage.local-specific quotas at this time: https://github.com/EFForg/privacybadger/pull/2464#pullrequestreview-293282804