fix: a site allowed without Remember stays connected when the background worker idles (closes #526)
A connection allowed without "Remember my choice for this site" lived in a module-level object in the background, so it ended the first time Chrome stopped the idle worker. Each such connection is now one item in the browser's session storage, which outlives the worker and is emptied when the browser closes, read and written through new wrappers in src/shared/browserApi.js. Removal in Settings, address switch, address removal and wallet removal still end it; Settings now waits for the removal before redrawing. manifest/firefox.json now declares a minimum of Firefox 115.0, the first with session storage. Judgement call: address and wallet removal still notify the background without waiting. Model: opus-5-5
This commit was merged in pull request #568.
This commit is contained in:
@@ -76,11 +76,13 @@ function forgetOrigin(siteMap, origin) {
|
||||
|
||||
// Removing a site from Allowed Sites or Connected Sites disconnects it: it is
|
||||
// no longer allowed under any address, and the background ends its
|
||||
// connections approved without "Remember" and tells its open tabs.
|
||||
// connections approved without "Remember" and tells its open tabs. The
|
||||
// background answers once those have ended, so the lists drawn after it no
|
||||
// longer show the site.
|
||||
async function removeAllowedSite(origin) {
|
||||
forgetOrigin(state.allowedSites, origin);
|
||||
await saveState();
|
||||
notify({ type: "AUTISTMASK_REMOVE_SITE", origin });
|
||||
await sendMessage({ type: "AUTISTMASK_REMOVE_SITE", origin });
|
||||
await renderSiteLists();
|
||||
}
|
||||
|
||||
@@ -230,8 +232,8 @@ async function renderSiteLists() {
|
||||
Object.values(state.deniedSites).flat(),
|
||||
removeDeniedSite,
|
||||
);
|
||||
// Sites allowed without "Remember" are held only by the background, in
|
||||
// memory, so it is asked for them.
|
||||
// Sites allowed without "Remember" are held only in session storage, which
|
||||
// the background keeps, so it is asked for them.
|
||||
renderSiteList(
|
||||
"settings-connected-sites",
|
||||
await sendMessage({ type: "AUTISTMASK_GET_CONNECTED_SITES" }),
|
||||
|
||||
Reference in New Issue
Block a user