- From: Anne van Kesteren <notifications@github.com>
- Date: Wed, 10 Sep 2025 07:20:20 -0700
- To: w3c/clipboard-apis <clipboard-apis@noreply.github.com>
- Cc: Subscribed <subscribed@noreply.github.com>
- Message-ID: <w3c/clipboard-apis/pull/239/review/3206400434@github.com>
@annevk commented on this pull request. > @@ -224,12 +227,166 @@ url: https://w3c.github.io/permissions/#permissions-task-source; type: dfn; * Scripts that use the [[#async-clipboard-api]] to write to the clipboard * Actions that update the clipboard outside the user agent - If the clipboard contents are changed outside the user agent, then the - {{GlobalEventHandlers/clipboardchange}} event MUST fire when the user agent regains focus. + <div class="algorithm" data-algorithm="fire-clipboardchange-event"> + <h5 id="h-fire-clipboardchange-event">To fire a clipboardchange event</h5> + + To <dfn export>fire a clipboardchange event</dfn> given a {{Document}} <var>document</var>: + + 1. If <var>document</var> does not have [=sticky activation=] and <var>document</var> does not have permission to read from the clipboard, then return. + + 2. Let <var>global</var> be <var>document</var>'s [=relevant global object=]. + + 3. If <var>document</var> has [=system focus=]: + 1. Let <var>types</var> be a list of [=mandatory data types=] available on the [=system clipboard=]. + 2. Let <var>changeId</var> be a unique identifier for this clipboard change, generated by applying a partition-specific transformation to a system-level clipboard change identifier, ensuring that different [=partitions=] receive different identifiers for the same clipboard change while maintaining consistency within the same [=partition=]. You need to actually obtain the partition somehow. Maybe this should repurpose the storage key? > + <div class="algorithm" data-algorithm="document-focus-steps"> + <h5 id="h-document-focus-steps">Document focus steps</h5> + + When a {{Document}} <var>document</var> gains [=system focus=]: + + 1. If <var>document</var>'s [=Document/clipboardchange pending flag=] is true: + 1. Set <var>document</var>'s [=Document/clipboardchange pending flag=] to false. + 2. Let <var>types</var> be a list of [=mandatory data types=] available on the [=system clipboard=]. + 3. Let <var>changeId</var> be a unique identifier for this clipboard change, generated by applying a partition-specific transformation to a system-level clipboard change identifier, ensuring that different [=partitions=] receive different identifiers for the same clipboard change while maintaining consistency within the same [=partition=]. + 4. Let <var>eventInit</var> be a new {{ClipboardChangeEventInit}} dictionary with its {{ClipboardChangeEventInit/types}} member set to <var>types</var> and its {{ClipboardChangeEventInit/changeId}} member set to <var>changeId</var>. + 5. Let <var>global</var> be <var>document</var>'s [=relevant global object=]. + 6. [=Fire an event=] named {{GlobalEventHandlers/clipboardchange}} at <var>global</var>, using {{ClipboardChangeEvent}}, with <var>eventInit</var>. + + </div> + + For documents in nested browsing contexts, the {{GlobalEventHandlers/clipboardchange}} event fires independently in each {{Document}} based on its own focus state. A clipboard change will fire events in all focused documents across the browsing context tree that have [=sticky activation=] or persistent clipboard permissions. Only a single document can have focus, no? -- Reply to this email directly or view it on GitHub: https://github.com/w3c/clipboard-apis/pull/239#pullrequestreview-3206400434 You are receiving this because you are subscribed to this thread. Message ID: <w3c/clipboard-apis/pull/239/review/3206400434@github.com>
Received on Wednesday, 10 September 2025 14:20:24 UTC