• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1// GENERATED CONTENT - DO NOT EDIT
2// Content was automatically extracted by Reffy into reffy-reports
3// (https://github.com/tidoust/reffy-reports)
4// Source: HTML Standard (https://html.spec.whatwg.org/multipage/)
5
6[Exposed=Window,
7 LegacyUnenumerableNamedProperties]
8interface HTMLAllCollection {
9  readonly attribute unsigned long length;
10  getter Element (unsigned long index);
11  getter (HTMLCollection or Element)? namedItem(DOMString name);
12  (HTMLCollection or Element)? item(optional DOMString nameOrIndex);
13
14  // Note: HTMLAllCollection objects have a custom [[Call]] internal method and an [[IsHTMLDDA]] internal slot.
15};
16
17[Exposed=Window]
18interface HTMLFormControlsCollection : HTMLCollection {
19  // inherits length and item()
20  getter (RadioNodeList or Element)? namedItem(DOMString name); // shadows inherited namedItem()
21};
22
23[Exposed=Window]
24interface RadioNodeList : NodeList {
25  attribute DOMString value;
26};
27
28[Exposed=Window]
29interface HTMLOptionsCollection : HTMLCollection {
30  // inherits item(), namedItem()
31  [CEReactions] attribute unsigned long length; // shadows inherited length
32  [CEReactions] setter void (unsigned long index, HTMLOptionElement? option);
33  [CEReactions] void add((HTMLOptionElement or HTMLOptGroupElement) element, optional (HTMLElement or long)? before = null);
34  [CEReactions] void remove(long index);
35  attribute long selectedIndex;
36};
37
38[Exposed=(Window,Worker)]
39interface DOMStringList {
40  readonly attribute unsigned long length;
41  getter DOMString? item(unsigned long index);
42  boolean contains(DOMString string);
43};
44
45enum DocumentReadyState { "loading", "interactive", "complete" };
46typedef (HTMLScriptElement or SVGScriptElement) HTMLOrSVGScriptElement;
47
48[LegacyOverrideBuiltIns]
49partial interface Document {
50  // resource metadata management
51  [PutForwards=href, LegacyUnforgeable] readonly attribute Location? location;
52  attribute USVString domain;
53  readonly attribute USVString referrer;
54  attribute USVString cookie;
55  readonly attribute DOMString lastModified;
56  readonly attribute DocumentReadyState readyState;
57
58  // DOM tree accessors
59  getter object (DOMString name);
60  [CEReactions] attribute DOMString title;
61  [CEReactions] attribute DOMString dir;
62  [CEReactions] attribute HTMLElement? body;
63  readonly attribute HTMLHeadElement? head;
64  [SameObject] readonly attribute HTMLCollection images;
65  [SameObject] readonly attribute HTMLCollection embeds;
66  [SameObject] readonly attribute HTMLCollection plugins;
67  [SameObject] readonly attribute HTMLCollection links;
68  [SameObject] readonly attribute HTMLCollection forms;
69  [SameObject] readonly attribute HTMLCollection scripts;
70  NodeList getElementsByName(DOMString elementName);
71  readonly attribute HTMLOrSVGScriptElement? currentScript; // classic scripts in a document tree only
72
73  // dynamic markup insertion
74  [CEReactions] Document open(optional DOMString unused1, optional DOMString unused2); // both arguments are ignored
75  WindowProxy? open(USVString url, DOMString name, DOMString features);
76  [CEReactions] void close();
77  [CEReactions] void write(DOMString... text);
78  [CEReactions] void writeln(DOMString... text);
79
80  // user interaction
81  readonly attribute WindowProxy? defaultView;
82  boolean hasFocus();
83  [CEReactions] attribute DOMString designMode;
84  [CEReactions] boolean execCommand(DOMString commandId, optional boolean showUI = false, optional DOMString value = "");
85  boolean queryCommandEnabled(DOMString commandId);
86  boolean queryCommandIndeterm(DOMString commandId);
87  boolean queryCommandState(DOMString commandId);
88  boolean queryCommandSupported(DOMString commandId);
89  DOMString queryCommandValue(DOMString commandId);
90
91  // special event handler IDL attributes that only apply to Document objects
92  [LegacyLenientThis] attribute EventHandler onreadystatechange;
93
94  // also has obsolete members
95};
96Document includes GlobalEventHandlers;
97Document includes DocumentAndElementEventHandlers;
98
99partial interface mixin DocumentOrShadowRoot {
100  readonly attribute Element? activeElement;
101};
102
103[Exposed=Window]
104interface HTMLElement : Element {
105  [HTMLConstructor] constructor();
106
107  // metadata attributes
108  [CEReactions] attribute DOMString title;
109  [CEReactions] attribute DOMString lang;
110  [CEReactions] attribute boolean translate;
111  [CEReactions] attribute DOMString dir;
112
113  // user interaction
114  [CEReactions] attribute boolean hidden;
115  void click();
116  [CEReactions] attribute DOMString accessKey;
117  readonly attribute DOMString accessKeyLabel;
118  [CEReactions] attribute boolean draggable;
119  [CEReactions] attribute boolean spellcheck;
120  [CEReactions] attribute DOMString autocapitalize;
121
122  [CEReactions] attribute [LegacyNullToEmptyString] DOMString innerText;
123
124  ElementInternals attachInternals();
125};
126
127HTMLElement includes GlobalEventHandlers;
128HTMLElement includes DocumentAndElementEventHandlers;
129HTMLElement includes ElementContentEditable;
130HTMLElement includes HTMLOrSVGElement;
131
132[Exposed=Window]
133interface HTMLUnknownElement : HTMLElement {
134  // Note: intentionally no [HTMLConstructor]
135};
136
137interface mixin HTMLOrSVGElement {
138  [SameObject] readonly attribute DOMStringMap dataset;
139  attribute DOMString nonce; // intentionally no [CEReactions]
140
141  [CEReactions] attribute boolean autofocus;
142  [CEReactions] attribute long tabIndex;
143  void focus(optional FocusOptions options = {});
144  void blur();
145};
146
147[Exposed=Window,
148 LegacyOverrideBuiltIns]
149interface DOMStringMap {
150  getter DOMString (DOMString name);
151  [CEReactions] setter void (DOMString name, DOMString value);
152  [CEReactions] deleter void (DOMString name);
153};
154
155[Exposed=Window]
156interface HTMLHtmlElement : HTMLElement {
157  [HTMLConstructor] constructor();
158};
159
160[Exposed=Window]
161interface HTMLHeadElement : HTMLElement {
162  [HTMLConstructor] constructor();
163};
164
165[Exposed=Window]
166interface HTMLTitleElement : HTMLElement {
167  [HTMLConstructor] constructor();
168
169  [CEReactions] attribute DOMString text;
170};
171
172[Exposed=Window]
173interface HTMLBaseElement : HTMLElement {
174  [HTMLConstructor] constructor();
175
176  [CEReactions] attribute USVString href;
177  [CEReactions] attribute DOMString target;
178};
179
180[Exposed=Window]
181interface HTMLLinkElement : HTMLElement {
182  [HTMLConstructor] constructor();
183
184  [CEReactions] attribute USVString href;
185  [CEReactions] attribute DOMString? crossOrigin;
186  [CEReactions] attribute DOMString rel;
187  [CEReactions] attribute DOMString as; // (default "")
188  [SameObject, PutForwards=value] readonly attribute DOMTokenList relList;
189  [CEReactions] attribute DOMString media;
190  [CEReactions] attribute DOMString integrity;
191  [CEReactions] attribute DOMString hreflang;
192  [CEReactions] attribute DOMString type;
193  [SameObject, PutForwards=value] readonly attribute DOMTokenList sizes;
194  [CEReactions] attribute USVString imageSrcset;
195  [CEReactions] attribute DOMString imageSizes;
196  [CEReactions] attribute DOMString referrerPolicy;
197};
198HTMLLinkElement includes LinkStyle;
199
200[Exposed=Window]
201interface HTMLMetaElement : HTMLElement {
202  [HTMLConstructor] constructor();
203
204  [CEReactions] attribute DOMString name;
205  [CEReactions] attribute DOMString httpEquiv;
206  [CEReactions] attribute DOMString content;
207};
208
209[Exposed=Window]
210interface HTMLStyleElement : HTMLElement {
211  [HTMLConstructor] constructor();
212
213  [CEReactions] attribute DOMString media;
214};
215HTMLStyleElement includes LinkStyle;
216
217[Exposed=Window]
218interface HTMLBodyElement : HTMLElement {
219  [HTMLConstructor] constructor();
220};
221
222HTMLBodyElement includes WindowEventHandlers;
223
224[Exposed=Window]
225interface HTMLHeadingElement : HTMLElement {
226  [HTMLConstructor] constructor();
227};
228
229[Exposed=Window]
230interface HTMLParagraphElement : HTMLElement {
231  [HTMLConstructor] constructor();
232};
233
234[Exposed=Window]
235interface HTMLHRElement : HTMLElement {
236  [HTMLConstructor] constructor();
237};
238
239[Exposed=Window]
240interface HTMLPreElement : HTMLElement {
241  [HTMLConstructor] constructor();
242};
243
244[Exposed=Window]
245interface HTMLQuoteElement : HTMLElement {
246  [HTMLConstructor] constructor();
247
248  [CEReactions] attribute USVString cite;
249};
250
251[Exposed=Window]
252interface HTMLOListElement : HTMLElement {
253  [HTMLConstructor] constructor();
254
255  [CEReactions] attribute boolean reversed;
256  [CEReactions] attribute long start;
257  [CEReactions] attribute DOMString type;
258};
259
260[Exposed=Window]
261interface HTMLUListElement : HTMLElement {
262  [HTMLConstructor] constructor();
263};
264
265[Exposed=Window]
266interface HTMLMenuElement : HTMLElement {
267  [HTMLConstructor] constructor();
268};
269
270[Exposed=Window]
271interface HTMLLIElement : HTMLElement {
272  [HTMLConstructor] constructor();
273
274  [CEReactions] attribute long value;
275};
276
277[Exposed=Window]
278interface HTMLDListElement : HTMLElement {
279  [HTMLConstructor] constructor();
280};
281
282[Exposed=Window]
283interface HTMLDivElement : HTMLElement {
284  [HTMLConstructor] constructor();
285};
286
287[Exposed=Window]
288interface HTMLAnchorElement : HTMLElement {
289  [HTMLConstructor] constructor();
290
291  [CEReactions] attribute DOMString target;
292  [CEReactions] attribute DOMString download;
293  [CEReactions] attribute USVString ping;
294  [CEReactions] attribute DOMString rel;
295  [SameObject, PutForwards=value] readonly attribute DOMTokenList relList;
296  [CEReactions] attribute DOMString hreflang;
297  [CEReactions] attribute DOMString type;
298
299  [CEReactions] attribute DOMString text;
300
301  [CEReactions] attribute DOMString referrerPolicy;
302};
303HTMLAnchorElement includes HTMLHyperlinkElementUtils;
304
305[Exposed=Window]
306interface HTMLDataElement : HTMLElement {
307  [HTMLConstructor] constructor();
308
309  [CEReactions] attribute DOMString value;
310};
311
312[Exposed=Window]
313interface HTMLTimeElement : HTMLElement {
314  [HTMLConstructor] constructor();
315
316  [CEReactions] attribute DOMString dateTime;
317};
318
319[Exposed=Window]
320interface HTMLSpanElement : HTMLElement {
321  [HTMLConstructor] constructor();
322};
323
324[Exposed=Window]
325interface HTMLBRElement : HTMLElement {
326  [HTMLConstructor] constructor();
327};
328
329interface mixin HTMLHyperlinkElementUtils {
330  [CEReactions] stringifier attribute USVString href;
331  readonly attribute USVString origin;
332  [CEReactions] attribute USVString protocol;
333  [CEReactions] attribute USVString username;
334  [CEReactions] attribute USVString password;
335  [CEReactions] attribute USVString host;
336  [CEReactions] attribute USVString hostname;
337  [CEReactions] attribute USVString port;
338  [CEReactions] attribute USVString pathname;
339  [CEReactions] attribute USVString search;
340  [CEReactions] attribute USVString hash;
341};
342
343[Exposed=Window]
344interface HTMLModElement : HTMLElement {
345  [HTMLConstructor] constructor();
346
347  [CEReactions] attribute USVString cite;
348  [CEReactions] attribute DOMString dateTime;
349};
350
351[Exposed=Window]
352interface HTMLPictureElement : HTMLElement {
353  [HTMLConstructor] constructor();
354};
355
356[Exposed=Window]
357interface HTMLSourceElement : HTMLElement {
358  [HTMLConstructor] constructor();
359
360  [CEReactions] attribute USVString src;
361  [CEReactions] attribute DOMString type;
362  [CEReactions] attribute USVString srcset;
363  [CEReactions] attribute DOMString sizes;
364  [CEReactions] attribute DOMString media;
365};
366
367[Exposed=Window,
368 LegacyFactoryFunction=Image(optional unsigned long width, optional unsigned long height)]
369interface HTMLImageElement : HTMLElement {
370  [HTMLConstructor] constructor();
371
372  [CEReactions] attribute DOMString alt;
373  [CEReactions] attribute USVString src;
374  [CEReactions] attribute USVString srcset;
375  [CEReactions] attribute DOMString sizes;
376  [CEReactions] attribute DOMString? crossOrigin;
377  [CEReactions] attribute DOMString useMap;
378  [CEReactions] attribute boolean isMap;
379  [CEReactions] attribute unsigned long width;
380  [CEReactions] attribute unsigned long height;
381  readonly attribute unsigned long naturalWidth;
382  readonly attribute unsigned long naturalHeight;
383  readonly attribute boolean complete;
384  readonly attribute USVString currentSrc;
385  [CEReactions] attribute DOMString referrerPolicy;
386  [CEReactions] attribute DOMString decoding;
387  [CEReactions] attribute DOMString loading;
388
389  Promise<void> decode();
390};
391
392[Exposed=Window]
393interface HTMLIFrameElement : HTMLElement {
394  [HTMLConstructor] constructor();
395
396  [CEReactions] attribute USVString src;
397  [CEReactions] attribute DOMString srcdoc;
398  [CEReactions] attribute DOMString name;
399  [SameObject, PutForwards=value] readonly attribute DOMTokenList sandbox;
400  [CEReactions] attribute DOMString allow;
401  [CEReactions] attribute boolean allowFullscreen;
402  [CEReactions] attribute boolean allowPaymentRequest;
403  [CEReactions] attribute DOMString width;
404  [CEReactions] attribute DOMString height;
405  [CEReactions] attribute DOMString referrerPolicy;
406  readonly attribute Document? contentDocument;
407  readonly attribute WindowProxy? contentWindow;
408  Document? getSVGDocument();
409};
410
411[Exposed=Window]
412interface HTMLEmbedElement : HTMLElement {
413  [HTMLConstructor] constructor();
414
415  [CEReactions] attribute USVString src;
416  [CEReactions] attribute DOMString type;
417  [CEReactions] attribute DOMString width;
418  [CEReactions] attribute DOMString height;
419  Document? getSVGDocument();
420};
421
422[Exposed=Window]
423interface HTMLObjectElement : HTMLElement {
424  [HTMLConstructor] constructor();
425
426  [CEReactions] attribute USVString data;
427  [CEReactions] attribute DOMString type;
428  [CEReactions] attribute DOMString name;
429  [CEReactions] attribute DOMString useMap;
430  readonly attribute HTMLFormElement? form;
431  [CEReactions] attribute DOMString width;
432  [CEReactions] attribute DOMString height;
433  readonly attribute Document? contentDocument;
434  readonly attribute WindowProxy? contentWindow;
435  Document? getSVGDocument();
436
437  readonly attribute boolean willValidate;
438  readonly attribute ValidityState validity;
439  readonly attribute DOMString validationMessage;
440  boolean checkValidity();
441  boolean reportValidity();
442  void setCustomValidity(DOMString error);
443};
444
445[Exposed=Window]
446interface HTMLParamElement : HTMLElement {
447  [HTMLConstructor] constructor();
448
449  [CEReactions] attribute DOMString name;
450  [CEReactions] attribute DOMString value;
451};
452
453[Exposed=Window]
454interface HTMLVideoElement : HTMLMediaElement {
455  [HTMLConstructor] constructor();
456
457  [CEReactions] attribute unsigned long width;
458  [CEReactions] attribute unsigned long height;
459  readonly attribute unsigned long videoWidth;
460  readonly attribute unsigned long videoHeight;
461  [CEReactions] attribute USVString poster;
462  [CEReactions] attribute boolean playsInline;
463};
464
465[Exposed=Window,
466 LegacyFactoryFunction=Audio(optional DOMString src)]
467interface HTMLAudioElement : HTMLMediaElement {
468  [HTMLConstructor] constructor();
469};
470
471[Exposed=Window]
472interface HTMLTrackElement : HTMLElement {
473  [HTMLConstructor] constructor();
474
475  [CEReactions] attribute DOMString kind;
476  [CEReactions] attribute USVString src;
477  [CEReactions] attribute DOMString srclang;
478  [CEReactions] attribute DOMString label;
479  [CEReactions] attribute boolean default;
480
481  const unsigned short NONE = 0;
482  const unsigned short LOADING = 1;
483  const unsigned short LOADED = 2;
484  const unsigned short ERROR = 3;
485  readonly attribute unsigned short readyState;
486
487  readonly attribute TextTrack track;
488};
489
490enum CanPlayTypeResult { "" /* empty string */, "maybe", "probably" };
491typedef (MediaStream or MediaSource or Blob) MediaProvider;
492
493[Exposed=Window]
494interface HTMLMediaElement : HTMLElement {
495
496  // error state
497  readonly attribute MediaError? error;
498
499  // network state
500  [CEReactions] attribute USVString src;
501  attribute MediaProvider? srcObject;
502  readonly attribute USVString currentSrc;
503  [CEReactions] attribute DOMString? crossOrigin;
504  const unsigned short NETWORK_EMPTY = 0;
505  const unsigned short NETWORK_IDLE = 1;
506  const unsigned short NETWORK_LOADING = 2;
507  const unsigned short NETWORK_NO_SOURCE = 3;
508  readonly attribute unsigned short networkState;
509  [CEReactions] attribute DOMString preload;
510  readonly attribute TimeRanges buffered;
511  void load();
512  CanPlayTypeResult canPlayType(DOMString type);
513
514  // ready state
515  const unsigned short HAVE_NOTHING = 0;
516  const unsigned short HAVE_METADATA = 1;
517  const unsigned short HAVE_CURRENT_DATA = 2;
518  const unsigned short HAVE_FUTURE_DATA = 3;
519  const unsigned short HAVE_ENOUGH_DATA = 4;
520  readonly attribute unsigned short readyState;
521  readonly attribute boolean seeking;
522
523  // playback state
524  attribute double currentTime;
525  void fastSeek(double time);
526  readonly attribute unrestricted double duration;
527  object getStartDate();
528  readonly attribute boolean paused;
529  attribute double defaultPlaybackRate;
530  attribute double playbackRate;
531  readonly attribute TimeRanges played;
532  readonly attribute TimeRanges seekable;
533  readonly attribute boolean ended;
534  [CEReactions] attribute boolean autoplay;
535  [CEReactions] attribute boolean loop;
536  Promise<void> play();
537  void pause();
538
539  // controls
540  [CEReactions] attribute boolean controls;
541  attribute double volume;
542  attribute boolean muted;
543  [CEReactions] attribute boolean defaultMuted;
544
545  // tracks
546  [SameObject] readonly attribute AudioTrackList audioTracks;
547  [SameObject] readonly attribute VideoTrackList videoTracks;
548  [SameObject] readonly attribute TextTrackList textTracks;
549  TextTrack addTextTrack(TextTrackKind kind, optional DOMString label = "", optional DOMString language = "");
550};
551
552[Exposed=Window]
553interface MediaError {
554  const unsigned short MEDIA_ERR_ABORTED = 1;
555  const unsigned short MEDIA_ERR_NETWORK = 2;
556  const unsigned short MEDIA_ERR_DECODE = 3;
557  const unsigned short MEDIA_ERR_SRC_NOT_SUPPORTED = 4;
558
559  readonly attribute unsigned short code;
560  readonly attribute DOMString message;
561};
562
563[Exposed=Window]
564interface AudioTrackList : EventTarget {
565  readonly attribute unsigned long length;
566  getter AudioTrack (unsigned long index);
567  AudioTrack? getTrackById(DOMString id);
568
569  attribute EventHandler onchange;
570  attribute EventHandler onaddtrack;
571  attribute EventHandler onremovetrack;
572};
573
574[Exposed=Window]
575interface AudioTrack {
576  readonly attribute DOMString id;
577  readonly attribute DOMString kind;
578  readonly attribute DOMString label;
579  readonly attribute DOMString language;
580  attribute boolean enabled;
581};
582
583[Exposed=Window]
584interface VideoTrackList : EventTarget {
585  readonly attribute unsigned long length;
586  getter VideoTrack (unsigned long index);
587  VideoTrack? getTrackById(DOMString id);
588  readonly attribute long selectedIndex;
589
590  attribute EventHandler onchange;
591  attribute EventHandler onaddtrack;
592  attribute EventHandler onremovetrack;
593};
594
595[Exposed=Window]
596interface VideoTrack {
597  readonly attribute DOMString id;
598  readonly attribute DOMString kind;
599  readonly attribute DOMString label;
600  readonly attribute DOMString language;
601  attribute boolean selected;
602};
603
604[Exposed=Window]
605interface TextTrackList : EventTarget {
606  readonly attribute unsigned long length;
607  getter TextTrack (unsigned long index);
608  TextTrack? getTrackById(DOMString id);
609
610  attribute EventHandler onchange;
611  attribute EventHandler onaddtrack;
612  attribute EventHandler onremovetrack;
613};
614
615enum TextTrackMode { "disabled",  "hidden",  "showing" };
616enum TextTrackKind { "subtitles",  "captions",  "descriptions",  "chapters",  "metadata" };
617
618[Exposed=Window]
619interface TextTrack : EventTarget {
620  readonly attribute TextTrackKind kind;
621  readonly attribute DOMString label;
622  readonly attribute DOMString language;
623
624  readonly attribute DOMString id;
625  readonly attribute DOMString inBandMetadataTrackDispatchType;
626
627  attribute TextTrackMode mode;
628
629  readonly attribute TextTrackCueList? cues;
630  readonly attribute TextTrackCueList? activeCues;
631
632  void addCue(TextTrackCue cue);
633  void removeCue(TextTrackCue cue);
634
635  attribute EventHandler oncuechange;
636};
637
638[Exposed=Window]
639interface TextTrackCueList {
640  readonly attribute unsigned long length;
641  getter TextTrackCue (unsigned long index);
642  TextTrackCue? getCueById(DOMString id);
643};
644
645[Exposed=Window]
646interface TextTrackCue : EventTarget {
647  readonly attribute TextTrack? track;
648
649  attribute DOMString id;
650  attribute double startTime;
651  attribute double endTime;
652  attribute boolean pauseOnExit;
653
654  attribute EventHandler onenter;
655  attribute EventHandler onexit;
656};
657
658[Exposed=Window]
659interface TimeRanges {
660  readonly attribute unsigned long length;
661  double start(unsigned long index);
662  double end(unsigned long index);
663};
664
665[Exposed=Window,
666 Constructor(DOMString type, optional TrackEventInit eventInitDict = {})]
667interface TrackEvent : Event {
668  readonly attribute (VideoTrack or AudioTrack or TextTrack)? track;
669};
670
671dictionary TrackEventInit : EventInit {
672  (VideoTrack or AudioTrack or TextTrack)? track = null;
673};
674
675[Exposed=Window]
676interface HTMLMapElement : HTMLElement {
677  [HTMLConstructor] constructor();
678
679  [CEReactions] attribute DOMString name;
680  [SameObject] readonly attribute HTMLCollection areas;
681};
682
683[Exposed=Window]
684interface HTMLAreaElement : HTMLElement {
685  [HTMLConstructor] constructor();
686
687  [CEReactions] attribute DOMString alt;
688  [CEReactions] attribute DOMString coords;
689  [CEReactions] attribute DOMString shape;
690  [CEReactions] attribute DOMString target;
691  [CEReactions] attribute DOMString download;
692  [CEReactions] attribute USVString ping;
693  [CEReactions] attribute DOMString rel;
694  [SameObject, PutForwards=value] readonly attribute DOMTokenList relList;
695  [CEReactions] attribute DOMString referrerPolicy;
696};
697HTMLAreaElement includes HTMLHyperlinkElementUtils;
698
699[Exposed=Window]
700interface HTMLTableElement : HTMLElement {
701  [HTMLConstructor] constructor();
702
703  [CEReactions] attribute HTMLTableCaptionElement? caption;
704  HTMLTableCaptionElement createCaption();
705  [CEReactions] void deleteCaption();
706
707  [CEReactions] attribute HTMLTableSectionElement? tHead;
708  HTMLTableSectionElement createTHead();
709  [CEReactions] void deleteTHead();
710
711  [CEReactions] attribute HTMLTableSectionElement? tFoot;
712  HTMLTableSectionElement createTFoot();
713  [CEReactions] void deleteTFoot();
714
715  [SameObject] readonly attribute HTMLCollection tBodies;
716  HTMLTableSectionElement createTBody();
717
718  [SameObject] readonly attribute HTMLCollection rows;
719  HTMLTableRowElement insertRow(optional long index = -1);
720  [CEReactions] void deleteRow(long index);
721};
722
723[Exposed=Window]
724interface HTMLTableCaptionElement : HTMLElement {
725  [HTMLConstructor] constructor();
726};
727
728[Exposed=Window]
729interface HTMLTableColElement : HTMLElement {
730  [HTMLConstructor] constructor();
731
732  [CEReactions] attribute unsigned long span;
733};
734
735[Exposed=Window]
736interface HTMLTableSectionElement : HTMLElement {
737  [HTMLConstructor] constructor();
738
739  [SameObject] readonly attribute HTMLCollection rows;
740  HTMLTableRowElement insertRow(optional long index = -1);
741  [CEReactions] void deleteRow(long index);
742};
743
744[Exposed=Window]
745interface HTMLTableRowElement : HTMLElement {
746  [HTMLConstructor] constructor();
747
748  readonly attribute long rowIndex;
749  readonly attribute long sectionRowIndex;
750  [SameObject] readonly attribute HTMLCollection cells;
751  HTMLTableCellElement insertCell(optional long index = -1);
752  [CEReactions] void deleteCell(long index);
753};
754
755[Exposed=Window]
756interface HTMLTableCellElement : HTMLElement {
757  [HTMLConstructor] constructor();
758
759  [CEReactions] attribute unsigned long colSpan;
760  [CEReactions] attribute unsigned long rowSpan;
761  [CEReactions] attribute DOMString headers;
762  readonly attribute long cellIndex;
763
764  [CEReactions] attribute DOMString scope; // only conforming for th elements
765  [CEReactions] attribute DOMString abbr;  // only conforming for th elements
766};
767
768[Exposed=Window,
769 LegacyOverrideBuiltIns,
770 LegacyUnenumerableNamedProperties]
771interface HTMLFormElement : HTMLElement {
772  [HTMLConstructor] constructor();
773
774  [CEReactions] attribute DOMString acceptCharset;
775  [CEReactions] attribute USVString action;
776  [CEReactions] attribute DOMString autocomplete;
777  [CEReactions] attribute DOMString enctype;
778  [CEReactions] attribute DOMString encoding;
779  [CEReactions] attribute DOMString method;
780  [CEReactions] attribute DOMString name;
781  [CEReactions] attribute boolean noValidate;
782  [CEReactions] attribute DOMString target;
783  [CEReactions] attribute DOMString rel;
784  [SameObject, PutForwards=value] readonly attribute DOMTokenList relList;
785
786  [SameObject] readonly attribute HTMLFormControlsCollection elements;
787  readonly attribute unsigned long length;
788  getter Element (unsigned long index);
789  getter (RadioNodeList or Element) (DOMString name);
790
791  void submit();
792  void requestSubmit(optional HTMLElement? submitter = null);
793  [CEReactions] void reset();
794  boolean checkValidity();
795  boolean reportValidity();
796};
797
798[Exposed=Window]
799interface HTMLLabelElement : HTMLElement {
800  [HTMLConstructor] constructor();
801
802  readonly attribute HTMLFormElement? form;
803  [CEReactions] attribute DOMString htmlFor;
804  readonly attribute HTMLElement? control;
805};
806
807[Exposed=Window]
808interface HTMLInputElement : HTMLElement {
809  [HTMLConstructor] constructor();
810
811  [CEReactions] attribute DOMString accept;
812  [CEReactions] attribute DOMString alt;
813  [CEReactions] attribute DOMString autocomplete;
814  [CEReactions] attribute boolean defaultChecked;
815  attribute boolean checked;
816  [CEReactions] attribute DOMString dirName;
817  [CEReactions] attribute boolean disabled;
818  readonly attribute HTMLFormElement? form;
819  attribute FileList? files;
820  [CEReactions] attribute USVString formAction;
821  [CEReactions] attribute DOMString formEnctype;
822  [CEReactions] attribute DOMString formMethod;
823  [CEReactions] attribute boolean formNoValidate;
824  [CEReactions] attribute DOMString formTarget;
825  [CEReactions] attribute unsigned long height;
826  attribute boolean indeterminate;
827  readonly attribute HTMLElement? list;
828  [CEReactions] attribute DOMString max;
829  [CEReactions] attribute long maxLength;
830  [CEReactions] attribute DOMString min;
831  [CEReactions] attribute long minLength;
832  [CEReactions] attribute boolean multiple;
833  [CEReactions] attribute DOMString name;
834  [CEReactions] attribute DOMString pattern;
835  [CEReactions] attribute DOMString placeholder;
836  [CEReactions] attribute boolean readOnly;
837  [CEReactions] attribute boolean required;
838  [CEReactions] attribute unsigned long size;
839  [CEReactions] attribute USVString src;
840  [CEReactions] attribute DOMString step;
841  [CEReactions] attribute DOMString type;
842  [CEReactions] attribute DOMString defaultValue;
843  [CEReactions] attribute [LegacyNullToEmptyString] DOMString value;
844  attribute object? valueAsDate;
845  attribute unrestricted double valueAsNumber;
846  [CEReactions] attribute unsigned long width;
847
848  void stepUp(optional long n = 1);
849  void stepDown(optional long n = 1);
850
851  readonly attribute boolean willValidate;
852  readonly attribute ValidityState validity;
853  readonly attribute DOMString validationMessage;
854  boolean checkValidity();
855  boolean reportValidity();
856  void setCustomValidity(DOMString error);
857
858  readonly attribute NodeList? labels;
859
860  void select();
861  attribute unsigned long? selectionStart;
862  attribute unsigned long? selectionEnd;
863  attribute DOMString? selectionDirection;
864  void setRangeText(DOMString replacement);
865  void setRangeText(DOMString replacement, unsigned long start, unsigned long end, optional SelectionMode selectionMode = "preserve");
866  void setSelectionRange(unsigned long start, unsigned long end, optional DOMString direction);
867};
868
869[Exposed=Window]
870interface HTMLButtonElement : HTMLElement {
871  [HTMLConstructor] constructor();
872
873  [CEReactions] attribute boolean disabled;
874  readonly attribute HTMLFormElement? form;
875  [CEReactions] attribute USVString formAction;
876  [CEReactions] attribute DOMString formEnctype;
877  [CEReactions] attribute DOMString formMethod;
878  [CEReactions] attribute boolean formNoValidate;
879  [CEReactions] attribute DOMString formTarget;
880  [CEReactions] attribute DOMString name;
881  [CEReactions] attribute DOMString type;
882  [CEReactions] attribute DOMString value;
883
884  readonly attribute boolean willValidate;
885  readonly attribute ValidityState validity;
886  readonly attribute DOMString validationMessage;
887  boolean checkValidity();
888  boolean reportValidity();
889  void setCustomValidity(DOMString error);
890
891  readonly attribute NodeList labels;
892};
893
894[Exposed=Window]
895interface HTMLSelectElement : HTMLElement {
896  [HTMLConstructor] constructor();
897
898  [CEReactions] attribute DOMString autocomplete;
899  [CEReactions] attribute boolean disabled;
900  readonly attribute HTMLFormElement? form;
901  [CEReactions] attribute boolean multiple;
902  [CEReactions] attribute DOMString name;
903  [CEReactions] attribute boolean required;
904  [CEReactions] attribute unsigned long size;
905
906  readonly attribute DOMString type;
907
908  [SameObject] readonly attribute HTMLOptionsCollection options;
909  [CEReactions] attribute unsigned long length;
910  getter Element? item(unsigned long index);
911  HTMLOptionElement? namedItem(DOMString name);
912  [CEReactions] void add((HTMLOptionElement or HTMLOptGroupElement) element, optional (HTMLElement or long)? before = null);
913  [CEReactions] void remove(); // ChildNode overload
914  [CEReactions] void remove(long index);
915  [CEReactions] setter void (unsigned long index, HTMLOptionElement? option);
916
917  [SameObject] readonly attribute HTMLCollection selectedOptions;
918  attribute long selectedIndex;
919  attribute DOMString value;
920
921  readonly attribute boolean willValidate;
922  readonly attribute ValidityState validity;
923  readonly attribute DOMString validationMessage;
924  boolean checkValidity();
925  boolean reportValidity();
926  void setCustomValidity(DOMString error);
927
928  readonly attribute NodeList labels;
929};
930
931[Exposed=Window]
932interface HTMLDataListElement : HTMLElement {
933  [HTMLConstructor] constructor();
934
935  [SameObject] readonly attribute HTMLCollection options;
936};
937
938[Exposed=Window]
939interface HTMLOptGroupElement : HTMLElement {
940  [HTMLConstructor] constructor();
941
942  [CEReactions] attribute boolean disabled;
943  [CEReactions] attribute DOMString label;
944};
945
946[Exposed=Window,
947 LegacyFactoryFunction=Option(optional DOMString text = "", optional DOMString value, optional boolean defaultSelected = false, optional boolean selected = false)]
948interface HTMLOptionElement : HTMLElement {
949  [HTMLConstructor] constructor();
950
951  [CEReactions] attribute boolean disabled;
952  readonly attribute HTMLFormElement? form;
953  [CEReactions] attribute DOMString label;
954  [CEReactions] attribute boolean defaultSelected;
955  attribute boolean selected;
956  [CEReactions] attribute DOMString value;
957
958  [CEReactions] attribute DOMString text;
959  readonly attribute long index;
960};
961
962[Exposed=Window]
963interface HTMLTextAreaElement : HTMLElement {
964  [HTMLConstructor] constructor();
965
966  [CEReactions] attribute DOMString autocomplete;
967  [CEReactions] attribute unsigned long cols;
968  [CEReactions] attribute DOMString dirName;
969  [CEReactions] attribute boolean disabled;
970  readonly attribute HTMLFormElement? form;
971  [CEReactions] attribute long maxLength;
972  [CEReactions] attribute long minLength;
973  [CEReactions] attribute DOMString name;
974  [CEReactions] attribute DOMString placeholder;
975  [CEReactions] attribute boolean readOnly;
976  [CEReactions] attribute boolean required;
977  [CEReactions] attribute unsigned long rows;
978  [CEReactions] attribute DOMString wrap;
979
980  readonly attribute DOMString type;
981  [CEReactions] attribute DOMString defaultValue;
982  attribute [LegacyNullToEmptyString] DOMString value;
983  readonly attribute unsigned long textLength;
984
985  readonly attribute boolean willValidate;
986  readonly attribute ValidityState validity;
987  readonly attribute DOMString validationMessage;
988  boolean checkValidity();
989  boolean reportValidity();
990  void setCustomValidity(DOMString error);
991
992  readonly attribute NodeList labels;
993
994  void select();
995  attribute unsigned long selectionStart;
996  attribute unsigned long selectionEnd;
997  attribute DOMString selectionDirection;
998  void setRangeText(DOMString replacement);
999  void setRangeText(DOMString replacement, unsigned long start, unsigned long end, optional SelectionMode selectionMode = "preserve");
1000  void setSelectionRange(unsigned long start, unsigned long end, optional DOMString direction);
1001};
1002
1003[Exposed=Window]
1004interface HTMLOutputElement : HTMLElement {
1005  [HTMLConstructor] constructor();
1006
1007  [SameObject, PutForwards=value] readonly attribute DOMTokenList htmlFor;
1008  readonly attribute HTMLFormElement? form;
1009  [CEReactions] attribute DOMString name;
1010
1011  readonly attribute DOMString type;
1012  [CEReactions] attribute DOMString defaultValue;
1013  [CEReactions] attribute DOMString value;
1014
1015  readonly attribute boolean willValidate;
1016  readonly attribute ValidityState validity;
1017  readonly attribute DOMString validationMessage;
1018  boolean checkValidity();
1019  boolean reportValidity();
1020  void setCustomValidity(DOMString error);
1021
1022  readonly attribute NodeList labels;
1023};
1024
1025[Exposed=Window]
1026interface HTMLProgressElement : HTMLElement {
1027  [HTMLConstructor] constructor();
1028
1029  [CEReactions] attribute double value;
1030  [CEReactions] attribute double max;
1031  readonly attribute double position;
1032  readonly attribute NodeList labels;
1033};
1034
1035[Exposed=Window]
1036interface HTMLMeterElement : HTMLElement {
1037  [HTMLConstructor] constructor();
1038
1039  [CEReactions] attribute double value;
1040  [CEReactions] attribute double min;
1041  [CEReactions] attribute double max;
1042  [CEReactions] attribute double low;
1043  [CEReactions] attribute double high;
1044  [CEReactions] attribute double optimum;
1045  readonly attribute NodeList labels;
1046};
1047
1048[Exposed=Window]
1049interface HTMLFieldSetElement : HTMLElement {
1050  [HTMLConstructor] constructor();
1051
1052  [CEReactions] attribute boolean disabled;
1053  readonly attribute HTMLFormElement? form;
1054  [CEReactions] attribute DOMString name;
1055
1056  readonly attribute DOMString type;
1057
1058  [SameObject] readonly attribute HTMLCollection elements;
1059
1060  readonly attribute boolean willValidate;
1061  [SameObject] readonly attribute ValidityState validity;
1062  readonly attribute DOMString validationMessage;
1063  boolean checkValidity();
1064  boolean reportValidity();
1065  void setCustomValidity(DOMString error);
1066};
1067
1068[Exposed=Window]
1069interface HTMLLegendElement : HTMLElement {
1070  [HTMLConstructor] constructor();
1071
1072  readonly attribute HTMLFormElement? form;
1073};
1074
1075enum SelectionMode {
1076  "select",
1077  "start",
1078  "end",
1079  "preserve" // default
1080};
1081
1082[Exposed=Window]
1083interface ValidityState {
1084  readonly attribute boolean valueMissing;
1085  readonly attribute boolean typeMismatch;
1086  readonly attribute boolean patternMismatch;
1087  readonly attribute boolean tooLong;
1088  readonly attribute boolean tooShort;
1089  readonly attribute boolean rangeUnderflow;
1090  readonly attribute boolean rangeOverflow;
1091  readonly attribute boolean stepMismatch;
1092  readonly attribute boolean badInput;
1093  readonly attribute boolean customError;
1094  readonly attribute boolean valid;
1095};
1096
1097[Exposed=Window]
1098interface SubmitEvent : Event {
1099  constructor(DOMString type, optional SubmitEventInit eventInitDict = {});
1100
1101  readonly attribute HTMLElement? submitter;
1102};
1103
1104dictionary SubmitEventInit : EventInit {
1105  HTMLElement? submitter = null;
1106};
1107
1108[Exposed=Window]
1109interface FormDataEvent : Event {
1110  constructor(DOMString type, FormDataEventInit eventInitDict);
1111
1112  readonly attribute FormData formData;
1113};
1114
1115dictionary FormDataEventInit : EventInit {
1116  required FormData formData;
1117};
1118
1119[Exposed=Window]
1120interface HTMLDetailsElement : HTMLElement {
1121  [HTMLConstructor] constructor();
1122
1123  [CEReactions] attribute boolean open;
1124};
1125
1126[Exposed=Window]
1127interface HTMLDialogElement : HTMLElement {
1128  [HTMLConstructor] constructor();
1129
1130  [CEReactions] attribute boolean open;
1131  attribute DOMString returnValue;
1132  [CEReactions] void show();
1133  [CEReactions] void showModal();
1134  [CEReactions] void close(optional DOMString returnValue);
1135};
1136
1137[Exposed=Window]
1138interface HTMLScriptElement : HTMLElement {
1139  [HTMLConstructor] constructor();
1140
1141  [CEReactions] attribute USVString src;
1142  [CEReactions] attribute DOMString type;
1143  [CEReactions] attribute boolean noModule;
1144  [CEReactions] attribute boolean async;
1145  [CEReactions] attribute boolean defer;
1146  [CEReactions] attribute DOMString? crossOrigin;
1147  [CEReactions] attribute DOMString text;
1148  [CEReactions] attribute DOMString integrity;
1149  [CEReactions] attribute DOMString referrerPolicy;
1150
1151};
1152
1153[Exposed=Window]
1154interface HTMLTemplateElement : HTMLElement {
1155  [HTMLConstructor] constructor();
1156
1157  readonly attribute DocumentFragment content;
1158};
1159
1160[Exposed=Window]
1161interface HTMLSlotElement : HTMLElement {
1162  [HTMLConstructor] constructor();
1163
1164  [CEReactions] attribute DOMString name;
1165  sequence<Node> assignedNodes(optional AssignedNodesOptions options = {});
1166  sequence<Element> assignedElements(optional AssignedNodesOptions options = {});
1167};
1168
1169dictionary AssignedNodesOptions {
1170  boolean flatten = false;
1171};
1172
1173typedef (CanvasRenderingContext2D or ImageBitmapRenderingContext or WebGLRenderingContext or WebGL2RenderingContext) RenderingContext;
1174
1175[Exposed=Window]
1176interface HTMLCanvasElement : HTMLElement {
1177  [HTMLConstructor] constructor();
1178
1179  [CEReactions] attribute unsigned long width;
1180  [CEReactions] attribute unsigned long height;
1181
1182  RenderingContext? getContext(DOMString contextId, optional any options = null);
1183
1184  USVString toDataURL(optional DOMString type = "image/png", optional any quality);
1185  void toBlob(BlobCallback _callback, optional DOMString type = "image/png", optional any quality);
1186  OffscreenCanvas transferControlToOffscreen();
1187};
1188
1189callback BlobCallback = void (Blob? blob);
1190
1191typedef (HTMLImageElement or
1192         SVGImageElement) HTMLOrSVGImageElement;
1193
1194typedef (HTMLOrSVGImageElement or
1195         HTMLVideoElement or
1196         HTMLCanvasElement or
1197         ImageBitmap or
1198         OffscreenCanvas) CanvasImageSource;
1199
1200enum CanvasFillRule { "nonzero", "evenodd" };
1201
1202dictionary CanvasRenderingContext2DSettings {
1203  boolean alpha = true;
1204  boolean desynchronized = false;
1205};
1206
1207enum ImageSmoothingQuality { "low", "medium", "high" };
1208
1209[Exposed=Window]
1210interface CanvasRenderingContext2D {
1211  // back-reference to the canvas
1212  readonly attribute HTMLCanvasElement canvas;
1213
1214  CanvasRenderingContext2DSettings getContextAttributes();
1215};
1216CanvasRenderingContext2D includes CanvasState;
1217CanvasRenderingContext2D includes CanvasTransform;
1218CanvasRenderingContext2D includes CanvasCompositing;
1219CanvasRenderingContext2D includes CanvasImageSmoothing;
1220CanvasRenderingContext2D includes CanvasFillStrokeStyles;
1221CanvasRenderingContext2D includes CanvasShadowStyles;
1222CanvasRenderingContext2D includes CanvasFilters;
1223CanvasRenderingContext2D includes CanvasRect;
1224CanvasRenderingContext2D includes CanvasDrawPath;
1225CanvasRenderingContext2D includes CanvasUserInterface;
1226CanvasRenderingContext2D includes CanvasText;
1227CanvasRenderingContext2D includes CanvasDrawImage;
1228CanvasRenderingContext2D includes CanvasImageData;
1229CanvasRenderingContext2D includes CanvasPathDrawingStyles;
1230CanvasRenderingContext2D includes CanvasTextDrawingStyles;
1231CanvasRenderingContext2D includes CanvasPath;
1232
1233interface mixin CanvasState {
1234  // state
1235  void save(); // push state on state stack
1236  void restore(); // pop state stack and restore state
1237};
1238
1239interface mixin CanvasTransform {
1240  // transformations (default transform is the identity matrix)
1241  void scale(unrestricted double x, unrestricted double y);
1242  void rotate(unrestricted double angle);
1243  void translate(unrestricted double x, unrestricted double y);
1244  void transform(unrestricted double a, unrestricted double b, unrestricted double c, unrestricted double d, unrestricted double e, unrestricted double f);
1245
1246  [NewObject] DOMMatrix getTransform();
1247  void setTransform(unrestricted double a, unrestricted double b, unrestricted double c, unrestricted double d, unrestricted double e, unrestricted double f);
1248  void setTransform(optional DOMMatrix2DInit transform = {});
1249  void resetTransform();
1250
1251};
1252
1253interface mixin CanvasCompositing {
1254  // compositing
1255  attribute unrestricted double globalAlpha; // (default 1.0)
1256  attribute DOMString globalCompositeOperation; // (default source-over)
1257};
1258
1259interface mixin CanvasImageSmoothing {
1260  // image smoothing
1261  attribute boolean imageSmoothingEnabled; // (default true)
1262  attribute ImageSmoothingQuality imageSmoothingQuality; // (default low)
1263
1264};
1265
1266interface mixin CanvasFillStrokeStyles {
1267  // colors and styles (see also the CanvasPathDrawingStyles and CanvasTextDrawingStyles interfaces)
1268  attribute (DOMString or CanvasGradient or CanvasPattern) strokeStyle; // (default black)
1269  attribute (DOMString or CanvasGradient or CanvasPattern) fillStyle; // (default black)
1270  CanvasGradient createLinearGradient(double x0, double y0, double x1, double y1);
1271  CanvasGradient createRadialGradient(double x0, double y0, double r0, double x1, double y1, double r1);
1272  CanvasPattern? createPattern(CanvasImageSource image, [LegacyNullToEmptyString] DOMString repetition);
1273
1274};
1275
1276interface mixin CanvasShadowStyles {
1277  // shadows
1278  attribute unrestricted double shadowOffsetX; // (default 0)
1279  attribute unrestricted double shadowOffsetY; // (default 0)
1280  attribute unrestricted double shadowBlur; // (default 0)
1281  attribute DOMString shadowColor; // (default transparent black)
1282};
1283
1284interface mixin CanvasFilters {
1285  // filters
1286  attribute DOMString filter; // (default "none")
1287};
1288
1289interface mixin CanvasRect {
1290  // rects
1291  void clearRect(unrestricted double x, unrestricted double y, unrestricted double w, unrestricted double h);
1292  void fillRect(unrestricted double x, unrestricted double y, unrestricted double w, unrestricted double h);
1293  void strokeRect(unrestricted double x, unrestricted double y, unrestricted double w, unrestricted double h);
1294};
1295
1296interface mixin CanvasDrawPath {
1297  // path API (see also CanvasPath)
1298  void beginPath();
1299  void fill(optional CanvasFillRule fillRule = "nonzero");
1300  void fill(Path2D path, optional CanvasFillRule fillRule = "nonzero");
1301  void stroke();
1302  void stroke(Path2D path);
1303  void clip(optional CanvasFillRule fillRule = "nonzero");
1304  void clip(Path2D path, optional CanvasFillRule fillRule = "nonzero");
1305  boolean isPointInPath(unrestricted double x, unrestricted double y, optional CanvasFillRule fillRule = "nonzero");
1306  boolean isPointInPath(Path2D path, unrestricted double x, unrestricted double y, optional CanvasFillRule fillRule = "nonzero");
1307  boolean isPointInStroke(unrestricted double x, unrestricted double y);
1308  boolean isPointInStroke(Path2D path, unrestricted double x, unrestricted double y);
1309};
1310
1311interface mixin CanvasUserInterface {
1312  void drawFocusIfNeeded(Element element);
1313  void drawFocusIfNeeded(Path2D path, Element element);
1314  void scrollPathIntoView();
1315  void scrollPathIntoView(Path2D path);
1316};
1317
1318interface mixin CanvasText {
1319  // text (see also the CanvasPathDrawingStyles and CanvasTextDrawingStyles interfaces)
1320  void fillText(DOMString text, unrestricted double x, unrestricted double y, optional unrestricted double maxWidth);
1321  void strokeText(DOMString text, unrestricted double x, unrestricted double y, optional unrestricted double maxWidth);
1322  TextMetrics measureText(DOMString text);
1323};
1324
1325interface mixin CanvasDrawImage {
1326  // drawing images
1327  void drawImage(CanvasImageSource image, unrestricted double dx, unrestricted double dy);
1328  void drawImage(CanvasImageSource image, unrestricted double dx, unrestricted double dy, unrestricted double dw, unrestricted double dh);
1329  void drawImage(CanvasImageSource image, unrestricted double sx, unrestricted double sy, unrestricted double sw, unrestricted double sh, unrestricted double dx, unrestricted double dy, unrestricted double dw, unrestricted double dh);
1330};
1331
1332interface mixin CanvasImageData {
1333  // pixel manipulation
1334  ImageData createImageData(long sw, long sh);
1335  ImageData createImageData(ImageData imagedata);
1336  ImageData getImageData(long sx, long sy, long sw, long sh);
1337  void putImageData(ImageData imagedata, long dx, long dy);
1338  void putImageData(ImageData imagedata, long dx, long dy, long dirtyX, long dirtyY, long dirtyWidth, long dirtyHeight);
1339};
1340
1341enum CanvasLineCap { "butt", "round", "square" };
1342enum CanvasLineJoin { "round", "bevel", "miter" };
1343enum CanvasTextAlign { "start", "end", "left", "right", "center" };
1344enum CanvasTextBaseline { "top", "hanging", "middle", "alphabetic", "ideographic", "bottom" };
1345enum CanvasDirection { "ltr", "rtl", "inherit" };
1346
1347interface mixin CanvasPathDrawingStyles {
1348  // line caps/joins
1349  attribute unrestricted double lineWidth; // (default 1)
1350  attribute CanvasLineCap lineCap; // (default "butt")
1351  attribute CanvasLineJoin lineJoin; // (default "miter")
1352  attribute unrestricted double miterLimit; // (default 10)
1353
1354  // dashed lines
1355  void setLineDash(sequence<unrestricted double> segments); // default empty
1356  sequence<unrestricted double> getLineDash();
1357  attribute unrestricted double lineDashOffset;
1358};
1359
1360interface mixin CanvasTextDrawingStyles {
1361  // text
1362  attribute DOMString font; // (default 10px sans-serif)
1363  attribute CanvasTextAlign textAlign; // (default: "start")
1364  attribute CanvasTextBaseline textBaseline; // (default: "alphabetic")
1365  attribute CanvasDirection direction; // (default: "inherit")
1366};
1367
1368interface mixin CanvasPath {
1369  // shared path API methods
1370  void closePath();
1371  void moveTo(unrestricted double x, unrestricted double y);
1372  void lineTo(unrestricted double x, unrestricted double y);
1373  void quadraticCurveTo(unrestricted double cpx, unrestricted double cpy, unrestricted double x, unrestricted double y);
1374  void bezierCurveTo(unrestricted double cp1x, unrestricted double cp1y, unrestricted double cp2x, unrestricted double cp2y, unrestricted double x, unrestricted double y);
1375  void arcTo(unrestricted double x1, unrestricted double y1, unrestricted double x2, unrestricted double y2, unrestricted double radius);
1376  void rect(unrestricted double x, unrestricted double y, unrestricted double w, unrestricted double h);
1377  void arc(unrestricted double x, unrestricted double y, unrestricted double radius, unrestricted double startAngle, unrestricted double endAngle, optional boolean anticlockwise = false);
1378  void ellipse(unrestricted double x, unrestricted double y, unrestricted double radiusX, unrestricted double radiusY, unrestricted double rotation, unrestricted double startAngle, unrestricted double endAngle, optional boolean anticlockwise = false);
1379};
1380
1381[Exposed=(Window,Worker)]
1382interface CanvasGradient {
1383  // opaque object
1384  void addColorStop(double offset, DOMString color);
1385};
1386
1387[Exposed=(Window,Worker)]
1388interface CanvasPattern {
1389  // opaque object
1390  void setTransform(optional DOMMatrix2DInit transform = {});
1391};
1392
1393[Exposed=(Window,Worker)]
1394interface TextMetrics {
1395  // x-direction
1396  readonly attribute double width; // advance width
1397  readonly attribute double actualBoundingBoxLeft;
1398  readonly attribute double actualBoundingBoxRight;
1399
1400  // y-direction
1401  readonly attribute double fontBoundingBoxAscent;
1402  readonly attribute double fontBoundingBoxDescent;
1403  readonly attribute double actualBoundingBoxAscent;
1404  readonly attribute double actualBoundingBoxDescent;
1405  readonly attribute double emHeightAscent;
1406  readonly attribute double emHeightDescent;
1407  readonly attribute double hangingBaseline;
1408  readonly attribute double alphabeticBaseline;
1409  readonly attribute double ideographicBaseline;
1410};
1411
1412[Exposed=(Window,Worker),
1413 Serializable]
1414interface ImageData {
1415  constructor(unsigned long sw, unsigned long sh);
1416  constructor(Uint8ClampedArray data, unsigned long sw, optional unsigned long sh);
1417
1418  readonly attribute unsigned long width;
1419  readonly attribute unsigned long height;
1420  readonly attribute Uint8ClampedArray data;
1421};
1422
1423[Exposed=(Window,Worker)]
1424interface Path2D {
1425  constructor(optional (Path2D or DOMString) path);
1426
1427  void addPath(Path2D path, optional DOMMatrix2DInit transform = {});
1428};
1429Path2D includes CanvasPath;
1430
1431[Exposed=(Window,Worker)]
1432interface ImageBitmapRenderingContext {
1433  readonly attribute (HTMLCanvasElement or OffscreenCanvas) canvas;
1434  void transferFromImageBitmap(ImageBitmap? bitmap);
1435};
1436
1437dictionary ImageBitmapRenderingContextSettings {
1438  boolean alpha = true;
1439};
1440
1441typedef (OffscreenCanvasRenderingContext2D or ImageBitmapRenderingContext or WebGLRenderingContext or WebGL2RenderingContext) OffscreenRenderingContext;
1442
1443dictionary ImageEncodeOptions {
1444  DOMString type = "image/png";
1445  unrestricted double quality;
1446};
1447
1448enum OffscreenRenderingContextId { "2d", "bitmaprenderer", "webgl", "webgl2" };
1449
1450[Exposed=(Window,Worker), Transferable]
1451interface OffscreenCanvas : EventTarget {
1452  constructor([EnforceRange] unsigned long long width, [EnforceRange] unsigned long long height);
1453
1454  attribute [EnforceRange] unsigned long long width;
1455  attribute [EnforceRange] unsigned long long height;
1456
1457  OffscreenRenderingContext? getContext(OffscreenRenderingContextId contextId, optional any options = null);
1458  ImageBitmap transferToImageBitmap();
1459  Promise<Blob> convertToBlob(optional ImageEncodeOptions options = {});
1460};
1461
1462[Exposed=(Window,Worker)]
1463interface OffscreenCanvasRenderingContext2D {
1464  void commit();
1465  readonly attribute OffscreenCanvas canvas;
1466};
1467
1468OffscreenCanvasRenderingContext2D includes CanvasState;
1469OffscreenCanvasRenderingContext2D includes CanvasTransform;
1470OffscreenCanvasRenderingContext2D includes CanvasCompositing;
1471OffscreenCanvasRenderingContext2D includes CanvasImageSmoothing;
1472OffscreenCanvasRenderingContext2D includes CanvasFillStrokeStyles;
1473OffscreenCanvasRenderingContext2D includes CanvasShadowStyles;
1474OffscreenCanvasRenderingContext2D includes CanvasFilters;
1475OffscreenCanvasRenderingContext2D includes CanvasRect;
1476OffscreenCanvasRenderingContext2D includes CanvasDrawPath;
1477OffscreenCanvasRenderingContext2D includes CanvasText;
1478OffscreenCanvasRenderingContext2D includes CanvasDrawImage;
1479OffscreenCanvasRenderingContext2D includes CanvasImageData;
1480OffscreenCanvasRenderingContext2D includes CanvasPathDrawingStyles;
1481OffscreenCanvasRenderingContext2D includes CanvasTextDrawingStyles;
1482OffscreenCanvasRenderingContext2D includes CanvasPath;
1483
1484[Exposed=Window]
1485interface CustomElementRegistry {
1486  [CEReactions] void define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions options = {});
1487  any get(DOMString name);
1488  Promise<void> whenDefined(DOMString name);
1489  [CEReactions] void upgrade(Node root);
1490};
1491
1492callback CustomElementConstructor = HTMLElement ();
1493
1494dictionary ElementDefinitionOptions {
1495  DOMString extends;
1496};
1497
1498[Exposed=Window]
1499interface ElementInternals {
1500  // Form-associated custom elements
1501
1502  void setFormValue((File or USVString or FormData)? value,
1503                    optional (File or USVString or FormData)? state);
1504
1505  readonly attribute HTMLFormElement? form;
1506
1507  void setValidity(optional ValidityStateFlags flags = {},
1508                   optional DOMString message,
1509                   optional HTMLElement anchor);
1510  readonly attribute boolean willValidate;
1511  readonly attribute ValidityState validity;
1512  readonly attribute DOMString validationMessage;
1513  boolean checkValidity();
1514  boolean reportValidity();
1515
1516  readonly attribute NodeList labels;
1517};
1518
1519dictionary ValidityStateFlags {
1520  boolean valueMissing = false;
1521  boolean typeMismatch = false;
1522  boolean patternMismatch = false;
1523  boolean tooLong = false;
1524  boolean tooShort = false;
1525  boolean rangeUnderflow = false;
1526  boolean rangeOverflow = false;
1527  boolean stepMismatch = false;
1528  boolean badInput = false;
1529  boolean customError = false;
1530};
1531
1532dictionary FocusOptions {
1533  boolean preventScroll = false;
1534};
1535
1536interface mixin ElementContentEditable {
1537  [CEReactions] attribute DOMString contentEditable;
1538  [CEReactions] attribute DOMString enterKeyHint;
1539  readonly attribute boolean isContentEditable;
1540  [CEReactions] attribute DOMString inputMode;
1541};
1542
1543[Exposed=Window,
1544 Constructor]
1545interface DataTransfer {
1546  attribute DOMString dropEffect;
1547  attribute DOMString effectAllowed;
1548
1549  [SameObject] readonly attribute DataTransferItemList items;
1550
1551  void setDragImage(Element image, long x, long y);
1552
1553  /* old interface */
1554  readonly attribute FrozenArray<DOMString> types;
1555  DOMString getData(DOMString format);
1556  void setData(DOMString format, DOMString data);
1557  void clearData(optional DOMString format);
1558  [SameObject] readonly attribute FileList files;
1559};
1560
1561[Exposed=Window]
1562interface DataTransferItemList {
1563  readonly attribute unsigned long length;
1564  getter DataTransferItem (unsigned long index);
1565  DataTransferItem? add(DOMString data, DOMString type);
1566  DataTransferItem? add(File data);
1567  void remove(unsigned long index);
1568  void clear();
1569};
1570
1571[Exposed=Window]
1572interface DataTransferItem {
1573  readonly attribute DOMString kind;
1574  readonly attribute DOMString type;
1575  void getAsString(FunctionStringCallback? _callback);
1576  File? getAsFile();
1577};
1578
1579callback FunctionStringCallback = void (DOMString data);
1580
1581[Exposed=Window,
1582 Constructor(DOMString type, optional DragEventInit eventInitDict = {})]
1583interface DragEvent : MouseEvent {
1584  readonly attribute DataTransfer? dataTransfer;
1585};
1586
1587dictionary DragEventInit : MouseEventInit {
1588  DataTransfer? dataTransfer = null;
1589};
1590
1591[Global=Window,
1592 Exposed=Window,
1593 LegacyUnenumerableNamedProperties]
1594interface Window : EventTarget {
1595  // the current browsing context
1596  [LegacyUnforgeable] readonly attribute WindowProxy window;
1597  [Replaceable] readonly attribute WindowProxy self;
1598  [LegacyUnforgeable] readonly attribute Document document;
1599  attribute DOMString name;
1600  [PutForwards=href, LegacyUnforgeable] readonly attribute Location location;
1601  readonly attribute History history;
1602  readonly attribute CustomElementRegistry customElements;
1603  [Replaceable] readonly attribute BarProp locationbar;
1604  [Replaceable] readonly attribute BarProp menubar;
1605  [Replaceable] readonly attribute BarProp personalbar;
1606  [Replaceable] readonly attribute BarProp scrollbars;
1607  [Replaceable] readonly attribute BarProp statusbar;
1608  [Replaceable] readonly attribute BarProp toolbar;
1609  attribute DOMString status;
1610  void close();
1611  readonly attribute boolean closed;
1612  void stop();
1613  void focus();
1614  void blur();
1615
1616  // other browsing contexts
1617  [Replaceable] readonly attribute WindowProxy frames;
1618  [Replaceable] readonly attribute unsigned long length;
1619  [LegacyUnforgeable] readonly attribute WindowProxy? top;
1620  attribute any opener;
1621  [Replaceable] readonly attribute WindowProxy? parent;
1622  readonly attribute Element? frameElement;
1623  WindowProxy? open(optional USVString url = "", optional DOMString target = "_blank", optional [LegacyNullToEmptyString] DOMString features = "");
1624  getter object (DOMString name);
1625  // Since this is the global object, the IDL named getter adds a NamedPropertiesObject exotic
1626  // object on the prototype chain. Indeed, this does not make the global object an exotic object.
1627  // Indexed access is taken care of by the WindowProxy exotic object.
1628
1629  // the user agent
1630  readonly attribute Navigator navigator;
1631  [SecureContext] readonly attribute ApplicationCache applicationCache;
1632
1633  // user prompts
1634  void alert();
1635  void alert(DOMString message);
1636  boolean confirm(optional DOMString message = "");
1637  DOMString? prompt(optional DOMString message = "", optional DOMString default = "");
1638  void print();
1639
1640  void postMessage(any message, USVString targetOrigin, optional sequence<object> transfer = []);
1641  void postMessage(any message, optional WindowPostMessageOptions options = {});
1642};
1643Window includes GlobalEventHandlers;
1644Window includes WindowEventHandlers;
1645
1646dictionary WindowPostMessageOptions : PostMessageOptions {
1647  USVString targetOrigin = "/";
1648};
1649
1650[Exposed=Window]
1651interface BarProp {
1652  readonly attribute boolean visible;
1653};
1654
1655enum ScrollRestoration { "auto", "manual" };
1656
1657[Exposed=Window]
1658interface History {
1659  readonly attribute unsigned long length;
1660  attribute ScrollRestoration scrollRestoration;
1661  readonly attribute any state;
1662  void go(optional long delta = 0);
1663  void back();
1664  void forward();
1665  void pushState(any data, DOMString title, optional USVString? url = null);
1666  void replaceState(any data, DOMString title, optional USVString? url = null);
1667};
1668
1669[Exposed=Window]
1670interface Location { // but see also additional creation steps and overridden internal methods
1671  [LegacyUnforgeable] stringifier attribute USVString href;
1672  [LegacyUnforgeable] readonly attribute USVString origin;
1673  [LegacyUnforgeable] attribute USVString protocol;
1674  [LegacyUnforgeable] attribute USVString host;
1675  [LegacyUnforgeable] attribute USVString hostname;
1676  [LegacyUnforgeable] attribute USVString port;
1677  [LegacyUnforgeable] attribute USVString pathname;
1678  [LegacyUnforgeable] attribute USVString search;
1679  [LegacyUnforgeable] attribute USVString hash;
1680
1681  [LegacyUnforgeable] void assign(USVString url);
1682  [LegacyUnforgeable] void replace(USVString url);
1683  [LegacyUnforgeable] void reload();
1684
1685  [LegacyUnforgeable, SameObject] readonly attribute DOMStringList ancestorOrigins;
1686};
1687
1688[Exposed=Window,
1689 Constructor(DOMString type, optional PopStateEventInit eventInitDict = {})]
1690interface PopStateEvent : Event {
1691  readonly attribute any state;
1692};
1693
1694dictionary PopStateEventInit : EventInit {
1695  any state = null;
1696};
1697
1698[Exposed=Window,
1699 Constructor(DOMString type, optional HashChangeEventInit eventInitDict = {})]
1700interface HashChangeEvent : Event {
1701  readonly attribute USVString oldURL;
1702  readonly attribute USVString newURL;
1703};
1704
1705dictionary HashChangeEventInit : EventInit {
1706  USVString oldURL = "";
1707  USVString newURL = "";
1708};
1709
1710[Exposed=Window,
1711 Constructor(DOMString type, optional PageTransitionEventInit eventInitDict = {})]
1712interface PageTransitionEvent : Event {
1713  readonly attribute boolean persisted;
1714};
1715
1716dictionary PageTransitionEventInit : EventInit {
1717  boolean persisted = false;
1718};
1719
1720[Exposed=Window]
1721interface BeforeUnloadEvent : Event {
1722  attribute DOMString returnValue;
1723};
1724
1725[SecureContext,
1726 Exposed=Window]
1727interface ApplicationCache : EventTarget {
1728
1729  // update status
1730  const unsigned short UNCACHED = 0;
1731  const unsigned short IDLE = 1;
1732  const unsigned short CHECKING = 2;
1733  const unsigned short DOWNLOADING = 3;
1734  const unsigned short UPDATEREADY = 4;
1735  const unsigned short OBSOLETE = 5;
1736  readonly attribute unsigned short status;
1737
1738  // updates
1739  void update();
1740  void abort();
1741  void swapCache();
1742
1743  // events
1744  attribute EventHandler onchecking;
1745  attribute EventHandler onerror;
1746  attribute EventHandler onnoupdate;
1747  attribute EventHandler ondownloading;
1748  attribute EventHandler onprogress;
1749  attribute EventHandler onupdateready;
1750  attribute EventHandler oncached;
1751  attribute EventHandler onobsolete;
1752};
1753
1754interface mixin NavigatorOnLine {
1755  readonly attribute boolean onLine;
1756};
1757
1758[Exposed=(Window,Worker)]
1759interface ErrorEvent : Event {
1760  constructor(DOMString type, optional ErrorEventInit eventInitDict = {});
1761
1762  readonly attribute DOMString message;
1763  readonly attribute USVString filename;
1764  readonly attribute unsigned long lineno;
1765  readonly attribute unsigned long colno;
1766  readonly attribute any error;
1767};
1768
1769dictionary ErrorEventInit : EventInit {
1770  DOMString message = "";
1771  USVString filename = "";
1772  unsigned long lineno = 0;
1773  unsigned long colno = 0;
1774  any error = null;
1775};
1776
1777[Exposed=(Window,Worker)]
1778interface PromiseRejectionEvent : Event {
1779  constructor(DOMString type, PromiseRejectionEventInit eventInitDict);
1780
1781  readonly attribute Promise<any> promise;
1782  readonly attribute any reason;
1783};
1784
1785dictionary PromiseRejectionEventInit : EventInit {
1786  required Promise<any> promise;
1787  any reason;
1788};
1789
1790[LegacyTreatNonObjectAsNull]
1791callback EventHandlerNonNull = any (Event event);
1792typedef EventHandlerNonNull? EventHandler;
1793
1794[LegacyTreatNonObjectAsNull]
1795callback OnErrorEventHandlerNonNull = any ((Event or DOMString) event, optional DOMString source, optional unsigned long lineno, optional unsigned long colno, optional any error);
1796typedef OnErrorEventHandlerNonNull? OnErrorEventHandler;
1797
1798[LegacyTreatNonObjectAsNull]
1799callback OnBeforeUnloadEventHandlerNonNull = DOMString? (Event event);
1800typedef OnBeforeUnloadEventHandlerNonNull? OnBeforeUnloadEventHandler;
1801
1802interface mixin GlobalEventHandlers {
1803  attribute EventHandler onabort;
1804  attribute EventHandler onauxclick;
1805  attribute EventHandler onblur;
1806  attribute EventHandler oncancel;
1807  attribute EventHandler oncanplay;
1808  attribute EventHandler oncanplaythrough;
1809  attribute EventHandler onchange;
1810  attribute EventHandler onclick;
1811  attribute EventHandler onclose;
1812  attribute EventHandler oncontextmenu;
1813  attribute EventHandler oncuechange;
1814  attribute EventHandler ondblclick;
1815  attribute EventHandler ondrag;
1816  attribute EventHandler ondragend;
1817  attribute EventHandler ondragenter;
1818  attribute EventHandler ondragexit;
1819  attribute EventHandler ondragleave;
1820  attribute EventHandler ondragover;
1821  attribute EventHandler ondragstart;
1822  attribute EventHandler ondrop;
1823  attribute EventHandler ondurationchange;
1824  attribute EventHandler onemptied;
1825  attribute EventHandler onended;
1826  attribute OnErrorEventHandler onerror;
1827  attribute EventHandler onfocus;
1828  attribute EventHandler onformdata;
1829  attribute EventHandler oninput;
1830  attribute EventHandler oninvalid;
1831  attribute EventHandler onkeydown;
1832  attribute EventHandler onkeypress;
1833  attribute EventHandler onkeyup;
1834  attribute EventHandler onload;
1835  attribute EventHandler onloadeddata;
1836  attribute EventHandler onloadedmetadata;
1837  attribute EventHandler onloadstart;
1838  attribute EventHandler onmousedown;
1839  [LegacyLenientThis] attribute EventHandler onmouseenter;
1840  [LegacyLenientThis] attribute EventHandler onmouseleave;
1841  attribute EventHandler onmousemove;
1842  attribute EventHandler onmouseout;
1843  attribute EventHandler onmouseover;
1844  attribute EventHandler onmouseup;
1845  attribute EventHandler onpause;
1846  attribute EventHandler onplay;
1847  attribute EventHandler onplaying;
1848  attribute EventHandler onprogress;
1849  attribute EventHandler onratechange;
1850  attribute EventHandler onreset;
1851  attribute EventHandler onresize;
1852  attribute EventHandler onscroll;
1853  attribute EventHandler onsecuritypolicyviolation;
1854  attribute EventHandler onseeked;
1855  attribute EventHandler onseeking;
1856  attribute EventHandler onselect;
1857  attribute EventHandler onslotchange;
1858  attribute EventHandler onstalled;
1859  attribute EventHandler onsubmit;
1860  attribute EventHandler onsuspend;
1861  attribute EventHandler ontimeupdate;
1862  attribute EventHandler ontoggle;
1863  attribute EventHandler onvolumechange;
1864  attribute EventHandler onwaiting;
1865  attribute EventHandler onwebkitanimationend;
1866  attribute EventHandler onwebkitanimationiteration;
1867  attribute EventHandler onwebkitanimationstart;
1868  attribute EventHandler onwebkittransitionend;
1869  attribute EventHandler onwheel;
1870};
1871
1872interface mixin WindowEventHandlers {
1873  attribute EventHandler onafterprint;
1874  attribute EventHandler onbeforeprint;
1875  attribute OnBeforeUnloadEventHandler onbeforeunload;
1876  attribute EventHandler onhashchange;
1877  attribute EventHandler onlanguagechange;
1878  attribute EventHandler onmessage;
1879  attribute EventHandler onmessageerror;
1880  attribute EventHandler onoffline;
1881  attribute EventHandler ononline;
1882  attribute EventHandler onpagehide;
1883  attribute EventHandler onpageshow;
1884  attribute EventHandler onpopstate;
1885  attribute EventHandler onrejectionhandled;
1886  attribute EventHandler onstorage;
1887  attribute EventHandler onunhandledrejection;
1888  attribute EventHandler onunload;
1889};
1890
1891interface mixin DocumentAndElementEventHandlers {
1892  attribute EventHandler oncopy;
1893  attribute EventHandler oncut;
1894  attribute EventHandler onpaste;
1895};
1896
1897typedef (DOMString or Function) TimerHandler;
1898
1899interface mixin WindowOrWorkerGlobalScope {
1900  [Replaceable] readonly attribute USVString origin;
1901
1902  // base64 utility methods
1903  DOMString btoa(DOMString data);
1904  ByteString atob(DOMString data);
1905
1906  // timers
1907  long setTimeout(TimerHandler handler, optional long timeout = 0, any... arguments);
1908  void clearTimeout(optional long handle = 0);
1909  long setInterval(TimerHandler handler, optional long timeout = 0, any... arguments);
1910  void clearInterval(optional long handle = 0);
1911
1912  // microtask queuing
1913  void queueMicrotask(VoidFunction callback);
1914
1915  // ImageBitmap
1916  Promise<ImageBitmap> createImageBitmap(ImageBitmapSource image, optional ImageBitmapOptions options = {});
1917  Promise<ImageBitmap> createImageBitmap(ImageBitmapSource image, long sx, long sy, long sw, long sh, optional ImageBitmapOptions options = {});
1918};
1919Window includes WindowOrWorkerGlobalScope;
1920WorkerGlobalScope includes WindowOrWorkerGlobalScope;
1921
1922[Exposed=Window]
1923interface DOMParser {
1924  constructor();
1925
1926  [NewObject] Document parseFromString(DOMString string, DOMParserSupportedType type);
1927};
1928
1929enum DOMParserSupportedType {
1930  "text/html",
1931  "text/xml",
1932  "application/xml",
1933  "application/xhtml+xml",
1934  "image/svg+xml"
1935};
1936
1937[Exposed=Window]
1938interface Navigator {
1939  // objects implementing this interface also implement the interfaces given below
1940};
1941Navigator includes NavigatorID;
1942Navigator includes NavigatorLanguage;
1943Navigator includes NavigatorOnLine;
1944Navigator includes NavigatorContentUtils;
1945Navigator includes NavigatorCookies;
1946Navigator includes NavigatorPlugins;
1947Navigator includes NavigatorConcurrentHardware;
1948
1949interface mixin NavigatorID {
1950  readonly attribute DOMString appCodeName; // constant "Mozilla"
1951  readonly attribute DOMString appName; // constant "Netscape"
1952  readonly attribute DOMString appVersion;
1953  readonly attribute DOMString platform;
1954  readonly attribute DOMString product; // constant "Gecko"
1955  [Exposed=Window] readonly attribute DOMString productSub;
1956  readonly attribute DOMString userAgent;
1957  [Exposed=Window] readonly attribute DOMString vendor;
1958  [Exposed=Window] readonly attribute DOMString vendorSub; // constant ""
1959};
1960
1961partial interface mixin NavigatorID {
1962  [Exposed=Window] boolean taintEnabled(); // constant false
1963  [Exposed=Window] readonly attribute DOMString oscpu;
1964};
1965
1966interface mixin NavigatorLanguage {
1967  readonly attribute DOMString language;
1968  readonly attribute FrozenArray<DOMString> languages;
1969};
1970
1971interface mixin NavigatorContentUtils {
1972  [SecureContext] void registerProtocolHandler(DOMString scheme, USVString url);
1973  [SecureContext] void unregisterProtocolHandler(DOMString scheme, USVString url);
1974};
1975
1976interface mixin NavigatorCookies {
1977  readonly attribute boolean cookieEnabled;
1978};
1979
1980interface mixin NavigatorPlugins {
1981  [SameObject] readonly attribute PluginArray plugins;
1982  [SameObject] readonly attribute MimeTypeArray mimeTypes;
1983  boolean javaEnabled();
1984};
1985
1986[Exposed=Window,
1987 LegacyUnenumerableNamedProperties]
1988interface PluginArray {
1989  void refresh(optional boolean reload = false);
1990  readonly attribute unsigned long length;
1991  getter Plugin? item(unsigned long index);
1992  getter Plugin? namedItem(DOMString name);
1993};
1994
1995[Exposed=Window,
1996 LegacyUnenumerableNamedProperties]
1997interface MimeTypeArray {
1998  readonly attribute unsigned long length;
1999  getter MimeType? item(unsigned long index);
2000  getter MimeType? namedItem(DOMString name);
2001};
2002
2003[Exposed=Window,
2004 LegacyUnenumerableNamedProperties]
2005interface Plugin {
2006  readonly attribute DOMString name;
2007  readonly attribute DOMString description;
2008  readonly attribute DOMString filename;
2009  readonly attribute unsigned long length;
2010  getter MimeType? item(unsigned long index);
2011  getter MimeType? namedItem(DOMString name);
2012};
2013
2014[Exposed=Window]
2015interface MimeType {
2016  readonly attribute DOMString type;
2017  readonly attribute DOMString description;
2018  readonly attribute DOMString suffixes; // comma-separated
2019  readonly attribute Plugin enabledPlugin;
2020};
2021
2022[Exposed=(Window,Worker), Serializable, Transferable]
2023interface ImageBitmap {
2024  readonly attribute unsigned long width;
2025  readonly attribute unsigned long height;
2026  void close();
2027};
2028
2029typedef (CanvasImageSource or
2030         Blob or
2031         ImageData) ImageBitmapSource;
2032
2033enum ImageOrientation { "none", "flipY" };
2034enum PremultiplyAlpha { "none", "premultiply", "default" };
2035enum ColorSpaceConversion { "none", "default" };
2036enum ResizeQuality { "pixelated", "low", "medium", "high" };
2037
2038dictionary ImageBitmapOptions {
2039  ImageOrientation imageOrientation = "none";
2040  PremultiplyAlpha premultiplyAlpha = "default";
2041  ColorSpaceConversion colorSpaceConversion = "default";
2042  [EnforceRange] unsigned long resizeWidth;
2043  [EnforceRange] unsigned long resizeHeight;
2044  ResizeQuality resizeQuality = "low";
2045};
2046
2047callback FrameRequestCallback = void (DOMHighResTimeStamp time);
2048
2049interface mixin AnimationFrameProvider {
2050  unsigned long requestAnimationFrame(FrameRequestCallback callback);
2051  void cancelAnimationFrame(unsigned long handle);
2052};
2053Window includes AnimationFrameProvider;
2054DedicatedWorkerGlobalScope includes AnimationFrameProvider;
2055
2056[Exposed=(Window,Worker,AudioWorklet)]
2057interface MessageEvent : Event {
2058  constructor(DOMString type, optional MessageEventInit eventInitDict = {});
2059
2060  readonly attribute any data;
2061  readonly attribute USVString origin;
2062  readonly attribute DOMString lastEventId;
2063  readonly attribute MessageEventSource? source;
2064  readonly attribute FrozenArray<MessagePort> ports;
2065
2066  void initMessageEvent(DOMString type, optional boolean bubbles = false, optional boolean cancelable = false, optional any data = null, optional USVString origin = "", optional DOMString lastEventId = "", optional MessageEventSource? source = null, optional sequence<MessagePort> ports = []);
2067};
2068
2069dictionary MessageEventInit : EventInit {
2070  any data = null;
2071  USVString origin = "";
2072  DOMString lastEventId = "";
2073  MessageEventSource? source = null;
2074  sequence<MessagePort> ports = [];
2075};
2076
2077typedef (WindowProxy or MessagePort or ServiceWorker) MessageEventSource;
2078
2079[Exposed=(Window,Worker)]
2080interface EventSource : EventTarget {
2081  constructor(USVString url, optional EventSourceInit eventSourceInitDict = {});
2082
2083  readonly attribute USVString url;
2084  readonly attribute boolean withCredentials;
2085
2086  // ready state
2087  const unsigned short CONNECTING = 0;
2088  const unsigned short OPEN = 1;
2089  const unsigned short CLOSED = 2;
2090  readonly attribute unsigned short readyState;
2091
2092  // networking
2093  attribute EventHandler onopen;
2094  attribute EventHandler onmessage;
2095  attribute EventHandler onerror;
2096  void close();
2097};
2098
2099dictionary EventSourceInit {
2100  boolean withCredentials = false;
2101};
2102
2103enum BinaryType { "blob", "arraybuffer" };
2104[Exposed=(Window,Worker)]
2105interface WebSocket : EventTarget {
2106  constructor(USVString url, optional (DOMString or sequence<DOMString>) protocols = []);
2107
2108  readonly attribute USVString url;
2109
2110  // ready state
2111  const unsigned short CONNECTING = 0;
2112  const unsigned short OPEN = 1;
2113  const unsigned short CLOSING = 2;
2114  const unsigned short CLOSED = 3;
2115  readonly attribute unsigned short readyState;
2116  readonly attribute unsigned long long bufferedAmount;
2117
2118  // networking
2119  attribute EventHandler onopen;
2120  attribute EventHandler onerror;
2121  attribute EventHandler onclose;
2122  readonly attribute DOMString extensions;
2123  readonly attribute DOMString protocol;
2124  void close(optional [Clamp] unsigned short code, optional USVString reason);
2125
2126  // messaging
2127  attribute EventHandler onmessage;
2128  attribute BinaryType binaryType;
2129  void send(USVString data);
2130  void send(Blob data);
2131  void send(ArrayBuffer data);
2132  void send(ArrayBufferView data);
2133};
2134
2135[Exposed=(Window,Worker)]
2136interface CloseEvent : Event {
2137  constructor(DOMString type, optional CloseEventInit eventInitDict = {});
2138
2139  readonly attribute boolean wasClean;
2140  readonly attribute unsigned short code;
2141  readonly attribute USVString reason;
2142};
2143
2144dictionary CloseEventInit : EventInit {
2145  boolean wasClean = false;
2146  unsigned short code = 0;
2147  USVString reason = "";
2148};
2149
2150[Constructor, Exposed=(Window,Worker)]
2151interface MessageChannel {
2152  readonly attribute MessagePort port1;
2153  readonly attribute MessagePort port2;
2154};
2155
2156[Exposed=(Window,Worker,AudioWorklet), Transferable]
2157interface MessagePort : EventTarget {
2158  void postMessage(any message, sequence<object> transfer);
2159  void postMessage(any message, optional PostMessageOptions options = {});
2160  void start();
2161  void close();
2162
2163  // event handlers
2164  attribute EventHandler onmessage;
2165  attribute EventHandler onmessageerror;
2166};
2167
2168dictionary PostMessageOptions {
2169  sequence<object> transfer = [];
2170};
2171
2172[Exposed=(Window,Worker)]
2173interface BroadcastChannel : EventTarget {
2174  constructor(DOMString name);
2175
2176  readonly attribute DOMString name;
2177  void postMessage(any message);
2178  void close();
2179  attribute EventHandler onmessage;
2180  attribute EventHandler onmessageerror;
2181};
2182
2183[Exposed=Worker]
2184interface WorkerGlobalScope : EventTarget {
2185  readonly attribute WorkerGlobalScope self;
2186  readonly attribute WorkerLocation location;
2187  readonly attribute WorkerNavigator navigator;
2188  void importScripts(USVString... urls);
2189
2190  attribute OnErrorEventHandler onerror;
2191  attribute EventHandler onlanguagechange;
2192  attribute EventHandler onoffline;
2193  attribute EventHandler ononline;
2194  attribute EventHandler onrejectionhandled;
2195  attribute EventHandler onunhandledrejection;
2196};
2197
2198[Global=(Worker,DedicatedWorker),Exposed=DedicatedWorker]
2199interface DedicatedWorkerGlobalScope : WorkerGlobalScope {
2200  [Replaceable] readonly attribute DOMString name;
2201
2202  void postMessage(any message, sequence<object> transfer);
2203  void postMessage(any message, optional PostMessageOptions options = {});
2204
2205  void close();
2206
2207  attribute EventHandler onmessage;
2208  attribute EventHandler onmessageerror;
2209};
2210
2211[Global=(Worker,SharedWorker),Exposed=SharedWorker]
2212interface SharedWorkerGlobalScope : WorkerGlobalScope {
2213  [Replaceable] readonly attribute DOMString name;
2214
2215  void close();
2216
2217  attribute EventHandler onconnect;
2218};
2219
2220interface mixin AbstractWorker {
2221  attribute EventHandler onerror;
2222};
2223
2224[Exposed=(Window,Worker)]
2225interface Worker : EventTarget {
2226  constructor(USVString scriptURL, optional WorkerOptions options = {});
2227
2228  void terminate();
2229
2230  void postMessage(any message, sequence<object> transfer);
2231  void postMessage(any message, optional PostMessageOptions options = {});
2232  attribute EventHandler onmessage;
2233  attribute EventHandler onmessageerror;
2234};
2235
2236dictionary WorkerOptions {
2237  WorkerType type = "classic";
2238  RequestCredentials credentials = "same-origin"; // credentials is only used if type is "module"
2239  DOMString name = "";
2240};
2241
2242enum WorkerType { "classic", "module" };
2243
2244Worker includes AbstractWorker;
2245
2246[Exposed=(Window,Worker)]
2247interface SharedWorker : EventTarget {
2248  constructor(USVString scriptURL, optional (DOMString or WorkerOptions) options = {});
2249
2250  readonly attribute MessagePort port;
2251};
2252SharedWorker includes AbstractWorker;
2253
2254interface mixin NavigatorConcurrentHardware {
2255  readonly attribute unsigned long long hardwareConcurrency;
2256};
2257
2258[Exposed=Worker]
2259interface WorkerNavigator {};
2260WorkerNavigator includes NavigatorID;
2261WorkerNavigator includes NavigatorLanguage;
2262WorkerNavigator includes NavigatorOnLine;
2263WorkerNavigator includes NavigatorConcurrentHardware;
2264
2265[Exposed=Worker]
2266interface WorkerLocation {
2267  stringifier readonly attribute USVString href;
2268  readonly attribute USVString origin;
2269  readonly attribute USVString protocol;
2270  readonly attribute USVString host;
2271  readonly attribute USVString hostname;
2272  readonly attribute USVString port;
2273  readonly attribute USVString pathname;
2274  readonly attribute USVString search;
2275  readonly attribute USVString hash;
2276};
2277
2278[Exposed=Window]
2279interface Storage {
2280  readonly attribute unsigned long length;
2281  DOMString? key(unsigned long index);
2282  getter DOMString? getItem(DOMString key);
2283  setter void setItem(DOMString key, DOMString value);
2284  deleter void removeItem(DOMString key);
2285  void clear();
2286};
2287
2288interface mixin WindowSessionStorage {
2289  readonly attribute Storage sessionStorage;
2290};
2291Window includes WindowSessionStorage;
2292
2293interface mixin WindowLocalStorage {
2294  readonly attribute Storage localStorage;
2295};
2296Window includes WindowLocalStorage;
2297
2298[Exposed=Window,
2299 Constructor(DOMString type, optional StorageEventInit eventInitDict = {})]
2300interface StorageEvent : Event {
2301  readonly attribute DOMString? key;
2302  readonly attribute DOMString? oldValue;
2303  readonly attribute DOMString? newValue;
2304  readonly attribute USVString url;
2305  readonly attribute Storage? storageArea;
2306
2307  void initStorageEvent(DOMString type, optional boolean bubbles = false, optional boolean cancelable = false, optional DOMString? key = null, optional DOMString? oldValue = null, optional DOMString? newValue = null, optional USVString url = "", optional Storage? storageArea = null);
2308};
2309
2310dictionary StorageEventInit : EventInit {
2311  DOMString? key = null;
2312  DOMString? oldValue = null;
2313  DOMString? newValue = null;
2314  USVString url = "";
2315  Storage? storageArea = null;
2316};
2317
2318[Exposed=Window]
2319interface HTMLMarqueeElement : HTMLElement {
2320  [HTMLConstructor] constructor();
2321
2322  [CEReactions] attribute DOMString behavior;
2323  [CEReactions] attribute DOMString bgColor;
2324  [CEReactions] attribute DOMString direction;
2325  [CEReactions] attribute DOMString height;
2326  [CEReactions] attribute unsigned long hspace;
2327  [CEReactions] attribute long loop;
2328  [CEReactions] attribute unsigned long scrollAmount;
2329  [CEReactions] attribute unsigned long scrollDelay;
2330  [CEReactions] attribute boolean trueSpeed;
2331  [CEReactions] attribute unsigned long vspace;
2332  [CEReactions] attribute DOMString width;
2333
2334  attribute EventHandler onbounce;
2335  attribute EventHandler onfinish;
2336  attribute EventHandler onstart;
2337
2338  void start();
2339  void stop();
2340};
2341
2342[Exposed=Window]
2343interface HTMLFrameSetElement : HTMLElement {
2344  [HTMLConstructor] constructor();
2345
2346  [CEReactions] attribute DOMString cols;
2347  [CEReactions] attribute DOMString rows;
2348};
2349HTMLFrameSetElement includes WindowEventHandlers;
2350
2351[Exposed=Window]
2352interface HTMLFrameElement : HTMLElement {
2353  [HTMLConstructor] constructor();
2354
2355  [CEReactions] attribute DOMString name;
2356  [CEReactions] attribute DOMString scrolling;
2357  [CEReactions] attribute USVString src;
2358  [CEReactions] attribute DOMString frameBorder;
2359  [CEReactions] attribute USVString longDesc;
2360  [CEReactions] attribute boolean noResize;
2361  readonly attribute Document? contentDocument;
2362  readonly attribute WindowProxy? contentWindow;
2363
2364  [CEReactions] attribute [LegacyNullToEmptyString] DOMString marginHeight;
2365  [CEReactions] attribute [LegacyNullToEmptyString] DOMString marginWidth;
2366};
2367
2368partial interface HTMLAnchorElement {
2369  [CEReactions] attribute DOMString coords;
2370  [CEReactions] attribute DOMString charset;
2371  [CEReactions] attribute DOMString name;
2372  [CEReactions] attribute DOMString rev;
2373  [CEReactions] attribute DOMString shape;
2374};
2375
2376partial interface HTMLAreaElement {
2377  [CEReactions] attribute boolean noHref;
2378};
2379
2380partial interface HTMLBodyElement {
2381  [CEReactions] attribute [LegacyNullToEmptyString] DOMString text;
2382  [CEReactions] attribute [LegacyNullToEmptyString] DOMString link;
2383  [CEReactions] attribute [LegacyNullToEmptyString] DOMString vLink;
2384  [CEReactions] attribute [LegacyNullToEmptyString] DOMString aLink;
2385  [CEReactions] attribute [LegacyNullToEmptyString] DOMString bgColor;
2386  [CEReactions] attribute DOMString background;
2387};
2388
2389partial interface HTMLBRElement {
2390  [CEReactions] attribute DOMString clear;
2391};
2392
2393partial interface HTMLTableCaptionElement {
2394  [CEReactions] attribute DOMString align;
2395};
2396
2397partial interface HTMLTableColElement {
2398  [CEReactions] attribute DOMString align;
2399  [CEReactions] attribute DOMString ch;
2400  [CEReactions] attribute DOMString chOff;
2401  [CEReactions] attribute DOMString vAlign;
2402  [CEReactions] attribute DOMString width;
2403};
2404
2405[Exposed=Window]
2406interface HTMLDirectoryElement : HTMLElement {
2407  [HTMLConstructor] constructor();
2408
2409  [CEReactions] attribute boolean compact;
2410};
2411
2412partial interface HTMLDivElement {
2413  [CEReactions] attribute DOMString align;
2414};
2415
2416partial interface HTMLDListElement {
2417  [CEReactions] attribute boolean compact;
2418};
2419
2420partial interface HTMLEmbedElement {
2421  [CEReactions] attribute DOMString align;
2422  [CEReactions] attribute DOMString name;
2423};
2424
2425[Exposed=Window]
2426interface HTMLFontElement : HTMLElement {
2427  [HTMLConstructor] constructor();
2428
2429  [CEReactions] attribute [LegacyNullToEmptyString] DOMString color;
2430  [CEReactions] attribute DOMString face;
2431  [CEReactions] attribute DOMString size;
2432};
2433
2434partial interface HTMLHeadingElement {
2435  [CEReactions] attribute DOMString align;
2436};
2437
2438partial interface HTMLHRElement {
2439  [CEReactions] attribute DOMString align;
2440  [CEReactions] attribute DOMString color;
2441  [CEReactions] attribute boolean noShade;
2442  [CEReactions] attribute DOMString size;
2443  [CEReactions] attribute DOMString width;
2444};
2445
2446partial interface HTMLHtmlElement {
2447  [CEReactions] attribute DOMString version;
2448};
2449
2450partial interface HTMLIFrameElement {
2451  [CEReactions] attribute DOMString align;
2452  [CEReactions] attribute DOMString scrolling;
2453  [CEReactions] attribute DOMString frameBorder;
2454  [CEReactions] attribute USVString longDesc;
2455
2456  [CEReactions] attribute [LegacyNullToEmptyString] DOMString marginHeight;
2457  [CEReactions] attribute [LegacyNullToEmptyString] DOMString marginWidth;
2458};
2459
2460partial interface HTMLImageElement {
2461  [CEReactions] attribute DOMString name;
2462  [CEReactions] attribute USVString lowsrc;
2463  [CEReactions] attribute DOMString align;
2464  [CEReactions] attribute unsigned long hspace;
2465  [CEReactions] attribute unsigned long vspace;
2466  [CEReactions] attribute USVString longDesc;
2467
2468  [CEReactions] attribute [LegacyNullToEmptyString] DOMString border;
2469};
2470
2471partial interface HTMLInputElement {
2472  [CEReactions] attribute DOMString align;
2473  [CEReactions] attribute DOMString useMap;
2474};
2475
2476partial interface HTMLLegendElement {
2477  [CEReactions] attribute DOMString align;
2478};
2479
2480partial interface HTMLLIElement {
2481  [CEReactions] attribute DOMString type;
2482};
2483
2484partial interface HTMLLinkElement {
2485  [CEReactions] attribute DOMString charset;
2486  [CEReactions] attribute DOMString rev;
2487  [CEReactions] attribute DOMString target;
2488};
2489
2490partial interface HTMLMenuElement {
2491  [CEReactions] attribute boolean compact;
2492};
2493
2494partial interface HTMLMetaElement {
2495  [CEReactions] attribute DOMString scheme;
2496};
2497
2498partial interface HTMLObjectElement {
2499  [CEReactions] attribute DOMString align;
2500  [CEReactions] attribute DOMString archive;
2501  [CEReactions] attribute DOMString code;
2502  [CEReactions] attribute boolean declare;
2503  [CEReactions] attribute unsigned long hspace;
2504  [CEReactions] attribute DOMString standby;
2505  [CEReactions] attribute unsigned long vspace;
2506  [CEReactions] attribute DOMString codeBase;
2507  [CEReactions] attribute DOMString codeType;
2508
2509  [CEReactions] attribute [LegacyNullToEmptyString] DOMString border;
2510};
2511
2512partial interface HTMLOListElement {
2513  [CEReactions] attribute boolean compact;
2514};
2515
2516partial interface HTMLParagraphElement {
2517  [CEReactions] attribute DOMString align;
2518};
2519
2520partial interface HTMLParamElement {
2521  [CEReactions] attribute DOMString type;
2522  [CEReactions] attribute DOMString valueType;
2523};
2524
2525partial interface HTMLPreElement {
2526  [CEReactions] attribute long width;
2527};
2528
2529partial interface HTMLStyleElement {
2530  [CEReactions] attribute DOMString type;
2531};
2532
2533partial interface HTMLScriptElement {
2534  [CEReactions] attribute DOMString charset;
2535  [CEReactions] attribute DOMString event;
2536  [CEReactions] attribute DOMString htmlFor;
2537};
2538
2539partial interface HTMLTableElement {
2540  [CEReactions] attribute DOMString align;
2541  [CEReactions] attribute DOMString border;
2542  [CEReactions] attribute DOMString frame;
2543  [CEReactions] attribute DOMString rules;
2544  [CEReactions] attribute DOMString summary;
2545  [CEReactions] attribute DOMString width;
2546
2547  [CEReactions] attribute [LegacyNullToEmptyString] DOMString bgColor;
2548  [CEReactions] attribute [LegacyNullToEmptyString] DOMString cellPadding;
2549  [CEReactions] attribute [LegacyNullToEmptyString] DOMString cellSpacing;
2550};
2551
2552partial interface HTMLTableSectionElement {
2553  [CEReactions] attribute DOMString align;
2554  [CEReactions] attribute DOMString ch;
2555  [CEReactions] attribute DOMString chOff;
2556  [CEReactions] attribute DOMString vAlign;
2557};
2558
2559partial interface HTMLTableCellElement {
2560  [CEReactions] attribute DOMString align;
2561  [CEReactions] attribute DOMString axis;
2562  [CEReactions] attribute DOMString height;
2563  [CEReactions] attribute DOMString width;
2564
2565  [CEReactions] attribute DOMString ch;
2566  [CEReactions] attribute DOMString chOff;
2567  [CEReactions] attribute boolean noWrap;
2568  [CEReactions] attribute DOMString vAlign;
2569
2570  [CEReactions] attribute [LegacyNullToEmptyString] DOMString bgColor;
2571};
2572
2573partial interface HTMLTableRowElement {
2574  [CEReactions] attribute DOMString align;
2575  [CEReactions] attribute DOMString ch;
2576  [CEReactions] attribute DOMString chOff;
2577  [CEReactions] attribute DOMString vAlign;
2578
2579  [CEReactions] attribute [LegacyNullToEmptyString] DOMString bgColor;
2580};
2581
2582partial interface HTMLUListElement {
2583  [CEReactions] attribute boolean compact;
2584  [CEReactions] attribute DOMString type;
2585};
2586
2587partial interface Document {
2588  [CEReactions] attribute [LegacyNullToEmptyString] DOMString fgColor;
2589  [CEReactions] attribute [LegacyNullToEmptyString] DOMString linkColor;
2590  [CEReactions] attribute [LegacyNullToEmptyString] DOMString vlinkColor;
2591  [CEReactions] attribute [LegacyNullToEmptyString] DOMString alinkColor;
2592  [CEReactions] attribute [LegacyNullToEmptyString] DOMString bgColor;
2593
2594  [SameObject] readonly attribute HTMLCollection anchors;
2595  [SameObject] readonly attribute HTMLCollection applets;
2596
2597  void clear();
2598  void captureEvents();
2599  void releaseEvents();
2600
2601  [SameObject] readonly attribute HTMLAllCollection all;
2602};
2603
2604partial interface Window {
2605  void captureEvents();
2606  void releaseEvents();
2607
2608  [Replaceable, SameObject] readonly attribute External external;
2609};
2610
2611[Exposed=Window]
2612interface External {
2613  void AddSearchProvider();
2614  void IsSearchProviderInstalled();
2615};
2616