feat(browser-context): add a virtual clipboard#41741
Open
dcrousso wants to merge 1 commit into
Open
Conversation
add a new `browserContext.clipboard` for reading and writing rich content (e.g. `text/html`), binary data (e.g. `image/png`), and plain text it leverages a per-context store that shims and shares `navigator.clipboard`, native `ControlOrMeta+c`/`ControlOrMeta+v` (via `trusted` event interception), and `document.execCommand` across every page copy, cut, and paste dispatch a real `ClipboardEvent` with a populated `DataTransfer` so that page handlers can read and override `clipboardData` like they would in a real browser with one exception as Firefox does not expose `clipboardData` on a synthesized `paste` event the shim is installed lazily on the first `browserContext.clipboard` use, or eagerly via `browserContext.clipboard.install()` (e.g. for pages that only exercise native keyboard shortcuts) note that `navigator.clipboard` is only redirected where the browser already exposes it and rejects types it cannot write since that API has additional restrictions (unlike native keyboard interactions)
Contributor
Test results for "MCP"1 failed 7759 passed, 1249 skipped Merge workflow run. |
Contributor
Test results for "tests 1"3 failed 6 flaky49730 passed, 1162 skipped Merge workflow run. |
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.
add a new
browserContext.clipboardfor reading and writing rich content (e.g.text/html), binary data (e.g.image/png), and plain textit leverages a per-context store that shims and shares
navigator.clipboard, nativeControlOrMeta+c/ControlOrMeta+v(viatrustedevent interception), anddocument.execCommandacross every pagecopy, cut, and paste dispatch a real
ClipboardEventwith a populatedDataTransferso that page handlers can read and overrideclipboardDatalike they would in a real browserwith one exception as Firefox does not expose
clipboardDataon a synthesizedpasteeventthe shim is installed lazily on the first
browserContext.clipboarduse, or eagerly viabrowserContext.clipboard.install()(e.g. for pages that only exercise native keyboard shortcuts)note that
navigator.clipboardis only redirected where the browser already exposes it and rejects types it cannot write since that API has additional restrictions (unlike native keyboard interactions)fixes #15860