mirror of
https://github.com/zerotier/ZeroTierOne.git
synced 2025-02-27 03:37:24 +00:00
388 lines
14 KiB
Plaintext
388 lines
14 KiB
Plaintext
|
/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||
|
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
||
|
* You can obtain one at http://mozilla.org/MPL/2.0/.
|
||
|
*
|
||
|
* https://dom.spec.whatwg.org/#interface-document
|
||
|
* https://html.spec.whatwg.org/multipage/dom.html#the-document-object
|
||
|
* https://html.spec.whatwg.org/multipage/obsolete.html#other-elements%2C-attributes-and-apis
|
||
|
* https://fullscreen.spec.whatwg.org/#api
|
||
|
* https://w3c.github.io/pointerlock/#extensions-to-the-document-interface
|
||
|
* https://w3c.github.io/pointerlock/#extensions-to-the-documentorshadowroot-mixin
|
||
|
* https://w3c.github.io/page-visibility/#extensions-to-the-document-interface
|
||
|
* https://drafts.csswg.org/cssom/#extensions-to-the-document-interface
|
||
|
* https://drafts.csswg.org/cssom-view/#extensions-to-the-document-interface
|
||
|
*/
|
||
|
|
||
|
/*TODO
|
||
|
interface WindowProxy;
|
||
|
interface nsISupports;
|
||
|
interface URI;
|
||
|
interface nsIDocShell;
|
||
|
interface nsILoadGroup;
|
||
|
*/
|
||
|
|
||
|
enum VisibilityState { "hidden", "visible" };
|
||
|
|
||
|
/* https://dom.spec.whatwg.org/#dictdef-elementcreationoptions */
|
||
|
dictionary ElementCreationOptions {
|
||
|
DOMString is;
|
||
|
|
||
|
[ChromeOnly]
|
||
|
DOMString pseudo;
|
||
|
};
|
||
|
|
||
|
/* https://dom.spec.whatwg.org/#interface-document */
|
||
|
[Constructor]
|
||
|
interface Document : Node {
|
||
|
[Throws]
|
||
|
readonly attribute DOMImplementation implementation;
|
||
|
[Pure, Throws, BinaryName="documentURIFromJS", NeedsCallerType]
|
||
|
readonly attribute DOMString URL;
|
||
|
[Pure, Throws, BinaryName="documentURIFromJS", NeedsCallerType]
|
||
|
readonly attribute DOMString documentURI;
|
||
|
[Pure]
|
||
|
readonly attribute DOMString compatMode;
|
||
|
[Pure]
|
||
|
readonly attribute DOMString characterSet;
|
||
|
[Pure,BinaryName="characterSet"]
|
||
|
readonly attribute DOMString charset; // legacy alias of .characterSet
|
||
|
[Pure,BinaryName="characterSet"]
|
||
|
readonly attribute DOMString inputEncoding; // legacy alias of .characterSet
|
||
|
[Pure]
|
||
|
readonly attribute DOMString contentType;
|
||
|
|
||
|
[Pure]
|
||
|
readonly attribute DocumentType? doctype;
|
||
|
[Pure]
|
||
|
readonly attribute Element? documentElement;
|
||
|
|
||
|
[Pure]
|
||
|
HTMLCollection getElementsByTagName(DOMString localName);
|
||
|
[Pure, Throws]
|
||
|
HTMLCollection getElementsByTagNameNS(DOMString? namespace, DOMString localName);
|
||
|
[Pure]
|
||
|
HTMLCollection getElementsByClassName(DOMString classNames);
|
||
|
[Pure]
|
||
|
Element? getElementById(DOMString elementId);
|
||
|
|
||
|
[CEReactions, NewObject, Throws]
|
||
|
Element createElement(DOMString localName, optional (ElementCreationOptions or DOMString) options);
|
||
|
[CEReactions, NewObject, Throws]
|
||
|
Element createElementNS(DOMString? namespace, DOMString qualifiedName, optional (ElementCreationOptions or DOMString) options);
|
||
|
[NewObject]
|
||
|
DocumentFragment createDocumentFragment();
|
||
|
[NewObject]
|
||
|
Text createTextNode(DOMString data);
|
||
|
[NewObject]
|
||
|
Comment createComment(DOMString data);
|
||
|
[NewObject, Throws]
|
||
|
ProcessingInstruction createProcessingInstruction(DOMString target, DOMString data);
|
||
|
|
||
|
[CEReactions, Throws]
|
||
|
Node importNode(Node node, optional boolean deep = false);
|
||
|
[CEReactions, Throws]
|
||
|
Node adoptNode(Node node);
|
||
|
|
||
|
[NewObject, Throws, NeedsCallerType]
|
||
|
Event createEvent(DOMString interface);
|
||
|
|
||
|
[NewObject, Throws]
|
||
|
Range createRange();
|
||
|
|
||
|
// NodeFilter.SHOW_ALL = 0xFFFFFFFF
|
||
|
[NewObject, Throws]
|
||
|
NodeIterator createNodeIterator(Node root, optional unsigned long whatToShow = 0xFFFFFFFF, optional NodeFilter? filter = null);
|
||
|
[NewObject, Throws]
|
||
|
TreeWalker createTreeWalker(Node root, optional unsigned long whatToShow = 0xFFFFFFFF, optional NodeFilter? filter = null);
|
||
|
|
||
|
// NEW
|
||
|
// No support for prepend/append yet
|
||
|
// undefined prepend((Node or DOMString)... nodes);
|
||
|
// undefined append((Node or DOMString)... nodes);
|
||
|
|
||
|
// These are not in the spec, but leave them for now for backwards compat.
|
||
|
// So sort of like Gecko extensions
|
||
|
[NewObject, Throws]
|
||
|
CDATASection createCDATASection(DOMString data);
|
||
|
[NewObject, Throws]
|
||
|
Attr createAttribute(DOMString name);
|
||
|
[NewObject, Throws]
|
||
|
Attr createAttributeNS(DOMString? namespace, DOMString name);
|
||
|
};
|
||
|
|
||
|
// https://html.spec.whatwg.org/multipage/dom.html#the-document-object
|
||
|
partial interface Document {
|
||
|
[PutForwards=href, Unforgeable] readonly attribute Location? location;
|
||
|
//(HTML only) attribute DOMString domain;
|
||
|
readonly attribute DOMString referrer;
|
||
|
//(HTML only) attribute DOMString cookie;
|
||
|
readonly attribute DOMString lastModified;
|
||
|
readonly attribute DOMString readyState;
|
||
|
|
||
|
// DOM tree accessors
|
||
|
//(Not proxy yet)getter object (DOMString name);
|
||
|
[CEReactions, SetterThrows, Pure]
|
||
|
attribute DOMString title;
|
||
|
[CEReactions, Pure]
|
||
|
attribute DOMString dir;
|
||
|
[CEReactions, Pure, SetterThrows]
|
||
|
attribute HTMLElement? body;
|
||
|
[Pure]
|
||
|
readonly attribute HTMLHeadElement? head;
|
||
|
[SameObject] readonly attribute HTMLCollection images;
|
||
|
[SameObject] readonly attribute HTMLCollection embeds;
|
||
|
[SameObject] readonly attribute HTMLCollection plugins;
|
||
|
[SameObject] readonly attribute HTMLCollection links;
|
||
|
[SameObject] readonly attribute HTMLCollection forms;
|
||
|
[SameObject] readonly attribute HTMLCollection scripts;
|
||
|
[Pure]
|
||
|
NodeList getElementsByName(DOMString elementName);
|
||
|
|
||
|
//(Not implemented)readonly attribute DOMElementMap cssElementMap;
|
||
|
|
||
|
// dynamic markup insertion
|
||
|
//(HTML only)Document open(optional DOMString type, optional DOMString replace);
|
||
|
//(HTML only)WindowProxy open(DOMString url, DOMString name, DOMString features, optional boolean replace);
|
||
|
//(HTML only)undefined close();
|
||
|
//(HTML only)undefined write(DOMString... text);
|
||
|
//(HTML only)undefined writeln(DOMString... text);
|
||
|
|
||
|
// user interaction
|
||
|
[Pure]
|
||
|
readonly attribute WindowProxy? defaultView;
|
||
|
[Throws]
|
||
|
boolean hasFocus();
|
||
|
//(HTML only) attribute DOMString designMode;
|
||
|
//(HTML only)boolean execCommand(DOMString commandId);
|
||
|
//(HTML only)boolean execCommand(DOMString commandId, boolean showUI);
|
||
|
//(HTML only)boolean execCommand(DOMString commandId, boolean showUI, DOMString value);
|
||
|
//(HTML only)boolean queryCommandEnabled(DOMString commandId);
|
||
|
//(HTML only)boolean queryCommandIndeterm(DOMString commandId);
|
||
|
//(HTML only)boolean queryCommandState(DOMString commandId);
|
||
|
//(HTML only)boolean queryCommandSupported(DOMString commandId);
|
||
|
//(HTML only)DOMString queryCommandValue(DOMString commandId);
|
||
|
//(Not implemented)readonly attribute HTMLCollection commands;
|
||
|
|
||
|
// special event handler IDL attributes that only apply to Document objects
|
||
|
[LenientThis] attribute EventHandler onreadystatechange;
|
||
|
|
||
|
// Gecko extensions?
|
||
|
attribute EventHandler onbeforescriptexecute;
|
||
|
attribute EventHandler onafterscriptexecute;
|
||
|
|
||
|
[Pref="dom.select_events.enabled"]
|
||
|
attribute EventHandler onselectionchange;
|
||
|
|
||
|
/**
|
||
|
* Returns the script element whose script is currently being processed.
|
||
|
*
|
||
|
* @see <https://developer.mozilla.org/en/DOM/document.currentScript>
|
||
|
*/
|
||
|
[Pure]
|
||
|
readonly attribute Element? currentScript;
|
||
|
/**
|
||
|
* Release the current mouse capture if it is on an element within this
|
||
|
* document.
|
||
|
*
|
||
|
* @see <https://developer.mozilla.org/en/DOM/document.releaseCapture>
|
||
|
*/
|
||
|
undefined releaseCapture();
|
||
|
|
||
|
[ChromeOnly]
|
||
|
readonly attribute URI? documentURIObject;
|
||
|
|
||
|
/**
|
||
|
* Current referrer policy - one of the REFERRER_POLICY_* constants
|
||
|
* from nsIHttpChannel.
|
||
|
*/
|
||
|
[ChromeOnly]
|
||
|
readonly attribute unsigned long referrerPolicy;
|
||
|
|
||
|
};
|
||
|
|
||
|
// https://html.spec.whatwg.org/multipage/obsolete.html#other-elements%2C-attributes-and-apis
|
||
|
partial interface Document {
|
||
|
//(HTML only)[CEReactions] attribute [TreatNullAs=EmptyString] DOMString fgColor;
|
||
|
//(HTML only)[CEReactions] attribute [TreatNullAs=EmptyString] DOMString linkColor;
|
||
|
//(HTML only)[CEReactions] attribute [TreatNullAs=EmptyString] DOMString vlinkColor;
|
||
|
//(HTML only)[CEReactions] attribute [TreatNullAs=EmptyString] DOMString alinkColor;
|
||
|
//(HTML only)[CEReactions] attribute [TreatNullAs=EmptyString] DOMString bgColor;
|
||
|
|
||
|
[SameObject] readonly attribute HTMLCollection anchors;
|
||
|
[SameObject] readonly attribute HTMLCollection applets;
|
||
|
|
||
|
//(HTML only)undefined clear();
|
||
|
//(HTML only)undefined captureEvents();
|
||
|
//(HTML only)undefined releaseEvents();
|
||
|
|
||
|
//(HTML only)[SameObject] readonly attribute HTMLAllCollection all;
|
||
|
};
|
||
|
|
||
|
// https://fullscreen.spec.whatwg.org/#api
|
||
|
partial interface Document {
|
||
|
// Note: Per spec the 'S' in these two is lowercase, but the "Moz"
|
||
|
// versions have it uppercase.
|
||
|
[LenientSetter, Unscopable, Func="nsDocument::IsUnprefixedFullscreenEnabled"]
|
||
|
readonly attribute boolean fullscreen;
|
||
|
[LenientSetter, Func="nsDocument::IsUnprefixedFullscreenEnabled", NeedsCallerType]
|
||
|
readonly attribute boolean fullscreenEnabled;
|
||
|
|
||
|
[Func="nsDocument::IsUnprefixedFullscreenEnabled"]
|
||
|
undefined exitFullscreen();
|
||
|
|
||
|
// Events handlers
|
||
|
[Func="nsDocument::IsUnprefixedFullscreenEnabled"]
|
||
|
attribute EventHandler onfullscreenchange;
|
||
|
[Func="nsDocument::IsUnprefixedFullscreenEnabled"]
|
||
|
attribute EventHandler onfullscreenerror;
|
||
|
};
|
||
|
|
||
|
// https://w3c.github.io/pointerlock/#extensions-to-the-document-interface
|
||
|
// https://w3c.github.io/pointerlock/#extensions-to-the-documentorshadowroot-mixin
|
||
|
partial interface Document {
|
||
|
undefined exitPointerLock();
|
||
|
|
||
|
// Event handlers
|
||
|
attribute EventHandler onpointerlockchange;
|
||
|
attribute EventHandler onpointerlockerror;
|
||
|
};
|
||
|
|
||
|
// https://w3c.github.io/page-visibility/#extensions-to-the-document-interface
|
||
|
partial interface Document {
|
||
|
readonly attribute boolean hidden;
|
||
|
readonly attribute VisibilityState visibilityState;
|
||
|
attribute EventHandler onvisibilitychange;
|
||
|
};
|
||
|
|
||
|
// https://drafts.csswg.org/cssom/#extensions-to-the-document-interface
|
||
|
partial interface Document {
|
||
|
attribute DOMString? selectedStyleSheetSet;
|
||
|
readonly attribute DOMString? lastStyleSheetSet;
|
||
|
readonly attribute DOMString? preferredStyleSheetSet;
|
||
|
[Constant]
|
||
|
readonly attribute DOMStringList styleSheetSets;
|
||
|
undefined enableStyleSheetsForSet (DOMString? name);
|
||
|
};
|
||
|
|
||
|
// https://drafts.csswg.org/cssom-view/#extensions-to-the-document-interface
|
||
|
partial interface Document {
|
||
|
CaretPosition? caretPositionFromPoint (float x, float y);
|
||
|
|
||
|
readonly attribute Element? scrollingElement;
|
||
|
};
|
||
|
|
||
|
// http://dev.w3.org/2006/webapi/selectors-api2/#interface-definitions
|
||
|
partial interface Document {
|
||
|
[Throws, Pure]
|
||
|
Element? querySelector(DOMString selectors);
|
||
|
[Throws, Pure]
|
||
|
NodeList querySelectorAll(DOMString selectors);
|
||
|
|
||
|
//(Not implemented)Element? find(DOMString selectors, optional (Element or sequence<Node>)? refNodes);
|
||
|
//(Not implemented)NodeList findAll(DOMString selectors, optional (Element or sequence<Node>)? refNodes);
|
||
|
};
|
||
|
|
||
|
// https://drafts.csswg.org/web-animations/#extensions-to-the-document-interface
|
||
|
partial interface Document {
|
||
|
[Func="nsDocument::IsWebAnimationsEnabled"]
|
||
|
readonly attribute DocumentTimeline timeline;
|
||
|
[Func="nsDocument::IsWebAnimationsEnabled"]
|
||
|
sequence<Animation> getAnimations();
|
||
|
};
|
||
|
|
||
|
// https://svgwg.org/svg2-draft/struct.html#InterfaceDocumentExtensions
|
||
|
partial interface Document {
|
||
|
[BinaryName="SVGRootElement"]
|
||
|
readonly attribute SVGSVGElement? rootElement;
|
||
|
};
|
||
|
|
||
|
dictionary BlockParsingOptions {
|
||
|
/**
|
||
|
* If true, blocks script-created parsers (created via document.open()) in
|
||
|
* addition to network-created parsers.
|
||
|
*/
|
||
|
boolean blockScriptCreated = true;
|
||
|
};
|
||
|
|
||
|
// Extension to give chrome JS the ability to determine when a document was
|
||
|
// created to satisfy an iframe with srcdoc attribute.
|
||
|
partial interface Document {
|
||
|
[ChromeOnly] readonly attribute boolean isSrcdocDocument;
|
||
|
};
|
||
|
|
||
|
|
||
|
// Extension to give chrome JS the ability to get the underlying
|
||
|
// sandbox flag attribute
|
||
|
partial interface Document {
|
||
|
[ChromeOnly] readonly attribute DOMString? sandboxFlagsAsString;
|
||
|
};
|
||
|
|
||
|
|
||
|
/**
|
||
|
* Chrome document anonymous content management.
|
||
|
* This is a Chrome-only API that allows inserting fixed positioned anonymous
|
||
|
* content on top of the current page displayed in the document.
|
||
|
* The supplied content is cloned and inserted into the document's CanvasFrame.
|
||
|
* Note that this only works for HTML documents.
|
||
|
*/
|
||
|
partial interface Document {
|
||
|
/**
|
||
|
* Deep-clones the provided element and inserts it into the CanvasFrame.
|
||
|
* Returns an AnonymousContent instance that can be used to manipulate the
|
||
|
* inserted element.
|
||
|
*/
|
||
|
[ChromeOnly, NewObject, Throws]
|
||
|
AnonymousContent insertAnonymousContent(Element aElement);
|
||
|
|
||
|
/**
|
||
|
* Removes the element inserted into the CanvasFrame given an AnonymousContent
|
||
|
* instance.
|
||
|
*/
|
||
|
[ChromeOnly, Throws]
|
||
|
undefined removeAnonymousContent(AnonymousContent aContent);
|
||
|
};
|
||
|
|
||
|
// http://w3c.github.io/selection-api/#extensions-to-document-interface
|
||
|
partial interface Document {
|
||
|
[Throws]
|
||
|
Selection? getSelection();
|
||
|
};
|
||
|
|
||
|
// Extension to give chrome JS the ability to determine whether
|
||
|
// the user has interacted with the document or not.
|
||
|
partial interface Document {
|
||
|
[ChromeOnly] readonly attribute boolean userHasInteracted;
|
||
|
};
|
||
|
|
||
|
// Extension to give chrome JS the ability to simulate activate the docuement
|
||
|
// by user gesture.
|
||
|
partial interface Document {
|
||
|
[ChromeOnly]
|
||
|
undefined notifyUserGestureActivation();
|
||
|
};
|
||
|
|
||
|
// For more information on Flash classification, see
|
||
|
// toolkit/components/url-classifier/flash-block-lists.rst
|
||
|
enum FlashClassification {
|
||
|
"unclassified", // Denotes a classification that has not yet been computed.
|
||
|
// Allows for lazy classification.
|
||
|
"unknown", // Site is not on the whitelist or blacklist
|
||
|
"allowed", // Site is on the Flash whitelist
|
||
|
"denied" // Site is on the Flash blacklist
|
||
|
};
|
||
|
partial interface Document {
|
||
|
[ChromeOnly]
|
||
|
readonly attribute FlashClassification documentFlashClassification;
|
||
|
};
|
||
|
|
||
|
Document includes XPathEvaluator;
|
||
|
Document includes GlobalEventHandlers;
|
||
|
Document includes DocumentAndElementEventHandlers;
|
||
|
Document includes TouchEventHandlers;
|
||
|
Document includes ParentNode;
|
||
|
Document includes OnErrorEventHandlerForNodes;
|
||
|
Document includes GeometryUtils;
|
||
|
Document includes FontFaceSource;
|
||
|
Document includes DocumentOrShadowRoot;
|