mirror of
https://github.com/openclaw/openclaw.git
synced 2026-03-12 07:20:45 +00:00
fix(browser): detach tab-cap listing from openTab return path
This commit is contained in:
committed by
Peter Steinberger
parent
22ec577d80
commit
e303b356ba
@@ -486,10 +486,12 @@ describe("browser server-context tab selection state", () => {
|
||||
|
||||
const opened = await openclaw.openTab("http://127.0.0.1:3009");
|
||||
expect(opened.targetId).toBe("NEW");
|
||||
expect(fetchMock).toHaveBeenCalledWith(
|
||||
expect.stringContaining("/json/close/OLD1"),
|
||||
expect.any(Object),
|
||||
);
|
||||
await vi.waitFor(() => {
|
||||
expect(fetchMock).toHaveBeenCalledWith(
|
||||
expect.stringContaining("/json/close/OLD1"),
|
||||
expect.any(Object),
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
it("does not fail tab open when managed-tab cleanup list fails", async () => {
|
||||
|
||||
@@ -165,6 +165,12 @@ function createProfileContext(
|
||||
}
|
||||
};
|
||||
|
||||
const triggerManagedTabLimit = (keepTargetId: string): void => {
|
||||
void enforceManagedTabLimit(keepTargetId).catch(() => {
|
||||
// best-effort cleanup only
|
||||
});
|
||||
};
|
||||
|
||||
const openTab = async (url: string): Promise<BrowserTab> => {
|
||||
const ssrfPolicyOpts = withBrowserNavigationPolicy(state().resolved.ssrfPolicy);
|
||||
|
||||
@@ -181,7 +187,7 @@ function createProfileContext(
|
||||
});
|
||||
const profileState = getProfileState();
|
||||
profileState.lastTargetId = page.targetId;
|
||||
await enforceManagedTabLimit(page.targetId);
|
||||
triggerManagedTabLimit(page.targetId);
|
||||
return {
|
||||
targetId: page.targetId,
|
||||
title: page.title,
|
||||
@@ -208,12 +214,12 @@ function createProfileContext(
|
||||
const found = tabs.find((t) => t.targetId === createdViaCdp);
|
||||
if (found) {
|
||||
await assertBrowserNavigationResultAllowed({ url: found.url, ...ssrfPolicyOpts });
|
||||
await enforceManagedTabLimit(found.targetId);
|
||||
triggerManagedTabLimit(found.targetId);
|
||||
return found;
|
||||
}
|
||||
await new Promise((r) => setTimeout(r, 100));
|
||||
}
|
||||
await enforceManagedTabLimit(createdViaCdp);
|
||||
triggerManagedTabLimit(createdViaCdp);
|
||||
return { targetId: createdViaCdp, title: "", url, type: "page" };
|
||||
}
|
||||
|
||||
@@ -250,7 +256,7 @@ function createProfileContext(
|
||||
profileState.lastTargetId = created.id;
|
||||
const resolvedUrl = created.url ?? url;
|
||||
await assertBrowserNavigationResultAllowed({ url: resolvedUrl, ...ssrfPolicyOpts });
|
||||
await enforceManagedTabLimit(created.id);
|
||||
triggerManagedTabLimit(created.id);
|
||||
return {
|
||||
targetId: created.id,
|
||||
title: created.title ?? "",
|
||||
|
||||
Reference in New Issue
Block a user