diff --git a/src/background/common.js b/src/background/common.js index 60f2683a2a..068519c1f6 100644 --- a/src/background/common.js +++ b/src/background/common.js @@ -24,9 +24,14 @@ export const dataHub = { }; const data = {__proto__: null}; +/** @type {Set<(isDark: boolean) => ?>} */ export const onSchemeChange = new Set(); +/** @type {Set<(tabId: number, url: string, oldUrl?: string) => ?>} */ +export const onTabUrlChange = new Set(); +/** @type {Set<(tabId: number, frameId: number, port: chrome.runtime.Port) => ?>} */ export const onUnload = new Set(); -export const onUrl = new Set(); +/** @type {Set<(data: Object, type: 'committed'|'history'|'hash') => ?>} */ +export const onUrlChange = new Set(); export const uuidIndex = Object.assign(new Map(), { custom: {}, diff --git a/src/background/icon-manager.js b/src/background/icon-manager.js index fc6953d7ab..dc16b38fdb 100644 --- a/src/background/icon-manager.js +++ b/src/background/icon-manager.js @@ -1,4 +1,4 @@ -import {kDisableAll, kStyleIds, kUrl} from '@/js/consts'; +import {kDisableAll, kStyleIds} from '@/js/consts'; import {__values as __prefs, subscribe} from '@/js/prefs'; import {CHROME, FIREFOX, MOBILE, VIVALDI} from '@/js/ua'; import {debounce, t} from '@/js/util'; @@ -70,11 +70,10 @@ onUnload.add((tabId, frameId, port) => { */ export function updateIconBadge(styleIds, lazyBadge) { // FIXME: in some cases, we only have to redraw the badge. is it worth a optimization? - const {tab: {id: tabId}, TDM, url} = this.sender; + const {tab: {id: tabId}, TDM} = this.sender; const frameId = TDM > 0 ? 0 : this.sender.frameId; const value = styleIds.length ? styleIds.map(Number) : undefined; tabMan.set(tabId, kStyleIds, frameId, value); - tabMan.set(tabId, kUrl, frameId, value && url); debounce(refreshStaleBadges, frameId && lazyBadge ? 250 : 0); staleBadges.add(tabId); if (!frameId) refreshIcon(tabId, true); diff --git a/src/background/navigation-manager.js b/src/background/navigation-manager.js index 0843d707a8..875a656989 100644 --- a/src/background/navigation-manager.js +++ b/src/background/navigation-manager.js @@ -5,11 +5,9 @@ import {chromeProtectsNTP} from '@/js/urls'; import {deepEqual} from '@/js/util'; import {ignoreChromeError, MF} from '@/js/util-webext'; import {pingTab, sendTab} from './broadcast'; -import {bgBusy} from './common'; +import {bgBusy, onUrlChange} from './common'; import tabCache from './tab-manager'; -/** @type {Set<(data: Object, type: 'committed'|'history'|'hash') => ?>} */ -export const onUrlChange = new Set(); export const webNavigation = chrome.webNavigation; /** @type {{ url: chrome.events.UrlFilter[] }} */ const WEBNAV_FILTER_STYLABLE = { diff --git a/src/background/tab-manager.js b/src/background/tab-manager.js index dc5a953ea4..bb0850d4c3 100644 --- a/src/background/tab-manager.js +++ b/src/background/tab-manager.js @@ -2,9 +2,9 @@ import {kApplyPort, kStyleIds, kUrl} from '@/js/consts'; import {onDisconnect} from '@/js/msg'; import {supported} from '@/js/urls'; import {ignoreChromeError} from '@/js/util-webext'; -import {bgBusy, bgInit, onUnload, onUrl} from './common'; +import {bgBusy, bgInit, onUnload, onTabUrlChange, onUrlChange} from './common'; import {stateDB} from './db'; -import {kCommitted, onUrlChange} from './navigation-manager'; +import {kCommitted} from './navigation-manager'; /** @typedef {{ url:string, styleIds: {[frameId:string]: number[]} }} StyleIdsFrameMap */ /** @type {Map} */ @@ -109,9 +109,9 @@ bgBusy.then(() => { obj[kUrl] = {0: url}; else (obj[kUrl] ??= {})[frameId] = url; - if (frameId) return; if (__.MV3) stateDB.put(obj, tabId); - for (const fn of onUrl) fn(tabId, url, oldUrl); + if (frameId) return; + for (const fn of onTabUrlChange) fn(tabId, url, oldUrl); }); }); diff --git a/src/background/usercss-install-helper.js b/src/background/usercss-install-helper.js index 887e4045f4..2482763776 100644 --- a/src/background/usercss-install-helper.js +++ b/src/background/usercss-install-helper.js @@ -5,7 +5,7 @@ import * as prefs from '@/js/prefs'; import {FIREFOX} from '@/js/ua'; import * as URLS from '@/js/urls'; import {getHost, RX_META} from '@/js/util'; -import {bgBusy, onUrl} from './common'; +import {bgBusy, onTabUrlChange} from './common'; import download from './download'; import tabCache, * as tabMan from './tab-manager'; import {openURL} from './tab-util'; @@ -27,8 +27,8 @@ export function getInstallCode(url) { } function toggle(key, val, isInit) { - if (val) onUrl.add(maybeInstall); - else onUrl.delete(maybeInstall); + if (val) onTabUrlChange.add(maybeInstall); + else onTabUrlChange.delete(maybeInstall); if (!__.MV3 || !isInit) toggleUrlInstaller(val); }