1/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2/*
3 * Clipboard API and events
4 * W3C Working Draft, 4 June 2021
5 * The origin of this IDL file is:
6 * https://www.w3.org/TR/2021/WD-clipboard-apis-20210604/
7 */
8
9dictionary ClipboardEventInit : EventInit {
10  DataTransfer? clipboardData = null;
11};
12
13[Exposed=Window]
14interface ClipboardEvent : Event {
15  constructor(DOMString type, optional ClipboardEventInit eventInitDict = {});
16  readonly attribute DataTransfer? clipboardData;
17};
18
19partial interface Navigator {
20  [SecureContext, SameObject] readonly attribute Clipboard? clipboard;
21};
22
23typedef sequence<ClipboardItem> ClipboardItems;
24
25[SecureContext, Exposed=Window] interface Clipboard : EventTarget {
26  Promise<ClipboardItems> read();
27  Promise<DOMString> readText();
28  Promise<undefined> write(ClipboardItems data);
29  Promise<undefined> writeText(DOMString data);
30};
31
32typedef (DOMString or Blob) ClipboardItemDataType;
33typedef Promise<ClipboardItemDataType> ClipboardItemData;
34
35callback ClipboardItemDelayedCallback = ClipboardItemData ();
36
37[Exposed=Window] interface ClipboardItem {
38  constructor(record<DOMString, ClipboardItemData> items,
39    optional ClipboardItemOptions options = {});
40  static ClipboardItem createDelayed(
41      record<DOMString, ClipboardItemDelayedCallback> items,
42      optional ClipboardItemOptions options = {});
43
44  readonly attribute PresentationStyle presentationStyle;
45  readonly attribute long long lastModified;
46  readonly attribute boolean delayed;
47
48  readonly attribute FrozenArray<DOMString> types;
49
50  Promise<Blob> getType(DOMString type);
51};
52
53enum PresentationStyle { "unspecified", "inline", "attachment" };
54
55dictionary ClipboardItemOptions {
56  PresentationStyle presentationStyle = "unspecified";
57};
58
59dictionary ClipboardPermissionDescriptor : PermissionDescriptor {
60  boolean allowWithoutGesture = false;
61};
62