Skip to content

Commit

Permalink
Update and stablize the Clipboard API
Browse files Browse the repository at this point in the history
  • Loading branch information
evilpie committed Jun 18, 2024
1 parent dd50433 commit 08587b1
Showing 1 changed file with 23 additions and 23 deletions.
Original file line number Diff line number Diff line change
@@ -1,43 +1,29 @@
/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/*
* Clipboard API and events
* W3C Working Draft, 4 June 2021
* Editor’s Draft, 4 June 2024
*
* The origin of this IDL file is:
* https://www.w3.org/TR/2021/WD-clipboard-apis-20210604/
* https://w3c.github.io/clipboard-apis/#idl-index
*/

partial interface Navigator {
[SecureContext, SameObject] readonly attribute Clipboard? clipboard;
};

typedef sequence<ClipboardItem> ClipboardItems;

[SecureContext, Exposed=Window] interface Clipboard : EventTarget {
Promise<ClipboardItems> read();
Promise<DOMString> readText();
Promise<undefined> write(ClipboardItems data);
Promise<undefined> writeText(DOMString data);
};

typedef (DOMString or Blob) ClipboardItemDataType;
typedef Promise<ClipboardItemDataType> ClipboardItemData;

callback ClipboardItemDelayedCallback = ClipboardItemData ();
typedef Promise<(DOMString or Blob)> ClipboardItemData;

[Exposed=Window] interface ClipboardItem {
[SecureContext, Exposed=Window]
interface ClipboardItem {
constructor(record<DOMString, ClipboardItemData> items,
optional ClipboardItemOptions options = {});
static ClipboardItem createDelayed(
record<DOMString, ClipboardItemDelayedCallback> items,
optional ClipboardItemOptions options = {});
optional ClipboardItemOptions options = {});

readonly attribute PresentationStyle presentationStyle;
readonly attribute long long lastModified;
readonly attribute boolean delayed;

readonly attribute FrozenArray<DOMString> types;

Promise<Blob> getType(DOMString type);

static boolean supports(DOMString type);
};

enum PresentationStyle { "unspecified", "inline", "attachment" };
Expand All @@ -46,6 +32,20 @@ dictionary ClipboardItemOptions {
PresentationStyle presentationStyle = "unspecified";
};

typedef sequence<ClipboardItem> ClipboardItems;

[SecureContext, Exposed=Window]
interface Clipboard : EventTarget {
Promise<ClipboardItems> read(optional ClipboardUnsanitizedFormats formats = {});
Promise<DOMString> readText();
Promise<undefined> write(ClipboardItems data);
Promise<undefined> writeText(DOMString data);
};

dictionary ClipboardUnsanitizedFormats {
sequence<DOMString> unsanitized;
};

dictionary ClipboardPermissionDescriptor : PermissionDescriptor {
boolean allowWithoutGesture = false;
};

0 comments on commit 08587b1

Please sign in to comment.