Repository navigation
Conversation
liuhedev
marked this pull request as ready for review
October 30, 2026 05:10
Author
|
Could a maintainer approve the pending CI runs and review this fix? The released and patched builds were compared using the same Chrome version and minimal CSP-blocked iframe fixture. The patch restores parent-page control while retaining document identity checks. Validation details are included in the PR description. |
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
A CSP-blocked auxiliary iframe can become a Chrome-owned
chrome-error://chromewebdata/document. That document cannot host the cooperation content script, butcollectCooperationFramesstill waits for its receiver. One rejectedtabs.sendMessagethen makes shared control unavailable for the entire tab.This proposes retaining a stable identity for independently verified browser-error subframes instead of waiting for an impossible content-script response. It cross-checks the CDP frame tree with the WebNavigation snapshot and rechecks the document identity before accepting the fallback. Main-frame failures, ambiguous matches, ordinary web frames with missing receivers, and malformed responses still fail closed. No extension permissions or protocol changes are included.
Reproduction
frame-srcCSP.chrome-error://chromewebdata/.bsk cooperate syncafter the page settles.Validation
pnpm --filter @browser-skill/extension compile: passed.browser-bridge.test.tsandcontroller.test.tssuites: 196 tests passed.pnpm ext:build: passed.A live comparison now confirms the failure and the proposed fix using the same minimal fixture, Chrome for Testing 151.0.7922.34, CLI 0.4.0, and protocol 1.7. Each build runs in a fresh isolated profile, against a dedicated local daemon. The package's default daemon endpoint alone is redirected to that test daemon; shared-control guards remain enabled.
ext-v0.4.0dsh-plugin-v0.4.0-1-g05116e5ready; fill/click and output readback passedready; fill/click and output readback passedready; fill/click and output readback passedready; fill/click and output readback passedContent-Security-Policy: frame-src 'none'unavailable; no action context issuedready; fill/click and output readback passedThe normal and CSP-blocked responses serve identical parent HTML and the same iframe URL; only the CSP response header differs. For every successful action case, the parent input is filled, Apply is clicked through BSK using fresh contexts, and the actual
<output>value is read back from the page HTML.Remaining scope: the minimal browser regression passes, but the patched extension has not yet been accepted on the affected real-world page in the user's logged-in browser. The existing unit suites alone do not cover the new browser-error fallback; the result above is live integration evidence.