- From: mbrodesser <notifications@github.com>
- Date: Tue, 18 Jan 2022 05:46:04 -0800
- To: w3c/clipboard-apis <clipboard-apis@noreply.github.com>
- Cc: Subscribed <subscribed@noreply.github.com>
- Message-ID: <w3c/clipboard-apis/pull/158/review/855255419@github.com>
@mbrodesser requested changes on this pull request. Will continue reviewing tomorrow. > + const format1 = 'text/plain'; + const promise_text_blob = Promise.resolve(new Blob(['hello'], {type: format1})); + const clipboardItemInput = new ClipboardItem( + {[format1]: promise_text_blob}, + {presentationStyle: "unspecified"}); + </pre> + + <dt><code><var>clipboardItem</var>.getType(<var>type</var>)</code> + <dd><p>Returns a [=Promise=] to the {{Blob}} corresponding to <var>type</var>.</p> + + <dt><code><var>clipboardItem</var>.<var>types</var></code> + <dd><p>Returns the list of <var>types</var> contained in the <var>clipboardItem</var> object. + + </dl> + + <h4 id="clipboard-item">Clipboard Item</h4> This heading seems superfluous and "Clipboard Item" isn't a defined term. All information here would then belong to the current parent section "ClipboardItem interface". > + Each of these [=/MIME type=]s describe a different [=representation=] of the same [=/clipboard item=] at different levels of fidelity and make the [=/clipboard item=] more consumable by target applications during paste. + + <p class=note> + Making the range of cells available as an image will allow the user to paste the cells into a photo editing app, while the text/plain format can be used by text editor apps. + </p> + + A [=/clipboard item=] can also optionally have a <dfn>presentation style</dfn> that helps distinguish whether apps "pasting" a [=/clipboard item=] should insert the contents of an appropriate [=representation=] inline at the point of paste or if it should be treated as an attachment. + + Apps that support pasting only a single [=/clipboard item=] should use the first [=/clipboard item=]. + Apps that support pasting more than one [=/clipboard item=] could, for example, provide a user interface that previews the contents of each [=/clipboard item=] and allow the user to choose which one to paste. + Further, apps are expected to enumerate the [=/MIME type=]s of the [=/clipboard item=] they are pasting and select the one best-suited for the app according to some app-specific algorithm. + Alternatively, an app can present the user with options on how to paste a [=/clipboard item=], e.g. "paste as image" or "paste formatted text", etc. + + A {{ClipboardItem}} object has an associated <dfn for="ClipboardItem">clipboard item</dfn>, which is a [=/clipboard item=]. + + A {{ClipboardItem}} object has an associated <dfn for="ClipboardItem">types array</dfn>, which is a {{FrozenArray}}. Why is this not part of `clipboard item`? `presentation style` is. Both should belong to the same, or is there something I'm overlooking? Shouldn't it be a `FrozenArray<DOMString>`? > + + 1. If |v| is a {{DOMString}}, then follow the below steps: + + 1. Let |dataAsBytes| be the result of [=UTF-8 encoding=] |v|. + + 1. Let |blobData| be a {{Blob}} created using |dataAsBytes| with its {{Blob/type}} set to |mimeType|, [=serialize a MIME type|serialized=]. + + 1. Resolve |p| with |blobData|. + + 1. If |v| is a {{Blob}}, then follow the below steps: + + 1. Resolve |p| with |v|. + + 1. If |representationDataPromise| was rejected, then: + + 1. [=Reject=] |p| with {{"NotFoundError"}} {{DOMException}} in |realm|. In response to https://github.com/w3c/clipboard-apis/pull/158/#discussion_r777750170: it seems reasonable to add something like ``` Issue: web-developers might be interested in the underlying rejection reason. ``` Not more, to limit the scope of this review. > }; </pre> - <div id="clipboard-idl" dfn-for="Clipboard"> + The methods of the {{Clipboard}} interface take or return multiple {{ClipboardItem}} objects, and their specification is written to deal with the generic case. However, not all platforms support more than one [=/clipboard item=]; on such platforms, the algorithms below will ignore any {{ClipboardItem}} objects beyond the first one that are passed to {{Clipboard/write()}}, and {{Clipboard/read()}} and {{Clipboard/readText()}} will only ever return a single-item array. `Some methods` is more accurate. ```, and their specification is written to deal with the generic case.``` could be dropped, it's redundant. ``` on such platforms, the algorithms below will ignore any {{ClipboardItem}} objects beyond the first one that are passed to {{Clipboard/write()}}, and {{Clipboard/read()}} and {{Clipboard/readText()}} will only ever return a single-item array. ``` isn't entirely true, please see https://github.com/w3c/clipboard-apis/pull/158#discussion_r786017821. The simplest fix would be to change the above cited text to a note with text like: ``` Some methods of the {{Clipboard}} interface take or return multiple {{ClipboardItem}} objects. However, not all platforms support more than one [=/clipboard item=]; on such platforms: `write()` writes all items in sequence, hence the last one replaces the previous ones. ``` The methods `read()` and `readText()` automatically behave correct, since there's only one ClipboardItem. However, the algorithm of `readText()` needs to be corrected for the case when there are **multiple** clipboard items on the system clipboard, each containing a "text/plain" representation. > }; </pre> - <div id="clipboard-idl" dfn-for="Clipboard"> + The methods of the {{Clipboard}} interface take or return multiple {{ClipboardItem}} objects, and their specification is written to deal with the generic case. However, not all platforms support more than one [=/clipboard item=]; on such platforms, the algorithms below will ignore any {{ClipboardItem}} objects beyond the first one that are passed to {{Clipboard/write()}}, and {{Clipboard/read()}} and {{Clipboard/readText()}} will only ever return a single-item array. + + A {{Clipboard}} object has an associated <dfn>clipboard</dfn>, which is a [=clipboard=]. This doesn't make sense the last "clipboard" again links to the `Clipboard` defined in the IDL. As that `clipboard` seems never used, presumably this sentence can be deleted. -- Reply to this email directly or view it on GitHub: https://github.com/w3c/clipboard-apis/pull/158#pullrequestreview-855255419 You are receiving this because you are subscribed to this thread. Message ID: <w3c/clipboard-apis/pull/158/review/855255419@github.com>
Received on Tuesday, 18 January 2022 13:46:17 UTC