Closed JustOff closed 7 years ago
0ab8e3d
Вы автор, как я понимаю? Совместимость с E10S планируется? UPD: Ага, уже сам нашел ответ.
Да, я автор. С e10s там ситуация следующая: в Mozilla решили похерить глобальные уведомления dom-storage2-changed в многопроцессорном режиме. Т.е. непонятно как отслеживать новые ключи в localStorage и эта проблема общая для Self-Destructing Cookies и Cookies Exterminator - про изменения в localStorage они узнают только при следующем рестарте браузера. В остальном мой код полностью протестирован на совместимость с e10s и каких-либо проблем создавать не будет.
А разве нельзя просто при каждой выгрузке вкладки проверять, есть ли еще вкладки с этого домена и очищать все, если нет?
Так и делается, но для localStorage, в отличии от cookies, в браузере не существует API чтобы получить все существующие объекты, поэтому приходится при старте читать их напрямую из sqlite файла и отслеживать новые. И даже если читать файл периодически (что гарантированно просадит производительность и плохая идея), из-за кеширования все равно нет гарантии что там будет все что нужно.
А зачем их получать? Можно удалять все для домена как Ctrl+Shift+Del делает:
// https://hg.mozilla.org/mozilla-central/file/23dc78b7b57e9f91798ea44c242a04e112c37db0/dom/storage/DOMStorageObserver.cpp#l231
Components.classes["@mozilla.org/observer-service;1"]
.getService(Components.interfaces.nsIObserverService)
.notifyObservers(null, "browser:purge-domain-data", "youtube.com");
Это замечательно, но как узнать для каких доменов кроме того который в location было что-то добавлено в localStorage? Ведь главная проблема именно в том что успевают нагадить все сторонние рекламные и трекинговые скрипты ... плюс еще iframe ...
Да, действительно. Можно еще uMatrix попробовать глянуть - он вроде умеет чистить localStorage и даже Web Extension API при этом обходится как-то.
Cookies Exterminator