1
0
mirror of https://github.com/bitwarden/browser synced 2025-12-11 05:43:41 +00:00
Files
browser/apps/browser/src/platform/badge/test/mock-badge-browser-api.ts
Andreas Coroiu 1d9ebb028e [PM-24615][PM-24999] Adjust autofill badge updater to only calculate the active tab (#16163)
* wip

* feat: refactor how we react to tab changes

* feat: always begin me emitting all active tabs

* feat: only calculate autofill for active tabs

* fix: bug not properly listening to reloads

* wip

* fix: clean up

* fix: clean up
2025-09-05 09:18:10 +02:00

47 lines
1.2 KiB
TypeScript

import { BehaviorSubject } from "rxjs";
import { BadgeBrowserApi, RawBadgeState, Tab } from "../badge-browser-api";
export class MockBadgeBrowserApi implements BadgeBrowserApi {
private _activeTabsUpdated$ = new BehaviorSubject<Tab[]>([]);
activeTabsUpdated$ = this._activeTabsUpdated$.asObservable();
specificStates: Record<number, RawBadgeState> = {};
generalState?: RawBadgeState;
tabs: number[] = [];
activeTabs: number[] = [];
getActiveTabs(): Promise<Tab[]> {
return Promise.resolve(
this.activeTabs.map(
(tabId) =>
({
tabId,
url: `https://example.com/${tabId}`,
}) satisfies Tab,
),
);
}
setActiveTabs(tabs: number[]) {
this.activeTabs = tabs;
this._activeTabsUpdated$.next(
tabs.map((tabId) => ({ tabId, url: `https://example.com/${tabId}` })),
);
}
setState = jest.fn().mockImplementation((state: RawBadgeState, tabId?: number): Promise<void> => {
if (tabId !== undefined) {
this.specificStates[tabId] = state;
} else {
this.generalState = state;
}
return Promise.resolve();
});
getTabs(): Promise<number[]> {
return Promise.resolve(this.tabs);
}
}