Repository navigation
Description
Proven gap
The unchanged Code OSS browser extension host creates a same-origin iframe whose URL is webWorkerExtensionHostIframe.html?&vscodeWebWorkerExtHostId=.... On the installed-SDK Release built from AppScene d4a73888 and WebScene dd39f118, the document request succeeds with HTTP 200 and 6,786 bytes, but the expected nested bootstrap/Worker/transferred-MessagePort sequence does not complete. The independent remote Node extension host is healthy.
Current product-neutral coverage proves query-bearing iframe navigation and iframe-created module Worker/MessagePort transfer independently. It does not combine asynchronous document fetch, the exact query-bearing URL shape, source Window identity, nested bootstrap messaging, module Worker creation, and transferred-port delivery.
Scope
- Reduce the missing generic boundary on current WebScene main.
- Add a Chromium/browser oracle for the exact query-bearing navigated iframe sequence.
- Add a focused native contract for asynchronous document fetch through nested Worker creation and transferred MessagePort identity/order.
- Fix only the proven reusable WebScene defect.
- Add bounded timing, queue, memory/GC, navigation/detach, Worker termination, and engine-teardown gates for the changed path.
- Rerun unchanged packaged Code OSS acceptance from the merged WebScene head.
Boundaries
- Excludes Preserve nested client identity for admitted webview resources #419/Stream and cache admitted Code OSS webview resources #266 nested ServiceWorker resource-client identity and stream/fetch test files.
- Excludes Complete selector matching, specificity, and dependency invalidation coverage #237 selector matching and invalidation files.
- Consumes Enforce secure nested-document lifecycle for Code OSS webviews #267's merged same-origin navigation/WindowProxy lifecycle without expanding general iframe security/CSP behavior.
- Consumes Keep active MessagePort listeners reachable across garbage collection #288's MessagePort reachability model without changing it unless the reduced forced-GC contract proves a separate defect.
- Does not touch consolidation Add Code OSS browser and native desktop compatibility #76 or vscode-demo.
Acceptance
- Chromium and native complete iframe bootstrap -> Worker -> transferred port -> reply with exact source/port identity and ordering.
- Query parameters are preserved in the nested realm and used by the bootstrap.
- Failures remain visible and origin/admission checks remain fail-closed.
- Repeated navigation/detach/termination cycles return queue/binding/heap metrics to bounded steady state with no late callback.
- Unchanged packaged Code OSS records
extensionPortTransferredand completes browser extension-host Ready/Initialized without application changes.
Activity
wieslawsoltes commentedon Sep 18, 2026
Merged in #424 at
e523daa11ae3ac4d06a9cbba64561ec06bd271f3from exact tested headf38ba61e592b1c1c57ad538418ee40eb5ba4917a.The native reduction reproduced the unchanged VS Code OSS query-bearing iframe handshake. Before the fix, the fetched nested document posted its bootstrap, but
event.source !== iframe.contentWindow; after correcting source identity, the reply sent throughiframe.contentWindowstill targeted the owner context rather than the current child realm. WebScene now materializes the stable same-origin iframe WindowProxy before child script runs, captures that proxy asMessageEvent.source, and routes proxypostMessage()to the iframe's current inner context.Evidence:
Branch NuGet, broad CI/native-document tails and post-merge CI/NuGet tails were canceled after the focused change-related gates passed. #421 is closed by the merged PR.