Closed CoderDake closed 11 months ago
Looking into the source for vscode it looks like the iframe allows clipboard read and write, so I wonder if this has something to do with the gesture not being connected directly to the action
With some research it looks like browsers have security features that protect against clipboard access that isn't associated with user actions
@DanTup
We're an iframe inside an iframe here. VS Code iframes the Dart-Code extensions webview, and the webview then has to iframe DevTools (we can't set a raw URL for the first iframe, we can only set its html contents). I suspect we just need to put the same allow
attribute onto Dart-Code iframe.
I've opened https://github.com/Dart-Code/Dart-Code/issues/4540 about this.
I've been digging into this, but been unable to fix. I added some notes about this to https://github.com/Dart-Code/Dart-Code/issues/4540. It seems like passing clipboard access cross-origin in iframes isn't working (this might be the cause of our other issue - https://github.com/microsoft/vscode/issues/129178).
Some people are falling back to older clipboard APIs that don'thave the same permissions requirements, but since this is handled by Flutter I don't know if that's a simple option.
One possibility could be to pass the text up to the parent iframe via postMessage where we can write to the clipboard, but it feels a bit weird to be doing that in DevTools. Thoughts?
Since this same setup seems to work outside of VS Code (nested iframes crossing origins with allow=clipboard-wite
) I've opened https://github.com/microsoft/vscode/issues/182642 about this to see if the VS Code devs might consider this a VS Code bug.
While testing log copying behaviour in VSCode, I noticed that the copy button is no longer working, when using it in the context of VSCode.
Alternatively, I have run Dart Devtools from the command line using
flutter run -d chrome
. When running devtools like this, the copy functionality seems to work just fine.The following is the log message that is output in the vscode developer console when the copy fails.
DevTools version: 2.23.1 Connected Device: CPU / OS: x64 (64 bit) macos Dart Version: 3.1.0-63.1.beta Flutter Version: 3.11.0-1.0.pre.1 / beta Framework / Engine: 74e4b092e5 / 992cdb6cd4 Connected app type: Flutter native (debug build)