Skip to content

fix(cooperation): preserve main-page control across iframe refreshes - #599

Merged
NianJiuZst merged 1 commit into
mainfrom
codex/fix-dynamic-iframe-control
Nov 5, 2026
Merged

NianJiuZst merged 1 commit into
mainfrom
codex/fix-dynamic-iframe-control

Conversation

@NianJiuZst

Copy link
Copy Markdown
Collaborator

A carousel, embedded player or advertisement that refreshes a child iframe can revoke target-policy control for the whole task tab. A click on an unchanged main-page button then fails with control_context_invalid or document_changed. This reproduced on the Slick demo while its advertising and comment frames loaded, and in a deterministic carousel-frame regression.

Track frame-document generations independently from main-document and human-control revocation. DOM actions whose targets and explicit preconditions all belong to the main document can reuse their context across child-frame navigation. Iframe refs and strict-observation actions require a sync of the current frame documents. Main-document replacement and trusted human input revoke control, including wheel and keyboard events that leave field values unchanged.

The change includes CLI and DSH carousel regressions, checks for iframe targets and preconditions, updated control guidance, and bilingual changelog entries.

Validation completed locally.

  • Extension Vitest suite passed with 3,669 tests passing and 418 opt-in tests skipped. The 365 tests covering capture, target policy and control were also rechecked.
  • TypeScript compilation, Biome checks for changed source files, diff checks and bilingual changelog validation passed.
  • Installed-extension regressions passed through both CLI and DSH, reusing the context across carousel iframe navigation and rejecting it after human intervention.
  • All 53 real-browser video playback cases passed.
  • BrowserSkill operated Bootstrap, Swiper and Slick demos. With the fixed extension, Slick continued autoplay and changed child documents while three consecutive clicks advanced the chosen carousel exactly once each.
  • The standalone legacy-strict compatibility suite passed for both baseline and fixed extension builds.

The aggregate cooperation suite times out at the mobile-emulation layout check in compatibility.mjs:476 on both baseline and fixed builds. The standalone compatibility suite passes that check. The original Alimama business export flow remains unverified.

@NianJiuZst
NianJiuZst merged commit ea94c27 into main Nov 5, 2026
12 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant