Hi Anupam,

I think this feature is now scoped just to the read side of the equation,
is that correct? Could you update the Chrome status entry
<https://chromestatus.com/feature/5716132676763648?context=myfeatures> text
to remove references to writing to avoid confusion?

-- Evan Stade


On Fri, Oct 6, 2023 at 10:31 AM Anupam Snigdha <sni...@microsoft.com> wrote:

> The I2S thread was incorrectly merged into another I2S that I sent for a
> completely different feature. I'm creating a new thread and merging
> replies. Sorry for the inconvenience.
>
> As the author of the web custom formats article
> <https://developer.chrome.com/blog/web-custom-formats-for-the-async-clipboard-api/>,
> just for me to better understand: the problem is that the clipboard gets
> populated with `text/html` by random (web or native) apps. If the clipboard
> were populated from the start with `web text/html`, the contents could be
> read unsanitized, even without this new parameter. So this new parameter is
> the escape hatch that developers can use via
> `navigator.clipboard.read({unsanitized: ["text/html"]})`.
>
> So, the problem is that, for sites like Excel Online, they aren't sure
> where the user is going to paste, so they always have to produce both 'web
> text/html' and 'text/html'. That way if an app doesn't have support for web
> custom format, then they can use the native HTML format. Same thing for
> native apps that produce a web custom format.
> There are also legacy native apps (old Office versions that are used by
> Enterprises) that don't have support for the new web custom format, so the
> site has to produce the standard HTML format for those apps as well.
> But you are right that if both source and target apps support web custom
> format, then it can be used to access unsanitized HTML content.
>
> An immediate question that I ask myself is whether this mechanism could be
> expanded to other values than just `"text/html"`.
>
> Currently we are focusing on the standard HTML format to better align with
> the DataTransfer APIs. In theory you could add support for other built-in
> formats as well, but the main intent here is to produce similar fidelity of
> HTML format so sites that use DataTransfer APIs to read HTML do not
> experience any regression when they move over to async clipboard API for
> copy-paste operations.
>
> Here is a document where I described the regressions and impact on the
> apps when sanitization is performed:
> https://docs.google.com/document/d/1nLny6t3w0u9yxEzusgFJSj-D6DZmDIAzkr1DdgWcZXA/edit?usp=sharing
>
> Some native apps that I surveyed for impact of this new proposal:
> https://docs.google.com/document/d/1O2vtCS23nB_6aJy7_xcdaWKw7TtqYm0fERzEjtLyv5M/edit?usp=sharing
>
> FWIW, this demo was initially a bit misleading, since I expected "some
> text" to be on the clipboard, or whatever I put into the `contenteditable`
> box, but it's hardcoded. Maybe remove the box.
>
> Oops, sorry about that. Copy-paste error 🙂 I fixed it now.
>
> Please let me know if you have any questions!
>
> Thanks,
> Anupam
> ------------------------------
> *From:* Thomas Steiner <to...@google.com>
> *Sent:* Friday, October 6, 2023 2:54 AM
> *To:* Anupam Snigdha <sni...@microsoft.com>
> *Cc:* blink-dev@chromium.org <blink-dev@chromium.org>; Sanket Joshi
> (EDGE) <sa...@microsoft.com>; Evan Stade <est...@chromium.org>;
> jsb...@google.com <jsb...@google.com>; Ana Sollano Kim <
> ana.soll...@microsoft.com>
> *Subject:* [EXTERNAL] Re: [blink-dev] Re: Intent to Ship: Async Clipboard
> API: Read unsanitized HTML and write well-formed HTML format.
>
>
> Adoption expectation
> Excel online is ready to use this API. They are trying to move away from
> DataTransfer APIs and use Async clipboard APIs where web custom format is
> supported along with other benefits from async usage.
>
> Adoption plan
> Support for async clipboard API and web custom format is already in inner
> rings, so once this gets added to the clipboard API, Excel would be ready
> to use it right away.
>
>
> As the author of the web custom formats article
> <https://developer.chrome.com/blog/web-custom-formats-for-the-async-clipboard-api/>,
> just for me to better understand: the problem is that the clipboard gets
> populated with `text/html` by random (web or native) apps. If the clipboard
> were populated from the start with `web text/html`, the contents could be
> read unsanitized, even without this new parameter. So this new parameter is
> the escape hatch that developers can use via
> `navigator.clipboard.read({unsanitized: ["text/html"]})`.
>
> An immediate question that I ask myself is whether this mechanism could be
> expanded to other values than just `"text/html"`. For example, could one do
> `navigator.clipboard.read({unsanitized: ["image/avif"]})` and expect it to
> work (when an AVIF image is on the clipboard)? Reading the relevant
> section in the explainer
> <https://github.com/w3c/editing/blob/gh-pages/docs/clipboard-unsanitized/explainer.md#read>,
> it seems hardcoded to ignore any other value than `"text/html"`, so
> something like `navigator.clipboard.read({unsanitized: ["hahaha/lol",
> "text/html", "application/json", "text/plain"]})` would work. Is this
> correct?
>
>
> Sample links
>
> https://viridian-hypnotic-cut.glitch.me/
>
>
> FWIW, this demo was initially a bit misleading, since I expected "some
> text" to be on the clipboard, or whatever I put into the `contenteditable`
> box, but it's hardcoded. Maybe remove the box.
>
>
> ------------------------------
> *From:* Anupam Snigdha <sni...@microsoft.com>
> *Sent:* Thursday, October 5, 2023 4:22 PM
> *To:* blink-dev@chromium.org <blink-dev@chromium.org>
> *Cc:* Sanket Joshi (EDGE) <sa...@microsoft.com>; Evan Stade <
> est...@chromium.org>; jsb...@google.com <jsb...@google.com>; Ana Sollano
> Kim <ana.soll...@microsoft.com>
> *Subject:* Intent to Ship: Async Clipboard API: Read unsanitized HTML and
> write well-formed HTML format.
>
>
> Contact emails
> sni...@microsoft.com, sa...@microsoft.com, est...@chromium.org,
> jsb...@chromium.org, asu...@chromium.org, *ansol...@microsoft.com
> <ansol...@microsoft.com>*
>
>
> Explainer
>
> https://github.com/w3c/editing/blob/gh-pages/docs/clipboard-unsanitized/explainer.md
>
>
> Specification
>
> https://github.com/w3c/editing/blob/gh-pages/docs/clipboard-unsanitized/explainer.md
>
> Summary
>
> This proposal provides an `unsanitized` option in read() method to get the
> unsanitized HTML format. Unless sites explicitly opt-into reading the
> unsanitized HTML, they will get the sanitized HTML content by-default.
> Currently, when we read text/html MIME type using the async API, the
> sanitizer is invoked to strip out contents from the HTML markup due to
> security concerns, and styles are inlined into the HTML markup, which leads
> to a bloated HTML payload and loss of fidelity of HTML content when read by
> web authors or native apps. Firefox provides access to unsanitized HTML via
> DataTransfer APIs, which matches Chromium's behavior, and Safari only
> allows access to unsanitized HTML if it's being read within the same origin.
>
>
> *Comments*
> For more context on this change, here is a discussion between
> stakeholders:
> https://docs.google.com/document/d/1ha0pcpQsEgVGtPK8dd8N_0P1ynI7rXV7bR5ZFmOTD6Y/edit?usp=sharing
>
>
> 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 api
> <https://chromestatus.com/features#tags:async%20api>, clipboard
> <https://chromestatus.com/features#tags:clipboard>
>
> TAG review
> There is no desire to standardize this behavior as discussed in
> https://github.com/w3c/clipboard-apis/issues/150#issuecomment-917273986.
> Also, Webkit was opposed to any change in behavior since their
> implementation of Async API interops with the DataTransfer API (
> https://github.com/w3c/clipboard-apis/issues/165#issuecomment-1047152542).
>
> TAG review status
> Not applicable
>
>
> WebFeature UseCounter name
> AsyncClipboardAPIUnsanitizedRead
>
> Risks
>
>
> Interoperability and Compatibility
>
> This is a Chromium-only feature (see discussion in
> https://docs.google.com/document/d/1ha0pcpQsEgVGtPK8dd8N_0P1ynI7rXV7bR5ZFmOTD6Y/edit?usp=sharing),
> so adding a dictionary as an argument in read will be ignored in
> non-Chromium browsers and the HTML read might be sanitized. As this change
> aligns the sanitization behavior of the DataTransfer API and the Clipboard
> Async API, existing paste targets that support DataTransfer APIs
> unsanitized HTML don't need to make updates on how they handle HTML if they
> decide to transition to the Clipboard Async API.
>
> *Gecko*: Neutral (
> https://github.com/mozilla/standards-positions/issues/769)
> https://github.com/w3c/clipboard-apis/issues/150#issuecomment-1031684598
>
> *WebKit*: Negative (
> https://github.com/w3c/clipboard-apis/issues/150#issuecomment-974236367)
>
> *Web developers*: Positive. Positive signals from Excel Online,
> https://groups.google.com/a/chromium.org/g/blink-dev/c/j9fDbU9E2Ds/m/IPocqIfEAwAJ?utm_medium=email&utm_source=footer
>
> *Ergonomics*
> The spec'd read method doesn't accept any arguments. With this feature, we
> have overloaded the read method in order to add a dictionary argument,
> where web authors will explicitly request for the unsanitized HTML format.
>
> *Activation*
> The current Clipboard Async API read method as specified in
> https://w3c.github.io/clipboard-apis/ isn't affected by the introduction
> of this feature, the behavior is validated through existing web tests.
>
> *Security*
> Sites have to explicitly opt into reading unsanitized HTML content via the
> "unsanitized" option, so any sites that don't have that option, would get
> the default, sanitized HTML content. The legacy DataTransfer APIs already
> allow access to unsanitized HTML content, so we don't think this will
> create any additional security loopholes.
> Threat Model document:
>
> https://docs.google.com/document/d/1QLt50Q8UnlQksVltZ2PNkDZVdk9N58Pq7P0lzGTKh-U/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?*
> No.
>
> Ergonomics
>
> N/A
>
> Activation
>
> N/A
>
> Security
>
> N/A
>
> 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?*
>
> N/A
>
> Debuggability
>
> No specific DevTools changes are required. This feature is treated like
> any other JS method.
>
>
> Will this feature be supported on all six Blink platforms (Windows, Mac,
> Linux, Chrome OS, 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
>
> Flag name on chrome://flags
> ClipboardUnsanitizedContent
>
> Finch feature name
> None
>
> Non-finch justification
> None
>
> Requires code in //chrome?
> False
>
> Tracking bug
>
> https://bugs.chromium.org/p/chromium/issues/detail?id=1268679
>
> Measurement
> Added usage metrics: ClipboardUnsanitizedContent
>
> Adoption expectation
> Excel online is ready to use this API. They are trying to move away from
> DataTransfer APIs and use Async clipboard APIs where web custom format is
> supported along with other benefits from async usage.
>
> Adoption plan
> Support for async clipboard API and web custom format is already in inner
> rings, so once this gets added to the clipboard API, Excel would be ready
> to use it right away.
>
> Sample links
>
> https://viridian-hypnotic-cut.glitch.me/
>
> Estimated milestones
>
> Shipping on desktop
> 120
> Shipping on Android
>
> 120
>
>
> Link to entry on the Chrome Platform Status
>
> https://chromestatus.com/feature/5716132676763648
>
> This intent message was generated by Chrome Platform Status
> <https://chromestatus.com/>.
>
> Thanks,
> Anupam
>
> Sent from Outlook <http://aka.ms/weboutlook>
>

-- 
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/CAO4XGS-CWL1m7wJmWiWs9UtbrioLptRhe0r8PiCE%3DeROtGPELg%40mail.gmail.com.

Reply via email to