diff options
Diffstat (limited to 'data/extensions/jsr@javascriptrestrictor/nscl/service/NavCache.js')
-rw-r--r-- | data/extensions/jsr@javascriptrestrictor/nscl/service/NavCache.js | 32 |
1 files changed, 16 insertions, 16 deletions
diff --git a/data/extensions/jsr@javascriptrestrictor/nscl/service/NavCache.js b/data/extensions/jsr@javascriptrestrictor/nscl/service/NavCache.js index 0e603fd..28bdb0d 100644 --- a/data/extensions/jsr@javascriptrestrictor/nscl/service/NavCache.js +++ b/data/extensions/jsr@javascriptrestrictor/nscl/service/NavCache.js @@ -1,7 +1,7 @@ /* * NoScript Commons Library * Reusable building blocks for cross-browser security/privacy WebExtensions. - * Copyright (C) 2020-2023 Giorgio Maone <https://maone.net> + * Copyright (C) 2020-2024 Giorgio Maone <https://maone.net> * * SPDX-License-Identifier: GPL-3.0-or-later * @@ -45,26 +45,26 @@ var NavCache = (() => { }); browser.tabs.onRemoved.addListener(tabId => { - tabs.delete(tabId); + delete tabs[tabId]; }); - (async () => { - - async function populateFrames(tab) { - let tabId = tab.id; - let frames = await browser.webNavigation.getAllFrames({tabId}); - if (!frames) return; // invalid tab - if (!tabs[tabId]) tabs[tabId] = {}; - let top = tabs[tabId]; - for ({frameId, url, parentFrameId} of frames) { - tab[frameId] = {url, parentFrameId}; + return { + wakening: (async () => { + async function populateFrames(tab) { + let tabId = tab.id; + let frames = await browser.webNavigation.getAllFrames({tabId}); + if (!frames) return; // invalid tab + if (!tabs[tabId]) tabs[tabId] = {}; + let top = tabs[tabId]; + for ({frameId, url, parentFrameId} of frames) { + tab[frameId] = {url, parentFrameId}; + } } - } - await Promise.all((await browser.tabs.query({})).map(populateFrames)); - })(); + await Promise.all((await browser.tabs.query({})).map(populateFrames)); + return true; + })(), - return { getTab(tabId) { return clone(tabs[tabId] || {}); }, |