fix(browser): keep input blocker active across navigations (#22562)

Co-authored-by: cynthialong0-0 <82900738+cynthialong0-0@users.noreply.github.com>
This commit is contained in:
Aditya Bijalwan
2026-03-26 22:24:49 +05:30
committed by GitHub
parent a3c1c659fd
commit 5755ec2dcf
6 changed files with 163 additions and 31 deletions
@@ -198,11 +198,14 @@ const RESUME_BLOCKER_FUNCTION = `() => {
*/
export async function injectInputBlocker(
browserManager: BrowserManager,
signal?: AbortSignal,
): Promise<void> {
try {
await browserManager.callTool('evaluate_script', {
function: INPUT_BLOCKER_FUNCTION,
});
await browserManager.callTool(
'evaluate_script',
{ function: INPUT_BLOCKER_FUNCTION },
signal,
);
debugLogger.log('Input blocker injected successfully');
} catch (error) {
// Log but don't throw - input blocker is a UX enhancement, not critical functionality
@@ -222,11 +225,14 @@ export async function injectInputBlocker(
*/
export async function removeInputBlocker(
browserManager: BrowserManager,
signal?: AbortSignal,
): Promise<void> {
try {
await browserManager.callTool('evaluate_script', {
function: REMOVE_BLOCKER_FUNCTION,
});
await browserManager.callTool(
'evaluate_script',
{ function: REMOVE_BLOCKER_FUNCTION },
signal,
);
debugLogger.log('Input blocker removed successfully');
} catch (error) {
// Log but don't throw - removal failure is not critical
@@ -244,11 +250,14 @@ export async function removeInputBlocker(
*/
export async function suspendInputBlocker(
browserManager: BrowserManager,
signal?: AbortSignal,
): Promise<void> {
try {
await browserManager.callTool('evaluate_script', {
function: SUSPEND_BLOCKER_FUNCTION,
});
await browserManager.callTool(
'evaluate_script',
{ function: SUSPEND_BLOCKER_FUNCTION },
signal,
);
} catch {
// Non-critical — tool call will still attempt to proceed
}
@@ -260,11 +269,14 @@ export async function suspendInputBlocker(
*/
export async function resumeInputBlocker(
browserManager: BrowserManager,
signal?: AbortSignal,
): Promise<void> {
try {
await browserManager.callTool('evaluate_script', {
function: RESUME_BLOCKER_FUNCTION,
});
await browserManager.callTool(
'evaluate_script',
{ function: RESUME_BLOCKER_FUNCTION },
signal,
);
} catch {
// Non-critical
}