mirror of
https://github.com/getpaseo/paseo.git
synced 2026-11-10 10:25:03 +00:00
Unhandled webview keys could be redispatched into the active host window, allowing agent Enter to submit a draft prompt. Give pages first refusal for ordinary shortcuts and contain automation at the guest boundary.
71 lines
2.3 KiB
TypeScript
71 lines
2.3 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
import { reloadActiveBrowserOrWindow } from "./menu.js";
|
|
|
|
class FakeWebContents {
|
|
public readonly reloads: string[] = [];
|
|
|
|
public constructor(public readonly id: number) {}
|
|
|
|
public isLoadingMainFrame(): boolean {
|
|
return false;
|
|
}
|
|
|
|
public stop(): void {
|
|
this.reloads.push("stop");
|
|
}
|
|
|
|
public reload(): void {
|
|
this.reloads.push("reload");
|
|
}
|
|
|
|
public reloadIgnoringCache(): void {
|
|
this.reloads.push("force-reload");
|
|
}
|
|
}
|
|
|
|
class BrowserReloads {
|
|
public readonly firstWindow = { webContents: new FakeWebContents(101) };
|
|
public readonly secondWindow = { webContents: new FakeWebContents(202) };
|
|
public readonly firstBrowser = new FakeWebContents(11);
|
|
public readonly secondBrowser = new FakeWebContents(22);
|
|
public readonly resolvedHostWindowIds: number[] = [];
|
|
|
|
public activeBrowserForHostWindow(hostWebContentsId: number): FakeWebContents | null {
|
|
this.resolvedHostWindowIds.push(hostWebContentsId);
|
|
return hostWebContentsId === 101 ? this.firstBrowser : this.secondBrowser;
|
|
}
|
|
}
|
|
|
|
describe("reloadActiveBrowserOrWindow", () => {
|
|
it("reloads only the active browser belonging to the supplied window", () => {
|
|
const browserReloads = new BrowserReloads();
|
|
|
|
reloadActiveBrowserOrWindow({
|
|
win: browserReloads.firstWindow,
|
|
getActiveBrowserContentsForHostWindow:
|
|
browserReloads.activeBrowserForHostWindow.bind(browserReloads),
|
|
});
|
|
|
|
expect(browserReloads.resolvedHostWindowIds).toEqual([101]);
|
|
expect(browserReloads.firstBrowser.reloads).toEqual(["reload"]);
|
|
expect(browserReloads.secondBrowser.reloads).toEqual([]);
|
|
expect(browserReloads.firstWindow.webContents.reloads).toEqual([]);
|
|
});
|
|
|
|
it("force reloads only the active browser belonging to the supplied window", () => {
|
|
const browserReloads = new BrowserReloads();
|
|
|
|
reloadActiveBrowserOrWindow({
|
|
win: browserReloads.secondWindow,
|
|
getActiveBrowserContentsForHostWindow:
|
|
browserReloads.activeBrowserForHostWindow.bind(browserReloads),
|
|
ignoreCache: true,
|
|
});
|
|
|
|
expect(browserReloads.resolvedHostWindowIds).toEqual([202]);
|
|
expect(browserReloads.firstBrowser.reloads).toEqual([]);
|
|
expect(browserReloads.secondBrowser.reloads).toEqual(["force-reload"]);
|
|
expect(browserReloads.secondWindow.webContents.reloads).toEqual([]);
|
|
});
|
|
});
|