Thanks for the PSA Anupam. Since this is UA-defined behavior of the
clipboard APIs and not likely to have a compat impact, I'm supportive of
treating it as a PSA. Still, like most behavior-impacted bugfixes in blink,
there might be some possible compat risk here. Is it relatively easy to
make the implementation change behind a flag
<https://chromium.googlesource.com/chromium/src/+/main/docs/flag_guarding_guidelines.md>
so that, in the worst case and we find this behavior change triggers a
user-impacting bug, we can easily flip it off while we work on a migration
story?

Thanks,
   Rick

On Mon, Dec 11, 2023 at 5:47 PM 'Anupam Snigdha' via blink-dev <
blink-dev@chromium.org> wrote:

> Fixing typos and formats.
>
> ------------------------------
> *From:* Anupam Snigdha
> *Sent:* Monday, December 11, 2023 2:42 PM
> *To:* blink-dev@chromium.org <blink-dev@chromium.org>
> *Cc:* Sanket Joshi (EDGE) <sa...@microsoft.com>; Evan Stade <
> est...@chromium.org>; Ana Sollano Kim <ana.soll...@microsoft.com>
> *Subject:* Web-Facing Change PSA: Async Clipboard API: Write well-formed
> HTML document.
>
> Contact emails
>
> sni...@microsoft.com, sa...@microsoft.com, est...@chromium.org
>
> Specification
>
>
> https://w3c.github.io/clipboard-apis/#dom-clipboard-write
>
> Design docs
>
>
> https://docs.google.com/document/d/1rTEg2I-hMPXGiLrEMqKJz2Ycu6GRjlM3uvakOe84m8Q/edit?usp=sharing
>
> Summary
>
> The Async clipboard writer API uses sanitizers to strip out content such
> as <head>​, <meta>​, <style>​, <script>​ tags from the HTML and inline
> styles into the markup.
>
> In this proposal, writing to the clipboard for text/html​ MIME type using
> the navigator.clipboard.write()​ API will write a higher fidelity
> sanitized, well-formed HTML markup instead of a more strictly sanitized
> HTML fragment. It will also preserve the tags such as <meta>​,  <style>​,
> <head>​ etc  that were stripped out by the fragment parser.
>
> Roundtripping of HTML content using the async clipboard API within the web
> doesn’t change as the async clipboard read()​ method still produces a
> sanitized HTML fragment.
>
> Method used to write HTML  data to the clipboard
>
> Does it affect the DataTransfer getData() method?
>
> Does it affect the navigator.clipboard.read() method?
>
> Does it affect the native apps that read HTML data from the clipboard?
>
> navigator.clipboard.write()
>
> Yes, if web authors write via navigator.clipboard.write() and read via
> DataTransfer getData(). It returns well-formed HTML markup.
>
> No. By-default read() returns a strictly sanitized fragment.
>
> Yes. It returns a higher fidelity sanitized markup instead of a strictly
> sanitized fragment.
>
>
> Blink component
>
> Blink>DataTransfer
> <https://bugs.chromium.org/p/chromium/issues/list?q=component:Blink%3EDataTransfer>
>
> Search tags
>
> unsanitized html
> <https://chromestatus.com/features#tags:unsanitized%20html>, async
> clipboard <https://chromestatus.com/features#tags:async%20clipboard>,
> clipboard <https://chromestatus.com/features#tags:clipboard>, copy
> <https://chromestatus.com/features#tags:copy>
>
> TAG review
>
> None. There is no web API change. It only changes the sanitization
> requirement by writing a higher fidelity sanitized HTML instead of a more
> strictly sanitized HTML fragment to the system clipboard.
>
> TAG reviewed the unsanitized read/write as part of a broader review of the
> Pickling API
>
> https://github.com/w3ctag/design-reviews/issues/636#issuecomment-919324784
>
> https://github.com/w3ctag/design-reviews/issues/636#issuecomment-869792053
>
>
> TAG review status
>
> Not applicable
>
> Risks
>
>
> Interoperability and Compatibility
>
> Existing paste targets don't need to make updates to read HTML written via
> the async clipboard API, as they are already able to handle unsanitized
> HTML written via the DataTransfer API.
>
>
> *Gecko*: Neutral (
> https://github.com/mozilla/standards-positions/issues/769)
>
> *WebKit*: Negative (
> https://github.com/w3c/clipboard-apis/issues/150#issuecomment-974236367)
>
> *Web developers*: Positive signals from Excel Online. Google Sheets also
> appear to be positive based on discussions in this bug
> <https://bugs.chromium.org/p/chromium/issues/detail?id=1493388&q=Google%20sheets&can=2>,
> I2S
> <https://groups.google.com/a/chromium.org/g/blink-dev/c/pjpN9Lwv5Tk/m/DEALX5QdBwAJ?utm_medium=email&utm_source=footer>
>  and
> email conversations.
>
> *Other signals*:
>
> Ergonomics
>
> No API change.
>
>
> Activation
>
> The current Clipboard Async API write method as specified in
> <https://w3c.github.io/clipboard-apis/#dom-clipboard-write>
> https://w3c.github.io/clipboard-apis/#dom-clipboard-write isn't affected
> by this change, the behavior is validated in existing web tests.
>
>
> Security
>
> Existing DataTransfer APIs already allow reading and writing unsanitized
> HTML content from/to the clipboard. The proposed change just makes sure
> that the HTML markup that gets written to the clipboard via the async
> clipboard API is a well-formed HTML document.
>
>
> https://github.com/MicrosoftEdge/MSEdgeExplainers/blob/main/ClipboardAPI/tag-security-privacy-clipboard-unsanitized-read.md
>
> Here is a threat model that was presented to the Chrome security team:
> https://docs.google.com/document/d/1QLt50Q8UnlQksVltZ2PNkDZVdk9N58Pq7P0lzGTKh-U/edit?usp=sharing
>
> Discussions:
> https://docs.google.com/document/d/1yHUC_laWTRoG65QOQTIqkpiULITDyQmznwKtVr0KMk8/edit?usp=sharing&resourcekey=0-q650DjDFdpHyVLffTwP7Yw
>
> Since the DataTransfer API, which is more widely used,  already allows
> access to the unsanitized HTML content, we don’t think there are any
> additional security concerns with this proposal.
>
> Native apps have their own HTML parser to process the HTML content before
> it is inserted into their document model. These apps already handle
> unsanitized HTML because the DataTransfer API, which is much more commonly
> used, does not sanitize HTML either. More details here:
> https://docs.google.com/document/d/1O2vtCS23nB_6aJy7_xcdaWKw7TtqYm0fERzEjtLyv5M/edit?usp=sharing
> .
>
>
> WebView application risks
>
> *Does this intent deprecate or change behavior of existing APIs, such that
> it has potentially high risk for Android WebView-based applications?*
>
> None
>
>
> Debuggability
>
> No specific DevTools changes are required as it doesn’t introduce any new
> web API. Existing support for async clipboard APIs is sufficient.
>
>
> Will this feature be supported on all six Blink platforms (Windows, Mac,
> Linux, ChromeOS, Android, and Android WebView)?
>
> Yes
>
> Is this feature fully tested by web-platform-tests
> <https://chromium.googlesource.com/chromium/src/+/main/docs/testing/web_platform_tests.md>
> ?
>
> Yes
>
>
> https://wpt.fyi/results/clipboard-apis/async-unsanitized-standard-html-formats-write-read.tentative.https.html
> ,
> <https://wpt.fyi/results/clipboard-apis/async-unsanitized-standard-html-read-fail.tentative.https.html>
> https://wpt.fyi/results/clipboard-apis/async-unsanitized-standard-html-read-fail.tentative.https.html
>
>
> Flag name in Blink
>
> ClipboardWellFormedHtmlSanitizationWrite
>
> Finch feature name
>
> ClipboardWellFormedHtmlSanitizationWrite
>
> Requires code in //chrome?
>
> False
>
> Tracking bug
>
> https://bugs.chromium.org/p/chromium/issues/detail?id=1268679
>
> Sample links
>
>
> https://github.com/w3c/editing/blob/gh-pages/docs/clipboard-unsanitized/unsanitized-html-demo.html
>
> Estimated milestones
>
> Shipping on desktop
>
> 122
>
> Shipping on Android
>
> 122
>
> Shipping on WebView
>
> 122
>
>
>
> Anticipated spec changes
>
> None
>
> Link to entry on the Chrome Platform Status
>
> https://chromestatus.com/feature/6236486997639168
>
> This intent message was generated by Chrome Platform Status
> <https://chromestatus.com/>.
>
>
> --
> You received this message because you are subscribed to the Google Groups
> "blink-dev" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to blink-dev+unsubscr...@chromium.org.
> To view this discussion on the web visit
> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/SJ0PR00MB0991226DDC0F8A44190F3DAFCF8FA%40SJ0PR00MB0991.namprd00.prod.outlook.com
> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/SJ0PR00MB0991226DDC0F8A44190F3DAFCF8FA%40SJ0PR00MB0991.namprd00.prod.outlook.com?utm_medium=email&utm_source=footer>
> .
>

-- 
You received this message because you are subscribed to the Google Groups 
"blink-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to blink-dev+unsubscr...@chromium.org.
To view this discussion on the web visit 
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAFUtAY9xXkWvUpr%3DBNL6EC1x9KnF3BcFjTzpH8HE2GGHs%3DNyMw%40mail.gmail.com.

Reply via email to