diff options
Diffstat (limited to 'dom/webidl')
683 files changed, 31236 insertions, 0 deletions
diff --git a/dom/webidl/APZTestData.webidl b/dom/webidl/APZTestData.webidl new file mode 100644 index 0000000000..227f4b0b99 --- /dev/null +++ b/dom/webidl/APZTestData.webidl @@ -0,0 +1,47 @@ +/* -*- 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/. + */ + +/* + * This file declares data structures used to communicate data logged by + * various components for the purpose of APZ testing (see bug 961289 and + * gfx/layers/apz/test/APZTestData.h) to JS test code. + */ + +// A single key-value pair in the data. +dictionary ScrollFrameDataEntry { + DOMString key; + DOMString value; +}; + +// All the key-value pairs associated with a given scrollable frame. +// The scrollable frame is identified by a scroll id. +dictionary ScrollFrameData { + unsigned long long scrollId; + sequence<ScrollFrameDataEntry> entries; +}; + +// All the scrollable frames associated with a given paint or repaint request. +// The paint or repaint request is identified by a sequence number. +dictionary APZBucket { + unsigned long sequenceNumber; + sequence<ScrollFrameData> scrollFrames; +}; + +// All the paints and repaint requests. This is the top-level data structure. +dictionary APZTestData { + sequence<APZBucket> paints; + sequence<APZBucket> repaintRequests; +}; + +// A frame uniformity measurement for every scrollable layer +dictionary FrameUniformity { + unsigned long layerAddress; + float frameUniformity; +}; + +dictionary FrameUniformityResults { + sequence<FrameUniformity> layerUniformities; +}; diff --git a/dom/webidl/AbstractWorker.webidl b/dom/webidl/AbstractWorker.webidl new file mode 100644 index 0000000000..7ea6e367b6 --- /dev/null +++ b/dom/webidl/AbstractWorker.webidl @@ -0,0 +1,10 @@ +/* -*- 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/. + */ + +[NoInterfaceObject, Exposed=(Window,Worker,System)] +interface AbstractWorker { + attribute EventHandler onerror; +}; diff --git a/dom/webidl/AccessibleNode.webidl b/dom/webidl/AccessibleNode.webidl new file mode 100644 index 0000000000..42bc93aa9f --- /dev/null +++ b/dom/webidl/AccessibleNode.webidl @@ -0,0 +1,11 @@ +/* -*- 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/. + */ + +[Pref="accessibility.AOM.enabled"] +interface AccessibleNode { + readonly attribute DOMString role; + readonly attribute Node? DOMNode; +}; diff --git a/dom/webidl/AddonEvent.webidl b/dom/webidl/AddonEvent.webidl new file mode 100644 index 0000000000..235f81ec22 --- /dev/null +++ b/dom/webidl/AddonEvent.webidl @@ -0,0 +1,12 @@ +[ Func="mozilla::AddonManagerWebAPI::IsAPIEnabled", + Constructor(DOMString type, AddonEventInit eventInitDict)] +interface AddonEvent : Event { + readonly attribute DOMString id; + readonly attribute boolean needsRestart; +}; + +dictionary AddonEventInit : EventInit { + required DOMString id; + required boolean needsRestart; +}; + diff --git a/dom/webidl/AddonManager.webidl b/dom/webidl/AddonManager.webidl new file mode 100644 index 0000000000..02c7953e6f --- /dev/null +++ b/dom/webidl/AddonManager.webidl @@ -0,0 +1,91 @@ +/* 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/. + */ + +/* We need a JSImplementation but cannot get one without a contract ID. + Since Addon and AddonInstall are only ever created from JS they don't need + real contract IDs. */ +[ChromeOnly, JSImplementation="dummy"] +interface Addon { + // The add-on's ID. + readonly attribute DOMString id; + // The add-on's version. + readonly attribute DOMString version; + // The add-on's type (extension, theme, etc.). + readonly attribute DOMString type; + // The add-on's name in the current locale. + readonly attribute DOMString name; + // The add-on's description in the current locale. + readonly attribute DOMString description; + // If the user has enabled this add-on, note that it still may not be running + // depending on whether enabling requires a restart or if the add-on is + // incompatible in some way. + readonly attribute boolean isEnabled; + // If the add-on is currently active in the browser. + readonly attribute boolean isActive; + // If the add-on may be uninstalled + readonly attribute boolean canUninstall; + + Promise<boolean> uninstall(); + Promise<void> setEnabled(boolean value); +}; + +[ChromeOnly, JSImplementation="dummy"] +interface AddonInstall : EventTarget { + // One of the STATE_* symbols from AddonManager.jsm + readonly attribute DOMString state; + // One of the ERROR_* symbols from AddonManager.jsm, or null + readonly attribute DOMString? error; + // How many bytes have been downloaded + readonly attribute long long progress; + // How many total bytes will need to be downloaded or -1 if unknown + readonly attribute long long maxProgress; + + Promise<void> install(); + Promise<void> cancel(); +}; + +dictionary addonInstallOptions { + required DOMString url; + // If a non-empty string is passed for "hash", it is used to verify the + // checksum of the downloaded XPI before installing. If is omitted or if + // it is null or empty string, no checksum verification is performed. + DOMString? hash = null; +}; + +[HeaderFile="mozilla/AddonManagerWebAPI.h", + Func="mozilla::AddonManagerWebAPI::IsAPIEnabled", + NavigatorProperty="mozAddonManager", + JSImplementation="@mozilla.org/addon-web-api/manager;1"] +interface AddonManager : EventTarget { + /** + * Gets information about an add-on + * + * @param id + * The ID of the add-on to test for. + * @return A promise. It will resolve to an Addon if the add-on is installed. + */ + Promise<Addon> getAddonByID(DOMString id); + + /** + * Creates an AddonInstall object for a given URL. + * + * @param options + * Only one supported option: 'url', the URL of the addon to install. + * @return A promise that resolves to an instance of AddonInstall. + */ + Promise<AddonInstall> createInstall(optional addonInstallOptions options); + + /* Hooks for managing event listeners */ + [ChromeOnly] + void eventListenerWasAdded(DOMString type); + [ChromeOnly] + void eventListenerWasRemoved(DOMString type); +}; + +[ChromeOnly,Exposed=System,HeaderFile="mozilla/AddonManagerWebAPI.h"] +interface AddonManagerPermissions { + static boolean isHostPermitted(DOMString host); +}; + diff --git a/dom/webidl/AnalyserNode.webidl b/dom/webidl/AnalyserNode.webidl new file mode 100644 index 0000000000..5b4be88228 --- /dev/null +++ b/dom/webidl/AnalyserNode.webidl @@ -0,0 +1,41 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * https://webaudio.github.io/web-audio-api/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +[Pref="dom.webaudio.enabled"] +interface AnalyserNode : AudioNode { + + // Real-time frequency-domain data + void getFloatFrequencyData(Float32Array array); + void getByteFrequencyData(Uint8Array array); + + // Real-time waveform data + void getFloatTimeDomainData(Float32Array array); + void getByteTimeDomainData(Uint8Array array); + + [SetterThrows, Pure] + attribute unsigned long fftSize; + [Pure] + readonly attribute unsigned long frequencyBinCount; + + [SetterThrows, Pure] + attribute double minDecibels; + [SetterThrows, Pure] + attribute double maxDecibels; + + [SetterThrows, Pure] + attribute double smoothingTimeConstant; + +}; + +// Mozilla extension +AnalyserNode implements AudioNodePassThrough; + diff --git a/dom/webidl/Animatable.webidl b/dom/webidl/Animatable.webidl new file mode 100644 index 0000000000..4c1396c995 --- /dev/null +++ b/dom/webidl/Animatable.webidl @@ -0,0 +1,28 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://dev.w3.org/fxtf/web-animations/#the-animatable-interface + * + * Copyright © 2014 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +dictionary KeyframeAnimationOptions : KeyframeEffectOptions { + DOMString id = ""; +}; + +dictionary AnimationFilter { + boolean subtree = false; +}; + +[NoInterfaceObject] +interface Animatable { + [Func="nsDocument::IsElementAnimateEnabled", Throws] + Animation animate(object? keyframes, + optional UnrestrictedDoubleOrKeyframeAnimationOptions options); + [Func="nsDocument::IsWebAnimationsEnabled"] + sequence<Animation> getAnimations(optional AnimationFilter filter); +}; diff --git a/dom/webidl/Animation.webidl b/dom/webidl/Animation.webidl new file mode 100644 index 0000000000..615084f752 --- /dev/null +++ b/dom/webidl/Animation.webidl @@ -0,0 +1,52 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://w3c.github.io/web-animations/#the-animation-interface + * + * Copyright © 2015 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +enum AnimationPlayState { "idle", "pending", "running", "paused", "finished" }; + +[Func="nsDocument::IsElementAnimateEnabled", + Constructor (optional AnimationEffectReadOnly? effect = null, + optional AnimationTimeline? timeline)] +interface Animation : EventTarget { + attribute DOMString id; + [Func="nsDocument::IsWebAnimationsEnabled", Pure] + attribute AnimationEffectReadOnly? effect; + [Func="nsDocument::IsWebAnimationsEnabled"] + attribute AnimationTimeline? timeline; + [BinaryName="startTimeAsDouble"] + attribute double? startTime; + [SetterThrows, BinaryName="currentTimeAsDouble"] + attribute double? currentTime; + + attribute double playbackRate; + [BinaryName="playStateFromJS"] + readonly attribute AnimationPlayState playState; + [Func="nsDocument::IsWebAnimationsEnabled", Throws] + readonly attribute Promise<Animation> ready; + [Func="nsDocument::IsWebAnimationsEnabled", Throws] + readonly attribute Promise<Animation> finished; + attribute EventHandler onfinish; + attribute EventHandler oncancel; + void cancel (); + [Throws] + void finish (); + [Throws, BinaryName="playFromJS"] + void play (); + [Throws, BinaryName="pauseFromJS"] + void pause (); + [Throws] + void reverse (); +}; + +// Non-standard extensions +partial interface Animation { + [ChromeOnly] readonly attribute boolean isRunningOnCompositor; +}; diff --git a/dom/webidl/AnimationEffectReadOnly.webidl b/dom/webidl/AnimationEffectReadOnly.webidl new file mode 100644 index 0000000000..063cce1f80 --- /dev/null +++ b/dom/webidl/AnimationEffectReadOnly.webidl @@ -0,0 +1,53 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://w3c.github.io/web-animations/#animationeffectreadonly + * + * Copyright © 2015 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +enum FillMode { + "none", + "forwards", + "backwards", + "both", + "auto" +}; + +enum PlaybackDirection { + "normal", + "reverse", + "alternate", + "alternate-reverse" +}; + +dictionary AnimationEffectTimingProperties { + double delay = 0.0; + double endDelay = 0.0; + FillMode fill = "auto"; + double iterationStart = 0.0; + unrestricted double iterations = 1.0; + (unrestricted double or DOMString) duration = "auto"; + PlaybackDirection direction = "normal"; + DOMString easing = "linear"; +}; + +dictionary ComputedTimingProperties : AnimationEffectTimingProperties { + unrestricted double endTime = 0.0; + unrestricted double activeDuration = 0.0; + double? localTime = null; + double? progress = null; + unrestricted double? currentIteration = null; +}; + +[Func="nsDocument::IsWebAnimationsEnabled"] +interface AnimationEffectReadOnly { + [Cached, Constant] + readonly attribute AnimationEffectTimingReadOnly timing; + [BinaryName="getComputedTimingAsDict"] + ComputedTimingProperties getComputedTiming(); +}; diff --git a/dom/webidl/AnimationEffectTiming.webidl b/dom/webidl/AnimationEffectTiming.webidl new file mode 100644 index 0000000000..c2d8564c7f --- /dev/null +++ b/dom/webidl/AnimationEffectTiming.webidl @@ -0,0 +1,27 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * https://w3c.github.io/web-animations/#animationeffecttiming + * + * Copyright © 2015 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +[Func="nsDocument::IsWebAnimationsEnabled"] +interface AnimationEffectTiming : AnimationEffectTimingReadOnly { + inherit attribute double delay; + inherit attribute double endDelay; + inherit attribute FillMode fill; + [SetterThrows] + inherit attribute double iterationStart; + [SetterThrows] + inherit attribute unrestricted double iterations; + [SetterThrows] + inherit attribute (unrestricted double or DOMString) duration; + inherit attribute PlaybackDirection direction; + [SetterThrows] + inherit attribute DOMString easing; +}; diff --git a/dom/webidl/AnimationEffectTimingReadOnly.webidl b/dom/webidl/AnimationEffectTimingReadOnly.webidl new file mode 100644 index 0000000000..4aff51e011 --- /dev/null +++ b/dom/webidl/AnimationEffectTimingReadOnly.webidl @@ -0,0 +1,23 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * https://w3c.github.io/web-animations/#animationeffecttimingreadonly + * + * Copyright © 2015 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +[Func="nsDocument::IsWebAnimationsEnabled"] +interface AnimationEffectTimingReadOnly { + readonly attribute double delay; + readonly attribute double endDelay; + readonly attribute FillMode fill; + readonly attribute double iterationStart; + readonly attribute unrestricted double iterations; + readonly attribute (unrestricted double or DOMString) duration; + readonly attribute PlaybackDirection direction; + readonly attribute DOMString easing; +}; diff --git a/dom/webidl/AnimationEvent.webidl b/dom/webidl/AnimationEvent.webidl new file mode 100644 index 0000000000..e48ed571ca --- /dev/null +++ b/dom/webidl/AnimationEvent.webidl @@ -0,0 +1,25 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/css3-animations/#animation-events- + * http://dev.w3.org/csswg/css3-animations/#animation-events- + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +[Constructor(DOMString type, optional AnimationEventInit eventInitDict)] +interface AnimationEvent : Event { + readonly attribute DOMString animationName; + readonly attribute float elapsedTime; + readonly attribute DOMString pseudoElement; +}; + +dictionary AnimationEventInit : EventInit { + DOMString animationName = ""; + float elapsedTime = 0; + DOMString pseudoElement = ""; +}; diff --git a/dom/webidl/AnimationPlaybackEvent.webidl b/dom/webidl/AnimationPlaybackEvent.webidl new file mode 100644 index 0000000000..52f5f501a4 --- /dev/null +++ b/dom/webidl/AnimationPlaybackEvent.webidl @@ -0,0 +1,24 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://w3c.github.io/web-animations/#the-animationplaybackevent-interface + * + * Copyright © 2015 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +[Func="nsDocument::IsWebAnimationsEnabled", + Constructor(DOMString type, + optional AnimationPlaybackEventInit eventInitDict)] +interface AnimationPlaybackEvent : Event { + readonly attribute double? currentTime; + readonly attribute double? timelineTime; +}; + +dictionary AnimationPlaybackEventInit : EventInit { + double? currentTime = null; + double? timelineTime = null; +}; diff --git a/dom/webidl/AnimationTimeline.webidl b/dom/webidl/AnimationTimeline.webidl new file mode 100644 index 0000000000..fe3d0fb49a --- /dev/null +++ b/dom/webidl/AnimationTimeline.webidl @@ -0,0 +1,17 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * https://w3c.github.io/web-animations/#animationtimeline + * + * Copyright © 2015 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +[Func="nsDocument::IsWebAnimationsEnabled"] +interface AnimationTimeline { + [BinaryName="currentTimeAsDouble"] + readonly attribute double? currentTime; +}; diff --git a/dom/webidl/AnonymousContent.webidl b/dom/webidl/AnonymousContent.webidl new file mode 100644 index 0000000000..6755fe598a --- /dev/null +++ b/dom/webidl/AnonymousContent.webidl @@ -0,0 +1,80 @@ +/* -*- 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/. + */ + +/* + * This file declares the AnonymousContent interface which is used to + * manipulate content that has been inserted into the document's canvasFrame + * anonymous container. + * See Document.insertAnonymousContent. + * + * This API never returns a reference to the actual inserted DOM node on + * purpose. This is to make sure the content cannot be randomly changed and the + * DOM cannot be traversed from the node, so that Gecko can remain in control of + * the inserted content. + */ + +[ChromeOnly] +interface AnonymousContent { + /** + * Get the text content of an element inside this custom anonymous content. + */ + [Throws] + DOMString getTextContentForElement(DOMString elementId); + + /** + * Set the text content of an element inside this custom anonymous content. + */ + [Throws] + void setTextContentForElement(DOMString elementId, DOMString text); + + /** + * Get the value of an attribute of an element inside this custom anonymous + * content. + */ + [Throws] + DOMString? getAttributeForElement(DOMString elementId, + DOMString attributeName); + + /** + * Set the value of an attribute of an element inside this custom anonymous + * content. + */ + [Throws] + void setAttributeForElement(DOMString elementId, + DOMString attributeName, + DOMString value); + + /** + * Remove an attribute from an element inside this custom anonymous content. + */ + [Throws] + void removeAttributeForElement(DOMString elementId, + DOMString attributeName); + + /** + * Get the canvas' context for the element specified if it's a <canvas> + * node, `null` otherwise. + */ + [Throws] + nsISupports? getCanvasContext(DOMString elementId, + DOMString contextId); + + [Func="nsDocument::IsElementAnimateEnabled", Throws] + Animation setAnimationForElement(DOMString elementId, + object? keyframes, + optional UnrestrictedDoubleOrKeyframeAnimationOptions + options); + + /** + * Accepts a list of (possibly overlapping) DOMRects which describe a shape + * in CSS pixels relative to the element's border box. This shape will be + * excluded from the element's background color rendering. The element will + * not render any background images once this method has been called. + */ + [Throws] + void setCutoutRectsForElement(DOMString elementId, + sequence<DOMRect> rects); +}; diff --git a/dom/webidl/AppInfo.webidl b/dom/webidl/AppInfo.webidl new file mode 100644 index 0000000000..a4f44d46c2 --- /dev/null +++ b/dom/webidl/AppInfo.webidl @@ -0,0 +1,12 @@ +/* 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/. */ + +/** + * This dictionnary holds the parameters supporting the app:// protocol. + */ +dictionary AppInfo +{ + DOMString path = ""; + boolean isCoreApp = false; +}; diff --git a/dom/webidl/AppNotificationServiceOptions.webidl b/dom/webidl/AppNotificationServiceOptions.webidl new file mode 100644 index 0000000000..f5addc92ac --- /dev/null +++ b/dom/webidl/AppNotificationServiceOptions.webidl @@ -0,0 +1,19 @@ +/* -*- 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/. + */ + +interface MozObserver; + +dictionary AppNotificationServiceOptions { + boolean textClickable = false; + DOMString manifestURL = ""; + DOMString id = ""; + DOMString dbId = ""; + DOMString dir = ""; + DOMString lang = ""; + DOMString tag = ""; + DOMString data = ""; + NotificationBehavior mozbehavior = null; +}; diff --git a/dom/webidl/ArchiveReader.webidl b/dom/webidl/ArchiveReader.webidl new file mode 100644 index 0000000000..028712c12b --- /dev/null +++ b/dom/webidl/ArchiveReader.webidl @@ -0,0 +1,16 @@ +/* -*- 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/. */ + +[Pref="dom.archivereader.enabled", + Constructor(Blob blob, optional ArchiveReaderOptions options)] +interface ArchiveReader { + ArchiveRequest getFilenames(); + ArchiveRequest getFile(DOMString filename); + ArchiveRequest getFiles(); +}; + +dictionary ArchiveReaderOptions { + DOMString encoding = "windows-1252"; // Default fallback encoding +}; diff --git a/dom/webidl/ArchiveRequest.webidl b/dom/webidl/ArchiveRequest.webidl new file mode 100644 index 0000000000..24b79cf334 --- /dev/null +++ b/dom/webidl/ArchiveRequest.webidl @@ -0,0 +1,10 @@ +/* -*- Mode: IDL; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* vim: set ts=2 et sw=2 tw=80: */ +/* 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/. */ + +[Pref="dom.archivereader.enabled"] +interface ArchiveRequest : DOMRequest { + readonly attribute ArchiveReader reader; +}; diff --git a/dom/webidl/Attr.webidl b/dom/webidl/Attr.webidl new file mode 100644 index 0000000000..c836afd9b0 --- /dev/null +++ b/dom/webidl/Attr.webidl @@ -0,0 +1,33 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/2012/WD-dom-20120105/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface Attr : Node { + readonly attribute DOMString localName; + [SetterThrows] + attribute DOMString value; + + [Constant] + readonly attribute DOMString name; + [Constant] + readonly attribute DOMString? namespaceURI; + [Constant] + readonly attribute DOMString? prefix; + + readonly attribute boolean specified; +}; + +// Mozilla extensions + +partial interface Attr { + [GetterThrows] + readonly attribute Element? ownerElement; +}; diff --git a/dom/webidl/AudioBuffer.webidl b/dom/webidl/AudioBuffer.webidl new file mode 100644 index 0000000000..ab45268f39 --- /dev/null +++ b/dom/webidl/AudioBuffer.webidl @@ -0,0 +1,32 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * https://webaudio.github.io/web-audio-api/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +[Pref="dom.webaudio.enabled"] +interface AudioBuffer { + + readonly attribute float sampleRate; + readonly attribute unsigned long length; + + // in seconds + readonly attribute double duration; + + readonly attribute unsigned long numberOfChannels; + + [Throws] + Float32Array getChannelData(unsigned long channel); + + [Throws] + void copyFromChannel(Float32Array destination, long channelNumber, optional unsigned long startInChannel = 0); + [Throws] + void copyToChannel(Float32Array source, long channelNumber, optional unsigned long startInChannel = 0); +}; + diff --git a/dom/webidl/AudioBufferSourceNode.webidl b/dom/webidl/AudioBufferSourceNode.webidl new file mode 100644 index 0000000000..f74a968ec2 --- /dev/null +++ b/dom/webidl/AudioBufferSourceNode.webidl @@ -0,0 +1,35 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * https://webaudio.github.io/web-audio-api/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +[Pref="dom.webaudio.enabled"] +interface AudioBufferSourceNode : AudioNode { + + attribute AudioBuffer? buffer; + + readonly attribute AudioParam playbackRate; + readonly attribute AudioParam detune; + + attribute boolean loop; + attribute double loopStart; + attribute double loopEnd; + + [Throws, UnsafeInPrerendering] + void start(optional double when = 0, optional double grainOffset = 0, + optional double grainDuration); + [Throws, UnsafeInPrerendering] + void stop(optional double when = 0); + + attribute EventHandler onended; +}; + +// Mozilla extensions +AudioBufferSourceNode implements AudioNodePassThrough; diff --git a/dom/webidl/AudioChannel.webidl b/dom/webidl/AudioChannel.webidl new file mode 100644 index 0000000000..6e0ccf0b93 --- /dev/null +++ b/dom/webidl/AudioChannel.webidl @@ -0,0 +1,50 @@ +/* -*- 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/. + */ + +// AudioChannels are used by: +// * HTMLMediaElement +// * AudioContext (WebAudio) +// When used, it has to throw an exception if the app tries to change the audio +// channel type without the permission (manifest file for B2G apps). +// The supported values are: +// * normal (default value) +// Automatically paused if "notification" or higher priority channel +// is played +// Use case: normal applications +// * content +// Automatically paused if "notification" or higher priority channel +// is played. Also paused if another app starts using "content" +// channel. Using this channel never affects applications using +// the "normal" channel. +// Use case: video/audio players +// * notification +// Automatically paused if "alarm" or higher priority channel is played. +// Use case: New email, incoming SMS +// * alarm +// Automatically paused if "telephony" or higher priority channel is +// played. +// User case: Alarm clock, calendar alarms +// * telephony +// Automatically paused if "ringer" or higher priority +// channel is played. +// Use case: dialer, voip +// * ringer +// Automatically paused if "publicnotification" or higher priority +// channel is played. +// Use case: dialer, voip +// * publicnotification +// Always plays in speaker, even when headphones are plugged in. +// Use case: Camera shutter sound. +enum AudioChannel { + "normal", + "content", + "notification", + "alarm", + "telephony", + "ringer", + "publicnotification", + "system" +}; diff --git a/dom/webidl/AudioChannelManager.webidl b/dom/webidl/AudioChannelManager.webidl new file mode 100644 index 0000000000..86bfd65daf --- /dev/null +++ b/dom/webidl/AudioChannelManager.webidl @@ -0,0 +1,37 @@ +/* -*- 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/. + */ + +interface AudioChannelManager : EventTarget { + /** + * Indicates whether the headphones are plugged in or not. + */ + readonly attribute boolean headphones; + + /** + * Fired when the headphones are plugged or unplugged. + * + * When the headphones are unplugged, we may start playing audio through the + * system's speakers. Similarly, when headphones are plugged in, we may + * switch audio from speakers to headphones. + * + * If audio is currently playing in this window or in one of its children, we + * will fire this event before we switch the audio output from headphones to + * speakers (or vice versa). This allows you to, for example, pause your + * window's audio when the headphones are unplugged. + */ + attribute EventHandler onheadphoneschange; + + /** + * Indicates which audio channel is used to adjust volume when pressing HW + * volume keys. + */ + attribute DOMString volumeControlChannel; + + [Pure, Cached, Throws, + Pref="dom.mozBrowserFramesEnabled", + ChromeOnly] + readonly attribute sequence<BrowserElementAudioChannel> allowedAudioChannels; +}; diff --git a/dom/webidl/AudioContext.webidl b/dom/webidl/AudioContext.webidl new file mode 100644 index 0000000000..c2f65abaf0 --- /dev/null +++ b/dom/webidl/AudioContext.webidl @@ -0,0 +1,122 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * https://webaudio.github.io/web-audio-api/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +callback DecodeSuccessCallback = void (AudioBuffer decodedData); +callback DecodeErrorCallback = void (); + +enum AudioContextState { + "suspended", + "running", + "closed" +}; + +dictionary PeriodicWaveConstraints { + boolean disableNormalization = false; +}; + +[Constructor, + Constructor(AudioChannel audioChannelType), + Pref="dom.webaudio.enabled"] +interface AudioContext : EventTarget { + + readonly attribute AudioDestinationNode destination; + readonly attribute float sampleRate; + readonly attribute double currentTime; + readonly attribute AudioListener listener; + readonly attribute AudioContextState state; + [Throws] + Promise<void> suspend(); + [Throws] + Promise<void> resume(); + [Throws] + Promise<void> close(); + attribute EventHandler onstatechange; + + [NewObject, Throws] + AudioBuffer createBuffer(unsigned long numberOfChannels, unsigned long length, float sampleRate); + + [Throws] + Promise<AudioBuffer> decodeAudioData(ArrayBuffer audioData, + optional DecodeSuccessCallback successCallback, + optional DecodeErrorCallback errorCallback); + + // AudioNode creation + [NewObject, Throws] + AudioBufferSourceNode createBufferSource(); + + [NewObject, Throws] + ConstantSourceNode createConstantSource(); + + [NewObject, Throws] + MediaStreamAudioDestinationNode createMediaStreamDestination(); + + [NewObject, Throws] + ScriptProcessorNode createScriptProcessor(optional unsigned long bufferSize = 0, + optional unsigned long numberOfInputChannels = 2, + optional unsigned long numberOfOutputChannels = 2); + + [NewObject, Throws] + StereoPannerNode createStereoPanner(); + [NewObject, Throws] + AnalyserNode createAnalyser(); + [NewObject, Throws, UnsafeInPrerendering] + MediaElementAudioSourceNode createMediaElementSource(HTMLMediaElement mediaElement); + [NewObject, Throws, UnsafeInPrerendering] + MediaStreamAudioSourceNode createMediaStreamSource(MediaStream mediaStream); + [NewObject, Throws] + GainNode createGain(); + [NewObject, Throws] + DelayNode createDelay(optional double maxDelayTime = 1); + [NewObject, Throws] + BiquadFilterNode createBiquadFilter(); + [NewObject, Throws] + IIRFilterNode createIIRFilter(sequence<double> feedforward, sequence<double> feedback); + [NewObject, Throws] + WaveShaperNode createWaveShaper(); + [NewObject, Throws] + PannerNode createPanner(); + [NewObject, Throws] + ConvolverNode createConvolver(); + + [NewObject, Throws] + ChannelSplitterNode createChannelSplitter(optional unsigned long numberOfOutputs = 6); + [NewObject, Throws] + ChannelMergerNode createChannelMerger(optional unsigned long numberOfInputs = 6); + + [NewObject, Throws] + DynamicsCompressorNode createDynamicsCompressor(); + + [NewObject, Throws] + OscillatorNode createOscillator(); + [NewObject, Throws] + PeriodicWave createPeriodicWave(Float32Array real, Float32Array imag, optional PeriodicWaveConstraints constraints); + +}; + +// Mozilla extensions +partial interface AudioContext { + // Read AudioChannel.webidl for more information about this attribute. + [Pref="media.useAudioChannelAPI"] + readonly attribute AudioChannel mozAudioChannelType; + + // These 2 events are dispatched when the AudioContext object is muted by + // the AudioChannelService. It's call 'interrupt' because when this event is + // dispatched on a HTMLMediaElement, the audio stream is paused. + [Pref="media.useAudioChannelAPI"] + attribute EventHandler onmozinterruptbegin; + + [Pref="media.useAudioChannelAPI"] + attribute EventHandler onmozinterruptend; + + // This method is for test only. + [ChromeOnly] AudioChannel testAudioChannelInAudioNodeStream(); +}; diff --git a/dom/webidl/AudioDestinationNode.webidl b/dom/webidl/AudioDestinationNode.webidl new file mode 100644 index 0000000000..e5c6db868f --- /dev/null +++ b/dom/webidl/AudioDestinationNode.webidl @@ -0,0 +1,19 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * https://webaudio.github.io/web-audio-api/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +[Pref="dom.webaudio.enabled"] +interface AudioDestinationNode : AudioNode { + + readonly attribute unsigned long maxChannelCount; + +}; + diff --git a/dom/webidl/AudioListener.webidl b/dom/webidl/AudioListener.webidl new file mode 100644 index 0000000000..8970e6b989 --- /dev/null +++ b/dom/webidl/AudioListener.webidl @@ -0,0 +1,31 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * https://webaudio.github.io/web-audio-api/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +[Pref="dom.webaudio.enabled"] +interface AudioListener { + + // same as OpenAL (default 1) + [Deprecated="PannerNodeDoppler"] + attribute double dopplerFactor; + + // in meters / second (default 343.3) + [Deprecated="PannerNodeDoppler"] + attribute double speedOfSound; + + // Uses a 3D cartesian coordinate system + void setPosition(double x, double y, double z); + void setOrientation(double x, double y, double z, double xUp, double yUp, double zUp); + [Deprecated="PannerNodeDoppler"] + void setVelocity(double x, double y, double z); + +}; + diff --git a/dom/webidl/AudioNode.webidl b/dom/webidl/AudioNode.webidl new file mode 100644 index 0000000000..d6aa577c01 --- /dev/null +++ b/dom/webidl/AudioNode.webidl @@ -0,0 +1,69 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * https://webaudio.github.io/web-audio-api/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +enum ChannelCountMode { + "max", + "clamped-max", + "explicit" +}; + +enum ChannelInterpretation { + "speakers", + "discrete" +}; + +[Pref="dom.webaudio.enabled"] +interface AudioNode : EventTarget { + + [Throws] + AudioNode connect(AudioNode destination, optional unsigned long output = 0, optional unsigned long input = 0); + [Throws] + void connect(AudioParam destination, optional unsigned long output = 0); + [Throws] + void disconnect(); + [Throws] + void disconnect(unsigned long output); + [Throws] + void disconnect(AudioNode destination); + [Throws] + void disconnect(AudioNode destination, unsigned long output); + [Throws] + void disconnect(AudioNode destination, unsigned long output, unsigned long input); + [Throws] + void disconnect(AudioParam destination); + [Throws] + void disconnect(AudioParam destination, unsigned long output); + + readonly attribute AudioContext context; + readonly attribute unsigned long numberOfInputs; + readonly attribute unsigned long numberOfOutputs; + + // Channel up-mixing and down-mixing rules for all inputs. + [SetterThrows] + attribute unsigned long channelCount; + [SetterThrows] + attribute ChannelCountMode channelCountMode; + attribute ChannelInterpretation channelInterpretation; + +}; + +// Mozilla extension +partial interface AudioNode { + [ChromeOnly] + readonly attribute unsigned long id; +}; +[NoInterfaceObject] +interface AudioNodePassThrough { + [ChromeOnly] + attribute boolean passThrough; +}; + diff --git a/dom/webidl/AudioParam.webidl b/dom/webidl/AudioParam.webidl new file mode 100644 index 0000000000..ee5514f34f --- /dev/null +++ b/dom/webidl/AudioParam.webidl @@ -0,0 +1,50 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * https://webaudio.github.io/web-audio-api/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +[Pref="dom.webaudio.enabled"] +interface AudioParam { + + attribute float value; + readonly attribute float defaultValue; + + // Parameter automation. + [Throws] + AudioParam setValueAtTime(float value, double startTime); + [Throws] + AudioParam linearRampToValueAtTime(float value, double endTime); + [Throws] + AudioParam exponentialRampToValueAtTime(float value, double endTime); + + // Exponentially approach the target value with a rate having the given time constant. + [Throws] + AudioParam setTargetAtTime(float target, double startTime, double timeConstant); + + // Sets an array of arbitrary parameter values starting at time for the given duration. + // The number of values will be scaled to fit into the desired duration. + [Throws] + AudioParam setValueCurveAtTime(Float32Array values, double startTime, double duration); + + // Cancels all scheduled parameter changes with times greater than or equal to startTime. + [Throws] + AudioParam cancelScheduledValues(double startTime); + +}; + +// Mozilla extension +partial interface AudioParam { + // The ID of the AudioNode this AudioParam belongs to. + [ChromeOnly] + readonly attribute unsigned long parentNodeId; + // The name of the AudioParam + [ChromeOnly] + readonly attribute DOMString name; +}; diff --git a/dom/webidl/AudioProcessingEvent.webidl b/dom/webidl/AudioProcessingEvent.webidl new file mode 100644 index 0000000000..8cf3d9cc22 --- /dev/null +++ b/dom/webidl/AudioProcessingEvent.webidl @@ -0,0 +1,24 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * https://webaudio.github.io/web-audio-api/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +[Pref="dom.webaudio.enabled"] +interface AudioProcessingEvent : Event { + + readonly attribute double playbackTime; + + [Throws] + readonly attribute AudioBuffer inputBuffer; + [Throws] + readonly attribute AudioBuffer outputBuffer; + +}; + diff --git a/dom/webidl/AudioStreamTrack.webidl b/dom/webidl/AudioStreamTrack.webidl new file mode 100644 index 0000000000..9fff71cedc --- /dev/null +++ b/dom/webidl/AudioStreamTrack.webidl @@ -0,0 +1,16 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://dev.w3.org/2011/webrtc/editor/getusermedia.html + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +// [Constructor(optional MediaTrackConstraints audioConstraints)] +interface AudioStreamTrack : MediaStreamTrack { +// static sequence<DOMString> getSourceIds (); +}; diff --git a/dom/webidl/AudioTrack.webidl b/dom/webidl/AudioTrack.webidl new file mode 100644 index 0000000000..e70456a372 --- /dev/null +++ b/dom/webidl/AudioTrack.webidl @@ -0,0 +1,17 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.whatwg.org/specs/web-apps/current-work/#audiotrack + */ + +[Pref="media.track.enabled"] +interface AudioTrack { + readonly attribute DOMString id; + readonly attribute DOMString kind; + readonly attribute DOMString label; + readonly attribute DOMString language; + attribute boolean enabled; +}; diff --git a/dom/webidl/AudioTrackList.webidl b/dom/webidl/AudioTrackList.webidl new file mode 100644 index 0000000000..2c229a67a2 --- /dev/null +++ b/dom/webidl/AudioTrackList.webidl @@ -0,0 +1,19 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.whatwg.org/specs/web-apps/current-work/#audiotracklist + */ + +[Pref="media.track.enabled"] +interface AudioTrackList : EventTarget { + readonly attribute unsigned long length; + getter AudioTrack (unsigned long index); + AudioTrack? getTrackById(DOMString id); + + attribute EventHandler onchange; + attribute EventHandler onaddtrack; + attribute EventHandler onremovetrack; +}; diff --git a/dom/webidl/AutocompleteErrorEvent.webidl b/dom/webidl/AutocompleteErrorEvent.webidl new file mode 100644 index 0000000000..23b8ae7392 --- /dev/null +++ b/dom/webidl/AutocompleteErrorEvent.webidl @@ -0,0 +1,23 @@ +/* -*- 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/. */ + +enum AutoCompleteErrorReason { + "", + "cancel", + "disabled", + "invalid" +}; + +[Pref="dom.forms.requestAutocomplete", + Constructor(DOMString type, optional AutocompleteErrorEventInit eventInitDict)] +interface AutocompleteErrorEvent : Event +{ + readonly attribute AutoCompleteErrorReason reason; +}; + +dictionary AutocompleteErrorEventInit : EventInit +{ + AutoCompleteErrorReason reason = ""; +}; diff --git a/dom/webidl/AutocompleteInfo.webidl b/dom/webidl/AutocompleteInfo.webidl new file mode 100644 index 0000000000..ad32ff6d32 --- /dev/null +++ b/dom/webidl/AutocompleteInfo.webidl @@ -0,0 +1,17 @@ +/* -*- 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/. + */ + +/** + * This dictionary is used for the input, textarea and select element's + * getAutocompleteInfo method. + */ + +dictionary AutocompleteInfo { + DOMString section = ""; + DOMString addressType = ""; + DOMString contactType = ""; + DOMString fieldName = ""; +}; diff --git a/dom/webidl/BarProp.webidl b/dom/webidl/BarProp.webidl new file mode 100644 index 0000000000..76e5edeb51 --- /dev/null +++ b/dom/webidl/BarProp.webidl @@ -0,0 +1,11 @@ +/* -*- 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/. + */ + +interface BarProp +{ + [Throws] + attribute boolean visible; +}; diff --git a/dom/webidl/BaseKeyframeTypes.webidl b/dom/webidl/BaseKeyframeTypes.webidl new file mode 100644 index 0000000000..f0b0e68b51 --- /dev/null +++ b/dom/webidl/BaseKeyframeTypes.webidl @@ -0,0 +1,48 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * https://w3c.github.io/web-animations/#the-compositeoperation-enumeration + * https://w3c.github.io/web-animations/#dictdef-basepropertyindexedkeyframe + * https://w3c.github.io/web-animations/#dictdef-basekeyframe + * https://w3c.github.io/web-animations/#dictdef-basecomputedkeyframe + * + * Copyright © 2016 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +enum CompositeOperation { "replace", "add", "accumulate" }; + +// The following dictionary types are not referred to by other .webidl files, +// but we use it for manual JS->IDL and IDL->JS conversions in +// KeyframeEffectReadOnly's implementation. + +dictionary BasePropertyIndexedKeyframe { + DOMString easing = "linear"; + CompositeOperation composite; +}; + +dictionary BaseKeyframe { + double? offset = null; + DOMString easing = "linear"; + CompositeOperation composite; + + // Non-standard extensions + + // Member to allow testing when StyleAnimationValue::ComputeValues fails. + // + // Note that we currently only apply this to shorthand properties since + // it's easier to annotate shorthand property values and because we have + // only ever observed ComputeValues failing on shorthand values. + // + // Bug 1216844 should remove this member since after that bug is fixed we will + // have a well-defined behavior to use when animation endpoints are not + // available. + [ChromeOnly] boolean simulateComputeValuesFailure = false; +}; + +dictionary BaseComputedKeyframe : BaseKeyframe { + double computedOffset; +}; diff --git a/dom/webidl/BatteryManager.webidl b/dom/webidl/BatteryManager.webidl new file mode 100644 index 0000000000..a964f3b0b0 --- /dev/null +++ b/dom/webidl/BatteryManager.webidl @@ -0,0 +1,23 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/battery-status/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface BatteryManager : EventTarget { + readonly attribute boolean charging; + readonly attribute unrestricted double chargingTime; + readonly attribute unrestricted double dischargingTime; + readonly attribute double level; + + attribute EventHandler onchargingchange; + attribute EventHandler onchargingtimechange; + attribute EventHandler ondischargingtimechange; + attribute EventHandler onlevelchange; +}; diff --git a/dom/webidl/BeforeAfterKeyboardEvent.webidl b/dom/webidl/BeforeAfterKeyboardEvent.webidl new file mode 100644 index 0000000000..32c582f177 --- /dev/null +++ b/dom/webidl/BeforeAfterKeyboardEvent.webidl @@ -0,0 +1,24 @@ +/* -*- 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/. + */ + +[Constructor(DOMString typeArg, + optional BeforeAfterKeyboardEventInit eventInitDict), + Pref="dom.beforeAfterKeyboardEvent.enabled", + ChromeOnly] +interface BeforeAfterKeyboardEvent : KeyboardEvent +{ + // The valid value of embeddedCancelled is: + // - "mozbrowserbeforekeydown": null + // - "mozbrowserbeforekeyup": null + // - "mozbrowserafterkeydown": true/false + // - "mozbrowserafterkeyup": true/false + readonly attribute boolean? embeddedCancelled; +}; + +dictionary BeforeAfterKeyboardEventInit : KeyboardEventInit +{ + boolean? embeddedCancelled = null; +}; diff --git a/dom/webidl/BeforeUnloadEvent.webidl b/dom/webidl/BeforeUnloadEvent.webidl new file mode 100644 index 0000000000..e64e1b2c29 --- /dev/null +++ b/dom/webidl/BeforeUnloadEvent.webidl @@ -0,0 +1,12 @@ +/* -*- 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/. + * + * For more information on this interface, please see + * http://www.whatwg.org/specs/web-apps/current-work/#beforeunloadevent + */ + +interface BeforeUnloadEvent : Event { + attribute DOMString returnValue; +}; diff --git a/dom/webidl/BiquadFilterNode.webidl b/dom/webidl/BiquadFilterNode.webidl new file mode 100644 index 0000000000..7a9efb77de --- /dev/null +++ b/dom/webidl/BiquadFilterNode.webidl @@ -0,0 +1,41 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * https://webaudio.github.io/web-audio-api/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +enum BiquadFilterType { + "lowpass", + "highpass", + "bandpass", + "lowshelf", + "highshelf", + "peaking", + "notch", + "allpass" +}; + +[Pref="dom.webaudio.enabled"] +interface BiquadFilterNode : AudioNode { + + attribute BiquadFilterType type; + readonly attribute AudioParam frequency; // in Hertz + readonly attribute AudioParam detune; // in Cents + readonly attribute AudioParam Q; // Quality factor + readonly attribute AudioParam gain; // in Decibels + + void getFrequencyResponse(Float32Array frequencyHz, + Float32Array magResponse, + Float32Array phaseResponse); + +}; + +// Mozilla extension +BiquadFilterNode implements AudioNodePassThrough; + diff --git a/dom/webidl/Blob.webidl b/dom/webidl/Blob.webidl new file mode 100644 index 0000000000..4df66630db --- /dev/null +++ b/dom/webidl/Blob.webidl @@ -0,0 +1,42 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://dev.w3.org/2006/webapi/FileAPI/#blob + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +typedef (ArrayBuffer or ArrayBufferView or Blob or USVString) BlobPart; + +[Constructor(optional sequence<BlobPart> blobParts, + optional BlobPropertyBag options), + Exposed=(Window,Worker)] +interface Blob { + + [GetterThrows] + readonly attribute unsigned long long size; + + readonly attribute DOMString type; + + // readonly attribute boolean isClosed; TODO bug 1048321 + + //slice Blob into byte-ranged chunks + + [Throws] + Blob slice([Clamp] optional long long start, + [Clamp] optional long long end, + optional DOMString contentType = ""); + + // void close(); TODO bug 1048325 +}; + +enum EndingTypes { "transparent", "native" }; + +dictionary BlobPropertyBag { + DOMString type = ""; + EndingTypes endings = "transparent"; +}; diff --git a/dom/webidl/BlobEvent.webidl b/dom/webidl/BlobEvent.webidl new file mode 100644 index 0000000000..8d0418701e --- /dev/null +++ b/dom/webidl/BlobEvent.webidl @@ -0,0 +1,16 @@ +/* -*- 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/. + */ + +[Constructor(DOMString type, optional BlobEventInit eventInitDict)] +interface BlobEvent : Event +{ + readonly attribute Blob? data; +}; + +dictionary BlobEventInit : EventInit +{ + Blob? data = null; +}; diff --git a/dom/webidl/BoxObject.webidl b/dom/webidl/BoxObject.webidl new file mode 100644 index 0000000000..8bebd6c9eb --- /dev/null +++ b/dom/webidl/BoxObject.webidl @@ -0,0 +1,33 @@ +/* -*- 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/. + */ + +[Func="IsChromeOrXBL"] +interface BoxObject { + readonly attribute Element? element; + + readonly attribute long x; + readonly attribute long y; + [Throws] + readonly attribute long screenX; + [Throws] + readonly attribute long screenY; + readonly attribute long width; + readonly attribute long height; + + nsISupports? getPropertyAsSupports(DOMString propertyName); + void setPropertyAsSupports(DOMString propertyName, nsISupports value); + [Throws] + DOMString? getProperty(DOMString propertyName); + void setProperty(DOMString propertyName, DOMString propertyValue); + void removeProperty(DOMString propertyName); + + // for stepping through content in the expanded dom with box-ordinal-group order + readonly attribute Element? parentBox; + readonly attribute Element? firstChild; + readonly attribute Element? lastChild; + readonly attribute Element? nextSibling; + readonly attribute Element? previousSibling; +}; diff --git a/dom/webidl/BroadcastChannel.webidl b/dom/webidl/BroadcastChannel.webidl new file mode 100644 index 0000000000..70be23522f --- /dev/null +++ b/dom/webidl/BroadcastChannel.webidl @@ -0,0 +1,21 @@ +/* -*- 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/. + * + * For more information on this interface, please see + * http://www.whatwg.org/specs/web-apps/current-work/multipage/web-messaging.html#broadcasting-to-other-browsing-contexts + */ + +[Constructor(DOMString channel), + Exposed=(Window,Worker)] +interface BroadcastChannel : EventTarget { + readonly attribute DOMString name; + + [Throws] + void postMessage(any message); + + void close(); + + attribute EventHandler onmessage; +}; diff --git a/dom/webidl/BrowserElement.webidl b/dom/webidl/BrowserElement.webidl new file mode 100644 index 0000000000..2516d7da51 --- /dev/null +++ b/dom/webidl/BrowserElement.webidl @@ -0,0 +1,178 @@ +/* -*- 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/. + */ + +callback BrowserElementNextPaintEventCallback = void (); + +enum BrowserFindCaseSensitivity { "case-sensitive", "case-insensitive" }; +enum BrowserFindDirection { "forward", "backward" }; + +dictionary BrowserElementDownloadOptions { + DOMString? filename; + DOMString? referrer; +}; + +dictionary BrowserElementExecuteScriptOptions { + DOMString? url; + DOMString? origin; +}; + +[NoInterfaceObject] +interface BrowserElement { +}; + +BrowserElement implements BrowserElementCommon; +BrowserElement implements BrowserElementPrivileged; + +[NoInterfaceObject] +interface BrowserElementCommon { + [Throws, + Pref="dom.mozBrowserFramesEnabled", + ChromeOnly] + void setVisible(boolean visible); + + [Throws, + Pref="dom.mozBrowserFramesEnabled", + ChromeOnly] + DOMRequest getVisible(); + + [Throws, + Pref="dom.mozBrowserFramesEnabled", + ChromeOnly] + void setActive(boolean active); + + [Throws, + Pref="dom.mozBrowserFramesEnabled", + ChromeOnly] + boolean getActive(); + + [Throws, + Pref="dom.mozBrowserFramesEnabled", + ChromeOnly] + void addNextPaintListener(BrowserElementNextPaintEventCallback listener); + + [Throws, + Pref="dom.mozBrowserFramesEnabled", + ChromeOnly] + void removeNextPaintListener(BrowserElementNextPaintEventCallback listener); +}; + +[NoInterfaceObject] +interface BrowserElementPrivileged { + [Throws, + Pref="dom.mozBrowserFramesEnabled", + ChromeOnly] + void sendMouseEvent(DOMString type, + unsigned long x, + unsigned long y, + unsigned long button, + unsigned long clickCount, + unsigned long modifiers); + + [Throws, + Pref="dom.mozBrowserFramesEnabled", + Func="TouchEvent::PrefEnabled", + ChromeOnly] + void sendTouchEvent(DOMString type, + sequence<unsigned long> identifiers, + sequence<long> x, + sequence<long> y, + sequence<unsigned long> rx, + sequence<unsigned long> ry, + sequence<float> rotationAngles, + sequence<float> forces, + unsigned long count, + unsigned long modifiers); + + [Throws, + Pref="dom.mozBrowserFramesEnabled", + ChromeOnly] + void goBack(); + + [Throws, + Pref="dom.mozBrowserFramesEnabled", + ChromeOnly] + void goForward(); + + [Throws, + Pref="dom.mozBrowserFramesEnabled", + ChromeOnly] + void reload(optional boolean hardReload = false); + + [Throws, + Pref="dom.mozBrowserFramesEnabled", + ChromeOnly] + void stop(); + + [Throws, + Pref="dom.mozBrowserFramesEnabled", + ChromeOnly] + DOMRequest download(DOMString url, + optional BrowserElementDownloadOptions options); + + [Throws, + Pref="dom.mozBrowserFramesEnabled", + ChromeOnly] + DOMRequest purgeHistory(); + + [Throws, + Pref="dom.mozBrowserFramesEnabled", + ChromeOnly] + DOMRequest getScreenshot([EnforceRange] unsigned long width, + [EnforceRange] unsigned long height, + optional DOMString mimeType=""); + + [Throws, + Pref="dom.mozBrowserFramesEnabled", + ChromeOnly] + void zoom(float zoom); + + [Throws, + Pref="dom.mozBrowserFramesEnabled", + ChromeOnly] + DOMRequest getCanGoBack(); + + [Throws, + Pref="dom.mozBrowserFramesEnabled", + ChromeOnly] + DOMRequest getCanGoForward(); + + [Throws, + Pref="dom.mozBrowserFramesEnabled", + ChromeOnly] + DOMRequest getContentDimensions(); + + [Throws, + Pref="dom.mozBrowserFramesEnabled", + ChromeOnly] + DOMRequest setInputMethodActive(boolean isActive); + + [Throws, + Pref="dom.mozBrowserFramesEnabled", + ChromeOnly] + void findAll(DOMString searchString, BrowserFindCaseSensitivity caseSensitivity); + + [Throws, + Pref="dom.mozBrowserFramesEnabled", + ChromeOnly] + void findNext(BrowserFindDirection direction); + + [Throws, + Pref="dom.mozBrowserFramesEnabled", + ChromeOnly] + void clearMatch(); + + [Throws, + Pref="dom.mozBrowserFramesEnabled", + ChromeOnly] + DOMRequest executeScript(DOMString script, + optional BrowserElementExecuteScriptOptions options); + + [Throws, + Pref="dom.mozBrowserFramesEnabled", + ChromeOnly] + DOMRequest getWebManifest(); + +}; diff --git a/dom/webidl/BrowserElementAudioChannel.webidl b/dom/webidl/BrowserElementAudioChannel.webidl new file mode 100644 index 0000000000..55dbe3fb48 --- /dev/null +++ b/dom/webidl/BrowserElementAudioChannel.webidl @@ -0,0 +1,77 @@ +/* -*- 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/. + */ + +[Pref="dom.mozBrowserFramesEnabled", + ChromeOnly] +interface BrowserElementAudioChannel : EventTarget { + readonly attribute AudioChannel name; + + // This event is dispatched when this audiochannel is actually in used by the + // app or one of the sub-iframes. + attribute EventHandler onactivestatechanged; + + [Throws] + DOMRequest getVolume(); + + [Throws] + DOMRequest setVolume(float aVolume); + + [Throws] + DOMRequest getMuted(); + + [Throws] + DOMRequest setMuted(boolean aMuted); + + [Throws] + DOMRequest isActive(); +}; + +partial interface BrowserElementPrivileged { + [Pure, Cached, Throws, + Pref="dom.mozBrowserFramesEnabled", + ChromeOnly] + readonly attribute sequence<BrowserElementAudioChannel> allowedAudioChannels; + + /** + * Mutes all audio in this browser. + */ + [Throws, + Pref="dom.mozBrowserFramesEnabled", + ChromeOnly] + void mute(); + + /** + * Unmutes all audio in this browser. + */ + [Throws, + Pref="dom.mozBrowserFramesEnabled", + ChromeOnly] + void unmute(); + + /** + * Obtains whether or not the browser is muted. + */ + [Throws, + Pref="dom.mozBrowserFramesEnabled", + ChromeOnly] + DOMRequest getMuted(); + + /** + * Sets the volume for the browser. + */ + [Throws, + Pref="dom.mozBrowserFramesEnabled", + ChromeOnly] + void setVolume(float volume); + + /** + * Gets the volume for the browser. + */ + [Throws, + Pref="dom.mozBrowserFramesEnabled", + ChromeOnly] + DOMRequest getVolume(); +}; diff --git a/dom/webidl/BrowserElementDictionaries.webidl b/dom/webidl/BrowserElementDictionaries.webidl new file mode 100644 index 0000000000..400e402532 --- /dev/null +++ b/dom/webidl/BrowserElementDictionaries.webidl @@ -0,0 +1,20 @@ +/* -*- 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/. + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +dictionary OpenWindowEventDetail { + DOMString url = ""; + DOMString name = ""; + DOMString features = ""; + Node? frameElement = null; +}; + +dictionary DOMWindowResizeEventDetail { + long width = 0; + long height = 0; +}; diff --git a/dom/webidl/BrowserElementProxy.webidl b/dom/webidl/BrowserElementProxy.webidl new file mode 100644 index 0000000000..6f6fb5ebed --- /dev/null +++ b/dom/webidl/BrowserElementProxy.webidl @@ -0,0 +1,15 @@ +/* -*- 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/. + */ + +[Constructor, + JSImplementation="@mozilla.org/dom/browser-element-proxy;1", + NavigatorProperty="mozBrowserElementProxy", + Pref="dom.mozBrowserFramesEnabled", + ChromeOnly] +interface BrowserElementProxy : EventTarget { +}; +BrowserElementProxy implements BrowserElementCommon; +BrowserElementProxy implements BrowserElementPrivileged; diff --git a/dom/webidl/BrowserFeedWriter.webidl b/dom/webidl/BrowserFeedWriter.webidl new file mode 100644 index 0000000000..d756a8837e --- /dev/null +++ b/dom/webidl/BrowserFeedWriter.webidl @@ -0,0 +1,20 @@ +/* -*- 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/. + */ + +[JSImplementation="@mozilla.org/browser/feeds/result-writer;1", + Func="mozilla::FeedWriterEnabled::IsEnabled", + Constructor] +interface BrowserFeedWriter { + /** + * Writes the feed content, assumes that the feed writer is initialized. + */ + void writeContent(); + + /** + * Uninitialize the feed writer. + */ + void close(); +}; diff --git a/dom/webidl/CDATASection.webidl b/dom/webidl/CDATASection.webidl new file mode 100644 index 0000000000..895dae0894 --- /dev/null +++ b/dom/webidl/CDATASection.webidl @@ -0,0 +1,8 @@ +/* -*- 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/. + */ + +interface CDATASection : Text { +}; diff --git a/dom/webidl/CSPDictionaries.webidl b/dom/webidl/CSPDictionaries.webidl new file mode 100644 index 0000000000..54008f13ab --- /dev/null +++ b/dom/webidl/CSPDictionaries.webidl @@ -0,0 +1,37 @@ +/* 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/. */ + +/** + * Dictionary used to display CSP info. + */ + +dictionary CSP { + boolean report-only = false; + + sequence<DOMString> default-src; + sequence<DOMString> script-src; + sequence<DOMString> object-src; + sequence<DOMString> style-src; + sequence<DOMString> img-src; + sequence<DOMString> media-src; + sequence<DOMString> frame-src; + sequence<DOMString> font-src; + sequence<DOMString> connect-src; + sequence<DOMString> report-uri; + sequence<DOMString> frame-ancestors; + // sequence<DOMString> reflected-xss; // not supported in Firefox + sequence<DOMString> base-uri; + sequence<DOMString> form-action; + sequence<DOMString> referrer; + sequence<DOMString> manifest-src; + sequence<DOMString> upgrade-insecure-requests; + sequence<DOMString> child-src; + sequence<DOMString> block-all-mixed-content; + sequence<DOMString> require-sri-for; + sequence<DOMString> sandbox; +}; + +dictionary CSPPolicies { + sequence<CSP> csp-policies; +}; diff --git a/dom/webidl/CSPReport.webidl b/dom/webidl/CSPReport.webidl new file mode 100644 index 0000000000..390898c83d --- /dev/null +++ b/dom/webidl/CSPReport.webidl @@ -0,0 +1,23 @@ +/* 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/. */ + +/** + * This dictionary holds the parameters used to send + * CSP reports in JSON format. + */ + +dictionary CSPReportProperties { + DOMString document-uri = ""; + DOMString referrer = ""; + DOMString blocked-uri = ""; + DOMString violated-directive = ""; + DOMString original-policy= ""; + DOMString source-file; + DOMString script-sample; + long line-number; +}; + +dictionary CSPReport { + CSPReportProperties csp-report; +}; diff --git a/dom/webidl/CSS.webidl b/dom/webidl/CSS.webidl new file mode 100644 index 0000000000..b5cdab2d18 --- /dev/null +++ b/dom/webidl/CSS.webidl @@ -0,0 +1,24 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://dev.w3.org/csswg/css3-conditional/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface CSS { + [Throws] + static boolean supports(DOMString property, DOMString value); + + [Throws] + static boolean supports(DOMString conditionText); +}; + +// http://dev.w3.org/csswg/cssom/#the-css.escape%28%29-method +partial interface CSS { + static DOMString escape(DOMString ident); +}; diff --git a/dom/webidl/CSS2Properties.webidl.in b/dom/webidl/CSS2Properties.webidl.in new file mode 100644 index 0000000000..62603b229a --- /dev/null +++ b/dom/webidl/CSS2Properties.webidl.in @@ -0,0 +1,3 @@ +interface CSS2Properties : CSSStyleDeclaration { +${props} +}; diff --git a/dom/webidl/CSSAnimation.webidl b/dom/webidl/CSSAnimation.webidl new file mode 100644 index 0000000000..8799bfadbe --- /dev/null +++ b/dom/webidl/CSSAnimation.webidl @@ -0,0 +1,17 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://dev.w3.org/csswg/css-animations-2/#the-CSSAnimation-interface + * + * Copyright © 2015 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +[Func="nsDocument::IsWebAnimationsEnabled", + HeaderFile="nsAnimationManager.h"] +interface CSSAnimation : Animation { + [Constant] readonly attribute DOMString animationName; +}; diff --git a/dom/webidl/CSSLexer.webidl b/dom/webidl/CSSLexer.webidl new file mode 100644 index 0000000000..86fbfcfffe --- /dev/null +++ b/dom/webidl/CSSLexer.webidl @@ -0,0 +1,168 @@ +/* -*- 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/. */ + +// The possible values for CSSToken.tokenType. +enum CSSTokenType { + // Whitespace. + "whitespace", + // A CSS comment. + "comment", + // An identifier. |text| holds the identifier text. + "ident", + // A function token. |text| holds the function name. Note that the + // function token includes (i.e., consumes) the "(" -- but this is + // not included in |text|. + "function", + // "@word". |text| holds "word", without the "@". + "at", + // "#word". |text| holds "word", without the "#". + "id", + // "#word". ID is used when "word" would have been a valid IDENT + // token without the "#"; otherwise, HASH is used. + "hash", + // A number. + "number", + // A dimensioned number. + "dimension", + // A percentage. + "percentage", + // A string. + "string", + // A "bad string". This can only be returned when a string is + // unterminated at EOF. (However, currently the lexer returns + // ordinary STRING tokens in this situation.) + "bad_string", + // A URL. |text| holds the URL. + "url", + // A "bad URL". This is a URL that is unterminated at EOF. |text| + // holds the URL. + "bad_url", + // A "symbol" is any one-character symbol. This corresponds to the + // DELIM token in the CSS specification. + "symbol", + // The "~=" token. + "includes", + // The "|=" token. + "dashmatch", + // The "^=" token. + "beginsmatch", + // The "$=" token. + "endsmatch", + // The "*=" token. + "containsmatch", + // A unicode-range token. This is currently not fully represented + // by CSSToken. + "urange", + // HTML comment delimiters, either "<!--" or "-->". Note that each + // is emitted as a separate token, and the intervening text is lexed + // as normal; whereas ordinary CSS comments are lexed as a unit. + "htmlcomment" +}; + +dictionary CSSToken { + // The token type. + CSSTokenType tokenType = "whitespace"; + + // Offset of the first character of the token. + unsigned long startOffset = 0; + // Offset of the character after the final character of the token. + // This is chosen so that the offsets can be passed to |substring| + // to yield the exact contents of the token. + unsigned long endOffset = 0; + + // If the token is a number, percentage, or dimension, this holds + // the value. This is not present for other token types. + double number; + // If the token is a number, percentage, or dimension, this is true + // iff the number had an explicit sign. This is not present for + // other token types. + boolean hasSign; + // If the token is a number, percentage, or dimension, this is true + // iff the number was specified as an integer. This is not present + // for other token types. + boolean isInteger; + + // Text associated with the token. This is not present for all + // token types. In particular it is: + // + // Token type Meaning + // =============================== + // ident The identifier. + // function The function name. Note that the "(" is part + // of the token but is not present in |text|. + // at The word. + // id The word. + // hash The word. + // dimension The dimension. + // string The string contents after escape processing. + // bad_string Ditto. + // url The URL after escape processing. + // bad_url Ditto. + // symbol The symbol text. + DOMString text; +}; + +/** + * CSSLexer is an interface to the CSS lexer. It tokenizes an + * input stream and returns CSS tokens. + * + * @see inIDOMUtils.getCSSLexer to create an instance of the lexer. + */ +[ChromeOnly] +interface CSSLexer +{ + /** + * The line number of the most recently returned token. Line + * numbers are 0-based. + */ + readonly attribute unsigned long lineNumber; + + /** + * The column number of the most recently returned token. Column + * numbers are 0-based. + */ + readonly attribute unsigned long columnNumber; + + /** + * When EOF is reached, the last token might be unterminated in some + * ways. This method takes an input string and appends the needed + * terminators. In particular: + * + * 1. If EOF occurs mid-string, this will append the correct quote. + * 2. If EOF occurs in a url token, this will append the close paren. + * 3. If EOF occurs in a comment this will append the comment closer. + * + * A trailing backslash might also have been present in the input + * string. This is handled in different ways, depending on the + * context and arguments. + * + * If preserveBackslash is true, then the existing backslash at the + * end of inputString is preserved, and a new backslash is appended. + * That is, the input |\| is transformed to |\\|, and the + * input |'\| is transformed to |'\\'|. + * + * Otherwise, preserveBackslash is false: + * If the backslash appears in a string context, then the trailing + * backslash is dropped from inputString. That is, |"\| is + * transformed to |""|. + * If the backslash appears outside of a string context, then + * U+FFFD is appended. That is, |\| is transformed to a string + * with two characters: backslash followed by U+FFFD. + * + * Passing false for preserveBackslash makes the result conform to + * the CSS Syntax specification. However, passing true may give + * somewhat more intuitive behavior. + * + * @param inputString the input string + * @param preserveBackslash how to handle trailing backslashes + * @return the input string with the termination characters appended + */ + DOMString performEOFFixup(DOMString inputString, boolean preserveBackslash); + + /** + * Return the next token, or null at EOF. + */ + CSSToken? nextToken(); +}; diff --git a/dom/webidl/CSSPrimitiveValue.webidl b/dom/webidl/CSSPrimitiveValue.webidl new file mode 100644 index 0000000000..87141fee23 --- /dev/null +++ b/dom/webidl/CSSPrimitiveValue.webidl @@ -0,0 +1,56 @@ +/* -*- 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/. + */ + +interface Counter; + +interface CSSPrimitiveValue : CSSValue { + + // UnitTypes + const unsigned short CSS_UNKNOWN = 0; + const unsigned short CSS_NUMBER = 1; + const unsigned short CSS_PERCENTAGE = 2; + const unsigned short CSS_EMS = 3; + const unsigned short CSS_EXS = 4; + const unsigned short CSS_PX = 5; + const unsigned short CSS_CM = 6; + const unsigned short CSS_MM = 7; + const unsigned short CSS_IN = 8; + const unsigned short CSS_PT = 9; + const unsigned short CSS_PC = 10; + const unsigned short CSS_DEG = 11; + const unsigned short CSS_RAD = 12; + const unsigned short CSS_GRAD = 13; + const unsigned short CSS_MS = 14; + const unsigned short CSS_S = 15; + const unsigned short CSS_HZ = 16; + const unsigned short CSS_KHZ = 17; + const unsigned short CSS_DIMENSION = 18; + const unsigned short CSS_STRING = 19; + const unsigned short CSS_URI = 20; + const unsigned short CSS_IDENT = 21; + const unsigned short CSS_ATTR = 22; + const unsigned short CSS_COUNTER = 23; + const unsigned short CSS_RECT = 24; + const unsigned short CSS_RGBCOLOR = 25; + + readonly attribute unsigned short primitiveType; + [Throws] + void setFloatValue(unsigned short unitType, + float floatValue); + [Throws] + float getFloatValue(unsigned short unitType); + [Throws] + void setStringValue(unsigned short stringType, + DOMString stringValue); + [Throws] + DOMString getStringValue(); + [Throws] + Counter getCounterValue(); + [Throws] + Rect getRectValue(); + [Throws] + RGBColor getRGBColorValue(); +}; diff --git a/dom/webidl/CSSPseudoElement.webidl b/dom/webidl/CSSPseudoElement.webidl new file mode 100644 index 0000000000..96d191e3af --- /dev/null +++ b/dom/webidl/CSSPseudoElement.webidl @@ -0,0 +1,25 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * https://drafts.csswg.org/css-pseudo/#CSSPseudoElement-interface + * https://drafts.csswg.org/cssom/#pseudoelement + * + * Copyright © 2015 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +// Both CSSOM and CSS Pseudo-Elements 4 provide contradictory definitions for +// this interface. +// What we implement here is a minimal subset of the two definitions which we +// ship behind a pref until the specification issues have been resolved. +[Func="nsDocument::IsWebAnimationsEnabled"] +interface CSSPseudoElement { + readonly attribute DOMString type; + readonly attribute Element parentElement; +}; + +// https://w3c.github.io/web-animations/#extensions-to-the-pseudoelement-interface +CSSPseudoElement implements Animatable; diff --git a/dom/webidl/CSSRuleList.webidl b/dom/webidl/CSSRuleList.webidl new file mode 100644 index 0000000000..c4faec1489 --- /dev/null +++ b/dom/webidl/CSSRuleList.webidl @@ -0,0 +1,10 @@ +/* -*- 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/. + */ + +interface CSSRuleList { + readonly attribute unsigned long length; + getter CSSRule? item(unsigned long index); +}; diff --git a/dom/webidl/CSSStyleDeclaration.webidl b/dom/webidl/CSSStyleDeclaration.webidl new file mode 100644 index 0000000000..d9b2511ded --- /dev/null +++ b/dom/webidl/CSSStyleDeclaration.webidl @@ -0,0 +1,37 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://dev.w3.org/csswg/cssom/ + */ + +interface CSSRule; + +interface CSSStyleDeclaration { + [SetterThrows] + attribute DOMString cssText; + + readonly attribute unsigned long length; + getter DOMString item(unsigned long index); + + [Throws] + DOMString getPropertyValue(DOMString property); + // Mozilla extension, sort of + [Throws] + CSSValue? getPropertyCSSValue(DOMString property); + DOMString getPropertyPriority(DOMString property); + [Throws] + void setProperty(DOMString property, [TreatNullAs=EmptyString] DOMString value, [TreatNullAs=EmptyString] optional DOMString priority = ""); + [Throws] + DOMString removeProperty(DOMString property); + + readonly attribute CSSRule? parentRule; +}; + +// Mozilla extensions +partial interface CSSStyleDeclaration { + [ChromeOnly,Throws] + DOMString getAuthoredPropertyValue(DOMString property); +}; diff --git a/dom/webidl/CSSStyleSheet.webidl b/dom/webidl/CSSStyleSheet.webidl new file mode 100644 index 0000000000..48fb89db12 --- /dev/null +++ b/dom/webidl/CSSStyleSheet.webidl @@ -0,0 +1,29 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://dev.w3.org/csswg/cssom/ + */ + +interface CSSRule; + +enum CSSStyleSheetParsingMode { + "author", + "user", + "agent" +}; + +interface CSSStyleSheet : StyleSheet { + [Pure] + readonly attribute CSSRule? ownerRule; + [Throws, NeedsSubjectPrincipal] + readonly attribute CSSRuleList cssRules; + [ChromeOnly, BinaryName="parsingModeDOM"] + readonly attribute CSSStyleSheetParsingMode parsingMode; + [Throws, NeedsSubjectPrincipal] + unsigned long insertRule(DOMString rule, unsigned long index); + [Throws, NeedsSubjectPrincipal] + void deleteRule(unsigned long index); +}; diff --git a/dom/webidl/CSSTransition.webidl b/dom/webidl/CSSTransition.webidl new file mode 100644 index 0000000000..44ffb79f28 --- /dev/null +++ b/dom/webidl/CSSTransition.webidl @@ -0,0 +1,17 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://dev.w3.org/csswg/css-transitions-2/#the-CSSTransition-interface + * + * Copyright © 2015 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +[Func="nsDocument::IsWebAnimationsEnabled", + HeaderFile="nsTransitionManager.h"] +interface CSSTransition : Animation { + [Constant] readonly attribute DOMString transitionProperty; +}; diff --git a/dom/webidl/CSSValue.webidl b/dom/webidl/CSSValue.webidl new file mode 100644 index 0000000000..03bcb0a7e4 --- /dev/null +++ b/dom/webidl/CSSValue.webidl @@ -0,0 +1,19 @@ +/* -*- 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/. + */ + +interface CSSValue { + + // UnitTypes + const unsigned short CSS_INHERIT = 0; + const unsigned short CSS_PRIMITIVE_VALUE = 1; + const unsigned short CSS_VALUE_LIST = 2; + const unsigned short CSS_CUSTOM = 3; + + [Throws] + attribute DOMString cssText; + + readonly attribute unsigned short cssValueType; +}; diff --git a/dom/webidl/CSSValueList.webidl b/dom/webidl/CSSValueList.webidl new file mode 100644 index 0000000000..d2a14b5fb6 --- /dev/null +++ b/dom/webidl/CSSValueList.webidl @@ -0,0 +1,10 @@ +/* -*- 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/. + */ + +interface CSSValueList : CSSValue { + readonly attribute unsigned long length; + getter CSSValue? item(unsigned long index); +}; diff --git a/dom/webidl/Cache.webidl b/dom/webidl/Cache.webidl new file mode 100644 index 0000000000..b2c698bb07 --- /dev/null +++ b/dom/webidl/Cache.webidl @@ -0,0 +1,44 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://slightlyoff.github.io/ServiceWorker/spec/service_worker/index.html + * + */ + +// https://slightlyoff.github.io/ServiceWorker/spec/service_worker/index.html#cache + +[Exposed=(Window,Worker), + Func="mozilla::dom::cache::Cache::PrefEnabled"] +interface Cache { + [NewObject] + Promise<Response> match(RequestInfo request, optional CacheQueryOptions options); + [NewObject] + Promise<sequence<Response>> matchAll(optional RequestInfo request, optional CacheQueryOptions options); + [NewObject] + Promise<void> add(RequestInfo request); + [NewObject] + Promise<void> addAll(sequence<RequestInfo> requests); + [NewObject] + Promise<void> put(RequestInfo request, Response response); + [NewObject] + Promise<boolean> delete(RequestInfo request, optional CacheQueryOptions options); + [NewObject] + Promise<sequence<Request>> keys(optional RequestInfo request, optional CacheQueryOptions options); +}; + +dictionary CacheQueryOptions { + boolean ignoreSearch = false; + boolean ignoreMethod = false; + boolean ignoreVary = false; + DOMString cacheName; +}; + +dictionary CacheBatchOperation { + DOMString type; + Request request; + Response response; + CacheQueryOptions options; +}; diff --git a/dom/webidl/CacheStorage.webidl b/dom/webidl/CacheStorage.webidl new file mode 100644 index 0000000000..cf5bad44b2 --- /dev/null +++ b/dom/webidl/CacheStorage.webidl @@ -0,0 +1,34 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://slightlyoff.github.io/ServiceWorker/spec/service_worker/index.html + * + */ + +// https://slightlyoff.github.io/ServiceWorker/spec/service_worker/index.html#cache-storage + +interface Principal; + +[Exposed=(Window,Worker), + ChromeConstructor(CacheStorageNamespace namespace, Principal principal), + Func="mozilla::dom::cache::CacheStorage::PrefEnabled"] +interface CacheStorage { + [NewObject] + Promise<Response> match(RequestInfo request, optional CacheQueryOptions options); + [NewObject] + Promise<boolean> has(DOMString cacheName); + [NewObject] + Promise<Cache> open(DOMString cacheName); + [NewObject] + Promise<boolean> delete(DOMString cacheName); + [NewObject] + Promise<sequence<DOMString>> keys(); +}; + +// chrome-only, gecko specific extension +enum CacheStorageNamespace { + "content", "chrome" +}; diff --git a/dom/webidl/CanvasCaptureMediaStream.webidl b/dom/webidl/CanvasCaptureMediaStream.webidl new file mode 100644 index 0000000000..98b1adbf63 --- /dev/null +++ b/dom/webidl/CanvasCaptureMediaStream.webidl @@ -0,0 +1,17 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * https://w3c.github.io/mediacapture-fromelement/index.html + * + * Copyright © 2015 W3C® (MIT, ERCIM, Keio, Beihang), All Rights Reserved. + * W3C liability, trademark and document use rules apply. + */ + +[Pref="canvas.capturestream.enabled"] +interface CanvasCaptureMediaStream : MediaStream { + readonly attribute HTMLCanvasElement canvas; + void requestFrame(); +}; diff --git a/dom/webidl/CanvasRenderingContext2D.webidl b/dom/webidl/CanvasRenderingContext2D.webidl new file mode 100644 index 0000000000..38a30f9e39 --- /dev/null +++ b/dom/webidl/CanvasRenderingContext2D.webidl @@ -0,0 +1,337 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.whatwg.org/specs/web-apps/current-work/ + * + * © Copyright 2004-2011 Apple Computer, Inc., Mozilla Foundation, and + * Opera Software ASA. You are granted a license to use, reproduce + * and create derivative works of this document. + */ + +enum CanvasWindingRule { "nonzero", "evenodd" }; + +dictionary ContextAttributes2D { + // whether or not we're planning to do a lot of readback operations + boolean willReadFrequently = false; + // signal if the canvas contains an alpha channel + boolean alpha = true; +}; + +dictionary HitRegionOptions { + Path2D? path = null; + DOMString id = ""; + Element? control = null; +}; + +typedef (HTMLImageElement or + HTMLCanvasElement or + HTMLVideoElement or + ImageBitmap) CanvasImageSource; + +interface CanvasRenderingContext2D { + + // back-reference to the canvas. Might be null if we're not + // associated with a canvas. + readonly attribute HTMLCanvasElement? canvas; + + // state + void save(); // push state on state stack + void restore(); // pop state stack and restore state + + // transformations (default transform is the identity matrix) +// NOT IMPLEMENTED attribute SVGMatrix currentTransform; + [Throws, LenientFloat] + void scale(double x, double y); + [Throws, LenientFloat] + void rotate(double angle); + [Throws, LenientFloat] + void translate(double x, double y); + [Throws, LenientFloat] + void transform(double a, double b, double c, double d, double e, double f); + [Throws, LenientFloat] + void setTransform(double a, double b, double c, double d, double e, double f); + [Throws] + void resetTransform(); + + // compositing + attribute unrestricted double globalAlpha; // (default 1.0) + [Throws] + attribute DOMString globalCompositeOperation; // (default source-over) + + // colors and styles (see also the CanvasDrawingStyles interface) + attribute (DOMString or CanvasGradient or CanvasPattern) strokeStyle; // (default black) + attribute (DOMString or CanvasGradient or CanvasPattern) fillStyle; // (default black) + [NewObject] + CanvasGradient createLinearGradient(double x0, double y0, double x1, double y1); + [NewObject, Throws] + CanvasGradient createRadialGradient(double x0, double y0, double r0, double x1, double y1, double r1); + [NewObject, Throws] + CanvasPattern? createPattern(CanvasImageSource image, [TreatNullAs=EmptyString] DOMString repetition); + + // shadows + [LenientFloat] + attribute double shadowOffsetX; // (default 0) + [LenientFloat] + attribute double shadowOffsetY; // (default 0) + [LenientFloat] + attribute double shadowBlur; // (default 0) + attribute DOMString shadowColor; // (default transparent black) + + [Pref="canvas.filters.enabled", SetterThrows] + attribute DOMString filter; // (default empty string = no filter) + + // rects + [LenientFloat] + void clearRect(double x, double y, double w, double h); + [LenientFloat] + void fillRect(double x, double y, double w, double h); + [LenientFloat] + void strokeRect(double x, double y, double w, double h); + + // path API (see also CanvasPathMethods) + void beginPath(); + void fill(optional CanvasWindingRule winding = "nonzero"); + void fill(Path2D path, optional CanvasWindingRule winding = "nonzero"); + void stroke(); + void stroke(Path2D path); + [Pref="canvas.focusring.enabled", Throws] void drawFocusIfNeeded(Element element); +// NOT IMPLEMENTED void drawSystemFocusRing(Path path, HTMLElement element); + [Pref="canvas.customfocusring.enabled"] boolean drawCustomFocusRing(Element element); +// NOT IMPLEMENTED boolean drawCustomFocusRing(Path path, HTMLElement element); +// NOT IMPLEMENTED void scrollPathIntoView(); +// NOT IMPLEMENTED void scrollPathIntoView(Path path); + void clip(optional CanvasWindingRule winding = "nonzero"); + void clip(Path2D path, optional CanvasWindingRule winding = "nonzero"); +// NOT IMPLEMENTED void resetClip(); + boolean isPointInPath(unrestricted double x, unrestricted double y, optional CanvasWindingRule winding = "nonzero"); + boolean isPointInPath(Path2D path, unrestricted double x, unrestricted double y, optional CanvasWindingRule winding = "nonzero"); + boolean isPointInStroke(double x, double y); + boolean isPointInStroke(Path2D path, unrestricted double x, unrestricted double y); + + // text (see also the CanvasDrawingStyles interface) + [Throws, LenientFloat] + void fillText(DOMString text, double x, double y, optional double maxWidth); + [Throws, LenientFloat] + void strokeText(DOMString text, double x, double y, optional double maxWidth); + [NewObject, Throws] + TextMetrics measureText(DOMString text); + + // drawing images + attribute boolean imageSmoothingEnabled; + + [Throws, LenientFloat] + void drawImage(CanvasImageSource image, double dx, double dy); + [Throws, LenientFloat] + void drawImage(CanvasImageSource image, double dx, double dy, double dw, double dh); + [Throws, LenientFloat] + void drawImage(CanvasImageSource image, double sx, double sy, double sw, double sh, double dx, double dy, double dw, double dh); + + // hit regions + [Pref="canvas.hitregions.enabled", Throws] void addHitRegion(optional HitRegionOptions options); + [Pref="canvas.hitregions.enabled"] void removeHitRegion(DOMString id); + [Pref="canvas.hitregions.enabled"] void clearHitRegions(); + + // pixel manipulation + [NewObject, Throws] + ImageData createImageData(double sw, double sh); + [NewObject, Throws] + ImageData createImageData(ImageData imagedata); + [NewObject, Throws] + ImageData getImageData(double sx, double sy, double sw, double sh); + [Throws] + void putImageData(ImageData imagedata, double dx, double dy); + [Throws] + void putImageData(ImageData imagedata, double dx, double dy, double dirtyX, double dirtyY, double dirtyWidth, double dirtyHeight); + + // Mozilla-specific stuff + // FIXME Bug 768048 mozCurrentTransform/mozCurrentTransformInverse should return a WebIDL array. + [Throws] + attribute object mozCurrentTransform; // [ m11, m12, m21, m22, dx, dy ], i.e. row major + [Throws] + attribute object mozCurrentTransformInverse; + + [SetterThrows] + attribute DOMString mozTextStyle; + + // image smoothing mode -- if disabled, images won't be smoothed + // if scaled. + [Deprecated="PrefixedImageSmoothingEnabled"] + attribute boolean mozImageSmoothingEnabled; + + // Show the caret if appropriate when drawing + [ChromeOnly] + const unsigned long DRAWWINDOW_DRAW_CARET = 0x01; + // Don't flush pending layout notifications that could otherwise + // be batched up + [ChromeOnly] + const unsigned long DRAWWINDOW_DO_NOT_FLUSH = 0x02; + // Draw scrollbars and scroll the viewport if they are present + [ChromeOnly] + const unsigned long DRAWWINDOW_DRAW_VIEW = 0x04; + // Use the widget layer manager if available. This means hardware + // acceleration may be used, but it might actually be slower or + // lower quality than normal. It will however more accurately reflect + // the pixels rendered to the screen. + [ChromeOnly] + const unsigned long DRAWWINDOW_USE_WIDGET_LAYERS = 0x08; + // Don't synchronously decode images - draw what we have + [ChromeOnly] + const unsigned long DRAWWINDOW_ASYNC_DECODE_IMAGES = 0x10; + + /** + * Renders a region of a window into the canvas. The contents of + * the window's viewport are rendered, ignoring viewport clipping + * and scrolling. + * + * @param x + * @param y + * @param w + * @param h specify the area of the window to render, in CSS + * pixels. + * + * @param backgroundColor the canvas is filled with this color + * before we render the window into it. This color may be + * transparent/translucent. It is given as a CSS color string + * (e.g., rgb() or rgba()). + * + * @param flags Used to better control the drawWindow call. + * Flags can be ORed together. + * + * Of course, the rendering obeys the current scale, transform and + * globalAlpha values. + * + * Hints: + * -- If 'rgba(0,0,0,0)' is used for the background color, the + * drawing will be transparent wherever the window is transparent. + * -- Top-level browsed documents are usually not transparent + * because the user's background-color preference is applied, + * but IFRAMEs are transparent if the page doesn't set a background. + * -- If an opaque color is used for the background color, rendering + * will be faster because we won't have to compute the window's + * transparency. + * + * This API cannot currently be used by Web content. It is chrome + * only. + */ + [Throws, ChromeOnly] + void drawWindow(Window window, double x, double y, double w, double h, + DOMString bgColor, optional unsigned long flags = 0); + [Throws, ChromeOnly] + void asyncDrawXULElement(XULElement elem, double x, double y, double w, + double h, DOMString bgColor, + optional unsigned long flags = 0); + + /** + * This causes a context that is currently using a hardware-accelerated + * backend to fallback to a software one. All state should be preserved. + */ + [ChromeOnly] + void demote(); +}; +CanvasRenderingContext2D implements CanvasDrawingStyles; +CanvasRenderingContext2D implements CanvasPathMethods; + +[NoInterfaceObject] +interface CanvasDrawingStyles { + // line caps/joins + [LenientFloat] + attribute double lineWidth; // (default 1) + attribute DOMString lineCap; // "butt", "round", "square" (default "butt") + [GetterThrows] + attribute DOMString lineJoin; // "round", "bevel", "miter" (default "miter") + [LenientFloat] + attribute double miterLimit; // (default 10) + + // dashed lines + [LenientFloat, Throws] void setLineDash(sequence<double> segments); // default empty + sequence<double> getLineDash(); + [LenientFloat] attribute double lineDashOffset; + + // text + [SetterThrows] + attribute DOMString font; // (default 10px sans-serif) + attribute DOMString textAlign; // "start", "end", "left", "right", "center" (default: "start") + attribute DOMString textBaseline; // "top", "hanging", "middle", "alphabetic", "ideographic", "bottom" (default: "alphabetic") +}; + +[NoInterfaceObject] +interface CanvasPathMethods { + // shared path API methods + void closePath(); + [LenientFloat] + void moveTo(double x, double y); + [LenientFloat] + void lineTo(double x, double y); + [LenientFloat] + void quadraticCurveTo(double cpx, double cpy, double x, double y); + + [LenientFloat] + void bezierCurveTo(double cp1x, double cp1y, double cp2x, double cp2y, double x, double y); + + [Throws, LenientFloat] + void arcTo(double x1, double y1, double x2, double y2, double radius); +// NOT IMPLEMENTED [LenientFloat] void arcTo(double x1, double y1, double x2, double y2, double radiusX, double radiusY, double rotation); + + [LenientFloat] + void rect(double x, double y, double w, double h); + + [Throws, LenientFloat] + void arc(double x, double y, double radius, double startAngle, double endAngle, optional boolean anticlockwise = false); + + [Throws, LenientFloat] + void ellipse(double x, double y, double radiusX, double radiusY, double rotation, double startAngle, double endAngle, optional boolean anticlockwise = false); +}; + +interface CanvasGradient { + // opaque object + [Throws] + // addColorStop should take a double + void addColorStop(float offset, DOMString color); +}; + +interface CanvasPattern { + // opaque object + // [Throws, LenientFloat] - could not do this overload because of bug 1020975 + // void setTransform(double a, double b, double c, double d, double e, double f); + + // No throw necessary here - SVGMatrix is always good. + void setTransform(SVGMatrix matrix); +}; + +interface TextMetrics { + + // x-direction + readonly attribute double width; // advance width + + /* + * NOT IMPLEMENTED YET + + readonly attribute double actualBoundingBoxLeft; + readonly attribute double actualBoundingBoxRight; + + // y-direction + readonly attribute double fontBoundingBoxAscent; + readonly attribute double fontBoundingBoxDescent; + readonly attribute double actualBoundingBoxAscent; + readonly attribute double actualBoundingBoxDescent; + readonly attribute double emHeightAscent; + readonly attribute double emHeightDescent; + readonly attribute double hangingBaseline; + readonly attribute double alphabeticBaseline; + readonly attribute double ideographicBaseline; + */ + +}; + +[Pref="canvas.path.enabled", + Constructor, + Constructor(Path2D other), + Constructor(DOMString pathString)] +interface Path2D +{ + void addPath(Path2D path, optional SVGMatrix transformation); +}; +Path2D implements CanvasPathMethods; diff --git a/dom/webidl/CaretPosition.webidl b/dom/webidl/CaretPosition.webidl new file mode 100644 index 0000000000..5907b40d50 --- /dev/null +++ b/dom/webidl/CaretPosition.webidl @@ -0,0 +1,20 @@ +/* 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/. */ + +interface CaretPosition { + + /** + * The offsetNode could potentially be null due to anonymous content. + */ + readonly attribute Node? offsetNode; + readonly attribute unsigned long offset; + +}; + +/** + * Gecko specific methods and properties for CaretPosition. + */ +partial interface CaretPosition { + DOMRect? getClientRect(); +}; diff --git a/dom/webidl/CaretStateChangedEvent.webidl b/dom/webidl/CaretStateChangedEvent.webidl new file mode 100644 index 0000000000..39edd4d8f8 --- /dev/null +++ b/dom/webidl/CaretStateChangedEvent.webidl @@ -0,0 +1,39 @@ +/* -*- 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/. + */ + +enum CaretChangedReason { + "visibilitychange", + "updateposition", + "longpressonemptycontent", + "taponcaret", + "presscaret", + "releasecaret", + "scroll" +}; + +dictionary CaretStateChangedEventInit : EventInit { + boolean collapsed = true; + DOMRectReadOnly? boundingClientRect = null; + CaretChangedReason reason = "visibilitychange"; + boolean caretVisible = false; + boolean caretVisuallyVisible = false; + boolean selectionVisible = false; + boolean selectionEditable = false; + DOMString selectedTextContent = ""; +}; + +[Constructor(DOMString type, optional CaretStateChangedEventInit eventInit), + ChromeOnly] +interface CaretStateChangedEvent : Event { + readonly attribute boolean collapsed; + readonly attribute DOMRectReadOnly? boundingClientRect; + readonly attribute CaretChangedReason reason; + readonly attribute boolean caretVisible; + readonly attribute boolean caretVisuallyVisible; + readonly attribute boolean selectionVisible; + readonly attribute boolean selectionEditable; + readonly attribute DOMString selectedTextContent; +}; diff --git a/dom/webidl/ChannelMergerNode.webidl b/dom/webidl/ChannelMergerNode.webidl new file mode 100644 index 0000000000..a1a7148f2c --- /dev/null +++ b/dom/webidl/ChannelMergerNode.webidl @@ -0,0 +1,17 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * https://webaudio.github.io/web-audio-api/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +[Pref="dom.webaudio.enabled"] +interface ChannelMergerNode : AudioNode { + +}; + diff --git a/dom/webidl/ChannelSplitterNode.webidl b/dom/webidl/ChannelSplitterNode.webidl new file mode 100644 index 0000000000..c7c0be4983 --- /dev/null +++ b/dom/webidl/ChannelSplitterNode.webidl @@ -0,0 +1,17 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * https://webaudio.github.io/web-audio-api/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +[Pref="dom.webaudio.enabled"] +interface ChannelSplitterNode : AudioNode { + +}; + diff --git a/dom/webidl/CharacterData.webidl b/dom/webidl/CharacterData.webidl new file mode 100644 index 0000000000..8d6a214e58 --- /dev/null +++ b/dom/webidl/CharacterData.webidl @@ -0,0 +1,31 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://dom.spec.whatwg.org/#characterdata + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface CharacterData : Node { + [TreatNullAs=EmptyString, Pure, SetterThrows] + attribute DOMString data; + [Pure] + readonly attribute unsigned long length; + [Throws] + DOMString substringData(unsigned long offset, unsigned long count); + [Throws] + void appendData(DOMString data); + [Throws] + void insertData(unsigned long offset, DOMString data); + [Throws] + void deleteData(unsigned long offset, unsigned long count); + [Throws] + void replaceData(unsigned long offset, unsigned long count, DOMString data); +}; + +CharacterData implements ChildNode; +CharacterData implements NonDocumentTypeChildNode; diff --git a/dom/webidl/CheckerboardReportService.webidl b/dom/webidl/CheckerboardReportService.webidl new file mode 100644 index 0000000000..d5a624e0fa --- /dev/null +++ b/dom/webidl/CheckerboardReportService.webidl @@ -0,0 +1,58 @@ +/* -*- 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/. + */ + +/* + * This file declares data structures used to communicate checkerboard reports + * from C++ code to about:checkerboard (see bug 1238042). These dictionaries + * are NOT exposed to standard web content. + */ + +enum CheckerboardReason { + "severe", + "recent" +}; + +// Individual checkerboard report. Contains fields for the severity of the +// checkerboard event, the timestamp at which it was reported, the detailed +// log of the event, and the reason this report was saved (currently either +// "severe" or "recent"). +dictionary CheckerboardReport { + unsigned long severity; + DOMTimeStamp timestamp; // milliseconds since epoch + DOMString log; + CheckerboardReason reason; +}; + +// The guard function only allows creation of this interface on the +// about:checkerboard page, and only if it's in the parent process. +[Func="mozilla::dom::CheckerboardReportService::IsEnabled", + Constructor] +interface CheckerboardReportService { + /** + * Gets the available checkerboard reports. + */ + sequence<CheckerboardReport> getReports(); + + /** + * Gets the state of the apz.record_checkerboarding pref. + */ + boolean isRecordingEnabled(); + + /** + * Sets the state of the apz.record_checkerboarding pref. + */ + void setRecordingEnabled(boolean aEnabled); + + /** + * Flush any in-progress checkerboard reports. Since this happens + * asynchronously, the caller may register an observer with the observer + * service to be notified when this operation is complete. The observer should + * listen for the topic "APZ:FlushActiveCheckerboard:Done". Upon receiving + * this notification, the caller may call getReports() to obtain the flushed + * reports, along with any other reports that are available. + */ + void flushActiveReports(); +}; diff --git a/dom/webidl/ChildNode.webidl b/dom/webidl/ChildNode.webidl new file mode 100644 index 0000000000..fcf3880592 --- /dev/null +++ b/dom/webidl/ChildNode.webidl @@ -0,0 +1,28 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://dom.spec.whatwg.org/#interface-childnode + */ + +[NoInterfaceObject] +interface ChildNode { + [Throws, Unscopable] + void before((Node or DOMString)... nodes); + [Throws, Unscopable] + void after((Node or DOMString)... nodes); + [Throws, Unscopable] + void replaceWith((Node or DOMString)... nodes); + [Unscopable] + void remove(); +}; + +[NoInterfaceObject] +interface NonDocumentTypeChildNode { + [Pure] + readonly attribute Element? previousElementSibling; + [Pure] + readonly attribute Element? nextElementSibling; +}; diff --git a/dom/webidl/ChromeNodeList.webidl b/dom/webidl/ChromeNodeList.webidl new file mode 100644 index 0000000000..3f062f2a3b --- /dev/null +++ b/dom/webidl/ChromeNodeList.webidl @@ -0,0 +1,13 @@ +/* -*- 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/. + */ + +[Constructor, Func="IsChromeOrXBL"] +interface ChromeNodeList : NodeList { + [Throws] + void append(Node aNode); + [Throws] + void remove(Node aNode); +}; diff --git a/dom/webidl/ChromeUtils.webidl b/dom/webidl/ChromeUtils.webidl new file mode 100644 index 0000000000..a66590e84d --- /dev/null +++ b/dom/webidl/ChromeUtils.webidl @@ -0,0 +1,92 @@ +/* -*- 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/. + */ + +/** + * A collection of static utility methods that are only exposed to Chrome. This + * interface is not exposed in workers, while ThreadSafeChromeUtils is. + */ +[ChromeOnly, Exposed=(Window,System)] +interface ChromeUtils : ThreadSafeChromeUtils { + /** + * A helper that converts OriginAttributesDictionary to a opaque suffix string. + * + * @param originAttrs The originAttributes from the caller. + */ + static ByteString + originAttributesToSuffix(optional OriginAttributesDictionary originAttrs); + + /** + * Returns true if the members of |originAttrs| match the provided members + * of |pattern|. + * + * @param originAttrs The originAttributes under consideration. + * @param pattern The pattern to use for matching. + */ + static boolean + originAttributesMatchPattern(optional OriginAttributesDictionary originAttrs, + optional OriginAttributesPatternDictionary pattern); + + /** + * Returns an OriginAttributesDictionary with values from the |origin| suffix + * and unspecified attributes added and assigned default values. + * + * @param origin The origin URI to create from. + * @returns An OriginAttributesDictionary with values from + * the origin suffix and unspecified attributes + * added and assigned default values. + */ + [Throws] + static OriginAttributesDictionary + createOriginAttributesFromOrigin(DOMString origin); + + /** + * Returns an OriginAttributesDictionary that is a copy of |originAttrs| with + * unspecified attributes added and assigned default values. + * + * @param originAttrs The origin attributes to copy. + * @returns An OriginAttributesDictionary copy of |originAttrs| + * with unspecified attributes added and assigned + * default values. + */ + static OriginAttributesDictionary + fillNonDefaultOriginAttributes(optional OriginAttributesDictionary originAttrs); + + /** + * Returns true if the 2 OriginAttributes are equal. + */ + static boolean + isOriginAttributesEqual(optional OriginAttributesDictionary aA, + optional OriginAttributesDictionary aB); +}; + +/** + * Used by principals and the script security manager to represent origin + * attributes. The first dictionary is designed to contain the full set of + * OriginAttributes, the second is used for pattern-matching (i.e. does this + * OriginAttributesDictionary match the non-empty attributes in this pattern). + * + * IMPORTANT: If you add any members here, you need to do the following: + * (1) Add them to both dictionaries. + * (2) Update the methods on mozilla::OriginAttributes, including equality, + * serialization, deserialization, and inheritance. + * (3) Update the methods on mozilla::OriginAttributesPattern, including matching. + */ +dictionary OriginAttributesDictionary { + unsigned long appId = 0; + unsigned long userContextId = 0; + boolean inIsolatedMozBrowser = false; + DOMString addonId = ""; + unsigned long privateBrowsingId = 0; + DOMString firstPartyDomain = ""; +}; +dictionary OriginAttributesPatternDictionary { + unsigned long appId; + unsigned long userContextId; + boolean inIsolatedMozBrowser; + DOMString addonId; + unsigned long privateBrowsingId; + DOMString firstPartyDomain; +}; diff --git a/dom/webidl/Client.webidl b/dom/webidl/Client.webidl new file mode 100644 index 0000000000..3e79c6a635 --- /dev/null +++ b/dom/webidl/Client.webidl @@ -0,0 +1,38 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://slightlyoff.github.io/ServiceWorker/spec/service_worker/index.html + * + */ + +[Exposed=ServiceWorker] +interface Client { + readonly attribute USVString url; + readonly attribute FrameType frameType; + readonly attribute DOMString id; + + [Throws] + void postMessage(any message, optional sequence<Transferable> transfer); +}; + +[Exposed=ServiceWorker] +interface WindowClient : Client { + readonly attribute VisibilityState visibilityState; + readonly attribute boolean focused; + + [Throws, NewObject] + Promise<WindowClient> focus(); + + [Throws, NewObject] + Promise<WindowClient> navigate(USVString url); +}; + +enum FrameType { + "auxiliary", + "top-level", + "nested", + "none" +}; diff --git a/dom/webidl/Clients.webidl b/dom/webidl/Clients.webidl new file mode 100644 index 0000000000..ebe7bf8f22 --- /dev/null +++ b/dom/webidl/Clients.webidl @@ -0,0 +1,36 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://slightlyoff.github.io/ServiceWorker/spec/service_worker/index.html + * + */ + +[Exposed=ServiceWorker] +interface Clients { + // The objects returned will be new instances every time + [NewObject] + Promise<any> get(DOMString id); + [NewObject] + Promise<sequence<Client>> matchAll(optional ClientQueryOptions options); + [NewObject, + Func="mozilla::dom::ServiceWorkerGlobalScope::OpenWindowEnabled"] + Promise<WindowClient?> openWindow(USVString url); + [NewObject] + Promise<void> claim(); +}; + +dictionary ClientQueryOptions { + boolean includeUncontrolled = false; + ClientType type = "window"; +}; + +enum ClientType { + "window", + "worker", + "sharedworker", + "all" +}; + diff --git a/dom/webidl/ClipboardEvent.webidl b/dom/webidl/ClipboardEvent.webidl new file mode 100644 index 0000000000..8fe8a4935b --- /dev/null +++ b/dom/webidl/ClipboardEvent.webidl @@ -0,0 +1,23 @@ +/* -*- 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/. + * + * For more information on this interface please see + * http://dev.w3.org/2006/webapi/clipops/#x5-clipboard-event-interfaces + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +[Constructor(DOMString type, optional ClipboardEventInit eventInitDict)] +interface ClipboardEvent : Event +{ + readonly attribute DataTransfer? clipboardData; +}; + +dictionary ClipboardEventInit : EventInit +{ + DOMString data = ""; + DOMString dataType = ""; +}; diff --git a/dom/webidl/CloseEvent.webidl b/dom/webidl/CloseEvent.webidl new file mode 100644 index 0000000000..946fdbebda --- /dev/null +++ b/dom/webidl/CloseEvent.webidl @@ -0,0 +1,26 @@ +/* -*- 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/. + * + * The nsIDOMCloseEvent interface is the interface to the event + * close on a WebSocket object. + * + * For more information on this interface, please see + * http://www.whatwg.org/specs/web-apps/current-work/multipage/network.html#closeevent + */ + +[Constructor(DOMString type, optional CloseEventInit eventInitDict),LegacyEventInit] +interface CloseEvent : Event +{ + readonly attribute boolean wasClean; + readonly attribute unsigned short code; + readonly attribute DOMString reason; +}; + +dictionary CloseEventInit : EventInit +{ + boolean wasClean = false; + unsigned short code = 0; + DOMString reason = ""; +}; diff --git a/dom/webidl/CommandEvent.webidl b/dom/webidl/CommandEvent.webidl new file mode 100644 index 0000000000..8c16e856c3 --- /dev/null +++ b/dom/webidl/CommandEvent.webidl @@ -0,0 +1,14 @@ +/* -*- 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/. + */ + +interface CommandEvent : Event { + readonly attribute DOMString? command; + + void initCommandEvent(DOMString type, + boolean canBubble, + boolean cancelable, + DOMString? command); +}; diff --git a/dom/webidl/Comment.webidl b/dom/webidl/Comment.webidl new file mode 100644 index 0000000000..023335f166 --- /dev/null +++ b/dom/webidl/Comment.webidl @@ -0,0 +1,15 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://dom.spec.whatwg.org/#comment + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +[Constructor(optional DOMString data = "")] +interface Comment : CharacterData { +}; diff --git a/dom/webidl/CompositionEvent.webidl b/dom/webidl/CompositionEvent.webidl new file mode 100644 index 0000000000..c293683cea --- /dev/null +++ b/dom/webidl/CompositionEvent.webidl @@ -0,0 +1,33 @@ +/* -*- 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/. + * + * http://dev.w3.org/2006/webapi/DOM-Level-3-Events/html/DOM3-Events.html#events-CompositionEvent + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface CompositionEvent : UIEvent +{ + readonly attribute DOMString? data; + readonly attribute DOMString locale; + + /** + * ranges is trying to expose TextRangeArray in Gecko so a + * js-plugin couble be able to know the clauses information + */ + [ChromeOnly,Cached,Pure] + readonly attribute sequence<TextClause> ranges; +}; + +partial interface CompositionEvent +{ + void initCompositionEvent(DOMString typeArg, + boolean canBubbleArg, + boolean cancelableArg, + Window? viewArg, + DOMString? dataArg, + DOMString localeArg); +}; diff --git a/dom/webidl/Console.webidl b/dom/webidl/Console.webidl new file mode 100644 index 0000000000..2e8d6b1cff --- /dev/null +++ b/dom/webidl/Console.webidl @@ -0,0 +1,109 @@ +/* -*- Mode: IDL; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* vim: set ts=2 et sw=2 tw=80: */ +/* 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/. */ + +[Exposed=(Window,Worker,WorkerDebugger,Worklet), + ClassString="Console", + ProtoObjectHack] +namespace console { + void log(any... data); + void info(any... data); + void warn(any... data); + void error(any... data); + void _exception(any... data); + void debug(any... data); + void table(any... data); + void trace(); + void dir(any... data); + void dirxml(any... data); + void group(any... data); + void groupCollapsed(any... data); + void groupEnd(any... data); + void time(optional any time); + void timeEnd(optional any time); + void timeStamp(optional any data); + void clear(any... data); + + void profile(any... data); + void profileEnd(any... data); + + void assert(boolean condition, any... data); + void count(any... data); + + // No-op methods for compatibility with other browsers. + [BinaryName="noopMethod"] + void markTimeline(); + [BinaryName="noopMethod"] + void timeline(); + [BinaryName="noopMethod"] + void timelineEnd(); + + [ChromeOnly] + const boolean IS_NATIVE_CONSOLE = true; +}; + +// This is used to propagate console events to the observers. +dictionary ConsoleEvent { + (unsigned long long or DOMString) ID; + (unsigned long long or DOMString) innerID; + any originAttributes = null; + DOMString level = ""; + DOMString filename = ""; + unsigned long lineNumber = 0; + unsigned long columnNumber = 0; + DOMString functionName = ""; + double timeStamp = 0; + sequence<any> arguments; + sequence<DOMString?> styles; + boolean private = false; + // stacktrace is handled via a getter in some cases so we can construct it + // lazily. Note that we're not making this whole thing an interface because + // consumers expect to see own properties on it, which would mean making the + // props unforgeable, which means lots of JSFunction allocations. Maybe we + // should fix those consumers, of course.... + // sequence<ConsoleStackEntry> stacktrace; + DOMString groupName = ""; + any timer = null; + any counter = null; +}; + +// Event for profile operations +dictionary ConsoleProfileEvent { + DOMString action = ""; + sequence<any> arguments; +}; + +// This dictionary is used to manage stack trace data. +dictionary ConsoleStackEntry { + DOMString filename = ""; + unsigned long lineNumber = 0; + unsigned long columnNumber = 0; + DOMString functionName = ""; + unsigned long language = 0; + DOMString? asyncCause; +}; + +dictionary ConsoleTimerStart { + DOMString name = ""; + double started = 0; +}; + +dictionary ConsoleTimerEnd { + DOMString name = ""; + double duration = 0; +}; + +dictionary ConsoleTimerError { + DOMString error = "maxTimersExceeded"; +}; + +dictionary ConsoleCounter { + DOMString label = ""; + unsigned long count = 0; +}; + +dictionary ConsoleCounterError { + DOMString error = "maxCountersExceeded"; +}; diff --git a/dom/webidl/ConstantSourceNode.webidl b/dom/webidl/ConstantSourceNode.webidl new file mode 100644 index 0000000000..eabdc304c3 --- /dev/null +++ b/dom/webidl/ConstantSourceNode.webidl @@ -0,0 +1,26 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * https://webaudio.github.io/web-audio-api/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +dictionary ConstantSourceOptions { + float offset = 1; +}; + +[Pref="dom.webaudio.enabled", + Constructor(AudioContext context, optional ConstantSourceOptions options)] +interface ConstantSourceNode : AudioNode { + readonly attribute AudioParam offset; + attribute EventHandler onended; + [Throws, UnsafeInPrerendering] + void start (optional double when = 0); + [Throws, UnsafeInPrerendering] + void stop (optional double when = 0); +}; diff --git a/dom/webidl/ContainerBoxObject.webidl b/dom/webidl/ContainerBoxObject.webidl new file mode 100644 index 0000000000..f2dd9ffa57 --- /dev/null +++ b/dom/webidl/ContainerBoxObject.webidl @@ -0,0 +1,12 @@ + +/* -*- 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/. + */ + +[NoInterfaceObject] +interface ContainerBoxObject : BoxObject { + [ChromeOnly] + readonly attribute nsIDocShell? docShell; +}; diff --git a/dom/webidl/ConvolverNode.webidl b/dom/webidl/ConvolverNode.webidl new file mode 100644 index 0000000000..b49af04002 --- /dev/null +++ b/dom/webidl/ConvolverNode.webidl @@ -0,0 +1,24 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * https://webaudio.github.io/web-audio-api/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +[Pref="dom.webaudio.enabled"] +interface ConvolverNode : AudioNode { + + [SetterThrows] + attribute AudioBuffer? buffer; + attribute boolean normalize; + +}; + +// Mozilla extension +ConvolverNode implements AudioNodePassThrough; + diff --git a/dom/webidl/Coordinates.webidl b/dom/webidl/Coordinates.webidl new file mode 100644 index 0000000000..840782f749 --- /dev/null +++ b/dom/webidl/Coordinates.webidl @@ -0,0 +1,22 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/geolocation-API + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +[NoInterfaceObject] +interface Coordinates { + readonly attribute double latitude; + readonly attribute double longitude; + readonly attribute double? altitude; + readonly attribute double accuracy; + readonly attribute double? altitudeAccuracy; + readonly attribute double? heading; + readonly attribute double? speed; +}; diff --git a/dom/webidl/CreateOfferRequest.webidl b/dom/webidl/CreateOfferRequest.webidl new file mode 100644 index 0000000000..134fe33fa2 --- /dev/null +++ b/dom/webidl/CreateOfferRequest.webidl @@ -0,0 +1,16 @@ +/* -*- 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/. + * + * This is an internal IDL file + */ + +[ChromeOnly, + JSImplementation="@mozilla.org/dom/createofferrequest;1"] +interface CreateOfferRequest { + readonly attribute unsigned long long windowID; + readonly attribute unsigned long long innerWindowID; + readonly attribute DOMString callID; + readonly attribute boolean isSecure; +}; diff --git a/dom/webidl/Crypto.webidl b/dom/webidl/Crypto.webidl new file mode 100644 index 0000000000..31574a219c --- /dev/null +++ b/dom/webidl/Crypto.webidl @@ -0,0 +1,21 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * https://dvcs.w3.org/hg/webcrypto-api/raw-file/tip/spec/Overview.html#crypto-interface + */ + +[NoInterfaceObject, Exposed=(Window,Worker)] +interface GlobalCrypto { + [Throws] readonly attribute Crypto crypto; +}; + +[Exposed=(Window,Worker)] +interface Crypto { + readonly attribute SubtleCrypto subtle; + + [Throws] + ArrayBufferView getRandomValues(ArrayBufferView array); +}; diff --git a/dom/webidl/CustomElementRegistry.webidl b/dom/webidl/CustomElementRegistry.webidl new file mode 100644 index 0000000000..dff6121743 --- /dev/null +++ b/dom/webidl/CustomElementRegistry.webidl @@ -0,0 +1,19 @@ +/* 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://html.spec.whatwg.org/#dom-window-customelements +[Func="CustomElementRegistry::IsCustomElementEnabled"] +interface CustomElementRegistry { + [Throws] + void define(DOMString name, Function functionConstructor, + optional ElementDefinitionOptions options); + any get(DOMString name); + [Throws] + Promise<void> whenDefined(DOMString name); +}; + +dictionary ElementDefinitionOptions { + DOMString extends; +}; + diff --git a/dom/webidl/CustomEvent.webidl b/dom/webidl/CustomEvent.webidl new file mode 100644 index 0000000000..299a41ec09 --- /dev/null +++ b/dom/webidl/CustomEvent.webidl @@ -0,0 +1,30 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/2012/WD-dom-20120105/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +[Constructor(DOMString type, optional CustomEventInit eventInitDict), + Exposed=(Window, Worker)] +interface CustomEvent : Event +{ + readonly attribute any detail; + + // initCustomEvent is a Gecko specific deprecated method. + [Throws] + void initCustomEvent(DOMString type, + boolean canBubble, + boolean cancelable, + any detail); +}; + +dictionary CustomEventInit : EventInit +{ + any detail = null; +}; diff --git a/dom/webidl/DOMCursor.webidl b/dom/webidl/DOMCursor.webidl new file mode 100644 index 0000000000..f5d0447ea8 --- /dev/null +++ b/dom/webidl/DOMCursor.webidl @@ -0,0 +1,13 @@ +/* -*- 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/. */ + +[Exposed=(Window,Worker)] +interface DOMCursor : EventTarget { + readonly attribute boolean done; + [Throws] + void continue(); +}; + +DOMCursor implements DOMRequestShared; diff --git a/dom/webidl/DOMError.webidl b/dom/webidl/DOMError.webidl new file mode 100644 index 0000000000..bd4a7b39d2 --- /dev/null +++ b/dom/webidl/DOMError.webidl @@ -0,0 +1,21 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://dom.spec.whatwg.org/#domerror + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +[Constructor(DOMString name, optional DOMString message = ""), + Exposed=(Window,Worker,System)] +interface DOMError { + [Constant] + readonly attribute DOMString name; + + [Constant] + readonly attribute DOMString message; +}; diff --git a/dom/webidl/DOMException.webidl b/dom/webidl/DOMException.webidl new file mode 100644 index 0000000000..e91e20cca9 --- /dev/null +++ b/dom/webidl/DOMException.webidl @@ -0,0 +1,110 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://dom.spec.whatwg.org/#exception-domexception + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + + +// This is the WebIDL version of nsIException. This is mostly legacy stuff. + +interface StackFrame; + +[NoInterfaceObject, + Exposed=(Window,Worker)] +interface ExceptionMembers +{ + // A custom message set by the thrower. LenientThis so it can be + // gotten on the prototype, which Error.prototype.toString will do + // if someone tries to stringify DOMException.prototype. + [LenientThis] + readonly attribute DOMString message; + // The nsresult associated with this exception. + readonly attribute unsigned long result; + // The name of the error code (ie, a string repr of |result|). + // LenientThis so it can be gotten on the prototype, which + // Error.prototype.toString will do if someone tries to stringify + // DOMException.prototype. + [LenientThis] + readonly attribute DOMString name; + + // Filename location. This is the location that caused the + // error, which may or may not be a source file location. + // For example, standard language errors would generally have + // the same location as their top stack entry. File + // parsers may put the location of the file they were parsing, + // etc. + + // null indicates "no data" + readonly attribute DOMString filename; + // Valid line numbers begin at '1'. '0' indicates unknown. + readonly attribute unsigned long lineNumber; + // Valid column numbers begin at 0. + // We don't have an unambiguous indicator for unknown. + readonly attribute unsigned long columnNumber; + + // A stack trace, if available. nsIStackFrame does not have classinfo so + // this was only ever usefully available to chrome JS. + [ChromeOnly, Exposed=Window] + readonly attribute StackFrame? location; + + // Arbitary data for the implementation. + [Exposed=Window] + readonly attribute nsISupports? data; + + // Formatted exception stack + [Throws, Replaceable] + readonly attribute DOMString stack; +}; + +[NoInterfaceObject, Exposed=(Window,Worker)] +interface Exception { + // A generic formatter - make it suitable to print, etc. + stringifier; +}; + +Exception implements ExceptionMembers; + +// XXXkhuey this is an 'exception', not an interface, but we don't have any +// parser or codegen mechanisms for dealing with exceptions. +[ExceptionClass, + Exposed=(Window, Worker), + Constructor(optional DOMString message = "", optional DOMString name)] +interface DOMException { + const unsigned short INDEX_SIZE_ERR = 1; + const unsigned short DOMSTRING_SIZE_ERR = 2; // historical + const unsigned short HIERARCHY_REQUEST_ERR = 3; + const unsigned short WRONG_DOCUMENT_ERR = 4; + const unsigned short INVALID_CHARACTER_ERR = 5; + const unsigned short NO_DATA_ALLOWED_ERR = 6; // historical + const unsigned short NO_MODIFICATION_ALLOWED_ERR = 7; + const unsigned short NOT_FOUND_ERR = 8; + const unsigned short NOT_SUPPORTED_ERR = 9; + const unsigned short INUSE_ATTRIBUTE_ERR = 10; // historical + const unsigned short INVALID_STATE_ERR = 11; + const unsigned short SYNTAX_ERR = 12; + const unsigned short INVALID_MODIFICATION_ERR = 13; + const unsigned short NAMESPACE_ERR = 14; + const unsigned short INVALID_ACCESS_ERR = 15; + const unsigned short VALIDATION_ERR = 16; // historical + const unsigned short TYPE_MISMATCH_ERR = 17; // historical; use JavaScript's TypeError instead + const unsigned short SECURITY_ERR = 18; + const unsigned short NETWORK_ERR = 19; + const unsigned short ABORT_ERR = 20; + const unsigned short URL_MISMATCH_ERR = 21; + const unsigned short QUOTA_EXCEEDED_ERR = 22; + const unsigned short TIMEOUT_ERR = 23; + const unsigned short INVALID_NODE_TYPE_ERR = 24; + const unsigned short DATA_CLONE_ERR = 25; + + readonly attribute unsigned short code; +}; + +// XXXkhuey copy all of Gecko's non-standard stuff onto DOMException, but leave +// the prototype chain sane. +DOMException implements ExceptionMembers; diff --git a/dom/webidl/DOMImplementation.webidl b/dom/webidl/DOMImplementation.webidl new file mode 100644 index 0000000000..5fa3c85927 --- /dev/null +++ b/dom/webidl/DOMImplementation.webidl @@ -0,0 +1,26 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://dom.spec.whatwg.org/#interface-domimplementation + * + * Copyright: + * To the extent possible under law, the editors have waived all copyright and + * related or neighboring rights to this work. + */ + +interface DOMImplementation { + boolean hasFeature(); + + [Throws] + DocumentType createDocumentType(DOMString qualifiedName, DOMString publicId, + DOMString systemId); + [Throws] + Document createDocument(DOMString? namespace, + [TreatNullAs=EmptyString] DOMString qualifiedName, + optional DocumentType? doctype = null); + [Throws] + Document createHTMLDocument(optional DOMString title); +}; diff --git a/dom/webidl/DOMMatrix.webidl b/dom/webidl/DOMMatrix.webidl new file mode 100644 index 0000000000..6b236ae666 --- /dev/null +++ b/dom/webidl/DOMMatrix.webidl @@ -0,0 +1,148 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://dev.w3.org/fxtf/geometry/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +[Pref="layout.css.DOMMatrix.enabled"] +interface DOMMatrixReadOnly { + // These attributes are simple aliases for certain elements of the 4x4 matrix + readonly attribute unrestricted double a; + readonly attribute unrestricted double b; + readonly attribute unrestricted double c; + readonly attribute unrestricted double d; + readonly attribute unrestricted double e; + readonly attribute unrestricted double f; + + readonly attribute unrestricted double m11; + readonly attribute unrestricted double m12; + readonly attribute unrestricted double m13; + readonly attribute unrestricted double m14; + readonly attribute unrestricted double m21; + readonly attribute unrestricted double m22; + readonly attribute unrestricted double m23; + readonly attribute unrestricted double m24; + readonly attribute unrestricted double m31; + readonly attribute unrestricted double m32; + readonly attribute unrestricted double m33; + readonly attribute unrestricted double m34; + readonly attribute unrestricted double m41; + readonly attribute unrestricted double m42; + readonly attribute unrestricted double m43; + readonly attribute unrestricted double m44; + + // Immutable transform methods + DOMMatrix translate(unrestricted double tx, + unrestricted double ty, + optional unrestricted double tz = 0); + DOMMatrix scale(unrestricted double scale, + optional unrestricted double originX = 0, + optional unrestricted double originY = 0); + DOMMatrix scale3d(unrestricted double scale, + optional unrestricted double originX = 0, + optional unrestricted double originY = 0, + optional unrestricted double originZ = 0); + DOMMatrix scaleNonUniform(unrestricted double scaleX, + optional unrestricted double scaleY = 1, + optional unrestricted double scaleZ = 1, + optional unrestricted double originX = 0, + optional unrestricted double originY = 0, + optional unrestricted double originZ = 0); + DOMMatrix rotate(unrestricted double angle, + optional unrestricted double originX = 0, + optional unrestricted double originY = 0); + DOMMatrix rotateFromVector(unrestricted double x, + unrestricted double y); + DOMMatrix rotateAxisAngle(unrestricted double x, + unrestricted double y, + unrestricted double z, + unrestricted double angle); + DOMMatrix skewX(unrestricted double sx); + DOMMatrix skewY(unrestricted double sy); + DOMMatrix multiply(DOMMatrix other); + DOMMatrix flipX(); + DOMMatrix flipY(); + DOMMatrix inverse(); + + // Helper methods + readonly attribute boolean is2D; + readonly attribute boolean identity; + DOMPoint transformPoint(optional DOMPointInit point); + [Throws] Float32Array toFloat32Array(); + [Throws] Float64Array toFloat64Array(); + stringifier; +}; + +[Pref="layout.css.DOMMatrix.enabled", + Constructor, + Constructor(DOMString transformList), + Constructor(DOMMatrixReadOnly other), + Constructor(Float32Array array32), + Constructor(Float64Array array64), + Constructor(sequence<unrestricted double> numberSequence)] +interface DOMMatrix : DOMMatrixReadOnly { + // These attributes are simple aliases for certain elements of the 4x4 matrix + inherit attribute unrestricted double a; + inherit attribute unrestricted double b; + inherit attribute unrestricted double c; + inherit attribute unrestricted double d; + inherit attribute unrestricted double e; + inherit attribute unrestricted double f; + + inherit attribute unrestricted double m11; + inherit attribute unrestricted double m12; + inherit attribute unrestricted double m13; + inherit attribute unrestricted double m14; + inherit attribute unrestricted double m21; + inherit attribute unrestricted double m22; + inherit attribute unrestricted double m23; + inherit attribute unrestricted double m24; + inherit attribute unrestricted double m31; + inherit attribute unrestricted double m32; + inherit attribute unrestricted double m33; + inherit attribute unrestricted double m34; + inherit attribute unrestricted double m41; + inherit attribute unrestricted double m42; + inherit attribute unrestricted double m43; + inherit attribute unrestricted double m44; + + // Mutable transform methods + DOMMatrix multiplySelf(DOMMatrix other); + DOMMatrix preMultiplySelf(DOMMatrix other); + DOMMatrix translateSelf(unrestricted double tx, + unrestricted double ty, + optional unrestricted double tz = 0); + DOMMatrix scaleSelf(unrestricted double scale, + optional unrestricted double originX = 0, + optional unrestricted double originY = 0); + DOMMatrix scale3dSelf(unrestricted double scale, + optional unrestricted double originX = 0, + optional unrestricted double originY = 0, + optional unrestricted double originZ = 0); + DOMMatrix scaleNonUniformSelf(unrestricted double scaleX, + optional unrestricted double scaleY = 1, + optional unrestricted double scaleZ = 1, + optional unrestricted double originX = 0, + optional unrestricted double originY = 0, + optional unrestricted double originZ = 0); + DOMMatrix rotateSelf(unrestricted double angle, + optional unrestricted double originX = 0, + optional unrestricted double originY = 0); + DOMMatrix rotateFromVectorSelf(unrestricted double x, + unrestricted double y); + DOMMatrix rotateAxisAngleSelf(unrestricted double x, + unrestricted double y, + unrestricted double z, + unrestricted double angle); + DOMMatrix skewXSelf(unrestricted double sx); + DOMMatrix skewYSelf(unrestricted double sy); + DOMMatrix invertSelf(); + [Throws] DOMMatrix setMatrixValue(DOMString transformList); +}; + diff --git a/dom/webidl/DOMParser.webidl b/dom/webidl/DOMParser.webidl new file mode 100644 index 0000000000..1546666974 --- /dev/null +++ b/dom/webidl/DOMParser.webidl @@ -0,0 +1,46 @@ +/* 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/. + * + * The origin of this IDL file is + * http://domparsing.spec.whatwg.org/#the-domparser-interface + */ + +interface Principal; +interface URI; +interface InputStream; + +enum SupportedType { + "text/html", + "text/xml", + "application/xml", + "application/xhtml+xml", + "image/svg+xml" +}; + +// the latter is Mozilla-specific +[Constructor, + Constructor(Principal? prin, optional URI? documentURI = null, + optional URI? baseURI = null)] +interface DOMParser { + [NewObject, Throws] + Document parseFromString(DOMString str, SupportedType type); + + // Mozilla-specific stuff + // Throws if the passed-in length is greater than the actual sequence length + [NewObject, Throws, ChromeOnly] + Document parseFromBuffer(sequence<octet> buf, unsigned long bufLen, + SupportedType type); + // Throws if the passed-in length is greater than the actual typed array length + [NewObject, Throws, ChromeOnly] + Document parseFromBuffer(Uint8Array buf, unsigned long bufLen, + SupportedType type); + [NewObject, Throws, ChromeOnly] + Document parseFromStream(InputStream stream, DOMString? charset, + long contentLength, SupportedType type); + [Throws, ChromeOnly] + void init(optional Principal? principal = null, + optional URI? documentURI = null, + optional URI? baseURI = null); +}; + diff --git a/dom/webidl/DOMPoint.webidl b/dom/webidl/DOMPoint.webidl new file mode 100644 index 0000000000..d092d900f5 --- /dev/null +++ b/dom/webidl/DOMPoint.webidl @@ -0,0 +1,37 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://dev.w3.org/fxtf/geometry/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +[Pref="layout.css.DOMPoint.enabled"] +interface DOMPointReadOnly { + readonly attribute unrestricted double x; + readonly attribute unrestricted double y; + readonly attribute unrestricted double z; + readonly attribute unrestricted double w; +}; + +[Pref="layout.css.DOMPoint.enabled", + Constructor(optional DOMPointInit point), + Constructor(unrestricted double x, unrestricted double y, + optional unrestricted double z = 0, optional unrestricted double w = 1)] +interface DOMPoint : DOMPointReadOnly { + inherit attribute unrestricted double x; + inherit attribute unrestricted double y; + inherit attribute unrestricted double z; + inherit attribute unrestricted double w; +}; + +dictionary DOMPointInit { + unrestricted double x = 0; + unrestricted double y = 0; + unrestricted double z = 0; + unrestricted double w = 1; +};
\ No newline at end of file diff --git a/dom/webidl/DOMQuad.webidl b/dom/webidl/DOMQuad.webidl new file mode 100644 index 0000000000..b933987d59 --- /dev/null +++ b/dom/webidl/DOMQuad.webidl @@ -0,0 +1,23 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://dev.w3.org/fxtf/geometry/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +[Pref="layout.css.DOMQuad.enabled", + Constructor(optional DOMPointInit p1, optional DOMPointInit p2, + optional DOMPointInit p3, optional DOMPointInit p4), + Constructor(DOMRectReadOnly rect)] +interface DOMQuad { + [SameObject] readonly attribute DOMPoint p1; + [SameObject] readonly attribute DOMPoint p2; + [SameObject] readonly attribute DOMPoint p3; + [SameObject] readonly attribute DOMPoint p4; + [SameObject] readonly attribute DOMRectReadOnly bounds; +};
\ No newline at end of file diff --git a/dom/webidl/DOMRect.webidl b/dom/webidl/DOMRect.webidl new file mode 100644 index 0000000000..24a07900c5 --- /dev/null +++ b/dom/webidl/DOMRect.webidl @@ -0,0 +1,39 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://dev.w3.org/fxtf/geometry/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +[Constructor, + Constructor(unrestricted double x, unrestricted double y, + unrestricted double width, unrestricted double height)] +interface DOMRect : DOMRectReadOnly { + inherit attribute unrestricted double x; + inherit attribute unrestricted double y; + inherit attribute unrestricted double width; + inherit attribute unrestricted double height; +}; + +interface DOMRectReadOnly { + readonly attribute unrestricted double x; + readonly attribute unrestricted double y; + readonly attribute unrestricted double width; + readonly attribute unrestricted double height; + readonly attribute unrestricted double top; + readonly attribute unrestricted double right; + readonly attribute unrestricted double bottom; + readonly attribute unrestricted double left; +}; + +dictionary DOMRectInit { + unrestricted double x = 0; + unrestricted double y = 0; + unrestricted double width = 0; + unrestricted double height = 0; +}; diff --git a/dom/webidl/DOMRectList.webidl b/dom/webidl/DOMRectList.webidl new file mode 100644 index 0000000000..172235e17a --- /dev/null +++ b/dom/webidl/DOMRectList.webidl @@ -0,0 +1,11 @@ +/* -*- 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/. + */ + +[ArrayClass] +interface DOMRectList { + readonly attribute unsigned long length; + getter DOMRect? item(unsigned long index); +}; diff --git a/dom/webidl/DOMRequest.webidl b/dom/webidl/DOMRequest.webidl new file mode 100644 index 0000000000..60dc022a46 --- /dev/null +++ b/dom/webidl/DOMRequest.webidl @@ -0,0 +1,29 @@ +/* -*- 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/. */ + +enum DOMRequestReadyState { "pending", "done" }; + +[Exposed=(Window,Worker,System), NoInterfaceObject] +interface DOMRequestShared { + readonly attribute DOMRequestReadyState readyState; + + readonly attribute any result; + readonly attribute DOMError? error; + + attribute EventHandler onsuccess; + attribute EventHandler onerror; +}; + +[Exposed=(Window,Worker,System)] +interface DOMRequest : EventTarget { + // The [TreatNonCallableAsNull] annotation is required since then() should do + // nothing instead of throwing errors when non-callable arguments are passed. + // See documentation for Promise.then to see why we return "any". + [NewObject, Throws] + any then([TreatNonCallableAsNull] optional AnyCallback? fulfillCallback = null, + [TreatNonCallableAsNull] optional AnyCallback? rejectCallback = null); +}; + +DOMRequest implements DOMRequestShared; diff --git a/dom/webidl/DOMStringList.webidl b/dom/webidl/DOMStringList.webidl new file mode 100644 index 0000000000..56c5836ffe --- /dev/null +++ b/dom/webidl/DOMStringList.webidl @@ -0,0 +1,18 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/2012/WD-dom-20120105/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +[Exposed=(Window,Worker,System)] +interface DOMStringList { + readonly attribute unsigned long length; + getter DOMString? item(unsigned long index); + boolean contains(DOMString string); +}; diff --git a/dom/webidl/DOMStringMap.webidl b/dom/webidl/DOMStringMap.webidl new file mode 100644 index 0000000000..0ed98e148a --- /dev/null +++ b/dom/webidl/DOMStringMap.webidl @@ -0,0 +1,20 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.whatwg.org/specs/web-apps/current-work/multipage/common-dom-interfaces.html#domstringmap-0 + * + * © Copyright 2004-2011 Apple Computer, Inc., Mozilla Foundation, and + * Opera Software ASA. You are granted a license to use, reproduce + * and create derivative works of this document. + */ + +[OverrideBuiltins] +interface DOMStringMap { + getter DOMString (DOMString name); + [Throws] + setter creator void (DOMString name, DOMString value); + deleter void (DOMString name); +}; diff --git a/dom/webidl/DOMTokenList.webidl b/dom/webidl/DOMTokenList.webidl new file mode 100644 index 0000000000..a1ea243b30 --- /dev/null +++ b/dom/webidl/DOMTokenList.webidl @@ -0,0 +1,31 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/2012/WD-dom-20120105/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface DOMTokenList { + readonly attribute unsigned long length; + getter DOMString? item(unsigned long index); + boolean contains(DOMString token); + [Throws] + void add(DOMString... tokens); + [Throws] + void remove(DOMString... tokens); + [Throws] + void replace(DOMString token, DOMString newToken); + [Throws] + boolean toggle(DOMString token, optional boolean force); + [Throws] + boolean supports(DOMString token); + [SetterThrows] + attribute DOMString value; + stringifier DOMString (); + iterable<DOMString?>; +}; diff --git a/dom/webidl/DataChannel.webidl b/dom/webidl/DataChannel.webidl new file mode 100644 index 0000000000..43955745ec --- /dev/null +++ b/dom/webidl/DataChannel.webidl @@ -0,0 +1,48 @@ +/* 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/. */ + +enum RTCDataChannelState { + "connecting", + "open", + "closing", + "closed" +}; + +enum RTCDataChannelType { + "arraybuffer", + "blob" +}; + +// XXX This interface is called RTCDataChannel in the spec. +interface DataChannel : EventTarget +{ + readonly attribute DOMString label; + readonly attribute boolean reliable; + readonly attribute RTCDataChannelState readyState; + readonly attribute unsigned long bufferedAmount; + attribute unsigned long bufferedAmountLowThreshold; + attribute EventHandler onopen; + attribute EventHandler onerror; + attribute EventHandler onclose; + void close(); + attribute EventHandler onmessage; + attribute EventHandler onbufferedamountlow; + attribute RTCDataChannelType binaryType; + [Throws] + void send(DOMString data); + [Throws] + void send(Blob data); + [Throws] + void send(ArrayBuffer data); + [Throws] + void send(ArrayBufferView data); +}; + +// Mozilla extensions. +partial interface DataChannel +{ + readonly attribute DOMString protocol; + readonly attribute boolean ordered; + readonly attribute unsigned short id; +}; diff --git a/dom/webidl/DataContainerEvent.webidl b/dom/webidl/DataContainerEvent.webidl new file mode 100644 index 0000000000..9684210409 --- /dev/null +++ b/dom/webidl/DataContainerEvent.webidl @@ -0,0 +1,30 @@ +/* -*- 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/. + */ + +interface nsIVariant; + +[ChromeOnly] +interface DataContainerEvent : Event { + /** + * Return the data associated with the given key. + * + * @param key the key + * @return the data associated with the key + */ + nsIVariant? getData(DOMString? key); + + /** + * Set the data for the given key. + * + * @param key the data key + * @param data the data + * @throws NS_ERROR_UNEXPECTED if the method is called during event + * dispatch + */ + [Throws] + void setData(DOMString? key, any data); +}; + diff --git a/dom/webidl/DataTransfer.webidl b/dom/webidl/DataTransfer.webidl new file mode 100644 index 0000000000..206d808049 --- /dev/null +++ b/dom/webidl/DataTransfer.webidl @@ -0,0 +1,148 @@ +/* -*- 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/. + * + * The origin of this IDL file is: + * http://www.whatwg.org/specs/web-apps/current-work/#the-datatransfer-interface + */ + +[ChromeConstructor(DOMString eventType, boolean isExternal)] +interface DataTransfer { + attribute DOMString dropEffect; + attribute DOMString effectAllowed; + + readonly attribute DataTransferItemList items; + + [Throws] + void setDragImage(Element image, long x, long y); + + // ReturnValueNeedsContainsHack on .types because lots of extension + // code was expecting .contains() back when it was a DOMStringList. + [Pure, Cached, Frozen, NeedsSubjectPrincipal, ReturnValueNeedsContainsHack] + readonly attribute sequence<DOMString> types; + [Throws, NeedsSubjectPrincipal] + DOMString getData(DOMString format); + [Throws, NeedsSubjectPrincipal] + void setData(DOMString format, DOMString data); + [Throws, NeedsSubjectPrincipal] + void clearData(optional DOMString format); + [Throws, NeedsSubjectPrincipal] + readonly attribute FileList? files; +}; + +partial interface DataTransfer { + [Throws, Pref="dom.input.dirpicker", NeedsSubjectPrincipal] + Promise<sequence<(File or Directory)>> getFilesAndDirectories(); + + [Throws, Pref="dom.input.dirpicker", NeedsSubjectPrincipal] + Promise<sequence<File>> getFiles(optional boolean recursiveFlag = false); +}; + +// Mozilla specific stuff +partial interface DataTransfer { + /* + * Set the drag source. Usually you would not change this, but it will + * affect which node the drag and dragend events are fired at. The + * default target is the node that was dragged. + * + * @param element drag source to use + * @throws NO_MODIFICATION_ALLOWED_ERR if the item cannot be modified + */ + [Throws] + void addElement(Element element); + + /** + * The number of items being dragged. + */ + readonly attribute unsigned long mozItemCount; + + /** + * Sets the drag cursor state. Primarily used to control the cursor during + * tab drags, but could be expanded to other uses. XXX Currently implemented + * on Win32 only. + * + * Possible values: + * auto - use default system behavior. + * default - set the cursor to an arrow during the drag operation. + * + * Values other than 'default' are indentical to setting mozCursor to + * 'auto'. + */ + attribute DOMString mozCursor; + + /** + * Holds a list of the format types of the data that is stored for an item + * at the specified index. If the index is not in the range from 0 to + * itemCount - 1, an empty string list is returned. + */ + [Throws] + DOMStringList mozTypesAt(unsigned long index); + + /** + * Remove the data associated with the given format for an item at the + * specified index. The index is in the range from zero to itemCount - 1. + * + * If the last format for the item is removed, the entire item is removed, + * reducing the itemCount by one. + * + * If format is empty, then the data associated with all formats is removed. + * If the format is not found, then this method has no effect. + * + * @param format the format to remove + * @throws NS_ERROR_DOM_INDEX_SIZE_ERR if index is greater or equal than itemCount + * @throws NO_MODIFICATION_ALLOWED_ERR if the item cannot be modified + */ + [Throws, NeedsSubjectPrincipal] + void mozClearDataAt(DOMString format, unsigned long index); + + /* + * A data transfer may store multiple items, each at a given zero-based + * index. setDataAt may only be called with an index argument less than + * itemCount in which case an existing item is modified, or equal to + * itemCount in which case a new item is added, and the itemCount is + * incremented by one. + * + * Data should be added in order of preference, with the most specific + * format added first and the least specific format added last. If data of + * the given format already exists, it is replaced in the same position as + * the old data. + * + * The data should be either a string, a primitive boolean or number type + * (which will be converted into a string) or an nsISupports. + * + * @param format the format to add + * @param data the data to add + * @throws NS_ERROR_NULL_POINTER if the data is null + * @throws NS_ERROR_DOM_INDEX_SIZE_ERR if index is greater than itemCount + * @throws NO_MODIFICATION_ALLOWED_ERR if the item cannot be modified + */ + [Throws, NeedsSubjectPrincipal] + void mozSetDataAt(DOMString format, any data, unsigned long index); + + /** + * Retrieve the data associated with the given format for an item at the + * specified index, or null if it does not exist. The index should be in the + * range from zero to itemCount - 1. + * + * @param format the format of the data to look up + * @returns the data of the given format, or null if it doesn't exist. + * @throws NS_ERROR_DOM_INDEX_SIZE_ERR if index is greater or equal than itemCount + */ + [Throws, NeedsSubjectPrincipal] + any mozGetDataAt(DOMString format, unsigned long index); + + /** + * Will be true when the user has cancelled the drag (typically by pressing + * Escape) and when the drag has been cancelled unexpectedly. This will be + * false otherwise, including when the drop has been rejected by its target. + * This property is only relevant for the dragend event. + */ + readonly attribute boolean mozUserCancelled; + + /** + * The node that the mouse was pressed over to begin the drag. For external + * drags, or if the caller cannot access this node, this will be null. + */ + readonly attribute Node? mozSourceNode; +}; diff --git a/dom/webidl/DataTransferItem.webidl b/dom/webidl/DataTransferItem.webidl new file mode 100644 index 0000000000..449498104d --- /dev/null +++ b/dom/webidl/DataTransferItem.webidl @@ -0,0 +1,25 @@ +/* -*- 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/. + * + * The origin of this IDL file is: + * https://html.spec.whatwg.org/multipage/interaction.html#the-datatransferitem-interface + */ + +interface DataTransferItem { + readonly attribute DOMString kind; + readonly attribute DOMString type; + [Throws, NeedsSubjectPrincipal] + void getAsString(FunctionStringCallback? _callback); + [Throws, NeedsSubjectPrincipal] + File? getAsFile(); +}; + +callback FunctionStringCallback = void (DOMString data); + +partial interface DataTransferItem { + [Pref="dom.webkitBlink.filesystem.enabled", BinaryName="getAsEntry", Throws, + NeedsSubjectPrincipal] + FileSystemEntry? webkitGetAsEntry(); +}; diff --git a/dom/webidl/DataTransferItemList.webidl b/dom/webidl/DataTransferItemList.webidl new file mode 100644 index 0000000000..079afdd148 --- /dev/null +++ b/dom/webidl/DataTransferItemList.webidl @@ -0,0 +1,21 @@ +/* -*- 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/. + * + * The origin of this IDL file is: + * https://html.spec.whatwg.org/multipage/interaction.html#the-datatransferitemlist-interface + */ + +interface DataTransferItemList { + readonly attribute unsigned long length; + getter DataTransferItem (unsigned long index); + [Throws, NeedsSubjectPrincipal] + DataTransferItem? add(DOMString data, DOMString type); + [Throws, NeedsSubjectPrincipal] + DataTransferItem? add(File data); + [Throws, NeedsSubjectPrincipal] + void remove(unsigned long index); + [Throws, NeedsSubjectPrincipal] + void clear(); +}; diff --git a/dom/webidl/DecoderDoctorNotification.webidl b/dom/webidl/DecoderDoctorNotification.webidl new file mode 100644 index 0000000000..ef4ca83114 --- /dev/null +++ b/dom/webidl/DecoderDoctorNotification.webidl @@ -0,0 +1,23 @@ +/* -*- 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/. + */ + +enum DecoderDoctorNotificationType { + "cannot-play", + "platform-decoder-not-found", + "can-play-but-some-missing-decoders", + "cannot-initialize-pulseaudio", + "unsupported-libavcodec", +}; + +dictionary DecoderDoctorNotification { + required DecoderDoctorNotificationType type; + // True when the issue has been solved. + required boolean isSolved; + // Key from dom.properties, used for telemetry and prefs. + required DOMString decoderDoctorReportId; + // If provided, formats (or key systems) at issue. + DOMString formats; +}; diff --git a/dom/webidl/DedicatedWorkerGlobalScope.webidl b/dom/webidl/DedicatedWorkerGlobalScope.webidl new file mode 100644 index 0000000000..26dca58dab --- /dev/null +++ b/dom/webidl/DedicatedWorkerGlobalScope.webidl @@ -0,0 +1,22 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.whatwg.org/specs/web-apps/current-work/multipage/workers.html#the-workerglobalscope-common-interface + * + * © Copyright 2004-2011 Apple Computer, Inc., Mozilla Foundation, and Opera + * Software ASA. + * You are granted a license to use, reproduce and create derivative works of + * this document. + */ + +[Global=(Worker,DedicatedWorker), + Exposed=DedicatedWorker] +interface DedicatedWorkerGlobalScope : WorkerGlobalScope { + [Throws] + void postMessage(any message, optional sequence<any> transfer); + + attribute EventHandler onmessage; +}; diff --git a/dom/webidl/DelayNode.webidl b/dom/webidl/DelayNode.webidl new file mode 100644 index 0000000000..6a8fb5c3ae --- /dev/null +++ b/dom/webidl/DelayNode.webidl @@ -0,0 +1,22 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * https://webaudio.github.io/web-audio-api/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +[Pref="dom.webaudio.enabled"] +interface DelayNode : AudioNode { + + readonly attribute AudioParam delayTime; + +}; + +// Mozilla extension +DelayNode implements AudioNodePassThrough; + diff --git a/dom/webidl/DesktopNotification.webidl b/dom/webidl/DesktopNotification.webidl new file mode 100644 index 0000000000..18bfce9dc5 --- /dev/null +++ b/dom/webidl/DesktopNotification.webidl @@ -0,0 +1,26 @@ +/* -*- 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/. + */ + +interface MozObserver; + +[HeaderFile="mozilla/dom/DesktopNotification.h"] +interface DesktopNotificationCenter +{ + [NewObject] + DesktopNotification createNotification(DOMString title, + DOMString description, + optional DOMString iconURL = ""); +}; + +interface DesktopNotification : EventTarget +{ + [Throws] + void show(); + + attribute EventHandler onclick; + + attribute EventHandler onclose; +}; diff --git a/dom/webidl/DeviceLightEvent.webidl b/dom/webidl/DeviceLightEvent.webidl new file mode 100644 index 0000000000..453c67613b --- /dev/null +++ b/dom/webidl/DeviceLightEvent.webidl @@ -0,0 +1,16 @@ +/* -*- 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/. + */ + +[Constructor(DOMString type, optional DeviceLightEventInit eventInitDict)] +interface DeviceLightEvent : Event +{ + readonly attribute unrestricted double value; +}; + +dictionary DeviceLightEventInit : EventInit +{ + unrestricted double value = Infinity; +}; diff --git a/dom/webidl/DeviceMotionEvent.webidl b/dom/webidl/DeviceMotionEvent.webidl new file mode 100644 index 0000000000..fa4ecf3ca3 --- /dev/null +++ b/dom/webidl/DeviceMotionEvent.webidl @@ -0,0 +1,57 @@ +/* -*- 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/. + */ + +[NoInterfaceObject] +interface DeviceAcceleration { + readonly attribute double? x; + readonly attribute double? y; + readonly attribute double? z; +}; + +[NoInterfaceObject] +interface DeviceRotationRate { + readonly attribute double? alpha; + readonly attribute double? beta; + readonly attribute double? gamma; +}; + +[Constructor(DOMString type, optional DeviceMotionEventInit eventInitDict)] +interface DeviceMotionEvent : Event { + readonly attribute DeviceAcceleration? acceleration; + readonly attribute DeviceAcceleration? accelerationIncludingGravity; + readonly attribute DeviceRotationRate? rotationRate; + readonly attribute double? interval; +}; + +dictionary DeviceAccelerationInit { + double? x = null; + double? y = null; + double? z = null; +}; + +dictionary DeviceRotationRateInit { + double? alpha = null; + double? beta = null; + double? gamma = null; +}; + +dictionary DeviceMotionEventInit : EventInit { + DeviceAccelerationInit acceleration; + DeviceAccelerationInit accelerationIncludingGravity; + DeviceRotationRateInit rotationRate; + double? interval = null; +}; + +// Mozilla extensions. +partial interface DeviceMotionEvent { + void initDeviceMotionEvent(DOMString type, + boolean canBubble, + boolean cancelable, + DeviceAccelerationInit acceleration, + DeviceAccelerationInit accelerationIncludingGravity, + DeviceRotationRateInit rotationRate, + double? interval); +}; diff --git a/dom/webidl/DeviceOrientationEvent.webidl b/dom/webidl/DeviceOrientationEvent.webidl new file mode 100644 index 0000000000..46194453eb --- /dev/null +++ b/dom/webidl/DeviceOrientationEvent.webidl @@ -0,0 +1,31 @@ +/* -*- 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/. + */ + +[Constructor(DOMString type, optional DeviceOrientationEventInit eventInitDict), LegacyEventInit] +interface DeviceOrientationEvent : Event +{ + readonly attribute double? alpha; + readonly attribute double? beta; + readonly attribute double? gamma; + readonly attribute boolean absolute; + + // initDeviceOrientationEvent is a Gecko specific deprecated method. + void initDeviceOrientationEvent(DOMString type, + boolean canBubble, + boolean cancelable, + double? alpha, + double? beta, + double? gamma, + boolean absolute); +}; + +dictionary DeviceOrientationEventInit : EventInit +{ + double? alpha = null; + double? beta = null; + double? gamma = null; + boolean absolute = false; +}; diff --git a/dom/webidl/DeviceProximityEvent.webidl b/dom/webidl/DeviceProximityEvent.webidl new file mode 100644 index 0000000000..0d3dc1275a --- /dev/null +++ b/dom/webidl/DeviceProximityEvent.webidl @@ -0,0 +1,20 @@ +/* -*- 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/. + */ + +[Constructor(DOMString type, optional DeviceProximityEventInit eventInitDict)] +interface DeviceProximityEvent : Event +{ + readonly attribute double value; + readonly attribute double min; + readonly attribute double max; +}; + +dictionary DeviceProximityEventInit : EventInit +{ + unrestricted double value = Infinity; + unrestricted double min = -Infinity; + unrestricted double max = Infinity; +}; diff --git a/dom/webidl/Directory.webidl b/dom/webidl/Directory.webidl new file mode 100644 index 0000000000..942d50c7cb --- /dev/null +++ b/dom/webidl/Directory.webidl @@ -0,0 +1,53 @@ +/* -*- 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/. + */ + +/* + * All functions on Directory that accept DOMString arguments for file or + * directory names only allow relative path to current directory itself. The + * path should be a descendent path like "path/to/file.txt" and not contain a + * segment of ".." or ".". So the paths aren't allowed to walk up the directory + * tree. For example, paths like "../foo", "..", "/foo/bar" or "foo/../bar" are + * not allowed. + * + * http://w3c.github.io/filesystem-api/#idl-def-Directory + * https://microsoftedge.github.io/directory-upload/proposal.html#directory-interface + */ + +// This chromeConstructor is used by the MockFilePicker for testing only. +[ChromeConstructor(DOMString path), + Exposed=(Window,Worker)] +interface Directory { + /* + * The leaf name of the directory. + */ + [Throws] + readonly attribute DOMString name; +}; + +[Exposed=(Window,Worker)] +partial interface Directory { + // Already defined in the main interface declaration: + //readonly attribute DOMString name; + + /* + * The path of the Directory (includes both its basename and leafname). + * The path begins with the name of the ancestor Directory that was + * originally exposed to content (say via a directory picker) and traversed + * to obtain this Directory. Full filesystem paths are not exposed to + * unprivilaged content. + */ + [Throws] + readonly attribute DOMString path; + + /* + * Getter for the immediate children of this directory. + */ + [Throws] + Promise<sequence<(File or Directory)>> getFilesAndDirectories(); + + [Throws] + Promise<sequence<File>> getFiles(optional boolean recursiveFlag = false); +}; diff --git a/dom/webidl/Document.webidl b/dom/webidl/Document.webidl new file mode 100644 index 0000000000..c895fad392 --- /dev/null +++ b/dom/webidl/Document.webidl @@ -0,0 +1,452 @@ +/* -*- 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/. + * + * http://dxr.mozilla.org/mozilla-central/source/dom/interfaces/core/nsIDOMDocument.idl + */ + +interface WindowProxy; +interface nsISupports; +interface URI; +interface nsIDocShell; +interface nsILoadGroup; + +enum VisibilityState { "hidden", "visible", "prerender" }; + +/* https://dom.spec.whatwg.org/#dictdef-elementcreationoptions */ +dictionary ElementCreationOptions { + DOMString is; +}; + +/* http://dom.spec.whatwg.org/#interface-document */ +[Constructor] +interface Document : Node { + [Throws] + readonly attribute DOMImplementation implementation; + [Pure, Throws] + readonly attribute DOMString URL; + [Pure, Throws] + 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); + + [NewObject, Throws] + Element createElement(DOMString localName, optional (ElementCreationOptions or DOMString) options); + [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); + + [Throws] + Node importNode(Node node, optional boolean deep = false); + [Throws] + Node adoptNode(Node node); + + [NewObject, Throws] + 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 + // void prepend((Node or DOMString)... nodes); + // void 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); +}; + +// http://www.whatwg.org/specs/web-apps/current-work/#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); + [SetterThrows, Pure] + attribute DOMString title; + [Pure] + attribute DOMString dir; + //(HTML only) attribute HTMLElement? body; + //(HTML only)readonly attribute HTMLHeadElement? head; + //(HTML only)readonly attribute HTMLCollection images; + //(HTML only)readonly attribute HTMLCollection embeds; + //(HTML only)readonly attribute HTMLCollection plugins; + //(HTML only)readonly attribute HTMLCollection links; + //(HTML only)readonly attribute HTMLCollection forms; + //(HTML only)readonly attribute HTMLCollection scripts; + //(HTML only)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)void close(); + //(HTML only)void write(DOMString... text); + //(HTML only)void writeln(DOMString... text); + + // user interaction + [Pure] + readonly attribute WindowProxy? defaultView; + readonly attribute Element? activeElement; + [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 onwheel; + attribute EventHandler oncopy; + attribute EventHandler oncut; + attribute EventHandler onpaste; + attribute EventHandler onbeforescriptexecute; + attribute EventHandler onafterscriptexecute; + + [Pref="dom.select_events.enabled"] + attribute EventHandler onselectionchange; + + /** + * True if this document is synthetic : stand alone image, video, audio file, + * etc. + */ + [Func="IsChromeOrXBL"] readonly attribute boolean mozSyntheticDocument; + /** + * 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> + */ + void releaseCapture(); + /** + * Use the given DOM element as the source image of target |-moz-element()|. + * + * This function introduces a new special ID (called "image element ID"), + * which is only used by |-moz-element()|, and associates it with the given + * DOM element. Image elements ID's have the higher precedence than general + * HTML id's, so if |document.mozSetImageElement(<id>, <element>)| is called, + * |-moz-element(#<id>)| uses |<element>| as the source image even if there + * is another element with id attribute = |<id>|. To unregister an image + * element ID |<id>|, call |document.mozSetImageElement(<id>, null)|. + * + * Example: + * <script> + * canvas = document.createElement("canvas"); + * canvas.setAttribute("width", 100); + * canvas.setAttribute("height", 100); + * // draw to canvas + * document.mozSetImageElement("canvasbg", canvas); + * </script> + * <div style="background-image: -moz-element(#canvasbg);"></div> + * + * @param aImageElementId an image element ID to associate with + * |aImageElement| + * @param aImageElement a DOM element to be used as the source image of + * |-moz-element(#aImageElementId)|. If this is null, the function will + * unregister the image element ID |aImageElementId|. + * + * @see <https://developer.mozilla.org/en/DOM/document.mozSetImageElement> + */ + void mozSetImageElement(DOMString aImageElementId, + Element? aImageElement); + + [ChromeOnly] + readonly attribute URI? documentURIObject; + + /** + * Current referrer policy - one of the REFERRER_POLICY_* constants + * from nsIHttpChannel. + */ + [ChromeOnly] + readonly attribute unsigned long referrerPolicy; + +}; + +// 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, Func="nsDocument::IsUnprefixedFullscreenEnabled"] + readonly attribute boolean fullscreen; + [BinaryName="fullscreen"] + readonly attribute boolean mozFullScreen; + [LenientSetter, Func="nsDocument::IsUnprefixedFullscreenEnabled"] + readonly attribute boolean fullscreenEnabled; + [BinaryName="fullscreenEnabled"] + readonly attribute boolean mozFullScreenEnabled; + [LenientSetter, Func="nsDocument::IsUnprefixedFullscreenEnabled"] + readonly attribute Element? fullscreenElement; + [BinaryName="fullscreenElement"] + readonly attribute Element? mozFullScreenElement; + + [Func="nsDocument::IsUnprefixedFullscreenEnabled"] + void exitFullscreen(); + [BinaryName="exitFullscreen"] + void mozCancelFullScreen(); + + // 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 { + readonly attribute Element? pointerLockElement; + [BinaryName="pointerLockElement", Pref="pointer-lock-api.prefixed.enabled"] + readonly attribute Element? mozPointerLockElement; + void exitPointerLock(); + [BinaryName="exitPointerLock", Pref="pointer-lock-api.prefixed.enabled"] + void mozExitPointerLock(); + + // Event handlers + attribute EventHandler onpointerlockchange; + attribute EventHandler onpointerlockerror; +}; + +//http://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/custom/index.html#dfn-document-register +partial interface Document { + // this is deprecated from CustomElements v0 + [Throws, Func="CustomElementRegistry::IsCustomElementEnabled"] + object registerElement(DOMString name, optional ElementRegistrationOptions options); +}; + +// http://dvcs.w3.org/hg/webperf/raw-file/tip/specs/PageVisibility/Overview.html#sec-document-interface +partial interface Document { + readonly attribute boolean hidden; + readonly attribute VisibilityState visibilityState; +}; + +// http://dev.w3.org/csswg/cssom/#extensions-to-the-document-interface +partial interface Document { + [Constant] + readonly attribute StyleSheetList styleSheets; + attribute DOMString? selectedStyleSheetSet; + readonly attribute DOMString? lastStyleSheetSet; + readonly attribute DOMString? preferredStyleSheetSet; + [Constant] + readonly attribute DOMStringList styleSheetSets; + void enableStyleSheetsForSet (DOMString? name); +}; + +// http://dev.w3.org/csswg/cssom-view/#extensions-to-the-document-interface +partial interface Document { + Element? elementFromPoint (float x, float y); + sequence<Element> elementsFromPoint (float x, float y); + 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); +}; + +// http://w3c.github.io/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; +}; + +// Mozilla extensions of various sorts +partial interface Document { + // nsIDOMDocumentXBL. Wish we could make these [ChromeOnly], but + // that would likely break bindings running with the page principal. + [Func="IsChromeOrXBL"] + NodeList? getAnonymousNodes(Element elt); + [Func="IsChromeOrXBL"] + Element? getAnonymousElementByAttribute(Element elt, DOMString attrName, + DOMString attrValue); + [Func="IsChromeOrXBL"] + Element? getBindingParent(Node node); + [Throws, Func="IsChromeOrXBL", NeedsSubjectPrincipal] + void loadBindingDocument(DOMString documentURL); + + // nsIDOMDocumentTouch + // XXXbz I can't find the sane spec for this stuff, so just cribbing + // from our xpidl for now. + [NewObject, Func="nsGenericHTMLElement::TouchEventsEnabled"] + Touch createTouch(optional Window? view = null, + optional EventTarget? target = null, + optional long identifier = 0, + optional long pageX = 0, + optional long pageY = 0, + optional long screenX = 0, + optional long screenY = 0, + optional long clientX = 0, + optional long clientY = 0, + optional long radiusX = 0, + optional long radiusY = 0, + optional float rotationAngle = 0, + optional float force = 0); + // XXXbz a hack to get around the fact that we don't support variadics as + // distinguishing arguments yet. Once this hack is removed. we can also + // remove the corresponding overload on nsIDocument, since Touch... and + // sequence<Touch> look the same in the C++. + [NewObject, Func="nsGenericHTMLElement::TouchEventsEnabled"] + TouchList createTouchList(Touch touch, Touch... touches); + // XXXbz and another hack for the fact that we can't usefully have optional + // distinguishing arguments but need a working zero-arg form of + // createTouchList(). + [NewObject, Func="nsGenericHTMLElement::TouchEventsEnabled"] + TouchList createTouchList(); + [NewObject, Func="nsGenericHTMLElement::TouchEventsEnabled"] + TouchList createTouchList(sequence<Touch> touches); + + [ChromeOnly] + attribute boolean styleSheetChangeEventsEnabled; + + [ChromeOnly, Throws] + void obsoleteSheet(URI sheetURI); + [ChromeOnly, Throws] + void obsoleteSheet(DOMString sheetURI); + + [ChromeOnly] readonly attribute nsIDocShell? docShell; + + [ChromeOnly] readonly attribute DOMString contentLanguage; + + [ChromeOnly] readonly attribute nsILoadGroup? documentLoadGroup; + + // like documentURI, except that for error pages, it returns the URI we were + // trying to load when we hit an error, rather than the error page's own URI. + [ChromeOnly] readonly attribute URI? mozDocumentURIIfNotForErrorPages; +}; + +// 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] + void removeAnonymousContent(AnonymousContent aContent); +}; + +// 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 and XBL JS the ability to determine whether +// the document is sandboxed without permission to run scripts +// and whether inline scripts are blocked by the document's CSP. +partial interface Document { + [Func="IsChromeOrXBL"] readonly attribute boolean hasScriptsBlockedBySandbox; + [Func="IsChromeOrXBL"] readonly attribute boolean inlineScriptAllowedByCSP; +}; + +Document implements XPathEvaluator; +Document implements GlobalEventHandlers; +Document implements TouchEventHandlers; +Document implements ParentNode; +Document implements OnErrorEventHandlerForNodes; +Document implements GeometryUtils; +Document implements FontFaceSource; diff --git a/dom/webidl/DocumentFragment.webidl b/dom/webidl/DocumentFragment.webidl new file mode 100644 index 0000000000..0f814666fb --- /dev/null +++ b/dom/webidl/DocumentFragment.webidl @@ -0,0 +1,27 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/2012/WD-dom-20120405/#interface-documentfragment + * http://www.w3.org/TR/2012/WD-selectors-api-20120628/#interface-definitions + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +[Constructor] +interface DocumentFragment : Node { + Element? getElementById(DOMString elementId); +}; + +// http://www.w3.org/TR/2012/WD-selectors-api-20120628/#interface-definitions +partial interface DocumentFragment { + [Throws] + Element? querySelector(DOMString selectors); + [Throws] + NodeList querySelectorAll(DOMString selectors); +}; + +DocumentFragment implements ParentNode; diff --git a/dom/webidl/DocumentTimeline.webidl b/dom/webidl/DocumentTimeline.webidl new file mode 100644 index 0000000000..916b1a4911 --- /dev/null +++ b/dom/webidl/DocumentTimeline.webidl @@ -0,0 +1,20 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * https://w3c.github.io/web-animations/#documenttimeline + * + * Copyright © 2015 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +dictionary DocumentTimelineOptions { + DOMHighResTimeStamp originTime = 0; +}; + +[Func="nsDocument::IsWebAnimationsEnabled", + Constructor (optional DocumentTimelineOptions options)] +interface DocumentTimeline : AnimationTimeline { +}; diff --git a/dom/webidl/DocumentType.webidl b/dom/webidl/DocumentType.webidl new file mode 100644 index 0000000000..89190266fd --- /dev/null +++ b/dom/webidl/DocumentType.webidl @@ -0,0 +1,19 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://dom.spec.whatwg.org/#documenttype + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface DocumentType : Node { + readonly attribute DOMString name; + readonly attribute DOMString publicId; + readonly attribute DOMString systemId; +}; + +DocumentType implements ChildNode; diff --git a/dom/webidl/DominatorTree.webidl b/dom/webidl/DominatorTree.webidl new file mode 100644 index 0000000000..7eac4a8be2 --- /dev/null +++ b/dom/webidl/DominatorTree.webidl @@ -0,0 +1,70 @@ +/* -*- 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/. + */ + +typedef unsigned long long NodeId; +typedef unsigned long long NodeSize; + +/** + * In a directed graph with a root node `R`, a node `A` is said to "dominate" a + * node `B` iff every path from `R` to `B` contains `A`. A node `A` is said to + * be the "immediate dominator" of a node `B` iff it dominates `B`, is not `B` + * itself, and does not dominate any other nodes which also dominate `B` in + * turn. + * + * If we take every node from a graph `G` and create a new graph `T` with edges + * to each node from its immediate dominator, then `T` is a tree (each node has + * only one immediate dominator, or none if it is the root). This tree is called + * a "dominator tree". + * + * This interface represents a dominator tree constructed from a HeapSnapshot's + * heap graph. The domination relationship and dominator trees are useful tools + * for analyzing heap graphs because they tell you: + * + * - Exactly what could be reclaimed by the GC if some node `A` became + * unreachable: those nodes which are dominated by `A`, + * + * - The "retained size" of a node in the heap graph, in contrast to its + * "shallow size". The "shallow size" is the space taken by a node itself, + * not counting anything it references. The "retained size" of a node is its + * shallow size plus the size of all the things that would be collected if + * the original node wasn't (directly or indirectly) referencing them. In + * other words, the retained size is the shallow size of a node plus the + * shallow sizes of every other node it dominates. For example, the root + * node in a binary tree might have a small shallow size that does not take + * up much space itself, but it dominates the rest of the binary tree and + * its retained size is therefore significant (assuming no external + * references into the tree). + */ +[ChromeOnly, Exposed=(Window,System,Worker)] +interface DominatorTree { + /** + * The `NodeId` for the root of the dominator tree. This is a "meta-root" in + * that it has an edge to each GC root in the heap snapshot this dominator + * tree was created from. + */ + readonly attribute NodeId root; + + /** + * Get the retained size of the node with the given id. If given an invalid + * id, null is returned. Throws an error on OOM. + */ + [Throws] + NodeSize? getRetainedSize(NodeId node); + + /** + * Get the set of ids of nodes immediately dominated by the node with the + * given id. The resulting array is sorted by greatest to least retained + * size. If given an invalid id, null is returned. Throws an error on OOM. + */ + [Throws] + sequence<NodeId>? getImmediatelyDominated(NodeId node); + + /** + * Get the immediate dominator of the node with the given id. Returns null if + * given an invalid id, or the id of the root node. + */ + NodeId? getImmediateDominator(NodeId node); +}; diff --git a/dom/webidl/DownloadEvent.webidl b/dom/webidl/DownloadEvent.webidl new file mode 100644 index 0000000000..8422ba62bb --- /dev/null +++ b/dom/webidl/DownloadEvent.webidl @@ -0,0 +1,18 @@ +/* -*- 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/. + */ + +[Constructor(DOMString type, optional DownloadEventInit eventInitDict), + Pref="dom.mozDownloads.enabled", + ChromeOnly] +interface DownloadEvent : Event +{ + readonly attribute DOMDownload? download; +}; + +dictionary DownloadEventInit : EventInit +{ + DOMDownload? download = null; +}; diff --git a/dom/webidl/Downloads.webidl b/dom/webidl/Downloads.webidl new file mode 100644 index 0000000000..ff840eac6c --- /dev/null +++ b/dom/webidl/Downloads.webidl @@ -0,0 +1,166 @@ +/* -*- 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/. + */ + +// Represents the state of a download. +// "downloading": The resource is actively transfering. +// "stopped" : No network tranfer is happening. +// "succeeded" : The resource has been downloaded successfully. +// "finalized" : We won't try to download this resource, but the DOM +// object is still alive. +enum DownloadState { + "downloading", + "stopped", + "succeeded", + "finalized" +}; + +[NoInterfaceObject, + NavigatorProperty="mozDownloadManager", + JSImplementation="@mozilla.org/downloads/manager;1", + Pref="dom.mozDownloads.enabled", + ChromeOnly] +interface DOMDownloadManager : EventTarget { + // This promise returns an array of downloads with all the current + // download objects. + Promise<sequence<DOMDownload>> getDownloads(); + + // Removes one download from the downloads set. Returns a promise resolved + // with the finalized download. + [UnsafeInPrerendering] + Promise<DOMDownload> remove(DOMDownload download); + + // Removes all completed downloads. This kicks off an asynchronous process + // that will eventually complete, but will not have completed by the time this + // method returns. If you care about the side-effects of this method, know + // that each existing download will have its onstatechange method invoked and + // will have a new state of "finalized". (After the download is finalized, no + // further events will be generated on it.) + [UnsafeInPrerendering] + void clearAllDone(); + + // Add completed downloads from applications that must perform the download + // process themselves. For example, email. The method is resolved with a + // fully populated DOMDownload instance on success, or rejected in the + // event all required options were not provided. + // + // The adopted download will also be reported via the ondownloadstart event + // handler. + // + // Applications must currently be certified to use this, but it could be + // widened at a later time. + // + // Note that "download" is not actually optional, but WebIDL requires that it + // be marked as such because it is not followed by a required argument. The + // promise will be rejected if the dictionary is omitted or the specified + // file does not exist on disk. + Promise<DOMDownload> adoptDownload(optional AdoptDownloadDict download); + + // Fires when a new download starts. + attribute EventHandler ondownloadstart; +}; + +[JSImplementation="@mozilla.org/downloads/download;1", + Pref="dom.mozDownloads.enabled", + ChromeOnly] +interface DOMDownload : EventTarget { + // The full size of the resource. + readonly attribute long long totalBytes; + + // The number of bytes that we have currently downloaded. + readonly attribute long long currentBytes; + + // The url of the resource. + readonly attribute DOMString url; + + // The full path in local storage where the file will end up once the download + // is complete. This is equivalent to the concatenation of the 'storagePath' + // to the 'mountPoint' of the nsIVolume associated with the 'storageName' + // (with delimiter). + readonly attribute DOMString path; + + // The DeviceStorage volume name on which the file is being downloaded. + readonly attribute DOMString storageName; + + // The DeviceStorage path on the volume with 'storageName' of the file being + // downloaded. + readonly attribute DOMString storagePath; + + // The state of the download. One of: downloading, stopped, succeeded, or + // finalized. A finalized download is a download that has been removed / + // cleared and is no longer tracked by the download manager and will not + // receive any further onstatechange updates. + readonly attribute DownloadState state; + + // The mime type for this resource. + readonly attribute DOMString contentType; + + // The timestamp this download started. + readonly attribute Date startTime; + + // An opaque identifier for this download. All instances of the same + // download (eg. in different windows) will have the same id. + readonly attribute DOMString id; + + // The manifestURL of the application that added this download. Only used for + // downloads added via the adoptDownload API call. + readonly attribute DOMString? sourceAppManifestURL; + + // A DOM error object, that will be not null when a download is stopped + // because something failed. + readonly attribute DOMError? error; + + // Pauses the download. + [UnsafeInPrerendering] + Promise<DOMDownload> pause(); + + // Resumes the download. This resolves only once the download has + // succeeded. + [UnsafeInPrerendering] + Promise<DOMDownload> resume(); + + // This event is triggered anytime a property of the object changes: + // - when the transfer progresses, updating currentBytes. + // - when the state and/or error attributes change. + attribute EventHandler onstatechange; +}; + +// Used to initialize the DOMDownload object for adopted downloads. +// fields directly maps to the DOMDownload fields. +dictionary AdoptDownloadDict { + // The URL of this resource if there is one available. An empty string if + // the download is not accessible via URL. An empty string is chosen over + // null so that existinc code does not need to null-check but the value is + // still falsey. (Note: If you do have a usable URL, you should probably not + // be using the adoptDownload API and instead be initiating downloads the + // normal way.) + DOMString url; + + // The storageName of the DeviceStorage instance the file was saved to. + // Required but marked as optional so the bindings don't auto-coerce the value + // null to "null". + DOMString? storageName; + // The path of the file within the DeviceStorage instance named by + // 'storageName'. This is used to automatically compute the 'path' of the + // download. Note that when DeviceStorage gives you a path to a file, the + // first path segment is the name of the specific device storage and you do + // *not* want to include this. For example, if DeviceStorage tells you the + // file has a path of '/sdcard1/actual/path/file.ext', then the storageName + // should be 'sdcard1' and the storagePath should be 'actual/path/file.ext'. + // + // The existence of the file will be validated will be validated with stat() + // and the size the file-system tells us will be what we use. + // + // Required but marked as optional so the bindings don't auto-coerce the value + // null to "null". + DOMString? storagePath; + + // The mime type for this resource. Required, but marked as optional because + // WebIDL otherwise auto-coerces the value null to "null". + DOMString? contentType; + + // The time the download was started. If omitted, the current time is used. + Date? startTime; +}; diff --git a/dom/webidl/DragEvent.webidl b/dom/webidl/DragEvent.webidl new file mode 100644 index 0000000000..2cc173d5ca --- /dev/null +++ b/dom/webidl/DragEvent.webidl @@ -0,0 +1,33 @@ +/* -*- 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/. + */ + +[Constructor(DOMString type, optional DragEventInit eventInitDict)] +interface DragEvent : MouseEvent +{ + readonly attribute DataTransfer? dataTransfer; + + void initDragEvent(DOMString type, + boolean canBubble, + boolean cancelable, + Window? aView, + long aDetail, + long aScreenX, + long aScreenY, + long aClientX, + long aClientY, + boolean aCtrlKey, + boolean aAltKey, + boolean aShiftKey, + boolean aMetaKey, + unsigned short aButton, + EventTarget? aRelatedTarget, + DataTransfer? aDataTransfer); +}; + +dictionary DragEventInit : MouseEventInit +{ + DataTransfer? dataTransfer = null; +}; diff --git a/dom/webidl/DynamicsCompressorNode.webidl b/dom/webidl/DynamicsCompressorNode.webidl new file mode 100644 index 0000000000..dc0e46f63a --- /dev/null +++ b/dom/webidl/DynamicsCompressorNode.webidl @@ -0,0 +1,27 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * https://webaudio.github.io/web-audio-api/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +[Pref="dom.webaudio.enabled"] +interface DynamicsCompressorNode : AudioNode { + + readonly attribute AudioParam threshold; // in Decibels + readonly attribute AudioParam knee; // in Decibels + readonly attribute AudioParam ratio; // unit-less + readonly attribute float reduction; // in Decibels + readonly attribute AudioParam attack; // in Seconds + readonly attribute AudioParam release; // in Seconds + +}; + +// Mozilla extension +DynamicsCompressorNode implements AudioNodePassThrough; + diff --git a/dom/webidl/Element.webidl b/dom/webidl/Element.webidl new file mode 100644 index 0000000000..ca5f1b35cd --- /dev/null +++ b/dom/webidl/Element.webidl @@ -0,0 +1,259 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://dom.spec.whatwg.org/#element and + * http://domparsing.spec.whatwg.org/ and + * http://dev.w3.org/csswg/cssom-view/ and + * http://www.w3.org/TR/selectors-api/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface Element : Node { + [Constant] + readonly attribute DOMString? namespaceURI; + [Constant] + readonly attribute DOMString? prefix; + [Constant] + readonly attribute DOMString localName; + + // Not [Constant] because it depends on which document we're in + [Pure] + readonly attribute DOMString tagName; + + [Pure] + attribute DOMString id; + [Pure] + attribute DOMString className; + [Constant, PutForwards=value] + readonly attribute DOMTokenList classList; + + [SameObject] + readonly attribute NamedNodeMap attributes; + [Pure] + sequence<DOMString> getAttributeNames(); + [Pure] + DOMString? getAttribute(DOMString name); + [Pure] + DOMString? getAttributeNS(DOMString? namespace, DOMString localName); + [Throws] + void setAttribute(DOMString name, DOMString value); + [Throws] + void setAttributeNS(DOMString? namespace, DOMString name, DOMString value); + [Throws] + void removeAttribute(DOMString name); + [Throws] + void removeAttributeNS(DOMString? namespace, DOMString localName); + [Pure] + boolean hasAttribute(DOMString name); + [Pure] + boolean hasAttributeNS(DOMString? namespace, DOMString localName); + [Pure] + boolean hasAttributes(); + + [Throws, Pure] + Element? closest(DOMString selector); + + [Throws, Pure] + boolean matches(DOMString selector); + [Throws, Pure, BinaryName="matches"] + boolean webkitMatchesSelector(DOMString selector); + + [Pure] + HTMLCollection getElementsByTagName(DOMString localName); + [Throws, Pure] + HTMLCollection getElementsByTagNameNS(DOMString? namespace, DOMString localName); + [Pure] + HTMLCollection getElementsByClassName(DOMString classNames); + + [Throws, Pure] + Element? insertAdjacentElement(DOMString where, Element element); // historical + + [Throws] + void insertAdjacentText(DOMString where, DOMString data); // historical + + /** + * The ratio of font-size-inflated text font size to computed font + * size for this element. This will query the element for its primary frame, + * and then use this to get font size inflation information about the frame. + * This will be 1.0 if font size inflation is not enabled, and -1.0 if an + * error occurred during the retrieval of the font size inflation. + * + * @note The font size inflation ratio that is returned is actually the + * font size inflation data for the element's _primary frame_, not the + * element itself, but for most purposes, this should be sufficient. + */ + [ChromeOnly] + readonly attribute float fontSizeInflation; + + // Mozilla specific stuff + [Pure] + attribute EventHandler onwheel; + + // Selectors API + /** + * Returns whether this element would be selected by the given selector + * string. + * + * See <http://dev.w3.org/2006/webapi/selectors-api2/#matchesselector> + */ + [Throws, Pure, BinaryName="matches"] + boolean mozMatchesSelector(DOMString selector); + + // Pointer events methods. + [Throws, Pref="dom.w3c_pointer_events.enabled", UnsafeInPrerendering] + void setPointerCapture(long pointerId); + + [Throws, Pref="dom.w3c_pointer_events.enabled"] + void releasePointerCapture(long pointerId); + + [Pref="dom.w3c_pointer_events.enabled"] + boolean hasPointerCapture(long pointerId); + + // Proprietary extensions + /** + * Set this during a mousedown event to grab and retarget all mouse events + * to this element until the mouse button is released or releaseCapture is + * called. If retargetToElement is true, then all events are targetted at + * this element. If false, events can also fire at descendants of this + * element. + * + */ + void setCapture(optional boolean retargetToElement = false); + + /** + * If this element has captured the mouse, release the capture. If another + * element has captured the mouse, this method has no effect. + */ + void releaseCapture(); + + // Mozilla extensions + + // Obsolete methods. + Attr? getAttributeNode(DOMString name); + [Throws] + Attr? setAttributeNode(Attr newAttr); + [Throws] + Attr? removeAttributeNode(Attr oldAttr); + Attr? getAttributeNodeNS(DOMString? namespaceURI, DOMString localName); + [Throws] + Attr? setAttributeNodeNS(Attr newAttr); + + [ChromeOnly] + /** + * Scrolls the element by (dx, dy) CSS pixels without doing any + * layout flushing. + */ + boolean scrollByNoFlush(long dx, long dy); + + // Support reporting of Grid properties + + /** + * If this element has a display:grid or display:inline-grid style, + * this property returns an object with computed values for grid + * tracks and lines. + */ + [ChromeOnly, Pure] + sequence<Grid> getGridFragments(); +}; + +// http://dev.w3.org/csswg/cssom-view/ +enum ScrollLogicalPosition { "start", "end" }; +dictionary ScrollIntoViewOptions : ScrollOptions { + ScrollLogicalPosition block = "start"; +}; + +// http://dev.w3.org/csswg/cssom-view/#extensions-to-the-element-interface +partial interface Element { + DOMRectList getClientRects(); + DOMRect getBoundingClientRect(); + + // scrolling + void scrollIntoView(boolean top); + void scrollIntoView(optional ScrollIntoViewOptions options); + // None of the CSSOM attributes are [Pure], because they flush + attribute long scrollTop; // scroll on setting + attribute long scrollLeft; // scroll on setting + readonly attribute long scrollWidth; + readonly attribute long scrollHeight; + + void scroll(unrestricted double x, unrestricted double y); + void scroll(optional ScrollToOptions options); + void scrollTo(unrestricted double x, unrestricted double y); + void scrollTo(optional ScrollToOptions options); + void scrollBy(unrestricted double x, unrestricted double y); + void scrollBy(optional ScrollToOptions options); + // mozScrollSnap is used by chrome to perform scroll snapping after the + // user performs actions that may affect scroll position + // mozScrollSnap is deprecated, to be replaced by a web accessible API, such + // as an extension to the ScrollOptions dictionary. See bug 1137937. + [ChromeOnly] void mozScrollSnap(); + + readonly attribute long clientTop; + readonly attribute long clientLeft; + readonly attribute long clientWidth; + readonly attribute long clientHeight; + + // Mozilla specific stuff + /* The minimum/maximum offset that the element can be scrolled to + (i.e., the value that scrollLeft/scrollTop would be clamped to if they were + set to arbitrarily large values. */ + [ChromeOnly] readonly attribute long scrollTopMin; + readonly attribute long scrollTopMax; + [ChromeOnly] readonly attribute long scrollLeftMin; + readonly attribute long scrollLeftMax; +}; + +// http://domparsing.spec.whatwg.org/#extensions-to-the-element-interface +partial interface Element { + [Pure,SetterThrows,TreatNullAs=EmptyString] + attribute DOMString innerHTML; + [Pure,SetterThrows,TreatNullAs=EmptyString] + attribute DOMString outerHTML; + [Throws] + void insertAdjacentHTML(DOMString position, DOMString text); +}; + +// http://www.w3.org/TR/selectors-api/#interface-definitions +partial interface Element { + [Throws, Pure] + Element? querySelector(DOMString selectors); + [Throws, Pure] + NodeList querySelectorAll(DOMString selectors); +}; + +// http://w3c.github.io/webcomponents/spec/shadow/#extensions-to-element-interface +partial interface Element { + [Throws,Func="nsDocument::IsWebComponentsEnabled"] + ShadowRoot createShadowRoot(); + [Func="nsDocument::IsWebComponentsEnabled"] + NodeList getDestinationInsertionPoints(); + [Func="nsDocument::IsWebComponentsEnabled"] + readonly attribute ShadowRoot? shadowRoot; +}; + +Element implements ChildNode; +Element implements NonDocumentTypeChildNode; +Element implements ParentNode; +Element implements Animatable; +Element implements GeometryUtils; + +// https://fullscreen.spec.whatwg.org/#api +partial interface Element { + [Throws, UnsafeInPrerendering, Func="nsDocument::IsUnprefixedFullscreenEnabled"] + void requestFullscreen(); + [Throws, UnsafeInPrerendering, BinaryName="requestFullscreen"] + void mozRequestFullScreen(); +}; + +// https://w3c.github.io/pointerlock/#extensions-to-the-element-interface +partial interface Element { + [UnsafeInPrerendering] + void requestPointerLock(); + [UnsafeInPrerendering, BinaryName="requestPointerLock", Pref="pointer-lock-api.prefixed.enabled"] + void mozRequestPointerLock(); +}; diff --git a/dom/webidl/ErrorEvent.webidl b/dom/webidl/ErrorEvent.webidl new file mode 100644 index 0000000000..5d12b879f2 --- /dev/null +++ b/dom/webidl/ErrorEvent.webidl @@ -0,0 +1,24 @@ +/* -*- 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/. */ + +[Constructor(DOMString type, optional ErrorEventInit eventInitDict), + Exposed=(Window,System)] +interface ErrorEvent : Event +{ + readonly attribute DOMString message; + readonly attribute DOMString filename; + readonly attribute unsigned long lineno; + readonly attribute unsigned long colno; + readonly attribute any error; +}; + +dictionary ErrorEventInit : EventInit +{ + DOMString message = ""; + DOMString filename = ""; + unsigned long lineno = 0; + unsigned long colno = 0; + any error = null; +}; diff --git a/dom/webidl/Event.webidl b/dom/webidl/Event.webidl new file mode 100644 index 0000000000..f87dc195ca --- /dev/null +++ b/dom/webidl/Event.webidl @@ -0,0 +1,75 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/2012/WD-dom-20120105/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +[Constructor(DOMString type, optional EventInit eventInitDict), + Exposed=(Window,Worker,System), ProbablyShortLivingObject] +interface Event { + [Pure] + readonly attribute DOMString type; + [Pure] + readonly attribute EventTarget? target; + [Pure] + readonly attribute EventTarget? currentTarget; + + const unsigned short NONE = 0; + const unsigned short CAPTURING_PHASE = 1; + const unsigned short AT_TARGET = 2; + const unsigned short BUBBLING_PHASE = 3; + [Pure] + readonly attribute unsigned short eventPhase; + + void stopPropagation(); + void stopImmediatePropagation(); + + [Pure] + readonly attribute boolean bubbles; + [Pure] + readonly attribute boolean cancelable; + void preventDefault(); + [Pure] + readonly attribute boolean defaultPrevented; + [ChromeOnly, Pure] + readonly attribute boolean defaultPreventedByChrome; + [ChromeOnly, Pure] + readonly attribute boolean defaultPreventedByContent; + [Pure] + readonly attribute boolean composed; + + [Unforgeable, Pure] + readonly attribute boolean isTrusted; + [Pure] + readonly attribute DOMHighResTimeStamp timeStamp; + + void initEvent(DOMString type, boolean bubbles, boolean cancelable); + attribute boolean cancelBubble; +}; + +// Mozilla specific legacy stuff. +partial interface Event { + const long ALT_MASK = 0x00000001; + const long CONTROL_MASK = 0x00000002; + const long SHIFT_MASK = 0x00000004; + const long META_MASK = 0x00000008; + + readonly attribute EventTarget? originalTarget; + readonly attribute EventTarget? explicitOriginalTarget; + [ChromeOnly] readonly attribute EventTarget? composedTarget; + [ChromeOnly] readonly attribute boolean multipleActionsPrevented; + [ChromeOnly] readonly attribute boolean isSynthesized; + boolean getPreventDefault(); +}; + +dictionary EventInit { + boolean bubbles = false; + boolean cancelable = false; + boolean composed = false; +}; diff --git a/dom/webidl/EventHandler.webidl b/dom/webidl/EventHandler.webidl new file mode 100644 index 0000000000..e65a757873 --- /dev/null +++ b/dom/webidl/EventHandler.webidl @@ -0,0 +1,178 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.whatwg.org/specs/web-apps/current-work/#eventhandler + * + * © Copyright 2004-2011 Apple Computer, Inc., Mozilla Foundation, and + * Opera Software ASA. You are granted a license to use, reproduce + * and create derivative works of this document. + */ +[TreatNonObjectAsNull] +callback EventHandlerNonNull = any (Event event); +typedef EventHandlerNonNull? EventHandler; + +[TreatNonObjectAsNull] +// https://www.w3.org/Bugs/Public/show_bug.cgi?id=23489 +//callback OnBeforeUnloadEventHandlerNonNull = DOMString (Event event); +callback OnBeforeUnloadEventHandlerNonNull = DOMString? (Event event); +typedef OnBeforeUnloadEventHandlerNonNull? OnBeforeUnloadEventHandler; + +[TreatNonObjectAsNull] +callback OnErrorEventHandlerNonNull = boolean ((Event or DOMString) event, optional DOMString source, optional unsigned long lineno, optional unsigned long column, optional any error); +typedef OnErrorEventHandlerNonNull? OnErrorEventHandler; + +[NoInterfaceObject] +interface GlobalEventHandlers { + attribute EventHandler onabort; + attribute EventHandler onblur; +// We think the spec is wrong here. See OnErrorEventHandlerForNodes/Window +// below. +// attribute OnErrorEventHandler onerror; + attribute EventHandler onfocus; + //(Not implemented)attribute EventHandler oncancel; + attribute EventHandler oncanplay; + attribute EventHandler oncanplaythrough; + attribute EventHandler onchange; + attribute EventHandler onclick; + //(Not implemented)attribute EventHandler onclose; + attribute EventHandler oncontextmenu; + //(Not implemented)attribute EventHandler oncuechange; + attribute EventHandler ondblclick; + attribute EventHandler ondrag; + attribute EventHandler ondragend; + attribute EventHandler ondragenter; + attribute EventHandler ondragexit; + attribute EventHandler ondragleave; + attribute EventHandler ondragover; + attribute EventHandler ondragstart; + attribute EventHandler ondrop; + attribute EventHandler ondurationchange; + attribute EventHandler onemptied; + attribute EventHandler onended; + attribute EventHandler oninput; + attribute EventHandler oninvalid; + attribute EventHandler onkeydown; + attribute EventHandler onkeypress; + attribute EventHandler onkeyup; + attribute EventHandler onload; + attribute EventHandler onloadeddata; + attribute EventHandler onloadedmetadata; + attribute EventHandler onloadend; + attribute EventHandler onloadstart; + attribute EventHandler onmousedown; + [LenientThis] attribute EventHandler onmouseenter; + [LenientThis] attribute EventHandler onmouseleave; + attribute EventHandler onmousemove; + attribute EventHandler onmouseout; + attribute EventHandler onmouseover; + attribute EventHandler onmouseup; + //(Not implemented)attribute EventHandler onmousewheel; + attribute EventHandler onpause; + attribute EventHandler onplay; + attribute EventHandler onplaying; + attribute EventHandler onprogress; + attribute EventHandler onratechange; + attribute EventHandler onreset; + attribute EventHandler onresize; + attribute EventHandler onscroll; + attribute EventHandler onseeked; + attribute EventHandler onseeking; + attribute EventHandler onselect; + attribute EventHandler onshow; + //(Not implemented)attribute EventHandler onsort; + attribute EventHandler onstalled; + attribute EventHandler onsubmit; + attribute EventHandler onsuspend; + attribute EventHandler ontimeupdate; + attribute EventHandler onvolumechange; + attribute EventHandler onwaiting; + + [Pref="dom.select_events.enabled"] + attribute EventHandler onselectstart; + + [Pref="dom.details_element.enabled"] + attribute EventHandler ontoggle; + + // Pointer events handlers + [Pref="dom.w3c_pointer_events.enabled"] + attribute EventHandler onpointercancel; + [Pref="dom.w3c_pointer_events.enabled"] + attribute EventHandler onpointerdown; + [Pref="dom.w3c_pointer_events.enabled"] + attribute EventHandler onpointerup; + [Pref="dom.w3c_pointer_events.enabled"] + attribute EventHandler onpointermove; + [Pref="dom.w3c_pointer_events.enabled"] + attribute EventHandler onpointerout; + [Pref="dom.w3c_pointer_events.enabled"] + attribute EventHandler onpointerover; + [Pref="dom.w3c_pointer_events.enabled"] + attribute EventHandler onpointerenter; + [Pref="dom.w3c_pointer_events.enabled"] + attribute EventHandler onpointerleave; + [Pref="dom.w3c_pointer_events.enabled"] + attribute EventHandler ongotpointercapture; + [Pref="dom.w3c_pointer_events.enabled"] + attribute EventHandler onlostpointercapture; + + // Mozilla-specific handlers. Unprefixed handlers live in + // Document rather than here. + attribute EventHandler onmozfullscreenchange; + attribute EventHandler onmozfullscreenerror; + [Pref="pointer-lock-api.prefixed.enabled"] + attribute EventHandler onmozpointerlockchange; + [Pref="pointer-lock-api.prefixed.enabled"] + attribute EventHandler onmozpointerlockerror; + + // CSS-Animation and CSS-Transition handlers. + attribute EventHandler onanimationend; + attribute EventHandler onanimationiteration; + attribute EventHandler onanimationstart; + attribute EventHandler ontransitionend; + // We will ship transitionrun and transitionstart events + // on Firefox 53. (For detail, see bug 1324985) +// attribute EventHandler ontransitionrun; +// attribute EventHandler ontransitionstart; + + // CSS-Animation and CSS-Transition legacy handlers. + // This handler isn't standard. + attribute EventHandler onwebkitanimationend; + attribute EventHandler onwebkitanimationiteration; + attribute EventHandler onwebkitanimationstart; + attribute EventHandler onwebkittransitionend; +}; + +[NoInterfaceObject] +interface WindowEventHandlers { + attribute EventHandler onafterprint; + attribute EventHandler onbeforeprint; + attribute OnBeforeUnloadEventHandler onbeforeunload; + attribute EventHandler onhashchange; + attribute EventHandler onlanguagechange; + attribute EventHandler onmessage; + attribute EventHandler onoffline; + attribute EventHandler ononline; + attribute EventHandler onpagehide; + attribute EventHandler onpageshow; + attribute EventHandler onpopstate; + attribute EventHandler onstorage; + attribute EventHandler onunload; +}; + +// The spec has |attribute OnErrorEventHandler onerror;| on +// GlobalEventHandlers, and calls the handler differently depending on +// whether an ErrorEvent was fired. We don't do that, and until we do we'll +// need to distinguish between onerror on Window or on nodes. + +[NoInterfaceObject] +interface OnErrorEventHandlerForNodes { + attribute EventHandler onerror; +}; + +[NoInterfaceObject] +interface OnErrorEventHandlerForWindow { + attribute OnErrorEventHandler onerror; +}; diff --git a/dom/webidl/EventListener.webidl b/dom/webidl/EventListener.webidl new file mode 100644 index 0000000000..46aa748d69 --- /dev/null +++ b/dom/webidl/EventListener.webidl @@ -0,0 +1,15 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/2012/WD-dom-20120105/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +callback interface EventListener { + void handleEvent(Event event); +}; diff --git a/dom/webidl/EventSource.webidl b/dom/webidl/EventSource.webidl new file mode 100644 index 0000000000..1e8e9978e5 --- /dev/null +++ b/dom/webidl/EventSource.webidl @@ -0,0 +1,36 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * https://html.spec.whatwg.org/multipage/comms.html#the-eventsource-interface + * + * © Copyright 2004-2011 Apple Computer, Inc., Mozilla Foundation, and + * Opera Software ASA. You are granted a license to use, reproduce + * and create derivative works of this document. + */ + +[Constructor(USVString url, optional EventSourceInit eventSourceInitDict)] +interface EventSource : EventTarget { + [Constant] + readonly attribute DOMString url; + [Constant] + readonly attribute boolean withCredentials; + + // ready state + const unsigned short CONNECTING = 0; + const unsigned short OPEN = 1; + const unsigned short CLOSED = 2; + readonly attribute unsigned short readyState; + + // networking + attribute EventHandler onopen; + attribute EventHandler onmessage; + attribute EventHandler onerror; + void close(); +}; + +dictionary EventSourceInit { + boolean withCredentials = false; +}; diff --git a/dom/webidl/EventTarget.webidl b/dom/webidl/EventTarget.webidl new file mode 100644 index 0000000000..9e8a267ff4 --- /dev/null +++ b/dom/webidl/EventTarget.webidl @@ -0,0 +1,67 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/2012/WD-dom-20120105/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + + +dictionary EventListenerOptions { + boolean capture = false; + /* Setting to true make the listener be added to the system group. */ + [Func="ThreadSafeIsChromeOrXBL"] + boolean mozSystemGroup = false; +}; + +dictionary AddEventListenerOptions : EventListenerOptions { + boolean passive = false; + boolean once = false; +}; + +[Exposed=(Window,Worker,WorkerDebugger,System)] +interface EventTarget { + /* Passing null for wantsUntrusted means "default behavior", which + differs in content and chrome. In content that default boolean + value is true, while in chrome the default boolean value is + false. */ + [Throws] + void addEventListener(DOMString type, + EventListener? listener, + optional (AddEventListenerOptions or boolean) options, + optional boolean? wantsUntrusted = null); + [Throws] + void removeEventListener(DOMString type, + EventListener? listener, + optional (EventListenerOptions or boolean) options); + [Throws] + boolean dispatchEvent(Event event); +}; + +// Mozilla extensions for use by JS-implemented event targets to +// implement on* properties. +partial interface EventTarget { + // The use of [TreatNonCallableAsNull] here is a bit of a hack: it just makes + // the codegen check whether the type involved is either + // [TreatNonCallableAsNull] or [TreatNonObjectAsNull] and if it is handle it + // accordingly. In particular, it will NOT actually treat a non-null + // non-callable object as null here. + [ChromeOnly, Throws] + void setEventHandler(DOMString type, + [TreatNonCallableAsNull] EventHandler handler); + + [ChromeOnly] + EventHandler getEventHandler(DOMString type); +}; + +// Mozilla extension to make firing events on event targets from +// chrome easier. This returns the window which can be used to create +// events to fire at this EventTarget, or null if there isn't one. +partial interface EventTarget { + [ChromeOnly, Exposed=(Window,System), BinaryName="ownerGlobalForBindings"] + readonly attribute WindowProxy? ownerGlobal; +}; diff --git a/dom/webidl/ExtendableEvent.webidl b/dom/webidl/ExtendableEvent.webidl new file mode 100644 index 0000000000..01dc545efd --- /dev/null +++ b/dom/webidl/ExtendableEvent.webidl @@ -0,0 +1,20 @@ +/* -*- 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/. + * + * For more information on this interface, please see + * http://slightlyoff.github.io/ServiceWorker/spec/service_worker/index.html + */ + +[Constructor(DOMString type, optional ExtendableEventInit eventInitDict), + Exposed=ServiceWorker] +interface ExtendableEvent : Event { + // https://github.com/slightlyoff/ServiceWorker/issues/261 + [Throws] + void waitUntil(Promise<any> p); +}; + +dictionary ExtendableEventInit : EventInit { + // Defined for the forward compatibility across the derived events +}; diff --git a/dom/webidl/ExtendableMessageEvent.webidl b/dom/webidl/ExtendableMessageEvent.webidl new file mode 100644 index 0000000000..b2bdf6792a --- /dev/null +++ b/dom/webidl/ExtendableMessageEvent.webidl @@ -0,0 +1,44 @@ +/* -*- 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/. + * + * For more information on this interface, please see + * https://w3c.github.io/ServiceWorker/#extendablemessage-event-section + */ + +[Constructor(DOMString type, optional ExtendableMessageEventInit eventInitDict), + Exposed=(ServiceWorker)] +interface ExtendableMessageEvent : ExtendableEvent { + /** + * Custom data associated with this event. + */ + [GetterThrows] + readonly attribute any data; + + /** + * The origin of the site from which this event originated. + */ + readonly attribute DOMString origin; + + /** + * The last event ID string of the event source. + */ + readonly attribute DOMString lastEventId; + + /** + * The client, service worker or port which originated this event. + */ + readonly attribute (Client or ServiceWorker or MessagePort)? source; + + [Constant, Cached, Frozen] + readonly attribute sequence<MessagePort> ports; +}; + +dictionary ExtendableMessageEventInit : ExtendableEventInit { + any data = null; + DOMString origin = ""; + DOMString lastEventId = ""; + (Client or ServiceWorker or MessagePort)? source = null; + sequence<MessagePort> ports = []; +}; diff --git a/dom/webidl/External.webidl b/dom/webidl/External.webidl new file mode 100644 index 0000000000..890dff306e --- /dev/null +++ b/dom/webidl/External.webidl @@ -0,0 +1,19 @@ +/* -*- 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/. + */ + +[JSImplementation="@mozilla.org/sidebar;1"] +interface External +{ + [UnsafeInPrerendering] void AddSearchProvider(DOMString aDescriptionURL); + unsigned long IsSearchProviderInstalled(DOMString aSearchURL); +}; + +// Mozilla extension +partial interface External { + [UnsafeInPrerendering, UseCounter] + void addSearchEngine(DOMString engineURL, DOMString iconURL, + DOMString suggestedTitle, DOMString suggestedCategory); +}; diff --git a/dom/webidl/FakePluginTagInit.webidl b/dom/webidl/FakePluginTagInit.webidl new file mode 100644 index 0000000000..93cbad7f84 --- /dev/null +++ b/dom/webidl/FakePluginTagInit.webidl @@ -0,0 +1,39 @@ +/* -*- 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/. + */ + +/** + * A fake plugin is fundamentally identified by its handlerURI. + * + * In addition to that, a fake plugin registration needs to provide at least one + * FakePluginMimeEntry so we'll know what types(s) the plugin is registered for. + * Other information is optional, though having usable niceName is highly + * recommended. + */ +dictionary FakePluginTagInit { + required DOMString handlerURI; + required sequence<FakePluginMimeEntry> mimeEntries; + + // The niceName should really be provided, and be unique, if possible; it can + // be used as a key to persist state for this plug-in. + DOMString niceName = ""; + + // Other things can be provided but don't really matter that much. + DOMString fullPath = ""; + DOMString name = ""; + DOMString description = ""; + DOMString fileName = ""; + DOMString version = ""; +}; + +/** + * A single MIME entry for the fake plugin. + */ +dictionary FakePluginMimeEntry { + required DOMString type; + DOMString description = ""; + DOMString extension = ""; +}; + diff --git a/dom/webidl/Fetch.webidl b/dom/webidl/Fetch.webidl new file mode 100644 index 0000000000..4b2a0af7d0 --- /dev/null +++ b/dom/webidl/Fetch.webidl @@ -0,0 +1,26 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://fetch.spec.whatwg.org/ + */ + +typedef object JSON; +typedef (ArrayBuffer or ArrayBufferView or Blob or FormData or USVString or URLSearchParams) BodyInit; + +[NoInterfaceObject, Exposed=(Window,Worker)] +interface Body { + readonly attribute boolean bodyUsed; + [Throws] + Promise<ArrayBuffer> arrayBuffer(); + [Throws] + Promise<Blob> blob(); + [Throws] + Promise<FormData> formData(); + [Throws] + Promise<JSON> json(); + [Throws] + Promise<USVString> text(); +}; diff --git a/dom/webidl/FetchEvent.webidl b/dom/webidl/FetchEvent.webidl new file mode 100644 index 0000000000..3967c122ea --- /dev/null +++ b/dom/webidl/FetchEvent.webidl @@ -0,0 +1,26 @@ +/* -*- 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/. + * + * For more information on this interface, please see + * http://slightlyoff.github.io/ServiceWorker/spec/service_worker/index.html + */ + +[Constructor(DOMString type, FetchEventInit eventInitDict), + Func="mozilla::dom::workers::ServiceWorkerVisible", + Exposed=(ServiceWorker)] +interface FetchEvent : ExtendableEvent { + [SameObject] readonly attribute Request request; + readonly attribute DOMString? clientId; + readonly attribute boolean isReload; + + [Throws] + void respondWith(Promise<Response> r); +}; + +dictionary FetchEventInit : EventInit { + required Request request; + DOMString? clientId = null; + boolean isReload = false; +}; diff --git a/dom/webidl/File.webidl b/dom/webidl/File.webidl new file mode 100644 index 0000000000..cd3241c52c --- /dev/null +++ b/dom/webidl/File.webidl @@ -0,0 +1,50 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * https://w3c.github.io/FileAPI/#file + */ + +interface nsIFile; + +[Constructor(sequence<BlobPart> fileBits, + USVString fileName, optional FilePropertyBag options), + Exposed=(Window,Worker)] +interface File : Blob { + readonly attribute DOMString name; + + [GetterThrows] + readonly attribute long long lastModified; +}; + +dictionary FilePropertyBag { + DOMString type = ""; + long long lastModified; +}; + +dictionary ChromeFilePropertyBag : FilePropertyBag { + DOMString name = ""; + boolean temporary = false; +}; + +// Mozilla extensions +partial interface File { + [GetterThrows, Deprecated="FileLastModifiedDate"] + readonly attribute Date lastModifiedDate; + + [BinaryName="relativePath", Func="mozilla::dom::Directory::WebkitBlinkDirectoryPickerEnabled"] + readonly attribute USVString webkitRelativePath; + + [GetterThrows, ChromeOnly] + readonly attribute DOMString mozFullPath; + + [ChromeOnly, Throws] + static File createFromNsIFile(nsIFile file, + optional ChromeFilePropertyBag options); + + [ChromeOnly, Throws] + static File createFromFileName(USVString fileName, + optional ChromeFilePropertyBag options); +}; diff --git a/dom/webidl/FileList.webidl b/dom/webidl/FileList.webidl new file mode 100644 index 0000000000..84a56be1bf --- /dev/null +++ b/dom/webidl/FileList.webidl @@ -0,0 +1,16 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://dev.w3.org/2006/webapi/FileAPI/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface FileList { + getter File? item(unsigned long index); + readonly attribute unsigned long length; +}; diff --git a/dom/webidl/FileMode.webidl b/dom/webidl/FileMode.webidl new file mode 100644 index 0000000000..788c2c9bf0 --- /dev/null +++ b/dom/webidl/FileMode.webidl @@ -0,0 +1,5 @@ +/* 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/. */ + +enum FileMode { "readonly", "readwrite" }; diff --git a/dom/webidl/FileReader.webidl b/dom/webidl/FileReader.webidl new file mode 100644 index 0000000000..f3647aea42 --- /dev/null +++ b/dom/webidl/FileReader.webidl @@ -0,0 +1,55 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://dev.w3.org/2006/webapi/FileAPI/#dfn-filereader + * + * Copyright © 2013 W3C® (MIT, ERCIM, Keio, Beihang), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +[Constructor, + Exposed=(Window,Worker,System)] +interface FileReader : EventTarget { + // async read methods + [Throws] + void readAsArrayBuffer(Blob blob); + [Throws] + void readAsText(Blob blob, optional DOMString label = ""); + [Throws] + void readAsDataURL(Blob blob); + + [Throws] + void abort(); + + // states + const unsigned short EMPTY = 0; + const unsigned short LOADING = 1; + const unsigned short DONE = 2; + + + readonly attribute unsigned short readyState; + + // File or Blob data + // bug 858217: readonly attribute (DOMString or ArrayBuffer)? result; + [Throws] + readonly attribute any result; + + readonly attribute DOMError? error; + + // event handler attributes + attribute EventHandler onloadstart; + attribute EventHandler onprogress; + attribute EventHandler onload; + attribute EventHandler onabort; + attribute EventHandler onerror; + attribute EventHandler onloadend; +}; + +// Mozilla extensions. +partial interface FileReader { + [Throws] + void readAsBinaryString(Blob filedata); +}; diff --git a/dom/webidl/FileReaderSync.webidl b/dom/webidl/FileReaderSync.webidl new file mode 100644 index 0000000000..8b586f4a70 --- /dev/null +++ b/dom/webidl/FileReaderSync.webidl @@ -0,0 +1,27 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://dev.w3.org/2006/webapi/FileAPI/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +[Constructor, + Exposed=Worker] +interface FileReaderSync { + + // Synchronously return strings + + [Throws] + ArrayBuffer readAsArrayBuffer(Blob blob); + [Throws] + DOMString readAsBinaryString(Blob blob); + [Throws] + DOMString readAsText(Blob blob, optional DOMString encoding); + [Throws] + DOMString readAsDataURL(Blob blob); +}; diff --git a/dom/webidl/FileSystem.webidl b/dom/webidl/FileSystem.webidl new file mode 100644 index 0000000000..06b88c5ce9 --- /dev/null +++ b/dom/webidl/FileSystem.webidl @@ -0,0 +1,28 @@ +/* -*- 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/. + */ + + +dictionary FileSystemFlags { + boolean create = false; + boolean exclusive = false; +}; + +callback interface FileSystemEntryCallback { + void handleEvent(FileSystemEntry entry); +}; + +callback interface VoidCallback { + void handleEvent(); +}; + +callback interface ErrorCallback { + void handleEvent(DOMException err); +}; + +interface FileSystem { + readonly attribute USVString name; + readonly attribute FileSystemDirectoryEntry root; +}; diff --git a/dom/webidl/FileSystemDirectoryEntry.webidl b/dom/webidl/FileSystemDirectoryEntry.webidl new file mode 100644 index 0000000000..f972d216fc --- /dev/null +++ b/dom/webidl/FileSystemDirectoryEntry.webidl @@ -0,0 +1,19 @@ +/* -*- 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/. + */ + +interface FileSystemDirectoryEntry : FileSystemEntry { + FileSystemDirectoryReader createReader(); + + void getFile(optional USVString? path, + optional FileSystemFlags options, + optional FileSystemEntryCallback successCallback, + optional ErrorCallback errorCallback); + + void getDirectory(optional USVString? path, + optional FileSystemFlags options, + optional FileSystemEntryCallback successCallback, + optional ErrorCallback errorCallback); +}; diff --git a/dom/webidl/FileSystemDirectoryReader.webidl b/dom/webidl/FileSystemDirectoryReader.webidl new file mode 100644 index 0000000000..3be94830c9 --- /dev/null +++ b/dom/webidl/FileSystemDirectoryReader.webidl @@ -0,0 +1,18 @@ +/* -*- 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/. + */ + +callback interface FileSystemEntriesCallback { + void handleEvent(sequence<FileSystemEntry> entries); +}; + +interface FileSystemDirectoryReader { + + // readEntries can be called just once. The second time it returns no data. + + [Throws] + void readEntries(FileSystemEntriesCallback successCallback, + optional ErrorCallback errorCallback); +}; diff --git a/dom/webidl/FileSystemEntry.webidl b/dom/webidl/FileSystemEntry.webidl new file mode 100644 index 0000000000..af112282d2 --- /dev/null +++ b/dom/webidl/FileSystemEntry.webidl @@ -0,0 +1,21 @@ +/* -*- 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/. + */ + +interface FileSystemEntry { + readonly attribute boolean isFile; + readonly attribute boolean isDirectory; + + [GetterThrows] + readonly attribute USVString name; + + [GetterThrows] + readonly attribute USVString fullPath; + + readonly attribute FileSystem filesystem; + + void getParent(optional FileSystemEntryCallback successCallback, + optional ErrorCallback errorCallback); +}; diff --git a/dom/webidl/FileSystemFileEntry.webidl b/dom/webidl/FileSystemFileEntry.webidl new file mode 100644 index 0000000000..3f141e54af --- /dev/null +++ b/dom/webidl/FileSystemFileEntry.webidl @@ -0,0 +1,15 @@ +/* -*- 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/. + */ + +callback interface FileCallback { + void handleEvent(File file); +}; + +interface FileSystemFileEntry : FileSystemEntry { + [BinaryName="GetFile"] + void file (FileCallback successCallback, + optional ErrorCallback errorCallback); +}; diff --git a/dom/webidl/FlyWebDiscoveryManager.webidl b/dom/webidl/FlyWebDiscoveryManager.webidl new file mode 100644 index 0000000000..963cebf206 --- /dev/null +++ b/dom/webidl/FlyWebDiscoveryManager.webidl @@ -0,0 +1,39 @@ +/* -*- 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/. + */ + +dictionary FlyWebDiscoveredService { + DOMString serviceId = ""; + DOMString displayName = ""; + DOMString transport = ""; + DOMString serviceType = ""; + DOMString cert = ""; + DOMString path = ""; +}; + +dictionary FlyWebPairedService { + FlyWebDiscoveredService discoveredService; + DOMString hostname = ""; + DOMString uiUrl = ""; +}; + +callback interface FlyWebPairingCallback { + void pairingSucceeded(optional FlyWebPairedService service); + void pairingFailed(DOMString error); +}; + +callback interface FlyWebDiscoveryCallback { + void onDiscoveredServicesChanged(sequence<FlyWebDiscoveredService> serviceList); +}; + +[ChromeOnly, ChromeConstructor, Exposed=(Window,System)] +interface FlyWebDiscoveryManager { + sequence<FlyWebDiscoveredService> listServices(); + + unsigned long startDiscovery(FlyWebDiscoveryCallback aCallback); + void stopDiscovery(unsigned long aId); + + void pairWithService(DOMString serviceId, FlyWebPairingCallback callback); +}; diff --git a/dom/webidl/FlyWebFetchEvent.webidl b/dom/webidl/FlyWebFetchEvent.webidl new file mode 100644 index 0000000000..4bee424e5a --- /dev/null +++ b/dom/webidl/FlyWebFetchEvent.webidl @@ -0,0 +1,13 @@ +/* -*- 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/. + */ + +[Pref="dom.flyweb.enabled"] +interface FlyWebFetchEvent : Event { + [SameObject] readonly attribute Request request; + + [Throws] + void respondWith(Promise<Response> r); +}; diff --git a/dom/webidl/FlyWebPublish.webidl b/dom/webidl/FlyWebPublish.webidl new file mode 100644 index 0000000000..0c8714a2ad --- /dev/null +++ b/dom/webidl/FlyWebPublish.webidl @@ -0,0 +1,23 @@ +/* -*- 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/. + */ + +[Pref="dom.flyweb.enabled"] +interface FlyWebPublishedServer : EventTarget { + readonly attribute DOMString name; + readonly attribute DOMString? uiUrl; + + void close(); + + attribute EventHandler onclose; + attribute EventHandler onfetch; + attribute EventHandler onwebsocket; +}; + +dictionary FlyWebPublishOptions { + DOMString? uiUrl = null; // URL to user interface. Can be different server. Makes + // endpoint show up in browser's "local services" UI. + // If relative, resolves against the root of the server. +}; diff --git a/dom/webidl/FlyWebWebSocketEvent.webidl b/dom/webidl/FlyWebWebSocketEvent.webidl new file mode 100644 index 0000000000..9a47c6decb --- /dev/null +++ b/dom/webidl/FlyWebWebSocketEvent.webidl @@ -0,0 +1,16 @@ +/* -*- 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/. + */ + +[Pref="dom.flyweb.enabled"] +interface FlyWebWebSocketEvent : Event { + [SameObject] readonly attribute Request request; + + [Throws] + WebSocket accept(optional DOMString protocol); + + [Throws] + void respondWith(Promise<Response> r); +}; diff --git a/dom/webidl/FocusEvent.webidl b/dom/webidl/FocusEvent.webidl new file mode 100644 index 0000000000..52a2f1fde8 --- /dev/null +++ b/dom/webidl/FocusEvent.webidl @@ -0,0 +1,21 @@ +/* -*- 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/. + * + * For more information on this interface please see + * http://dev.w3.org/2006/webapi/DOM-Level-3-Events/html/DOM3-Events.html + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +[Constructor(DOMString typeArg, optional FocusEventInit focusEventInitDict)] +interface FocusEvent : UIEvent { + // Introduced in DOM Level 3: + readonly attribute EventTarget? relatedTarget; +}; + +dictionary FocusEventInit : UIEventInit { + EventTarget? relatedTarget = null; +}; diff --git a/dom/webidl/FontFace.webidl b/dom/webidl/FontFace.webidl new file mode 100644 index 0000000000..136658cc7c --- /dev/null +++ b/dom/webidl/FontFace.webidl @@ -0,0 +1,50 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://dev.w3.org/csswg/css-font-loading/#fontface-interface + * + * Copyright © 2014 W3C® (MIT, ERCIM, Keio, Beihang), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +typedef (ArrayBuffer or ArrayBufferView) BinaryData; + +dictionary FontFaceDescriptors { + DOMString style = "normal"; + DOMString weight = "normal"; + DOMString stretch = "normal"; + DOMString unicodeRange = "U+0-10FFFF"; + DOMString variant = "normal"; + DOMString featureSettings = "normal"; + DOMString display = "auto"; +}; + +enum FontFaceLoadStatus { "unloaded", "loading", "loaded", "error" }; + +// Bug 1072107 is for exposing this in workers. +// [Exposed=(Window,Worker)] +[Constructor(DOMString family, + (DOMString or BinaryData) source, + optional FontFaceDescriptors descriptors), + Pref="layout.css.font-loading-api.enabled"] +interface FontFace { + [SetterThrows] attribute DOMString family; + [SetterThrows] attribute DOMString style; + [SetterThrows] attribute DOMString weight; + [SetterThrows] attribute DOMString stretch; + [SetterThrows] attribute DOMString unicodeRange; + [SetterThrows] attribute DOMString variant; + [SetterThrows] attribute DOMString featureSettings; + [SetterThrows, Pref="layout.css.font-display.enabled"] attribute DOMString display; + + readonly attribute FontFaceLoadStatus status; + + [Throws] + Promise<FontFace> load(); + + [Throws] + readonly attribute Promise<FontFace> loaded; +}; diff --git a/dom/webidl/FontFaceSet.webidl b/dom/webidl/FontFaceSet.webidl new file mode 100644 index 0000000000..7f58fbe5e4 --- /dev/null +++ b/dom/webidl/FontFaceSet.webidl @@ -0,0 +1,64 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://dev.w3.org/csswg/css-font-loading/#FontFaceSet-interface + * + * Copyright © 2014 W3C® (MIT, ERCIM, Keio, Beihang), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +// To implement FontFaceSet's iterator until we can use setlike. +dictionary FontFaceSetIteratorResult +{ + required any value; + required boolean done; +}; + +// To implement FontFaceSet's iterator until we can use setlike. +[NoInterfaceObject] +interface FontFaceSetIterator { + [Throws] FontFaceSetIteratorResult next(); +}; + +callback FontFaceSetForEachCallback = void (FontFace value, FontFace key, FontFaceSet set); + +enum FontFaceSetLoadStatus { "loading", "loaded" }; + +// Bug 1072762 is for the FontFaceSet constructor. +// [Constructor(sequence<FontFace> initialFaces)] +[Pref="layout.css.font-loading-api.enabled"] +interface FontFaceSet : EventTarget { + + // Emulate setlike behavior until we can use that directly. + readonly attribute unsigned long size; + [Throws] void add(FontFace font); + boolean has(FontFace font); + boolean delete(FontFace font); + void clear(); + [NewObject] FontFaceSetIterator entries(); + // Iterator keys(); + [NewObject, Alias=keys, Alias="@@iterator"] FontFaceSetIterator values(); + [Throws] void forEach(FontFaceSetForEachCallback cb, optional any thisArg); + + // -- events for when loading state changes + attribute EventHandler onloading; + attribute EventHandler onloadingdone; + attribute EventHandler onloadingerror; + + // check and start loads if appropriate + // and fulfill promise when all loads complete + [NewObject] Promise<sequence<FontFace>> load(DOMString font, optional DOMString text = " "); + + // return whether all fonts in the fontlist are loaded + // (does not initiate load if not available) + [Throws] boolean check(DOMString font, optional DOMString text = " "); + + // async notification that font loading and layout operations are done + [Throws] readonly attribute Promise<void> ready; + + // loading state, "loading" while one or more fonts loading, "loaded" otherwise + readonly attribute FontFaceSetLoadStatus status; +}; diff --git a/dom/webidl/FontFaceSetLoadEvent.webidl b/dom/webidl/FontFaceSetLoadEvent.webidl new file mode 100644 index 0000000000..6090d194ee --- /dev/null +++ b/dom/webidl/FontFaceSetLoadEvent.webidl @@ -0,0 +1,21 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://dev.w3.org/csswg/css-font-loading/#FontFaceSet-interface + * + * Copyright © 2014 W3C® (MIT, ERCIM, Keio, Beihang), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +dictionary FontFaceSetLoadEventInit : EventInit { + sequence<FontFace> fontfaces = []; +}; + +[Constructor(DOMString type, optional FontFaceSetLoadEventInit eventInitDict), + Pref="layout.css.font-loading-api.enabled"] +interface FontFaceSetLoadEvent : Event { + [Cached, Constant] readonly attribute sequence<FontFace> fontfaces; +}; diff --git a/dom/webidl/FontFaceSource.webidl b/dom/webidl/FontFaceSource.webidl new file mode 100644 index 0000000000..96e1c6d76d --- /dev/null +++ b/dom/webidl/FontFaceSource.webidl @@ -0,0 +1,18 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://dev.w3.org/csswg/css-font-loading/#font-face-source + * + * Copyright © 2014 W3C® (MIT, ERCIM, Keio, Beihang), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +[NoInterfaceObject] +interface FontFaceSource { + + [Pref="layout.css.font-loading-api.enabled"] + readonly attribute FontFaceSet fonts; +}; diff --git a/dom/webidl/FormData.webidl b/dom/webidl/FormData.webidl new file mode 100644 index 0000000000..16f780d5dc --- /dev/null +++ b/dom/webidl/FormData.webidl @@ -0,0 +1,28 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://xhr.spec.whatwg.org + */ + +typedef (Blob or Directory or USVString) FormDataEntryValue; + +[Constructor(optional HTMLFormElement form), + Exposed=(Window,Worker)] +interface FormData { + [Throws] + void append(USVString name, Blob value, optional USVString filename); + [Throws] + void append(USVString name, USVString value); + void delete(USVString name); + FormDataEntryValue? get(USVString name); + sequence<FormDataEntryValue> getAll(USVString name); + boolean has(USVString name); + [Throws] + void set(USVString name, Blob value, optional USVString filename); + [Throws] + void set(USVString name, USVString value); + iterable<USVString, FormDataEntryValue>; +}; diff --git a/dom/webidl/Function.webidl b/dom/webidl/Function.webidl new file mode 100644 index 0000000000..55bec0811c --- /dev/null +++ b/dom/webidl/Function.webidl @@ -0,0 +1,14 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.whatwg.org/specs/web-apps/current-work/#functiocn + * + * © Copyright 2004-2011 Apple Computer, Inc., Mozilla Foundation, and + * Opera Software ASA. You are granted a license to use, reproduce + * and create derivative works of this document. + */ + +callback Function = any(any... arguments); diff --git a/dom/webidl/GainNode.webidl b/dom/webidl/GainNode.webidl new file mode 100644 index 0000000000..143325c70f --- /dev/null +++ b/dom/webidl/GainNode.webidl @@ -0,0 +1,22 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * https://webaudio.github.io/web-audio-api/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +[Pref="dom.webaudio.enabled"] +interface GainNode : AudioNode { + + readonly attribute AudioParam gain; + +}; + +// Mozilla extension +GainNode implements AudioNodePassThrough; + diff --git a/dom/webidl/Gamepad.webidl b/dom/webidl/Gamepad.webidl new file mode 100644 index 0000000000..d36df735d0 --- /dev/null +++ b/dom/webidl/Gamepad.webidl @@ -0,0 +1,65 @@ +/* -*- 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/. */ + +[Pref="dom.gamepad.enabled"] +interface GamepadButton { + readonly attribute boolean pressed; + readonly attribute double value; +}; + +enum GamepadMappingType { + "", + "standard" +}; + +[Pref="dom.gamepad.enabled"] +interface Gamepad { + /** + * An identifier, unique per type of device. + */ + readonly attribute DOMString id; + + /** + * The game port index for the device. Unique per device + * attached to this system. + */ + readonly attribute unsigned long index; + + /** + * The mapping in use for this device. The empty string + * indicates that no mapping is in use. + */ + readonly attribute GamepadMappingType mapping; + + /** + * true if this gamepad is currently connected to the system. + */ + readonly attribute boolean connected; + + /** + * The current state of all buttons on the device, an + * array of GamepadButton. + */ + [Pure, Cached, Frozen] + readonly attribute sequence<GamepadButton> buttons; + + /** + * The current position of all axes on the device, an + * array of doubles. + */ + [Pure, Cached, Frozen] + readonly attribute sequence<double> axes; + + /** + * Timestamp from when the data of this device was last updated. + */ + readonly attribute DOMHighResTimeStamp timestamp; + + /** + * The current pose of the device, a GamepadPose. + */ + [Pref="dom.gamepad.extensions.enabled"] + readonly attribute GamepadPose? pose; +}; diff --git a/dom/webidl/GamepadAxisMoveEvent.webidl b/dom/webidl/GamepadAxisMoveEvent.webidl new file mode 100644 index 0000000000..7699674b45 --- /dev/null +++ b/dom/webidl/GamepadAxisMoveEvent.webidl @@ -0,0 +1,19 @@ +/* -*- 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/. + */ + +[Pref="dom.gamepad.non_standard_events.enabled", + Constructor(DOMString type, optional GamepadAxisMoveEventInit eventInitDict)] +interface GamepadAxisMoveEvent : GamepadEvent +{ + readonly attribute unsigned long axis; + readonly attribute double value; +}; + +dictionary GamepadAxisMoveEventInit : GamepadEventInit +{ + unsigned long axis = 0; + double value = 0; +}; diff --git a/dom/webidl/GamepadButtonEvent.webidl b/dom/webidl/GamepadButtonEvent.webidl new file mode 100644 index 0000000000..b8a9e086bf --- /dev/null +++ b/dom/webidl/GamepadButtonEvent.webidl @@ -0,0 +1,17 @@ +/* -*- 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/. + */ + +[Pref="dom.gamepad.non_standard_events.enabled", + Constructor(DOMString type, optional GamepadButtonEventInit eventInitDict)] +interface GamepadButtonEvent : GamepadEvent +{ + readonly attribute unsigned long button; +}; + +dictionary GamepadButtonEventInit : GamepadEventInit +{ + unsigned long button = 0; +}; diff --git a/dom/webidl/GamepadEvent.webidl b/dom/webidl/GamepadEvent.webidl new file mode 100644 index 0000000000..f4c3092ac1 --- /dev/null +++ b/dom/webidl/GamepadEvent.webidl @@ -0,0 +1,17 @@ +/* -*- 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/. + */ + +[Pref="dom.gamepad.enabled", + Constructor(DOMString type, optional GamepadEventInit eventInitDict)] +interface GamepadEvent : Event +{ + readonly attribute Gamepad? gamepad; +}; + +dictionary GamepadEventInit : EventInit +{ + Gamepad? gamepad = null; +}; diff --git a/dom/webidl/GamepadPose.webidl b/dom/webidl/GamepadPose.webidl new file mode 100644 index 0000000000..4b84200905 --- /dev/null +++ b/dom/webidl/GamepadPose.webidl @@ -0,0 +1,27 @@ +/* -*- 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/. + */ + +[Pref="dom.gamepad.extensions.enabled"] +interface GamepadPose +{ + readonly attribute boolean hasOrientation; + readonly attribute boolean hasPosition; + + /** + * position, linearVelocity, and linearAcceleration are 3-component vectors. + * position is relative to a sitting space. Transforming this point with + * VRStageParameters.sittingToStandingTransform converts this to standing space. + */ + [Constant, Throws] readonly attribute Float32Array? position; + [Constant, Throws] readonly attribute Float32Array? linearVelocity; + [Constant, Throws] readonly attribute Float32Array? linearAcceleration; + + /* orientation is a 4-entry array representing the components of a quaternion. */ + [Constant, Throws] readonly attribute Float32Array? orientation; + /* angularVelocity and angularAcceleration are the components of 3-dimensional vectors. */ + [Constant, Throws] readonly attribute Float32Array? angularVelocity; + [Constant, Throws] readonly attribute Float32Array? angularAcceleration; +}; diff --git a/dom/webidl/GamepadServiceTest.webidl b/dom/webidl/GamepadServiceTest.webidl new file mode 100644 index 0000000000..7b52625c1a --- /dev/null +++ b/dom/webidl/GamepadServiceTest.webidl @@ -0,0 +1,31 @@ +/* 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/. */ + +[Pref="dom.gamepad.test.enabled"] +interface GamepadServiceTest +{ + readonly attribute unsigned long noMapping; + readonly attribute unsigned long standardMapping; + + [Throws] + Promise<unsigned long> addGamepad(DOMString id, + unsigned long mapping, + unsigned long numButtons, + unsigned long numAxes); + + void removeGamepad(unsigned long index); + + void newButtonEvent(unsigned long index, + unsigned long button, + boolean pressed); + + void newButtonValueEvent(unsigned long index, + unsigned long button, + boolean pressed, + double value); + + void newAxisMoveEvent(unsigned long index, + unsigned long axis, + double value); +};
\ No newline at end of file diff --git a/dom/webidl/Geolocation.webidl b/dom/webidl/Geolocation.webidl new file mode 100644 index 0000000000..35acaa1867 --- /dev/null +++ b/dom/webidl/Geolocation.webidl @@ -0,0 +1,36 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/geolocation-API + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +dictionary PositionOptions { + boolean enableHighAccuracy = false; + [Clamp] unsigned long timeout = 0x7fffffff; + [Clamp] unsigned long maximumAge = 0; +}; + +[NoInterfaceObject] +interface Geolocation { + [Throws] + void getCurrentPosition(PositionCallback successCallback, + optional PositionErrorCallback? errorCallback = null, + optional PositionOptions options); + + [Throws] + long watchPosition(PositionCallback successCallback, + optional PositionErrorCallback? errorCallback = null, + optional PositionOptions options); + + void clearWatch(long watchId); +}; + +callback PositionCallback = void (Position position); + +callback PositionErrorCallback = void (PositionError positionError); diff --git a/dom/webidl/GeometryUtils.webidl b/dom/webidl/GeometryUtils.webidl new file mode 100644 index 0000000000..7a468baa1e --- /dev/null +++ b/dom/webidl/GeometryUtils.webidl @@ -0,0 +1,38 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://dev.w3.org/csswg/cssom-view/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +enum CSSBoxType { "margin", "border", "padding", "content" }; +dictionary BoxQuadOptions { + CSSBoxType box = "border"; + GeometryNode relativeTo; +}; + +dictionary ConvertCoordinateOptions { + CSSBoxType fromBox = "border"; + CSSBoxType toBox = "border"; +}; + +[NoInterfaceObject] +interface GeometryUtils { + [Throws, Func="nsINode::HasBoxQuadsSupport"] + sequence<DOMQuad> getBoxQuads(optional BoxQuadOptions options); + [Throws, Pref="layout.css.convertFromNode.enabled"] + DOMQuad convertQuadFromNode(DOMQuad quad, GeometryNode from, optional ConvertCoordinateOptions options); + [Throws, Pref="layout.css.convertFromNode.enabled"] + DOMQuad convertRectFromNode(DOMRectReadOnly rect, GeometryNode from, optional ConvertCoordinateOptions options); + [Throws, Pref="layout.css.convertFromNode.enabled"] + DOMPoint convertPointFromNode(DOMPointInit point, GeometryNode from, optional ConvertCoordinateOptions options); +}; + +// PseudoElement implements GeometryUtils; + +typedef (Text or Element /* or PseudoElement */ or Document) GeometryNode; diff --git a/dom/webidl/GetUserMediaRequest.webidl b/dom/webidl/GetUserMediaRequest.webidl new file mode 100644 index 0000000000..9fd378e6e0 --- /dev/null +++ b/dom/webidl/GetUserMediaRequest.webidl @@ -0,0 +1,16 @@ +/* -*- 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/. + * + * This is an internal IDL file + */ + +[NoInterfaceObject] +interface GetUserMediaRequest { + readonly attribute unsigned long long windowID; + readonly attribute unsigned long long innerWindowID; + readonly attribute DOMString callID; + MediaStreamConstraints getConstraints(); + readonly attribute boolean isSecure; +}; diff --git a/dom/webidl/Grid.webidl b/dom/webidl/Grid.webidl new file mode 100644 index 0000000000..b10de93832 --- /dev/null +++ b/dom/webidl/Grid.webidl @@ -0,0 +1,113 @@ +/* -*- 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/. + */ + +/* These objects support visualization of a css-grid by the dev tools. */ + +/** + * Explicit and implicit types apply to tracks, lines, and areas. + * https://drafts.csswg.org/css-grid/#explicit-grids + * https://drafts.csswg.org/css-grid/#implicit-grids + */ +enum GridDeclaration { "explicit", "implicit" }; + +/** + * Tracks expanded from auto-fill are repeat , auto-fits with elements are + * also repeat, auto-fits with no elements are removed, other tracks are static. + */ +enum GridTrackState { "static", "repeat", "removed" }; + +[ChromeOnly] +interface Grid +{ + readonly attribute GridDimension rows; + readonly attribute GridDimension cols; + [Cached, Constant] + readonly attribute sequence<GridArea> areas; +}; + +[ChromeOnly] +interface GridDimension +{ + readonly attribute GridLines lines; + readonly attribute GridTracks tracks; +}; + +[ChromeOnly] +interface GridLines +{ + readonly attribute unsigned long length; + + /** + * This accessor method allows array-like access to lines. + * @param index A 0-indexed value. + */ + getter GridLine? item(unsigned long index); +}; + +[ChromeOnly] +interface GridLine +{ + /** + * Names include both explicit names and implicit names, which will be + * assigned if the line contributes to a named area. + * https://drafts.csswg.org/css-grid/#implicit-named-lines + */ + [Cached, Constant] + readonly attribute sequence<DOMString> names; + + readonly attribute double start; + + /** + * Breadth is the gap between the start of this line and the start of the + * next track in flow direction. It primarily is set by use of the -gap + * properties. + * https://drafts.csswg.org/css-grid/#gutters + */ + readonly attribute double breadth; + + readonly attribute GridDeclaration type; + + /** + * Number is the 1-indexed index of the line in flow order. + */ + readonly attribute unsigned long number; +}; + +[ChromeOnly] +interface GridTracks +{ + readonly attribute unsigned long length; + + /** + * This accessor method allows array-like access to tracks. + * @param index A 0-indexed value. + */ + getter GridTrack? item(unsigned long index); +}; + +[ChromeOnly] +interface GridTrack +{ + readonly attribute double start; + readonly attribute double breadth; + readonly attribute GridDeclaration type; + readonly attribute GridTrackState state; +}; + +[ChromeOnly] +interface GridArea +{ + readonly attribute DOMString name; + readonly attribute GridDeclaration type; + + /** + * These values are 1-indexed line numbers bounding the area. + */ + readonly attribute unsigned long rowStart; + readonly attribute unsigned long rowEnd; + readonly attribute unsigned long columnStart; + readonly attribute unsigned long columnEnd; +}; diff --git a/dom/webidl/HTMLAllCollection.webidl b/dom/webidl/HTMLAllCollection.webidl new file mode 100644 index 0000000000..b352138888 --- /dev/null +++ b/dom/webidl/HTMLAllCollection.webidl @@ -0,0 +1,14 @@ +/* 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/. */ + +/* Emulates undefined through Codegen.py. */ +[LegacyUnenumerableNamedProperties] +interface HTMLAllCollection { + readonly attribute unsigned long length; + getter Node? (unsigned long index); + Node? item(unsigned long index); + (Node or HTMLCollection)? item(DOMString name); + legacycaller (Node or HTMLCollection)? (DOMString name); + getter (Node or HTMLCollection)? namedItem(DOMString name); +}; diff --git a/dom/webidl/HTMLAnchorElement.webidl b/dom/webidl/HTMLAnchorElement.webidl new file mode 100644 index 0000000000..0b8ded6d73 --- /dev/null +++ b/dom/webidl/HTMLAnchorElement.webidl @@ -0,0 +1,51 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.whatwg.org/specs/web-apps/current-work/#the-a-element + * http://www.whatwg.org/specs/web-apps/current-work/#other-elements,-attributes-and-apis + * © Copyright 2004-2011 Apple Computer, Inc., Mozilla Foundation, and + * Opera Software ASA. You are granted a license to use, reproduce + * and create derivative works of this document. + */ + +// http://www.whatwg.org/specs/web-apps/current-work/#the-a-element +interface HTMLAnchorElement : HTMLElement { + [SetterThrows] + attribute DOMString target; + [SetterThrows] + attribute DOMString download; + [SetterThrows] + attribute DOMString ping; + [SetterThrows] + attribute DOMString rel; + [SetterThrows, Pref="network.http.enablePerElementReferrer"] + attribute DOMString referrerPolicy; + [PutForwards=value] + readonly attribute DOMTokenList relList; + [SetterThrows] + attribute DOMString hreflang; + [SetterThrows] + attribute DOMString type; + + [SetterThrows] + attribute DOMString text; +}; + +HTMLAnchorElement implements HTMLHyperlinkElementUtils; + +// http://www.whatwg.org/specs/web-apps/current-work/#other-elements,-attributes-and-apis +partial interface HTMLAnchorElement { + [SetterThrows] + attribute DOMString coords; + [SetterThrows] + attribute DOMString charset; + [SetterThrows] + attribute DOMString name; + [SetterThrows] + attribute DOMString rev; + [SetterThrows] + attribute DOMString shape; +}; diff --git a/dom/webidl/HTMLAppletElement.webidl b/dom/webidl/HTMLAppletElement.webidl new file mode 100644 index 0000000000..d75c42d15c --- /dev/null +++ b/dom/webidl/HTMLAppletElement.webidl @@ -0,0 +1,43 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.whatwg.org/specs/web-apps/current-work/#the-applet-element + * + * © Copyright 2004-2011 Apple Computer, Inc., Mozilla Foundation, and + * Opera Software ASA. You are granted a license to use, reproduce + * and create derivative works of this document. + */ + +// http://www.whatwg.org/specs/web-apps/current-work/#the-applet-element +[NeedResolve, UnsafeInPrerendering] +interface HTMLAppletElement : HTMLElement { + [Pure, SetterThrows] + attribute DOMString align; + [Pure, SetterThrows] + attribute DOMString alt; + [Pure, SetterThrows] + attribute DOMString archive; + [Pure, SetterThrows] + attribute DOMString code; + [Pure, SetterThrows] + attribute DOMString codeBase; + [Pure, SetterThrows] + attribute DOMString height; + [Pure, SetterThrows] + attribute unsigned long hspace; + [Pure, SetterThrows] + attribute DOMString name; + [Pure, SetterThrows] + attribute DOMString _object; + [Pure, SetterThrows] + attribute unsigned long vspace; + [Pure, SetterThrows] + attribute DOMString width; +}; + +HTMLAppletElement implements MozImageLoadingContent; +HTMLAppletElement implements MozFrameLoaderOwner; +HTMLAppletElement implements MozObjectLoadingContent; diff --git a/dom/webidl/HTMLAreaElement.webidl b/dom/webidl/HTMLAreaElement.webidl new file mode 100644 index 0000000000..be3f378852 --- /dev/null +++ b/dom/webidl/HTMLAreaElement.webidl @@ -0,0 +1,43 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.whatwg.org/specs/web-apps/current-work/#the-area-element + * http://www.whatwg.org/specs/web-apps/current-work/#other-elements,-attributes-and-apis + & + * © Copyright 2004-2011 Apple Computer, Inc., Mozilla Foundation, and + * Opera Software ASA. You are granted a license to use, reproduce + * and create derivative works of this document. + */ + +// http://www.whatwg.org/specs/web-apps/current-work/#the-area-element +interface HTMLAreaElement : HTMLElement { + [SetterThrows] + attribute DOMString alt; + [SetterThrows] + attribute DOMString coords; + [SetterThrows] + attribute DOMString shape; + [SetterThrows] + attribute DOMString target; + [SetterThrows] + attribute DOMString download; + [SetterThrows] + attribute DOMString ping; + [SetterThrows] + attribute DOMString rel; + [SetterThrows, Pref="network.http.enablePerElementReferrer"] + attribute DOMString referrerPolicy; + [PutForwards=value] + readonly attribute DOMTokenList relList; +}; + +HTMLAreaElement implements HTMLHyperlinkElementUtils; + +// http://www.whatwg.org/specs/web-apps/current-work/#other-elements,-attributes-and-apis +partial interface HTMLAreaElement { + [SetterThrows] + attribute boolean noHref; +}; diff --git a/dom/webidl/HTMLAudioElement.webidl b/dom/webidl/HTMLAudioElement.webidl new file mode 100644 index 0000000000..8537453c0c --- /dev/null +++ b/dom/webidl/HTMLAudioElement.webidl @@ -0,0 +1,16 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.whatwg.org/specs/web-apps/current-work/#the-audio-element + * + * © Copyright 2004-2011 Apple Computer, Inc., Mozilla Foundation, and + * Opera Software ASA. You are granted a license to use, reproduce + * and create derivative works of this document. + */ + +[NamedConstructor=Audio(optional DOMString src)] +interface HTMLAudioElement : HTMLMediaElement {}; + diff --git a/dom/webidl/HTMLBRElement.webidl b/dom/webidl/HTMLBRElement.webidl new file mode 100644 index 0000000000..cf5cb8a675 --- /dev/null +++ b/dom/webidl/HTMLBRElement.webidl @@ -0,0 +1,23 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.whatwg.org/specs/web-apps/current-work/#the-br-element + * http://www.whatwg.org/specs/web-apps/current-work/#other-elements,-attributes-and-apis + * + * © Copyright 2004-2011 Apple Computer, Inc., Mozilla Foundation, and + * Opera Software ASA. You are granted a license to use, reproduce + * and create derivative works of this document. + */ + +// http://www.whatwg.org/specs/web-apps/current-work/#the-br-element +interface HTMLBRElement : HTMLElement {}; + +// http://www.whatwg.org/specs/web-apps/current-work/#other-elements,-attributes-and-apis +partial interface HTMLBRElement { + [SetterThrows] + attribute DOMString clear; +}; + diff --git a/dom/webidl/HTMLBaseElement.webidl b/dom/webidl/HTMLBaseElement.webidl new file mode 100644 index 0000000000..d982f46547 --- /dev/null +++ b/dom/webidl/HTMLBaseElement.webidl @@ -0,0 +1,21 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.whatwg.org/specs/web-apps/current-work/#the-base-element + * + * © Copyright 2004-2011 Apple Computer, Inc., Mozilla Foundation, and + * Opera Software ASA. You are granted a license to use, reproduce + * and create derivative works of this document. + */ + +// http://www.whatwg.org/specs/web-apps/current-work/#the-base-element +interface HTMLBaseElement : HTMLElement { + [SetterThrows, Pure] + attribute DOMString href; + [SetterThrows, Pure] + attribute DOMString target; +}; + diff --git a/dom/webidl/HTMLBodyElement.webidl b/dom/webidl/HTMLBodyElement.webidl new file mode 100644 index 0000000000..95df2d43a7 --- /dev/null +++ b/dom/webidl/HTMLBodyElement.webidl @@ -0,0 +1,26 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.whatwg.org/specs/web-apps/current-work/ + * + * © Copyright 2004-2011 Apple Computer, Inc., Mozilla Foundation, and + * Opera Software ASA. You are granted a license to use, reproduce + * and create derivative works of this document. + */ + +interface HTMLBodyElement : HTMLElement { +}; + +partial interface HTMLBodyElement { + [TreatNullAs=EmptyString, SetterThrows] attribute DOMString text; + [TreatNullAs=EmptyString, SetterThrows] attribute DOMString link; + [TreatNullAs=EmptyString, SetterThrows] attribute DOMString vLink; + [TreatNullAs=EmptyString, SetterThrows] attribute DOMString aLink; + [TreatNullAs=EmptyString, SetterThrows] attribute DOMString bgColor; + [SetterThrows] attribute DOMString background; +}; + +HTMLBodyElement implements WindowEventHandlers; diff --git a/dom/webidl/HTMLButtonElement.webidl b/dom/webidl/HTMLButtonElement.webidl new file mode 100644 index 0000000000..c50e09ae07 --- /dev/null +++ b/dom/webidl/HTMLButtonElement.webidl @@ -0,0 +1,49 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.whatwg.org/specs/web-apps/current-work/#the-button-element + * © Copyright 2004-2011 Apple Computer, Inc., Mozilla Foundation, and + * Opera Software ASA. You are granted a license to use, reproduce + * and create derivative works of this document. + */ + +// http://www.whatwg.org/specs/web-apps/current-work/#the-button-element +interface HTMLButtonElement : HTMLElement { + [SetterThrows, Pure] + attribute boolean autofocus; + [SetterThrows, Pure] + attribute boolean disabled; + [Pure] + readonly attribute HTMLFormElement? form; + [SetterThrows, Pure] + attribute DOMString formAction; + [SetterThrows, Pure] + attribute DOMString formEnctype; + [SetterThrows, Pure] + attribute DOMString formMethod; + [SetterThrows, Pure] + attribute boolean formNoValidate; + [SetterThrows, Pure] + attribute DOMString formTarget; + [SetterThrows, Pure] + attribute DOMString name; + [SetterThrows, Pure] + attribute DOMString type; + [SetterThrows, Pure] + attribute DOMString value; +// Not yet implemented: +// attribute HTMLMenuElement? menu; + + readonly attribute boolean willValidate; + readonly attribute ValidityState validity; + readonly attribute DOMString validationMessage; + boolean checkValidity(); + boolean reportValidity(); + void setCustomValidity(DOMString error); + +// Not yet implemented: +// readonly attribute NodeList labels; +}; diff --git a/dom/webidl/HTMLCanvasElement.webidl b/dom/webidl/HTMLCanvasElement.webidl new file mode 100644 index 0000000000..15e94f1545 --- /dev/null +++ b/dom/webidl/HTMLCanvasElement.webidl @@ -0,0 +1,67 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.whatwg.org/specs/web-apps/current-work/#the-canvas-element + * © Copyright 2004-2011 Apple Computer, Inc., Mozilla Foundation, and + * Opera Software ASA. You are granted a license to use, reproduce + * and create derivative works of this document. + */ + +interface nsISupports; +interface Variant; + +interface HTMLCanvasElement : HTMLElement { + [Pure, SetterThrows] + attribute unsigned long width; + [Pure, SetterThrows] + attribute unsigned long height; + + [Throws] + nsISupports? getContext(DOMString contextId, optional any contextOptions = null); + + [Throws] + DOMString toDataURL(optional DOMString type = "", + optional any encoderOptions); + [Throws] + void toBlob(BlobCallback _callback, + optional DOMString type = "", + optional any encoderOptions); +}; + +// Mozilla specific bits +partial interface HTMLCanvasElement { + [Pure, SetterThrows] + attribute boolean mozOpaque; + [Throws] + File mozGetAsFile(DOMString name, optional DOMString? type = null); + [ChromeOnly, Throws] + nsISupports? MozGetIPCContext(DOMString contextId); + attribute PrintCallback? mozPrintCallback; + + [Throws, UnsafeInPrerendering, Pref="canvas.capturestream.enabled"] + CanvasCaptureMediaStream captureStream(optional double frameRate); +}; + +// For OffscreenCanvas +// Reference: https://wiki.whatwg.org/wiki/OffscreenCanvas +partial interface HTMLCanvasElement { + [Pref="gfx.offscreencanvas.enabled", Throws] + OffscreenCanvas transferControlToOffscreen(); +}; + +[ChromeOnly] +interface MozCanvasPrintState +{ + // A canvas rendering context. + readonly attribute nsISupports context; + + // To be called when rendering to the context is done. + void done(); +}; + +callback PrintCallback = void(MozCanvasPrintState ctx); + +callback BlobCallback = void(Blob blob); diff --git a/dom/webidl/HTMLCollection.webidl b/dom/webidl/HTMLCollection.webidl new file mode 100644 index 0000000000..f7f020c0ff --- /dev/null +++ b/dom/webidl/HTMLCollection.webidl @@ -0,0 +1,18 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/2012/WD-dom-20120105/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +[LegacyUnenumerableNamedProperties] +interface HTMLCollection { + readonly attribute unsigned long length; + getter Element? item(unsigned long index); + getter Element? namedItem(DOMString name); +}; diff --git a/dom/webidl/HTMLContentElement.webidl b/dom/webidl/HTMLContentElement.webidl new file mode 100644 index 0000000000..ea809f120c --- /dev/null +++ b/dom/webidl/HTMLContentElement.webidl @@ -0,0 +1,20 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * https://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/shadow/index.html + * + * © Copyright 2004-2011 Apple Computer, Inc., Mozilla Foundation, and + * Opera Software ASA. You are granted a license to use, reproduce + * and create derivative works of this document. + */ + +[Func="nsDocument::IsWebComponentsEnabled"] +interface HTMLContentElement : HTMLElement +{ + attribute DOMString select; + NodeList getDistributedNodes(); +}; + diff --git a/dom/webidl/HTMLDListElement.webidl b/dom/webidl/HTMLDListElement.webidl new file mode 100644 index 0000000000..08020a4970 --- /dev/null +++ b/dom/webidl/HTMLDListElement.webidl @@ -0,0 +1,23 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.whatwg.org/specs/web-apps/current-work/#the-dl-element + * http://www.whatwg.org/specs/web-apps/current-work/#other-elements,-attributes-and-apis + * + * © Copyright 2004-2011 Apple Computer, Inc., Mozilla Foundation, and + * Opera Software ASA. You are granted a license to use, reproduce + * and create derivative works of this document. + */ + +// http://www.whatwg.org/specs/web-apps/current-work/#the-dl-element +interface HTMLDListElement : HTMLElement { +}; + +// http://www.whatwg.org/specs/web-apps/current-work/#other-elements,-attributes-and-apis +partial interface HTMLDListElement { + [SetterThrows] + attribute boolean compact; +}; diff --git a/dom/webidl/HTMLDataElement.webidl b/dom/webidl/HTMLDataElement.webidl new file mode 100644 index 0000000000..821b8b483e --- /dev/null +++ b/dom/webidl/HTMLDataElement.webidl @@ -0,0 +1,13 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.whatwg.org/specs/web-apps/current-work/multipage/text-level-semantics.html#the-data-element + */ + +interface HTMLDataElement : HTMLElement { + [SetterThrows] + attribute DOMString value; +}; diff --git a/dom/webidl/HTMLDataListElement.webidl b/dom/webidl/HTMLDataListElement.webidl new file mode 100644 index 0000000000..83b20cd2bc --- /dev/null +++ b/dom/webidl/HTMLDataListElement.webidl @@ -0,0 +1,16 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.whatwg.org/specs/web-apps/current-work/ + * + * © Copyright 2004-2011 Apple Computer, Inc., Mozilla Foundation, and + * Opera Software ASA. You are granted a license to use, reproduce + * and create derivative works of this document. + */ + +interface HTMLDataListElement : HTMLElement { + readonly attribute HTMLCollection options; +}; diff --git a/dom/webidl/HTMLDetailsElement.webidl b/dom/webidl/HTMLDetailsElement.webidl new file mode 100644 index 0000000000..133ecf125b --- /dev/null +++ b/dom/webidl/HTMLDetailsElement.webidl @@ -0,0 +1,18 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * https://html.spec.whatwg.org/multipage/forms.html#the-details-element + * + * © Copyright 2004-2011 Apple Computer, Inc., Mozilla Foundation, and + * Opera Software ASA. You are granted a license to use, reproduce + * and create derivative works of this document. + */ + +[Pref="dom.details_element.enabled"] +interface HTMLDetailsElement : HTMLElement { + [SetterThrows] + attribute boolean open; +}; diff --git a/dom/webidl/HTMLDirectoryElement.webidl b/dom/webidl/HTMLDirectoryElement.webidl new file mode 100644 index 0000000000..9d5160af1b --- /dev/null +++ b/dom/webidl/HTMLDirectoryElement.webidl @@ -0,0 +1,19 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.whatwg.org/specs/web-apps/current-work/#other-elements,-attributes-and-apis + * + * © Copyright 2004-2011 Apple Computer, Inc., Mozilla Foundation, and + * Opera Software ASA. You are granted a license to use, reproduce + * and create derivative works of this document. + */ + +// http://www.whatwg.org/specs/web-apps/current-work/#other-elements,-attributes-and-apis +interface HTMLDirectoryElement : HTMLElement { + [SetterThrows, Pure] + attribute boolean compact; +}; + diff --git a/dom/webidl/HTMLDivElement.webidl b/dom/webidl/HTMLDivElement.webidl new file mode 100644 index 0000000000..f50e2aad00 --- /dev/null +++ b/dom/webidl/HTMLDivElement.webidl @@ -0,0 +1,19 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.whatwg.org/specs/web-apps/current-work/ + * + * © Copyright 2004-2011 Apple Computer, Inc., Mozilla Foundation, and + * Opera Software ASA. You are granted a license to use, reproduce + * and create derivative works of this document. + */ + +interface HTMLDivElement : HTMLElement {}; + +partial interface HTMLDivElement { + [SetterThrows] + attribute DOMString align; +}; diff --git a/dom/webidl/HTMLDocument.webidl b/dom/webidl/HTMLDocument.webidl new file mode 100644 index 0000000000..61b466ff0d --- /dev/null +++ b/dom/webidl/HTMLDocument.webidl @@ -0,0 +1,101 @@ +/* -*- 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/. + */ + +[OverrideBuiltins] +interface HTMLDocument : Document { + [SetterThrows] + attribute DOMString? domain; + [Throws] + attribute DOMString cookie; + // DOM tree accessors + [Throws] + getter object (DOMString name); + [Pure, SetterThrows] + attribute HTMLElement? body; + [Pure] + readonly attribute HTMLHeadElement? head; + [Pure] + readonly attribute HTMLCollection images; + [Pure] + readonly attribute HTMLCollection embeds; + [Pure] + readonly attribute HTMLCollection plugins; + [Pure] + readonly attribute HTMLCollection links; + [Pure] + readonly attribute HTMLCollection forms; + [Pure] + readonly attribute HTMLCollection scripts; + NodeList getElementsByName(DOMString elementName); + + // dynamic markup insertion + [Throws] + Document open(optional DOMString type = "text/html", optional DOMString replace = ""); + [Throws] + WindowProxy? open(DOMString url, DOMString name, DOMString features, optional boolean replace = false); + [Throws] + void close(); + [Throws] + void write(DOMString... text); + [Throws] + void writeln(DOMString... text); + + [SetterThrows, NeedsSubjectPrincipal] + attribute DOMString designMode; + [Throws] + boolean execCommand(DOMString commandId, optional boolean showUI = false, + optional DOMString value = ""); + [Throws] + boolean queryCommandEnabled(DOMString commandId); + [Throws] + boolean queryCommandIndeterm(DOMString commandId); + [Throws] + boolean queryCommandState(DOMString commandId); + boolean queryCommandSupported(DOMString commandId); + [Throws] + DOMString queryCommandValue(DOMString commandId); + + [TreatNullAs=EmptyString] attribute DOMString fgColor; + [TreatNullAs=EmptyString] attribute DOMString linkColor; + [TreatNullAs=EmptyString] attribute DOMString vlinkColor; + [TreatNullAs=EmptyString] attribute DOMString alinkColor; + [TreatNullAs=EmptyString] attribute DOMString bgColor; + + [Pure] + readonly attribute HTMLCollection anchors; + [Pure] + readonly attribute HTMLCollection applets; + + void clear(); + + readonly attribute HTMLAllCollection all; + + // https://dvcs.w3.org/hg/editing/raw-file/tip/editing.html#selections + [Throws] + Selection? getSelection(); + + // @deprecated These are old Netscape 4 methods. Do not use, + // the implementation is no-op. + // XXXbz do we actually need these anymore? + void captureEvents(); + void releaseEvents(); +}; + +partial interface HTMLDocument { + /* + * Number of nodes that have been blocked by + * the Safebrowsing API to prevent tracking. + */ + [ChromeOnly, Pure] + readonly attribute long blockedTrackingNodeCount; + + /* + * List of nodes that have been blocked by + * the Safebrowsing API to prevent tracking. + */ + [ChromeOnly, Pure] + readonly attribute NodeList blockedTrackingNodes; +}; diff --git a/dom/webidl/HTMLElement.webidl b/dom/webidl/HTMLElement.webidl new file mode 100644 index 0000000000..5ce5024e66 --- /dev/null +++ b/dom/webidl/HTMLElement.webidl @@ -0,0 +1,107 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.whatwg.org/specs/web-apps/current-work/ and + * http://dev.w3.org/csswg/cssom-view/ + * + * © Copyright 2004-2011 Apple Computer, Inc., Mozilla Foundation, and + * Opera Software ASA. You are granted a license to use, reproduce + * and create derivative works of this document. + */ + +interface HTMLElement : Element { + // metadata attributes + attribute DOMString title; + attribute DOMString lang; + // attribute boolean translate; + [SetterThrows, Pure] + attribute DOMString dir; + [Constant] + readonly attribute DOMStringMap dataset; + + [GetterThrows, Pure, TreatNullAs=EmptyString] + attribute DOMString innerText; + + // user interaction + [SetterThrows, Pure] + attribute boolean hidden; + void click(); + [SetterThrows, Pure] + attribute long tabIndex; + [Throws] + void focus(); + [Throws] + void blur(); + [SetterThrows, Pure] + attribute DOMString accessKey; + [Pure] + readonly attribute DOMString accessKeyLabel; + [SetterThrows, Pure] + attribute boolean draggable; + //[PutForwards=value] readonly attribute DOMTokenList dropzone; + [SetterThrows, Pure] + attribute DOMString contentEditable; + [Pure] + readonly attribute boolean isContentEditable; + [Pure] + readonly attribute HTMLMenuElement? contextMenu; + //[SetterThrows] + // attribute HTMLMenuElement? contextMenu; + [SetterThrows, Pure] + attribute boolean spellcheck; + + // command API + //readonly attribute DOMString? commandType; + //readonly attribute DOMString? commandLabel; + //readonly attribute DOMString? commandIcon; + //readonly attribute boolean? commandHidden; + //readonly attribute boolean? commandDisabled; + //readonly attribute boolean? commandChecked; + + // styling + [PutForwards=cssText, Constant] + readonly attribute CSSStyleDeclaration style; + + // Mozilla specific stuff + attribute EventHandler oncopy; + attribute EventHandler oncut; + attribute EventHandler onpaste; +}; + +// http://dev.w3.org/csswg/cssom-view/#extensions-to-the-htmlelement-interface +partial interface HTMLElement { + // CSSOM things are not [Pure] because they can flush + readonly attribute Element? offsetParent; + readonly attribute long offsetTop; + readonly attribute long offsetLeft; + readonly attribute long offsetWidth; + readonly attribute long offsetHeight; +}; + +// Extension for scroll-grabbing, used in the B2G dynamic toolbar. +// This is likely to be revised. +partial interface HTMLElement { + [Func="nsGenericHTMLElement::IsScrollGrabAllowed"] + attribute boolean scrollgrab; +}; + +[NoInterfaceObject] +interface TouchEventHandlers { + [Func="nsGenericHTMLElement::TouchEventsEnabled"] + attribute EventHandler ontouchstart; + [Func="nsGenericHTMLElement::TouchEventsEnabled"] + attribute EventHandler ontouchend; + [Func="nsGenericHTMLElement::TouchEventsEnabled"] + attribute EventHandler ontouchmove; + [Func="nsGenericHTMLElement::TouchEventsEnabled"] + attribute EventHandler ontouchcancel; +}; + +HTMLElement implements GlobalEventHandlers; +HTMLElement implements TouchEventHandlers; +HTMLElement implements OnErrorEventHandlerForNodes; + +interface HTMLUnknownElement : HTMLElement {}; diff --git a/dom/webidl/HTMLEmbedElement.webidl b/dom/webidl/HTMLEmbedElement.webidl new file mode 100644 index 0000000000..36668595b7 --- /dev/null +++ b/dom/webidl/HTMLEmbedElement.webidl @@ -0,0 +1,46 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.whatwg.org/specs/web-apps/current-work/#the-embed-element + * http://www.whatwg.org/specs/web-apps/current-work/#HTMLEmbedElement-partial + * + * © Copyright 2004-2011 Apple Computer, Inc., Mozilla Foundation, and + * Opera Software ASA. You are granted a license to use, reproduce + * and create derivative works of this document. + */ + +// http://www.whatwg.org/specs/web-apps/current-work/#the-embed-element +[NeedResolve] +interface HTMLEmbedElement : HTMLElement { + [Pure, SetterThrows] + attribute DOMString src; + [Pure, SetterThrows] + attribute DOMString type; + [Pure, SetterThrows] + attribute DOMString width; + [Pure, SetterThrows] + attribute DOMString height; + [Throws] + legacycaller any (any... arguments); +}; + +// http://www.whatwg.org/specs/web-apps/current-work/#HTMLEmbedElement-partial +partial interface HTMLEmbedElement { + [Pure, SetterThrows] + attribute DOMString align; + [Pure, SetterThrows] + attribute DOMString name; +}; + +partial interface HTMLEmbedElement { + // GetSVGDocument + [NeedsSubjectPrincipal] + Document? getSVGDocument(); +}; + +HTMLEmbedElement implements MozImageLoadingContent; +HTMLEmbedElement implements MozFrameLoaderOwner; +HTMLEmbedElement implements MozObjectLoadingContent; diff --git a/dom/webidl/HTMLFieldSetElement.webidl b/dom/webidl/HTMLFieldSetElement.webidl new file mode 100644 index 0000000000..6c9eee52b8 --- /dev/null +++ b/dom/webidl/HTMLFieldSetElement.webidl @@ -0,0 +1,33 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.whatwg.org/specs/web-apps/current-work/#the-fieldset-element + * + * © Copyright 2004-2011 Apple Computer, Inc., Mozilla Foundation, and + * Opera Software ASA. You are granted a license to use, reproduce + * and create derivative works of this document. + */ + +interface HTMLFieldSetElement : HTMLElement { + [SetterThrows] + attribute boolean disabled; + readonly attribute HTMLFormElement? form; + [SetterThrows] + attribute DOMString name; + + readonly attribute DOMString type; + + readonly attribute HTMLCollection elements; + + readonly attribute boolean willValidate; + readonly attribute ValidityState validity; + readonly attribute DOMString validationMessage; + + boolean checkValidity(); + boolean reportValidity(); + + void setCustomValidity(DOMString error); +}; diff --git a/dom/webidl/HTMLFontElement.webidl b/dom/webidl/HTMLFontElement.webidl new file mode 100644 index 0000000000..781dabb889 --- /dev/null +++ b/dom/webidl/HTMLFontElement.webidl @@ -0,0 +1,18 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.whatwg.org/specs/web-apps/current-work/ + * + * © Copyright 2004-2011 Apple Computer, Inc., Mozilla Foundation, and + * Opera Software ASA. You are granted a license to use, reproduce + * and create derivative works of this document. + */ + +interface HTMLFontElement : HTMLElement { + [TreatNullAs=EmptyString, SetterThrows] attribute DOMString color; + [SetterThrows] attribute DOMString face; + [SetterThrows] attribute DOMString size; +}; diff --git a/dom/webidl/HTMLFormControlsCollection.webidl b/dom/webidl/HTMLFormControlsCollection.webidl new file mode 100644 index 0000000000..eb2d83d421 --- /dev/null +++ b/dom/webidl/HTMLFormControlsCollection.webidl @@ -0,0 +1,17 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.whatwg.org/specs/web-apps/current-work/#htmlformcontrolscollection + * + * © Copyright 2004-2013 Apple Computer, Inc., Mozilla Foundation, and + * Opera Software ASA. You are granted a license to use, reproduce + * and create derivative works of this document. + */ + +interface HTMLFormControlsCollection : HTMLCollection { + // inherits length and item() + /* legacycaller */ getter (RadioNodeList or Element)? namedItem(DOMString name); // shadows inherited namedItem() +}; diff --git a/dom/webidl/HTMLFormElement.webidl b/dom/webidl/HTMLFormElement.webidl new file mode 100644 index 0000000000..8d248e1a53 --- /dev/null +++ b/dom/webidl/HTMLFormElement.webidl @@ -0,0 +1,52 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.whatwg.org/specs/web-apps/current-work/#htmlformelement + * + * © Copyright 2004-2011 Apple Computer, Inc., Mozilla Foundation, and + * Opera Software ASA. You are granted a license to use, reproduce + * and create derivative works of this document. + */ + +[OverrideBuiltins, LegacyUnenumerableNamedProperties] +interface HTMLFormElement : HTMLElement { + [Pure, SetterThrows] + attribute DOMString acceptCharset; + [Pure, SetterThrows] + attribute DOMString action; + [Pure, SetterThrows] + attribute DOMString autocomplete; + [Pure, SetterThrows] + attribute DOMString enctype; + [Pure, SetterThrows] + attribute DOMString encoding; + [Pure, SetterThrows] + attribute DOMString method; + [Pure, SetterThrows] + attribute DOMString name; + [Pure, SetterThrows] + attribute boolean noValidate; + [Pure, SetterThrows] + attribute DOMString target; + + [Constant] + readonly attribute HTMLCollection elements; + [Pure] + readonly attribute long length; + + getter Element (unsigned long index); + // TODO this should be: getter (RadioNodeList or HTMLInputElement or HTMLImageElement) (DOMString name); + getter nsISupports (DOMString name); + + [Throws] + void submit(); + void reset(); + boolean checkValidity(); + boolean reportValidity(); + + [Pref="dom.forms.requestAutocomplete"] + void requestAutocomplete(); +}; diff --git a/dom/webidl/HTMLFrameElement.webidl b/dom/webidl/HTMLFrameElement.webidl new file mode 100644 index 0000000000..9c5aca7c40 --- /dev/null +++ b/dom/webidl/HTMLFrameElement.webidl @@ -0,0 +1,35 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.whatwg.org/specs/web-apps/current-work/#htmlframeelement + * © Copyright 2004-2011 Apple Computer, Inc., Mozilla Foundation, and + * Opera Software ASA. You are granted a license to use, reproduce + * and create derivative works of this document. + */ + +// http://www.whatwg.org/specs/web-apps/current-work/#htmlframeelement +interface HTMLFrameElement : HTMLElement { + [SetterThrows] + attribute DOMString name; + [SetterThrows] + attribute DOMString scrolling; + [SetterThrows] + attribute DOMString src; + [SetterThrows] + attribute DOMString frameBorder; + [SetterThrows] + attribute DOMString longDesc; + [SetterThrows] + attribute boolean noResize; + [NeedsSubjectPrincipal] + readonly attribute Document? contentDocument; + readonly attribute WindowProxy? contentWindow; + + [TreatNullAs=EmptyString, SetterThrows] attribute DOMString marginHeight; + [TreatNullAs=EmptyString, SetterThrows] attribute DOMString marginWidth; +}; + +HTMLFrameElement implements MozFrameLoaderOwner; diff --git a/dom/webidl/HTMLFrameSetElement.webidl b/dom/webidl/HTMLFrameSetElement.webidl new file mode 100644 index 0000000000..ce00d487fa --- /dev/null +++ b/dom/webidl/HTMLFrameSetElement.webidl @@ -0,0 +1,21 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.whatwg.org/specs/web-apps/current-work/ + * + * © Copyright 2004-2011 Apple Computer, Inc., Mozilla Foundation, and + * Opera Software ASA. You are granted a license to use, reproduce + * and create derivative works of this document. + */ + +interface HTMLFrameSetElement : HTMLElement { + [SetterThrows] + attribute DOMString cols; + [SetterThrows] + attribute DOMString rows; +}; + +HTMLFrameSetElement implements WindowEventHandlers; diff --git a/dom/webidl/HTMLHRElement.webidl b/dom/webidl/HTMLHRElement.webidl new file mode 100644 index 0000000000..0495e43b31 --- /dev/null +++ b/dom/webidl/HTMLHRElement.webidl @@ -0,0 +1,30 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.whatwg.org/specs/web-apps/current-work/#the-hr-element + * http://www.whatwg.org/specs/web-apps/current-work/#other-elements,-attributes-and-apis + * © Copyright 2004-2011 Apple Computer, Inc., Mozilla Foundation, and + * Opera Software ASA. You are granted a license to use, reproduce + * and create derivative works of this document. + */ + +// http://www.whatwg.org/specs/web-apps/current-work/#the-hr-element +interface HTMLHRElement : HTMLElement { +}; + +// http://www.whatwg.org/specs/web-apps/current-work/#other-elements,-attributes-and-apis +partial interface HTMLHRElement { + [SetterThrows] + attribute DOMString align; + [SetterThrows] + attribute DOMString color; + [SetterThrows] + attribute boolean noShade; + [SetterThrows] + attribute DOMString size; + [SetterThrows] + attribute DOMString width; +}; diff --git a/dom/webidl/HTMLHeadElement.webidl b/dom/webidl/HTMLHeadElement.webidl new file mode 100644 index 0000000000..0ad45e3848 --- /dev/null +++ b/dom/webidl/HTMLHeadElement.webidl @@ -0,0 +1,16 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.whatwg.org/specs/web-apps/current-work/#the-head-element + * + * © Copyright 2004-2011 Apple Computer, Inc., Mozilla Foundation, and + * Opera Software ASA. You are granted a license to use, reproduce + * and create derivative works of this document. + */ + +// http://www.whatwg.org/specs/web-apps/current-work/#the-head-element +interface HTMLHeadElement : HTMLElement {}; + diff --git a/dom/webidl/HTMLHeadingElement.webidl b/dom/webidl/HTMLHeadingElement.webidl new file mode 100644 index 0000000000..c07e5cb99c --- /dev/null +++ b/dom/webidl/HTMLHeadingElement.webidl @@ -0,0 +1,22 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.whatwg.org/specs/web-apps/current-work/#the-h1,-h2,-h3,-h4,-h5,-and-h6-elements + * http://www.whatwg.org/specs/web-apps/current-work/#other-elements,-attributes-and-apis + * © Copyright 2004-2011 Apple Computer, Inc., Mozilla Foundation, and + * Opera Software ASA. You are granted a license to use, reproduce + * and create derivative works of this document. + */ + +// http://www.whatwg.org/specs/web-apps/current-work/#the-h1,-h2,-h3,-h4,-h5,-and-h6-elements +interface HTMLHeadingElement : HTMLElement { +}; + +// http://www.whatwg.org/specs/web-apps/current-work/#other-elements,-attributes-and-apis +partial interface HTMLHeadingElement { + [SetterThrows] + attribute DOMString align; +}; diff --git a/dom/webidl/HTMLHtmlElement.webidl b/dom/webidl/HTMLHtmlElement.webidl new file mode 100644 index 0000000000..b06de77619 --- /dev/null +++ b/dom/webidl/HTMLHtmlElement.webidl @@ -0,0 +1,22 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.whatwg.org/specs/web-apps/current-work/#the-html-element + * http://www.whatwg.org/specs/web-apps/current-work/#other-elements,-attributes-and-apis + * + * © Copyright 2004-2011 Apple Computer, Inc., Mozilla Foundation, and + * Opera Software ASA. You are granted a license to use, reproduce + * and create derivative works of this document. + */ + +// http://www.whatwg.org/specs/web-apps/current-work/#the-html-element +interface HTMLHtmlElement : HTMLElement {}; + +// http://www.whatwg.org/specs/web-apps/current-work/#other-elements,-attributes-and-apis +partial interface HTMLHtmlElement { + [SetterThrows, Pure] + attribute DOMString version; +}; diff --git a/dom/webidl/HTMLHyperlinkElementUtils.webidl b/dom/webidl/HTMLHyperlinkElementUtils.webidl new file mode 100644 index 0000000000..25f175db93 --- /dev/null +++ b/dom/webidl/HTMLHyperlinkElementUtils.webidl @@ -0,0 +1,34 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * https://html.spec.whatwg.org/multipage/semantics.html#htmlhyperlinkelementutils + * © Copyright 2004-2011 Apple Computer, Inc., Mozilla Foundation, and + * Opera Software ASA. You are granted a license to use, reproduce + * and create derivative works of this document. + */ + +[NoInterfaceObject] +interface HTMLHyperlinkElementUtils { + // Bug 824857: no support for stringifier attributes yet. + // stringifier attribute USVString href; + + // Bug 824857 should remove this. + stringifier; + + [SetterThrows] + attribute USVString href; + + readonly attribute USVString origin; + attribute USVString protocol; + attribute USVString username; + attribute USVString password; + attribute USVString host; + attribute USVString hostname; + attribute USVString port; + attribute USVString pathname; + attribute USVString search; + attribute USVString hash; +}; diff --git a/dom/webidl/HTMLIFrameElement.webidl b/dom/webidl/HTMLIFrameElement.webidl new file mode 100644 index 0000000000..0a1b49affe --- /dev/null +++ b/dom/webidl/HTMLIFrameElement.webidl @@ -0,0 +1,70 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.whatwg.org/specs/web-apps/current-work/#the-iframe-element + * http://www.whatwg.org/specs/web-apps/current-work/#other-elements,-attributes-and-apis + * © Copyright 2004-2011 Apple Computer, Inc., Mozilla Foundation, and + * Opera Software ASA. You are granted a license to use, reproduce + * and create derivative works of this document. + */ + +interface HTMLIFrameElement : HTMLElement { + [SetterThrows, Pure] + attribute DOMString src; + [SetterThrows, Pure] + attribute DOMString srcdoc; + [SetterThrows, Pure] + attribute DOMString name; + [PutForwards=value] readonly attribute DOMTokenList sandbox; + // attribute boolean seamless; + [SetterThrows, Pure] + attribute boolean allowFullscreen; + [SetterThrows, Pure] + attribute DOMString width; + [SetterThrows, Pure] + attribute DOMString height; + [SetterThrows, Pure, Pref="network.http.enablePerElementReferrer"] + attribute DOMString referrerPolicy; + [NeedsSubjectPrincipal] + readonly attribute Document? contentDocument; + readonly attribute WindowProxy? contentWindow; +}; + +// http://www.whatwg.org/specs/web-apps/current-work/#other-elements,-attributes-and-apis +partial interface HTMLIFrameElement { + [SetterThrows, Pure] + attribute DOMString align; + [SetterThrows, Pure] + attribute DOMString scrolling; + [SetterThrows, Pure] + attribute DOMString frameBorder; + [SetterThrows, Pure] + attribute DOMString longDesc; + + [TreatNullAs=EmptyString,SetterThrows,Pure] attribute DOMString marginHeight; + [TreatNullAs=EmptyString,SetterThrows,Pure] attribute DOMString marginWidth; +}; + +partial interface HTMLIFrameElement { + // GetSVGDocument + [NeedsSubjectPrincipal] + Document? getSVGDocument(); +}; + +partial interface HTMLIFrameElement { + // nsIDOMMozBrowserFrame + [ChromeOnly,SetterThrows] + attribute boolean mozbrowser; +}; + +partial interface HTMLIFrameElement { + // nsIMozBrowserFrame + [ChromeOnly] + readonly attribute DOMString appManifestURL; +}; + +HTMLIFrameElement implements MozFrameLoaderOwner; +HTMLIFrameElement implements BrowserElement; diff --git a/dom/webidl/HTMLImageElement.webidl b/dom/webidl/HTMLImageElement.webidl new file mode 100644 index 0000000000..243c655099 --- /dev/null +++ b/dom/webidl/HTMLImageElement.webidl @@ -0,0 +1,109 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.whatwg.org/specs/web-apps/current-work/#htmlimageelement + * http://www.whatwg.org/specs/web-apps/current-work/#other-elements,-attributes-and-apis + * © Copyright 2004-2011 Apple Computer, Inc., Mozilla Foundation, and + * Opera Software ASA. You are granted a license to use, reproduce + * and create derivative works of this document. + */ + +interface imgINotificationObserver; +interface imgIRequest; +interface URI; +interface nsIStreamListener; + +[NamedConstructor=Image(optional unsigned long width, optional unsigned long height)] +interface HTMLImageElement : HTMLElement { + [SetterThrows] + attribute DOMString alt; + [SetterThrows] + attribute DOMString src; + [SetterThrows] + attribute DOMString srcset; + [SetterThrows] + attribute DOMString? crossOrigin; + [SetterThrows] + attribute DOMString useMap; + [SetterThrows, Pref="network.http.enablePerElementReferrer"] + attribute DOMString referrerPolicy; + [SetterThrows] + attribute boolean isMap; + [SetterThrows] + attribute unsigned long width; + [SetterThrows] + attribute unsigned long height; + readonly attribute unsigned long naturalWidth; + readonly attribute unsigned long naturalHeight; + readonly attribute boolean complete; +}; + +// http://www.whatwg.org/specs/web-apps/current-work/#other-elements,-attributes-and-apis +partial interface HTMLImageElement { + [SetterThrows] + attribute DOMString name; + [SetterThrows] + attribute DOMString align; + [SetterThrows] + attribute unsigned long hspace; + [SetterThrows] + attribute unsigned long vspace; + [SetterThrows] + attribute DOMString longDesc; + + [TreatNullAs=EmptyString,SetterThrows] attribute DOMString border; +}; + +// [Update me: not in whatwg spec yet] +// http://picture.responsiveimages.org/#the-img-element +partial interface HTMLImageElement { + [SetterThrows] + attribute DOMString sizes; + readonly attribute DOMString currentSrc; +}; + +// Mozilla extensions. +partial interface HTMLImageElement { + attribute DOMString lowsrc; + + // These attributes are offsets from the closest view (to mimic + // NS4's "offset-from-layer" behavior). + readonly attribute long x; + readonly attribute long y; +}; + +[NoInterfaceObject] +interface MozImageLoadingContent { + // Mirrored chrome-only nsIImageLoadingContent methods. Please make sure + // to update this list if nsIImageLoadingContent changes. + [ChromeOnly] + const long UNKNOWN_REQUEST = -1; + [ChromeOnly] + const long CURRENT_REQUEST = 0; + [ChromeOnly] + const long PENDING_REQUEST = 1; + + [ChromeOnly] + attribute boolean loadingEnabled; + [ChromeOnly] + readonly attribute short imageBlockingStatus; + [ChromeOnly] + void addObserver(imgINotificationObserver aObserver); + [ChromeOnly] + void removeObserver(imgINotificationObserver aObserver); + [ChromeOnly,Throws] + imgIRequest? getRequest(long aRequestType); + [ChromeOnly,Throws] + long getRequestType(imgIRequest aRequest); + [ChromeOnly,Throws] + readonly attribute URI? currentURI; + [ChromeOnly,Throws] + void forceReload(optional boolean aNotify); + [ChromeOnly] + void forceImageState(boolean aForce, unsigned long long aState); +}; + +HTMLImageElement implements MozImageLoadingContent; diff --git a/dom/webidl/HTMLInputElement.webidl b/dom/webidl/HTMLInputElement.webidl new file mode 100644 index 0000000000..d3d537f84c --- /dev/null +++ b/dom/webidl/HTMLInputElement.webidl @@ -0,0 +1,261 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.whatwg.org/specs/web-apps/current-work/#the-input-element + * http://www.whatwg.org/specs/web-apps/current-work/#other-elements,-attributes-and-apis + * + * © Copyright 2004-2011 Apple Computer, Inc., Mozilla Foundation, and + * Opera Software ASA. You are granted a license to use, reproduce + * and create derivative works of this document. + */ + +enum SelectionMode { + "select", + "start", + "end", + "preserve", +}; + +interface nsIControllers; + +interface HTMLInputElement : HTMLElement { + [Pure, SetterThrows] + attribute DOMString accept; + [Pure, SetterThrows] + attribute DOMString alt; + [Pure, SetterThrows] + attribute DOMString autocomplete; + [Pure, SetterThrows] + attribute boolean autofocus; + [Pure, SetterThrows] + attribute boolean defaultChecked; + [Pure] + attribute boolean checked; + // Bug 850337 - attribute DOMString dirName; + [Pure, SetterThrows] + attribute boolean disabled; + readonly attribute HTMLFormElement? form; + [Pure] + readonly attribute FileList? files; + [Pure, SetterThrows] + attribute DOMString formAction; + [Pure, SetterThrows] + attribute DOMString formEnctype; + [Pure, SetterThrows] + attribute DOMString formMethod; + [Pure, SetterThrows] + attribute boolean formNoValidate; + [Pure, SetterThrows] + attribute DOMString formTarget; + [Pure, SetterThrows] + attribute unsigned long height; + [Pure] + attribute boolean indeterminate; + [Pure, SetterThrows, Pref="dom.forms.inputmode"] + attribute DOMString inputMode; + [Pure] + readonly attribute HTMLElement? list; + [Pure, SetterThrows] + attribute DOMString max; + [Pure, SetterThrows] + attribute long maxLength; + [Pure, SetterThrows] + attribute DOMString min; + [Pure, SetterThrows] + attribute long minLength; + [Pure, SetterThrows] + attribute boolean multiple; + [Pure, SetterThrows] + attribute DOMString name; + [Pure, SetterThrows] + attribute DOMString pattern; + [Pure, SetterThrows] + attribute DOMString placeholder; + [Pure, SetterThrows] + attribute boolean readOnly; + [Pure, SetterThrows] + attribute boolean required; + [Pure, SetterThrows] + attribute unsigned long size; + [Pure, SetterThrows] + attribute DOMString src; + [Pure, SetterThrows] + attribute DOMString step; + [Pure, SetterThrows] + attribute DOMString type; + [Pure, SetterThrows] + attribute DOMString defaultValue; + [Pure, TreatNullAs=EmptyString, Throws] + attribute DOMString value; + [Throws, Func="HTMLInputElement::ValueAsDateEnabled"] + attribute Date? valueAsDate; + [Pure, SetterThrows] + attribute unrestricted double valueAsNumber; + attribute unsigned long width; + + [Throws] + void stepUp(optional long n = 1); + [Throws] + void stepDown(optional long n = 1); + + [Pure] + readonly attribute boolean willValidate; + [Pure] + readonly attribute ValidityState validity; + [GetterThrows] + readonly attribute DOMString validationMessage; + boolean checkValidity(); + boolean reportValidity(); + void setCustomValidity(DOMString error); + + // Bug 850365 readonly attribute NodeList labels; + + void select(); + + [Throws] + // TODO: unsigned vs signed + attribute long? selectionStart; + [Throws] + attribute long? selectionEnd; + [Throws] + attribute DOMString? selectionDirection; + [Throws] + void setRangeText(DOMString replacement); + [Throws] + void setRangeText(DOMString replacement, unsigned long start, + unsigned long end, optional SelectionMode selectionMode = "preserve"); + + // also has obsolete members +}; + +partial interface HTMLInputElement { + [Pure, SetterThrows] + attribute DOMString align; + [Pure, SetterThrows] + attribute DOMString useMap; +}; + +// Mozilla extensions + +partial interface HTMLInputElement { + [Throws] + void setSelectionRange(long start, long end, optional DOMString direction); + + [GetterThrows, ChromeOnly] + readonly attribute nsIControllers controllers; + [GetterThrows] + readonly attribute long textLength; + + [Throws, ChromeOnly] + sequence<DOMString> mozGetFileNameArray(); + + [ChromeOnly, Throws] + void mozSetFileNameArray(sequence<DOMString> fileNames); + + [ChromeOnly] + void mozSetFileArray(sequence<File> files); + + // This method is meant to use for testing only. + [ChromeOnly, Throws] + void mozSetDirectory(DOMString directoryPath); + + // This method is meant to use for testing only. + [ChromeOnly] + void mozSetDndFilesAndDirectories(sequence<(File or Directory)> list); + + // Number controls (<input type=number>) have an anonymous text control + // (<input type=text>) in the anonymous shadow tree that they contain. On + // such an anonymous text control this property provides access to the + // number control that owns the text control. This is useful, for example, + // in code that looks at the currently focused element to make decisions + // about which IME to bring up. Such code needs to be able to check for any + // owning number control since it probably wants to bring up a number pad + // instead of the standard keyboard, even when the anonymous text control has + // focus. + [ChromeOnly] + readonly attribute HTMLInputElement? ownerNumberControl; + + boolean mozIsTextField(boolean aExcludePassword); + + [ChromeOnly] + // This function will return null if @autocomplete is not defined for the + // current @type + AutocompleteInfo? getAutocompleteInfo(); +}; + +partial interface HTMLInputElement { + // Mirrored chrome-only nsIDOMNSEditableElement methods. Please make sure + // to update this list if nsIDOMNSEditableElement changes. + + [Pure, ChromeOnly] + readonly attribute nsIEditor? editor; + + // This is similar to set .value on nsIDOMInput/TextAreaElements, but handling + // of the value change is closer to the normal user input, so 'change' event + // for example will be dispatched when focusing out the element. + [Func="IsChromeOrXBL", NeedsSubjectPrincipal] + void setUserInput(DOMString input); +}; + +partial interface HTMLInputElement { + [Pref="dom.input.dirpicker", SetterThrows] + attribute boolean allowdirs; + + [Pref="dom.input.dirpicker"] + readonly attribute boolean isFilesAndDirectoriesSupported; + + [Throws, Pref="dom.input.dirpicker"] + Promise<sequence<(File or Directory)>> getFilesAndDirectories(); + + [Throws, Pref="dom.input.dirpicker"] + Promise<sequence<File>> getFiles(optional boolean recursiveFlag = false); + + [Throws, Pref="dom.input.dirpicker"] + void chooseDirectory(); +}; + +[NoInterfaceObject] +interface MozPhonetic { + [Pure, ChromeOnly] + readonly attribute DOMString phonetic; +}; + +HTMLInputElement implements MozImageLoadingContent; +HTMLInputElement implements MozPhonetic; + +// Webkit/Blink +partial interface HTMLInputElement { + [Pref="dom.webkitBlink.filesystem.enabled", Frozen, Cached, Pure] + readonly attribute sequence<FileSystemEntry> webkitEntries; + + [Pref="dom.webkitBlink.dirPicker.enabled", BinaryName="WebkitDirectoryAttr", SetterThrows] + attribute boolean webkitdirectory; +}; + +dictionary DateTimeValue { + long hour; + long minute; +}; + +partial interface HTMLInputElement { + [Pref="dom.forms.datetime", ChromeOnly] + DateTimeValue getDateTimeInputBoxValue(); + + [Pref="dom.forms.datetime", ChromeOnly] + void updateDateTimeInputBox(optional DateTimeValue value); + + [Pref="dom.forms.datetime", ChromeOnly] + void setDateTimePickerState(boolean open); + + [Pref="dom.forms.datetime", Func="IsChromeOrXBL"] + void openDateTimePicker(optional DateTimeValue initialValue); + + [Pref="dom.forms.datetime", Func="IsChromeOrXBL"] + void updateDateTimePicker(optional DateTimeValue value); + + [Pref="dom.forms.datetime", Func="IsChromeOrXBL"] + void closeDateTimePicker(); +}; diff --git a/dom/webidl/HTMLLIElement.webidl b/dom/webidl/HTMLLIElement.webidl new file mode 100644 index 0000000000..c20e00846b --- /dev/null +++ b/dom/webidl/HTMLLIElement.webidl @@ -0,0 +1,25 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.whatwg.org/specs/web-apps/current-work/#the-li-element + * http://www.whatwg.org/specs/web-apps/current-work/#other-elements,-attributes-and-apis + * + * © Copyright 2004-2011 Apple Computer, Inc., Mozilla Foundation, and + * Opera Software ASA. You are granted a license to use, reproduce + * and create derivative works of this document. + */ + +// http://www.whatwg.org/specs/web-apps/current-work/#the-li-element +interface HTMLLIElement : HTMLElement { + [SetterThrows, Pure] + attribute long value; +}; + +// http://www.whatwg.org/specs/web-apps/current-work/#other-elements,-attributes-and-apis +partial interface HTMLLIElement { + [SetterThrows, Pure] + attribute DOMString type; +}; diff --git a/dom/webidl/HTMLLabelElement.webidl b/dom/webidl/HTMLLabelElement.webidl new file mode 100644 index 0000000000..f44a562191 --- /dev/null +++ b/dom/webidl/HTMLLabelElement.webidl @@ -0,0 +1,18 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.whatwg.org/specs/web-apps/current-work/ + * + * © Copyright 2004-2011 Apple Computer, Inc., Mozilla Foundation, and + * Opera Software ASA. You are granted a license to use, reproduce + * and create derivative works of this document. + */ + +interface HTMLLabelElement : HTMLElement { + readonly attribute HTMLFormElement? form; + attribute DOMString htmlFor; + readonly attribute HTMLElement? control; +}; diff --git a/dom/webidl/HTMLLegendElement.webidl b/dom/webidl/HTMLLegendElement.webidl new file mode 100644 index 0000000000..0ce4ae88b9 --- /dev/null +++ b/dom/webidl/HTMLLegendElement.webidl @@ -0,0 +1,24 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.whatwg.org/specs/web-apps/current-work/#the-legend-element + * http://www.whatwg.org/specs/web-apps/current-work/#other-elements,-attributes-and-apis + * + * © Copyright 2004-2011 Apple Computer, Inc., Mozilla Foundation, and + * Opera Software ASA. You are granted a license to use, reproduce + * and create derivative works of this document. + */ + +// http://www.whatwg.org/specs/web-apps/current-work/#the-legend-element +interface HTMLLegendElement : HTMLElement { + readonly attribute HTMLFormElement? form; +}; + +// http://www.whatwg.org/specs/web-apps/current-work/#other-elements,-attributes-and-apis +partial interface HTMLLegendElement { + [SetterThrows] + attribute DOMString align; +}; diff --git a/dom/webidl/HTMLLinkElement.webidl b/dom/webidl/HTMLLinkElement.webidl new file mode 100644 index 0000000000..ec094e55ec --- /dev/null +++ b/dom/webidl/HTMLLinkElement.webidl @@ -0,0 +1,58 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.whatwg.org/specs/web-apps/current-work/#the-link-element + * http://www.whatwg.org/specs/web-apps/current-work/#other-elements,-attributes-and-apis + * © Copyright 2004-2011 Apple Computer, Inc., Mozilla Foundation, and + * Opera Software ASA. You are granted a license to use, reproduce + * and create derivative works of this document. + */ + +// http://www.whatwg.org/specs/web-apps/current-work/#the-link-element +interface HTMLLinkElement : HTMLElement { + [Pure] + attribute boolean disabled; + [SetterThrows, Pure] + attribute DOMString href; + [SetterThrows, Pure] + attribute DOMString? crossOrigin; + [SetterThrows, Pure] + attribute DOMString rel; + [PutForwards=value] + readonly attribute DOMTokenList relList; + [SetterThrows, Pure] + attribute DOMString media; + [SetterThrows, Pure] + attribute DOMString hreflang; + [SetterThrows, Pure] + attribute DOMString type; + [SetterThrows, Pure, Pref="network.http.enablePerElementReferrer"] + attribute DOMString referrerPolicy; + [PutForwards=value] readonly attribute DOMTokenList sizes; +}; +HTMLLinkElement implements LinkStyle; + +// http://www.whatwg.org/specs/web-apps/current-work/#other-elements,-attributes-and-apis +partial interface HTMLLinkElement { + [SetterThrows, Pure] + attribute DOMString charset; + [SetterThrows, Pure] + attribute DOMString rev; + [SetterThrows, Pure] + attribute DOMString target; +}; + +// http://w3c.github.io/webcomponents/spec/imports/#interface-import +partial interface HTMLLinkElement { + [Func="nsDocument::IsWebComponentsEnabled"] + readonly attribute Document? import; +}; + +// https://w3c.github.io/webappsec/specs/subresourceintegrity/#htmllinkelement-1 +partial interface HTMLLinkElement { + [SetterThrows] + attribute DOMString integrity; +}; diff --git a/dom/webidl/HTMLMapElement.webidl b/dom/webidl/HTMLMapElement.webidl new file mode 100644 index 0000000000..88fe4e54c9 --- /dev/null +++ b/dom/webidl/HTMLMapElement.webidl @@ -0,0 +1,21 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.whatwg.org/specs/web-apps/current-work/#the-map-element + * © Copyright 2004-2011 Apple Computer, Inc., Mozilla Foundation, and + * Opera Software ASA. You are granted a license to use, reproduce + * and create derivative works of this document. + */ + +// http://www.whatwg.org/specs/web-apps/current-work/#the-map-element +interface HTMLMapElement : HTMLElement { + [SetterThrows, Pure] + attribute DOMString name; + [Constant] + readonly attribute HTMLCollection areas; + // Not supported yet. + //readonly attribute HTMLCollection images; +}; diff --git a/dom/webidl/HTMLMediaElement.webidl b/dom/webidl/HTMLMediaElement.webidl new file mode 100644 index 0000000000..456579ec15 --- /dev/null +++ b/dom/webidl/HTMLMediaElement.webidl @@ -0,0 +1,224 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.whatwg.org/specs/web-apps/current-work/#media-elements + * + * © Copyright 2004-2011 Apple Computer, Inc., Mozilla Foundation, and + * Opera Software ASA. You are granted a license to use, reproduce + * and create derivative works of this document. + */ + +interface HTMLMediaElement : HTMLElement { + + // error state + readonly attribute MediaError? error; + + // network state + [SetterThrows] + attribute DOMString src; + readonly attribute DOMString currentSrc; + + [SetterThrows] + attribute DOMString? crossOrigin; + const unsigned short NETWORK_EMPTY = 0; + const unsigned short NETWORK_IDLE = 1; + const unsigned short NETWORK_LOADING = 2; + const unsigned short NETWORK_NO_SOURCE = 3; + readonly attribute unsigned short networkState; + [SetterThrows] + attribute DOMString preload; + [NewObject] + readonly attribute TimeRanges buffered; + void load(); + DOMString canPlayType(DOMString type); + + // ready state + const unsigned short HAVE_NOTHING = 0; + const unsigned short HAVE_METADATA = 1; + const unsigned short HAVE_CURRENT_DATA = 2; + const unsigned short HAVE_FUTURE_DATA = 3; + const unsigned short HAVE_ENOUGH_DATA = 4; + readonly attribute unsigned short readyState; + readonly attribute boolean seeking; + + // playback state + [SetterThrows] + attribute double currentTime; + [Throws] + void fastSeek(double time); + readonly attribute unrestricted double duration; + [ChromeOnly] + readonly attribute boolean isEncrypted; + // TODO: Bug 847376 - readonly attribute any startDate; + readonly attribute boolean paused; + [SetterThrows] + attribute double defaultPlaybackRate; + [SetterThrows] + attribute double playbackRate; + [NewObject] + readonly attribute TimeRanges played; + [NewObject] + readonly attribute TimeRanges seekable; + readonly attribute boolean ended; + [SetterThrows] + attribute boolean autoplay; + [SetterThrows] + attribute boolean loop; + [Throws] + void play(); + [Throws] + void pause(); + + // TODO: Bug 847377 - mediaGroup and MediaController + // media controller + // attribute DOMString mediaGroup; + // attribute MediaController? controller; + + // controls + [SetterThrows] + attribute boolean controls; + [SetterThrows] + attribute double volume; + attribute boolean muted; + [SetterThrows] + attribute boolean defaultMuted; + + // TODO: Bug 847379 + // tracks + [Pref="media.track.enabled"] + readonly attribute AudioTrackList audioTracks; + [Pref="media.track.enabled"] + readonly attribute VideoTrackList videoTracks; + readonly attribute TextTrackList? textTracks; + TextTrack addTextTrack(TextTrackKind kind, + optional DOMString label = "", + optional DOMString language = ""); +}; + +// Mozilla extensions: +partial interface HTMLMediaElement { + [ChromeOnly] + readonly attribute MediaSource? mozMediaSourceObject; + [ChromeOnly] + readonly attribute DOMString mozDebugReaderData; + + [Pref="media.test.dumpDebugInfo"] + void mozDumpDebugInfo(); + + attribute MediaStream? srcObject; + // TODO: remove prefixed version soon (1183495). + attribute MediaStream? mozSrcObject; + + attribute boolean mozPreservesPitch; + readonly attribute boolean mozAutoplayEnabled; + + // NB: for internal use with the video controls: + [Func="IsChromeOrXBL"] attribute boolean mozAllowCasting; + [Func="IsChromeOrXBL"] attribute boolean mozIsCasting; + + // Mozilla extension: stream capture + [Throws, UnsafeInPrerendering] + MediaStream mozCaptureStream(); + [Throws, UnsafeInPrerendering] + MediaStream mozCaptureStreamUntilEnded(); + readonly attribute boolean mozAudioCaptured; + + // Mozilla extension: return embedded metadata from the stream as a + // JSObject with key:value pairs for each tag. This can be used by + // player interfaces to display the song title, artist, etc. + [Throws] + object? mozGetMetadata(); + + // Mozilla extension: provides access to the fragment end time if + // the media element has a fragment URI for the currentSrc, otherwise + // it is equal to the media duration. + readonly attribute double mozFragmentEnd; + + // Mozilla extension: an audio channel type for media elements. + // Read AudioChannel.webidl for more information about this attribute. + [SetterThrows, Pref="media.useAudioChannelAPI"] + attribute AudioChannel mozAudioChannelType; + + // In addition the media element has this new events: + // * onmozinterruptbegin - called when the media element is interrupted + // because of the audiochannel manager. + // * onmozinterruptend - called when the interruption is concluded + [Pref="media.useAudioChannelAPI"] + attribute EventHandler onmozinterruptbegin; + + [Pref="media.useAudioChannelAPI"] + attribute EventHandler onmozinterruptend; +}; + +// Encrypted Media Extensions +partial interface HTMLMediaElement { + [Pref="media.eme.apiVisible"] + readonly attribute MediaKeys? mediaKeys; + + // void, not any: https://www.w3.org/Bugs/Public/show_bug.cgi?id=26457 + [Pref="media.eme.apiVisible", NewObject] + Promise<void> setMediaKeys(MediaKeys? mediaKeys); + + [Pref="media.eme.apiVisible"] + attribute EventHandler onencrypted; + + [Pref="media.eme.apiVisible"] + attribute EventHandler onwaitingforkey; +}; + +// This is just for testing +partial interface HTMLMediaElement { + [Pref="media.useAudioChannelService.testing"] + readonly attribute double computedVolume; + [Pref="media.useAudioChannelService.testing"] + readonly attribute boolean computedMuted; + [Pref="media.useAudioChannelService.testing"] + readonly attribute unsigned long computedSuspended; +}; + +/* + * HTMLMediaElement::seekToNextFrame() is a Mozilla experimental feature. + * + * The SeekToNextFrame() method provides a way to access a video element's video + * frames one by one without going through the realtime playback. So, it lets + * authors use "frame" as unit to access the video element's underlying data, + * instead of "time". + * + * The SeekToNextFrame() is a kind of seek operation, so normally, once it is + * invoked, a "seeking" event is dispatched. However, if the media source has no + * video data or is not seekable, the operation is ignored without filing the + * "seeking" event. + * + * Once the SeekToNextFrame() is done, a "seeked" event should always be filed + * and a "ended" event might also be filed depends on where the media element's + * position before seeking was. There are two cases: + * Assume the media source has n+1 video frames where n is a non-negative + * integers and the frame sequence is indexed from zero. + * (1) If the currentTime is at anywhere smaller than the n-th frame's beginning + * time, say the currentTime is now pointing to a position which is smaller + * than the x-th frame's beginning time and larger or equal to the (x-1)-th + * frame's beginning time, where x belongs to [1, n], then the + * SeekToNextFrame() operation seeks the media to the x-th frame, sets the + * media's currentTime to the x-th frame's beginning time and dispatches a + * "seeked" event. + * (2) Otherwise, if the currentTime is larger or equal to the n-th frame's + * beginning time, then the SeekToNextFrame() operation sets the media's + * currentTime to the duration of the media source and dispatches a "seeked" + * event and an "ended" event. + */ +partial interface HTMLMediaElement { + [Throws, Pref="media.seekToNextFrame.enabled"] + Promise<void> seekToNextFrame(); +}; + +/* + * This is an API for simulating visibility changes to help debug and write + * tests about suspend-video-decoding. + */ +partial interface HTMLMediaElement { + [Pref="media.test.setVisible"] + void setVisible(boolean aVisible); +}; diff --git a/dom/webidl/HTMLMenuElement.webidl b/dom/webidl/HTMLMenuElement.webidl new file mode 100644 index 0000000000..ff81a7c80d --- /dev/null +++ b/dom/webidl/HTMLMenuElement.webidl @@ -0,0 +1,59 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.whatwg.org/specs/web-apps/current-work/#the-menu-element + * http://www.whatwg.org/specs/web-apps/current-work/#other-elements,-attributes-and-apis + * + * © Copyright 2004-2011 Apple Computer, Inc., Mozilla Foundation, and + * Opera Software ASA. You are granted a license to use, reproduce + * and create derivative works of this document. + */ + +interface MenuBuilder; + +// http://www.whatwg.org/specs/web-apps/current-work/#the-menu-element +interface HTMLMenuElement : HTMLElement { + [SetterThrows] + attribute DOMString type; + [SetterThrows] + attribute DOMString label; +}; + +// http://www.whatwg.org/specs/web-apps/current-work/#other-elements,-attributes-and-apis +partial interface HTMLMenuElement { + [SetterThrows] + attribute boolean compact; +}; + +// Mozilla specific stuff +partial interface HTMLMenuElement { + /** + * Creates and dispatches a trusted event named "show". + * The event is not cancelable and does not bubble. + * See http://www.whatwg.org/specs/web-apps/current-work/multipage/interactive-elements.html#context-menus + */ + [ChromeOnly] + void sendShowEvent(); + + /** + * Creates a native menu builder. The builder type is dependent on menu type. + * Currently, it returns the @mozilla.org/content/html-menu-builder;1 + * component. Toolbar menus are not yet supported (the method returns null). + */ + [ChromeOnly] + MenuBuilder? createBuilder(); + + /* + * Builds a menu by iterating over menu children. + * See http://www.whatwg.org/specs/web-apps/current-work/multipage/interactive-elements.html#building-menus-and-toolbars + * The caller can use a native builder by calling createBuilder() or provide + * a custom builder that implements the nsIMenuBuilder interface. + * A custom builder can be used for example to build native context menus + * that are not defined using <menupopup>. + */ + [ChromeOnly] + void build(MenuBuilder aBuilder); +}; diff --git a/dom/webidl/HTMLMenuItemElement.webidl b/dom/webidl/HTMLMenuItemElement.webidl new file mode 100644 index 0000000000..7064885a1c --- /dev/null +++ b/dom/webidl/HTMLMenuItemElement.webidl @@ -0,0 +1,36 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.whatwg.org/specs/web-apps/current-work/#the-menuitem-element + * + * © Copyright 2004-2011 Apple Computer, Inc., Mozilla Foundation, and + * Opera Software ASA. You are granted a license to use, reproduce + * and create derivative works of this document. + */ + +// http://www.whatwg.org/specs/web-apps/current-work/#the-menuitem-element +interface HTMLMenuItemElement : HTMLElement { + [SetterThrows] + attribute DOMString type; + [SetterThrows] + attribute DOMString label; + [SetterThrows] + attribute DOMString icon; + [SetterThrows] + attribute boolean disabled; + [SetterThrows] + attribute boolean checked; + [SetterThrows] + attribute DOMString radiogroup; + + // This should be 'default' but in the IDL implementation + // this has been renamed 'defaultChecked'. + [SetterThrows] + attribute boolean defaultChecked; + + // Currently not implemented. +// readonly attribute HTMLElement? command; +}; diff --git a/dom/webidl/HTMLMetaElement.webidl b/dom/webidl/HTMLMetaElement.webidl new file mode 100644 index 0000000000..5b7b0f92c2 --- /dev/null +++ b/dom/webidl/HTMLMetaElement.webidl @@ -0,0 +1,28 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.whatwg.org/specs/web-apps/current-work/#the-meta-element + * http://www.whatwg.org/specs/web-apps/current-work/#other-elements,-attributes-and-apis + * © Copyright 2004-2011 Apple Computer, Inc., Mozilla Foundation, and + * Opera Software ASA. You are granted a license to use, reproduce + * and create derivative works of this document. + */ + +// http://www.whatwg.org/specs/web-apps/current-work/#the-meta-element +interface HTMLMetaElement : HTMLElement { + [SetterThrows, Pure] + attribute DOMString name; + [SetterThrows, Pure] + attribute DOMString httpEquiv; + [SetterThrows, Pure] + attribute DOMString content; +}; + +// http://www.whatwg.org/specs/web-apps/current-work/#other-elements,-attributes-and-apis +partial interface HTMLMetaElement { + [SetterThrows, Pure] + attribute DOMString scheme; +}; diff --git a/dom/webidl/HTMLMeterElement.webidl b/dom/webidl/HTMLMeterElement.webidl new file mode 100644 index 0000000000..1f80764e94 --- /dev/null +++ b/dom/webidl/HTMLMeterElement.webidl @@ -0,0 +1,33 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.whatwg.org/specs/web-apps/current-work/#the-meter-element + * + * © Copyright 2004-2011 Apple Computer, Inc., Mozilla Foundation, and + * Opera Software ASA. You are granted a license to use, reproduce + * and create derivative works of this document. + */ + +// http://www.whatwg.org/specs/web-apps/current-work/#the-meter-element +interface HTMLMeterElement : HTMLElement { + [SetterThrows] + attribute double value; + [SetterThrows] + attribute double min; + [SetterThrows] + attribute double max; + [SetterThrows] + attribute double low; + [SetterThrows] + attribute double high; + [SetterThrows] + attribute double optimum; + + /** + * The labels attribute will be done with bug 556743. + */ + //readonly attribute NodeList labels; +}; diff --git a/dom/webidl/HTMLModElement.webidl b/dom/webidl/HTMLModElement.webidl new file mode 100644 index 0000000000..45086ccebb --- /dev/null +++ b/dom/webidl/HTMLModElement.webidl @@ -0,0 +1,19 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.whatwg.org/specs/web-apps/current-work/#attributes-common-to-ins-and-del-elements + * © Copyright 2004-2011 Apple Computer, Inc., Mozilla Foundation, and + * Opera Software ASA. You are granted a license to use, reproduce + * and create derivative works of this document. + */ + +// http://www.whatwg.org/specs/web-apps/current-work/#attributes-common-to-ins-and-del-elements +interface HTMLModElement : HTMLElement { + [SetterThrows, Pure] + attribute DOMString cite; + [SetterThrows, Pure] + attribute DOMString dateTime; +}; diff --git a/dom/webidl/HTMLOListElement.webidl b/dom/webidl/HTMLOListElement.webidl new file mode 100644 index 0000000000..f41abf3eaa --- /dev/null +++ b/dom/webidl/HTMLOListElement.webidl @@ -0,0 +1,29 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.whatwg.org/specs/web-apps/current-work/#the-ol-element + * http://www.whatwg.org/specs/web-apps/current-work/#other-elements,-attributes-and-apis + * + * © Copyright 2004-2011 Apple Computer, Inc., Mozilla Foundation, and + * Opera Software ASA. You are granted a license to use, reproduce + * and create derivative works of this document. + */ + +// http://www.whatwg.org/specs/web-apps/current-work/#the-ol-element +interface HTMLOListElement : HTMLElement { + [SetterThrows] + attribute boolean reversed; + [SetterThrows] + attribute long start; + [SetterThrows] + attribute DOMString type; +}; + +// http://www.whatwg.org/specs/web-apps/current-work/#other-elements,-attributes-and-apis +partial interface HTMLOListElement { + [SetterThrows] + attribute boolean compact; +}; diff --git a/dom/webidl/HTMLObjectElement.webidl b/dom/webidl/HTMLObjectElement.webidl new file mode 100644 index 0000000000..ebb95ab096 --- /dev/null +++ b/dom/webidl/HTMLObjectElement.webidl @@ -0,0 +1,225 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.whatwg.org/specs/web-apps/current-work/#the-object-element + * http://www.whatwg.org/specs/web-apps/current-work/#HTMLObjectElement-partial + * + * © Copyright 2004-2011 Apple Computer, Inc., Mozilla Foundation, and + * Opera Software ASA. You are granted a license to use, reproduce + * and create derivative works of this document. + */ + +// http://www.whatwg.org/specs/web-apps/current-work/#the-object-element +[NeedResolve, UnsafeInPrerendering] +interface HTMLObjectElement : HTMLElement { + [Pure, SetterThrows] + attribute DOMString data; + [Pure, SetterThrows] + attribute DOMString type; + [Pure, SetterThrows] + attribute boolean typeMustMatch; + [Pure, SetterThrows] + attribute DOMString name; + [Pure, SetterThrows] + attribute DOMString useMap; + [Pure] + readonly attribute HTMLFormElement? form; + [Pure, SetterThrows] + attribute DOMString width; + [Pure, SetterThrows] + attribute DOMString height; + // Not pure: can trigger about:blank instantiation + [NeedsSubjectPrincipal] + readonly attribute Document? contentDocument; + // Not pure: can trigger about:blank instantiation + [NeedsSubjectPrincipal] + readonly attribute WindowProxy? contentWindow; + + readonly attribute boolean willValidate; + readonly attribute ValidityState validity; + readonly attribute DOMString validationMessage; + boolean checkValidity(); + boolean reportValidity(); + void setCustomValidity(DOMString error); + + [Throws] + legacycaller any (any... arguments); +}; + +// http://www.whatwg.org/specs/web-apps/current-work/#HTMLObjectElement-partial +partial interface HTMLObjectElement { + [Pure, SetterThrows] + attribute DOMString align; + [Pure, SetterThrows] + attribute DOMString archive; + [Pure, SetterThrows] + attribute DOMString code; + [Pure, SetterThrows] + attribute boolean declare; + [Pure, SetterThrows] + attribute unsigned long hspace; + [Pure, SetterThrows] + attribute DOMString standby; + [Pure, SetterThrows] + attribute unsigned long vspace; + [Pure, SetterThrows] + attribute DOMString codeBase; + [Pure, SetterThrows] + attribute DOMString codeType; + + [TreatNullAs=EmptyString, Pure, SetterThrows] + attribute DOMString border; +}; + +partial interface HTMLObjectElement { + // GetSVGDocument + [NeedsSubjectPrincipal] + Document? getSVGDocument(); +}; + +[NoInterfaceObject] +interface MozObjectLoadingContent { + // Mirrored chrome-only scriptable nsIObjectLoadingContent methods. Please + // make sure to update this list if nsIObjectLoadingContent changes. Also, + // make sure everything on here is [ChromeOnly]. + [ChromeOnly] + const unsigned long TYPE_LOADING = 0; + [ChromeOnly] + const unsigned long TYPE_IMAGE = 1; + [ChromeOnly] + const unsigned long TYPE_PLUGIN = 2; + [ChromeOnly] + const unsigned long TYPE_DOCUMENT = 3; + [ChromeOnly] + const unsigned long TYPE_NULL = 4; + + // The content type is not supported (e.g. plugin not installed) + [ChromeOnly] + const unsigned long PLUGIN_UNSUPPORTED = 0; + // Showing alternate content + [ChromeOnly] + const unsigned long PLUGIN_ALTERNATE = 1; + // The plugin exists, but is disabled + [ChromeOnly] + const unsigned long PLUGIN_DISABLED = 2; + // The plugin is blocklisted and disabled + [ChromeOnly] + const unsigned long PLUGIN_BLOCKLISTED = 3; + // The plugin is considered outdated, but not disabled + [ChromeOnly] + const unsigned long PLUGIN_OUTDATED = 4; + // The plugin has crashed + [ChromeOnly] + const unsigned long PLUGIN_CRASHED = 5; + // Suppressed by security policy + [ChromeOnly] + const unsigned long PLUGIN_SUPPRESSED = 6; + // Blocked by content policy + [ChromeOnly] + const unsigned long PLUGIN_USER_DISABLED = 7; + /// ** All values >= PLUGIN_CLICK_TO_PLAY are plugin placeholder types that + /// would be replaced by a real plugin if activated (playPlugin()) + /// ** Furthermore, values >= PLUGIN_CLICK_TO_PLAY and + /// <= PLUGIN_VULNERABLE_NO_UPDATE are click-to-play types. + // The plugin is disabled until the user clicks on it + [ChromeOnly] + const unsigned long PLUGIN_CLICK_TO_PLAY = 8; + // The plugin is vulnerable (update available) + [ChromeOnly] + const unsigned long PLUGIN_VULNERABLE_UPDATABLE = 9; + // The plugin is vulnerable (no update available) + [ChromeOnly] + const unsigned long PLUGIN_VULNERABLE_NO_UPDATE = 10; + + /** + * The actual mime type (the one we got back from the network + * request) for the element. + */ + [ChromeOnly] + readonly attribute DOMString actualType; + + /** + * Gets the type of the content that's currently loaded. See + * the constants above for the list of possible values. + */ + [ChromeOnly] + readonly attribute unsigned long displayedType; + + /** + * Gets the content type that corresponds to the give MIME type. See the + * constants above for the list of possible values. If nothing else fits, + * TYPE_NULL will be returned. + */ + [ChromeOnly] + unsigned long getContentTypeForMIMEType(DOMString aMimeType); + + + [ChromeOnly] + sequence<MozPluginParameter> getPluginAttributes(); + + [ChromeOnly] + sequence<MozPluginParameter> getPluginParameters(); + + /** + * This method will play a plugin that has been stopped by the click-to-play + * feature. + */ + [ChromeOnly, Throws] + void playPlugin(); + + /** + * Forces a re-evaluation and reload of the tag, optionally invalidating its + * click-to-play state. This can be used when the MIME type that provides a + * type has changed, for instance, to force the tag to re-evalulate the + * handler to use. + */ + [ChromeOnly, Throws] + void reload(boolean aClearActivation); + + /** + * This attribute will return true if the current content type has been + * activated, either explicitly or by passing checks that would have it be + * click-to-play. + */ + [ChromeOnly] + readonly attribute boolean activated; + + /** + * The URL of the data/src loaded in the object. This may be null (i.e. + * an <embed> with no src). + */ + [ChromeOnly] + readonly attribute URI? srcURI; + + [ChromeOnly] + readonly attribute unsigned long defaultFallbackType; + + [ChromeOnly] + readonly attribute unsigned long pluginFallbackType; + + /** + * If this object currently owns a running plugin, regardless of whether or + * not one is pending spawn/despawn. + */ + [ChromeOnly] + readonly attribute boolean hasRunningPlugin; + + [ChromeOnly, Throws] + readonly attribute unsigned long runID; +}; + +/** + * Name:Value pair type used for passing parameters to NPAPI or javascript + * plugins. + */ +dictionary MozPluginParameter { + DOMString name = ""; + DOMString value = ""; +}; + +HTMLObjectElement implements MozImageLoadingContent; +HTMLObjectElement implements MozFrameLoaderOwner; +HTMLObjectElement implements MozObjectLoadingContent; diff --git a/dom/webidl/HTMLOptGroupElement.webidl b/dom/webidl/HTMLOptGroupElement.webidl new file mode 100644 index 0000000000..a23aee30d1 --- /dev/null +++ b/dom/webidl/HTMLOptGroupElement.webidl @@ -0,0 +1,19 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.whatwg.org/specs/web-apps/current-work/#the-optgroup-element + * + * © Copyright 2004-2011 Apple Computer, Inc., Mozilla Foundation, and + * Opera Software ASA. You are granted a license to use, reproduce + * and create derivative works of this document. + */ + +interface HTMLOptGroupElement : HTMLElement { + [SetterThrows] + attribute boolean disabled; + [SetterThrows] + attribute DOMString label; +}; diff --git a/dom/webidl/HTMLOptionElement.webidl b/dom/webidl/HTMLOptionElement.webidl new file mode 100644 index 0000000000..c80bedeef0 --- /dev/null +++ b/dom/webidl/HTMLOptionElement.webidl @@ -0,0 +1,31 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.whatwg.org/specs/web-apps/current-work/#the-option-element + * + * © Copyright 2004-2011 Apple Computer, Inc., Mozilla Foundation, and + * Opera Software ASA. You are granted a license to use, reproduce + * and create derivative works of this document. + */ + +[NamedConstructor=Option(optional DOMString text, optional DOMString value, optional boolean defaultSelected, optional boolean selected)] +interface HTMLOptionElement : HTMLElement { + [SetterThrows] + attribute boolean disabled; + readonly attribute HTMLFormElement? form; + [SetterThrows] + attribute DOMString label; + [SetterThrows] + attribute boolean defaultSelected; + [SetterThrows] + attribute boolean selected; + [SetterThrows] + attribute DOMString value; + + [SetterThrows] + attribute DOMString text; + readonly attribute long index; +}; diff --git a/dom/webidl/HTMLOptionsCollection.webidl b/dom/webidl/HTMLOptionsCollection.webidl new file mode 100644 index 0000000000..4d4385d820 --- /dev/null +++ b/dom/webidl/HTMLOptionsCollection.webidl @@ -0,0 +1,23 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/2012/WD-html5-20120329/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface HTMLOptionsCollection : HTMLCollection { + attribute unsigned long length; + [Throws] + setter creator void (unsigned long index, HTMLOptionElement? option); + [Throws] + void add((HTMLOptionElement or HTMLOptGroupElement) element, optional (HTMLElement or long)? before = null); + [Throws] + void remove(long index); + [Throws] + attribute long selectedIndex; +}; diff --git a/dom/webidl/HTMLOutputElement.webidl b/dom/webidl/HTMLOutputElement.webidl new file mode 100644 index 0000000000..05dcf1800f --- /dev/null +++ b/dom/webidl/HTMLOutputElement.webidl @@ -0,0 +1,38 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.whatwg.org/specs/web-apps/current-work/#the-output-element + * + * © Copyright 2004-2011 Apple Computer, Inc., Mozilla Foundation, and + * Opera Software ASA. You are granted a license to use, reproduce + * and create derivative works of this document. + */ + +// http://www.whatwg.org/specs/web-apps/current-work/#the-output-element +interface HTMLOutputElement : HTMLElement { + [PutForwards=value, Constant] + readonly attribute DOMTokenList htmlFor; + readonly attribute HTMLFormElement? form; + [SetterThrows, Pure] + attribute DOMString name; + + [Constant] + readonly attribute DOMString type; + [SetterThrows, Pure] + attribute DOMString defaultValue; + [SetterThrows, Pure] + attribute DOMString value; + + readonly attribute boolean willValidate; + readonly attribute ValidityState validity; + readonly attribute DOMString validationMessage; + boolean checkValidity(); + boolean reportValidity(); + void setCustomValidity(DOMString error); + +// Not yet implemented (bug 556743). +// readonly attribute NodeList labels; +}; diff --git a/dom/webidl/HTMLParagraphElement.webidl b/dom/webidl/HTMLParagraphElement.webidl new file mode 100644 index 0000000000..2a626d2575 --- /dev/null +++ b/dom/webidl/HTMLParagraphElement.webidl @@ -0,0 +1,22 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.whatwg.org/specs/web-apps/current-work/#the-p-element + * http://www.whatwg.org/specs/web-apps/current-work/#other-elements,-attributes-and-apis + * © Copyright 2004-2011 Apple Computer, Inc., Mozilla Foundation, and + * Opera Software ASA. You are granted a license to use, reproduce + * and create derivative works of this document. + */ + +// http://www.whatwg.org/specs/web-apps/current-work/#the-p-element +interface HTMLParagraphElement : HTMLElement { +}; + +// http://www.whatwg.org/specs/web-apps/current-work/#other-elements,-attributes-and-apis +partial interface HTMLParagraphElement { + [SetterThrows] + attribute DOMString align; +}; diff --git a/dom/webidl/HTMLParamElement.webidl b/dom/webidl/HTMLParamElement.webidl new file mode 100644 index 0000000000..e2c7e8d7fa --- /dev/null +++ b/dom/webidl/HTMLParamElement.webidl @@ -0,0 +1,29 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.whatwg.org/specs/web-apps/current-work/#the-param-element + * http://www.whatwg.org/specs/web-apps/current-work/#other-elements,-attributes-and-apis + * + * © Copyright 2004-2011 Apple Computer, Inc., Mozilla Foundation, and + * Opera Software ASA. You are granted a license to use, reproduce + * and create derivative works of this document. + */ + +// http://www.whatwg.org/specs/web-apps/current-work/#the-param-element +interface HTMLParamElement : HTMLElement { + [SetterThrows, Pure] + attribute DOMString name; + [SetterThrows, Pure] + attribute DOMString value; +}; + +// http://www.whatwg.org/specs/web-apps/current-work/#other-elements,-attributes-and-apis +partial interface HTMLParamElement { + [SetterThrows, Pure] + attribute DOMString type; + [SetterThrows, Pure] + attribute DOMString valueType; +}; diff --git a/dom/webidl/HTMLPictureElement.webidl b/dom/webidl/HTMLPictureElement.webidl new file mode 100644 index 0000000000..eff30f7501 --- /dev/null +++ b/dom/webidl/HTMLPictureElement.webidl @@ -0,0 +1,8 @@ +/* -*- 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/. + */ + +interface HTMLPictureElement : HTMLElement { +}; diff --git a/dom/webidl/HTMLPreElement.webidl b/dom/webidl/HTMLPreElement.webidl new file mode 100644 index 0000000000..db220b74c0 --- /dev/null +++ b/dom/webidl/HTMLPreElement.webidl @@ -0,0 +1,22 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.whatwg.org/specs/web-apps/current-work/#the-pre-element + * http://www.whatwg.org/specs/web-apps/current-work/#other-elements,-attributes-and-apis + * © Copyright 2004-2011 Apple Computer, Inc., Mozilla Foundation, and + * Opera Software ASA. You are granted a license to use, reproduce + * and create derivative works of this document. + */ + +// http://www.whatwg.org/specs/web-apps/current-work/#the-pre-element +interface HTMLPreElement : HTMLElement { +}; + +// http://www.whatwg.org/specs/web-apps/current-work/#other-elements,-attributes-and-apis +partial interface HTMLPreElement { + [SetterThrows] + attribute long width; +}; diff --git a/dom/webidl/HTMLProgressElement.webidl b/dom/webidl/HTMLProgressElement.webidl new file mode 100644 index 0000000000..3d1000d22f --- /dev/null +++ b/dom/webidl/HTMLProgressElement.webidl @@ -0,0 +1,25 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.whatwg.org/specs/web-apps/current-work/#the-progress-element + * + * © Copyright 2004-2011 Apple Computer, Inc., Mozilla Foundation, and + * Opera Software ASA. You are granted a license to use, reproduce + * and create derivative works of this document. + */ + +interface HTMLProgressElement : HTMLElement { + [SetterThrows] + attribute double value; + [SetterThrows] + attribute double max; + readonly attribute double position; + + /** + * The labels attribute will be done with bug 567740. + */ + //readonly attribute NodeList labels; +}; diff --git a/dom/webidl/HTMLQuoteElement.webidl b/dom/webidl/HTMLQuoteElement.webidl new file mode 100644 index 0000000000..a266dd353a --- /dev/null +++ b/dom/webidl/HTMLQuoteElement.webidl @@ -0,0 +1,19 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.whatwg.org/specs/web-apps/current-work/#the-blockquote-element + * + * © Copyright 2004-2011 Apple Computer, Inc., Mozilla Foundation, and + * Opera Software ASA. You are granted a license to use, reproduce + * and create derivative works of this document. + */ + +// http://www.whatwg.org/specs/web-apps/current-work/#the-blockquote-element +interface HTMLQuoteElement : HTMLElement { + [SetterThrows, Pure] + attribute DOMString cite; +}; + diff --git a/dom/webidl/HTMLScriptElement.webidl b/dom/webidl/HTMLScriptElement.webidl new file mode 100644 index 0000000000..377056366d --- /dev/null +++ b/dom/webidl/HTMLScriptElement.webidl @@ -0,0 +1,40 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.whatwg.org/specs/web-apps/current-work/#the-script-element + * http://www.whatwg.org/specs/web-apps/current-work/#other-elements,-attributes-and-apis + */ + +interface HTMLScriptElement : HTMLElement { + [SetterThrows] + attribute DOMString src; + [SetterThrows] + attribute DOMString type; + [SetterThrows] + attribute DOMString charset; + [SetterThrows] + attribute boolean async; + [SetterThrows] + attribute boolean defer; + [SetterThrows] + attribute DOMString? crossOrigin; + [SetterThrows] + attribute DOMString text; +}; + +// http://www.whatwg.org/specs/web-apps/current-work/#other-elements,-attributes-and-apis +partial interface HTMLScriptElement { + [SetterThrows] + attribute DOMString event; + [SetterThrows] + attribute DOMString htmlFor; +}; + +// https://w3c.github.io/webappsec/specs/subresourceintegrity/#htmlscriptelement-1 +partial interface HTMLScriptElement { + [SetterThrows] + attribute DOMString integrity; +}; diff --git a/dom/webidl/HTMLSelectElement.webidl b/dom/webidl/HTMLSelectElement.webidl new file mode 100644 index 0000000000..74fc7b2cfb --- /dev/null +++ b/dom/webidl/HTMLSelectElement.webidl @@ -0,0 +1,65 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.whatwg.org/html/#the-select-element + */ + +interface HTMLSelectElement : HTMLElement { + [SetterThrows, Pure] + attribute boolean autofocus; + [Pref="dom.forms.autocomplete.experimental", SetterThrows, Pure] + attribute DOMString autocomplete; + [SetterThrows, Pure] + attribute boolean disabled; + [Pure] + readonly attribute HTMLFormElement? form; + [SetterThrows, Pure] + attribute boolean multiple; + [SetterThrows, Pure] + attribute DOMString name; + [SetterThrows, Pure] + attribute boolean required; + [SetterThrows, Pure] + attribute unsigned long size; + + [Pure] + readonly attribute DOMString type; + + [Constant] + readonly attribute HTMLOptionsCollection options; + [SetterThrows, Pure] + attribute unsigned long length; + getter Element? item(unsigned long index); + HTMLOptionElement? namedItem(DOMString name); + [Throws] + void add((HTMLOptionElement or HTMLOptGroupElement) element, optional (HTMLElement or long)? before = null); + void remove(long index); + [Throws] + setter creator void (unsigned long index, HTMLOptionElement? option); + + readonly attribute HTMLCollection selectedOptions; + [SetterThrows, Pure] + attribute long selectedIndex; + [Pure] + attribute DOMString value; + + readonly attribute boolean willValidate; + readonly attribute ValidityState validity; + readonly attribute DOMString validationMessage; + boolean checkValidity(); + boolean reportValidity(); + void setCustomValidity(DOMString error); + +// NYI: readonly attribute NodeList labels; + + // https://www.w3.org/Bugs/Public/show_bug.cgi?id=20720 + void remove(); +}; + +partial interface HTMLSelectElement { + [ChromeOnly] + attribute boolean openInParentProcess; +}; diff --git a/dom/webidl/HTMLShadowElement.webidl b/dom/webidl/HTMLShadowElement.webidl new file mode 100644 index 0000000000..f72cd06e18 --- /dev/null +++ b/dom/webidl/HTMLShadowElement.webidl @@ -0,0 +1,19 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * https://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/shadow/index.html + * + * © Copyright 2004-2011 Apple Computer, Inc., Mozilla Foundation, and + * Opera Software ASA. You are granted a license to use, reproduce + * and create derivative works of this document. + */ + +[Func="nsDocument::IsWebComponentsEnabled"] +interface HTMLShadowElement : HTMLElement +{ + readonly attribute ShadowRoot? olderShadowRoot; +}; + diff --git a/dom/webidl/HTMLSourceElement.webidl b/dom/webidl/HTMLSourceElement.webidl new file mode 100644 index 0000000000..10b8e6fd51 --- /dev/null +++ b/dom/webidl/HTMLSourceElement.webidl @@ -0,0 +1,28 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.whatwg.org/specs/web-apps/current-work/#the-source-element + * + * © Copyright 2004-2011 Apple Computer, Inc., Mozilla Foundation, and + * Opera Software ASA. You are granted a license to use, reproduce + * and create derivative works of this document. + */ + +interface HTMLSourceElement : HTMLElement { + [SetterThrows] + attribute DOMString src; + [SetterThrows] + attribute DOMString type; +}; + +partial interface HTMLSourceElement { + [SetterThrows] + attribute DOMString srcset; + [SetterThrows] + attribute DOMString sizes; + [SetterThrows] + attribute DOMString media; +}; diff --git a/dom/webidl/HTMLSpanElement.webidl b/dom/webidl/HTMLSpanElement.webidl new file mode 100644 index 0000000000..43a2d97f20 --- /dev/null +++ b/dom/webidl/HTMLSpanElement.webidl @@ -0,0 +1,15 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.whatwg.org/specs/web-apps/current-work/#the-span-element + * + * © Copyright 2004-2011 Apple Computer, Inc., Mozilla Foundation, and + * Opera Software ASA. You are granted a license to use, reproduce + * and create derivative works of this document. + */ + +// http://www.whatwg.org/specs/web-apps/current-work/#the-span-element +interface HTMLSpanElement : HTMLElement {}; diff --git a/dom/webidl/HTMLStyleElement.webidl b/dom/webidl/HTMLStyleElement.webidl new file mode 100644 index 0000000000..7ed01a8f18 --- /dev/null +++ b/dom/webidl/HTMLStyleElement.webidl @@ -0,0 +1,22 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.whatwg.org/specs/web-apps/current-work/#the-style-element + * http://www.whatwg.org/specs/web-apps/current-work/#other-elements,-attributes-and-apis + */ + +interface HTMLStyleElement : HTMLElement { + [Pure] + attribute boolean disabled; + [SetterThrows, Pure] + attribute DOMString media; + [SetterThrows, Pure] + attribute DOMString type; + [SetterThrows, Pure] + attribute boolean scoped; +}; +HTMLStyleElement implements LinkStyle; + diff --git a/dom/webidl/HTMLTableCaptionElement.webidl b/dom/webidl/HTMLTableCaptionElement.webidl new file mode 100644 index 0000000000..688b9f9254 --- /dev/null +++ b/dom/webidl/HTMLTableCaptionElement.webidl @@ -0,0 +1,19 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.whatwg.org/specs/web-apps/current-work/ + * + * © Copyright 2004-2011 Apple Computer, Inc., Mozilla Foundation, and + * Opera Software ASA. You are granted a license to use, reproduce + * and create derivative works of this document. + */ + +interface HTMLTableCaptionElement : HTMLElement {}; + +partial interface HTMLTableCaptionElement { + [SetterThrows] + attribute DOMString align; +}; diff --git a/dom/webidl/HTMLTableCellElement.webidl b/dom/webidl/HTMLTableCellElement.webidl new file mode 100644 index 0000000000..e970a50401 --- /dev/null +++ b/dom/webidl/HTMLTableCellElement.webidl @@ -0,0 +1,51 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.whatwg.org/specs/web-apps/current-work/ + * + * © Copyright 2004-2011 Apple Computer, Inc., Mozilla Foundation, and + * Opera Software ASA. You are granted a license to use, reproduce + * and create derivative works of this document. + */ + +interface HTMLTableCellElement : HTMLElement { + [SetterThrows] + attribute unsigned long colSpan; + [SetterThrows] + attribute unsigned long rowSpan; + //[PutForwards=value] readonly attribute DOMTokenList headers; + [SetterThrows] + attribute DOMString headers; + readonly attribute long cellIndex; + + // Mozilla-specific extensions + [SetterThrows] + attribute DOMString abbr; + [SetterThrows] + attribute DOMString scope; +}; + +partial interface HTMLTableCellElement { + [SetterThrows] + attribute DOMString align; + [SetterThrows] + attribute DOMString axis; + [SetterThrows] + attribute DOMString height; + [SetterThrows] + attribute DOMString width; + + [SetterThrows] + attribute DOMString ch; + [SetterThrows] + attribute DOMString chOff; + [SetterThrows] + attribute boolean noWrap; + [SetterThrows] + attribute DOMString vAlign; + + [TreatNullAs=EmptyString, SetterThrows] attribute DOMString bgColor; +}; diff --git a/dom/webidl/HTMLTableColElement.webidl b/dom/webidl/HTMLTableColElement.webidl new file mode 100644 index 0000000000..c927541a3d --- /dev/null +++ b/dom/webidl/HTMLTableColElement.webidl @@ -0,0 +1,30 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.whatwg.org/specs/web-apps/current-work/ + * + * © Copyright 2004-2011 Apple Computer, Inc., Mozilla Foundation, and + * Opera Software ASA. You are granted a license to use, reproduce + * and create derivative works of this document. + */ + +interface HTMLTableColElement : HTMLElement { + [SetterThrows] + attribute unsigned long span; +}; + +partial interface HTMLTableColElement { + [SetterThrows] + attribute DOMString align; + [SetterThrows] + attribute DOMString ch; + [SetterThrows] + attribute DOMString chOff; + [SetterThrows] + attribute DOMString vAlign; + [SetterThrows] + attribute DOMString width; +}; diff --git a/dom/webidl/HTMLTableElement.webidl b/dom/webidl/HTMLTableElement.webidl new file mode 100644 index 0000000000..a06f590e0f --- /dev/null +++ b/dom/webidl/HTMLTableElement.webidl @@ -0,0 +1,55 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.whatwg.org/specs/web-apps/current-work/ + * + * © Copyright 2004-2011 Apple Computer, Inc., Mozilla Foundation, and + * Opera Software ASA. You are granted a license to use, reproduce + * and create derivative works of this document. + */ + +interface HTMLTableElement : HTMLElement { + [SetterThrows] + attribute HTMLTableCaptionElement? caption; + HTMLElement createCaption(); + void deleteCaption(); + [SetterThrows] + attribute HTMLTableSectionElement? tHead; + HTMLElement createTHead(); + void deleteTHead(); + [SetterThrows] + attribute HTMLTableSectionElement? tFoot; + HTMLElement createTFoot(); + void deleteTFoot(); + readonly attribute HTMLCollection tBodies; + HTMLElement createTBody(); + readonly attribute HTMLCollection rows; + [Throws] + HTMLElement insertRow(optional long index = -1); + [Throws] + void deleteRow(long index); + // attribute boolean sortable; + //void stopSorting(); +}; + +partial interface HTMLTableElement { + [SetterThrows] + attribute DOMString align; + [SetterThrows] + attribute DOMString border; + [SetterThrows] + attribute DOMString frame; + [SetterThrows] + attribute DOMString rules; + [SetterThrows] + attribute DOMString summary; + [SetterThrows] + attribute DOMString width; + + [TreatNullAs=EmptyString, SetterThrows] attribute DOMString bgColor; + [TreatNullAs=EmptyString, SetterThrows] attribute DOMString cellPadding; + [TreatNullAs=EmptyString, SetterThrows] attribute DOMString cellSpacing; +}; diff --git a/dom/webidl/HTMLTableRowElement.webidl b/dom/webidl/HTMLTableRowElement.webidl new file mode 100644 index 0000000000..2a356a20e0 --- /dev/null +++ b/dom/webidl/HTMLTableRowElement.webidl @@ -0,0 +1,35 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.whatwg.org/specs/web-apps/current-work/ + * + * © Copyright 2004-2011 Apple Computer, Inc., Mozilla Foundation, and + * Opera Software ASA. You are granted a license to use, reproduce + * and create derivative works of this document. + */ + +interface HTMLTableRowElement : HTMLElement { + readonly attribute long rowIndex; + readonly attribute long sectionRowIndex; + readonly attribute HTMLCollection cells; + [Throws] + HTMLElement insertCell(optional long index = -1); + [Throws] + void deleteCell(long index); +}; + +partial interface HTMLTableRowElement { + [SetterThrows] + attribute DOMString align; + [SetterThrows] + attribute DOMString ch; + [SetterThrows] + attribute DOMString chOff; + [SetterThrows] + attribute DOMString vAlign; + + [TreatNullAs=EmptyString, SetterThrows] attribute DOMString bgColor; +}; diff --git a/dom/webidl/HTMLTableSectionElement.webidl b/dom/webidl/HTMLTableSectionElement.webidl new file mode 100644 index 0000000000..310d0ece6c --- /dev/null +++ b/dom/webidl/HTMLTableSectionElement.webidl @@ -0,0 +1,31 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.whatwg.org/specs/web-apps/current-work/ + * + * © Copyright 2004-2011 Apple Computer, Inc., Mozilla Foundation, and + * Opera Software ASA. You are granted a license to use, reproduce + * and create derivative works of this document. + */ + +interface HTMLTableSectionElement : HTMLElement { + readonly attribute HTMLCollection rows; + [Throws] + HTMLElement insertRow(optional long index = -1); + [Throws] + void deleteRow(long index); +}; + +partial interface HTMLTableSectionElement { + [SetterThrows] + attribute DOMString align; + [SetterThrows] + attribute DOMString ch; + [SetterThrows] + attribute DOMString chOff; + [SetterThrows] + attribute DOMString vAlign; +}; diff --git a/dom/webidl/HTMLTemplateElement.webidl b/dom/webidl/HTMLTemplateElement.webidl new file mode 100644 index 0000000000..c518995f66 --- /dev/null +++ b/dom/webidl/HTMLTemplateElement.webidl @@ -0,0 +1,15 @@ +/* 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/. + * + * The origin of this IDL file is + * https://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/templates/index.html + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface HTMLTemplateElement : HTMLElement { + readonly attribute DocumentFragment content; +}; + diff --git a/dom/webidl/HTMLTextAreaElement.webidl b/dom/webidl/HTMLTextAreaElement.webidl new file mode 100644 index 0000000000..b1005ed422 --- /dev/null +++ b/dom/webidl/HTMLTextAreaElement.webidl @@ -0,0 +1,99 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.whatwg.org/specs/web-apps/current-work/#the-textarea-element + * http://www.whatwg.org/specs/web-apps/current-work/#other-elements,-attributes-and-apis + * © Copyright 2004-2011 Apple Computer, Inc., Mozilla Foundation, and + * Opera Software ASA. You are granted a license to use, reproduce + * and create derivative works of this document. + */ + +interface nsIEditor; +interface MozControllers; + +interface HTMLTextAreaElement : HTMLElement { + // attribute DOMString autocomplete; + [SetterThrows, Pure] + attribute boolean autofocus; + [SetterThrows, Pure] + attribute unsigned long cols; + // attribute DOMString dirName; + [SetterThrows, Pure] + attribute boolean disabled; + [Pure] + readonly attribute HTMLFormElement? form; + // attribute DOMString inputMode; + [SetterThrows, Pure] + attribute long maxLength; + [SetterThrows, Pure] + attribute long minLength; + [SetterThrows, Pure] + attribute DOMString name; + [SetterThrows, Pure] + attribute DOMString placeholder; + [SetterThrows, Pure] + attribute boolean readOnly; + [SetterThrows, Pure] + attribute boolean required; + [SetterThrows, Pure] + attribute unsigned long rows; + [SetterThrows, Pure] + attribute DOMString wrap; + + [Constant] + readonly attribute DOMString type; + [SetterThrows, Pure] + attribute DOMString defaultValue; + [TreatNullAs=EmptyString] attribute DOMString value; + readonly attribute unsigned long textLength; + + readonly attribute boolean willValidate; + readonly attribute ValidityState validity; + readonly attribute DOMString validationMessage; + boolean checkValidity(); + boolean reportValidity(); + void setCustomValidity(DOMString error); + + // readonly attribute NodeList labels; + + void select(); + [Throws] + attribute unsigned long? selectionStart; + [Throws] + attribute unsigned long? selectionEnd; + [Throws] + attribute DOMString? selectionDirection; + [Throws] + void setRangeText(DOMString replacement); + [Throws] + void setRangeText(DOMString replacement, unsigned long start, + unsigned long end, optional SelectionMode selectionMode = "preserve"); + [Throws] + void setSelectionRange(unsigned long start, unsigned long end, optional DOMString direction); +}; + +partial interface HTMLTextAreaElement { + // Mirrored chrome-only Mozilla extensions to nsIDOMHTMLTextAreaElement. + // Please make sure to update this list of nsIDOMHTMLTextAreaElement changes. + + [Throws, ChromeOnly] + readonly attribute MozControllers controllers; +}; + +partial interface HTMLTextAreaElement { + // Mirrored chrome-only nsIDOMNSEditableElement methods. Please make sure + // to update this list if nsIDOMNSEditableElement changes. + + [ChromeOnly] + readonly attribute nsIEditor? editor; + + // This is similar to set .value on nsIDOMInput/TextAreaElements, but + // handling of the value change is closer to the normal user input, so + // 'change' event for example will be dispatched when focusing out the + // element. + [ChromeOnly] + void setUserInput(DOMString input); +}; diff --git a/dom/webidl/HTMLTimeElement.webidl b/dom/webidl/HTMLTimeElement.webidl new file mode 100644 index 0000000000..517ca9981e --- /dev/null +++ b/dom/webidl/HTMLTimeElement.webidl @@ -0,0 +1,13 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.whatwg.org/specs/web-apps/current-work/multipage/text-level-semantics.html#the-time-element + */ + +interface HTMLTimeElement : HTMLElement { + [SetterThrows] + attribute DOMString dateTime; +}; diff --git a/dom/webidl/HTMLTitleElement.webidl b/dom/webidl/HTMLTitleElement.webidl new file mode 100644 index 0000000000..e6c8f2c61f --- /dev/null +++ b/dom/webidl/HTMLTitleElement.webidl @@ -0,0 +1,13 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.whatwg.org/specs/web-apps/current-work/#the-title-element + */ + +interface HTMLTitleElement : HTMLElement { + [Throws] + attribute DOMString text; +}; diff --git a/dom/webidl/HTMLTrackElement.webidl b/dom/webidl/HTMLTrackElement.webidl new file mode 100644 index 0000000000..dd88e9beb9 --- /dev/null +++ b/dom/webidl/HTMLTrackElement.webidl @@ -0,0 +1,29 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.whatwg.org/specs/web-apps/current-work/#the-track-element + */ + +interface HTMLTrackElement : HTMLElement { + [SetterThrows, Pure] + attribute DOMString kind; + [SetterThrows, Pure] + attribute DOMString src; + [SetterThrows, Pure] + attribute DOMString srclang; + [SetterThrows, Pure] + attribute DOMString label; + [SetterThrows, Pure] + attribute boolean default; + + const unsigned short NONE = 0; + const unsigned short LOADING = 1; + const unsigned short LOADED = 2; + const unsigned short ERROR = 3; + readonly attribute unsigned short readyState; + + readonly attribute TextTrack? track; +}; diff --git a/dom/webidl/HTMLUListElement.webidl b/dom/webidl/HTMLUListElement.webidl new file mode 100644 index 0000000000..0528198c9e --- /dev/null +++ b/dom/webidl/HTMLUListElement.webidl @@ -0,0 +1,25 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.whatwg.org/specs/web-apps/current-work/#the-ul-element + * http://www.whatwg.org/specs/web-apps/current-work/#other-elements,-attributes-and-apis + * + * © Copyright 2004-2011 Apple Computer, Inc., Mozilla Foundation, and + * Opera Software ASA. You are granted a license to use, reproduce + * and create derivative works of this document. + */ + +// http://www.whatwg.org/specs/web-apps/current-work/#the-ul-element +interface HTMLUListElement : HTMLElement { +}; + +// http://www.whatwg.org/specs/web-apps/current-work/#other-elements,-attributes-and-apis +partial interface HTMLUListElement { + [SetterThrows] + attribute boolean compact; + [SetterThrows] + attribute DOMString type; +}; diff --git a/dom/webidl/HTMLVideoElement.webidl b/dom/webidl/HTMLVideoElement.webidl new file mode 100644 index 0000000000..af28d5418a --- /dev/null +++ b/dom/webidl/HTMLVideoElement.webidl @@ -0,0 +1,57 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.whatwg.org/specs/web-apps/current-work/#the-video-element + * + * © Copyright 2004-2011 Apple Computer, Inc., Mozilla Foundation, and + * Opera Software ASA. You are granted a license to use, reproduce + * and create derivative works of this document. + */ + +interface HTMLVideoElement : HTMLMediaElement { + [SetterThrows] + attribute unsigned long width; + [SetterThrows] + attribute unsigned long height; + readonly attribute unsigned long videoWidth; + readonly attribute unsigned long videoHeight; + [SetterThrows] + attribute DOMString poster; +}; + +partial interface HTMLVideoElement { + // A count of the number of video frames that have demuxed from the media + // resource. If we were playing perfectly, we'd be able to paint this many + // frames. + readonly attribute unsigned long mozParsedFrames; + + // A count of the number of frames that have been decoded. We may drop + // frames if the decode is taking too much time. + readonly attribute unsigned long mozDecodedFrames; + + // A count of the number of frames that have been presented to the rendering + // pipeline. We may drop frames if they arrive late at the renderer. + readonly attribute unsigned long mozPresentedFrames; + + // Number of presented frames which were painted on screen. + readonly attribute unsigned long mozPaintedFrames; + + // Time which the last painted video frame was late by, in seconds. + readonly attribute double mozFrameDelay; + + // True if the video has an audio track available. + readonly attribute boolean mozHasAudio; + + // True if the video should use a screen wake lock. + [Pref="dom.wakelock.enabled", Func="Navigator::HasWakeLockSupport"] + attribute boolean mozUseScreenWakeLock; +}; + +// https://dvcs.w3.org/hg/html-media/raw-file/default/media-source/media-source.html#idl-def-HTMLVideoElement +partial interface HTMLVideoElement { + [Func="mozilla::dom::MediaSource::Enabled", NewObject] + VideoPlaybackQuality getVideoPlaybackQuality(); +}; diff --git a/dom/webidl/HashChangeEvent.webidl b/dom/webidl/HashChangeEvent.webidl new file mode 100644 index 0000000000..735e8eb289 --- /dev/null +++ b/dom/webidl/HashChangeEvent.webidl @@ -0,0 +1,24 @@ +/* -*- 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/. + */ + +[Constructor(DOMString type, optional HashChangeEventInit eventInitDict), LegacyEventInit] +interface HashChangeEvent : Event +{ + readonly attribute DOMString oldURL; + readonly attribute DOMString newURL; + + void initHashChangeEvent(DOMString typeArg, + boolean canBubbleArg, + boolean cancelableArg, + DOMString oldURLArg, + DOMString newURLArg); +}; + +dictionary HashChangeEventInit : EventInit +{ + DOMString oldURL = ""; + DOMString newURL = ""; +}; diff --git a/dom/webidl/Headers.webidl b/dom/webidl/Headers.webidl new file mode 100644 index 0000000000..205ab9f9ea --- /dev/null +++ b/dom/webidl/Headers.webidl @@ -0,0 +1,34 @@ +/* -*- Mode: IDL; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* vim: set ts=8 sts=2 et sw=2 tw=80: */ +/* 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/. + * + * The origin of this IDL file is + * http://fetch.spec.whatwg.org/#headers-class + */ + +typedef (Headers or sequence<sequence<ByteString>> or MozMap<ByteString>) HeadersInit; + +enum HeadersGuardEnum { + "none", + "request", + "request-no-cors", + "response", + "immutable" +}; + +[Constructor(optional HeadersInit init), + Exposed=(Window,Worker)] +interface Headers { + [Throws] void append(ByteString name, ByteString value); + [Throws] void delete(ByteString name); + [Throws] ByteString? get(ByteString name); + [Throws] boolean has(ByteString name); + [Throws] void set(ByteString name, ByteString value); + iterable<ByteString, ByteString>; + + // Used to test different guard states from mochitest. + // Note: Must be set prior to populating headers or will throw. + [ChromeOnly, SetterThrows] attribute HeadersGuardEnum guard; +}; diff --git a/dom/webidl/HeapSnapshot.webidl b/dom/webidl/HeapSnapshot.webidl new file mode 100644 index 0000000000..f1418dc282 --- /dev/null +++ b/dom/webidl/HeapSnapshot.webidl @@ -0,0 +1,105 @@ +/* -*- 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/. + */ + +/** + * A HeapSnapshot represents a snapshot of the heap graph + */ +[ChromeOnly, Exposed=(Window,System,Worker)] +interface HeapSnapshot { + /** + * A time stamp of when the heap snapshot was taken, if available. Units are + * microseconds since midnight (00:00:00) 1 January 1970 UTC. + */ + readonly attribute unsigned long long? creationTime; + + /** + * Take a census of the heap snapshot. + * + * This is the same as |Debugger.Memory.prototype.takeCensus|, but operates on + * the offline heap snapshot's serialized heap graph rather than the live heap + * graph. The same optional configuration options that can be passed to that + * function can be passed here. + * + * The returned value is determined by the `"breakdown"` option used, and is + * usually a `Map`, `Object`, or `Array`. For example, the following breakdown + * + * { + * by: "coarseType", + * objects: { by: "objectClass" }, + * other: { by: "internalType" } + * } + * + * produces a result like this: + * + * { + * "objects": { + * "Function": { "count": 404, "bytes": 37328 }, + * "Object": { "count": 11, "bytes": 1264 }, + * "Debugger": { "count": 1, "bytes": 416 }, + * "ScriptSource": { "count": 1, "bytes": 64 }, + * // ... omitted for brevity... + * }, + * "scripts": { "count": 1, "bytes": 0 }, + * "strings": { "count": 701, "bytes": 49080 }, + * "other": { + * "js::Shape": { "count": 450, "bytes": 0 }, + * "js::BaseShape": { "count": 21, "bytes": 0 }, + * "js::ObjectGroup": { "count": 17, "bytes": 0 } + * } + * } + * + * See the `takeCensus` section of the `js/src/doc/Debugger/Debugger.Memory.md` + * file for detailed documentation. + */ + [Throws] + any takeCensus(object? options); + + /** + * Describe `node` with the specified `breakdown`. See the comment above + * `takeCensus` or `js/src/doc/Debugger/Debugger.Memory.md` for detailed + * documentation on breakdowns. + * + * Throws an error when `node` is not the id of a node in the heap snapshot, + * or if the breakdown is invalid. + */ + [Throws] + any describeNode(object breakdown, NodeId node); + + /** + * Compute the dominator tree for this heap snapshot. + * + * @see DominatorTree.webidl + */ + [Throws] + DominatorTree computeDominatorTree(); + + /** + * Find the shortest retaining paths from the node associated with the ID + * `start` to each node associated with the IDs in `targets`. Find at most + * `maxNumPaths` retaining paths for each target node. + * + * The return value is a Map object mapping from each target node ID to an + * array of retaining paths. The array may be empty if we did not find any + * retaining paths. + * + * A path is an array of objects of the form: + * + * { + * predecessor: <node ID>, + * edge: <string or null>, + * } + * + * The first `predecessor` will always be `start`. The last edge in the path + * leads to the `target` node that is mapped to the path; the `target` does + * not appear as a `predecessor` in the path. + * + * Throws when `start` or any of the elements of `targets` are not an ID of a + * node in the snapshot, or if we encounter an out of memory exception. + */ + [Throws] + object computeShortestPaths(NodeId start, sequence<NodeId> targets, + unsigned long long maxNumPaths); +}; diff --git a/dom/webidl/HiddenPluginEvent.webidl b/dom/webidl/HiddenPluginEvent.webidl new file mode 100644 index 0000000000..1ba09acb69 --- /dev/null +++ b/dom/webidl/HiddenPluginEvent.webidl @@ -0,0 +1,12 @@ +interface PluginTag;
+
+[Constructor(DOMString type, optional HiddenPluginEventInit eventInit), ChromeOnly]
+interface HiddenPluginEvent : Event
+{
+ readonly attribute PluginTag? tag;
+};
+
+dictionary HiddenPluginEventInit : EventInit
+{
+ PluginTag? tag = null;
+};
diff --git a/dom/webidl/History.webidl b/dom/webidl/History.webidl new file mode 100644 index 0000000000..48032212a0 --- /dev/null +++ b/dom/webidl/History.webidl @@ -0,0 +1,33 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.whatwg.org/specs/web-apps/current-work/#the-history-interface + * + * © Copyright 2004-2011 Apple Computer, Inc., Mozilla Foundation, and + * Opera Software ASA. You are granted a license to use, reproduce + * and create derivative works of this document. + */ + +enum ScrollRestoration { "auto", "manual" }; + +interface History { + [Throws] + readonly attribute unsigned long length; + [Throws] + attribute ScrollRestoration scrollRestoration; + [Throws] + readonly attribute any state; + [Throws, UnsafeInPrerendering] + void go(optional long delta = 0); + [Throws, UnsafeInPrerendering] + void back(); + [Throws, UnsafeInPrerendering] + void forward(); + [Throws] + void pushState(any data, DOMString title, optional DOMString? url = null); + [Throws] + void replaceState(any data, DOMString title, optional DOMString? url = null); +}; diff --git a/dom/webidl/IDBCursor.webidl b/dom/webidl/IDBCursor.webidl new file mode 100644 index 0000000000..159f9ba87e --- /dev/null +++ b/dom/webidl/IDBCursor.webidl @@ -0,0 +1,49 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * https://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#idl-def-IDBCursorDirection + */ + +enum IDBCursorDirection { + "next", + "nextunique", + "prev", + "prevunique" +}; + +[Exposed=(Window,Worker,System)] +interface IDBCursor { + readonly attribute (IDBObjectStore or IDBIndex) source; + + readonly attribute IDBCursorDirection direction; + + [Throws] + readonly attribute any key; + + [Throws] + readonly attribute any primaryKey; + + [Throws] + IDBRequest update (any value); + + [Throws] + void advance ([EnforceRange] unsigned long count); + + [Throws] + void continue (optional any key); + + [Throws] + void continuePrimaryKey(any key, any primaryKey); + + [Throws] + IDBRequest delete (); +}; + +[Exposed=(Window,Worker,System)] +interface IDBCursorWithValue : IDBCursor { + [Throws] + readonly attribute any value; +}; diff --git a/dom/webidl/IDBDatabase.webidl b/dom/webidl/IDBDatabase.webidl new file mode 100644 index 0000000000..36fe465f30 --- /dev/null +++ b/dom/webidl/IDBDatabase.webidl @@ -0,0 +1,48 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * https://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#idl-def-IDBObjectStoreParameters + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +[Exposed=(Window,Worker,System)] +interface IDBDatabase : EventTarget { + readonly attribute DOMString name; + readonly attribute unsigned long long version; + + readonly attribute DOMStringList objectStoreNames; + + [Throws] + IDBObjectStore createObjectStore (DOMString name, optional IDBObjectStoreParameters optionalParameters); + + [Throws] + void deleteObjectStore (DOMString name); + + [Throws] + IDBTransaction transaction ((DOMString or sequence<DOMString>) storeNames, + optional IDBTransactionMode mode = "readonly"); + + void close (); + + attribute EventHandler onabort; + attribute EventHandler onclose; + attribute EventHandler onerror; + attribute EventHandler onversionchange; +}; + +partial interface IDBDatabase { + [Func="mozilla::dom::IndexedDatabaseManager::ExperimentalFeaturesEnabled"] + readonly attribute StorageType storage; + + [Exposed=Window, Throws] + IDBRequest createMutableFile (DOMString name, optional DOMString type); + + // this is deprecated due to renaming in the spec + [Exposed=Window, Throws] + IDBRequest mozCreateFileHandle (DOMString name, optional DOMString type); // now createMutableFile +}; diff --git a/dom/webidl/IDBFactory.webidl b/dom/webidl/IDBFactory.webidl new file mode 100644 index 0000000000..2fdaf7b57f --- /dev/null +++ b/dom/webidl/IDBFactory.webidl @@ -0,0 +1,65 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * https://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#idl-def-IDBFactory + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface Principal; + +dictionary IDBOpenDBOptions +{ + [EnforceRange] unsigned long long version; + StorageType storage; +}; + +/** + * Interface that defines the indexedDB property on a window. See + * http://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#idl-def-IDBFactory + * for more information. + */ +[Exposed=(Window,Worker,System)] +interface IDBFactory { + [Throws] + IDBOpenDBRequest + open(DOMString name, + [EnforceRange] unsigned long long version); + + [Throws] + IDBOpenDBRequest + open(DOMString name, + optional IDBOpenDBOptions options); + + [Throws] + IDBOpenDBRequest + deleteDatabase(DOMString name, + optional IDBOpenDBOptions options); + + [Throws] + short + cmp(any first, + any second); + + [Throws, ChromeOnly] + IDBOpenDBRequest + openForPrincipal(Principal principal, + DOMString name, + [EnforceRange] unsigned long long version); + + [Throws, ChromeOnly] + IDBOpenDBRequest + openForPrincipal(Principal principal, + DOMString name, + optional IDBOpenDBOptions options); + + [Throws, ChromeOnly] + IDBOpenDBRequest + deleteForPrincipal(Principal principal, + DOMString name, + optional IDBOpenDBOptions options); +}; diff --git a/dom/webidl/IDBFileHandle.webidl b/dom/webidl/IDBFileHandle.webidl new file mode 100644 index 0000000000..e312742c64 --- /dev/null +++ b/dom/webidl/IDBFileHandle.webidl @@ -0,0 +1,43 @@ +/* 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 obtaone at http://mozilla.org/MPL/2.0/. */ + +dictionary IDBFileMetadataParameters +{ + boolean size = true; + boolean lastModified = true; +}; + +[Exposed=(Window,System)] +interface IDBFileHandle : EventTarget +{ + readonly attribute IDBMutableFile? mutableFile; + // this is deprecated due to renaming in the spec + readonly attribute IDBMutableFile? fileHandle; // now mutableFile + readonly attribute FileMode mode; + readonly attribute boolean active; + attribute unsigned long long? location; + + [Throws] + IDBFileRequest? getMetadata(optional IDBFileMetadataParameters parameters); + [Throws] + IDBFileRequest? readAsArrayBuffer(unsigned long long size); + [Throws] + IDBFileRequest? readAsText(unsigned long long size, + optional DOMString? encoding = null); + + [Throws] + IDBFileRequest? write((DOMString or ArrayBuffer or ArrayBufferView or Blob) value); + [Throws] + IDBFileRequest? append((DOMString or ArrayBuffer or ArrayBufferView or Blob) value); + [Throws] + IDBFileRequest? truncate(optional unsigned long long size); + [Throws] + IDBFileRequest? flush(); + [Throws] + void abort(); + + attribute EventHandler oncomplete; + attribute EventHandler onabort; + attribute EventHandler onerror; +}; diff --git a/dom/webidl/IDBFileRequest.webidl b/dom/webidl/IDBFileRequest.webidl new file mode 100644 index 0000000000..fc3a8c5b67 --- /dev/null +++ b/dom/webidl/IDBFileRequest.webidl @@ -0,0 +1,14 @@ +/* -*- Mode: IDL; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* vim: set ts=2 et sw=2 tw=80: */ +/* 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/. */ + +[Exposed=(Window,System)] +interface IDBFileRequest : DOMRequest { + readonly attribute IDBFileHandle? fileHandle; + // this is deprecated due to renaming in the spec + readonly attribute IDBFileHandle? lockedFile; // now fileHandle + + attribute EventHandler onprogress; +}; diff --git a/dom/webidl/IDBIndex.webidl b/dom/webidl/IDBIndex.webidl new file mode 100644 index 0000000000..0e436650a4 --- /dev/null +++ b/dom/webidl/IDBIndex.webidl @@ -0,0 +1,71 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * https://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#idl-def-IDBIndexParameters + */ + +dictionary IDBIndexParameters { + boolean unique = false; + boolean multiEntry = false; + // <null>: Not locale-aware, uses normal JS sorting. + // <string>: Always sorted based on the rules of the specified + // locale (e.g. "en-US", etc.). + // "auto": Sorted by the platform default, may change based on + // user agent options. + DOMString? locale = null; +}; + +[Exposed=(Window,Worker,System)] +interface IDBIndex { + [SetterThrows] + attribute DOMString name; + + readonly attribute IDBObjectStore objectStore; + + [Throws] + readonly attribute any keyPath; + + readonly attribute boolean multiEntry; + readonly attribute boolean unique; + + // <null>: Not locale-aware, uses normal JS sorting. + // <string>: Sorted based on the rules of the specified locale. + // Note: never returns "auto", only the current locale. + [Func="mozilla::dom::IndexedDatabaseManager::ExperimentalFeaturesEnabled"] + readonly attribute DOMString? locale; + + [Func="mozilla::dom::IndexedDatabaseManager::ExperimentalFeaturesEnabled"] + readonly attribute boolean isAutoLocale; + + [Throws] + IDBRequest openCursor (optional any range, optional IDBCursorDirection direction = "next"); + + [Throws] + IDBRequest openKeyCursor (optional any range, optional IDBCursorDirection direction = "next"); + + [Throws] + IDBRequest get (any key); + + [Throws] + IDBRequest getKey (any key); + + [Throws] + IDBRequest count (optional any key); +}; + +partial interface IDBIndex { + [Throws] + IDBRequest mozGetAll (optional any key, [EnforceRange] optional unsigned long limit); + + [Throws] + IDBRequest mozGetAllKeys (optional any key, [EnforceRange] optional unsigned long limit); + + [Throws] + IDBRequest getAll (optional any key, [EnforceRange] optional unsigned long limit); + + [Throws] + IDBRequest getAllKeys (optional any key, [EnforceRange] optional unsigned long limit); +}; diff --git a/dom/webidl/IDBKeyRange.webidl b/dom/webidl/IDBKeyRange.webidl new file mode 100644 index 0000000000..1caba76185 --- /dev/null +++ b/dom/webidl/IDBKeyRange.webidl @@ -0,0 +1,41 @@ +/* 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/. */ +/* + * The origin of this IDL file is + * https://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +[Exposed=(Window,Worker,System)] +interface IDBKeyRange { + [Throws] + readonly attribute any lower; + [Throws] + readonly attribute any upper; + [Constant] + readonly attribute boolean lowerOpen; + [Constant] + readonly attribute boolean upperOpen; + [Throws] + boolean includes(any key); + + + [NewObject, Throws] + static IDBKeyRange only (any value); + [NewObject, Throws] + static IDBKeyRange lowerBound (any lower, optional boolean open = false); + [NewObject, Throws] + static IDBKeyRange upperBound (any upper, optional boolean open = false); + [NewObject, Throws] + static IDBKeyRange bound (any lower, any upper, optional boolean lowerOpen = false, optional boolean upperOpen = false); +}; + +[Exposed=(Window,Worker,System), + Func="mozilla::dom::IndexedDatabaseManager::ExperimentalFeaturesEnabled"] +interface IDBLocaleAwareKeyRange : IDBKeyRange { + [NewObject, Throws] + static IDBLocaleAwareKeyRange bound (any lower, any upper, optional boolean lowerOpen = false, optional boolean upperOpen = false); +}; diff --git a/dom/webidl/IDBMutableFile.webidl b/dom/webidl/IDBMutableFile.webidl new file mode 100644 index 0000000000..945a79d776 --- /dev/null +++ b/dom/webidl/IDBMutableFile.webidl @@ -0,0 +1,21 @@ +/* -*- 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/. */ + +[Exposed=(Window,System)] +interface IDBMutableFile : EventTarget { + readonly attribute DOMString name; + readonly attribute DOMString type; + + readonly attribute IDBDatabase database; + + [Throws] + IDBFileHandle open(optional FileMode mode = "readonly"); + + [Throws] + DOMRequest getFile(); + + attribute EventHandler onabort; + attribute EventHandler onerror; +}; diff --git a/dom/webidl/IDBObjectStore.webidl b/dom/webidl/IDBObjectStore.webidl new file mode 100644 index 0000000000..a06ac8897b --- /dev/null +++ b/dom/webidl/IDBObjectStore.webidl @@ -0,0 +1,74 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * https://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#idl-def-IDBObjectStore + */ + +dictionary IDBObjectStoreParameters { + (DOMString or sequence<DOMString>)? keyPath = null; + boolean autoIncrement = false; +}; + +[Exposed=(Window,Worker,System)] +interface IDBObjectStore { + [SetterThrows] + attribute DOMString name; + + [Throws] + readonly attribute any keyPath; + + readonly attribute DOMStringList indexNames; + readonly attribute IDBTransaction transaction; + readonly attribute boolean autoIncrement; + + [Throws] + IDBRequest put (any value, optional any key); + + [Throws] + IDBRequest add (any value, optional any key); + + [Throws] + IDBRequest delete (any key); + + [Throws] + IDBRequest get (any key); + + [Throws] + IDBRequest getKey (any key); + + [Throws] + IDBRequest clear (); + + [Throws] + IDBRequest openCursor (optional any range, optional IDBCursorDirection direction = "next"); + + [Throws] + IDBIndex createIndex (DOMString name, (DOMString or sequence<DOMString>) keyPath, optional IDBIndexParameters optionalParameters); + + [Throws] + IDBIndex index (DOMString name); + + [Throws] + void deleteIndex (DOMString indexName); + + [Throws] + IDBRequest count (optional any key); +}; + +partial interface IDBObjectStore { + // Success fires IDBTransactionEvent, result == array of values for given keys + [Throws] + IDBRequest mozGetAll (optional any key, [EnforceRange] optional unsigned long limit); + + [Throws] + IDBRequest getAll (optional any key, [EnforceRange] optional unsigned long limit); + + [Throws] + IDBRequest getAllKeys (optional any key, [EnforceRange] optional unsigned long limit); + + [Throws] + IDBRequest openKeyCursor (optional any range, optional IDBCursorDirection direction = "next"); +}; diff --git a/dom/webidl/IDBOpenDBRequest.webidl b/dom/webidl/IDBOpenDBRequest.webidl new file mode 100644 index 0000000000..ba0ebf837c --- /dev/null +++ b/dom/webidl/IDBOpenDBRequest.webidl @@ -0,0 +1,15 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * https://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#idl-def-IDBOpenDBRequest + */ + +[Exposed=(Window,Worker,System)] +interface IDBOpenDBRequest : IDBRequest { + attribute EventHandler onblocked; + + attribute EventHandler onupgradeneeded; +}; diff --git a/dom/webidl/IDBRequest.webidl b/dom/webidl/IDBRequest.webidl new file mode 100644 index 0000000000..623e6c16a8 --- /dev/null +++ b/dom/webidl/IDBRequest.webidl @@ -0,0 +1,31 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * https://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#idl-def-IDBRequest + * https://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#idl-def-IDBRequestReadyState + */ + +enum IDBRequestReadyState { + "pending", + "done" +}; + +[Exposed=(Window,Worker,System)] +interface IDBRequest : EventTarget { + [Throws] + readonly attribute any result; + + [Throws] + readonly attribute DOMError? error; + + readonly attribute (IDBObjectStore or IDBIndex or IDBCursor)? source; + readonly attribute IDBTransaction? transaction; + readonly attribute IDBRequestReadyState readyState; + + attribute EventHandler onsuccess; + + attribute EventHandler onerror; +}; diff --git a/dom/webidl/IDBTransaction.webidl b/dom/webidl/IDBTransaction.webidl new file mode 100644 index 0000000000..44628432ac --- /dev/null +++ b/dom/webidl/IDBTransaction.webidl @@ -0,0 +1,44 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * https://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#idl-def-IDBTransaction + * https://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#idl-def-IDBTransactionMode + */ + +enum IDBTransactionMode { + "readonly", + "readwrite", + // The "readwriteflush" mode is only available when the + // |IndexedDatabaseManager::ExperimentalFeaturesEnabled()| function returns + // true. This mode is not yet part of the standard. + "readwriteflush", + "cleanup", + "versionchange" +}; + +[Exposed=(Window,Worker,System)] +interface IDBTransaction : EventTarget { + [Throws] + readonly attribute IDBTransactionMode mode; + readonly attribute IDBDatabase db; + + readonly attribute DOMError? error; + + [Throws] + IDBObjectStore objectStore (DOMString name); + + [Throws] + void abort(); + + attribute EventHandler onabort; + attribute EventHandler oncomplete; + attribute EventHandler onerror; +}; + +// This seems to be custom +partial interface IDBTransaction { + readonly attribute DOMStringList objectStoreNames; +}; diff --git a/dom/webidl/IDBVersionChangeEvent.webidl b/dom/webidl/IDBVersionChangeEvent.webidl new file mode 100644 index 0000000000..1c93850047 --- /dev/null +++ b/dom/webidl/IDBVersionChangeEvent.webidl @@ -0,0 +1,24 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * https://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#idl-def-IDBVersionChangeEvent + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +dictionary IDBVersionChangeEventInit : EventInit { + unsigned long long oldVersion = 0; + unsigned long long? newVersion = null; +}; + +[Constructor(DOMString type, optional IDBVersionChangeEventInit eventInitDict), + Exposed=(Window,Worker,System)] +interface IDBVersionChangeEvent : Event { + readonly attribute unsigned long long oldVersion; + readonly attribute unsigned long long? newVersion; +}; + diff --git a/dom/webidl/IIRFilterNode.webidl b/dom/webidl/IIRFilterNode.webidl new file mode 100644 index 0000000000..a1164b6ae1 --- /dev/null +++ b/dom/webidl/IIRFilterNode.webidl @@ -0,0 +1,18 @@ +/* -*- 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/. + * + * The origin of this IDL file is https://www.w3.org/TR/webaudio + * + * Copyright © 2016 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +[Pref="dom.webaudio.enabled"] +interface IIRFilterNode : AudioNode { + void getFrequencyResponse(Float32Array frequencyHz, Float32Array magResponse, Float32Array phaseResponse); +}; + +// Mozilla extension +IIRFilterNode implements AudioNodePassThrough; diff --git a/dom/webidl/IdleDeadline.webidl b/dom/webidl/IdleDeadline.webidl new file mode 100644 index 0000000000..983c979964 --- /dev/null +++ b/dom/webidl/IdleDeadline.webidl @@ -0,0 +1,14 @@ +/* -*- 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/. + * + * The origin of this IDL file is: + * https://w3c.github.io/requestidlecallback/ + */ + +[Pref="dom.requestIdleCallback.enabled"] +interface IdleDeadline { + DOMHighResTimeStamp timeRemaining(); + readonly attribute boolean didTimeout; +}; diff --git a/dom/webidl/ImageBitmap.webidl b/dom/webidl/ImageBitmap.webidl new file mode 100644 index 0000000000..3cfabff12e --- /dev/null +++ b/dom/webidl/ImageBitmap.webidl @@ -0,0 +1,412 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * https://html.spec.whatwg.org/multipage/webappapis.html#images + * + * The origin of the extended IDL file is + * http://w3c.github.io/mediacapture-worker/#imagebitmap-extensions + */ + +// Extensions +// Bug 1141979 - [FoxEye] Extend ImageBitmap with interfaces to access its +// underlying image data +// +// Note: +// Our overload resolution implementation doesn't deal with a union as the +// distinguishing argument which means we cannot overload functions via union +// types, a.k.a. we cannot overload createImageBitmap() via ImageBitmapSource +// and BufferSource. Here, we work around this issue by adding the BufferSource +// into ImageBitmapSource. + +typedef (HTMLImageElement or + HTMLVideoElement or + HTMLCanvasElement or + Blob or + ImageData or + CanvasRenderingContext2D or + ImageBitmap or + BufferSource) ImageBitmapSource; + +[Exposed=(Window,Worker)] +interface ImageBitmap { + [Constant] + readonly attribute unsigned long width; + [Constant] + readonly attribute unsigned long height; +}; + +// It's crucial that there be a way to explicitly dispose of ImageBitmaps +// since they refer to potentially large graphics resources. Some uses +// of this API proposal will result in repeated allocations of ImageBitmaps, +// and garbage collection will not reliably reclaim them quickly enough. +// Here we reuse close(), which also exists on another Transferable type, +// MessagePort. Potentially, all Transferable types should inherit from a +// new interface type "Closeable". +partial interface ImageBitmap { + // Dispose of all graphical resources associated with this ImageBitmap. + void close(); +}; + +// ImageBitmap-extensions +// Bug 1141979 - [FoxEye] Extend ImageBitmap with interfaces to access its +// underlying image data + +/* + * An image or a video frame is conceptually a two-dimensional array of data and + * each element in the array is called a pixel. The pixels are usually stored in + * a one-dimensional array and could be arranged in a variety of image formats. + * Developers need to know how the pixels are formatted so that they are able to + * process them. + * + * The image format describes how pixels in an image are arranged. A single + * pixel has at least one, but usually multiple pixel values. The range of a + * pixel value varies, which means different image formats use different data + * types to store a single pixel value. + * + * The most frequently used data type is 8-bit unsigned integer whose range is + * from 0 to 255, others could be 16-bit integer or 32-bit floating points and + * so forth. The number of pixel values of a single pixel is called the number + * of channels of the image format. Multiple pixel values of a pixel are used + * together to describe the captured property which could be color or depth + * information. For example, if the data is a color image in RGB color space, + * then it is a three-channel image format and a pixel is described by R, G and + * B three pixel values with range from 0 to 255. As another example, if the + * data is a gray image, then it is a single-channel image format with 8-bit + * unsigned integer data type and the pixel value describes the gray scale. For + * depth data, it is a single channel image format too, but the data type is + * 16-bit unsigned integer and the pixel value is the depth level. + * + * For those image formats whose pixels contain multiple pixel values, the pixel + * values might be arranged in one of the following ways: + * 1) Planar pixel layout: + * each channel has its pixel values stored consecutively in separated + * buffers (a.k.a. planes) and then all channel buffers are stored + * consecutively in memory. + * (Ex: RRRRRR......GGGGGG......BBBBBB......) + * 2) Interleaving pixel layout: + * each pixel has its pixel values from all channels stored together and + * interleaves all channels. + * (Ex: RGBRGBRGBRGBRGB......) + */ + + +/* + * The ImageBitmap extensions use this enumeration to negotiate the image format + * while 1) accessing the underlying data of an ImageBitmap and + * 2) creating a new ImageBitmap. + * + * For each format in this enumeration, we use a 2x2 small image (4 pixels) as + * example to illustrate the pixel layout. + * + * 2x2 image: +--------+--------+ + * | pixel1 | pixel2 | + * +--------+--------+ + * | pixel3 | pixel4 | + * +--------+--------+ + * + */ +enum ImageBitmapFormat { + /* + * Channel order: R, G, B, A + * Channel size: full rgba-chennels + * Pixel layout: interleaving rgba-channels + * Pixel layout illustration: + * [Plane1]: R1 G1 B1 A1 R2 G2 B2 A2 R3 G3 B3 A3 R4 G4 B4 A4 + * Data type: 8-bit unsigned integer + */ + "RGBA32", + + /* + * Channel order: B, G, R, A + * Channel size: full bgra-channels + * Pixel layout: interleaving bgra-channels + * Pixel layout illustration: + * [Plane1]: B1 G1 R1 A1 B2 G2 R2 A2 B3 G3 R3 A3 B4 G4 R4 A4 + * Data type: 8-bit unsigned integer + */ + "BGRA32", + + /* + * Channel order: R, G, B + * Channel size: full rgb-channels + * Pixel layout: interleaving rgb-channels + * Pixel layout illustration: + * [Plane1]: R1 G1 B1 R2 G2 B2 R3 G3 B3 R4 G4 B4 + * Data type: 8-bit unsigned integer + */ + "RGB24", + + /* + * Channel order: B, G, R + * Channel size: full bgr-channels + * Pixel layout: interleaving bgr-channels + * Pixel layout illustration: + * [Plane1]: B1 G1 R1 B2 G2 R2 B3 G3 R3 B4 G4 R4 + * Data type: 8-bit unsigned integer + */ + "BGR24", + + /* + * Channel order: GRAY + * Channel size: full gray-channel + * Pixel layout: planar gray-channel + * Pixel layout illustration: + * [Plane1]: GRAY1 GRAY2 GRAY3 GRAY4 + * Data type: 8-bit unsigned integer + */ + "GRAY8", + + /* + * Channel order: Y, U, V + * Channel size: full yuv-channels + * Pixel layout: planar yuv-channels + * Pixel layout illustration: + * [Plane1]: Y1 Y2 Y3 Y4 + * [Plane2]: U1 U2 U3 U4 + * [Plane3]: V1 V2 V3 V4 + * Data type: 8-bit unsigned integer + */ + "YUV444P", + + /* + * Channel order: Y, U, V + * Channel size: full y-channel, half uv-channels + * Pixel layout: planar yuv-channels + * Pixel layout illustration: + * [Plane1]: Y1 Y2 Y3 Y4 + * [Plane2]: U1 U3 + * [Plane3]: V1 V3 + * Data type: 8-bit unsigned integer + */ + "YUV422P", + + /* + * Channel order: Y, U, V + * Channel size: full y-channel, quarter uv-channels + * Pixel layout: planar yuv-channels + * Pixel layout illustration: + * [Plane1]: Y1 Y2 Y3 Y4 + * [Plane2]: U1 + * [Plane3]: V1 + * Data type: 8-bit unsigned integer + */ + "YUV420P", + + /* + * Channel order: Y, U, V + * Channel size: full y-channel, quarter uv-channels + * Pixel layout: planar y-channel, interleaving uv-channels + * Pixel layout illustration: + * [Plane1]: Y1 Y2 Y3 Y4 + * [Plane2]: U1 V1 + * Data type: 8-bit unsigned integer + */ + "YUV420SP_NV12", + + /* + * Channel order: Y, V, U + * Channel size: full y-channel, quarter vu-channels + * Pixel layout: planar y-channel, interleaving vu-channels + * Pixel layout illustration: + * [Plane1]: Y1 Y2 Y3 Y4 + * [Plane2]: V1 U1 + * Data type: 8-bit unsigned integer + */ + "YUV420SP_NV21", + + /* + * Channel order: H, S, V + * Channel size: full hsv-channels + * Pixel layout: interleaving hsv-channels + * Pixel layout illustration: + * [Plane1]: H1 S1 V1 H2 S2 V2 H3 S3 V3 + * Data type: 32-bit floating point value + */ + "HSV", + + /* + * Channel order: l, a, b + * Channel size: full lab-channels + * Pixel layout: interleaving lab-channels + * Pixel layout illustration: + * [Plane1]: l1 a1 b1 l2 a2 b2 l3 a3 b3 + * Data type: 32-bit floating point value + */ + "Lab", + + /* + * Channel order: DEPTH + * Channel size: full depth-channel + * Pixel layout: planar depth-channel + * Pixel layout illustration: + * [Plane1]: DEPTH1 DEPTH2 DEPTH3 DEPTH4 + * Data type: 16-bit unsigned integer + */ + "DEPTH", +}; + +enum ChannelPixelLayoutDataType { + "uint8", + "int8", + "uint16", + "int16", + "uint32", + "int32", + "float32", + "float64" +}; + +/* + * Two concepts, ImagePixelLayout and ChannelPixelLayout, together generalize + * the variety of pixel layouts among image formats. + * + * The ChannelPixelLayout represents the pixel layout of a single channel in a + * certain image format and the ImagePixelLayout is just the collection of + * ChannelPixelLayouts. So, the ChannelPixelLayout is defined as a dictionary + * type with properties to describe the layout and the ImagePixelLayout is just + * an alias name to a sequence of ChannelPixelLayout objects. + * + * Since an image format is composed of at least one channel, an + * ImagePixelLayout object contains at least one ChannelPixelLayout object. + * + * Although an image or a video frame is a two-dimensional structure, its data + * is usually stored in a one-dimensional array in the row-major way and the + * ChannelPixelLayout objects use the following properties to describe the + * layout of pixel values in the buffer. + * + * 1) offset: + * denotes the beginning position of the channel's data relative to the + * beginning position of the one-dimensional array. + * 2) width & height: + * denote the width and height of the channel respectively. Each channel in + * an image format may have different height and width. + * 3) data type: + * denotes the format used to store one single pixel value. + * 4) stride: + * the number of bytes between the beginning two consecutive rows in memory. + * (The total bytes of each row plus the padding bytes of each raw.) + * 5) skip value: + * the value is zero for the planar pixel layout, and a positive integer for + * the interleaving pixel layout. (Describes how many bytes there are between + * two adjacent pixel values in this channel.) + */ + +/* + * Example1: RGBA image, width = 620, height = 480, stride = 2560 + * + * chanel_r: offset = 0, width = 620, height = 480, data type = uint8, stride = 2560, skip = 3 + * chanel_g: offset = 1, width = 620, height = 480, data type = uint8, stride = 2560, skip = 3 + * chanel_b: offset = 2, width = 620, height = 480, data type = uint8, stride = 2560, skip = 3 + * chanel_a: offset = 3, width = 620, height = 480, data type = uint8, stride = 2560, skip = 3 + * + * <---------------------------- stride ----------------------------> + * <---------------------- width x 4 ----------------------> + * [index] 01234 8 12 16 20 24 28 2479 2559 + * |||||---|---|---|---|---|---|----------------------------|-------| + * [data] RGBARGBARGBARGBARGBAR___R___R... A%%%%%%%% + * [data] RGBARGBARGBARGBARGBAR___R___R... A%%%%%%%% + * [data] RGBARGBARGBARGBARGBAR___R___R... A%%%%%%%% + * ^^^ + * r-skip + */ + +/* + * Example2: YUV420P image, width = 620, height = 480, stride = 640 + * + * chanel_y: offset = 0, width = 620, height = 480, stride = 640, skip = 0 + * chanel_u: offset = 307200, width = 310, height = 240, data type = uint8, stride = 320, skip = 0 + * chanel_v: offset = 384000, width = 310, height = 240, data type = uint8, stride = 320, skip = 0 + * + * <--------------------------- y-stride ---------------------------> + * <----------------------- y-width -----------------------> + * [index] 012345 619 639 + * ||||||--------------------------------------------------|--------| + * [data] YYYYYYYYYYYYYYYYYYYYYYYYYYYYY... Y%%%%%%%%% + * [data] YYYYYYYYYYYYYYYYYYYYYYYYYYYYY... Y%%%%%%%%% + * [data] YYYYYYYYYYYYYYYYYYYYYYYYYYYYY... Y%%%%%%%%% + * [data] ...... + * <-------- u-stride ----------> + * <----- u-width -----> + * [index] 307200 307509 307519 + * |-------------------|--------| + * [data] UUUUUUUUUU... U%%%%%%%%% + * [data] UUUUUUUUUU... U%%%%%%%%% + * [data] UUUUUUUUUU... U%%%%%%%%% + * [data] ...... + * <-------- v-stride ----------> + * <- --- v-width -----> + * [index] 384000 384309 384319 + * |-------------------|--------| + * [data] VVVVVVVVVV... V%%%%%%%%% + * [data] VVVVVVVVVV... V%%%%%%%%% + * [data] VVVVVVVVVV... V%%%%%%%%% + * [data] ...... + */ + +/* + * Example3: YUV420SP_NV12 image, width = 620, height = 480, stride = 640 + * + * chanel_y: offset = 0, width = 620, height = 480, stride = 640, skip = 0 + * chanel_u: offset = 307200, width = 310, height = 240, data type = uint8, stride = 640, skip = 1 + * chanel_v: offset = 307201, width = 310, height = 240, data type = uint8, stride = 640, skip = 1 + * + * <--------------------------- y-stride --------------------------> + * <----------------------- y-width ----------------------> + * [index] 012345 619 639 + * ||||||-------------------------------------------------|--------| + * [data] YYYYYYYYYYYYYYYYYYYYYYYYYYYYY... Y%%%%%%%%% + * [data] YYYYYYYYYYYYYYYYYYYYYYYYYYYYY... Y%%%%%%%%% + * [data] YYYYYYYYYYYYYYYYYYYYYYYYYYYYY... Y%%%%%%%%% + * [data] ...... + * <--------------------- u-stride / v-stride --------------------> + * <------------------ u-width + v-width -----------------> + * [index] 307200(u-offset) 307819 307839 + * |------------------------------------------------------|-------| + * [index] |307201(v-offset) |307820 | + * ||-----------------------------------------------------||------| + * [data] UVUVUVUVUVUVUVUVUVUVUVUVUVUVUV... UV%%%%%%% + * [data] UVUVUVUVUVUVUVUVUVUVUVUVUVUVUV... UV%%%%%%% + * [data] UVUVUVUVUVUVUVUVUVUVUVUVUVUVUV... UV%%%%%%% + * ^ ^ + * u-skip v-skip + */ + +/* + * Example4: DEPTH image, width = 640, height = 480, stride = 1280 + * + * chanel_d: offset = 0, width = 640, height = 480, data type = uint16, stride = 1280, skip = 0 + * + * note: each DEPTH value uses two bytes + * + * <----------------------- d-stride ----------------------> + * <----------------------- d-width -----------------------> + * [index] 02468 1278 + * |||||---------------------------------------------------| + * [data] DDDDDDDDDDDDDDDDDDDDDDDDDDDDD... D + * [data] DDDDDDDDDDDDDDDDDDDDDDDDDDDDD... D + * [data] DDDDDDDDDDDDDDDDDDDDDDDDDDDDD... D + * [data] ...... + */ + +dictionary ChannelPixelLayout { + required unsigned long offset; + required unsigned long width; + required unsigned long height; + required ChannelPixelLayoutDataType dataType; + required unsigned long stride; + required unsigned long skip; +}; + +typedef sequence<ChannelPixelLayout> ImagePixelLayout; + +partial interface ImageBitmap { + [Throws, Func="mozilla::dom::ImageBitmap::ExtensionsEnabled"] + ImageBitmapFormat findOptimalFormat (optional sequence<ImageBitmapFormat> aPossibleFormats); + [Throws, Func="mozilla::dom::ImageBitmap::ExtensionsEnabled"] + long mappedDataLength (ImageBitmapFormat aFormat); + [Throws, Func="mozilla::dom::ImageBitmap::ExtensionsEnabled"] + Promise<ImagePixelLayout> mapDataInto (ImageBitmapFormat aFormat, BufferSource aBuffer, long aOffset); +}; diff --git a/dom/webidl/ImageBitmapRenderingContext.webidl b/dom/webidl/ImageBitmapRenderingContext.webidl new file mode 100644 index 0000000000..b94447cd96 --- /dev/null +++ b/dom/webidl/ImageBitmapRenderingContext.webidl @@ -0,0 +1,40 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * https://wiki.whatwg.org/wiki/OffscreenCanvas + * + * © Copyright 2004-2011 Apple Computer, Inc., Mozilla Foundation, and + * Opera Software ASA. You are granted a license to use, reproduce + * and create derivative works of this document. + */ + +// The new ImageBitmapRenderingContext is a canvas rendering context +// which only provides the functionality to replace the canvas's +// contents with the given ImageBitmap. Its context id (the first argument +// to getContext) is "bitmaprenderer". +[Exposed=(Window,Worker)] +interface ImageBitmapRenderingContext { + // Displays the given ImageBitmap in the canvas associated with this + // rendering context. Ownership of the ImageBitmap is transferred to + // the canvas. The caller may not use its reference to the ImageBitmap + // after making this call. (This semantic is crucial to enable prompt + // reclamation of expensive graphics resources, rather than relying on + // garbage collection to do so.) + // + // The ImageBitmap conceptually replaces the canvas's bitmap, but + // it does not change the canvas's intrinsic width or height. + // + // The ImageBitmap, when displayed, is clipped to the rectangle + // defined by the canvas's instrinsic width and height. Pixels that + // would be covered by the canvas's bitmap which are not covered by + // the supplied ImageBitmap are rendered transparent black. Any CSS + // styles affecting the display of the canvas are applied as usual. + void transferFromImageBitmap(ImageBitmap bitmap); + + // Deprecated version of transferFromImageBitmap + [Deprecated="ImageBitmapRenderingContext_TransferImageBitmap"] + void transferImageBitmap(ImageBitmap bitmap); +}; diff --git a/dom/webidl/ImageCapture.webidl b/dom/webidl/ImageCapture.webidl new file mode 100644 index 0000000000..22f330335c --- /dev/null +++ b/dom/webidl/ImageCapture.webidl @@ -0,0 +1,28 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * https://dvcs.w3.org/hg/dap/raw-file/default/media-stream-capture/ImageCapture.html + * + * Copyright © 2012-2014 W3C® (MIT, ERCIM, Keio, Beihang), All Rights Reserved. + * W3C liability, trademark and document use rules apply. + */ + +[Pref="dom.imagecapture.enabled", Constructor(VideoStreamTrack track)] +interface ImageCapture : EventTarget { + // readonly attribute PhotoSettingsOptions photoSettingsOptions; + readonly attribute VideoStreamTrack videoStreamTrack; + attribute EventHandler onphoto; + attribute EventHandler onerror; + // attribute EventHandler onphotosettingschange; + // attribute EventHandler onframegrab; + + // [Throws] + // void setOptions (PhotoSettings? photoSettings); + [Throws] + void takePhoto(); + // [Throws] + // void getFrame(); +}; diff --git a/dom/webidl/ImageCaptureErrorEvent.webidl b/dom/webidl/ImageCaptureErrorEvent.webidl new file mode 100644 index 0000000000..b7300aa30c --- /dev/null +++ b/dom/webidl/ImageCaptureErrorEvent.webidl @@ -0,0 +1,32 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * https://dvcs.w3.org/hg/dap/raw-file/default/media-stream-capture/ImageCapture.html + * + * Copyright © 2012-2014 W3C® (MIT, ERCIM, Keio, Beihang), All Rights Reserved. + * W3C liability, trademark and document use rules apply. + */ + +[Pref="dom.imagecapture.enabled", +Constructor(DOMString type, optional ImageCaptureErrorEventInit imageCaptureErrorInitDict)] +interface ImageCaptureErrorEvent : Event { + readonly attribute ImageCaptureError? imageCaptureError; +}; + +dictionary ImageCaptureErrorEventInit : EventInit { + ImageCaptureError? imageCaptureError = null; +}; + +[NoInterfaceObject] +interface ImageCaptureError { + const unsigned short FRAME_GRAB_ERROR = 1; + const unsigned short SETTINGS_ERROR = 2; + const unsigned short PHOTO_ERROR = 3; + const unsigned short ERROR_UNKNOWN = 4; + readonly attribute unsigned short code; + readonly attribute DOMString message; +}; + diff --git a/dom/webidl/ImageData.webidl b/dom/webidl/ImageData.webidl new file mode 100644 index 0000000000..f6000bd059 --- /dev/null +++ b/dom/webidl/ImageData.webidl @@ -0,0 +1,23 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html#imagedata + * + * © Copyright 2004-2011 Apple Computer, Inc., Mozilla Foundation, and Opera Software ASA. + * You are granted a license to use, reproduce and create derivative works of this document. + */ + +[Constructor(unsigned long sw, unsigned long sh), + Constructor(Uint8ClampedArray data, unsigned long sw, optional unsigned long sh), + Exposed=(Window,Worker)] +interface ImageData { + [Constant] + readonly attribute unsigned long width; + [Constant] + readonly attribute unsigned long height; + [Constant, StoreInSlot] + readonly attribute Uint8ClampedArray data; +}; diff --git a/dom/webidl/ImageDocument.webidl b/dom/webidl/ImageDocument.webidl new file mode 100644 index 0000000000..571e345dde --- /dev/null +++ b/dom/webidl/ImageDocument.webidl @@ -0,0 +1,41 @@ +/* -*- 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/. + * + * The origin of this IDL file is: + * dom/html/public/nsIImageDocument.idl + */ + +interface imgIRequest; + +[ChromeOnly, OverrideBuiltins] +interface ImageDocument : HTMLDocument { + /* Whether the image is overflowing visible area. */ + readonly attribute boolean imageIsOverflowing; + + /* Whether the image has been resized to fit visible area. */ + readonly attribute boolean imageIsResized; + + /* The image request being displayed in the content area */ + [Throws] + readonly attribute imgIRequest? imageRequest; + + /* Resize the image to fit visible area. */ + void shrinkToFit(); + + /* Restore image original size. */ + void restoreImage(); + + /* Restore the image, trying to keep a certain pixel in the same position. + * The coordinate system is that of the shrunken image. + */ + void restoreImageTo(long x, long y); + + /* A helper method for switching between states. + * The switching logic is as follows. If the image has been resized + * restore image original size, otherwise if the image is overflowing + * current visible area resize the image to fit the area. + */ + void toggleImageSize(); +}; diff --git a/dom/webidl/InputEvent.webidl b/dom/webidl/InputEvent.webidl new file mode 100644 index 0000000000..805b0510cd --- /dev/null +++ b/dom/webidl/InputEvent.webidl @@ -0,0 +1,16 @@ +/* -*- 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/. + */ + +[Constructor(DOMString type, optional InputEventInit eventInitDict)] +interface InputEvent : UIEvent +{ + readonly attribute boolean isComposing; +}; + +dictionary InputEventInit : UIEventInit +{ + boolean isComposing = false; +}; diff --git a/dom/webidl/InputMethod.webidl b/dom/webidl/InputMethod.webidl new file mode 100644 index 0000000000..ca22dcc1b6 --- /dev/null +++ b/dom/webidl/InputMethod.webidl @@ -0,0 +1,738 @@ +/* -*- 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/. + */ + +/** + * InputMethod API implements a bridge between the web content hosting an input + * element and the input content (a.k.a. input app, virtual keyboard app, + * or IME). This API is input content facing in order for it to interact with + * the remote input element. + * The API also contains a few Gaia System app only methods + * (marked with "input-manage" permission) for Gaia System app to interact with + * some types of inputs and to regulate the input apps. + */ +[JSImplementation="@mozilla.org/b2g-inputmethod;1", + NavigatorProperty="mozInputMethod", + Pref="dom.mozInputMethod.enabled", + ChromeOnly] +interface MozInputMethod : EventTarget { + /** + * Activate or decactive current API instance. + * Gaia System app call this method via BrowserElement#setInputMethodActive. + */ + [ChromeOnly] + void setActive(boolean isActive); + + /** + * InputMethodManager contain a few global methods expose to input apps. + */ + readonly attribute MozInputMethodManager mgmt; + + /** + * Fired when the input context changes, include changes from and to null. + * The new InputContext instance will be available in the event + * object under |inputcontext| property. When it changes to null it + * means the app (the user of this API) no longer has the control of + * the original focused input field. + * Note that if the app saves the original context, it might get + * void; implementation decides when to void the input context. + */ + attribute EventHandler oninputcontextchange; + + /** + * An "input context" is mapped to a text field that the app is + * allow to mutate. This attribute should be null when there is no + * text field currently focused. + */ + readonly attribute MozInputContext? inputcontext; + + /** + * Add a dynamically declared input. + * + * The id must not be the same with any statically declared input in the app + * manifest. If an input of the same id is already declared, the info of that + * input will be updated. + */ + Promise<void> addInput(DOMString inputId, + MozInputMethodInputManifest inputManifest); + + /** + * Remove a dynamically declared input. + * + * The id must not be the same with any statically declared input in the app + * manifest. Silently resolves if the input is not previously declared; + * rejects if attempt to remove a statically declared input. + */ + Promise<void> removeInput(DOMString id); + + /** + * Remove focus from the current input, usable by Gaia System app, globally, + * regardless of the current focus state. + */ + void removeFocus(); + + /** + * The following are internal methods for Firefox OS System app only, + * for handling the "option" group inputs. + */ + + /** + * Set the value on the currently focused element. This has to be used + * for special situations where the value had to be chosen amongst a + * list (type=month) or a widget (type=date, time, etc.). + * If the value passed in parameter isn't valid (in the term of HTML5 + * Forms Validation), the value will simply be ignored by the element. + */ + void setValue(DOMString value); + + /** + * Select the <select> option specified by index. + * If this method is called on a <select> that support multiple + * selection, then the option specified by index will be added to + * the selection. + * If this method is called for a select that does not support multiple + * selection the previous element will be unselected. + */ + void setSelectedOption(long index); + + /** + * Select the <select> options specified by indexes. All other options + * will be deselected. + * If this method is called for a <select> that does not support multiple + * selection, then the last index specified in indexes will be selected. + */ + void setSelectedOptions(sequence<long> indexes); +}; + +/** + * InputMethodManager contains a few of the global methods for the input app. + */ +[JSImplementation="@mozilla.org/b2g-imm;1", + Pref="dom.mozInputMethod.enabled", + ChromeOnly] +interface MozInputMethodManager : EventTarget { + /** + * Ask the OS to show a list of available inputs for users to switch from. + * OS should sliently ignore this request if the app is currently not the + * active one. + */ + void showAll(); + + /** + * Ask the OS to switch away from the current active input app. + * OS should sliently ignore this request if the app is currently not the + * active one. + */ + void next(); + + /** + * If this method returns true, it is recommended that the input app provides + * a shortcut that would invoke the next() method above, for easy switching + * between inputs -- i.e. show a "global" button on screen if the input app + * implements an on-screen virtual keyboard. + * + * The returning value is depend on the inputType of the current input context. + */ + boolean supportsSwitching(); + + /** + * Ask the OS to remove the input focus, will cause the lost of input context. + * OS should sliently ignore this request if the app is currently not the + * active one. + */ + void hide(); + + /** + * Update Gecko with information on the input types which supportsSwitching() + * should return ture. + * + * @param types Array of input types in which supportsSwitching() should + * return true. + */ + void setSupportsSwitchingTypes(sequence<MozInputMethodInputContextInputTypes> types); + + /** + * CustomEvent dispatches to System when there is an input to handle. + * If the API consumer failed to handle and call preventDefault(), + * there will be a message printed on the console. + * + * evt.detail is defined by MozInputContextFocusEventDetail. + */ + attribute EventHandler oninputcontextfocus; + + /** + * Event dispatches to System when there is no longer an input to handle. + * If the API consumer failed to handle and call preventDefault(), + * there will be a message printed on the console. + */ + attribute EventHandler oninputcontextblur; + + /** + * Event dispatches to System when there is a showAll() call. + * If the API consumer failed to handle and call preventDefault(), + * there will be a message printed on the console. + */ + attribute EventHandler onshowallrequest; + + /** + * Event dispatches to System when there is a next() call. + * If the API consumer failed to handle and call preventDefault(), + * there will be a message printed on the console. + */ + attribute EventHandler onnextrequest; + + /** + * Event dispatches to System when there is a addInput() call. + * The API consumer must call preventDefault() to indicate the event is + * consumed, otherwise the request is not considered handled even if + * waitUntil() was called. + * + * evt.detail is defined by MozInputRegistryEventDetail. + */ + attribute EventHandler onaddinputrequest; + + /** + * Event dispatches to System when there is a removeInput() call. + * The API consumer must call preventDefault() to indicate the event is + * consumed, otherwise the request is not considered handled even if + * waitUntil() was called. + * + * evt.detail is defined by MozInputRegistryEventDetail. + */ + attribute EventHandler onremoveinputrequest; +}; + +/** + * Detail of the inputcontextfocus event. + */ +[JSImplementation="@mozilla.org/b2g-imm-focus;1", + Pref="dom.mozInputMethod.enabled", + ChromeOnly] +interface MozInputContextFocusEventDetail { + /** + * The type of the focused input. + */ + readonly attribute MozInputMethodInputContextTypes type; + /** + * The input type of the focused input. + */ + readonly attribute MozInputMethodInputContextInputTypes inputType; + + /** + * The following is only needed for rendering and handling "option" input types, + * in System app. + */ + + /** + * Current value of the input. + */ + readonly attribute DOMString? value; + /** + * An object representing all the <optgroup> and <option> elements + * in the <select> element. + */ + [Pure, Cached, Frozen] + readonly attribute MozInputContextChoicesInfo? choices; + /** + * Max/min value of <input> + */ + readonly attribute DOMString? min; + readonly attribute DOMString? max; +}; + +/** + * Information about the options within the <select> element. + */ +dictionary MozInputContextChoicesInfo { + boolean multiple; + sequence<MozInputMethodChoiceDict> choices; +}; + +/** + * Content of the option header (<optgroup>) or an option (<option>). + */ +dictionary MozInputMethodChoiceDict { + boolean group; + DOMString text; + boolean disabled; + boolean? inGroup; + boolean? selected; + long? optionIndex; +}; + +/** + * detail of addinputrequest or removeinputrequest event. + */ +[JSImplementation="@mozilla.org/b2g-imm-input-registry;1", + Pref="dom.mozInputMethod.enabled", + ChromeOnly] +interface MozInputRegistryEventDetail { + /** + * Manifest URL of the requesting app. + */ + readonly attribute DOMString manifestURL; + /** + * ID of the input + */ + readonly attribute DOMString inputId; + /** + * Input manifest of the input to add. + * Null for removeinputrequest event. + */ + [Pure, Cached, Frozen] + readonly attribute MozInputMethodInputManifest? inputManifest; + /** + * Resolve or Reject the addInput() or removeInput() call when the passed + * promises are resolved. + */ + [Throws] + void waitUntil(Promise<any> p); +}; + +/** + * The input context, which consists of attributes and information of current + * input field. It also hosts the methods available to the keyboard app to + * mutate the input field represented. An "input context" gets void when the + * app is no longer allowed to interact with the text field, + * e.g., the text field does no longer exist, the app is being switched to + * background, and etc. + */ +[JSImplementation="@mozilla.org/b2g-inputcontext;1", + Pref="dom.mozInputMethod.enabled", + ChromeOnly] +interface MozInputContext: EventTarget { + /** + * Type of the InputContext. See MozInputMethodInputContextTypes + */ + readonly attribute MozInputMethodInputContextTypes? type; + + /** + * InputType of the InputContext. See MozInputMethodInputContextInputTypes. + */ + readonly attribute MozInputMethodInputContextInputTypes? inputType; + + /** + * The inputmode string, representing the inputmode of the input. + * See http://www.whatwg.org/specs/web-apps/current-work/multipage/association-of-controls-and-forms.html#input-modalities:-the-inputmode-attribute + */ + readonly attribute DOMString? inputMode; + + /** + * The primary language for the input field. + * It is the value of HTMLElement.lang. + * See http://www.whatwg.org/specs/web-apps/current-work/multipage/elements.html#htmlelement + */ + readonly attribute DOMString? lang; + + /** + * Get the whole text content of the input field. + * @return DOMString + */ + Promise<DOMString> getText(optional long offset, optional long length); + + /** + * The start and stop position of the current selection. + */ + readonly attribute long selectionStart; + readonly attribute long selectionEnd; + + /** + * The text in the current input. + */ + readonly attribute DOMString? text; + + /** + * The text before and after the begining of the selected text. + * + * You should use the text property instead because these properties are + * truncated at 100 characters. + */ + readonly attribute DOMString? textBeforeCursor; + readonly attribute DOMString? textAfterCursor; + + /** + * Set the selection range of the the editable text. + * Note: This method cannot be used to move the cursor during composition. Calling this + * method will cancel composition. + * @param start The beginning of the selected text. + * @param length The length of the selected text. + * + * Note that the start position should be less or equal to the end position. + * To move the cursor, set the start and end position to the same value. + * + * @return boolean + */ + Promise<boolean> setSelectionRange(long start, long length); + + /* User moves the cursor, or changes the selection with other means. If the text around + * cursor has changed, but the cursor has not been moved, the IME won't get notification. + * + * evt.detail is defined by MozInputContextSelectionChangeEventDetail. + */ + attribute EventHandler onselectionchange; + + /** + * Commit text to current input field and replace text around + * cursor position. It will clear the current composition. + * + * @param text The string to be replaced with. + * @param offset The offset from the cursor position where replacing starts. Defaults to 0. + * @param length The length of text to replace. Defaults to 0. + * @return boolean + */ + Promise<boolean> replaceSurroundingText(DOMString text, optional long offset, optional long length); + + /** + * Delete text around the cursor. + * @param offset The offset from the cursor position where deletion starts. + * @param length The length of text to delete. + * TODO: maybe updateSurroundingText(DOMString beforeText, DOMString afterText); ? + * @return boolean + */ + Promise<boolean> deleteSurroundingText(long offset, long length); + + /** + * Notifies when the text around the cursor is changed, due to either text + * editing or cursor movement. If the cursor has been moved, but the text around has not + * changed, the IME won't get notification. + * + * evt.detail is defined by MozInputContextSurroundingTextChangeEventDetail. + */ + attribute EventHandler onsurroundingtextchange; + + /** + * Send a string/character with its key events. There are two ways of invocating + * the method for backward compability purpose. + * + * (1) The recommended way, allow specifying DOM level 3 properties like |code|. + * @param dictOrKeyCode See MozInputMethodKeyboardEventDict. + * @param charCode disregarded + * @param modifiers disregarded + * @param repeat disregarded + * + * (2) Deprecated, reserved for backward compability. + * @param dictOrKeyCode keyCode of the key to send, should be one of the DOM_VK_ value in KeyboardEvent. + * @param charCode charCode of the character, should be 0 for non-printable keys. + * @param modifiers this paramater is no longer honored. + * @param repeat indicates whether a key would be sent repeatedly. + * + * @return A promise. Resolve to true if succeeds. + * Rejects to a string indicating the error. + * + * Note that, if you want to send a key n times repeatedly, make sure set + * parameter repeat to true and invoke sendKey n times, and invoke keyup + * after the end of the input. + */ + Promise<boolean> sendKey((MozInputMethodRequiredKeyboardEventDict or long) dictOrKeyCode, + optional long charCode, + optional long modifiers, + optional boolean repeat); + + /** + * Send a string/character with keydown, and keypress events. + * keyup should be called afterwards to ensure properly sequence. + * + * @param dict See MozInputMethodKeyboardEventDict. + * + * @return A promise. Resolve to true if succeeds. + * Rejects to a string indicating the error. + */ + Promise<boolean> keydown(MozInputMethodRequiredKeyboardEventDict dict); + + /** + * Send a keyup event. keydown should be called first to ensure properly sequence. + * + * @param dict See MozInputMethodKeyboardEventDict. + * + * @return A promise. Resolve to true if succeeds. + * Rejects to a string indicating the error. + */ + Promise<boolean> keyup(MozInputMethodRequiredKeyboardEventDict dict); + + /** + * Set current composing text. This method will start composition or update + * composition if it has started. The composition will be started right + * before the cursor position and any selected text will be replaced by the + * composing text. When the composition is started, calling this method can + * update the text and move cursor winthin the range of the composing text. + * @param text The new composition text to show. + * @param cursor The new cursor position relative to the start of the + * composition text. The cursor should be positioned within the composition + * text. This means the value should be >= 0 and <= the length of + * composition text. Defaults to the lenght of composition text, i.e., the + * cursor will be positioned after the composition text. + * @param clauses The array of composition clause information. If not set, + * only one clause is supported. + * @param dict The properties of the keyboard event that cause the composition + * to set. keydown or keyup event will be fired if it's necessary. + * For compatibility, we recommend that you should always set this argument + * if it's caused by a key operation. + * + * The composing text, which is shown with underlined style to distinguish + * from the existing text, is used to compose non-ASCII characters from + * keystrokes, e.g. Pinyin or Hiragana. The composing text is the + * intermediate text to help input complex character and is not committed to + * current input field. Therefore if any text operation other than + * composition is performed, the composition will automatically end. Same + * apply when the inputContext is lost during an unfinished composition + * session. + * + * To finish composition and commit text to current input field, an IME + * should call |endComposition|. + */ + Promise<boolean> setComposition(DOMString text, + optional long cursor, + optional sequence<CompositionClauseParameters> clauses, + optional MozInputMethodKeyboardEventDict dict); + + /** + * End composition, clear the composing text and commit given text to + * current input field. The text will be committed before the cursor + * position. + * @param text The text to commited before cursor position. If empty string + * is given, no text will be committed. + * @param dict The properties of the keyboard event that cause the composition + * to end. keydown or keyup event will be fired if it's necessary. + * For compatibility, we recommend that you should always set this argument + * if it's caused by a key operation. + * + * Note that composition always ends automatically with nothing to commit if + * the composition does not explicitly end by calling |endComposition|, but + * is interrupted by |sendKey|, |setSelectionRange|, + * |replaceSurroundingText|, |deleteSurroundingText|, user moving the + * cursor, changing the focus, etc. + */ + Promise<boolean> endComposition(optional DOMString text, + optional MozInputMethodKeyboardEventDict dict); + + /** + * The interface used to receive the native events from hardware keyboard + */ + readonly attribute MozHardwareInput? hardwareinput; +}; + +/* + * This interface will be added into inputcontext and used to receive the + * events from the hardware keyboard. + * Example: + * mozInputMethod.inputcontext.hardwareinput.addEventListener('keyup', this); + * mozInputMethod.inputcontext.hardwareinput.removeEventListener('keyup', this); + */ +[JSImplementation="@mozilla.org/b2g-hardwareinput;1", + Pref="dom.mozInputMethod.enabled", + ChromeOnly] +interface MozHardwareInput: EventTarget { +}; + +/** + * Detail of the selectionchange event. + */ +[JSImplementation="@mozilla.org/b2g-imm-selectionchange;1", + Pref="dom.mozInputMethod.enabled", + ChromeOnly] +interface MozInputContextSelectionChangeEventDetail { + /** + * Indicate whether or not the change is due to our own action from, + * for example, sendKey() call. + * + * Note: this property is untrustworthy because it would still be true even + * if script in the page changed the text synchronously upon responding to + * events trigger by the call. + */ + readonly attribute boolean ownAction; + + /** + * The start and stop position of the current selection. + */ + readonly attribute long selectionStart; + readonly attribute long selectionEnd; +}; + +/** + * Detail of the surroundingtextchange event. + */ +[JSImplementation="@mozilla.org/b2g-imm-surroundingtextchange;1", + Pref="dom.mozInputMethod.enabled", + ChromeOnly] +interface MozInputContextSurroundingTextChangeEventDetail { + /** + * Indicate whether or not the change is due to our own action from, + * for example, sendKey() call. + * + * Note: this property is untrustworthy because it would still be true even + * if script in the page changed the text synchronously upon responding to + * events trigger by the call. + */ + readonly attribute boolean ownAction; + + /** + * The text in the current input. + */ + readonly attribute DOMString? text; + + /** + * The text before and after the begining of the selected text. + * + * You should use the text property instead because these properties are + * truncated at 100 characters. + */ + readonly attribute DOMString? textBeforeCursor; + readonly attribute DOMString? textAfterCursor; +}; + +enum CompositionClauseSelectionType { + "raw-input", + "selected-raw-text", + "converted-text", + "selected-converted-text" +}; + +dictionary CompositionClauseParameters { + CompositionClauseSelectionType selectionType = "raw-input"; + long length; +}; + +/** + * Types are HTML tag names of the inputs that is explosed with InputContext, + * *and* the special keyword "contenteditable" for contenteditable element. + */ +enum MozInputMethodInputContextTypes { + "input", "textarea", "contenteditable", + /** + * <select> is managed by the API but it is handled by the System app only, + * so this value is only accessible by System app from inputcontextfocus event. + */ + "select" +}; + +/** + * InputTypes of the input that InputContext is representing. The value + * is inferred from the type attribute of element. + * + * See https://html.spec.whatwg.org/multipage/forms.html#states-of-the-type-attribute + * for types of HTMLInputElement. + * + * They are divided into groups -- an layout/input capable of handling one type + * in the group is considered as capable of handling all of the types in the + * same group. + * The layout/input that could handle type "text" is considered as the fallback + * if none of layout/input installed can handle a specific type. + * + * Groups and fallbacks is enforced in Gaia System app currently. + * + * Noted that the actual virtual keyboard to show, for example in the case of + * Gaia Keyboard app, will also depend on the inputMode of the input element. + */ +enum MozInputMethodInputContextInputTypes { + /** + * Group "text". Be reminded that contenteditable element is assigned with + * an input type of "textarea". + */ + "text", "search", "textarea", + /** + * Group "number" + */ + "number", "tel", + /** + * Group "url" + */ + "url", + /** + * Group "email" + */ + "email", + /** + * Group "password". + * An non-Latin alphabet layout/input should not be able to handle this type. + */ + "password", + /** + * Group "option". These types are handled by System app itself currently, so + * no input app will be set to active for these input types. + * System app access these types from inputcontextfocus event. + * ("select-one" and "select-multiple" are valid HTMLSelectElement#type.) + */ + "datetime", "date", "month", "week", "time", "datetime-local", "color", + "select-one", "select-multiple" + /** + * These types are ignored by the API even though they are valid + * HTMLInputElement#type. + */ + //"checkbox", "radio", "file", "submit", "image", "range", "reset", "button" +}; + +/** + * An input app can host multiple inputs (a.k.a. layouts) and the capability of + * the input is described by the input manifest. + */ +dictionary MozInputMethodInputManifest { + required DOMString launch_path; + required DOMString name; + DOMString? description; + sequence<MozInputMethodInputContextInputTypes> types; +}; + +/** + * A MozInputMethodKeyboardEventDictBase contains the following properties, + * indicating the properties of the keyboard event caused. + * + * This is the base dictionary type for us to create two child types that could + * be used as argument type in two types of methods, as WebIDL parser required. + * + */ +dictionary MozInputMethodKeyboardEventDictBase { + /** + * String/character to output, or a registered name of non-printable key. + * (To be defined in the inheriting dictionary types.) + */ + // DOMString key; + /** + * String/char indicating the virtual hardware key pressed. Optional. + * Must be a value defined in + * http://www.w3.org/TR/DOM-Level-3-Events-code/#keyboard-chording-virtual + * If your keyboard app emulates physical keyboard layout, this value should + * not be empty string. Otherwise, it should be empty string. + */ + DOMString code = ""; + /** + * keyCode of the keyboard event. Optional. + * To be disregarded if |key| is an alphanumeric character. + * If the key causes inputting a character and if your keyboard app emulates + * a physical keyboard layout, this value should be same as the value used + * by Firefox for desktop. If the key causes inputting an ASCII character + * but if your keyboard app doesn't emulate any physical keyboard layouts, + * the value should be proper value for the key value. + */ + long? keyCode; + /** + * Indicates whether a key would be sent repeatedly. Optional. + */ + boolean repeat = false; + /** + * Optional. True if |key| property is explicitly referring to a printable key. + * When this is set, key will be printable even if the |key| value matches any + * of the registered name of non-printable keys. + */ + boolean printable = false; +}; + +/** + * For methods like setComposition() and endComposition(), the optional + * dictionary type argument is really optional when all of it's property + * are optional. + * This dictionary type is used to denote that argument. + */ +dictionary MozInputMethodKeyboardEventDict : MozInputMethodKeyboardEventDictBase { + DOMString? key; +}; + +/** + * For methods like keydown() and keyup(), the dictionary type argument is + * considered required only if at least one of it's property is required. + * This dictionary type is used to denote that argument. + */ +dictionary MozInputMethodRequiredKeyboardEventDict : MozInputMethodKeyboardEventDictBase { + required DOMString key; +}; diff --git a/dom/webidl/InspectorUtils.webidl b/dom/webidl/InspectorUtils.webidl new file mode 100644 index 0000000000..289fafaf5d --- /dev/null +++ b/dom/webidl/InspectorUtils.webidl @@ -0,0 +1,29 @@ +/* -*- 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/. + */ +dictionary InspectorRGBTriple { + /* + * NOTE: Using octet for RGB components is not generally OK, because + * they can be outside the 0-255 range, but for backwards-compatible + * named colors (which is what we use this dictionary for) the 0-255 + * assumption is fine. + */ + octet r = 0; + octet g = 0; + octet b = 0; +}; + +dictionary InspectorRGBATuple { + /* + * NOTE: This tuple is in the normal 0-255-sized RGB space but can be + * fractional and may extend outside the 0-255 range. + * + * a is in the range 0 - 1. + */ + double r = 0; + double g = 0; + double b = 0; + double a = 1; +}; diff --git a/dom/webidl/InstallTrigger.webidl b/dom/webidl/InstallTrigger.webidl new file mode 100644 index 0000000000..789fb2bc40 --- /dev/null +++ b/dom/webidl/InstallTrigger.webidl @@ -0,0 +1,90 @@ +/* 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/. + */ + + +/** + * A callback function that webpages can implement to be notified when triggered + * installs complete. + */ +callback InstallTriggerCallback = void(DOMString url, short status); + +dictionary InstallTriggerData { + DOMString URL; + DOMString? IconURL; + DOMString? Hash; +}; + +/** + * The interface for the InstallTrigger object available to all websites. + */ +[ChromeOnly, + JSImplementation="@mozilla.org/addons/installtrigger;1"] +interface InstallTriggerImpl { + /** + * Retained for backwards compatibility. + */ + const unsigned short SKIN = 1; + const unsigned short LOCALE = 2; + const unsigned short CONTENT = 4; + const unsigned short PACKAGE = 7; + + /** + * Tests if installation is enabled. + */ + boolean enabled(); + + /** + * Tests if installation is enabled. + * + * @deprecated Use "enabled" in the future. + */ + boolean updateEnabled(); + + /** + * Starts a new installation of a set of add-ons. + * + * @param aArgs + * The add-ons to install. This should be a JS object, each property + * is the name of an add-on to be installed. The value of the + * property should either be a string URL, or an object with the + * following properties: + * * URL for the add-on's URL + * * IconURL for an icon for the add-on + * * Hash for a hash of the add-on + * @param aCallback + * A callback to call as each installation succeeds or fails + * @return true if the installations were successfully started + */ + boolean install(MozMap<(DOMString or InstallTriggerData)> installs, + optional InstallTriggerCallback callback); + + /** + * Starts installing a new add-on. + * + * @deprecated use "install" in the future. + * + * @param aType + * Unused, retained for backwards compatibility + * @param aUrl + * The URL of the add-on + * @param aSkin + * Unused, retained for backwards compatibility + * @return true if the installation was successfully started + */ + boolean installChrome(unsigned short type, DOMString url, DOMString skin); + + /** + * Starts installing a new add-on. + * + * @deprecated use "install" in the future. + * + * @param aUrl + * The URL of the add-on + * @param aFlags + * Unused, retained for backwards compatibility + * @return true if the installation was successfully started + */ + boolean startSoftwareUpdate(DOMString url, optional unsigned short flags); +}; diff --git a/dom/webidl/IntersectionObserver.webidl b/dom/webidl/IntersectionObserver.webidl new file mode 100644 index 0000000000..dbe8f428d8 --- /dev/null +++ b/dom/webidl/IntersectionObserver.webidl @@ -0,0 +1,60 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * https://wicg.github.io/IntersectionObserver/ + */ + +[ProbablyShortLivingObject, Pref="dom.IntersectionObserver.enabled"] +interface IntersectionObserverEntry { + [Constant] + readonly attribute DOMHighResTimeStamp time; + [Constant] + readonly attribute DOMRectReadOnly? rootBounds; + [Constant] + readonly attribute DOMRectReadOnly boundingClientRect; + [Constant] + readonly attribute DOMRectReadOnly intersectionRect; + [Constant] + readonly attribute double intersectionRatio; + [Constant] + readonly attribute Element target; +}; + +[Constructor(IntersectionCallback intersectionCallback, + optional IntersectionObserverInit options), + Pref="dom.IntersectionObserver.enabled"] +interface IntersectionObserver { + [Constant] + readonly attribute Element? root; + [Constant] + readonly attribute DOMString rootMargin; + [Constant,Cached] + readonly attribute sequence<double> thresholds; + void observe(Element target); + void unobserve(Element target); + void disconnect(); + sequence<IntersectionObserverEntry> takeRecords(); + + [ChromeOnly] + readonly attribute IntersectionCallback intersectionCallback; +}; + +callback IntersectionCallback = + void (sequence<IntersectionObserverEntry> entries, IntersectionObserver observer); + +dictionary IntersectionObserverEntryInit { + required DOMHighResTimeStamp time; + required DOMRectInit rootBounds; + required DOMRectInit boundingClientRect; + required DOMRectInit intersectionRect; + required Element target; +}; + +dictionary IntersectionObserverInit { + Element? root = null; + DOMString rootMargin = "0px"; + (double or sequence<double>) threshold = 0; +}; diff --git a/dom/webidl/IterableIterator.webidl b/dom/webidl/IterableIterator.webidl new file mode 100644 index 0000000000..633b67b1ed --- /dev/null +++ b/dom/webidl/IterableIterator.webidl @@ -0,0 +1,15 @@ +/* -*- 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/. + */ + +dictionary IterableKeyOrValueResult { + any value; + boolean done = false; +}; + +dictionary IterableKeyAndValueResult { + sequence<any> value = []; + boolean done = false; +}; diff --git a/dom/webidl/KeyAlgorithm.webidl b/dom/webidl/KeyAlgorithm.webidl new file mode 100644 index 0000000000..260b1e624b --- /dev/null +++ b/dom/webidl/KeyAlgorithm.webidl @@ -0,0 +1,37 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/WebCryptoAPI/ + */ + +dictionary KeyAlgorithm { + required DOMString name; +}; + +dictionary AesKeyAlgorithm : KeyAlgorithm { + required unsigned short length; +}; + +dictionary EcKeyAlgorithm : KeyAlgorithm { + required DOMString namedCurve; +}; + +dictionary HmacKeyAlgorithm : KeyAlgorithm { + required KeyAlgorithm hash; + required unsigned long length; +}; + +dictionary RsaHashedKeyAlgorithm : KeyAlgorithm { + required unsigned short modulusLength; + required Uint8Array publicExponent; + required KeyAlgorithm hash; +}; + +dictionary DhKeyAlgorithm : KeyAlgorithm { + required Uint8Array prime; + required Uint8Array generator; +}; + diff --git a/dom/webidl/KeyEvent.webidl b/dom/webidl/KeyEvent.webidl new file mode 100644 index 0000000000..5166328545 --- /dev/null +++ b/dom/webidl/KeyEvent.webidl @@ -0,0 +1,237 @@ +/* -*- 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/. + */ + +// http://www.w3.org/TR/1999/WD-DOM-Level-2-19990923/events.html#Events-KeyEvent +interface KeyEvent +{ + const unsigned long DOM_VK_CANCEL = 0x03; + const unsigned long DOM_VK_HELP = 0x06; + const unsigned long DOM_VK_BACK_SPACE = 0x08; + const unsigned long DOM_VK_TAB = 0x09; + const unsigned long DOM_VK_CLEAR = 0x0C; + const unsigned long DOM_VK_RETURN = 0x0D; + // DOM_VK_ENTER has been never used for representing native key events. + // Therefore, it's removed for preventing developers being confused. + // const unsigned long DOM_VK_ENTER = 0x0E; + const unsigned long DOM_VK_SHIFT = 0x10; + const unsigned long DOM_VK_CONTROL = 0x11; + const unsigned long DOM_VK_ALT = 0x12; + const unsigned long DOM_VK_PAUSE = 0x13; + const unsigned long DOM_VK_CAPS_LOCK = 0x14; + const unsigned long DOM_VK_KANA = 0x15; + const unsigned long DOM_VK_HANGUL = 0x15; + const unsigned long DOM_VK_EISU = 0x16; // Japanese Mac keyboard only + const unsigned long DOM_VK_JUNJA = 0x17; + const unsigned long DOM_VK_FINAL = 0x18; + const unsigned long DOM_VK_HANJA = 0x19; + const unsigned long DOM_VK_KANJI = 0x19; + const unsigned long DOM_VK_ESCAPE = 0x1B; + const unsigned long DOM_VK_CONVERT = 0x1C; + const unsigned long DOM_VK_NONCONVERT = 0x1D; + const unsigned long DOM_VK_ACCEPT = 0x1E; + const unsigned long DOM_VK_MODECHANGE = 0x1F; + const unsigned long DOM_VK_SPACE = 0x20; + const unsigned long DOM_VK_PAGE_UP = 0x21; + const unsigned long DOM_VK_PAGE_DOWN = 0x22; + const unsigned long DOM_VK_END = 0x23; + const unsigned long DOM_VK_HOME = 0x24; + const unsigned long DOM_VK_LEFT = 0x25; + const unsigned long DOM_VK_UP = 0x26; + const unsigned long DOM_VK_RIGHT = 0x27; + const unsigned long DOM_VK_DOWN = 0x28; + const unsigned long DOM_VK_SELECT = 0x29; + const unsigned long DOM_VK_PRINT = 0x2A; + const unsigned long DOM_VK_EXECUTE = 0x2B; + const unsigned long DOM_VK_PRINTSCREEN = 0x2C; + const unsigned long DOM_VK_INSERT = 0x2D; + const unsigned long DOM_VK_DELETE = 0x2E; + + // DOM_VK_0 - DOM_VK_9 match their ascii values + const unsigned long DOM_VK_0 = 0x30; + const unsigned long DOM_VK_1 = 0x31; + const unsigned long DOM_VK_2 = 0x32; + const unsigned long DOM_VK_3 = 0x33; + const unsigned long DOM_VK_4 = 0x34; + const unsigned long DOM_VK_5 = 0x35; + const unsigned long DOM_VK_6 = 0x36; + const unsigned long DOM_VK_7 = 0x37; + const unsigned long DOM_VK_8 = 0x38; + const unsigned long DOM_VK_9 = 0x39; + + const unsigned long DOM_VK_COLON = 0x3A; + const unsigned long DOM_VK_SEMICOLON = 0x3B; + const unsigned long DOM_VK_LESS_THAN = 0x3C; + const unsigned long DOM_VK_EQUALS = 0x3D; + const unsigned long DOM_VK_GREATER_THAN = 0x3E; + const unsigned long DOM_VK_QUESTION_MARK = 0x3F; + const unsigned long DOM_VK_AT = 0x40; + + // DOM_VK_A - DOM_VK_Z match their ascii values + const unsigned long DOM_VK_A = 0x41; + const unsigned long DOM_VK_B = 0x42; + const unsigned long DOM_VK_C = 0x43; + const unsigned long DOM_VK_D = 0x44; + const unsigned long DOM_VK_E = 0x45; + const unsigned long DOM_VK_F = 0x46; + const unsigned long DOM_VK_G = 0x47; + const unsigned long DOM_VK_H = 0x48; + const unsigned long DOM_VK_I = 0x49; + const unsigned long DOM_VK_J = 0x4A; + const unsigned long DOM_VK_K = 0x4B; + const unsigned long DOM_VK_L = 0x4C; + const unsigned long DOM_VK_M = 0x4D; + const unsigned long DOM_VK_N = 0x4E; + const unsigned long DOM_VK_O = 0x4F; + const unsigned long DOM_VK_P = 0x50; + const unsigned long DOM_VK_Q = 0x51; + const unsigned long DOM_VK_R = 0x52; + const unsigned long DOM_VK_S = 0x53; + const unsigned long DOM_VK_T = 0x54; + const unsigned long DOM_VK_U = 0x55; + const unsigned long DOM_VK_V = 0x56; + const unsigned long DOM_VK_W = 0x57; + const unsigned long DOM_VK_X = 0x58; + const unsigned long DOM_VK_Y = 0x59; + const unsigned long DOM_VK_Z = 0x5A; + + const unsigned long DOM_VK_WIN = 0x5B; + const unsigned long DOM_VK_CONTEXT_MENU = 0x5D; + const unsigned long DOM_VK_SLEEP = 0x5F; + + // Numpad keys + const unsigned long DOM_VK_NUMPAD0 = 0x60; + const unsigned long DOM_VK_NUMPAD1 = 0x61; + const unsigned long DOM_VK_NUMPAD2 = 0x62; + const unsigned long DOM_VK_NUMPAD3 = 0x63; + const unsigned long DOM_VK_NUMPAD4 = 0x64; + const unsigned long DOM_VK_NUMPAD5 = 0x65; + const unsigned long DOM_VK_NUMPAD6 = 0x66; + const unsigned long DOM_VK_NUMPAD7 = 0x67; + const unsigned long DOM_VK_NUMPAD8 = 0x68; + const unsigned long DOM_VK_NUMPAD9 = 0x69; + const unsigned long DOM_VK_MULTIPLY = 0x6A; + const unsigned long DOM_VK_ADD = 0x6B; + const unsigned long DOM_VK_SEPARATOR = 0x6C; + const unsigned long DOM_VK_SUBTRACT = 0x6D; + const unsigned long DOM_VK_DECIMAL = 0x6E; + const unsigned long DOM_VK_DIVIDE = 0x6F; + + const unsigned long DOM_VK_F1 = 0x70; + const unsigned long DOM_VK_F2 = 0x71; + const unsigned long DOM_VK_F3 = 0x72; + const unsigned long DOM_VK_F4 = 0x73; + const unsigned long DOM_VK_F5 = 0x74; + const unsigned long DOM_VK_F6 = 0x75; + const unsigned long DOM_VK_F7 = 0x76; + const unsigned long DOM_VK_F8 = 0x77; + const unsigned long DOM_VK_F9 = 0x78; + const unsigned long DOM_VK_F10 = 0x79; + const unsigned long DOM_VK_F11 = 0x7A; + const unsigned long DOM_VK_F12 = 0x7B; + const unsigned long DOM_VK_F13 = 0x7C; + const unsigned long DOM_VK_F14 = 0x7D; + const unsigned long DOM_VK_F15 = 0x7E; + const unsigned long DOM_VK_F16 = 0x7F; + const unsigned long DOM_VK_F17 = 0x80; + const unsigned long DOM_VK_F18 = 0x81; + const unsigned long DOM_VK_F19 = 0x82; + const unsigned long DOM_VK_F20 = 0x83; + const unsigned long DOM_VK_F21 = 0x84; + const unsigned long DOM_VK_F22 = 0x85; + const unsigned long DOM_VK_F23 = 0x86; + const unsigned long DOM_VK_F24 = 0x87; + + const unsigned long DOM_VK_NUM_LOCK = 0x90; + const unsigned long DOM_VK_SCROLL_LOCK = 0x91; + + // OEM specific virtual keyCode of Windows should pass through DOM keyCode + // for compatibility with the other web browsers on Windows. + const unsigned long DOM_VK_WIN_OEM_FJ_JISHO = 0x92; + const unsigned long DOM_VK_WIN_OEM_FJ_MASSHOU = 0x93; + const unsigned long DOM_VK_WIN_OEM_FJ_TOUROKU = 0x94; + const unsigned long DOM_VK_WIN_OEM_FJ_LOYA = 0x95; + const unsigned long DOM_VK_WIN_OEM_FJ_ROYA = 0x96; + + const unsigned long DOM_VK_CIRCUMFLEX = 0xA0; + const unsigned long DOM_VK_EXCLAMATION = 0xA1; + const unsigned long DOM_VK_DOUBLE_QUOTE = 0xA2; + const unsigned long DOM_VK_HASH = 0xA3; + const unsigned long DOM_VK_DOLLAR = 0xA4; + const unsigned long DOM_VK_PERCENT = 0xA5; + const unsigned long DOM_VK_AMPERSAND = 0xA6; + const unsigned long DOM_VK_UNDERSCORE = 0xA7; + const unsigned long DOM_VK_OPEN_PAREN = 0xA8; + const unsigned long DOM_VK_CLOSE_PAREN = 0xA9; + const unsigned long DOM_VK_ASTERISK = 0xAA; + const unsigned long DOM_VK_PLUS = 0xAB; + const unsigned long DOM_VK_PIPE = 0xAC; + const unsigned long DOM_VK_HYPHEN_MINUS = 0xAD; + + const unsigned long DOM_VK_OPEN_CURLY_BRACKET = 0xAE; + const unsigned long DOM_VK_CLOSE_CURLY_BRACKET = 0xAF; + + const unsigned long DOM_VK_TILDE = 0xB0; + + const unsigned long DOM_VK_VOLUME_MUTE = 0xB5; + const unsigned long DOM_VK_VOLUME_DOWN = 0xB6; + const unsigned long DOM_VK_VOLUME_UP = 0xB7; + + const unsigned long DOM_VK_COMMA = 0xBC; + const unsigned long DOM_VK_PERIOD = 0xBE; + const unsigned long DOM_VK_SLASH = 0xBF; + const unsigned long DOM_VK_BACK_QUOTE = 0xC0; + const unsigned long DOM_VK_OPEN_BRACKET = 0xDB; // square bracket + const unsigned long DOM_VK_BACK_SLASH = 0xDC; + const unsigned long DOM_VK_CLOSE_BRACKET = 0xDD; // square bracket + const unsigned long DOM_VK_QUOTE = 0xDE; // Apostrophe + + const unsigned long DOM_VK_META = 0xE0; + const unsigned long DOM_VK_ALTGR = 0xE1; + + // OEM specific virtual keyCode of Windows should pass through DOM keyCode + // for compatibility with the other web browsers on Windows. + const unsigned long DOM_VK_WIN_ICO_HELP = 0xE3; + const unsigned long DOM_VK_WIN_ICO_00 = 0xE4; + const unsigned long DOM_VK_WIN_ICO_CLEAR = 0xE6; + const unsigned long DOM_VK_WIN_OEM_RESET = 0xE9; + const unsigned long DOM_VK_WIN_OEM_JUMP = 0xEA; + const unsigned long DOM_VK_WIN_OEM_PA1 = 0xEB; + const unsigned long DOM_VK_WIN_OEM_PA2 = 0xEC; + const unsigned long DOM_VK_WIN_OEM_PA3 = 0xED; + const unsigned long DOM_VK_WIN_OEM_WSCTRL = 0xEE; + const unsigned long DOM_VK_WIN_OEM_CUSEL = 0xEF; + const unsigned long DOM_VK_WIN_OEM_ATTN = 0xF0; + const unsigned long DOM_VK_WIN_OEM_FINISH = 0xF1; + const unsigned long DOM_VK_WIN_OEM_COPY = 0xF2; + const unsigned long DOM_VK_WIN_OEM_AUTO = 0xF3; + const unsigned long DOM_VK_WIN_OEM_ENLW = 0xF4; + const unsigned long DOM_VK_WIN_OEM_BACKTAB = 0xF5; + + // Following keys are not used on most keyboards. However, for compatibility + // with other browsers on Windows, we should define them. + const unsigned long DOM_VK_ATTN = 0xF6; + const unsigned long DOM_VK_CRSEL = 0xF7; + const unsigned long DOM_VK_EXSEL = 0xF8; + const unsigned long DOM_VK_EREOF = 0xF9; + const unsigned long DOM_VK_PLAY = 0xFA; + const unsigned long DOM_VK_ZOOM = 0xFB; + const unsigned long DOM_VK_PA1 = 0xFD; + + // OEM specific virtual keyCode of Windows should pass through DOM keyCode + // for compatibility with the other web browsers on Windows. + const unsigned long DOM_VK_WIN_OEM_CLEAR = 0xFE; + + void initKeyEvent(DOMString type, + boolean canBubble, + boolean cancelable, + Window? view, + boolean ctrlKey, + boolean altKey, + boolean shiftKey, + boolean metaKey, + unsigned long keyCode, + unsigned long charCode); +}; diff --git a/dom/webidl/KeyIdsInitData.webidl b/dom/webidl/KeyIdsInitData.webidl new file mode 100644 index 0000000000..108a5572e8 --- /dev/null +++ b/dom/webidl/KeyIdsInitData.webidl @@ -0,0 +1,11 @@ +/* -*- 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/. + */ + +// "KeyIds" EME init data format definition/parser, as defined by +// https://w3c.github.io/encrypted-media/format-registry/initdata/keyids.html +dictionary KeyIdsInitData { + required sequence<DOMString> kids; +}; diff --git a/dom/webidl/KeyboardEvent.webidl b/dom/webidl/KeyboardEvent.webidl new file mode 100644 index 0000000000..f6b7b33c55 --- /dev/null +++ b/dom/webidl/KeyboardEvent.webidl @@ -0,0 +1,54 @@ +/* -*- 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/. + */ + +[Constructor(DOMString typeArg, optional KeyboardEventInit keyboardEventInitDict)] +interface KeyboardEvent : UIEvent +{ + readonly attribute unsigned long charCode; + readonly attribute unsigned long keyCode; + + readonly attribute boolean altKey; + readonly attribute boolean ctrlKey; + readonly attribute boolean shiftKey; + readonly attribute boolean metaKey; + + boolean getModifierState(DOMString key); + + const unsigned long DOM_KEY_LOCATION_STANDARD = 0x00; + const unsigned long DOM_KEY_LOCATION_LEFT = 0x01; + const unsigned long DOM_KEY_LOCATION_RIGHT = 0x02; + const unsigned long DOM_KEY_LOCATION_NUMPAD = 0x03; + + readonly attribute unsigned long location; + readonly attribute boolean repeat; + readonly attribute boolean isComposing; + + readonly attribute DOMString key; + [Pref="dom.keyboardevent.code.enabled"] + readonly attribute DOMString code; + + // This returns the initialized dictionary for generating a + // same-type keyboard event + [Cached, ChromeOnly, Constant] + readonly attribute KeyboardEventInit initDict; +}; + +dictionary KeyboardEventInit : EventModifierInit +{ + DOMString key = ""; + DOMString code = ""; + unsigned long location = 0; + boolean repeat = false; + boolean isComposing = false; + + // legacy attributes + unsigned long charCode = 0; + unsigned long keyCode = 0; + unsigned long which = 0; +}; + +// Mozilla extensions +KeyboardEvent implements KeyEvent; diff --git a/dom/webidl/KeyframeAnimationOptions.webidl b/dom/webidl/KeyframeAnimationOptions.webidl new file mode 100644 index 0000000000..047f46ed1a --- /dev/null +++ b/dom/webidl/KeyframeAnimationOptions.webidl @@ -0,0 +1,14 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://dev.w3.org/fxtf/web-animations/#the-animatable-interface + * + * Copyright © 2014 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +// This typedef is off in its own file, because of bug 995352. +typedef (unrestricted double or KeyframeAnimationOptions) UnrestrictedDoubleOrKeyframeAnimationOptions; diff --git a/dom/webidl/KeyframeEffect.webidl b/dom/webidl/KeyframeEffect.webidl new file mode 100644 index 0000000000..c5e790b333 --- /dev/null +++ b/dom/webidl/KeyframeEffect.webidl @@ -0,0 +1,78 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * https://w3c.github.io/web-animations/#the-keyframeeffect-interfaces + * + * Copyright © 2015 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +enum IterationCompositeOperation { + "replace", + "accumulate" +}; + +dictionary KeyframeEffectOptions : AnimationEffectTimingProperties { + IterationCompositeOperation iterationComposite = "replace"; + CompositeOperation composite = "replace"; + DOMString spacing = "distribute"; +}; + +// Bug 1241783: For the constructor we use (Element or CSSPseudoElement)? for +// the first argument since we cannot convert a mixin into a union type +// automatically. +[Func="nsDocument::IsWebAnimationsEnabled", + Constructor ((Element or CSSPseudoElement)? target, + object? keyframes, + optional (unrestricted double or KeyframeEffectOptions) options), + Constructor (KeyframeEffectReadOnly source)] +interface KeyframeEffectReadOnly : AnimationEffectReadOnly { + // Bug 1241783: As with the constructor, we use (Element or CSSPseudoElement)? + // for the type of |target| instead of Animatable? + readonly attribute (Element or CSSPseudoElement)? target; + readonly attribute IterationCompositeOperation iterationComposite; + readonly attribute CompositeOperation composite; + readonly attribute DOMString spacing; + + // We use object instead of ComputedKeyframe so that we can put the + // property-value pairs on the object. + [Throws] sequence<object> getKeyframes(); +}; + +// Non-standard extensions +dictionary AnimationPropertyValueDetails { + required double offset; + required DOMString value; + DOMString easing; + required CompositeOperation composite; +}; + +dictionary AnimationPropertyDetails { + required DOMString property; + required boolean runningOnCompositor; + DOMString warning; + required sequence<AnimationPropertyValueDetails> values; +}; + +partial interface KeyframeEffectReadOnly { + [ChromeOnly, Throws] sequence<AnimationPropertyDetails> getProperties(); +}; + +[Func="nsDocument::IsWebAnimationsEnabled", + Constructor ((Element or CSSPseudoElement)? target, + object? keyframes, + optional (unrestricted double or KeyframeEffectOptions) options), + Constructor (KeyframeEffectReadOnly source)] +interface KeyframeEffect : KeyframeEffectReadOnly { + inherit attribute (Element or CSSPseudoElement)? target; + inherit attribute IterationCompositeOperation iterationComposite; + // Bug 1216844 - implement additive animation + // inherit attribute CompositeOperation composite; + [SetterThrows] + inherit attribute DOMString spacing; + [Throws] + void setKeyframes (object? keyframes); +}; diff --git a/dom/webidl/LegacyQueryInterface.webidl b/dom/webidl/LegacyQueryInterface.webidl new file mode 100644 index 0000000000..96048b03ca --- /dev/null +++ b/dom/webidl/LegacyQueryInterface.webidl @@ -0,0 +1,90 @@ +/* -*- 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/. + */ + +interface nsISupports; +interface IID; + +[NoInterfaceObject, + // Need Exposed here, because this is a mixin onto things like Event + // that are exposed in workers. + Exposed=(Window,Worker,System)] +interface LegacyQueryInterface { + // Legacy QueryInterface, only exposed to chrome or XBL code on the + // main thread. + [Exposed=Window] + nsISupports queryInterface(IID iid); +}; + +Attr implements LegacyQueryInterface; +BarProp implements LegacyQueryInterface; +BoxObject implements LegacyQueryInterface; +CaretPosition implements LegacyQueryInterface; +Comment implements LegacyQueryInterface; +Crypto implements LegacyQueryInterface; +CSSPrimitiveValue implements LegacyQueryInterface; +CSSStyleDeclaration implements LegacyQueryInterface; +CSSValueList implements LegacyQueryInterface; +DOMImplementation implements LegacyQueryInterface; +DOMParser implements LegacyQueryInterface; +DOMStringMap implements LegacyQueryInterface; +DOMTokenList implements LegacyQueryInterface; +Document implements LegacyQueryInterface; +DocumentFragment implements LegacyQueryInterface; +DocumentType implements LegacyQueryInterface; +Element implements LegacyQueryInterface; +Event implements LegacyQueryInterface; +EventSource implements LegacyQueryInterface; +FileList implements LegacyQueryInterface; +FormData implements LegacyQueryInterface; +HTMLCollection implements LegacyQueryInterface; +History implements LegacyQueryInterface; +MimeTypeArray implements LegacyQueryInterface; +NamedNodeMap implements LegacyQueryInterface; +MutationObserver implements LegacyQueryInterface; +MutationRecord implements LegacyQueryInterface; +Navigator implements LegacyQueryInterface; +NodeIterator implements LegacyQueryInterface; +NodeList implements LegacyQueryInterface; +Notification implements LegacyQueryInterface; +OfflineResourceList implements LegacyQueryInterface; +PaintRequest implements LegacyQueryInterface; +PaintRequestList implements LegacyQueryInterface; +Performance implements LegacyQueryInterface; +Plugin implements LegacyQueryInterface; +PluginArray implements LegacyQueryInterface; +ProcessingInstruction implements LegacyQueryInterface; +Range implements LegacyQueryInterface; +Rect implements LegacyQueryInterface; +Selection implements LegacyQueryInterface; +SVGAnimatedEnumeration implements LegacyQueryInterface; +SVGAnimatedInteger implements LegacyQueryInterface; +SVGAnimatedNumber implements LegacyQueryInterface; +SVGAnimatedNumberList implements LegacyQueryInterface; +SVGAnimatedPreserveAspectRatio implements LegacyQueryInterface; +SVGAnimatedString implements LegacyQueryInterface; +SVGLengthList implements LegacyQueryInterface; +SVGNumberList implements LegacyQueryInterface; +SVGPathSegList implements LegacyQueryInterface; +SVGPoint implements LegacyQueryInterface; +SVGPointList implements LegacyQueryInterface; +SVGPreserveAspectRatio implements LegacyQueryInterface; +SVGRect implements LegacyQueryInterface; +SVGStringList implements LegacyQueryInterface; +SVGTransformList implements LegacyQueryInterface; +Screen implements LegacyQueryInterface; +StyleSheet implements LegacyQueryInterface; +Text implements LegacyQueryInterface; +Touch implements LegacyQueryInterface; +TouchList implements LegacyQueryInterface; +TreeColumns implements LegacyQueryInterface; +TreeWalker implements LegacyQueryInterface; +ValidityState implements LegacyQueryInterface; +WebSocket implements LegacyQueryInterface; +Window implements LegacyQueryInterface; +XMLHttpRequest implements LegacyQueryInterface; +XMLHttpRequestUpload implements LegacyQueryInterface; +XMLSerializer implements LegacyQueryInterface; +XPathEvaluator implements LegacyQueryInterface; diff --git a/dom/webidl/LinkStyle.webidl b/dom/webidl/LinkStyle.webidl new file mode 100644 index 0000000000..db0bc031ad --- /dev/null +++ b/dom/webidl/LinkStyle.webidl @@ -0,0 +1,14 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://dev.w3.org/csswg/cssom/#the-linkstyle-interface + */ + +[NoInterfaceObject] +interface LinkStyle { + readonly attribute StyleSheet? sheet; +}; + diff --git a/dom/webidl/ListBoxObject.webidl b/dom/webidl/ListBoxObject.webidl new file mode 100644 index 0000000000..5e11e923f9 --- /dev/null +++ b/dom/webidl/ListBoxObject.webidl @@ -0,0 +1,21 @@ + +/* -*- 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/. + */ + +[NoInterfaceObject] +interface ListBoxObject : BoxObject { + + long getRowCount(); + long getNumberOfVisibleRows(); + long getIndexOfFirstVisibleRow(); + + void ensureIndexIsVisible(long rowIndex); + void scrollToIndex(long rowIndex); + void scrollByLines(long numLines); + + Element? getItemAtIndex(long index); + long getIndexOfItem(Element item); +}; diff --git a/dom/webidl/LocalMediaStream.webidl b/dom/webidl/LocalMediaStream.webidl new file mode 100644 index 0000000000..1ef7474a26 --- /dev/null +++ b/dom/webidl/LocalMediaStream.webidl @@ -0,0 +1,15 @@ +/* -*- 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/. + * + * The origins of this IDL file are + * http://dev.w3.org/2011/webrtc/editor/getusermedia.html + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface LocalMediaStream : MediaStream { + void stop(); +}; diff --git a/dom/webidl/Location.webidl b/dom/webidl/Location.webidl new file mode 100644 index 0000000000..991da99a91 --- /dev/null +++ b/dom/webidl/Location.webidl @@ -0,0 +1,53 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.whatwg.org/specs/web-apps/current-work/#the-location-interface + * + * © Copyright 2004-2011 Apple Computer, Inc., Mozilla Foundation, and + * Opera Software ASA. You are granted a license to use, reproduce + * and create derivative works of this document. + */ + +[Unforgeable, NonOrdinaryGetPrototypeOf] +interface Location { + // Bug 824857: no support for stringifier attributes yet. + // stringifier attribute USVString href; + + // Bug 824857 should remove this. + [Throws, NeedsSubjectPrincipal] + stringifier; + + [Throws, CrossOriginWritable, NeedsSubjectPrincipal] + attribute USVString href; + [Throws, NeedsSubjectPrincipal] + readonly attribute USVString origin; + [Throws, NeedsSubjectPrincipal] + attribute USVString protocol; + [Throws, NeedsSubjectPrincipal] + attribute USVString host; + [Throws, NeedsSubjectPrincipal] + attribute USVString hostname; + [Throws, NeedsSubjectPrincipal] + attribute USVString port; + [Throws, NeedsSubjectPrincipal] + attribute USVString pathname; + [Throws, NeedsSubjectPrincipal] + attribute USVString search; + [Throws, NeedsSubjectPrincipal] + attribute USVString hash; + + [Throws, UnsafeInPrerendering, NeedsSubjectPrincipal] + void assign(USVString url); + + [Throws, CrossOriginCallable, UnsafeInPrerendering, NeedsSubjectPrincipal] + void replace(USVString url); + + // XXXbz there is no forceget argument in the spec! See bug 1037721. + [Throws, UnsafeInPrerendering, NeedsSubjectPrincipal] + void reload(optional boolean forceget = false); + + // Bug 1085214 [SameObject] readonly attribute USVString[] ancestorOrigins; +}; diff --git a/dom/webidl/MediaDeviceInfo.webidl b/dom/webidl/MediaDeviceInfo.webidl new file mode 100644 index 0000000000..b42519ad13 --- /dev/null +++ b/dom/webidl/MediaDeviceInfo.webidl @@ -0,0 +1,24 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://dev.w3.org/2011/webrtc/editor/getusermedia.html + */ + +enum MediaDeviceKind { + "audioinput", + "audiooutput", + "videoinput" +}; + +[Func="Navigator::HasUserMediaSupport"] +interface MediaDeviceInfo { + readonly attribute DOMString deviceId; + readonly attribute MediaDeviceKind kind; + readonly attribute DOMString label; + readonly attribute DOMString groupId; + + jsonifier; +}; diff --git a/dom/webidl/MediaDevices.webidl b/dom/webidl/MediaDevices.webidl new file mode 100644 index 0000000000..e8af323251 --- /dev/null +++ b/dom/webidl/MediaDevices.webidl @@ -0,0 +1,24 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://dev.w3.org/2011/webrtc/editor/getusermedia.html + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +[Func="Navigator::HasUserMediaSupport"] +interface MediaDevices : EventTarget { + [Pref="media.ondevicechange.enabled"] + attribute EventHandler ondevicechange; + MediaTrackSupportedConstraints getSupportedConstraints(); + + [Throws] + Promise<sequence<MediaDeviceInfo>> enumerateDevices(); + + [Throws] + Promise<MediaStream> getUserMedia(optional MediaStreamConstraints constraints); +}; diff --git a/dom/webidl/MediaElementAudioSourceNode.webidl b/dom/webidl/MediaElementAudioSourceNode.webidl new file mode 100644 index 0000000000..f1ac174735 --- /dev/null +++ b/dom/webidl/MediaElementAudioSourceNode.webidl @@ -0,0 +1,20 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * https://webaudio.github.io/web-audio-api/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +[Pref="dom.webaudio.enabled"] +interface MediaElementAudioSourceNode : AudioNode { + +}; + +// Mozilla extensions +MediaElementAudioSourceNode implements AudioNodePassThrough; + diff --git a/dom/webidl/MediaEncryptedEvent.webidl b/dom/webidl/MediaEncryptedEvent.webidl new file mode 100644 index 0000000000..28d7a17b79 --- /dev/null +++ b/dom/webidl/MediaEncryptedEvent.webidl @@ -0,0 +1,23 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * https://dvcs.w3.org/hg/html-media/raw-file/default/encrypted-media/encrypted-media.html + * + * Copyright © 2014 W3C® (MIT, ERCIM, Keio, Beihang), All Rights Reserved. + * W3C liability, trademark and document use rules apply. + */ + +[Pref="media.eme.apiVisible", Constructor(DOMString type, optional MediaKeyNeededEventInit eventInitDict)] +interface MediaEncryptedEvent : Event { + readonly attribute DOMString initDataType; + [Throws] + readonly attribute ArrayBuffer? initData; +}; + +dictionary MediaKeyNeededEventInit : EventInit { + DOMString initDataType = ""; + ArrayBuffer? initData = null; +}; diff --git a/dom/webidl/MediaError.webidl b/dom/webidl/MediaError.webidl new file mode 100644 index 0000000000..bd1ed4e3f6 --- /dev/null +++ b/dom/webidl/MediaError.webidl @@ -0,0 +1,24 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.whatwg.org/html/#mediaerror + * + * © Copyright 2004-2011 Apple Computer, Inc., Mozilla Foundation, and + * Opera Software ASA. You are granted a license to use, reproduce + * and create derivative works of this document. + */ + +interface MediaError { + // Keep these constants in sync with the ones defined in HTMLMediaElement.h + const unsigned short MEDIA_ERR_ABORTED = 1; + const unsigned short MEDIA_ERR_NETWORK = 2; + const unsigned short MEDIA_ERR_DECODE = 3; + const unsigned short MEDIA_ERR_SRC_NOT_SUPPORTED = 4; + + [Constant] + readonly attribute unsigned short code; + readonly attribute DOMString message; +}; diff --git a/dom/webidl/MediaKeyError.webidl b/dom/webidl/MediaKeyError.webidl new file mode 100644 index 0000000000..d0dde20320 --- /dev/null +++ b/dom/webidl/MediaKeyError.webidl @@ -0,0 +1,19 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * https://dvcs.w3.org/hg/html-media/raw-file/default/encrypted-media/encrypted-media.html + * + * Copyright © 2014 W3C® (MIT, ERCIM, Keio, Beihang), All Rights Reserved. + * W3C liability, trademark and document use rules apply. + */ + +// According to the spec, "The future of error events and MediaKeyError +// is uncertain." +// https://www.w3.org/Bugs/Public/show_bug.cgi?id=21798 +[Pref="media.eme.apiVisible"] +interface MediaKeyError : Event { + readonly attribute unsigned long systemCode; +}; diff --git a/dom/webidl/MediaKeyMessageEvent.webidl b/dom/webidl/MediaKeyMessageEvent.webidl new file mode 100644 index 0000000000..057924bb73 --- /dev/null +++ b/dom/webidl/MediaKeyMessageEvent.webidl @@ -0,0 +1,30 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * https://dvcs.w3.org/hg/html-media/raw-file/default/encrypted-media/encrypted-media.html + * + * Copyright © 2014 W3C® (MIT, ERCIM, Keio, Beihang), All Rights Reserved. + * W3C liability, trademark and document use rules apply. + */ + +enum MediaKeyMessageType { + "license-request", + "license-renewal", + "license-release", + "individualization-request" +}; + +[Pref="media.eme.apiVisible", Constructor(DOMString type, MediaKeyMessageEventInit eventInitDict)] +interface MediaKeyMessageEvent : Event { + readonly attribute MediaKeyMessageType messageType; + [Throws] + readonly attribute ArrayBuffer message; +}; + +dictionary MediaKeyMessageEventInit : EventInit { + required MediaKeyMessageType messageType; + required ArrayBuffer message; +}; diff --git a/dom/webidl/MediaKeySession.webidl b/dom/webidl/MediaKeySession.webidl new file mode 100644 index 0000000000..8ca5745c44 --- /dev/null +++ b/dom/webidl/MediaKeySession.webidl @@ -0,0 +1,47 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * https://dvcs.w3.org/hg/html-media/raw-file/default/encrypted-media/encrypted-media.html + * + * Copyright © 2014 W3C® (MIT, ERCIM, Keio, Beihang), All Rights Reserved. + * W3C liability, trademark and document use rules apply. + */ + +[Pref="media.eme.apiVisible"] +interface MediaKeySession : EventTarget { + // error state + readonly attribute MediaKeyError? error; + + // session properties + readonly attribute DOMString keySystem; + readonly attribute DOMString sessionId; + + readonly attribute unrestricted double expiration; + + readonly attribute Promise<void> closed; + + readonly attribute MediaKeyStatusMap keyStatuses; + + attribute EventHandler onkeystatuseschange; + + attribute EventHandler onmessage; + + [NewObject] + Promise<void> generateRequest(DOMString initDataType, BufferSource initData); + + [NewObject] + Promise<boolean> load(DOMString sessionId); + + // session operations + [NewObject] + Promise<void> update(BufferSource response); + + [NewObject] + Promise<void> close(); + + [NewObject] + Promise<void> remove(); +}; diff --git a/dom/webidl/MediaKeyStatusMap.webidl b/dom/webidl/MediaKeyStatusMap.webidl new file mode 100644 index 0000000000..1f34b5dc7c --- /dev/null +++ b/dom/webidl/MediaKeyStatusMap.webidl @@ -0,0 +1,30 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * https://dvcs.w3.org/hg/html-media/raw-file/default/encrypted-media/encrypted-media.html + * + * Copyright © 2014 W3C® (MIT, ERCIM, Keio, Beihang), All Rights Reserved. + * W3C liability, trademark and document use rules apply. + */ + +enum MediaKeyStatus { + "usable", + "expired", + "released", + "output-restricted", + "output-downscaled", + "status-pending", + "internal-error" +}; + +[Pref="media.eme.apiVisible"] +interface MediaKeyStatusMap { + iterable<ArrayBuffer,MediaKeyStatus>; + readonly attribute unsigned long size; + boolean has (BufferSource keyId); + [Throws] + any get (BufferSource keyId); +}; diff --git a/dom/webidl/MediaKeySystemAccess.webidl b/dom/webidl/MediaKeySystemAccess.webidl new file mode 100644 index 0000000000..01552e4490 --- /dev/null +++ b/dom/webidl/MediaKeySystemAccess.webidl @@ -0,0 +1,41 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * https://dvcs.w3.org/hg/html-media/raw-file/default/encrypted-media/encrypted-media.html + * + * Copyright © 2014 W3C® (MIT, ERCIM, Keio, Beihang), All Rights Reserved. + * W3C liability, trademark and document use rules apply. + */ + +enum MediaKeysRequirement { + "required", + "optional", + "not-allowed" +}; + +dictionary MediaKeySystemMediaCapability { + DOMString contentType = ""; + DOMString robustness = ""; +}; + +dictionary MediaKeySystemConfiguration { + DOMString label = ""; + sequence<DOMString> initDataTypes = []; + sequence<MediaKeySystemMediaCapability> audioCapabilities = []; + sequence<MediaKeySystemMediaCapability> videoCapabilities = []; + MediaKeysRequirement distinctiveIdentifier = "optional"; + MediaKeysRequirement persistentState = "optional"; + sequence<DOMString> sessionTypes; +}; + +[Pref="media.eme.apiVisible"] +interface MediaKeySystemAccess { + readonly attribute DOMString keySystem; + [NewObject] + MediaKeySystemConfiguration getConfiguration(); + [NewObject] + Promise<MediaKeys> createMediaKeys(); +}; diff --git a/dom/webidl/MediaKeys.webidl b/dom/webidl/MediaKeys.webidl new file mode 100644 index 0000000000..cb84cdab6d --- /dev/null +++ b/dom/webidl/MediaKeys.webidl @@ -0,0 +1,30 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * https://dvcs.w3.org/hg/html-media/raw-file/default/encrypted-media/encrypted-media.html + * + * Copyright © 2014 W3C® (MIT, ERCIM, Keio, Beihang), All Rights Reserved. + * W3C liability, trademark and document use rules apply. + */ + +// Note: "persistent-usage-record" session type is unsupported yet, as +// it's marked as "at risk" in the spec, and Chrome doesn't support it. +enum MediaKeySessionType { + "temporary", + "persistent-license", + // persistent-usage-record, +}; + +[Pref="media.eme.apiVisible"] +interface MediaKeys { + readonly attribute DOMString keySystem; + + [NewObject, Throws] + MediaKeySession createSession(optional MediaKeySessionType sessionType = "temporary"); + + [NewObject] + Promise<void> setServerCertificate((ArrayBufferView or ArrayBuffer) serverCertificate); +}; diff --git a/dom/webidl/MediaKeysRequestStatus.webidl b/dom/webidl/MediaKeysRequestStatus.webidl new file mode 100644 index 0000000000..737372f664 --- /dev/null +++ b/dom/webidl/MediaKeysRequestStatus.webidl @@ -0,0 +1,23 @@ +/* -*- 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/. + */ + +enum MediaKeySystemStatus { + "available", + "api-disabled", + "cdm-disabled", + "cdm-not-supported", + "cdm-not-installed", + "cdm-created", +}; + +/* Note: This dictionary and enum is only used by Gecko to convey messages + * to chrome JS code. It is not exposed to the web. + */ + +dictionary RequestMediaKeySystemAccessNotification { + required DOMString keySystem; + required MediaKeySystemStatus status; +}; diff --git a/dom/webidl/MediaList.webidl b/dom/webidl/MediaList.webidl new file mode 100644 index 0000000000..44e733190c --- /dev/null +++ b/dom/webidl/MediaList.webidl @@ -0,0 +1,19 @@ +/* -*- 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/. */ + +// http://dev.w3.org/csswg/cssom/#the-medialist-interface + +[ArrayClass] +interface MediaList { + [TreatNullAs=EmptyString] + attribute DOMString mediaText; + + readonly attribute unsigned long length; + getter DOMString? item(unsigned long index); + [Throws] + void deleteMedium(DOMString oldMedium); + [Throws] + void appendMedium(DOMString newMedium); +}; diff --git a/dom/webidl/MediaQueryList.webidl b/dom/webidl/MediaQueryList.webidl new file mode 100644 index 0000000000..519ddb0e52 --- /dev/null +++ b/dom/webidl/MediaQueryList.webidl @@ -0,0 +1,20 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://dev.w3.org/csswg/cssom-view/#the-mediaquerylist-interface + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface MediaQueryList { + readonly attribute DOMString media; + readonly attribute boolean matches; + void addListener(MediaQueryListListener listener); + void removeListener(MediaQueryListListener listener); +}; + +callback MediaQueryListListener = void (MediaQueryList list); diff --git a/dom/webidl/MediaRecorder.webidl b/dom/webidl/MediaRecorder.webidl new file mode 100644 index 0000000000..65d1893e9e --- /dev/null +++ b/dom/webidl/MediaRecorder.webidl @@ -0,0 +1,59 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * https://dvcs.w3.org/hg/dap/raw-file/default/media-stream-capture/MediaRecorder.html + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +enum RecordingState { "inactive", "recording", "paused" }; + +[Constructor(MediaStream stream, optional MediaRecorderOptions options), + Constructor(AudioNode node, optional unsigned long output = 0, + optional MediaRecorderOptions options)] +interface MediaRecorder : EventTarget { + + readonly attribute MediaStream stream; + + readonly attribute RecordingState state; + + readonly attribute DOMString mimeType; + + attribute EventHandler ondataavailable; + + attribute EventHandler onerror; + + attribute EventHandler onstart; + + attribute EventHandler onstop; + + attribute EventHandler onwarning; + + [Throws] + void start(optional long timeSlice); + + [Throws] + void stop(); + + [Throws] + void pause(); + + [Throws] + void resume(); + + [Throws] + void requestData(); + + static boolean isTypeSupported(DOMString type); +}; + +dictionary MediaRecorderOptions { + DOMString mimeType = ""; // Default encoding mimeType. + unsigned long audioBitsPerSecond; + unsigned long videoBitsPerSecond; + unsigned long bitsPerSecond; +}; diff --git a/dom/webidl/MediaSource.webidl b/dom/webidl/MediaSource.webidl new file mode 100644 index 0000000000..63691e090d --- /dev/null +++ b/dom/webidl/MediaSource.webidl @@ -0,0 +1,47 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://dvcs.w3.org/hg/html-media/raw-file/default/media-source/media-source.html + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +enum MediaSourceReadyState { + "closed", + "open", + "ended" +}; + +enum MediaSourceEndOfStreamError { + "network", + "decode" +}; + +[Constructor, Func="mozilla::dom::MediaSource::Enabled"] +interface MediaSource : EventTarget { + readonly attribute SourceBufferList sourceBuffers; + readonly attribute SourceBufferList activeSourceBuffers; + readonly attribute MediaSourceReadyState readyState; + [SetterThrows] + attribute unrestricted double duration; + attribute EventHandler onsourceopen; + attribute EventHandler onsourceended; + attribute EventHandler onsourceclosed; + [NewObject, Throws] + SourceBuffer addSourceBuffer(DOMString type); + [Throws] + void removeSourceBuffer(SourceBuffer sourceBuffer); + [Throws] + void endOfStream(optional MediaSourceEndOfStreamError error); + [Throws] + void setLiveSeekableRange(double start, double end); + [Throws] + void clearLiveSeekableRange(); + static boolean isTypeSupported(DOMString type); + [ChromeOnly] + readonly attribute DOMString mozDebugReaderData; +}; diff --git a/dom/webidl/MediaStream.webidl b/dom/webidl/MediaStream.webidl new file mode 100644 index 0000000000..3d0347f8bb --- /dev/null +++ b/dom/webidl/MediaStream.webidl @@ -0,0 +1,43 @@ +/* -*- 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/. + * + * The origins of this IDL file are + * http://dev.w3.org/2011/webrtc/editor/getusermedia.html + * + * Copyright � 2012 W3C� (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +// These dictionaries need to be in a separate file from their +// MediaTrackConstraints* counterparts due to a webidl compiler limitation. + +dictionary MediaStreamConstraints { + (boolean or MediaTrackConstraints) audio = false; + (boolean or MediaTrackConstraints) video = false; + boolean picture = false; // Mozilla legacy + boolean fake; // For testing purpose. Generates frames of solid + // colors if video is enabled, and sound of 1Khz sine + // wave if audio is enabled. + DOMString? peerIdentity = null; +}; + +[Exposed=Window, + Constructor, + Constructor (MediaStream stream), + Constructor (sequence<MediaStreamTrack> tracks)] +interface MediaStream : EventTarget { + readonly attribute DOMString id; + sequence<AudioStreamTrack> getAudioTracks (); + sequence<VideoStreamTrack> getVideoTracks (); + sequence<MediaStreamTrack> getTracks (); + MediaStreamTrack? getTrackById (DOMString trackId); + void addTrack (MediaStreamTrack track); + void removeTrack (MediaStreamTrack track); + MediaStream clone (); + readonly attribute boolean active; + attribute EventHandler onaddtrack; + // attribute EventHandler onremovetrack; + readonly attribute double currentTime; +}; diff --git a/dom/webidl/MediaStreamAudioDestinationNode.webidl b/dom/webidl/MediaStreamAudioDestinationNode.webidl new file mode 100644 index 0000000000..aafff964ee --- /dev/null +++ b/dom/webidl/MediaStreamAudioDestinationNode.webidl @@ -0,0 +1,18 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * https://webaudio.github.io/web-audio-api/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +[Pref="dom.webaudio.enabled"] +interface MediaStreamAudioDestinationNode : AudioNode { + + readonly attribute MediaStream stream; + +}; diff --git a/dom/webidl/MediaStreamAudioSourceNode.webidl b/dom/webidl/MediaStreamAudioSourceNode.webidl new file mode 100644 index 0000000000..e717ef2543 --- /dev/null +++ b/dom/webidl/MediaStreamAudioSourceNode.webidl @@ -0,0 +1,20 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * https://webaudio.github.io/web-audio-api/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +[Pref="dom.webaudio.enabled"] +interface MediaStreamAudioSourceNode : AudioNode { + +}; + +// Mozilla extensions +MediaStreamAudioSourceNode implements AudioNodePassThrough; + diff --git a/dom/webidl/MediaStreamError.webidl b/dom/webidl/MediaStreamError.webidl new file mode 100644 index 0000000000..54c8f5792b --- /dev/null +++ b/dom/webidl/MediaStreamError.webidl @@ -0,0 +1,21 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://w3c.github.io/mediacapture-main/getusermedia.html#idl-def-MediaStreamError + */ + +// The future of MediaStreamError is uncertain. +// https://www.w3.org/Bugs/Public/show_bug.cgi?id=26776 + +// TODO: This is an 'exception', not an interface, by virtue of needing to be +// passed as a promise rejection-reason. Revisit if DOMException grows a customArg + +[ExceptionClass, NoInterfaceObject] +interface MediaStreamError { + readonly attribute DOMString name; + readonly attribute DOMString? message; + readonly attribute DOMString? constraint; +}; diff --git a/dom/webidl/MediaStreamEvent.webidl b/dom/webidl/MediaStreamEvent.webidl new file mode 100644 index 0000000000..56bac3a866 --- /dev/null +++ b/dom/webidl/MediaStreamEvent.webidl @@ -0,0 +1,18 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://dev.w3.org/2011/webrtc/editor/webrtc.html#mediastreamevent + */ + +dictionary MediaStreamEventInit : EventInit { + MediaStream? stream = null; +}; + +[Pref="media.peerconnection.enabled", + Constructor(DOMString type, optional MediaStreamEventInit eventInitDict)] +interface MediaStreamEvent : Event { + readonly attribute MediaStream? stream; +}; diff --git a/dom/webidl/MediaStreamList.webidl b/dom/webidl/MediaStreamList.webidl new file mode 100644 index 0000000000..b72e9d2129 --- /dev/null +++ b/dom/webidl/MediaStreamList.webidl @@ -0,0 +1,11 @@ +/* -*- 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/. + */ + +[ChromeOnly] +interface MediaStreamList { + getter MediaStream? (unsigned long index); + readonly attribute unsigned long length; +}; diff --git a/dom/webidl/MediaStreamTrack.webidl b/dom/webidl/MediaStreamTrack.webidl new file mode 100644 index 0000000000..7831beecba --- /dev/null +++ b/dom/webidl/MediaStreamTrack.webidl @@ -0,0 +1,93 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://dev.w3.org/2011/webrtc/editor/getusermedia.html + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +// These two enums are in the spec even though they're not used directly in the +// API due to https://www.w3.org/Bugs/Public/show_bug.cgi?id=19936 +// Their binding code is used in the implementation. + +enum VideoFacingModeEnum { + "user", + "environment", + "left", + "right" +}; + +enum MediaSourceEnum { + "camera", + "screen", + "application", + "window", + "browser", + "microphone", + "audioCapture", + "other" + // If values are added, adjust n_values in Histograms.json (2 places) +}; + +typedef (long or ConstrainLongRange) ConstrainLong; +typedef (double or ConstrainDoubleRange) ConstrainDouble; +typedef (boolean or ConstrainBooleanParameters) ConstrainBoolean; +typedef (DOMString or sequence<DOMString> or ConstrainDOMStringParameters) ConstrainDOMString; + +// Note: When adding new constraints, remember to update the SelectSettings() +// function in MediaManager.cpp to make OverconstrainedError's constraint work! + +dictionary MediaTrackConstraintSet { + ConstrainLong width; + ConstrainLong height; + ConstrainDouble frameRate; + ConstrainDOMString facingMode; + DOMString mediaSource = "camera"; + long long browserWindow; + boolean scrollWithPage; + ConstrainDOMString deviceId; + ConstrainLong viewportOffsetX; + ConstrainLong viewportOffsetY; + ConstrainLong viewportWidth; + ConstrainLong viewportHeight; + ConstrainBoolean echoCancellation; + ConstrainBoolean mozNoiseSuppression; + ConstrainBoolean mozAutoGainControl; +}; + +dictionary MediaTrackConstraints : MediaTrackConstraintSet { + sequence<MediaTrackConstraintSet> advanced; +}; + +enum MediaStreamTrackState { + "live", + "ended" +}; + +[Exposed=Window] +interface MediaStreamTrack : EventTarget { + readonly attribute DOMString kind; + readonly attribute DOMString id; + readonly attribute DOMString label; + attribute boolean enabled; +// readonly attribute boolean muted; +// attribute EventHandler onmute; +// attribute EventHandler onunmute; +// readonly attribute boolean _readonly; +// readonly attribute boolean remote; + readonly attribute MediaStreamTrackState readyState; + attribute EventHandler onended; + MediaStreamTrack clone (); + void stop (); +// MediaTrackCapabilities getCapabilities (); + MediaTrackConstraints getConstraints (); + MediaTrackSettings getSettings (); + + [Throws] + Promise<void> applyConstraints (optional MediaTrackConstraints constraints); +// attribute EventHandler onoverconstrained; +}; diff --git a/dom/webidl/MediaStreamTrackEvent.webidl b/dom/webidl/MediaStreamTrackEvent.webidl new file mode 100644 index 0000000000..538adf2f93 --- /dev/null +++ b/dom/webidl/MediaStreamTrackEvent.webidl @@ -0,0 +1,19 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://dev.w3.org/2011/webrtc/editor/webrtc.html#mediastreamevent + */ + +dictionary MediaStreamTrackEventInit : EventInit { + required MediaStreamTrack track; +}; + +[Exposed=Window, + Constructor (DOMString type, MediaStreamTrackEventInit eventInitDict)] +interface MediaStreamTrackEvent : Event { + [SameObject] + readonly attribute MediaStreamTrack track; +}; diff --git a/dom/webidl/MediaTrackConstraintSet.webidl b/dom/webidl/MediaTrackConstraintSet.webidl new file mode 100644 index 0000000000..63bc6bac5d --- /dev/null +++ b/dom/webidl/MediaTrackConstraintSet.webidl @@ -0,0 +1,38 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://dev.w3.org/2011/webrtc/editor/getusermedia.html + */ + +// These dictionaries need to be in a separate file from their use in unions +// in MediaSreamTrack.webidl due to a webidl compiler limitation: +// +// TypeError: Dictionary contains a union that contains a dictionary in the same +// WebIDL file. This won't compile. Move the inner dictionary to a different file. + +dictionary ConstrainLongRange { + long min; + long max; + long exact; + long ideal; +}; + +dictionary ConstrainDoubleRange { + double min; + double max; + double exact; + double ideal; +}; + +dictionary ConstrainBooleanParameters { + boolean exact; + boolean ideal; +}; + +dictionary ConstrainDOMStringParameters { + (DOMString or sequence<DOMString>) exact; + (DOMString or sequence<DOMString>) ideal; +}; diff --git a/dom/webidl/MediaTrackSettings.webidl b/dom/webidl/MediaTrackSettings.webidl new file mode 100644 index 0000000000..909b9f60b3 --- /dev/null +++ b/dom/webidl/MediaTrackSettings.webidl @@ -0,0 +1,36 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://w3c.github.io/mediacapture-main/getusermedia.html + */ + +dictionary MediaTrackSettings { + long width; + long height; + double frameRate; + DOMString facingMode; + DOMString deviceId; + boolean echoCancellation; + boolean mozNoiseSuppression; + boolean mozAutoGainControl; + + // Mozilla-specific extensions: + + // http://fluffy.github.io/w3c-screen-share/#screen-based-video-constraints + // OBE by http://w3c.github.io/mediacapture-screen-share + + DOMString mediaSource; + + // Experimental https://bugzilla.mozilla.org/show_bug.cgi?id=1131568#c3 + // https://bugzilla.mozilla.org/show_bug.cgi?id=1193075 + + long long browserWindow; + boolean scrollWithPage; + long viewportOffsetX; + long viewportOffsetY; + long viewportWidth; + long viewportHeight; +};
\ No newline at end of file diff --git a/dom/webidl/MediaTrackSupportedConstraints.webidl b/dom/webidl/MediaTrackSupportedConstraints.webidl new file mode 100644 index 0000000000..31616ada72 --- /dev/null +++ b/dom/webidl/MediaTrackSupportedConstraints.webidl @@ -0,0 +1,42 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://dev.w3.org/2011/webrtc/editor/getusermedia.html + */ + +dictionary MediaTrackSupportedConstraints { + boolean width = true; + boolean height = true; + boolean aspectRatio; // to be supported + boolean frameRate = true; + boolean facingMode = true; + boolean volume; // to be supported + boolean sampleRate; // to be supported + boolean sampleSize; // to be supported + boolean echoCancellation = true; + boolean mozNoiseSuppression = true; + boolean mozAutoGainControl = true; + boolean latency; // to be supported + boolean deviceId = true; + boolean groupId; // to be supported + + // Mozilla-specific extensions: + + // http://fluffy.github.io/w3c-screen-share/#screen-based-video-constraints + // OBE by http://w3c.github.io/mediacapture-screen-share + + boolean mediaSource = true; + + // Experimental https://bugzilla.mozilla.org/show_bug.cgi?id=1131568#c3 + // https://bugzilla.mozilla.org/show_bug.cgi?id=1193075 + + boolean browserWindow = true; + boolean scrollWithPage = true; + boolean viewportOffsetX = true; + boolean viewportOffsetY = true; + boolean viewportWidth = true; + boolean viewportHeight = true; +}; diff --git a/dom/webidl/MenuBoxObject.webidl b/dom/webidl/MenuBoxObject.webidl new file mode 100644 index 0000000000..449cadc596 --- /dev/null +++ b/dom/webidl/MenuBoxObject.webidl @@ -0,0 +1,19 @@ + +/* -*- 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/. + */ + +[Func="IsChromeOrXBL"] +interface MenuBoxObject : BoxObject { + + void openMenu(boolean openFlag); + + attribute Element? activeChild; + + boolean handleKeyPress(KeyboardEvent keyEvent); + + readonly attribute boolean openedWithKey; + +}; diff --git a/dom/webidl/MessageChannel.webidl b/dom/webidl/MessageChannel.webidl new file mode 100644 index 0000000000..41208147c4 --- /dev/null +++ b/dom/webidl/MessageChannel.webidl @@ -0,0 +1,14 @@ +/* -*- 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/. + * + * For more information on this interface, please see + * http://www.whatwg.org/specs/web-apps/current-work/#channel-messaging + */ + +[Constructor, Exposed=(Window,Worker)] +interface MessageChannel { + readonly attribute MessagePort port1; + readonly attribute MessagePort port2; +}; diff --git a/dom/webidl/MessageEvent.webidl b/dom/webidl/MessageEvent.webidl new file mode 100644 index 0000000000..548f14520b --- /dev/null +++ b/dom/webidl/MessageEvent.webidl @@ -0,0 +1,58 @@ +/* -*- 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/. + * + * For more information on this interface, please see + * http://www.whatwg.org/specs/web-apps/current-work/#messageevent + */ + +[Constructor(DOMString type, optional MessageEventInit eventInitDict), + Exposed=(Window,Worker,System)] +interface MessageEvent : Event { + /** + * Custom data associated with this event. + */ + [GetterThrows] + readonly attribute any data; + + /** + * The origin of the site from which this event originated, which is the + * scheme, ":", and if the URI has a host, "//" followed by the + * host, and if the port is not the default for the given scheme, + * ":" followed by that port. This value does not have a trailing slash. + */ + readonly attribute DOMString origin; + + /** + * The last event ID string of the event source, for server-sent DOM events; this + * value is the empty string for cross-origin messaging. + */ + readonly attribute DOMString lastEventId; + + /** + * The window or port which originated this event. + */ + readonly attribute (WindowProxy or MessagePort)? source; + + /** + * Initializes this event with the given data, in a manner analogous to + * the similarly-named method on the nsIDOMEvent interface, also setting the + * data, origin, source, and lastEventId attributes of this appropriately. + */ + [Pure, Cached, Frozen] + readonly attribute sequence<MessagePort> ports; + + void initMessageEvent(DOMString type, boolean bubbles, boolean cancelable, + any data, DOMString origin, DOMString lastEventId, + (WindowProxy or MessagePort)? source, + sequence<MessagePort> ports); +}; + +dictionary MessageEventInit : EventInit { + any data = null; + DOMString origin = ""; + DOMString lastEventId = ""; + (Window or MessagePort)? source = null; + sequence<MessagePort> ports = []; +}; diff --git a/dom/webidl/MessagePort.webidl b/dom/webidl/MessagePort.webidl new file mode 100644 index 0000000000..59c61a7149 --- /dev/null +++ b/dom/webidl/MessagePort.webidl @@ -0,0 +1,21 @@ +/* -*- 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/. + * + * For more information on this interface, please see + * http://www.whatwg.org/specs/web-apps/current-work/#channel-messaging + */ + +[Exposed=(Window,Worker,System)] +interface MessagePort : EventTarget { + [Throws] + void postMessage(any message, optional sequence<Transferable> transferable); + + void start(); + void close(); + + // event handlers + attribute EventHandler onmessage; +}; +// MessagePort implements Transferable; diff --git a/dom/webidl/MimeType.webidl b/dom/webidl/MimeType.webidl new file mode 100644 index 0000000000..a33d31640d --- /dev/null +++ b/dom/webidl/MimeType.webidl @@ -0,0 +1,12 @@ +/* -*- 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/. + */ + +interface MimeType { + readonly attribute DOMString description; + readonly attribute Plugin? enabledPlugin; + readonly attribute DOMString suffixes; + readonly attribute DOMString type; +}; diff --git a/dom/webidl/MimeTypeArray.webidl b/dom/webidl/MimeTypeArray.webidl new file mode 100644 index 0000000000..21bfc6dc0d --- /dev/null +++ b/dom/webidl/MimeTypeArray.webidl @@ -0,0 +1,15 @@ +/* -*- 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/. + */ + +// [LegacyUnenumerableNamedProperties] +// Named properties enumerable for now; see +// https://bugzilla.mozilla.org/show_bug.cgi?id=1270364 +interface MimeTypeArray { + readonly attribute unsigned long length; + + getter MimeType? item(unsigned long index); + getter MimeType? namedItem(DOMString name); +}; diff --git a/dom/webidl/MouseEvent.webidl b/dom/webidl/MouseEvent.webidl new file mode 100644 index 0000000000..d213548016 --- /dev/null +++ b/dom/webidl/MouseEvent.webidl @@ -0,0 +1,114 @@ +/* -*- 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/. + * + * For more information on this interface please see + * http://dev.w3.org/2006/webapi/DOM-Level-3-Events/html/DOM3-Events.html + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +[Constructor(DOMString typeArg, optional MouseEventInit mouseEventInitDict)] +interface MouseEvent : UIEvent { + readonly attribute long screenX; + readonly attribute long screenY; + readonly attribute long clientX; + readonly attribute long clientY; + readonly attribute long offsetX; + readonly attribute long offsetY; + readonly attribute boolean ctrlKey; + readonly attribute boolean shiftKey; + readonly attribute boolean altKey; + readonly attribute boolean metaKey; + readonly attribute short button; + readonly attribute unsigned short buttons; + readonly attribute EventTarget? relatedTarget; + readonly attribute DOMString? region; + + // Pointer Lock + readonly attribute long movementX; + readonly attribute long movementY; + + // Deprecated in DOM Level 3: + void initMouseEvent(DOMString typeArg, + boolean canBubbleArg, + boolean cancelableArg, + Window? viewArg, + long detailArg, + long screenXArg, + long screenYArg, + long clientXArg, + long clientYArg, + boolean ctrlKeyArg, + boolean altKeyArg, + boolean shiftKeyArg, + boolean metaKeyArg, + short buttonArg, + EventTarget? relatedTargetArg); + // Introduced in DOM Level 3: + boolean getModifierState(DOMString keyArg); +}; + +// Suggested initMouseEvent replacement initializer: +dictionary MouseEventInit : EventModifierInit { + // Attributes for MouseEvent: + long screenX = 0; + long screenY = 0; + long clientX = 0; + long clientY = 0; + short button = 0; + // Note: "buttons" was not previously initializable through initMouseEvent! + unsigned short buttons = 0; + EventTarget? relatedTarget = null; + + // Pointer Lock + long movementX = 0; + long movementY = 0; +}; + +// Mozilla extensions +partial interface MouseEvent +{ + [BinaryName="movementX", Pref="pointer-lock-api.prefixed.enabled"] + readonly attribute long mozMovementX; + [BinaryName="movementY", Pref="pointer-lock-api.prefixed.enabled"] + readonly attribute long mozMovementY; + + // Finger or touch pressure event value + // ranges between 0.0 and 1.0 + readonly attribute float mozPressure; + + const unsigned short MOZ_SOURCE_UNKNOWN = 0; + const unsigned short MOZ_SOURCE_MOUSE = 1; + const unsigned short MOZ_SOURCE_PEN = 2; + const unsigned short MOZ_SOURCE_ERASER = 3; + const unsigned short MOZ_SOURCE_CURSOR = 4; + const unsigned short MOZ_SOURCE_TOUCH = 5; + const unsigned short MOZ_SOURCE_KEYBOARD = 6; + + readonly attribute unsigned short mozInputSource; + + void initNSMouseEvent(DOMString typeArg, + boolean canBubbleArg, + boolean cancelableArg, + Window? viewArg, + long detailArg, + long screenXArg, + long screenYArg, + long clientXArg, + long clientYArg, + boolean ctrlKeyArg, + boolean altKeyArg, + boolean shiftKeyArg, + boolean metaKeyArg, + short buttonArg, + EventTarget? relatedTargetArg, + float pressure, + unsigned short inputSourceArg); + [ChromeOnly] + readonly attribute boolean hitCluster; // True when touch occurs in a cluster of links + +}; + diff --git a/dom/webidl/MouseScrollEvent.webidl b/dom/webidl/MouseScrollEvent.webidl new file mode 100644 index 0000000000..aa9e30fd2b --- /dev/null +++ b/dom/webidl/MouseScrollEvent.webidl @@ -0,0 +1,30 @@ +/* -*- 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/. + */ + +interface MouseScrollEvent : MouseEvent +{ + const long HORIZONTAL_AXIS = 1; + const long VERTICAL_AXIS = 2; + + readonly attribute long axis; + + void initMouseScrollEvent(DOMString type, + boolean canBubble, + boolean cancelable, + Window? view, + long detail, + long screenX, + long screenY, + long clientX, + long clientY, + boolean ctrlKey, + boolean altKey, + boolean shiftKey, + boolean metaKey, + unsigned short button, + EventTarget? relatedTarget, + long axis); +}; diff --git a/dom/webidl/MozApplicationEvent.webidl b/dom/webidl/MozApplicationEvent.webidl new file mode 100644 index 0000000000..e46fdca06b --- /dev/null +++ b/dom/webidl/MozApplicationEvent.webidl @@ -0,0 +1,16 @@ +/* -*- 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/. + */ + +[Constructor(DOMString type, optional MozApplicationEventInit eventInitDict), ChromeOnly] +interface MozApplicationEvent : Event +{ + readonly attribute DOMApplication? application; +}; + +dictionary MozApplicationEventInit : EventInit +{ + DOMApplication? application = null; +}; diff --git a/dom/webidl/MozNetworkStats.webidl b/dom/webidl/MozNetworkStats.webidl new file mode 100644 index 0000000000..dc8635b87d --- /dev/null +++ b/dom/webidl/MozNetworkStats.webidl @@ -0,0 +1,73 @@ +/* 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/. */ + +/** + * Provide the detailed options for specifying different kinds of data filtering + * in getSamples function. + */ +dictionary NetworkStatsGetOptions +{ + /** + * App manifest URL is used to filter network stats by app, while service type + * is used to filter stats by system service. + * Note that, these two options cannot be specified at the same time for now; + * others, an NS_ERROR_NOT_IMPLMENTED exception will be thrown. + */ + DOMString? appManifestURL = null; + DOMString serviceType = ""; + /** + * If it is set as true, only the browsing traffic, which is generated from + * the mozbrowser iframe element within an app, is returned in result. + * If it is set as false or not set, the total traffic, which is generated + * from both the mozapp and mozbrowser iframe elements, is returned. + */ + boolean browsingTrafficOnly = false; +}; + +dictionary NetworkStatsAlarmOptions +{ + Date startTime; + Date data; +}; + +[JSImplementation="@mozilla.org/networkstats;1", + ChromeOnly, + Pref="dom.mozNetworkStats.enabled"] +interface MozNetworkStats { + /** + * App manifest URL of an application for specifying the per-app stats of the + * specified app. + */ + readonly attribute DOMString appManifestURL; + + /** + * True if this stats is the browsing traffic of an app (the traffic generated + * by a mozbrowser iframe element). + * Otherwise this stats represents the total traffic of an app. + */ + readonly attribute boolean browsingTrafficOnly; + + /** + * Service type is used to retrieve the corresponding "system-only" stats. + * E.g., "Tethering", "OTA", etc. + */ + readonly attribute DOMString serviceType; + + /** + * Network the returned data belongs to. + */ + readonly attribute MozNetworkStatsInterface network; + + /** + * Stats for a network. + */ + [Cached, Pure] + readonly attribute sequence<MozNetworkStatsData> data; + + /** + * Dates + */ + readonly attribute object start; + readonly attribute object end; +}; diff --git a/dom/webidl/MozNetworkStatsAlarm.webidl b/dom/webidl/MozNetworkStatsAlarm.webidl new file mode 100644 index 0000000000..e8bc01998d --- /dev/null +++ b/dom/webidl/MozNetworkStatsAlarm.webidl @@ -0,0 +1,13 @@ +/* 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/. */ + +[JSImplementation="@mozilla.org/networkstatsalarm;1", + ChromeOnly, + Pref="dom.mozNetworkStats.enabled"] +interface MozNetworkStatsAlarm { + readonly attribute unsigned long alarmId; + readonly attribute MozNetworkStatsInterface network; + readonly attribute long long threshold; + readonly attribute any data; +}; diff --git a/dom/webidl/MozNetworkStatsData.webidl b/dom/webidl/MozNetworkStatsData.webidl new file mode 100644 index 0000000000..60d1e0d36b --- /dev/null +++ b/dom/webidl/MozNetworkStatsData.webidl @@ -0,0 +1,12 @@ +/* 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/. */ + +[JSImplementation="@mozilla.org/networkStatsdata;1", + ChromeOnly, + Pref="dom.mozNetworkStats.enabled"] +interface MozNetworkStatsData { + readonly attribute unsigned long rxBytes; // Received bytes. + readonly attribute unsigned long txBytes; // Sent bytes. + readonly attribute Date date; // Date. +}; diff --git a/dom/webidl/MozNetworkStatsInterface.webidl b/dom/webidl/MozNetworkStatsInterface.webidl new file mode 100644 index 0000000000..82acfad6b3 --- /dev/null +++ b/dom/webidl/MozNetworkStatsInterface.webidl @@ -0,0 +1,26 @@ +/* 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/. */ + +dictionary NetworkInterface { + long type; + DOMString id; +}; + +/** + * Represents a data interface for which the manager is recording statistics. + */ +[Constructor(optional NetworkInterface networkinterface), + JSImplementation="@mozilla.org/networkstatsinterface;1", + ChromeOnly, + Pref="dom.mozNetworkStats.enabled"] +interface MozNetworkStatsInterface { + readonly attribute long type; + + /** + * Id value is '0' for wifi or the iccid for mobile (SIM). + */ + readonly attribute DOMString id; + + jsonifier; +}; diff --git a/dom/webidl/MozNetworkStatsManager.webidl b/dom/webidl/MozNetworkStatsManager.webidl new file mode 100644 index 0000000000..2c0e374d73 --- /dev/null +++ b/dom/webidl/MozNetworkStatsManager.webidl @@ -0,0 +1,96 @@ +/* -*- 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/. + */ + +[NavigatorProperty="mozNetworkStats", + JSImplementation="@mozilla.org/networkStatsManager;1", + ChromeOnly, + Pref="dom.mozNetworkStats.enabled"] +interface MozNetworkStatsManager { + /** + * Constants for known interface types. + */ + const long WIFI = 0; + const long MOBILE = 1; + + /** + * Find samples between two dates start and end, both included. + * + * If options is provided, per-app or per-system service usage will be + * retrieved; otherwise the target will be overall system usage. + * + * If success, the request result will be an MozNetworkStats object. + */ + DOMRequest getSamples(MozNetworkStatsInterface network, + Date start, + Date end, + optional NetworkStatsGetOptions options); + + /** + * Install an alarm on a network. The network must be in the return of + * getAvailableNetworks() otherwise an "InvalidNetwork" exception will + * be raised. + * + * When total data usage reaches threshold bytes, a "networkstats-alarm" + * system message is sent to the application, where the optional parameter + * |data| must be a cloneable object. + * + * If success, the |result| field of the DOMRequest keeps the alarm Id. + */ + DOMRequest addAlarm(MozNetworkStatsInterface network, + long long threshold, + optional NetworkStatsAlarmOptions options); + + /** + * Obtain all alarms for those networks returned by getAvailableNetworks(). + * If a network is provided, only retrieves the alarms for that network. + * The network must be one of those returned by getAvailebleNetworks() or an + * "InvalidNetwork" exception will be raised. + * + * Each alarm object has the same fields as that in the system message: + * - alarmId + * - network + * - threshold + * - data + */ + DOMRequest getAllAlarms(optional MozNetworkStatsInterface network); + + /** + * Remove all network alarms. If an |alarmId| is provided, then only that + * alarm is removed. + */ + DOMRequest removeAlarms(optional unsigned long alarmId = 0); + + /** + * Remove all stats related with the provided network from DB. + */ + DOMRequest clearStats(MozNetworkStatsInterface network); + + /** + * Remove all stats in the database. + */ + DOMRequest clearAllStats(); + + /** + * Return available networks that used to be saved in the database. + */ + DOMRequest getAvailableNetworks(); // array of MozNetworkStatsInterface. + + /** + * Return available service types that used to be saved in the database. + */ + DOMRequest getAvailableServiceTypes(); // array of string. + + /** + * Minimum time in milliseconds between samples stored in the database. + */ + readonly attribute long sampleRate; + + /** + * Time in milliseconds recorded by the API until present time. All samples + * older than maxStorageAge from now are deleted. + */ + readonly attribute long long maxStorageAge; +}; diff --git a/dom/webidl/MozPowerManager.webidl b/dom/webidl/MozPowerManager.webidl new file mode 100644 index 0000000000..becf6ff3ab --- /dev/null +++ b/dom/webidl/MozPowerManager.webidl @@ -0,0 +1,97 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* 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/. */ + +interface MozWakeLockListener; + +/** + * The reason for the factory reset. + * "normal" : simple factory reset. + * "wipe" : will also attempt to wipe all user storage areas. + * "root" : simple factory reset that also root the phone to get more + * privileges when using devtools. + */ +enum FactoryResetReason { + "normal", + "wipe", + "root" +}; + +/** + * This interface implements navigator.mozPower + */ +[ChromeOnly] +interface MozPowerManager +{ + [Throws] + void powerOff(); + [Throws] + void reboot(); + void factoryReset(optional FactoryResetReason reason = "normal"); + + /** + * The listeners are notified when a resource changes its lock state to: + * - unlocked + * - locked but not visible + * - locked and visible + */ + void addWakeLockListener(MozWakeLockListener aListener); + void removeWakeLockListener(MozWakeLockListener aListener); + + /** + * Query the wake lock state of the topic. + * + * Possible states are: + * + * - "unlocked" - nobody holds the wake lock. + * + * - "locked-foreground" - at least one window holds the wake lock, + * and it is visible. + * + * - "locked-background" - at least one window holds the wake lock, + * but all of them are hidden. + * + * @param aTopic The resource name related to the wake lock. + */ + [Throws] + DOMString getWakeLockState(DOMString aTopic); + + /** + * Is the device's screen currently enabled? This attribute controls the + * device's screen, so setting it to false will turn off the screen. + */ + attribute boolean screenEnabled; + + /** + * Is the device's keypad/button backlight enabled? Setting it to false will + * turn off the device's keypad/button backlight. And the brightness level + * is the same as |screenBrightness|. + */ + attribute boolean keyLightEnabled; + + /** + * How bright is the screen's backlight, on a scale from 0 (very dim) to 1 + * (full brightness)? Setting this attribute modifies the screen's + * brightness. + * + * You can read and write this attribute even when the screen is disabled, + * but the backlight is off while the screen is disabled. + * + * If you write a value of X into this attribute, the attribute may not have + * the same value X when you later read it. Most screens don't support as + * many different brightness levels as there are doubles between 0 and 1, so + * we may reduce the value's precision before storing it. + * + * @throw NS_ERROR_INVALID_ARG if brightness is not in the range [0, 1]. + */ + [SetterThrows] + attribute double screenBrightness; + + /** + * Is it possible that the device's CPU will sleep after the screen is + * disabled? Setting this attribute to false will prevent the device + * entering suspend state. + */ + attribute boolean cpuSleepAllowed; +}; diff --git a/dom/webidl/MozSelfSupport.webidl b/dom/webidl/MozSelfSupport.webidl new file mode 100644 index 0000000000..d13aa112ce --- /dev/null +++ b/dom/webidl/MozSelfSupport.webidl @@ -0,0 +1,77 @@ +/* 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/. */ + +/** + * The MozSelfSupport interface allows external Mozilla support sites such as + * FHR and SUMO to access data and control settings that are not otherwise + * exposed to external content. + * + * At the moment, this is a ChromeOnly interface, but the plan is to allow + * specific Mozilla domains to access it directly. + */ +[ChromeOnly, + JSImplementation="@mozilla.org/mozselfsupport;1", + Constructor()] +interface MozSelfSupport +{ + /** + * Controls whether uploading FHR data is allowed. + */ + attribute boolean healthReportDataSubmissionEnabled; + + /** + * Retrieve a list of the archived Telemetry pings. + * This contains objects with ping info, which are of the form: + * { + * type: <string>, // The pings type, e.g. "main", "environment-change", ... + * timestampCreated: <number>, // The time the ping was created (ms since unix epoch). + * id: <string>, // The pings UUID. + * } + * + * @return Promise<sequence<Object>> + * Resolved with the ping infos when the archived ping list has been built. + */ + Promise<sequence<object>> getTelemetryPingList(); + + /** + * Retrieve an archived Telemetry ping by it's id. + * This will load the ping data async from the archive, possibly hitting the disk. + * + * @return Promise<Object> + * Resolved with the ping data, see the Telemetry "main" ping documentation for the format. + */ + Promise<object> getTelemetryPing(DOMString pingID); + + /** + * Get the current Telemetry environment - see the Telemetry documentation for details on the format. + * + * @return Promise<Object> + * Resolved with an object containing the Telemetry environment data. + */ + Promise<object> getCurrentTelemetryEnvironment(); + + /** + * Get a Telemetry "main" ping containing the current session measurements. + * + * @return Promise<Object> + * Resolved with the ping data, see the Telemetry "main" ping documentation for the format. + */ + Promise<object> getCurrentTelemetrySubsessionPing(); + + /** + * Resets a named pref: + * - if there is a default value, then change the value back to default, + * - if there's no default value, then delete the pref, + * - no-op otherwise. + * + * @param DOMString + * The name of the pref to reset. + */ + void resetPref(DOMString name); + + /** + * Resets original search engines, and resets the default one. + */ + void resetSearchEngines(); +}; diff --git a/dom/webidl/MozSettingsEvent.webidl b/dom/webidl/MozSettingsEvent.webidl new file mode 100644 index 0000000000..6ca596a4c7 --- /dev/null +++ b/dom/webidl/MozSettingsEvent.webidl @@ -0,0 +1,19 @@ +/* -*- 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/. + */ + +[Constructor(DOMString type, optional MozSettingsEventInit eventInitDict), + ChromeOnly] +interface MozSettingsEvent : Event +{ + readonly attribute DOMString? settingName; + readonly attribute any settingValue; +}; + +dictionary MozSettingsEventInit : EventInit +{ + DOMString settingName = ""; + any settingValue = null; +}; diff --git a/dom/webidl/MozSettingsTransactionEvent.webidl b/dom/webidl/MozSettingsTransactionEvent.webidl new file mode 100644 index 0000000000..95aa83f433 --- /dev/null +++ b/dom/webidl/MozSettingsTransactionEvent.webidl @@ -0,0 +1,17 @@ +/* -*- 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/. + */ + +[Constructor(DOMString type, optional MozSettingsTransactionEventInit eventInitDict), + ChromeOnly] +interface MozSettingsTransactionEvent : Event +{ + readonly attribute DOMString? error; +}; + +dictionary MozSettingsTransactionEventInit : EventInit +{ + DOMString error = ""; +}; diff --git a/dom/webidl/MozSpeakerManager.webidl b/dom/webidl/MozSpeakerManager.webidl new file mode 100644 index 0000000000..56ecf866f9 --- /dev/null +++ b/dom/webidl/MozSpeakerManager.webidl @@ -0,0 +1,18 @@ +/* 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/. + */ + +/* + * Allow application can control acoustic sound output through speaker. + * Reference https://wiki.mozilla.org/WebAPI/SpeakerManager + */ +[Constructor()] +interface MozSpeakerManager : EventTarget { + /* query the speaker status */ + readonly attribute boolean speakerforced; + /* force device device's acoustic sound output through speaker */ + attribute boolean forcespeaker; + /* this event will be fired when device's speaker forced status change */ + attribute EventHandler onspeakerforcedchange; +}; diff --git a/dom/webidl/MozTetheringManager.webidl b/dom/webidl/MozTetheringManager.webidl new file mode 100644 index 0000000000..43d7837345 --- /dev/null +++ b/dom/webidl/MozTetheringManager.webidl @@ -0,0 +1,57 @@ +/* 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/. */ + +enum TetheringType { + "bluetooth", + "usb", + "wifi" +}; + +enum SecurityType { + "open", + "wpa-psk", + "wpa2-psk" +}; + +dictionary WifiTetheringConfig { + DOMString ssid; + SecurityType security; + DOMString key; +}; + +dictionary TetheringConfiguration { + DOMString ip; + DOMString prefix; + DOMString startIp; + DOMString endIp; + DOMString dns1; + DOMString dns2; + WifiTetheringConfig wifiConfig; +}; + +[JSImplementation="@mozilla.org/tetheringmanager;1", + NavigatorProperty="mozTetheringManager", + ChromeOnly] +interface MozTetheringManager { + /** + * Enable/Disable tethering. + * @param enabled True to enable tethering, False to disable tethering. + * @param type Tethering type to enable/disable. + * @param config Configuration should have following fields when enable is True: + * - ip ip address. + * - prefix mask length. + * - startIp start ip address allocated by DHCP server for tethering. + * - endIp end ip address allocated by DHCP server for tethering. + * - dns1 first DNS server address. + * - dns2 second DNS server address. + * - wifiConfig wifi tethering configuration + * - ssid SSID network name. + * - security open, wpa-psk or wpa2-psk. + * - key password for wpa-psk or wpa2-psk. + * config should not be set when enabled is False. + */ + Promise<any> setTetheringEnabled(boolean enabled, + TetheringType type, + optional TetheringConfiguration config); +}; diff --git a/dom/webidl/MozTimeManager.webidl b/dom/webidl/MozTimeManager.webidl new file mode 100644 index 0000000000..0308835fb5 --- /dev/null +++ b/dom/webidl/MozTimeManager.webidl @@ -0,0 +1,18 @@ +/* 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/. */ + +[Func="mozilla::dom::time::TimeManager::PrefEnabled"] +interface MozTimeManager { + /* Set the system time. + * + * The |time| argument can be either a Date object or a number. + * + * - If |time| is a number, it's interpreted as milliseconds + * since the epoch (midnight UTC on January 1, 1970). + * - If |time| is a Date object, |set(time)| is equivalent to + * |set(time.getTime())|. + */ + void set(Date time); + void set(double time); +}; diff --git a/dom/webidl/MozWakeLock.webidl b/dom/webidl/MozWakeLock.webidl new file mode 100644 index 0000000000..d5041ea048 --- /dev/null +++ b/dom/webidl/MozWakeLock.webidl @@ -0,0 +1,18 @@ +/* -*- Mode: IDL; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* vim: set ts=2 et sw=2 tw=80: */ +/* 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/. */ + +[Pref="dom.wakelock.enabled", Func="Navigator::HasWakeLockSupport"] +interface MozWakeLock +{ + readonly attribute DOMString topic; + + /** + * Release the wake lock. + * @throw NS_ERROR_DOM_INVALID_STATE_ERR if already unlocked. + */ + [Throws] + void unlock(); +}; diff --git a/dom/webidl/MozWifiCapabilities.webidl b/dom/webidl/MozWifiCapabilities.webidl new file mode 100644 index 0000000000..3acf5fd556 --- /dev/null +++ b/dom/webidl/MozWifiCapabilities.webidl @@ -0,0 +1,46 @@ +/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* vim: set ts=2 et sw=2 tw=80: */ +/* 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/. + */ + +/* + * The capabilities of Wifi. These are guaranteed not to change over the + * lifetime of that particular instance. + */ +enum WifiSecurityMethod { + "OPEN", + "WEP", + "WPA-PSK", + "WPA-EAP" +}; + +enum WifiWpaMethod { + "SIM", + "PEAP", + "TTLS", + "TLS" +}; + +enum WifiWpaPhase2Method { + "MSCHAPV2", + "GTC" +}; + +enum WifiWpaCertificate { + "SERVER", + "USER" +}; + +[JSImplementation="@mozilla.org/mozwificapabilities;1", + Func="Navigator::HasWifiManagerSupport"] +interface MozWifiCapabilities { + [Constant, Cached] readonly attribute sequence<WifiSecurityMethod> security; + [Constant, Cached] readonly attribute sequence<WifiWpaMethod> eapMethod; + [Constant, Cached] readonly attribute sequence<WifiWpaPhase2Method> eapPhase2; + [Constant, Cached] readonly attribute sequence<WifiWpaCertificate> certificate; + + jsonifier; +}; + diff --git a/dom/webidl/MozWifiConnectionInfoEvent.webidl b/dom/webidl/MozWifiConnectionInfoEvent.webidl new file mode 100644 index 0000000000..cfba1aa3e4 --- /dev/null +++ b/dom/webidl/MozWifiConnectionInfoEvent.webidl @@ -0,0 +1,43 @@ +/* -*- 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/. + */ + +[Constructor(DOMString type, optional MozWifiConnectionInfoEventInit eventInitDict)] +interface MozWifiConnectionInfoEvent : Event +{ + /** + * Network object with an SSID field. + */ + readonly attribute any network; + + /** + * Strength of the signal to network, in dBm between -55 and -100 dBm. + */ + readonly attribute short signalStrength; + + /** + * Relative signal strength between 0 and 100. + */ + readonly attribute short relSignalStrength; + + /** + * Link speed in Mb/s. + */ + readonly attribute long linkSpeed; + + /** + * IP address in the dotted quad format. + */ + readonly attribute DOMString? ipAddress; +}; + +dictionary MozWifiConnectionInfoEventInit : EventInit +{ + any network = null; + short signalStrength = 0; + short relSignalStrength = 0; + long linkSpeed = 0; + DOMString ipAddress = ""; +}; diff --git a/dom/webidl/MozWifiManager.webidl b/dom/webidl/MozWifiManager.webidl new file mode 100644 index 0000000000..dd5aa59320 --- /dev/null +++ b/dom/webidl/MozWifiManager.webidl @@ -0,0 +1,347 @@ +/* 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/. */ + +enum WifiWPSMethod { + "pbc", + "pin", + "cancel" +}; + +enum ConnectionStatus { + "connecting", + "authenticating", + "associated", + "connected", + "disconnected", + "wps-timedout", + "wps-failed", + "wps-overlapped", + "connectingfailed" +}; + +dictionary WifiWPSInfo { + WifiWPSMethod method; + DOMString? pin; + DOMString? bssid; +}; + +dictionary NetworkProperties { + DOMString ssid; + long mode; + long frequency; + sequence<DOMString>? security; + sequence<DOMString>? capabilities; + boolean known; + boolean connected; + boolean hidden; + DOMString bssid; + DOMString signalStrength; + long relSignalStrength; + DOMString psk; + DOMString wep; + DOMString wep_key0; + DOMString wep_key1; + DOMString wep_key2; + DOMString wep_key3; + long wep_tx_keyidx; + long priority; + long scan_ssid; + DOMString keyManagement; + DOMString identity; + DOMString password; + DOMString auth_alg; + DOMString phase1; + DOMString phase2; + DOMString eap; + DOMString pin; + boolean dontConnect; + DOMString serverCertificate; + DOMString subjectMatch; + DOMString userCertificate; +}; + +[Constructor(optional NetworkProperties properties), + JSImplementation="@mozilla.org/mozwifinetwork;1", + Func="Navigator::HasWifiManagerSupport"] +interface MozWifiNetwork { + readonly attribute DOMString ssid; + readonly attribute long mode; + readonly attribute long frequency; + [Constant, Cached] readonly attribute sequence<DOMString>? security; + [Constant, Cached] readonly attribute sequence<DOMString>? capabilities; + readonly attribute boolean known; + readonly attribute boolean connected; + readonly attribute boolean hidden; + + attribute DOMString? bssid; + attribute DOMString? signalStrength; + attribute long? relSignalStrength; + attribute DOMString? psk; + attribute DOMString? wep; + attribute DOMString? wep_key0; + attribute DOMString? wep_key1; + attribute DOMString? wep_key2; + attribute DOMString? wep_key3; + attribute long? wep_tx_keyidx; + attribute long? priority; + attribute long? scan_ssid; + attribute DOMString? keyManagement; + attribute DOMString? identity; + attribute DOMString? password; + attribute DOMString? auth_alg; + attribute DOMString? phase1; + attribute DOMString? phase2; + attribute DOMString? eap; + attribute DOMString? pin; + attribute boolean? dontConnect; + attribute DOMString? serverCertificate; + attribute DOMString? subjectMatch; + attribute DOMString? userCertificate; +}; + +[JSImplementation="@mozilla.org/mozwificonnection;1", + ChromeOnly] +interface MozWifiConnection { + readonly attribute ConnectionStatus status; + readonly attribute MozWifiNetwork? network; +}; + +[JSImplementation="@mozilla.org/mozwificonnectioninfo;1", + ChromeOnly] +interface MozWifiConnectionInfo { + readonly attribute short signalStrength; + readonly attribute short relSignalStrength; + readonly attribute long linkSpeed; + readonly attribute DOMString? ipAddress; +}; + +dictionary IPConfiguration { + boolean enabled; + DOMString ipaddr; + DOMString proxy; + short maskLength; + DOMString gateway; + DOMString dns1; + DOMString dns2; +}; + +[JSImplementation="@mozilla.org/wifimanager;1", + NavigatorProperty="mozWifiManager", + Func="Navigator::HasWifiManagerSupport", + UnsafeInPrerendering] +interface MozWifiManager : EventTarget { + /** + * Turn on/off wifi functionality. + * @param enable true for enable, false for disable. + * onsuccess: Wifi enable/disable successfully, including no status change. + * onerror: Wifi enable/disable failed or prohibited. + */ + DOMRequest setWifiEnabled(boolean enabled); + + /** + * Returns the list of currently available networks. + * onsuccess: We have obtained the current list of networks. request.value + * is an object whose property names are SSIDs and values are + * network objects. + * onerror: We were unable to obtain a list of property names. + */ + DOMRequest getNetworks(); + + /** + * Returns the list of networks known to the system that will be + * automatically connected to if they're in range. + * onsuccess: request.value is an object whose property names are + * SSIDs and values are network objects. + * onerror: We were unable to obtain a list of known networks. + */ + DOMRequest getKnownNetworks(); + + /** + * Takes one of the networks returned from getNetworks and tries to + * connect to it. + * @param network A network object with information about the network, + * such as the SSID, key management desired, etc. + * onsuccess: We have started attempting to associate with the network. + * request.value is true. + * onerror: We were unable to select the network. This most likely means a + * configuration error. + */ + DOMRequest associate(MozWifiNetwork network); + + /** + * Given a network, removes it from the list of networks that we'll + * automatically connect to. In order to re-connect to the network, it is + * necessary to call associate on it. + * @param network A network object with the SSID of the network to remove. + * onsuccess: We have removed this network. If we were previously + * connected to it, we have started reconnecting to the next + * network in the list. + * onerror: We were unable to remove the network. + */ + DOMRequest forget(MozWifiNetwork network); + + /** + * Wi-Fi Protected Setup functionality. + * @param detail WPS detail which has 'method' and 'pin' field. + * The possible method field values are: + * - pbc: The Push Button Configuration. + * - pin: The PIN configuration. + * - cancel: Request to cancel WPS in progress. + * If method field is 'pin', 'pin' field can exist and has + * a PIN number. + * If method field is 'pin', 'bssid' field can exist and has + * a opposite BSSID. + * onsuccess: We have successfully started/canceled wps. + * onerror: We have failed to start/cancel wps. + */ + DOMRequest wps(optional WifiWPSInfo detail); + + /** + * Turn on/off wifi power saving mode. + * @param enabled true or false. + * onsuccess: We have successfully turn on/off wifi power saving mode. + * onerror: We have failed to turn on/off wifi power saving mode. + */ + DOMRequest setPowerSavingMode(boolean enabled); + + /** + * Given a network, configure using static IP instead of running DHCP + * @param network A network object with the SSID of the network to set static ip. + * @param info info should have following field: + * - enabled True to enable static IP, false to use DHCP + * - ipaddr configured static IP address + * - proxy configured proxy server address + * - maskLength configured mask length + * - gateway configured gateway address + * - dns1 configured first DNS server address + * - dns2 configured seconf DNS server address + * onsuccess: We have successfully configure the static ip mode. + * onerror: We have failed to configure the static ip mode. + */ + DOMRequest setStaticIpMode(MozWifiNetwork network, optional IPConfiguration info); + + /** + * Given a network, configure http proxy when using wifi. + * @param network A network object with the SSID of the network to set http proxy. + * @param info info should have following field: + * - httpProxyHost ip address of http proxy. + * - httpProxyPort port of http proxy, set 0 to use default port 8080. + * set info to null to clear http proxy. + * onsuccess: We have successfully configure http proxy. + * onerror: We have failed to configure http proxy. + */ + DOMRequest setHttpProxy(MozWifiNetwork network, any info); + + /** + * Import a certificate file, only support CA certificate now. + * @param certBlob A Blob object containing raw data of certificate to be imported. + * Supported format: binary/base64 encoded DER certificates. + * (.der/.crt/.cer/.pem) + * Cause error if importing certificates already imported. + * @param certPassword Password of certificate. + * @param certNickname User assigned nickname for imported certificate. + * Nickname must be unique, it causes error on redundant nickname. + * onsuccess: We have successfully imported certificate. request.result is an + * object, containing information of imported CA: + * { + * nickname: Nickname of imported CA, String. + * usage: Supported usage of imported CA, Array of String, + * includes: "ServerCert". + * } + * onerror: We have failed to import certificate. + */ + DOMRequest importCert(Blob certBlob, + DOMString certPassword, + DOMString certNickname); + + /** + * Get list of imported WIFI certificates. + * onsuccess: We have successfully gotten imported certificate list. + * request.result is an object using nickname as key, array of usage + * string as value. + * request.result[USAGE] = [CA_NICKNAME1, CA_NICKNAME2, ...] + * USAGE string includes: "ServerCert". + * onerror: We have failed to list certificate. + */ + DOMRequest getImportedCerts(); + + /** + * Delete an imported certificate. + * @param certNickname Nickname of imported to be deleted. + * onsuccess: We have successfully deleted certificate. + * onerror: We have failed to delete certificate. + */ + DOMRequest deleteCert(DOMString certNickname); + + /** + * Returns whether or not wifi is currently enabled. + */ + readonly attribute boolean enabled; + + /** + * Returns the MAC address of the wifi adapter. + */ + readonly attribute DOMString macAddress; + + /** + * An non-null object containing the following information: + * - status ("disconnected", "connecting", "associated", "connected") + * - network + * + * Note that the object returned is read only. Any changes required must + * be done by calling other APIs. + */ + readonly attribute MozWifiConnection connection; + + /** + * A connectionInformation object with the same information found in an + * MozWifiConnectionInfoEvent (but without the network). + * If we are not currently connected to a network, this will be null. + */ + readonly attribute MozWifiConnectionInfo? connectionInformation; + + /** + * Capabilities of Wifi. + */ + readonly attribute MozWifiCapabilities? capabilities; + + /** + * State notification listeners. These all take an + * MozWifiStatusChangeEvent with the new status and a network (which may be + * null). + * + * The possible statuses are: + * - connecting: Fires when we start the process of connecting to a + * network. + * - associated: Fires when we have connected to an access point but do + * not yet have an IP address. + * - connected: Fires once we are fully connected to an access point and + * can access the internet. + * - disconnected: Fires when we either fail to connect to an access + * point (transition: associated -> disconnected) or + * when we were connected to a network but have + * disconnected for any reason (transition: connected -> + * disconnected). + */ + attribute EventHandler onstatuschange; + + /** + * An event listener that is called with information about the signal + * strength and link speed every 5 seconds. + */ + attribute EventHandler onconnectioninfoupdate; + + /** + * These two events fire when the wifi system is brought online or taken + * offline. + */ + attribute EventHandler onenabled; + attribute EventHandler ondisabled; + + /** + * An event listener that is called with information about the number + * of wifi stations connected to wifi hotspot every 5 seconds. + */ + attribute EventHandler onstationinfoupdate; +}; diff --git a/dom/webidl/MozWifiP2pManager.webidl b/dom/webidl/MozWifiP2pManager.webidl new file mode 100644 index 0000000000..58ac1f7bed --- /dev/null +++ b/dom/webidl/MozWifiP2pManager.webidl @@ -0,0 +1,147 @@ +/* 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/. */ + +enum WPSMethod { + "pbc", + "keypad", + "display" +}; + +dictionary WPSInfo { + WPSMethod method; + DOMString pin; +}; + +[JSImplementation="@mozilla.org/wifip2pgroupowner;1", + Func="Navigator::HasWifiManagerSupport"] +interface MozWifiP2pGroupOwner { + readonly attribute DOMString groupName; + readonly attribute DOMString macAddress; + readonly attribute DOMString ipAddress; + readonly attribute DOMString passphrase; + readonly attribute DOMString ssid; + readonly attribute any wpsCapabilities; + readonly attribute unsigned long freq; + readonly attribute boolean isLocal; +}; + +[JSImplementation="@mozilla.org/wifip2pmanager;1", + NavigatorProperty="mozWifiP2pManager", + Func="Navigator::HasWifiManagerSupport"] +interface MozWifiP2pManager : EventTarget +{ + /** + * Enable/Disable wifi direct scan. + * + * onsuccess: Succeeded in starting/stopping wifi direct scan. + * onerror: Failed to start/stop wifi direct scan. + * + */ + DOMRequest setScanEnabled(boolean enabled); + + /** + * Connect to a peer with given configuration. + * + * @param address The peer MAC address we are going to connect. + * @param wpsMethod The WPS method we want to use. + * @param goIntent Number from 0 ~ 15 to indicate how much we want to be + * the group owner. + * + * onsuccess: Succeeded in issueing a 'connect' request. It doesn't mean we + * have connected to the peer. + * + * onerror: Failed to issue a 'connect' request, probably due to an + * invalid peer address, unsupported wps method or any + * preliminary error. + * + **/ + DOMRequest connect(DOMString address, WPSMethod wpsMethod, optional byte goIntent); + + /** + * Disconnect with a peer. + * + * @param address The mac address of the peer. + * + * onsuccess: Succeeded to issue a 'disconnect' request. It doesn't mean we + * have disconnected with the peer. + * + * onerror: Failed to issue a 'disconnect' request, probably due to the + * invalid peer address or any preliminary error. + * + */ + DOMRequest disconnect(DOMString address); + + /** + * Get peer list + * + * onsuccess: Command success, req.result contains an array of peer objects. + * onerror: Command failed. + * + * Peer object format: + * .address MAC address of the peer (string) + * .name the peer's device name (string) + * .isGroupOwner if the peer is the group owner (boolean) + * .wpsCapabilities array of the supported |WPSMethod| + * .connectionStatus one of { "disconnected", "connecting", "connected", "disconnecting" } + * + */ + DOMRequest getPeerList(); + + /** + * Set pairing confirmation result. + * + * @param accepted Boolean to indicate whether we accepted the request or not. + * @param pin The user input pin number if the wps method is keypad. + * + * onsuccess: Command succeeded. + * onerror: Command failed. + * + */ + DOMRequest setPairingConfirmation(boolean accepted, optional DOMString pin); + + /** + * Set device name. + * + * @param devieName The new device name we are going to set. + * + * onsuccess: Command succeeded. + * onerror: Command failed. + * + */ + DOMRequest setDeviceName(DOMString deviceName); + + /** + * Returns if Wifi Direct is enabled. + * + */ + readonly attribute boolean enabled; + + /** + * The current group owner, null if none. + */ + readonly attribute MozWifiP2pGroupOwner? groupOwner; + + /** + * An event listener that is called whenever the Wifi Direct peer list is + * updated. Use getPeerList() to get the up-to-date peer list. + */ + attribute EventHandler onpeerinfoupdate; + + /** + * An event listener that is called whenever Wifi Direct status changed. + * The address of the changed peer will be stored in event.peerList. + * See MozWifiP2pStatusChangeEvent.webidl. + */ + attribute EventHandler onstatuschange; + + /** + * An event listener that is called whenever Wifi Direct is enabled. + */ + attribute EventHandler onenabled; + + /** + * An event listener that is called whenever Wifi Direct is disabled. + */ + attribute EventHandler ondisabled; +}; diff --git a/dom/webidl/MozWifiP2pStatusChangeEvent.webidl b/dom/webidl/MozWifiP2pStatusChangeEvent.webidl new file mode 100644 index 0000000000..be96e2786f --- /dev/null +++ b/dom/webidl/MozWifiP2pStatusChangeEvent.webidl @@ -0,0 +1,20 @@ +/* -*- 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/. + */ + +[Constructor(DOMString type, optional MozWifiP2pStatusChangeEventInit eventInitDict), + Func="Navigator::HasWifiManagerSupport"] +interface MozWifiP2pStatusChangeEvent : Event +{ + /** + * The mac address of the peer whose status has just changed. + */ + readonly attribute DOMString peerAddress; +}; + +dictionary MozWifiP2pStatusChangeEventInit : EventInit +{ + DOMString peerAddress = ""; +}; diff --git a/dom/webidl/MozWifiStationInfoEvent.webidl b/dom/webidl/MozWifiStationInfoEvent.webidl new file mode 100644 index 0000000000..ff3f5ac6ab --- /dev/null +++ b/dom/webidl/MozWifiStationInfoEvent.webidl @@ -0,0 +1,19 @@ +/* -*- 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/. + */ + +[Constructor(DOMString type, optional MozWifiStationInfoEventInit eventInitDict)] +interface MozWifiStationInfoEvent : Event +{ + /** + * The number of wifi stations connected to wifi hotspot. + */ + readonly attribute short station; +}; + +dictionary MozWifiStationInfoEventInit : EventInit +{ + short station = 0; +}; diff --git a/dom/webidl/MozWifiStatusChangeEvent.webidl b/dom/webidl/MozWifiStatusChangeEvent.webidl new file mode 100644 index 0000000000..20d16e4d9c --- /dev/null +++ b/dom/webidl/MozWifiStatusChangeEvent.webidl @@ -0,0 +1,27 @@ +/* -*- 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/. + */ + +[Constructor(DOMString type, optional MozWifiStatusChangeEventInit eventInitDict)] +interface MozWifiStatusChangeEvent : Event +{ + /** + * Network object with a SSID field describing the network affected by + * this change. This might be null. + */ + readonly attribute any network; + + /** + * String describing the current status of the wifi manager. See above for + * the possible values. + */ + readonly attribute DOMString? status; +}; + +dictionary MozWifiStatusChangeEventInit : EventInit +{ + any network = null; + DOMString status = ""; +}; diff --git a/dom/webidl/MutationEvent.webidl b/dom/webidl/MutationEvent.webidl new file mode 100644 index 0000000000..43c7b1cd06 --- /dev/null +++ b/dom/webidl/MutationEvent.webidl @@ -0,0 +1,33 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://dev.w3.org/2006/webapi/DOM-Level-3-Events/html/DOM3-Events.html + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ +interface MutationEvent : Event +{ + const unsigned short MODIFICATION = 1; + const unsigned short ADDITION = 2; + const unsigned short REMOVAL = 3; + + readonly attribute Node? relatedNode; + readonly attribute DOMString prevValue; + readonly attribute DOMString newValue; + readonly attribute DOMString attrName; + readonly attribute unsigned short attrChange; + + [Throws] + void initMutationEvent(DOMString type, + boolean canBubble, + boolean cancelable, + Node? relatedNode, + DOMString prevValue, + DOMString newValue, + DOMString attrName, + unsigned short attrChange); +}; diff --git a/dom/webidl/MutationObserver.webidl b/dom/webidl/MutationObserver.webidl new file mode 100644 index 0000000000..893e0cc509 --- /dev/null +++ b/dom/webidl/MutationObserver.webidl @@ -0,0 +1,74 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://dom.spec.whatwg.org + */ + +[ProbablyShortLivingObject] +interface MutationRecord { + [Constant] + readonly attribute DOMString type; + // .target is not nullable per the spec, but in order to prevent crashes, + // if there are GC/CC bugs in Gecko, we let the property to be null. + [Constant] + readonly attribute Node? target; + [Constant] + readonly attribute NodeList addedNodes; + [Constant] + readonly attribute NodeList removedNodes; + [Constant] + readonly attribute Node? previousSibling; + [Constant] + readonly attribute Node? nextSibling; + [Constant] + readonly attribute DOMString? attributeName; + [Constant] + readonly attribute DOMString? attributeNamespace; + [Constant] + readonly attribute DOMString? oldValue; + [Constant,Cached,ChromeOnly] + readonly attribute sequence<Animation> addedAnimations; + [Constant,Cached,ChromeOnly] + readonly attribute sequence<Animation> changedAnimations; + [Constant,Cached,ChromeOnly] + readonly attribute sequence<Animation> removedAnimations; +}; + +[Constructor(MutationCallback mutationCallback)] +interface MutationObserver { + [Throws] + void observe(Node target, optional MutationObserverInit options); + void disconnect(); + sequence<MutationRecord> takeRecords(); + + [ChromeOnly, Throws] + sequence<MutationObservingInfo?> getObservingInfo(); + [ChromeOnly] + readonly attribute MutationCallback mutationCallback; + [ChromeOnly] + attribute boolean mergeAttributeRecords; +}; + +callback MutationCallback = void (sequence<MutationRecord> mutations, MutationObserver observer); + +dictionary MutationObserverInit { + boolean childList = false; + boolean attributes; + boolean characterData; + boolean subtree = false; + boolean attributeOldValue; + boolean characterDataOldValue; + [ChromeOnly] + boolean nativeAnonymousChildList = false; + [ChromeOnly] + boolean animations = false; + sequence<DOMString> attributeFilter; +}; + +dictionary MutationObservingInfo : MutationObserverInit +{ + Node? observedNode = null; +}; diff --git a/dom/webidl/NamedNodeMap.webidl b/dom/webidl/NamedNodeMap.webidl new file mode 100644 index 0000000000..41fbfcbb43 --- /dev/null +++ b/dom/webidl/NamedNodeMap.webidl @@ -0,0 +1,22 @@ +/* -*- 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/. */ + +[LegacyUnenumerableNamedProperties] +interface NamedNodeMap { + getter Attr? getNamedItem(DOMString name); + [Throws, BinaryName="setNamedItemNS"] + Attr? setNamedItem(Attr arg); + [Throws] + Attr removeNamedItem(DOMString name); + + getter Attr? item(unsigned long index); + readonly attribute unsigned long length; + + Attr? getNamedItemNS(DOMString? namespaceURI, DOMString localName); + [Throws] + Attr? setNamedItemNS(Attr arg); + [Throws] + Attr removeNamedItemNS(DOMString? namespaceURI, DOMString localName); +}; diff --git a/dom/webidl/NativeOSFileInternals.webidl b/dom/webidl/NativeOSFileInternals.webidl new file mode 100644 index 0000000000..36cc1a3a18 --- /dev/null +++ b/dom/webidl/NativeOSFileInternals.webidl @@ -0,0 +1,21 @@ +/* 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 obtaone at http://mozilla.org/MPL/2.0/. */ + +/** + * Options for nsINativeOSFileInternals::Read + */ +dictionary NativeOSFileReadOptions +{ + /** + * If specified, convert the raw bytes to a String + * with the specified encoding. Otherwise, return + * the raw bytes as a TypedArray. + */ + DOMString? encoding; + + /** + * If specified, limit the number of bytes to read. + */ + unsigned long long? bytes; +}; diff --git a/dom/webidl/Navigator.webidl b/dom/webidl/Navigator.webidl new file mode 100644 index 0000000000..56461e4296 --- /dev/null +++ b/dom/webidl/Navigator.webidl @@ -0,0 +1,368 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.whatwg.org/specs/web-apps/current-work/#the-navigator-object + * http://www.w3.org/TR/tracking-dnt/ + * http://www.w3.org/TR/geolocation-API/#geolocation_interface + * http://www.w3.org/TR/battery-status/#navigatorbattery-interface + * http://www.w3.org/TR/vibration/#vibration-interface + * http://www.w3.org/2012/sysapps/runtime/#extension-to-the-navigator-interface-1 + * https://dvcs.w3.org/hg/gamepad/raw-file/default/gamepad.html#navigator-interface-extension + * http://www.w3.org/TR/beacon/#sec-beacon-method + * https://html.spec.whatwg.org/#navigatorconcurrenthardware + * + * © Copyright 2004-2011 Apple Computer, Inc., Mozilla Foundation, and + * Opera Software ASA. You are granted a license to use, reproduce + * and create derivative works of this document. + */ + +// http://www.whatwg.org/specs/web-apps/current-work/#the-navigator-object +[HeaderFile="Navigator.h"] +interface Navigator { + // objects implementing this interface also implement the interfaces given below +}; +Navigator implements NavigatorID; +Navigator implements NavigatorLanguage; +Navigator implements NavigatorOnLine; +Navigator implements NavigatorContentUtils; +Navigator implements NavigatorStorageUtils; +Navigator implements NavigatorConcurrentHardware; +Navigator implements NavigatorStorage; + +[NoInterfaceObject, Exposed=(Window,Worker)] +interface NavigatorID { + // WebKit/Blink/Trident/Presto support this (hardcoded "Mozilla"). + [Constant, Cached] + readonly attribute DOMString appCodeName; // constant "Mozilla" + [Constant, Cached] + readonly attribute DOMString appName; + [Constant, Cached] + readonly attribute DOMString appVersion; + [Constant, Cached] + readonly attribute DOMString platform; + [Pure, Cached, Throws] + readonly attribute DOMString userAgent; + [Constant, Cached] + readonly attribute DOMString product; // constant "Gecko" + + // Everyone but WebKit/Blink supports this. See bug 679971. + [Exposed=Window] + boolean taintEnabled(); // constant false +}; + +[NoInterfaceObject, Exposed=(Window,Worker)] +interface NavigatorLanguage { + + // These two attributes are cached because this interface is also implemented + // by Workernavigator and this way we don't have to go back to the + // main-thread from the worker thread anytime we need to retrieve them. They + // are updated when pref intl.accept_languages is changed. + + [Pure, Cached] + readonly attribute DOMString? language; + [Pure, Cached, Frozen] + readonly attribute sequence<DOMString> languages; +}; + +[NoInterfaceObject, Exposed=(Window,Worker)] +interface NavigatorOnLine { + readonly attribute boolean onLine; +}; + +[NoInterfaceObject] +interface NavigatorContentUtils { + // content handler registration + [Throws] + void registerProtocolHandler(DOMString scheme, DOMString url, DOMString title); + [Throws] + void registerContentHandler(DOMString mimeType, DOMString url, DOMString title); + // NOT IMPLEMENTED + //DOMString isProtocolHandlerRegistered(DOMString scheme, DOMString url); + //DOMString isContentHandlerRegistered(DOMString mimeType, DOMString url); + //void unregisterProtocolHandler(DOMString scheme, DOMString url); + //void unregisterContentHandler(DOMString mimeType, DOMString url); +}; + +[NoInterfaceObject, Exposed=(Window,Worker)] +interface NavigatorStorage { + [Func="mozilla::dom::StorageManager::PrefEnabled"] + readonly attribute StorageManager storage; +}; + +[NoInterfaceObject] +interface NavigatorStorageUtils { + // NOT IMPLEMENTED + //void yieldForStorageUpdates(); +}; + +partial interface Navigator { + [Throws] + readonly attribute Permissions permissions; +}; + +// Things that definitely need to be in the spec and and are not for some +// reason. See https://www.w3.org/Bugs/Public/show_bug.cgi?id=22406 +partial interface Navigator { + [Throws] + readonly attribute MimeTypeArray mimeTypes; + [Throws] + readonly attribute PluginArray plugins; +}; + +// http://www.w3.org/TR/tracking-dnt/ sort of +partial interface Navigator { + readonly attribute DOMString doNotTrack; +}; + +// http://www.w3.org/TR/geolocation-API/#geolocation_interface +[NoInterfaceObject] +interface NavigatorGeolocation { + [Throws, Pref="geo.enabled"] + readonly attribute Geolocation geolocation; +}; +Navigator implements NavigatorGeolocation; + +// http://www.w3.org/TR/battery-status/#navigatorbattery-interface +partial interface Navigator { + // ChromeOnly to prevent web content from fingerprinting users' batteries. + [Throws, ChromeOnly, Pref="dom.battery.enabled"] + Promise<BatteryManager> getBattery(); +}; + +partial interface Navigator { + [NewObject, Pref="dom.flyweb.enabled"] + Promise<FlyWebPublishedServer> publishServer(DOMString name, + optional FlyWebPublishOptions options); +}; + +// http://www.w3.org/TR/vibration/#vibration-interface +partial interface Navigator { + // We don't support sequences in unions yet + //boolean vibrate ((unsigned long or sequence<unsigned long>) pattern); + boolean vibrate(unsigned long duration); + boolean vibrate(sequence<unsigned long> pattern); +}; + +// http://www.w3.org/TR/pointerevents/#extensions-to-the-navigator-interface +partial interface Navigator { + [Pref="dom.w3c_pointer_events.enabled"] + readonly attribute long maxTouchPoints; +}; + +// Mozilla-specific extensions + +// Chrome-only interface for Vibration API permission handling. +partial interface Navigator { + /* Set permission state to device vibration. + * @param permitted permission state (true for allowing vibration) + * @param persistent make the permission session-persistent + */ + [ChromeOnly] + void setVibrationPermission(boolean permitted, + optional boolean persistent = true); +}; + +callback interface MozIdleObserver { + // Time is in seconds and is read only when idle observers are added + // and removed. + readonly attribute unsigned long time; + void onidle(); + void onactive(); +}; + +// nsIDOMNavigator +partial interface Navigator { + [Throws, Constant, Cached] + readonly attribute DOMString oscpu; + // WebKit/Blink support this; Trident/Presto do not. + readonly attribute DOMString vendor; + // WebKit/Blink supports this (hardcoded ""); Trident/Presto do not. + readonly attribute DOMString vendorSub; + // WebKit/Blink supports this (hardcoded "20030107"); Trident/Presto don't + readonly attribute DOMString productSub; + // WebKit/Blink/Trident/Presto support this. + readonly attribute boolean cookieEnabled; + [Throws, Constant, Cached] + readonly attribute DOMString buildID; + [Throws, ChromeOnly, UnsafeInPrerendering] + readonly attribute MozPowerManager mozPower; + + // WebKit/Blink/Trident/Presto support this. + [Throws] + boolean javaEnabled(); + + /** + * Navigator requests to add an idle observer to the existing window. + */ + [Throws, ChromeOnly] + void addIdleObserver(MozIdleObserver aIdleObserver); + + /** + * Navigator requests to remove an idle observer from the existing window. + */ + [Throws, ChromeOnly] + void removeIdleObserver(MozIdleObserver aIdleObserver); + + /** + * Request a wake lock for a resource. + * + * A page holds a wake lock to request that a resource not be turned + * off (or otherwise made unavailable). + * + * The topic is the name of a resource that might be made unavailable for + * various reasons. For example, on a mobile device the power manager might + * decide to turn off the screen after a period of idle time to save power. + * + * The resource manager checks the lock state of a topic before turning off + * the associated resource. For example, a page could hold a lock on the + * "screen" topic to prevent the screensaver from appearing or the screen + * from turning off. + * + * The resource manager defines what each topic means and sets policy. For + * example, the resource manager might decide to ignore 'screen' wake locks + * held by pages which are not visible. + * + * One topic can be locked multiple times; it is considered released only when + * all locks on the topic have been released. + * + * The returned MozWakeLock object is a token of the lock. You can + * unlock the lock via the object's |unlock| method. The lock is released + * automatically when its associated window is unloaded. + * + * @param aTopic resource name + */ + [Throws, Pref="dom.wakelock.enabled", Func="Navigator::HasWakeLockSupport", UnsafeInPrerendering] + MozWakeLock requestWakeLock(DOMString aTopic); + + /** + * Make CPU instruction subset information available for UpdateUtils. + */ + [ChromeOnly] + readonly attribute boolean cpuHasSSE2; +}; + +// nsIDOMNavigatorDesktopNotification +partial interface Navigator { + [Throws, Pref="notification.feature.enabled", UnsafeInPrerendering] + readonly attribute DesktopNotificationCenter mozNotification; +}; + +// NetworkInformation +partial interface Navigator { + [Throws, Pref="dom.netinfo.enabled"] + readonly attribute NetworkInformation connection; +}; + +#ifdef MOZ_GAMEPAD +// https://dvcs.w3.org/hg/gamepad/raw-file/default/gamepad.html#navigator-interface-extension +partial interface Navigator { + [Throws, Pref="dom.gamepad.enabled"] + sequence<Gamepad?> getGamepads(); +}; +partial interface Navigator { + [Pref="dom.gamepad.test.enabled"] + GamepadServiceTest requestGamepadServiceTest(); +}; +#endif // MOZ_GAMEPAD + +partial interface Navigator { + [Throws, Pref="dom.vr.enabled"] + Promise<sequence<VRDisplay>> getVRDisplays(); + // TODO: Use FrozenArray once available. (Bug 1236777) + [Frozen, Cached, Pure, Pref="dom.vr.enabled"] + readonly attribute sequence<VRDisplay> activeVRDisplays; +}; + +#ifdef MOZ_TIME_MANAGER +// nsIDOMMozNavigatorTime +partial interface Navigator { + [Throws, ChromeOnly, UnsafeInPrerendering] + readonly attribute MozTimeManager mozTime; +}; +#endif // MOZ_TIME_MANAGER + +#ifdef MOZ_AUDIO_CHANNEL_MANAGER +// nsIMozNavigatorAudioChannelManager +partial interface Navigator { + [Throws] + readonly attribute AudioChannelManager mozAudioChannelManager; +}; +#endif // MOZ_AUDIO_CHANNEL_MANAGER + +callback NavigatorUserMediaSuccessCallback = void (MediaStream stream); +callback NavigatorUserMediaErrorCallback = void (MediaStreamError error); + +partial interface Navigator { + [Throws, Func="Navigator::HasUserMediaSupport"] + readonly attribute MediaDevices mediaDevices; + + // Deprecated. Use mediaDevices.getUserMedia instead. + [Deprecated="NavigatorGetUserMedia", Throws, + Func="Navigator::HasUserMediaSupport", UnsafeInPrerendering] + void mozGetUserMedia(MediaStreamConstraints constraints, + NavigatorUserMediaSuccessCallback successCallback, + NavigatorUserMediaErrorCallback errorCallback); +}; + +// nsINavigatorUserMedia +callback MozGetUserMediaDevicesSuccessCallback = void (nsIVariant? devices); +partial interface Navigator { + [Throws, ChromeOnly] + void mozGetUserMediaDevices(MediaStreamConstraints constraints, + MozGetUserMediaDevicesSuccessCallback onsuccess, + NavigatorUserMediaErrorCallback onerror, + // The originating innerWindowID is needed to + // avoid calling the callbacks if the window has + // navigated away. It is optional only as legacy. + optional unsigned long long innerWindowID = 0, + // The callID is needed in case of multiple + // concurrent requests to find the right one. + // It is optional only as legacy. + // TODO: Rewrite to not need this method anymore, + // now that devices are enumerated earlier. + optional DOMString callID = ""); +}; + +// Service Workers/Navigation Controllers +partial interface Navigator { + [Func="ServiceWorkerContainer::IsEnabled", SameObject] + readonly attribute ServiceWorkerContainer serviceWorker; +}; + +partial interface Navigator { + [Throws, Pref="beacon.enabled"] + boolean sendBeacon(DOMString url, + optional (ArrayBufferView or Blob or DOMString or FormData)? data = null); +}; + +partial interface Navigator { + [Throws, Pref="dom.presentation.enabled", SameObject] + readonly attribute Presentation? presentation; +}; + +partial interface Navigator { + [NewObject, Func="mozilla::dom::TCPSocket::ShouldTCPSocketExist"] + readonly attribute LegacyMozTCPSocket mozTCPSocket; +}; + +partial interface Navigator { + [Pref="media.eme.apiVisible", NewObject] + Promise<MediaKeySystemAccess> + requestMediaKeySystemAccess(DOMString keySystem, + sequence<MediaKeySystemConfiguration> supportedConfigurations); +}; + +#ifdef NIGHTLY_BUILD +partial interface Navigator { + [Func="Navigator::IsE10sEnabled"] + readonly attribute boolean mozE10sEnabled; +}; +#endif + +[NoInterfaceObject, Exposed=(Window,Worker)] +interface NavigatorConcurrentHardware { + readonly attribute unsigned long long hardwareConcurrency; +}; diff --git a/dom/webidl/NetDashboard.webidl b/dom/webidl/NetDashboard.webidl new file mode 100644 index 0000000000..12bbb01f08 --- /dev/null +++ b/dom/webidl/NetDashboard.webidl @@ -0,0 +1,77 @@ +/* -*- 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/. */ + +dictionary SocketElement { + DOMString host = ""; + unsigned long port = 0; + boolean active = false; + boolean tcp = false; + double sent = 0; + double received = 0; +}; + +dictionary SocketsDict { + sequence<SocketElement> sockets; + double sent = 0; + double received = 0; +}; + +dictionary HttpConnInfo { + unsigned long rtt = 0; + unsigned long ttl = 0; + DOMString protocolVersion = ""; +}; + +dictionary HalfOpenInfoDict { + boolean speculative = false; +}; + +dictionary HttpConnectionElement { + DOMString host = ""; + unsigned long port = 0; + boolean spdy = false; + boolean ssl = false; + sequence<HttpConnInfo> active; + sequence<HttpConnInfo> idle; + sequence<HalfOpenInfoDict> halfOpens; +}; + +dictionary HttpConnDict { + sequence<HttpConnectionElement> connections; +}; + +dictionary WebSocketElement { + DOMString hostport = ""; + unsigned long msgsent = 0; + unsigned long msgreceived = 0; + double sentsize = 0; + double receivedsize = 0; + boolean encrypted = false; +}; + +dictionary WebSocketDict { + sequence<WebSocketElement> websockets; +}; + +dictionary DnsCacheEntry { + DOMString hostname = ""; + sequence<DOMString> hostaddr; + DOMString family = ""; + double expiration = 0; +}; + +dictionary DNSCacheDict { + sequence<DnsCacheEntry> entries; +}; + +dictionary DNSLookupDict { + sequence<DOMString> address; + DOMString error = ""; + boolean answer = false; +}; + +dictionary ConnStatusDict { + DOMString status = ""; +}; diff --git a/dom/webidl/NetworkInformation.webidl b/dom/webidl/NetworkInformation.webidl new file mode 100644 index 0000000000..3ad203af6b --- /dev/null +++ b/dom/webidl/NetworkInformation.webidl @@ -0,0 +1,25 @@ +/* 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/. + * + * The origin of this IDL file is https://w3c.github.io/netinfo/ + * + * Copyright © 2014 W3C® (MIT, ERCIM, Keio, Beihang), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +enum ConnectionType { + "cellular", + "bluetooth", + "ethernet", + "wifi", + "other", + "none", + "unknown" +}; + +[Pref="dom.netinfo.enabled"] +interface NetworkInformation : EventTarget { + readonly attribute ConnectionType type; + attribute EventHandler ontypechange; +}; diff --git a/dom/webidl/NetworkOptions.webidl b/dom/webidl/NetworkOptions.webidl new file mode 100644 index 0000000000..b313c932dd --- /dev/null +++ b/dom/webidl/NetworkOptions.webidl @@ -0,0 +1,109 @@ +/* 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/. */ + +/** +* This dictionary holds the parameters sent to the network worker. +*/ +dictionary NetworkCommandOptions +{ + long id = 0; // opaque id. + DOMString cmd = ""; // the command name. + DOMString ifname; // for "removeNetworkRoute", "setDNS", + // "setDefaultRouteAndDNS", "removeDefaultRoute" + // "addHostRoute", "removeHostRoute" + // "removeHostRoutes". + DOMString ip; // for "removeNetworkRoute", "setWifiTethering". + unsigned long prefixLength; // for "removeNetworkRoute". + DOMString domain; // for "setDNS" + sequence<DOMString> dnses; // for "setDNS", "setDefaultRouteAndDNS". + DOMString gateway; // for "addSecondaryRoute", "removeSecondaryRoute". + sequence<DOMString> gateways; // for "setDefaultRouteAndDNS", "removeDefaultRoute". + DOMString mode; // for "setWifiOperationMode". + boolean report; // for "setWifiOperationMode". + boolean enabled; // for "setDhcpServer". + DOMString wifictrlinterfacename; // for "setWifiTethering". + DOMString internalIfname; // for "setWifiTethering". + DOMString externalIfname; // for "setWifiTethering". + boolean enable; // for "setWifiTethering". + DOMString ssid; // for "setWifiTethering". + DOMString security; // for "setWifiTethering". + DOMString key; // for "setWifiTethering". + DOMString prefix; // for "setWifiTethering", "setDhcpServer". + DOMString link; // for "setWifiTethering", "setDhcpServer". + sequence<DOMString> interfaceList; // for "setWifiTethering". + DOMString wifiStartIp; // for "setWifiTethering". + DOMString wifiEndIp; // for "setWifiTethering". + DOMString usbStartIp; // for "setWifiTethering". + DOMString usbEndIp; // for "setWifiTethering". + DOMString dns1; // for "setWifiTethering". + DOMString dns2; // for "setWifiTethering". + long long threshold; // for "setNetworkInterfaceAlarm", + // "enableNetworkInterfaceAlarm". + DOMString startIp; // for "setDhcpServer". + DOMString endIp; // for "setDhcpServer". + DOMString serverIp; // for "setDhcpServer". + DOMString maskLength; // for "setDhcpServer". + DOMString preInternalIfname; // for "updateUpStream". + DOMString preExternalIfname; // for "updateUpStream". + DOMString curInternalIfname; // for "updateUpStream". + DOMString curExternalIfname; // for "updateUpStream". + + long ipaddr; // for "ifc_configure". + long mask; // for "ifc_configure". + long gateway_long; // for "ifc_configure". + long dns1_long; // for "ifc_configure". + long dns2_long; // for "ifc_configure". + + long mtu; // for "setMtu". +}; + +/** +* This dictionary holds the parameters sent back to NetworkService.js. +*/ +dictionary NetworkResultOptions +{ + long id = 0; // opaque id. + boolean ret = false; // for sync command. + boolean broadcast = false; // for netd broadcast message. + DOMString topic = ""; // for netd broadcast message. + DOMString reason = ""; // for netd broadcast message. + + long resultCode = 0; // for all commands. + DOMString resultReason = ""; // for all commands. + boolean error = false; // for all commands. + + boolean enable = false; // for "setWifiTethering", "setUSBTethering" + // "enableUsbRndis". + boolean result = false; // for "enableUsbRndis". + boolean success = false; // for "setDhcpServer". + DOMString curExternalIfname = ""; // for "updateUpStream". + DOMString curInternalIfname = ""; // for "updateUpStream". + + DOMString reply = ""; // for "command". + DOMString route = ""; // for "ifc_get_default_route". + DOMString ipaddr_str = ""; // The following are for the result of + // dhcp_do_request. + DOMString gateway_str = ""; + DOMString dns1_str = ""; + DOMString dns2_str = ""; + DOMString mask_str = ""; + DOMString server_str = ""; + DOMString vendor_str = ""; + long lease = 0; + long prefixLength = 0; + long mask = 0; + long ipaddr = 0; + long gateway = 0; + long dns1 = 0; + long dns2 = 0; + long server = 0; + + DOMString netId = ""; // for "getNetId". + + sequence<DOMString> interfaceList; // for "getInterfaceList". + + DOMString flag = "down"; // for "getInterfaceConfig". + DOMString macAddr = ""; // for "getInterfaceConfig". + DOMString ipAddr = ""; // for "getInterfaceConfig". +}; diff --git a/dom/webidl/Node.webidl b/dom/webidl/Node.webidl new file mode 100644 index 0000000000..7d18899b03 --- /dev/null +++ b/dom/webidl/Node.webidl @@ -0,0 +1,115 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/2012/WD-dom-20120105/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface Principal; +interface URI; + +interface Node : EventTarget { + const unsigned short ELEMENT_NODE = 1; + const unsigned short ATTRIBUTE_NODE = 2; // historical + const unsigned short TEXT_NODE = 3; + const unsigned short CDATA_SECTION_NODE = 4; // historical + const unsigned short ENTITY_REFERENCE_NODE = 5; // historical + const unsigned short ENTITY_NODE = 6; // historical + const unsigned short PROCESSING_INSTRUCTION_NODE = 7; + const unsigned short COMMENT_NODE = 8; + const unsigned short DOCUMENT_NODE = 9; + const unsigned short DOCUMENT_TYPE_NODE = 10; + const unsigned short DOCUMENT_FRAGMENT_NODE = 11; + const unsigned short NOTATION_NODE = 12; // historical + [Constant] + readonly attribute unsigned short nodeType; + [Pure] + readonly attribute DOMString nodeName; + + [Pure, Throws] + readonly attribute DOMString? baseURI; + + [Pure, BinaryName=getComposedDoc] + readonly attribute boolean isConnected; + [Pure] + readonly attribute Document? ownerDocument; + [Pure, Pref="dom.node.rootNode.enabled"] + readonly attribute Node rootNode; + [Pure] + readonly attribute Node? parentNode; + [Pure] + readonly attribute Element? parentElement; + [Pure] + boolean hasChildNodes(); + [SameObject] + readonly attribute NodeList childNodes; + [Pure] + readonly attribute Node? firstChild; + [Pure] + readonly attribute Node? lastChild; + [Pure] + readonly attribute Node? previousSibling; + [Pure] + readonly attribute Node? nextSibling; + + [SetterThrows, Pure] + attribute DOMString? nodeValue; + [Throws, Pure] + attribute DOMString? textContent; + [Throws] + Node insertBefore(Node node, Node? child); + [Throws] + Node appendChild(Node node); + [Throws] + Node replaceChild(Node node, Node child); + [Throws] + Node removeChild(Node child); + void normalize(); + + [Throws] + Node cloneNode(optional boolean deep = false); + [Pure] + boolean isSameNode(Node? node); + [Pure] + boolean isEqualNode(Node? node); + + const unsigned short DOCUMENT_POSITION_DISCONNECTED = 0x01; + const unsigned short DOCUMENT_POSITION_PRECEDING = 0x02; + const unsigned short DOCUMENT_POSITION_FOLLOWING = 0x04; + const unsigned short DOCUMENT_POSITION_CONTAINS = 0x08; + const unsigned short DOCUMENT_POSITION_CONTAINED_BY = 0x10; + const unsigned short DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC = 0x20; // historical + [Pure] + unsigned short compareDocumentPosition(Node other); + [Pure] + boolean contains(Node? other); + + [Pure] + DOMString? lookupPrefix(DOMString? namespace); + [Pure] + DOMString? lookupNamespaceURI(DOMString? prefix); + [Pure] + boolean isDefaultNamespace(DOMString? namespace); + + // Mozilla-specific stuff + [Throws, Func="IsChromeOrXBL"] + any setUserData(DOMString key, any data); + [Throws, Func="IsChromeOrXBL"] + any getUserData(DOMString key); + [ChromeOnly] + readonly attribute Principal nodePrincipal; + [ChromeOnly] + readonly attribute URI? baseURIObject; + [ChromeOnly] + sequence<MutationObserver> getBoundMutationObservers(); + +#ifdef ACCESSIBILITY + [Pref="accessibility.AOM.enabled"] + readonly attribute AccessibleNode? accessibleNode; +#endif +}; diff --git a/dom/webidl/NodeFilter.webidl b/dom/webidl/NodeFilter.webidl new file mode 100644 index 0000000000..6da959dc93 --- /dev/null +++ b/dom/webidl/NodeFilter.webidl @@ -0,0 +1,32 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://dom.spec.whatwg.org/#interface-nodefilter + */ + +callback interface NodeFilter { + // Constants for acceptNode() + const unsigned short FILTER_ACCEPT = 1; + const unsigned short FILTER_REJECT = 2; + const unsigned short FILTER_SKIP = 3; + + // Constants for whatToShow + const unsigned long SHOW_ALL = 0xFFFFFFFF; + const unsigned long SHOW_ELEMENT = 0x1; + const unsigned long SHOW_ATTRIBUTE = 0x2; // historical + const unsigned long SHOW_TEXT = 0x4; + const unsigned long SHOW_CDATA_SECTION = 0x8; // historical + const unsigned long SHOW_ENTITY_REFERENCE = 0x10; // historical + const unsigned long SHOW_ENTITY = 0x20; // historical + const unsigned long SHOW_PROCESSING_INSTRUCTION = 0x40; + const unsigned long SHOW_COMMENT = 0x80; + const unsigned long SHOW_DOCUMENT = 0x100; + const unsigned long SHOW_DOCUMENT_TYPE = 0x200; + const unsigned long SHOW_DOCUMENT_FRAGMENT = 0x400; + const unsigned long SHOW_NOTATION = 0x800; // historical + + unsigned short acceptNode(Node node); +}; diff --git a/dom/webidl/NodeIterator.webidl b/dom/webidl/NodeIterator.webidl new file mode 100644 index 0000000000..201b382a0d --- /dev/null +++ b/dom/webidl/NodeIterator.webidl @@ -0,0 +1,31 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/2012/WD-dom-20120105/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface NodeIterator { + [Constant] + readonly attribute Node root; + [Pure] + readonly attribute Node? referenceNode; + [Pure] + readonly attribute boolean pointerBeforeReferenceNode; + [Constant] + readonly attribute unsigned long whatToShow; + [Constant] + readonly attribute NodeFilter? filter; + + [Throws] + Node? nextNode(); + [Throws] + Node? previousNode(); + + void detach(); +}; diff --git a/dom/webidl/NodeList.webidl b/dom/webidl/NodeList.webidl new file mode 100644 index 0000000000..d6c981e11e --- /dev/null +++ b/dom/webidl/NodeList.webidl @@ -0,0 +1,17 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/2012/WD-dom-20120105/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface NodeList { + getter Node? item(unsigned long index); + readonly attribute unsigned long length; + iterable<Node?>; +}; diff --git a/dom/webidl/Notification.webidl b/dom/webidl/Notification.webidl new file mode 100644 index 0000000000..7a55a52ae9 --- /dev/null +++ b/dom/webidl/Notification.webidl @@ -0,0 +1,105 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://notifications.spec.whatwg.org/ + * + * Copyright: + * To the extent possible under law, the editors have waived all copyright and + * related or neighboring rights to this work. + */ + +[Constructor(DOMString title, optional NotificationOptions options), + Exposed=(Window,Worker), + Func="mozilla::dom::Notification::PrefEnabled", + UnsafeInPrerendering] +interface Notification : EventTarget { + [GetterThrows] + static readonly attribute NotificationPermission permission; + + [Throws, Func="mozilla::dom::Notification::RequestPermissionEnabledForScope"] + static Promise<NotificationPermission> requestPermission(optional NotificationPermissionCallback permissionCallback); + + [Throws, Func="mozilla::dom::Notification::IsGetEnabled"] + static Promise<sequence<Notification>> get(optional GetNotificationOptions filter); + + attribute EventHandler onclick; + + attribute EventHandler onshow; + + attribute EventHandler onerror; + + attribute EventHandler onclose; + + [Pure] + readonly attribute DOMString title; + + [Pure] + readonly attribute NotificationDirection dir; + + [Pure] + readonly attribute DOMString? lang; + + [Pure] + readonly attribute DOMString? body; + + [Constant] + readonly attribute DOMString? tag; + + [Pure] + readonly attribute DOMString? icon; + + [Constant, Func="mozilla::dom::Notification::RequireInteractionEnabled"] + readonly attribute boolean requireInteraction; + + [Constant] + readonly attribute any data; + + void close(); +}; + +dictionary NotificationOptions { + NotificationDirection dir = "auto"; + DOMString lang = ""; + DOMString body = ""; + DOMString tag = ""; + DOMString icon = ""; + boolean requireInteraction = false; + any data = null; + NotificationBehavior mozbehavior = null; +}; + +dictionary GetNotificationOptions { + DOMString tag = ""; +}; + +dictionary NotificationBehavior { + boolean noscreen = false; + boolean noclear = false; + boolean showOnlyOnce = false; + DOMString soundFile = ""; + sequence<unsigned long> vibrationPattern; +}; + +enum NotificationPermission { + "default", + "denied", + "granted" +}; + +callback NotificationPermissionCallback = void (NotificationPermission permission); + +enum NotificationDirection { + "auto", + "ltr", + "rtl" +}; + +partial interface ServiceWorkerRegistration { + [Throws, Func="mozilla::dom::ServiceWorkerRegistration::NotificationAPIVisible"] + Promise<void> showNotification(DOMString title, optional NotificationOptions options); + [Throws, Func="mozilla::dom::ServiceWorkerRegistration::NotificationAPIVisible"] + Promise<sequence<Notification>> getNotifications(optional GetNotificationOptions filter); +}; diff --git a/dom/webidl/NotificationEvent.webidl b/dom/webidl/NotificationEvent.webidl new file mode 100644 index 0000000000..3f25cf1b82 --- /dev/null +++ b/dom/webidl/NotificationEvent.webidl @@ -0,0 +1,27 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://notifications.spec.whatwg.org/ + * + * Copyright: + * To the extent possible under law, the editors have waived all copyright and + * related or neighboring rights to this work. + */ + +[Constructor(DOMString type, NotificationEventInit eventInitDict), + Exposed=ServiceWorker,Func="mozilla::dom::Notification::PrefEnabled"] +interface NotificationEvent : ExtendableEvent { + readonly attribute Notification notification; +}; + +dictionary NotificationEventInit : ExtendableEventInit { + required Notification notification; +}; + +partial interface ServiceWorkerGlobalScope { + attribute EventHandler onnotificationclick; + attribute EventHandler onnotificationclose; +}; diff --git a/dom/webidl/NotifyPaintEvent.webidl b/dom/webidl/NotifyPaintEvent.webidl new file mode 100644 index 0000000000..799abbb299 --- /dev/null +++ b/dom/webidl/NotifyPaintEvent.webidl @@ -0,0 +1,18 @@ +/* -*- 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/. + * + * For more information about this interface see nsIDOMNotifyPaintEvent.idl + */ + +interface NotifyPaintEvent : Event +{ + readonly attribute DOMRectList clientRects; + + readonly attribute DOMRect boundingClientRect; + + readonly attribute PaintRequestList paintRequests; + + readonly attribute unsigned long long transactionId; +}; diff --git a/dom/webidl/OfflineAudioCompletionEvent.webidl b/dom/webidl/OfflineAudioCompletionEvent.webidl new file mode 100644 index 0000000000..0203bfa101 --- /dev/null +++ b/dom/webidl/OfflineAudioCompletionEvent.webidl @@ -0,0 +1,19 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * https://webaudio.github.io/web-audio-api/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +[Pref="dom.webaudio.enabled"] +interface OfflineAudioCompletionEvent : Event { + + readonly attribute AudioBuffer renderedBuffer; + +}; + diff --git a/dom/webidl/OfflineAudioContext.webidl b/dom/webidl/OfflineAudioContext.webidl new file mode 100644 index 0000000000..51dc683f74 --- /dev/null +++ b/dom/webidl/OfflineAudioContext.webidl @@ -0,0 +1,23 @@ +/* -*- Mode: IDL; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* 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/. + * + * The origin of this IDL file is + * https://webaudio.github.io/web-audio-api/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +[Constructor(unsigned long numberOfChannels, unsigned long length, float sampleRate), +Pref="dom.webaudio.enabled"] +interface OfflineAudioContext : AudioContext { + + [Throws] + Promise<AudioBuffer> startRendering(); + + attribute EventHandler oncomplete; + readonly attribute unsigned long length; + +}; diff --git a/dom/webidl/OfflineResourceList.webidl b/dom/webidl/OfflineResourceList.webidl new file mode 100644 index 0000000000..abc5118881 --- /dev/null +++ b/dom/webidl/OfflineResourceList.webidl @@ -0,0 +1,116 @@ +/* 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/. */ + +interface OfflineResourceList : EventTarget { + /** + * State of the application cache this object is associated with. + */ + + /* This object is not associated with an application cache. */ + const unsigned short UNCACHED = 0; + + /* The application cache is not being updated. */ + const unsigned short IDLE = 1; + + /* The manifest is being fetched and checked for updates */ + const unsigned short CHECKING = 2; + + /* Resources are being downloaded to be added to the cache */ + const unsigned short DOWNLOADING = 3; + + /* There is a new version of the application cache available */ + const unsigned short UPDATEREADY = 4; + + /* The application cache group is now obsolete. */ + const unsigned short OBSOLETE = 5; + + [Throws, UseCounter] + readonly attribute unsigned short status; + + /** + * Begin the application update process on the associated application cache. + */ + [Throws, UseCounter] + void update(); + + /** + * Swap in the newest version of the application cache, or disassociate + * from the cache if the cache group is obsolete. + */ + [Throws, UseCounter] + void swapCache(); + + /* Events */ + [UseCounter] + attribute EventHandler onchecking; + [UseCounter] + attribute EventHandler onerror; + [UseCounter] + attribute EventHandler onnoupdate; + [UseCounter] + attribute EventHandler ondownloading; + [UseCounter] + attribute EventHandler onprogress; + [UseCounter] + attribute EventHandler onupdateready; + [UseCounter] + attribute EventHandler oncached; + [UseCounter] + attribute EventHandler onobsolete; +}; + +// Mozilla extensions. +partial interface OfflineResourceList { + /** + * Get the list of dynamically-managed entries. + */ + [Throws] + readonly attribute DOMStringList mozItems; + + /** + * Check that an entry exists in the list of dynamically-managed entries. + * + * @param uri + * The resource to check. + */ + [Throws] + boolean mozHasItem(DOMString uri); + + /** + * Get the number of dynamically-managed entries. + * @status DEPRECATED + * Clients should use the "items" attribute. + */ + [Throws] + readonly attribute unsigned long mozLength; + + /** + * Get the URI of a dynamically-managed entry. + * @status DEPRECATED + * Clients should use the "items" attribute. + */ + [Throws] + getter DOMString mozItem(unsigned long index); + + /** + * Add an item to the list of dynamically-managed entries. The resource + * will be fetched into the application cache. + * + * @param uri + * The resource to add. + */ + [Throws] + void mozAdd(DOMString uri); + + /** + * Remove an item from the list of dynamically-managed entries. If this + * was the last reference to a URI in the application cache, the cache + * entry will be removed. + * + * @param uri + * The resource to remove. + */ + [Throws] + void mozRemove(DOMString uri); +}; diff --git a/dom/webidl/OffscreenCanvas.webidl b/dom/webidl/OffscreenCanvas.webidl new file mode 100644 index 0000000000..ffe2b91473 --- /dev/null +++ b/dom/webidl/OffscreenCanvas.webidl @@ -0,0 +1,29 @@ +/* -*- 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/. + * + * For more information on this interface, please see + * https://wiki.whatwg.org/wiki/OffscreenCanvas + */ + +[Constructor(unsigned long width, unsigned long height), + Exposed=(Window,Worker), + Func="mozilla::dom::OffscreenCanvas::PrefEnabled"] +interface OffscreenCanvas : EventTarget { + [Pure, SetterThrows] + attribute unsigned long width; + [Pure, SetterThrows] + attribute unsigned long height; + + [Throws] + nsISupports? getContext(DOMString contextId, + optional any contextOptions = null); + + ImageBitmap transferToImageBitmap(); + [Throws] + Promise<Blob> toBlob(optional DOMString type = "", + optional any encoderOptions); +}; + +// OffscreenCanvas implements Transferable; diff --git a/dom/webidl/OscillatorNode.webidl b/dom/webidl/OscillatorNode.webidl new file mode 100644 index 0000000000..2688970809 --- /dev/null +++ b/dom/webidl/OscillatorNode.webidl @@ -0,0 +1,42 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * https://webaudio.github.io/web-audio-api/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +enum OscillatorType { + "sine", + "square", + "sawtooth", + "triangle", + "custom" +}; + +[Pref="dom.webaudio.enabled"] +interface OscillatorNode : AudioNode { + + [SetterThrows] + attribute OscillatorType type; + + readonly attribute AudioParam frequency; // in Hertz + readonly attribute AudioParam detune; // in Cents + + [Throws, UnsafeInPrerendering] + void start(optional double when = 0); + [Throws, UnsafeInPrerendering] + void stop(optional double when = 0); + void setPeriodicWave(PeriodicWave periodicWave); + + attribute EventHandler onended; + +}; + +// Mozilla extensions +OscillatorNode implements AudioNodePassThrough; + diff --git a/dom/webidl/PageTransitionEvent.webidl b/dom/webidl/PageTransitionEvent.webidl new file mode 100644 index 0000000000..d4a050c192 --- /dev/null +++ b/dom/webidl/PageTransitionEvent.webidl @@ -0,0 +1,27 @@ +/* -*- 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/. + */ + +/** + * The PageTransitionEvent interface is used for the pageshow and + * pagehide events, which are generic events that apply to both page + * load/unload and saving/restoring a document from session history. + */ + +[Constructor(DOMString type, optional PageTransitionEventInit eventInitDict)] +interface PageTransitionEvent : Event +{ + /** + * Set to true if the document has been or will be persisted across + * firing of the event. For example, if a document is being cached in + * session history, |persisted| is true for the PageHide event. + */ + readonly attribute boolean persisted; +}; + +dictionary PageTransitionEventInit : EventInit +{ + boolean persisted = false; +}; diff --git a/dom/webidl/PaintRequest.webidl b/dom/webidl/PaintRequest.webidl new file mode 100644 index 0000000000..065be08663 --- /dev/null +++ b/dom/webidl/PaintRequest.webidl @@ -0,0 +1,24 @@ +/* -*- 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/. */ + +/** + * These objects are exposed by the MozDOMAfterPaint event. Each one represents + * a request to repaint a rectangle that was generated by the browser. + */ +interface PaintRequest { + /** + * The client rect where invalidation was triggered. + */ + readonly attribute DOMRect clientRect; + + /** + * The reason for the request, as a string. If an empty string, then we don't know + * the reason (this is common). Reasons include "scroll repaint", meaning that we + * needed to repaint the rectangle due to scrolling, and "scroll copy", meaning + * that we updated the rectangle due to scrolling but instead of painting + * manually, we were able to do a copy from another area of the screen. + */ + readonly attribute DOMString reason; +}; diff --git a/dom/webidl/PaintRequestList.webidl b/dom/webidl/PaintRequestList.webidl new file mode 100644 index 0000000000..d14f18a733 --- /dev/null +++ b/dom/webidl/PaintRequestList.webidl @@ -0,0 +1,10 @@ +/* -*- 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/. + */ + +interface PaintRequestList { + readonly attribute unsigned long length; + getter PaintRequest? item(unsigned long index); +}; diff --git a/dom/webidl/PannerNode.webidl b/dom/webidl/PannerNode.webidl new file mode 100644 index 0000000000..86b8928524 --- /dev/null +++ b/dom/webidl/PannerNode.webidl @@ -0,0 +1,61 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * https://webaudio.github.io/web-audio-api/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +enum PanningModelType { + "equalpower", + "HRTF" +}; + +enum DistanceModelType { + "linear", + "inverse", + "exponential" +}; + +[Pref="dom.webaudio.enabled"] +interface PannerNode : AudioNode { + + // Default for stereo is equalpower + attribute PanningModelType panningModel; + + // Uses a 3D cartesian coordinate system + void setPosition(double x, double y, double z); + void setOrientation(double x, double y, double z); + [Deprecated="PannerNodeDoppler"] + void setVelocity(double x, double y, double z); + + // Cartesian coordinate for position + readonly attribute AudioParam positionX; + readonly attribute AudioParam positionY; + readonly attribute AudioParam positionZ; + + // Cartesian coordinate for orientation + readonly attribute AudioParam orientationX; + readonly attribute AudioParam orientationY; + readonly attribute AudioParam orientationZ; + + // Distance model and attributes + attribute DistanceModelType distanceModel; + attribute double refDistance; + attribute double maxDistance; + attribute double rolloffFactor; + + // Directional sound cone + attribute double coneInnerAngle; + attribute double coneOuterAngle; + attribute double coneOuterGain; + +}; + +// Mozilla extension +PannerNode implements AudioNodePassThrough; + diff --git a/dom/webidl/ParentNode.webidl b/dom/webidl/ParentNode.webidl new file mode 100644 index 0000000000..5834b9be3f --- /dev/null +++ b/dom/webidl/ParentNode.webidl @@ -0,0 +1,25 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://dom.spec.whatwg.org/#interface-parentnode + */ + +[NoInterfaceObject] +interface ParentNode { + [Constant] + readonly attribute HTMLCollection children; + [Pure] + readonly attribute Element? firstElementChild; + [Pure] + readonly attribute Element? lastElementChild; + [Pure] + readonly attribute unsigned long childElementCount; + + [Throws, Unscopable] + void prepend((Node or DOMString)... nodes); + [Throws, Unscopable] + void append((Node or DOMString)... nodes); +}; diff --git a/dom/webidl/PeerConnectionImpl.webidl b/dom/webidl/PeerConnectionImpl.webidl new file mode 100644 index 0000000000..f3348aec82 --- /dev/null +++ b/dom/webidl/PeerConnectionImpl.webidl @@ -0,0 +1,107 @@ +/* -*- 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/. + * + * PeerConnection.js' interface to the C++ PeerConnectionImpl. + * + * Do not confuse with RTCPeerConnection. This interface is purely for + * communication between the PeerConnection JS DOM binding and the C++ + * implementation in SIPCC. + * + * See media/webrtc/signaling/include/PeerConnectionImpl.h + * + */ + +interface nsISupports; + +/* Must be created first. Observer events will be dispatched on the thread provided */ +[ChromeOnly, Constructor] +interface PeerConnectionImpl { + /* Must be called first. Observer events dispatched on the thread provided */ + [Throws] + void initialize(PeerConnectionObserver observer, Window window, + RTCConfiguration iceServers, + nsISupports thread); + + /* JSEP calls */ + [Throws] + void createOffer(optional RTCOfferOptions options); + [Throws] + void createAnswer(); + [Throws] + void setLocalDescription(long action, DOMString sdp); + [Throws] + void setRemoteDescription(long action, DOMString sdp); + + /* Stats call, calls either |onGetStatsSuccess| or |onGetStatsError| on our + observer. (see the |PeerConnectionObserver| interface) */ + [Throws] + void getStats(MediaStreamTrack? selector); + + /* Adds the tracks created by GetUserMedia */ + [Throws] + void addTrack(MediaStreamTrack track, MediaStream... streams); + [Throws] + void removeTrack(MediaStreamTrack track); + [Throws] + void insertDTMF(RTCRtpSender sender, DOMString tones, + optional unsigned long duration = 100, + optional unsigned long interToneGap = 70); + [Throws] + DOMString getDTMFToneBuffer(RTCRtpSender sender); + [Throws] + void replaceTrack(MediaStreamTrack thisTrack, MediaStreamTrack withTrack); + [Throws] + void setParameters(MediaStreamTrack track, + optional RTCRtpParameters parameters); + [Throws] + RTCRtpParameters getParameters(MediaStreamTrack track); + [Throws] + void closeStreams(); + + sequence<MediaStream> getLocalStreams(); + sequence<MediaStream> getRemoteStreams(); + + void selectSsrc(MediaStreamTrack recvTrack, unsigned short ssrcIndex); + + /* As the ICE candidates roll in this one should be called each time + * in order to keep the candidate list up-to-date for the next SDP-related + * call PeerConnectionImpl does not parse ICE candidates, just sticks them + * into the SDP. + */ + [Throws] + void addIceCandidate(DOMString candidate, DOMString mid, unsigned short level); + + /* Puts the SIPCC engine back to 'kIdle', shuts down threads, deletes state */ + void close(); + + /* Notify DOM window if this plugin crash is ours. */ + boolean pluginCrash(unsigned long long pluginId, DOMString name); + + /* Attributes */ + /* This provides the implementation with the certificate it uses to + * authenticate itself. The JS side must set this before calling + * createOffer/createAnswer or retrieving the value of fingerprint. This has + * to be delayed because generating the certificate takes some time. */ + attribute RTCCertificate certificate; + [Constant] + readonly attribute DOMString fingerprint; + readonly attribute DOMString localDescription; + readonly attribute DOMString remoteDescription; + + readonly attribute PCImplIceConnectionState iceConnectionState; + readonly attribute PCImplIceGatheringState iceGatheringState; + readonly attribute PCImplSignalingState signalingState; + attribute DOMString id; + + attribute DOMString peerIdentity; + readonly attribute boolean privacyRequested; + + /* Data channels */ + [Throws] + DataChannel createDataChannel(DOMString label, DOMString protocol, + unsigned short type, boolean outOfOrderAllowed, + unsigned short maxTime, unsigned short maxNum, + boolean externalNegotiated, unsigned short stream); +}; diff --git a/dom/webidl/PeerConnectionImplEnums.webidl b/dom/webidl/PeerConnectionImplEnums.webidl new file mode 100644 index 0000000000..e9ce815f83 --- /dev/null +++ b/dom/webidl/PeerConnectionImplEnums.webidl @@ -0,0 +1,42 @@ +/* -*- 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/. + * + * This is in a separate file so it can be shared with unittests. + */ + +/* Must be in the same order as comparable fsmdef_states_t in fsmdef_states.h */ +enum PCImplSignalingState { + "SignalingInvalid", + "SignalingStable", + "SignalingHaveLocalOffer", + "SignalingHaveRemoteOffer", + "SignalingHaveLocalPranswer", + "SignalingHaveRemotePranswer", + "SignalingClosed", +}; + +enum PCImplSipccState { + "Idle", + "Starting", + "Started" +}; + +enum PCImplIceConnectionState { + "new", + "checking", + "connected", + "completed", + "failed", + "disconnected", + "closed" +}; + +// Deliberately identical to the values specified in webrtc +enum PCImplIceGatheringState { + "new", + "gathering", + "complete" +}; + diff --git a/dom/webidl/PeerConnectionObserver.webidl b/dom/webidl/PeerConnectionObserver.webidl new file mode 100644 index 0000000000..da6ea2aa04 --- /dev/null +++ b/dom/webidl/PeerConnectionObserver.webidl @@ -0,0 +1,50 @@ +/* -*- 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/. + */ + +interface nsISupports; + +[ChromeOnly, + JSImplementation="@mozilla.org/dom/peerconnectionobserver;1", + Constructor (RTCPeerConnection domPC)] +interface PeerConnectionObserver +{ + /* JSEP callbacks */ + void onCreateOfferSuccess(DOMString offer); + void onCreateOfferError(unsigned long name, DOMString message); + void onCreateAnswerSuccess(DOMString answer); + void onCreateAnswerError(unsigned long name, DOMString message); + void onSetLocalDescriptionSuccess(); + void onSetRemoteDescriptionSuccess(); + void onSetLocalDescriptionError(unsigned long name, DOMString message); + void onSetRemoteDescriptionError(unsigned long name, DOMString message); + void onAddIceCandidateSuccess(); + void onAddIceCandidateError(unsigned long name, DOMString message); + void onIceCandidate(unsigned short level, DOMString mid, DOMString candidate); + void onNegotiationNeeded(); + + /* Stats callbacks */ + void onGetStatsSuccess(optional RTCStatsReportInternal report); + void onGetStatsError(unsigned long name, DOMString message); + + /* replaceTrack callbacks */ + void onReplaceTrackSuccess(); + void onReplaceTrackError(unsigned long name, DOMString message); + + /* Data channel callbacks */ + void notifyDataChannel(DataChannel channel); + + /* Notification of one of several types of state changed */ + void onStateChange(PCObserverStateType state); + + /* Changes to MediaStreamTracks */ + void onAddStream(MediaStream stream); + void onRemoveStream(MediaStream stream); + void onAddTrack(MediaStreamTrack track, sequence<MediaStream> streams); + void onRemoveTrack(MediaStreamTrack track); + + /* DTMF callback */ + void onDTMFToneChange(DOMString trackId, DOMString tone); +}; diff --git a/dom/webidl/PeerConnectionObserverEnums.webidl b/dom/webidl/PeerConnectionObserverEnums.webidl new file mode 100644 index 0000000000..6f7c61c924 --- /dev/null +++ b/dom/webidl/PeerConnectionObserverEnums.webidl @@ -0,0 +1,16 @@ +/* -*- 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/. + * + * This is in a separate file so it can be shared with unittests. + */ + +enum PCObserverStateType { + "None", + "IceConnectionState", + "IceGatheringState", + "SdpState", + "SipccState", + "SignalingState" +}; diff --git a/dom/webidl/Performance.webidl b/dom/webidl/Performance.webidl new file mode 100644 index 0000000000..eaede253cf --- /dev/null +++ b/dom/webidl/Performance.webidl @@ -0,0 +1,74 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://w3c.github.io/hr-time/ + * + * Copyright © 2015 W3C® (MIT, ERCIM, Keio, Beihang). + * W3C liability, trademark and document use rules apply. + */ + +typedef double DOMHighResTimeStamp; +typedef sequence <PerformanceEntry> PerformanceEntryList; + +[Exposed=(Window,Worker)] +interface Performance { + [DependsOn=DeviceState, Affects=Nothing] + DOMHighResTimeStamp now(); +}; + +[Exposed=Window] +partial interface Performance { + [Constant] + readonly attribute PerformanceTiming timing; + [Constant] + readonly attribute PerformanceNavigation navigation; + + jsonifier; +}; + +// http://www.w3.org/TR/performance-timeline/#sec-window.performance-attribute +[Exposed=(Window,Worker)] +partial interface Performance { + [Func="Performance::IsEnabled"] + PerformanceEntryList getEntries(); + [Func="Performance::IsEnabled"] + PerformanceEntryList getEntriesByType(DOMString entryType); + [Func="Performance::IsEnabled"] + PerformanceEntryList getEntriesByName(DOMString name, optional DOMString + entryType); +}; + +// http://www.w3.org/TR/resource-timing/#extensions-performance-interface +[Exposed=Window] +partial interface Performance { + [Func="Performance::IsEnabled"] + void clearResourceTimings(); + [Func="Performance::IsEnabled"] + void setResourceTimingBufferSize(unsigned long maxSize); + [Func="Performance::IsEnabled"] + attribute EventHandler onresourcetimingbufferfull; +}; + +// GC microbenchmarks, pref-guarded, not for general use (bug 1125412) +[Exposed=Window] +partial interface Performance { + [Pref="dom.enable_memory_stats"] + readonly attribute object mozMemory; +}; + +// http://www.w3.org/TR/user-timing/ +[Exposed=(Window,Worker)] +partial interface Performance { + [Func="Performance::IsEnabled", Throws] + void mark(DOMString markName); + [Func="Performance::IsEnabled"] + void clearMarks(optional DOMString markName); + [Func="Performance::IsEnabled", Throws] + void measure(DOMString measureName, optional DOMString startMark, optional DOMString endMark); + [Func="Performance::IsEnabled"] + void clearMeasures(optional DOMString measureName); +}; + diff --git a/dom/webidl/PerformanceEntry.webidl b/dom/webidl/PerformanceEntry.webidl new file mode 100644 index 0000000000..6cc37b845b --- /dev/null +++ b/dom/webidl/PerformanceEntry.webidl @@ -0,0 +1,22 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3c-test.org/webperf/specs/PerformanceTimeline/#sec-PerformanceEntry-interface + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +[Exposed=(Window,Worker)] +interface PerformanceEntry +{ + readonly attribute DOMString name; + readonly attribute DOMString entryType; + readonly attribute DOMHighResTimeStamp startTime; + readonly attribute DOMHighResTimeStamp duration; + + jsonifier; +}; diff --git a/dom/webidl/PerformanceEntryEvent.webidl b/dom/webidl/PerformanceEntryEvent.webidl new file mode 100644 index 0000000000..2cf75c5e44 --- /dev/null +++ b/dom/webidl/PerformanceEntryEvent.webidl @@ -0,0 +1,27 @@ +/* -*- 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/. + */ + +dictionary PerformanceEntryEventInit : EventInit +{ + DOMString name = ""; + DOMString entryType = ""; + DOMHighResTimeStamp startTime = 0; + DOMHighResTimeStamp duration = 0; + double epoch = 0; + DOMString origin = ""; +}; + +[Constructor(DOMString type, optional PerformanceEntryEventInit eventInitDict), + ChromeOnly] +interface PerformanceEntryEvent : Event +{ + readonly attribute DOMString name; + readonly attribute DOMString entryType; + readonly attribute DOMHighResTimeStamp startTime; + readonly attribute DOMHighResTimeStamp duration; + readonly attribute double epoch; + readonly attribute DOMString origin; +}; diff --git a/dom/webidl/PerformanceMark.webidl b/dom/webidl/PerformanceMark.webidl new file mode 100644 index 0000000000..20e9e92c02 --- /dev/null +++ b/dom/webidl/PerformanceMark.webidl @@ -0,0 +1,13 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/user-timing/#performancemark + */ + +[Exposed=(Window,Worker)] +interface PerformanceMark : PerformanceEntry +{ +}; diff --git a/dom/webidl/PerformanceMeasure.webidl b/dom/webidl/PerformanceMeasure.webidl new file mode 100644 index 0000000000..aa4e8cd256 --- /dev/null +++ b/dom/webidl/PerformanceMeasure.webidl @@ -0,0 +1,13 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/user-timing/#performancemeasure + */ + +[Exposed=(Window,Worker)] +interface PerformanceMeasure : PerformanceEntry +{ +}; diff --git a/dom/webidl/PerformanceNavigation.webidl b/dom/webidl/PerformanceNavigation.webidl new file mode 100644 index 0000000000..771cf7e98c --- /dev/null +++ b/dom/webidl/PerformanceNavigation.webidl @@ -0,0 +1,23 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/hr-time/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface PerformanceNavigation { + const unsigned short TYPE_NAVIGATE = 0; + const unsigned short TYPE_RELOAD = 1; + const unsigned short TYPE_BACK_FORWARD = 2; + const unsigned short TYPE_RESERVED = 255; + + readonly attribute unsigned short type; + readonly attribute unsigned short redirectCount; + + jsonifier; +}; diff --git a/dom/webidl/PerformanceObserver.webidl b/dom/webidl/PerformanceObserver.webidl new file mode 100644 index 0000000000..a3a14cb1e5 --- /dev/null +++ b/dom/webidl/PerformanceObserver.webidl @@ -0,0 +1,23 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * https://w3c.github.io/performance-timeline/#the-performanceobserver-interface + */ + +dictionary PerformanceObserverInit { + required sequence<DOMString> entryTypes; +}; + +callback PerformanceObserverCallback = void (PerformanceObserverEntryList entries, PerformanceObserver observer); + +[Func="Performance::IsObserverEnabled", + Constructor(PerformanceObserverCallback callback), + Exposed=(Window,Worker)] +interface PerformanceObserver { + [Throws] + void observe(PerformanceObserverInit options); + void disconnect(); +}; diff --git a/dom/webidl/PerformanceObserverEntryList.webidl b/dom/webidl/PerformanceObserverEntryList.webidl new file mode 100644 index 0000000000..cff4ee1b03 --- /dev/null +++ b/dom/webidl/PerformanceObserverEntryList.webidl @@ -0,0 +1,24 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * https://w3c.github.io/performance-timeline/#the-performanceobserverentrylist-interface + */ + +// XXX should be moved into Performance.webidl. +dictionary PerformanceEntryFilterOptions { + DOMString name; + DOMString entryType; + DOMString initiatorType; +}; + +[Func="Performance::IsObserverEnabled", Exposed=(Window,Worker)] +interface PerformanceObserverEntryList { + PerformanceEntryList getEntries(optional PerformanceEntryFilterOptions filter); + PerformanceEntryList getEntriesByType(DOMString entryType); + PerformanceEntryList getEntriesByName(DOMString name, + optional DOMString entryType); +}; + diff --git a/dom/webidl/PerformanceResourceTiming.webidl b/dom/webidl/PerformanceResourceTiming.webidl new file mode 100644 index 0000000000..021b84ae2c --- /dev/null +++ b/dom/webidl/PerformanceResourceTiming.webidl @@ -0,0 +1,40 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://w3c-test.org/webperf/specs/ResourceTiming/#performanceresourcetiming + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface PerformanceResourceTiming : PerformanceEntry +{ + // A string with the name of that element that initiated the load. + // If the initiator is a CSS resource, the initiatorType attribute must return + // the string "css". + // If the initiator is an XMLHttpRequest object, the initiatorType attribute + // must return the string "xmlhttprequest". + readonly attribute DOMString initiatorType; + readonly attribute DOMString nextHopProtocol; + + readonly attribute DOMHighResTimeStamp redirectStart; + readonly attribute DOMHighResTimeStamp redirectEnd; + readonly attribute DOMHighResTimeStamp fetchStart; + readonly attribute DOMHighResTimeStamp domainLookupStart; + readonly attribute DOMHighResTimeStamp domainLookupEnd; + readonly attribute DOMHighResTimeStamp connectStart; + readonly attribute DOMHighResTimeStamp connectEnd; + readonly attribute DOMHighResTimeStamp secureConnectionStart; + readonly attribute DOMHighResTimeStamp requestStart; + readonly attribute DOMHighResTimeStamp responseStart; + readonly attribute DOMHighResTimeStamp responseEnd; + + readonly attribute unsigned long long transferSize; + readonly attribute unsigned long long encodedBodySize; + readonly attribute unsigned long long decodedBodySize; + + jsonifier; +}; diff --git a/dom/webidl/PerformanceTiming.webidl b/dom/webidl/PerformanceTiming.webidl new file mode 100644 index 0000000000..f75a46b7c1 --- /dev/null +++ b/dom/webidl/PerformanceTiming.webidl @@ -0,0 +1,38 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/hr-time/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface PerformanceTiming { + readonly attribute unsigned long long navigationStart; + readonly attribute unsigned long long unloadEventStart; + readonly attribute unsigned long long unloadEventEnd; + readonly attribute unsigned long long redirectStart; + readonly attribute unsigned long long redirectEnd; + readonly attribute unsigned long long fetchStart; + readonly attribute unsigned long long domainLookupStart; + readonly attribute unsigned long long domainLookupEnd; + readonly attribute unsigned long long connectStart; + readonly attribute unsigned long long connectEnd; + // secureConnectionStart will be implemneted in bug 772589 + // readonly attribute unsigned long long secureConnectionStart; + readonly attribute unsigned long long requestStart; + readonly attribute unsigned long long responseStart; + readonly attribute unsigned long long responseEnd; + readonly attribute unsigned long long domLoading; + readonly attribute unsigned long long domInteractive; + readonly attribute unsigned long long domContentLoadedEventStart; + readonly attribute unsigned long long domContentLoadedEventEnd; + readonly attribute unsigned long long domComplete; + readonly attribute unsigned long long loadEventStart; + readonly attribute unsigned long long loadEventEnd; + + jsonifier; +}; diff --git a/dom/webidl/PeriodicWave.webidl b/dom/webidl/PeriodicWave.webidl new file mode 100644 index 0000000000..c118274a24 --- /dev/null +++ b/dom/webidl/PeriodicWave.webidl @@ -0,0 +1,17 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * https://webaudio.github.io/web-audio-api/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +[Pref="dom.webaudio.enabled"] +interface PeriodicWave { + +}; + diff --git a/dom/webidl/PermissionSettings.webidl b/dom/webidl/PermissionSettings.webidl new file mode 100644 index 0000000000..99101d7988 --- /dev/null +++ b/dom/webidl/PermissionSettings.webidl @@ -0,0 +1,20 @@ +/* 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 at http://mozilla.org/MPL/2.0/. */ + +[JSImplementation="@mozilla.org/permissionSettings;1", + ChromeOnly, + Pref="dom.mozPermissionSettings.enabled", + NavigatorProperty="mozPermissionSettings"] +interface PermissionSettings +{ + DOMString get(DOMString permission, DOMString manifestURI, DOMString origin, boolean browserFlag); + + void set(DOMString permission, DOMString value, DOMString manifestURI, DOMString origin, boolean browserFlag); + + boolean isExplicit(DOMString permission, DOMString manifestURI, DOMString origin, boolean browserFlag); + + // Removing a permission is only allowed for pages with a different origin than the app + // and pages that have browserFlag=true, so remove() doesn't have a browserFlag parameter. + void remove(DOMString permission, DOMString manifestURI, DOMString origin); +}; diff --git a/dom/webidl/PermissionStatus.webidl b/dom/webidl/PermissionStatus.webidl new file mode 100644 index 0000000000..3abfd66f40 --- /dev/null +++ b/dom/webidl/PermissionStatus.webidl @@ -0,0 +1,20 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * https://w3c.github.io/permissions/#status-of-a-permission + */ + +enum PermissionState { + "granted", + "denied", + "prompt" +}; + +[Exposed=(Window)] +interface PermissionStatus : EventTarget { + readonly attribute PermissionState state; + attribute EventHandler onchange; +}; diff --git a/dom/webidl/Permissions.webidl b/dom/webidl/Permissions.webidl new file mode 100644 index 0000000000..a6c8aba688 --- /dev/null +++ b/dom/webidl/Permissions.webidl @@ -0,0 +1,30 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * https://w3c.github.io/permissions/#permissions-interface + */ + +enum PermissionName { + "geolocation", + "notifications", + "push" + // Unsupported: "midi" +}; + +dictionary PermissionDescriptor { + required PermissionName name; +}; + +// We don't implement `PushPermissionDescriptor` because we use a background +// message quota instead of `userVisibleOnly`. + +[Exposed=(Window)] +interface Permissions { + [Throws] + Promise<PermissionStatus> query(object permission); + [Throws, Pref="dom.permissions.revoke.enable"] + Promise<PermissionStatus> revoke(object permission); +}; diff --git a/dom/webidl/Plugin.webidl b/dom/webidl/Plugin.webidl new file mode 100644 index 0000000000..018d65a05c --- /dev/null +++ b/dom/webidl/Plugin.webidl @@ -0,0 +1,19 @@ +/* -*- 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/. + */ + +// [LegacyUnenumerableNamedProperties] +// Named properties enumerable for now; see +// https://bugzilla.mozilla.org/show_bug.cgi?id=1270366 +interface Plugin { + readonly attribute DOMString description; + readonly attribute DOMString filename; + readonly attribute DOMString version; + readonly attribute DOMString name; + + readonly attribute unsigned long length; + getter MimeType? item(unsigned long index); + getter MimeType? namedItem(DOMString name); +}; diff --git a/dom/webidl/PluginArray.webidl b/dom/webidl/PluginArray.webidl new file mode 100644 index 0000000000..617bb1f9a6 --- /dev/null +++ b/dom/webidl/PluginArray.webidl @@ -0,0 +1,17 @@ +/* -*- 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/. + */ + +// [LegacyUnenumerableNamedProperties] +// Named properties enumerable for now; see +// https://bugzilla.mozilla.org/show_bug.cgi?id=1270366 +interface PluginArray { + readonly attribute unsigned long length; + + getter Plugin? item(unsigned long index); + getter Plugin? namedItem(DOMString name); + + void refresh(optional boolean reloadDocuments = false); +}; diff --git a/dom/webidl/PluginCrashedEvent.webidl b/dom/webidl/PluginCrashedEvent.webidl new file mode 100644 index 0000000000..8eed7244e5 --- /dev/null +++ b/dom/webidl/PluginCrashedEvent.webidl @@ -0,0 +1,28 @@ +/* -*- 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/. + */ + +[Constructor(DOMString type, optional PluginCrashedEventInit eventInitDict), ChromeOnly] +interface PluginCrashedEvent : Event +{ + readonly attribute unsigned long pluginID; + readonly attribute DOMString pluginDumpID; + readonly attribute DOMString pluginName; + readonly attribute DOMString? browserDumpID; + readonly attribute DOMString? pluginFilename; + readonly attribute boolean submittedCrashReport; + readonly attribute boolean gmpPlugin; +}; + +dictionary PluginCrashedEventInit : EventInit +{ + unsigned long pluginID = 0; + DOMString pluginDumpID = ""; + DOMString pluginName = ""; + DOMString? browserDumpID = null; + DOMString? pluginFilename = null; + boolean submittedCrashReport = false; + boolean gmpPlugin = false; +}; diff --git a/dom/webidl/PointerEvent.webidl b/dom/webidl/PointerEvent.webidl new file mode 100644 index 0000000000..2e83922c84 --- /dev/null +++ b/dom/webidl/PointerEvent.webidl @@ -0,0 +1,37 @@ +/* -*- 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/. + * + * For more information see nsIPointerEvent.idl. + * + * Portions Copyright 2013 Microsoft Open Technologies, Inc. */ + +interface WindowProxy; + +[Pref="dom.w3c_pointer_events.enabled", + Constructor(DOMString type, optional PointerEventInit eventInitDict)] +interface PointerEvent : MouseEvent +{ + readonly attribute long pointerId; + readonly attribute long width; + readonly attribute long height; + readonly attribute float pressure; + readonly attribute long tiltX; + readonly attribute long tiltY; + readonly attribute DOMString pointerType; + readonly attribute boolean isPrimary; +}; + +dictionary PointerEventInit : MouseEventInit +{ + long pointerId = 0; + long width = 1; + long height = 1; + float pressure = 0; + long tiltX = 0; + long tiltY = 0; + DOMString pointerType = ""; + boolean isPrimary = false; +}; + diff --git a/dom/webidl/PopStateEvent.webidl b/dom/webidl/PopStateEvent.webidl new file mode 100644 index 0000000000..428ab9c849 --- /dev/null +++ b/dom/webidl/PopStateEvent.webidl @@ -0,0 +1,16 @@ +/* -*- 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/. + */ + +[Constructor(DOMString type, optional PopStateEventInit eventInitDict)] +interface PopStateEvent : Event +{ + readonly attribute any state; +}; + +dictionary PopStateEventInit : EventInit +{ + any state = null; +}; diff --git a/dom/webidl/PopupBlockedEvent.webidl b/dom/webidl/PopupBlockedEvent.webidl new file mode 100644 index 0000000000..bf338d56b2 --- /dev/null +++ b/dom/webidl/PopupBlockedEvent.webidl @@ -0,0 +1,23 @@ +/* -*- 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/. + */ +interface URI; + +[Constructor(DOMString type, optional PopupBlockedEventInit eventInitDict)] +interface PopupBlockedEvent : Event +{ + readonly attribute Window? requestingWindow; + readonly attribute URI? popupWindowURI; + readonly attribute DOMString? popupWindowName; + readonly attribute DOMString? popupWindowFeatures; +}; + +dictionary PopupBlockedEventInit : EventInit +{ + Window? requestingWindow = null; + URI? popupWindowURI = null; + DOMString popupWindowName = ""; + DOMString popupWindowFeatures = ""; +}; diff --git a/dom/webidl/PopupBoxObject.webidl b/dom/webidl/PopupBoxObject.webidl new file mode 100644 index 0000000000..bb201ad89a --- /dev/null +++ b/dom/webidl/PopupBoxObject.webidl @@ -0,0 +1,191 @@ +/* -*- Mode: C++; 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/. */ + +[Func="IsChromeOrXBL"] +interface PopupBoxObject : BoxObject +{ + /** + * This method is deprecated. Use openPopup or openPopupAtScreen instead. + */ + void showPopup(Element? srcContent, Element popupContent, + long xpos, long ypos, + optional DOMString popupType = "", + optional DOMString anchorAlignment = "", + optional DOMString popupAlignment = ""); + + /** + * Hide the popup if it is open. The cancel argument is used as a hint that + * the popup is being closed because it has been cancelled, rather than + * something being selected within the panel. + * + * @param cancel if true, then the popup is being cancelled. + */ + void hidePopup(optional boolean cancel = false); + + /** + * Allow the popup to automatically position itself. + */ + attribute boolean autoPosition; + + /** + * If keyboard navigation is enabled, the keyboard may be used to navigate + * the menuitems on the popup. Enabling keyboard navigation is the default + * behaviour and will install capturing key event listeners on the popup + * that do not propagate key events to the contents. If you wish to place + * elements in a popup which accept key events, such as textboxes, keyboard + * navigation should be disabled. + * + * Setting ignorekeys="true" on the popup element also disables keyboard + * navigation, and is recommended over calling this method. + */ + void enableKeyboardNavigator(boolean enableKeyboardNavigator); + + /** + * Enable automatic popup dismissal. This only has effect when called + * on an open popup. + */ + void enableRollup(boolean enableRollup); + + /** + * Control whether the event that caused the popup to be automatically + * dismissed ("rolled up") should be consumed, or dispatched as a + * normal event. This should be set immediately before calling showPopup() + * if non-default behavior is desired. + */ + const unsigned long ROLLUP_DEFAULT = 0; /* widget/platform default */ + const unsigned long ROLLUP_CONSUME = 1; /* consume the rollup event */ + const unsigned long ROLLUP_NO_CONSUME = 2; /* don't consume the rollup event */ + void setConsumeRollupEvent(unsigned long consume); + + /** + * Size the popup to the given dimensions + */ + void sizeTo(long width, long height); + + /** + * Move the popup to a point on screen in CSS pixels. + */ + void moveTo(long left, long top); + + /** + * Open the popup relative to a specified node at a specific location. + * + * The popup may be either anchored to another node or opened freely. + * To anchor a popup to a node, supply an anchor node and set the position + * to a string indicating the manner in which the popup should be anchored. + * Possible values for position are: + * before_start, before_end, after_start, after_end, + * start_before, start_after, end_before, end_after, + * overlap, after_pointer + * + * The anchor node does not need to be in the same document as the popup. + * + * If the attributesOverride argument is true, the popupanchor, popupalign + * and position attributes on the popup node override the position value + * argument. If attributesOverride is false, the attributes are only used + * if position is empty. + * + * For an anchored popup, the x and y arguments may be used to offset the + * popup from its anchored position by some distance, measured in CSS pixels. + * x increases to the right and y increases down. Negative values may also + * be used to move to the left and upwards respectively. + * + * Unanchored popups may be created by supplying null as the anchor node. + * An unanchored popup appears at the position specified by x and y, + * relative to the viewport of the document containing the popup node. In + * this case, position and attributesOverride are ignored. + * + * @param anchorElement the node to anchor the popup to, may be null + * @param position manner is which to anchor the popup to node + * @param x horizontal offset + * @param y vertical offset + * @param isContextMenu true for context menus, false for other popups + * @param attributesOverride true if popup node attributes override position + * @param triggerEvent the event that triggered this popup (mouse click for example) + */ + void openPopup(Element? anchorElement, + optional DOMString position = "", + long x, + long y, + boolean isContextMenu, + boolean attributesOverride, + Event? triggerEvent); + + /** + * Open the popup at a specific screen position specified by x and y. This + * position may be adjusted if it would cause the popup to be off of the + * screen. The x and y coordinates are measured in CSS pixels, and like all + * screen coordinates, are given relative to the top left of the primary + * screen. + * + * @param isContextMenu true for context menus, false for other popups + * @param x horizontal screen position + * @param y vertical screen position + * @param triggerEvent the event that triggered this popup (mouse click for example) + */ + void openPopupAtScreen(long x, long y, + boolean isContextMenu, + Event? triggerEvent); + + /** + * Open the popup anchored at a specific screen rectangle. This function is + * similar to openPopup except that that rectangle of the anchor is supplied + * rather than an element. The anchor rectangle arguments are screen + * coordinates. + */ + void openPopupAtScreenRect(optional DOMString position = "", + long x, + long y, + long width, + long height, + boolean isContextMenu, + boolean attributesOverride, + Event? triggerEvent); + + /** + * Returns the state of the popup: + * closed - the popup is closed + * open - the popup is open + * showing - the popup is in the process of being shown + * hiding - the popup is in the process of being hidden + */ + readonly attribute DOMString popupState; + + /** + * The node that triggered the popup. If the popup is not open, will return + * null. + */ + readonly attribute Node? triggerNode; + + /** + * Retrieve the anchor that was specified to openPopup or for menupopups in a + * menu, the parent menu. + */ + readonly attribute Element? anchorNode; + + /** + * Retrieve the screen rectangle of the popup, including the area occupied by + * any titlebar or borders present. + */ + DOMRect getOuterScreenRect(); + + /** + * Move an open popup to the given anchor position. The arguments have the same + * meaning as the corresponding argument to openPopup. This method has no effect + * on popups that are not open. + */ + void moveToAnchor(Element? anchorElement, + optional DOMString position = "", + long x, long y, + boolean attributesOverride); + + /** Returns the alignment position where the popup has appeared relative to its + * anchor node or point, accounting for any flipping that occurred. + */ + readonly attribute DOMString alignmentPosition; + readonly attribute long alignmentOffset; + + void setConstraintRect(DOMRectReadOnly rect); +}; diff --git a/dom/webidl/Position.webidl b/dom/webidl/Position.webidl new file mode 100644 index 0000000000..93812a3791 --- /dev/null +++ b/dom/webidl/Position.webidl @@ -0,0 +1,17 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/geolocation-API + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +[NoInterfaceObject] +interface Position { + readonly attribute Coordinates coords; + readonly attribute DOMTimeStamp timestamp; +}; diff --git a/dom/webidl/PositionError.webidl b/dom/webidl/PositionError.webidl new file mode 100644 index 0000000000..d644cbe483 --- /dev/null +++ b/dom/webidl/PositionError.webidl @@ -0,0 +1,20 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/geolocation-API + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +[NoInterfaceObject] +interface PositionError { + const unsigned short PERMISSION_DENIED = 1; + const unsigned short POSITION_UNAVAILABLE = 2; + const unsigned short TIMEOUT = 3; + readonly attribute unsigned short code; + readonly attribute DOMString message; +}; diff --git a/dom/webidl/Presentation.webidl b/dom/webidl/Presentation.webidl new file mode 100644 index 0000000000..d5b3316163 --- /dev/null +++ b/dom/webidl/Presentation.webidl @@ -0,0 +1,30 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * https://w3c.github.io/presentation-api/#interface-presentation + */ + +[Pref="dom.presentation.enabled"] +interface Presentation { + /* + * This should be used by the UA as the default presentation request for the + * controller. When the UA wishes to initiate a PresentationConnection on the + * controller's behalf, it MUST start a presentation connection using the default + * presentation request (as if the controller had called |defaultRequest.start()|). + * + * Only used by controlling browsing context (senders). + */ + [Pref="dom.presentation.controller.enabled"] + attribute PresentationRequest? defaultRequest; + + /* + * This should be available on the receiving browsing context in order to + * access the controlling browsing context and communicate with them. + */ + [SameObject, + Pref="dom.presentation.receiver.enabled"] + readonly attribute PresentationReceiver? receiver; +}; diff --git a/dom/webidl/PresentationAvailability.webidl b/dom/webidl/PresentationAvailability.webidl new file mode 100644 index 0000000000..f72b88565d --- /dev/null +++ b/dom/webidl/PresentationAvailability.webidl @@ -0,0 +1,22 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * https://w3c.github.io/presentation-api/#interface-presentationavailability + */ + +[Pref="dom.presentation.controller.enabled"] +interface PresentationAvailability : EventTarget { + /* + * If there is at least one device discovered by UA, the value is |true|. + * Otherwise, its value should be |false|. + */ + readonly attribute boolean value; + + /* + * It is called when device availability changes. + */ + attribute EventHandler onchange; +}; diff --git a/dom/webidl/PresentationConnection.webidl b/dom/webidl/PresentationConnection.webidl new file mode 100644 index 0000000000..9676d20692 --- /dev/null +++ b/dom/webidl/PresentationConnection.webidl @@ -0,0 +1,96 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * https://w3c.github.io/presentation-api/#interface-presentationconnection + */ + +enum PresentationConnectionState +{ + // The initial state when a PresentationConnection is ceated. + "connecting", + + // Existing presentation, and the communication channel is active. + "connected", + + // Existing presentation, but the communication channel is inactive. + "closed", + + // The presentation is nonexistent anymore. It could be terminated manually, + // or either controlling or receiving browsing context is no longer available. + "terminated" +}; + +enum PresentationConnectionBinaryType +{ + "blob", + "arraybuffer" +}; + +[Pref="dom.presentation.enabled"] +interface PresentationConnection : EventTarget { + /* + * Unique id for all existing connections. + */ + [Constant] + readonly attribute DOMString id; + + /* + * Specifies the connection's presentation URL. + */ + readonly attribute DOMString url; + + /* + * @value "connected", "closed", or "terminated". + */ + readonly attribute PresentationConnectionState state; + + attribute EventHandler onconnect; + attribute EventHandler onclose; + attribute EventHandler onterminate; + attribute PresentationConnectionBinaryType binaryType; + + /* + * After a communication channel has been established between the controlling + * and receiving context, this function is called to send message out, and the + * event handler "onmessage" will be invoked at the remote side. + * + * This function only works when the state is "connected". + */ + [Throws] + void send(DOMString data); + + [Throws] + void send(Blob data); + + [Throws] + void send(ArrayBuffer data); + + [Throws] + void send(ArrayBufferView data); + + /* + * It is triggered when receiving messages. + */ + attribute EventHandler onmessage; + + /* + * Both the controlling and receiving browsing context can close the + * connection. Then the connection state should turn into "closed". + * + * This function only works when the state is "connected" or "connecting". + */ + [Throws] + void close(); + + /* + * Both the controlling and receiving browsing context can terminate the + * connection. Then the connection state should turn into "terminated". + * + * This function only works when the state is not "connected". + */ + [Throws] + void terminate(); +}; diff --git a/dom/webidl/PresentationConnectionAvailableEvent.webidl b/dom/webidl/PresentationConnectionAvailableEvent.webidl new file mode 100644 index 0000000000..9efecb7d62 --- /dev/null +++ b/dom/webidl/PresentationConnectionAvailableEvent.webidl @@ -0,0 +1,22 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * https://w3c.github.io/presentation-api/#interface-presentationconnectionavailableevent + */ + +[Constructor(DOMString type, + PresentationConnectionAvailableEventInit eventInitDict), + Pref="dom.presentation.enabled"] +interface PresentationConnectionAvailableEvent : Event +{ + [SameObject] + readonly attribute PresentationConnection connection; +}; + +dictionary PresentationConnectionAvailableEventInit : EventInit +{ + required PresentationConnection connection; +}; diff --git a/dom/webidl/PresentationConnectionCloseEvent.webidl b/dom/webidl/PresentationConnectionCloseEvent.webidl new file mode 100644 index 0000000000..da6c25545e --- /dev/null +++ b/dom/webidl/PresentationConnectionCloseEvent.webidl @@ -0,0 +1,41 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * https://w3c.github.io/presentation-api/#interface-presentationconnectioncloseevent + */ + +enum PresentationConnectionClosedReason +{ + // The communication encountered an unrecoverable error. + "error", + + // |PresentationConnection.close()| is called by controlling browsing context + // or the receiving browsing context. + "closed", + + // The connection is closed because the destination browsing context + // that owned the connection navigated or was discarded. + "wentaway" +}; + +[Constructor(DOMString type, + PresentationConnectionCloseEventInit eventInitDict), + Pref="dom.presentation.enabled"] +interface PresentationConnectionCloseEvent : Event +{ + readonly attribute PresentationConnectionClosedReason reason; + + // The message is a human readable description of + // how the communication channel encountered an error. + // It is empty when the closed reason is closed or wentaway. + readonly attribute DOMString message; +}; + +dictionary PresentationConnectionCloseEventInit : EventInit +{ + required PresentationConnectionClosedReason reason; + DOMString message = ""; +}; diff --git a/dom/webidl/PresentationConnectionList.webidl b/dom/webidl/PresentationConnectionList.webidl new file mode 100644 index 0000000000..2c90ce9de4 --- /dev/null +++ b/dom/webidl/PresentationConnectionList.webidl @@ -0,0 +1,25 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * https://w3c.github.io/presentation-api/#interface-presentationconnectionlist + */ + +[Pref="dom.presentation.receiver.enabled"] +interface PresentationConnectionList : EventTarget { + /* + * Return the non-terminated set of presentation connections in the + * set of presentation controllers. + * TODO: Use FrozenArray once available. (Bug 1236777) + * readonly attribute FrozenArray<PresentationConnection> connections; + */ + [Frozen, Cached, Pure] + readonly attribute sequence<PresentationConnection> connections; + + /* + * It is called when an incoming connection is connected. + */ + attribute EventHandler onconnectionavailable; +}; diff --git a/dom/webidl/PresentationDeviceInfoManager.webidl b/dom/webidl/PresentationDeviceInfoManager.webidl new file mode 100644 index 0000000000..6ccace3247 --- /dev/null +++ b/dom/webidl/PresentationDeviceInfoManager.webidl @@ -0,0 +1,26 @@ +/* -*- 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/. + */ + +dictionary PresentationDeviceInfo { + DOMString id; + DOMString name; + DOMString type; +}; + +[NavigatorProperty="mozPresentationDeviceInfo", + JSImplementation="@mozilla.org/presentation-device/deviceInfo;1", + Pref="dom.presentation.enabled", + ChromeOnly] +interface PresentationDeviceInfoManager : EventTarget { + // notify if any device updated. + attribute EventHandler ondevicechange; + + // retrieve all available device infos + Promise<sequence<PresentationDeviceInfo>> getAll(); + + // Force all registered device provider to update device information. + void forceDiscovery(); +}; diff --git a/dom/webidl/PresentationReceiver.webidl b/dom/webidl/PresentationReceiver.webidl new file mode 100644 index 0000000000..4acb37cf37 --- /dev/null +++ b/dom/webidl/PresentationReceiver.webidl @@ -0,0 +1,18 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * https://w3c.github.io/presentation-api/#interface-presentationreceiver + */ + +[Pref="dom.presentation.receiver.enabled"] +interface PresentationReceiver { + /* + * Get a list which contains all connected presentation connections + * in a receiving browsing context. + */ + [SameObject, Throws] + readonly attribute Promise<PresentationConnectionList> connectionList; +}; diff --git a/dom/webidl/PresentationRequest.webidl b/dom/webidl/PresentationRequest.webidl new file mode 100644 index 0000000000..c0c5fb8a6e --- /dev/null +++ b/dom/webidl/PresentationRequest.webidl @@ -0,0 +1,86 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * https://w3c.github.io/presentation-api/#interface-presentationrequest + */ + +[Constructor(DOMString url), + Constructor(sequence<DOMString> urls), + Pref="dom.presentation.controller.enabled"] +interface PresentationRequest : EventTarget { + /* + * A requesting page use start() to start a new connection, and it will be + * returned with the promise. UA may show a prompt box with a list of + * available devices and ask the user to grant permission, choose a device, or + * cancel the operation. + * + * The promise is resolved when the presenting page is successfully loaded and + * the communication channel is established, i.e., the connection state is + * "connected". + * + * The promise may be rejected duo to one of the following reasons: + * - "OperationError": Unexpected error occurs. + * - "NotFoundError": No available device. + * - "AbortError": User dismiss/cancel the device prompt box. + * - "NetworkError": Failed to establish the control channel or data channel. + * - "TimeoutError": Presenting page takes too long to load. + * - "SecurityError": This operation is insecure. + */ + [Throws] + Promise<PresentationConnection> start(); + + /* + * A requesting page can use reconnect(presentationId) to reopen a + * non-terminated presentation connection. + * + * The promise is resolved when a new presentation connection is created. + * The connection state is "connecting". + * + * The promise may be rejected duo to one of the following reasons: + * - "OperationError": Unexpected error occurs. + * - "NotFoundError": Can not find a presentation connection with the presentationId. + * - "SecurityError": This operation is insecure. + */ + [Throws] + Promise<PresentationConnection> reconnect(DOMString presentationId); + + /* + * UA triggers device discovery mechanism periodically and monitor device + * availability. + * + * The promise may be rejected duo to one of the following reasons: + * - "NotSupportedError": Unable to continuously monitor the availability. + * - "SecurityError": This operation is insecure. + */ + [Throws] + Promise<PresentationAvailability> getAvailability(); + + /* + * It is called when a connection associated with a PresentationRequest is created. + * The event is fired for all connections that are created for the controller. + */ + attribute EventHandler onconnectionavailable; + + /* + * A chrome page, or page which has presentation-device-manage permissiongs, + * uses startWithDevice() to start a new connection with specified device, + * and it will be returned with the promise. UA may show a prompt box with a + * list of available devices and ask the user to grant permission, choose a + * device, or cancel the operation. + * + * The promise is resolved when the presenting page is successfully loaded and + * the communication channel is established, i.e., the connection state is + * "connected". + * + * The promise may be rejected duo to one of the following reasons: + * - "OperationError": Unexpected error occurs. + * - "NotFoundError": No available device. + * - "NetworkError": Failed to establish the control channel or data channel. + * - "TimeoutError": Presenting page takes too long to load. + */ + [ChromeOnly, Throws] + Promise<PresentationConnection> startWithDevice(DOMString deviceId); +}; diff --git a/dom/webidl/ProcessingInstruction.webidl b/dom/webidl/ProcessingInstruction.webidl new file mode 100644 index 0000000000..8f376c1c30 --- /dev/null +++ b/dom/webidl/ProcessingInstruction.webidl @@ -0,0 +1,15 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/2012/WD-dom-20120105/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface ProcessingInstruction : CharacterData { + readonly attribute DOMString target; +}; diff --git a/dom/webidl/ProfileTimelineMarker.webidl b/dom/webidl/ProfileTimelineMarker.webidl new file mode 100644 index 0000000000..ca2ef21acb --- /dev/null +++ b/dom/webidl/ProfileTimelineMarker.webidl @@ -0,0 +1,74 @@ +/* -*- 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/. + */ + +// For Javascript markers, the |stack| of a ProfileTimelineMarker +// holds an object of this type. It intentionally looks like a +// SavedStack object and is a representation of the frame that is +// about to be constructed at the entry point. +dictionary ProfileTimelineStackFrame { + long line; + long column = 0; + DOMString source; + DOMString functionDisplayName; + object? parent = null; + object? asyncParent = null; + DOMString asyncCause; +}; + +dictionary ProfileTimelineLayerRect { + long x = 0; + long y = 0; + long width = 0; + long height = 0; +}; + +enum ProfileTimelineMessagePortOperationType { + "serializeData", + "deserializeData", +}; + +enum ProfileTimelineWorkerOperationType { + "serializeDataOffMainThread", + "serializeDataOnMainThread", + "deserializeDataOffMainThread", + "deserializeDataOnMainThread", +}; + +dictionary ProfileTimelineMarker { + DOMString name = ""; + DOMHighResTimeStamp start = 0; + DOMHighResTimeStamp end = 0; + object? stack = null; + + unsigned short processType; + boolean isOffMainThread; + + /* For ConsoleTime, Timestamp and Javascript markers. */ + DOMString causeName; + + /* For ConsoleTime markers. */ + object? endStack = null; + + /* For DOMEvent markers. */ + DOMString type; + unsigned short eventPhase; + + /* For document::DOMContentLoaded and document::Load markers. Using this + * instead of the `start` and `end` timestamps is strongly discouraged. */ + unsigned long long unixTime; // in microseconds + + /* For Paint markers. */ + sequence<ProfileTimelineLayerRect> rectangles; + + /* For Style markers. */ + DOMString restyleHint; + + /* For MessagePort markers. */ + ProfileTimelineMessagePortOperationType messagePortOperation; + + /* For Worker markers. */ + ProfileTimelineWorkerOperationType workerOperation; +}; diff --git a/dom/webidl/ProgressEvent.webidl b/dom/webidl/ProgressEvent.webidl new file mode 100644 index 0000000000..1be356b8f4 --- /dev/null +++ b/dom/webidl/ProgressEvent.webidl @@ -0,0 +1,20 @@ +/* -*- 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/. + */ + +[Constructor(DOMString type, optional ProgressEventInit eventInitDict)] +interface ProgressEvent : Event +{ + readonly attribute boolean lengthComputable; + readonly attribute unsigned long long loaded; + readonly attribute unsigned long long total; +}; + +dictionary ProgressEventInit : EventInit +{ + boolean lengthComputable = false; + unsigned long long loaded = 0; + unsigned long long total = 0; +}; diff --git a/dom/webidl/Promise.webidl b/dom/webidl/Promise.webidl new file mode 100644 index 0000000000..4dcb7d43e7 --- /dev/null +++ b/dom/webidl/Promise.webidl @@ -0,0 +1,77 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://dom.spec.whatwg.org/#promises + */ + +// TODO We use object instead Function. There is an open issue on WebIDL to +// have different types for "platform-provided function" and "user-provided +// function"; for now, we just use "object". +callback PromiseInit = void (object resolve, object reject); + +callback PromiseJobCallback = void(); + +[TreatNonCallableAsNull] +callback AnyCallback = any (any value); + +// When using SpiderMonkey promises, we don't want to define all this stuff; +// just define a tiny interface to make codegen of Promise arguments and return +// values work. +#ifndef SPIDERMONKEY_PROMISE +[Constructor(PromiseInit init), + Exposed=(Window,Worker,WorkerDebugger,System)] +// Need to escape "Promise" so it's treated as an identifier. +interface _Promise { + // Have to use "any" (or "object", but "any" is simpler) as the type to + // support the subclassing behavior, since nothing actually requires the + // return value of PromiseSubclass.resolve/reject to be a Promise object. + [NewObject, Throws] + static any resolve(optional any value); + [NewObject, Throws] + static any reject(optional any value); + + // The [TreatNonCallableAsNull] annotation is required since then() should do + // nothing instead of throwing errors when non-callable arguments are passed. + // Have to use "any" (or "object", but "any" is simpler) as the type to + // support the subclassing behavior, since nothing actually requires the + // return value of PromiseSubclass.then/catch to be a Promise object. + [NewObject, Throws] + any then([TreatNonCallableAsNull] optional AnyCallback? fulfillCallback = null, + [TreatNonCallableAsNull] optional AnyCallback? rejectCallback = null); + + [NewObject, Throws] + any catch([TreatNonCallableAsNull] optional AnyCallback? rejectCallback = null); + + // Have to use "any" (or "object", but "any" is simpler) as the type to + // support the subclassing behavior, since nothing actually requires the + // return value of PromiseSubclass.all to be a Promise object. As a result, + // we also have to do our argument conversion manually, because we want to + // convert its exceptions into rejections. + [NewObject, Throws] + static any all(optional any iterable); + + // Have to use "any" (or "object", but "any" is simpler) as the type to + // support the subclassing behavior, since nothing actually requires the + // return value of PromiseSubclass.race to be a Promise object. As a result, + // we also have to do our argument conversion manually, because we want to + // convert its exceptions into rejections. + [NewObject, Throws] + static any race(optional any iterable); +}; +#else // SPIDERMONKEY_PROMISE +[NoInterfaceObject, + Exposed=(Window,Worker,WorkerDebugger,System)] +// Need to escape "Promise" so it's treated as an identifier. +interface _Promise { +}; + +// Hack to allow us to have JS owning and properly tracing/CCing/etc a +// PromiseNativeHandler. +[NoInterfaceObject, + Exposed=(Window,Worker,System)] +interface PromiseNativeHandler { +}; +#endif // SPIDERMONKEY_PROMISE diff --git a/dom/webidl/PromiseDebugging.webidl b/dom/webidl/PromiseDebugging.webidl new file mode 100644 index 0000000000..107b8bc657 --- /dev/null +++ b/dom/webidl/PromiseDebugging.webidl @@ -0,0 +1,152 @@ +/* -*- 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/. + */ + +/* This is a utility namespace for promise-debugging functionality */ + + +dictionary PromiseDebuggingStateHolder { + PromiseDebuggingState state = "pending"; + any value; + any reason; +}; +enum PromiseDebuggingState { "pending", "fulfilled", "rejected" }; + +/** + * An observer for Promise that _may_ be leaking uncaught rejections. + * + * It is generally a programming error to leave a Promise rejected and + * not consume its rejection. The information exposed by this + * interface is designed to allow clients to track down such Promise, + * i.e. Promise that are currently + * - in `rejected` state; + * - last of their chain. + * + * Note, however, that a promise in such a state at the end of a tick + * may eventually be consumed in some ulterior tick. Implementers of + * this interface are responsible for presenting the information + * in a meaningful manner. + */ +callback interface UncaughtRejectionObserver { + /** + * A Promise has been left in `rejected` state and is the + * last in its chain. + * + * @param p A currently uncaught Promise. If `p` is is eventually + * caught, i.e. if its `then` callback is called, `onConsumed` will + * be called. + */ +#ifdef SPIDERMONKEY_PROMISE + void onLeftUncaught(object p); +#else + void onLeftUncaught(Promise<any> p); +#endif SPIDERMONKEY_PROMISE + + /** + * A Promise previously left uncaught is not the last in its + * chain anymore. + * + * @param p A Promise that was previously left in uncaught state is + * now caught, i.e. it is not the last in its chain anymore. + */ +#ifdef SPIDERMONKEY_PROMISE + void onConsumed(object p); +#else + void onConsumed(Promise<any> p); +#endif SPIDERMONKEY_PROMISE +}; + +[ChromeOnly, Exposed=(Window,System)] +interface PromiseDebugging { + /** + * The various functions on this interface all expect to take promises but + * don't want the WebIDL behavior of assimilating random passed-in objects + * into promises. They also want to treat Promise subclass instances as + * promises instead of wrapping them in a vanilla Promise, which is what the + * IDL spec says to do. So we list all our arguments as "object" instead of + * "Promise" and check for them being a Promise internally. + */ + + /** + * Get the current state of the given promise. + */ + [Throws] + static PromiseDebuggingStateHolder getState(object p); + + /** + * Return an identifier for a promise. This identifier is guaranteed + * to be unique to the current process. + */ + [Throws] + static DOMString getPromiseID(object p); + + /** + * Return the stack to the promise's allocation point. This can + * return null if the promise was not created from script. + */ + [Throws] + static object? getAllocationStack(object p); + + /** + * Return the stack to the promise's rejection point, if the + * rejection happened from script. This can return null if the + * promise has not been rejected or was not rejected from script. + */ + [Throws] + static object? getRejectionStack(object p); + + /** + * Return the stack to the promise's fulfillment point, if the + * fulfillment happened from script. This can return null if the + * promise has not been fulfilled or was not fulfilled from script. + */ + [Throws] + static object? getFullfillmentStack(object p); + +#ifndef SPIDERMONKEY_PROMISE + /** + * Get the promises directly depending on a given promise. These are: + * + * 1) Return values of then() calls on the promise + * 2) Return values of Promise.all() if the given promise was passed in as one + * of the arguments. + * 3) Return values of Promise.race() if the given promise was passed in as + * one of the arguments. + * + * Once a promise is settled, it will generally notify its dependent promises + * and forget about them, so this is most useful on unsettled promises. + * + * Note that this function only returns the promises that directly depend on + * p. It does not recursively return promises that depend on promises that + * depend on p. + */ + [Throws] + static sequence<Promise<any>> getDependentPromises(object p); + + /** + * Get the number of milliseconds elapsed since the given promise was created. + */ + [Throws] + static DOMHighResTimeStamp getPromiseLifetime(object p); + + /* + * Get the number of milliseconds elapsed between the promise being created + * and being settled. Throws NS_ERROR_UNEXPECTED if the promise has not + * settled. + */ + [Throws] + static DOMHighResTimeStamp getTimeToSettle(object p); + +#endif // SPIDERMONKEY_PROMISE + + /** + * Watching uncaught rejections on the current thread. + * + * Adding an observer twice will cause it to be notified twice + * of events. + */ + static void addUncaughtRejectionObserver(UncaughtRejectionObserver o); + static boolean removeUncaughtRejectionObserver(UncaughtRejectionObserver o); +}; diff --git a/dom/webidl/PushEvent.webidl b/dom/webidl/PushEvent.webidl new file mode 100644 index 0000000000..a4624e4512 --- /dev/null +++ b/dom/webidl/PushEvent.webidl @@ -0,0 +1,21 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * https://w3c.github.io/push-api/ + */ + +[Constructor(DOMString type, optional PushEventInit eventInitDict), + Func="nsContentUtils::PushEnabled", + Exposed=ServiceWorker] +interface PushEvent : ExtendableEvent { + readonly attribute PushMessageData? data; +}; + +typedef (BufferSource or USVString) PushMessageDataInit; + +dictionary PushEventInit : ExtendableEventInit { + PushMessageDataInit data; +}; diff --git a/dom/webidl/PushManager.webidl b/dom/webidl/PushManager.webidl new file mode 100644 index 0000000000..de1e632c7e --- /dev/null +++ b/dom/webidl/PushManager.webidl @@ -0,0 +1,41 @@ +/* -*- 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/. +* +* The origin of this IDL file is +* https://w3c.github.io/push-api/ +*/ + +dictionary PushSubscriptionOptionsInit { + // boolean userVisibleOnly = false; + BufferSource? applicationServerKey = null; +}; + +// The main thread JS implementation. Please see comments in +// dom/push/PushManager.h for the split between PushManagerImpl and PushManager. +[JSImplementation="@mozilla.org/push/PushManager;1", + ChromeOnly, Constructor(DOMString scope)] +interface PushManagerImpl { + Promise<PushSubscription> subscribe(optional PushSubscriptionOptionsInit options); + Promise<PushSubscription?> getSubscription(); + Promise<PushPermissionState> permissionState(optional PushSubscriptionOptionsInit options); +}; + +[Exposed=(Window,Worker), Func="nsContentUtils::PushEnabled", + ChromeConstructor(DOMString scope)] +interface PushManager { + [Throws, UseCounter] + Promise<PushSubscription> subscribe(optional PushSubscriptionOptionsInit options); + [Throws] + Promise<PushSubscription?> getSubscription(); + [Throws] + Promise<PushPermissionState> permissionState(optional PushSubscriptionOptionsInit options); +}; + +enum PushPermissionState +{ + "granted", + "denied", + "prompt" +}; diff --git a/dom/webidl/PushMessageData.webidl b/dom/webidl/PushMessageData.webidl new file mode 100644 index 0000000000..32da84f377 --- /dev/null +++ b/dom/webidl/PushMessageData.webidl @@ -0,0 +1,21 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * https://w3c.github.io/push-api/ + */ + +[Func="nsContentUtils::PushEnabled", + Exposed=ServiceWorker] +interface PushMessageData +{ + [Throws] + ArrayBuffer arrayBuffer(); + [Throws] + Blob blob(); + [Throws] + any json(); + USVString text(); +}; diff --git a/dom/webidl/PushSubscription.webidl b/dom/webidl/PushSubscription.webidl new file mode 100644 index 0000000000..eab576d3ce --- /dev/null +++ b/dom/webidl/PushSubscription.webidl @@ -0,0 +1,53 @@ +/* -*- 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/. +* +* The origin of this IDL file is +* https://w3c.github.io/push-api/ +*/ + +interface Principal; + +enum PushEncryptionKeyName +{ + "p256dh", + "auth" +}; + +dictionary PushSubscriptionKeys +{ + ByteString p256dh; + ByteString auth; +}; + +dictionary PushSubscriptionJSON +{ + USVString endpoint; + PushSubscriptionKeys keys; +}; + +dictionary PushSubscriptionInit +{ + required USVString endpoint; + required USVString scope; + ArrayBuffer? p256dhKey; + ArrayBuffer? authSecret; + BufferSource? appServerKey; +}; + +[Exposed=(Window,Worker), Func="nsContentUtils::PushEnabled", + ChromeConstructor(PushSubscriptionInit initDict)] +interface PushSubscription +{ + readonly attribute USVString endpoint; + readonly attribute PushSubscriptionOptions options; + [Throws] + ArrayBuffer? getKey(PushEncryptionKeyName name); + [Throws, UseCounter] + Promise<boolean> unsubscribe(); + + // Implements the custom serializer specified in Push API, section 9. + [Throws] + PushSubscriptionJSON toJSON(); +}; diff --git a/dom/webidl/PushSubscriptionOptions.webidl b/dom/webidl/PushSubscriptionOptions.webidl new file mode 100644 index 0000000000..569a1ddae3 --- /dev/null +++ b/dom/webidl/PushSubscriptionOptions.webidl @@ -0,0 +1,15 @@ +/* -*- 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/. +* +* The origin of this IDL file is +* https://w3c.github.io/push-api/ +*/ + +[Exposed=(Window,Worker), Func="nsContentUtils::PushEnabled"] +interface PushSubscriptionOptions +{ + [SameObject, Throws] + readonly attribute ArrayBuffer? applicationServerKey; +}; diff --git a/dom/webidl/RGBColor.webidl b/dom/webidl/RGBColor.webidl new file mode 100644 index 0000000000..6e80ec72c7 --- /dev/null +++ b/dom/webidl/RGBColor.webidl @@ -0,0 +1,17 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-RGBColor + */ + +interface RGBColor { + readonly attribute CSSPrimitiveValue red; + readonly attribute CSSPrimitiveValue green; + readonly attribute CSSPrimitiveValue blue; + + // mozilla specific + readonly attribute CSSPrimitiveValue alpha; +}; diff --git a/dom/webidl/RTCCertificate.webidl b/dom/webidl/RTCCertificate.webidl new file mode 100644 index 0000000000..4058595185 --- /dev/null +++ b/dom/webidl/RTCCertificate.webidl @@ -0,0 +1,17 @@ +/* -*- 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/. + * + * Specification: http://w3c.github.io/webrtc-pc/#certificate-management + */ + +dictionary RTCCertificateExpiration { + [EnforceRange] + DOMTimeStamp expires; +}; + +[Pref="media.peerconnection.enabled"] +interface RTCCertificate { + readonly attribute DOMTimeStamp expires; +}; diff --git a/dom/webidl/RTCConfiguration.webidl b/dom/webidl/RTCConfiguration.webidl new file mode 100644 index 0000000000..2c4052b8a5 --- /dev/null +++ b/dom/webidl/RTCConfiguration.webidl @@ -0,0 +1,40 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://dev.w3.org/2011/webrtc/editor/webrtc.html#idl-def-RTCConfiguration + */ + +enum RTCIceCredentialType { + "password", + "token" +}; + +dictionary RTCIceServer { + (DOMString or sequence<DOMString>) urls; + DOMString url; //deprecated + DOMString username; + DOMString credential; + RTCIceCredentialType credentialType = "password"; +}; + +enum RTCIceTransportPolicy { + "relay", + "all" +}; + +enum RTCBundlePolicy { + "balanced", + "max-compat", + "max-bundle" +}; + +dictionary RTCConfiguration { + sequence<RTCIceServer> iceServers; + RTCIceTransportPolicy iceTransportPolicy = "all"; + RTCBundlePolicy bundlePolicy = "balanced"; + DOMString? peerIdentity = null; + sequence<RTCCertificate> certificates; +}; diff --git a/dom/webidl/RTCDTMFSender.webidl b/dom/webidl/RTCDTMFSender.webidl new file mode 100644 index 0000000000..bf601a1222 --- /dev/null +++ b/dom/webidl/RTCDTMFSender.webidl @@ -0,0 +1,17 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * https://www.w3.org/TR/webrtc/#rtcdtmfsender + */ + +[JSImplementation="@mozilla.org/dom/rtcdtmfsender;1"] +interface RTCDTMFSender : EventTarget { + void insertDTMF(DOMString tones, + optional unsigned long duration = 100, + optional unsigned long interToneGap = 70); + attribute EventHandler ontonechange; + readonly attribute DOMString toneBuffer; +}; diff --git a/dom/webidl/RTCDTMFToneChangeEvent.webidl b/dom/webidl/RTCDTMFToneChangeEvent.webidl new file mode 100644 index 0000000000..8cdae1592d --- /dev/null +++ b/dom/webidl/RTCDTMFToneChangeEvent.webidl @@ -0,0 +1,8 @@ +[Constructor(DOMString type, optional RTCDTMFToneChangeEventInit eventInitDict)] +interface RTCDTMFToneChangeEvent : Event { + readonly attribute DOMString tone; +}; + +dictionary RTCDTMFToneChangeEventInit : EventInit { + DOMString tone = ""; +}; diff --git a/dom/webidl/RTCDataChannelEvent.webidl b/dom/webidl/RTCDataChannelEvent.webidl new file mode 100644 index 0000000000..4c74bddb0e --- /dev/null +++ b/dom/webidl/RTCDataChannelEvent.webidl @@ -0,0 +1,20 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://dev.w3.org/2011/webrtc/editor/webrtc.html#idl-def-RTCDataChannelEvent + */ + +interface RTCDataChannel; + +dictionary RTCDataChannelEventInit : EventInit { + RTCDataChannel? channel = null; +}; + +[Pref="media.peerconnection.enabled", + Constructor(DOMString type, optional RTCDataChannelEventInit eventInitDict)] +interface RTCDataChannelEvent : Event { + readonly attribute RTCDataChannel? channel; +}; diff --git a/dom/webidl/RTCIceCandidate.webidl b/dom/webidl/RTCIceCandidate.webidl new file mode 100644 index 0000000000..67d479aef2 --- /dev/null +++ b/dom/webidl/RTCIceCandidate.webidl @@ -0,0 +1,25 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://dev.w3.org/2011/webrtc/editor/webrtc.html#idl-def-RTCIceCandidate + */ + +dictionary RTCIceCandidateInit { + DOMString? candidate = null; + DOMString? sdpMid = null; + unsigned short sdpMLineIndex; +}; + +[Pref="media.peerconnection.enabled", + JSImplementation="@mozilla.org/dom/rtcicecandidate;1", + Constructor(optional RTCIceCandidateInit candidateInitDict)] +interface RTCIceCandidate { + attribute DOMString? candidate; + attribute DOMString? sdpMid; + attribute unsigned short? sdpMLineIndex; + + jsonifier; +}; diff --git a/dom/webidl/RTCIdentityAssertion.webidl b/dom/webidl/RTCIdentityAssertion.webidl new file mode 100644 index 0000000000..621b21fed9 --- /dev/null +++ b/dom/webidl/RTCIdentityAssertion.webidl @@ -0,0 +1,13 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://w3c.github.io/webrtc-pc/#idl-def-RTCIdentityAssertion + */ + +dictionary RTCIdentityAssertion { + DOMString idp; + DOMString name; +}; diff --git a/dom/webidl/RTCIdentityProvider.webidl b/dom/webidl/RTCIdentityProvider.webidl new file mode 100644 index 0000000000..fd1b44b092 --- /dev/null +++ b/dom/webidl/RTCIdentityProvider.webidl @@ -0,0 +1,57 @@ +/* -*- 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/. + * + * http://w3c.github.io/webrtc-pc/ (with https://github.com/w3c/webrtc-pc/pull/178) + */ + +[NoInterfaceObject] +interface RTCIdentityProviderRegistrar { + void register(RTCIdentityProvider idp); + + /* Whether an IdP was passed to register() to chrome code. */ + [ChromeOnly] + readonly attribute boolean hasIdp; + /* The following two chrome-only functions forward to the corresponding + * function on the registered IdP. This is necessary because the + * JS-implemented WebIDL can't see these functions on `idp` above, chrome JS + * gets an Xray onto the content code that suppresses functions, see + * https://developer.mozilla.org/en-US/docs/Xray_vision#Xrays_for_JavaScript_objects + */ + /* Forward to idp.generateAssertion() */ + [ChromeOnly, Throws] + Promise<RTCIdentityAssertionResult> + generateAssertion(DOMString contents, DOMString origin, + optional DOMString usernameHint); + /* Forward to idp.validateAssertion() */ + [ChromeOnly, Throws] + Promise<RTCIdentityValidationResult> + validateAssertion(DOMString assertion, DOMString origin); +}; + +dictionary RTCIdentityProvider { + required GenerateAssertionCallback generateAssertion; + required ValidateAssertionCallback validateAssertion; +}; + +callback GenerateAssertionCallback = + Promise<RTCIdentityAssertionResult> + (DOMString contents, DOMString origin, optional DOMString usernameHint); +callback ValidateAssertionCallback = + Promise<RTCIdentityValidationResult> (DOMString assertion, DOMString origin); + +dictionary RTCIdentityAssertionResult { + required RTCIdentityProviderDetails idp; + required DOMString assertion; +}; + +dictionary RTCIdentityProviderDetails { + required DOMString domain; + DOMString protocol = "default"; +}; + +dictionary RTCIdentityValidationResult { + required DOMString identity; + required DOMString contents; +}; diff --git a/dom/webidl/RTCPeerConnection.webidl b/dom/webidl/RTCPeerConnection.webidl new file mode 100644 index 0000000000..510957056f --- /dev/null +++ b/dom/webidl/RTCPeerConnection.webidl @@ -0,0 +1,184 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://w3c.github.io/webrtc-pc/#interface-definition + */ + +callback RTCSessionDescriptionCallback = void (RTCSessionDescription sdp); +callback RTCPeerConnectionErrorCallback = void (DOMError error); +callback VoidFunction = void (); +callback RTCStatsCallback = void (RTCStatsReport report); + +enum RTCSignalingState { + "stable", + "have-local-offer", + "have-remote-offer", + "have-local-pranswer", + "have-remote-pranswer", + "closed" +}; + +enum RTCIceGatheringState { + "new", + "gathering", + "complete" +}; + +enum RTCIceConnectionState { + "new", + "checking", + "connected", + "completed", + "failed", + "disconnected", + "closed" +}; + +dictionary RTCDataChannelInit { + boolean ordered = true; + unsigned short? maxRetransmitTime = null; + unsigned short? maxRetransmits = null; + DOMString protocol = ""; + boolean negotiated = false; // spec currently says 'true'; we disagree + unsigned short? id = null; + + // these are deprecated due to renaming in the spec, but still supported for Fx22 + boolean outOfOrderAllowed; // now ordered, and the default changes to keep behavior the same + unsigned short maxRetransmitNum; // now maxRetransmits + boolean preset; // now negotiated + unsigned short stream; // now id +}; + +dictionary RTCOfferAnswerOptions { +// boolean voiceActivityDetection = true; // TODO: support this (Bug 1184712) +}; + +dictionary RTCAnswerOptions : RTCOfferAnswerOptions { +}; + +dictionary RTCOfferOptions : RTCOfferAnswerOptions { + long offerToReceiveVideo; + long offerToReceiveAudio; + boolean iceRestart = false; + + // Mozilla proprietary options (at risk: Bug 1196974) + boolean mozDontOfferDataChannel; + boolean mozBundleOnly; + + // TODO: Remove old constraint-like RTCOptions support soon (Bug 1064223). + DeprecatedRTCOfferOptionsSet mandatory; + sequence<DeprecatedRTCOfferOptionsSet> _optional; +}; + +dictionary DeprecatedRTCOfferOptionsSet { + boolean OfferToReceiveAudio; // Note the uppercase 'O' + boolean OfferToReceiveVideo; // Note the uppercase 'O' + boolean MozDontOfferDataChannel; // Note the uppercase 'M' + boolean MozBundleOnly; // Note the uppercase 'M' +}; + +interface RTCDataChannel; + +[Pref="media.peerconnection.enabled", + JSImplementation="@mozilla.org/dom/peerconnection;1", + Constructor (optional RTCConfiguration configuration, + optional object? constraints)] +interface RTCPeerConnection : EventTarget { + [Throws, StaticClassOverride="mozilla::dom::RTCCertificate"] + static Promise<RTCCertificate> generateCertificate (AlgorithmIdentifier keygenAlgorithm); + + [Pref="media.peerconnection.identity.enabled"] + void setIdentityProvider (DOMString provider, + optional DOMString protocol, + optional DOMString username); + [Pref="media.peerconnection.identity.enabled"] + Promise<DOMString> getIdentityAssertion(); + Promise<RTCSessionDescription> createOffer (optional RTCOfferOptions options); + Promise<RTCSessionDescription> createAnswer (optional RTCAnswerOptions options); + Promise<void> setLocalDescription (RTCSessionDescription description); + Promise<void> setRemoteDescription (RTCSessionDescription description); + readonly attribute RTCSessionDescription? localDescription; + readonly attribute RTCSessionDescription? remoteDescription; + readonly attribute RTCSignalingState signalingState; + Promise<void> addIceCandidate (RTCIceCandidate candidate); + readonly attribute boolean? canTrickleIceCandidates; + readonly attribute RTCIceGatheringState iceGatheringState; + readonly attribute RTCIceConnectionState iceConnectionState; + [Pref="media.peerconnection.identity.enabled"] + readonly attribute Promise<RTCIdentityAssertion> peerIdentity; + [Pref="media.peerconnection.identity.enabled"] + readonly attribute DOMString? idpLoginUrl; + + [ChromeOnly] + attribute DOMString id; + + RTCConfiguration getConfiguration (); + [UnsafeInPrerendering, Deprecated="RTCPeerConnectionGetStreams"] + sequence<MediaStream> getLocalStreams (); + [UnsafeInPrerendering, Deprecated="RTCPeerConnectionGetStreams"] + sequence<MediaStream> getRemoteStreams (); + [UnsafeInPrerendering] + MediaStream? getStreamById (DOMString streamId); + void addStream (MediaStream stream); + + // replaces addStream; fails if already added + // because a track can be part of multiple streams, stream parameters + // indicate which particular streams should be referenced in signaling + + RTCRtpSender addTrack(MediaStreamTrack track, + MediaStream stream, + MediaStream... moreStreams); + void removeTrack(RTCRtpSender sender); + + sequence<RTCRtpSender> getSenders(); + sequence<RTCRtpReceiver> getReceivers(); + + [ChromeOnly] + void mozSelectSsrc(RTCRtpReceiver receiver, unsigned short ssrcIndex); + + void close (); + attribute EventHandler onnegotiationneeded; + attribute EventHandler onicecandidate; + attribute EventHandler onsignalingstatechange; + attribute EventHandler onaddstream; // obsolete + attribute EventHandler onaddtrack; // obsolete + attribute EventHandler ontrack; // replaces onaddtrack and onaddstream. + attribute EventHandler onremovestream; + attribute EventHandler oniceconnectionstatechange; + + Promise<RTCStatsReport> getStats (optional MediaStreamTrack? selector); + + // Data channel. + RTCDataChannel createDataChannel (DOMString label, + optional RTCDataChannelInit dataChannelDict); + attribute EventHandler ondatachannel; +}; + +// Legacy callback API + +partial interface RTCPeerConnection { + + // Dummy Promise<void> return values avoid "WebIDL.WebIDLError: error: + // We have overloads with both Promise and non-Promise return types" + + Promise<void> createOffer (RTCSessionDescriptionCallback successCallback, + RTCPeerConnectionErrorCallback failureCallback, + optional RTCOfferOptions options); + Promise<void> createAnswer (RTCSessionDescriptionCallback successCallback, + RTCPeerConnectionErrorCallback failureCallback); + Promise<void> setLocalDescription (RTCSessionDescription description, + VoidFunction successCallback, + RTCPeerConnectionErrorCallback failureCallback); + Promise<void> setRemoteDescription (RTCSessionDescription description, + VoidFunction successCallback, + RTCPeerConnectionErrorCallback failureCallback); + Promise<void> addIceCandidate (RTCIceCandidate candidate, + VoidFunction successCallback, + RTCPeerConnectionErrorCallback failureCallback); + Promise<void> getStats (MediaStreamTrack? selector, + RTCStatsCallback successCallback, + RTCPeerConnectionErrorCallback failureCallback); +}; diff --git a/dom/webidl/RTCPeerConnectionIceEvent.webidl b/dom/webidl/RTCPeerConnectionIceEvent.webidl new file mode 100644 index 0000000000..5ec47f4705 --- /dev/null +++ b/dom/webidl/RTCPeerConnectionIceEvent.webidl @@ -0,0 +1,19 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://dev.w3.org/2011/webrtc/editor/webrtc.html#idl-def-RTCPeerConnectionIceEvent + */ + +dictionary RTCPeerConnectionIceEventInit : EventInit { + RTCIceCandidate? candidate = null; +}; + +[Pref="media.peerconnection.enabled", + Constructor(DOMString type, + optional RTCPeerConnectionIceEventInit eventInitDict)] +interface RTCPeerConnectionIceEvent : Event { + readonly attribute RTCIceCandidate? candidate; +}; diff --git a/dom/webidl/RTCPeerConnectionStatic.webidl b/dom/webidl/RTCPeerConnectionStatic.webidl new file mode 100644 index 0000000000..5b21ee6e65 --- /dev/null +++ b/dom/webidl/RTCPeerConnectionStatic.webidl @@ -0,0 +1,39 @@ +/* -*- 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/. + */ + +/* + Right now, it is not possible to add static functions to a JS implemented + interface (see bug 863952), so we need to create a simple interface with a + trivial constructor and no data to hold these functions that really ought to + be static in RTCPeerConnection. + TODO(bcampen@mozilla.com) Merge this code into RTCPeerConnection once this + limitation is gone. (Bug 1017082) +*/ + +enum RTCLifecycleEvent { + "initialized", + "icegatheringstatechange", + "iceconnectionstatechange" +}; + +callback PeerConnectionLifecycleCallback = void (RTCPeerConnection pc, + unsigned long long windowId, + RTCLifecycleEvent eventType); + +[ChromeOnly, + Pref="media.peerconnection.enabled", + JSImplementation="@mozilla.org/dom/peerconnectionstatic;1", + Constructor()] +interface RTCPeerConnectionStatic { + + /* One slot per window (the window in which the register call is made), + automatically unregistered when window goes away. + Fires when a PC is created, and whenever the ICE connection state or + gathering state changes. */ + void registerPeerConnectionLifecycleCallback( + PeerConnectionLifecycleCallback cb); +}; + diff --git a/dom/webidl/RTCRtpReceiver.webidl b/dom/webidl/RTCRtpReceiver.webidl new file mode 100644 index 0000000000..94343ea03c --- /dev/null +++ b/dom/webidl/RTCRtpReceiver.webidl @@ -0,0 +1,14 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://lists.w3.org/Archives/Public/public-webrtc/2014May/0067.html + */ + +[Pref="media.peerconnection.enabled", + JSImplementation="@mozilla.org/dom/rtpreceiver;1"] +interface RTCRtpReceiver { + readonly attribute MediaStreamTrack track; +}; diff --git a/dom/webidl/RTCRtpSender.webidl b/dom/webidl/RTCRtpSender.webidl new file mode 100644 index 0000000000..15c08db405 --- /dev/null +++ b/dom/webidl/RTCRtpSender.webidl @@ -0,0 +1,78 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://w3c.github.io/webrtc-pc/#rtcrtpsender-interface + */ + +enum RTCPriorityType { + "very-low", + "low", + "medium", + "high" +}; + +enum RTCDegradationPreference { + "maintain-framerate", + "maintain-resolution", + "balanced" +}; + +dictionary RTCRtxParameters { + unsigned long ssrc; +}; + +dictionary RTCFecParameters { + unsigned long ssrc; +}; + +dictionary RTCRtpEncodingParameters { + unsigned long ssrc; + RTCRtxParameters rtx; + RTCFecParameters fec; + boolean active; + RTCPriorityType priority; + unsigned long maxBitrate; + RTCDegradationPreference degradationPreference = "balanced"; + DOMString rid; + float scaleResolutionDownBy = 1.0; +}; + +dictionary RTCRtpHeaderExtensionParameters { + DOMString uri; + unsigned short id; + boolean encrypted; +}; + +dictionary RTCRtcpParameters { + DOMString cname; + boolean reducedSize; +}; + +dictionary RTCRtpCodecParameters { + unsigned short payloadType; + DOMString mimeType; + unsigned long clockRate; + unsigned short channels = 1; + DOMString sdpFmtpLine; +}; + +dictionary RTCRtpParameters { + sequence<RTCRtpEncodingParameters> encodings; + sequence<RTCRtpHeaderExtensionParameters> headerExtensions; + RTCRtcpParameters rtcp; + sequence<RTCRtpCodecParameters> codecs; +}; + +[Pref="media.peerconnection.enabled", + JSImplementation="@mozilla.org/dom/rtpsender;1"] +interface RTCRtpSender { + readonly attribute MediaStreamTrack track; + Promise<void> setParameters (optional RTCRtpParameters parameters); + RTCRtpParameters getParameters(); + Promise<void> replaceTrack(MediaStreamTrack track); + [Pref="media.peerconnection.dtmf.enabled"] + readonly attribute RTCDTMFSender? dtmf; +}; diff --git a/dom/webidl/RTCSessionDescription.webidl b/dom/webidl/RTCSessionDescription.webidl new file mode 100644 index 0000000000..07bfb36f02 --- /dev/null +++ b/dom/webidl/RTCSessionDescription.webidl @@ -0,0 +1,30 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://dev.w3.org/2011/webrtc/editor/webrtc.html#idl-def-RTCSessionDescription + */ + +enum RTCSdpType { + "offer", + "pranswer", + "answer", + "rollback" +}; + +dictionary RTCSessionDescriptionInit { + RTCSdpType? type = null; + DOMString? sdp = ""; +}; + +[Pref="media.peerconnection.enabled", + JSImplementation="@mozilla.org/dom/rtcsessiondescription;1", + Constructor(optional RTCSessionDescriptionInit descriptionInitDict)] +interface RTCSessionDescription { + attribute RTCSdpType? type; + attribute DOMString? sdp; + + jsonifier; +}; diff --git a/dom/webidl/RTCStatsReport.webidl b/dom/webidl/RTCStatsReport.webidl new file mode 100644 index 0000000000..04c683e9a1 --- /dev/null +++ b/dom/webidl/RTCStatsReport.webidl @@ -0,0 +1,177 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://dev.w3.org/2011/webrtc/editor/webrtc.html#rtcstatsreport-object + * http://www.w3.org/2011/04/webrtc/wiki/Stats + */ + +enum RTCStatsType { + "inboundrtp", + "outboundrtp", + "session", + "track", + "transport", + "candidatepair", + "localcandidate", + "remotecandidate" +}; + +dictionary RTCStats { + DOMHighResTimeStamp timestamp; + RTCStatsType type; + DOMString id; +}; + +dictionary RTCRTPStreamStats : RTCStats { + DOMString ssrc; + DOMString mediaType; + DOMString remoteId; + boolean isRemote = false; + DOMString mediaTrackId; + DOMString transportId; + DOMString codecId; + + // Video encoder/decoder measurements (absent for rtcp) + double bitrateMean; + double bitrateStdDev; + double framerateMean; + double framerateStdDev; +}; + +dictionary RTCInboundRTPStreamStats : RTCRTPStreamStats { + unsigned long packetsReceived; + unsigned long long bytesReceived; + double jitter; + unsigned long packetsLost; + long mozAvSyncDelay; + long mozJitterBufferDelay; + long mozRtt; + + // Video decoder measurement (absent in rtcp case) + unsigned long discardedPackets; +}; + +dictionary RTCOutboundRTPStreamStats : RTCRTPStreamStats { + unsigned long packetsSent; + unsigned long long bytesSent; + double targetBitrate; // config encoder bitrate target of this SSRC in bits/s + + // Video encoder measurement (absent in rtcp case) + unsigned long droppedFrames; +}; + +dictionary RTCMediaStreamTrackStats : RTCStats { + DOMString trackIdentifier; // track.id property + boolean remoteSource; + sequence<DOMString> ssrcIds; + // Stuff that makes sense for video + unsigned long frameWidth; + unsigned long frameHeight; + double framesPerSecond; // The nominal FPS value + unsigned long framesSent; + unsigned long framesReceived; // Only for remoteSource=true + unsigned long framesDecoded; + unsigned long framesDropped; // See VideoPlaybackQuality.droppedVideoFrames + unsigned long framesCorrupted; // as above. + // Stuff that makes sense for audio + double audioLevel; // linear, 1.0 = 0 dBov (from RFC 6464). + // AEC stuff on audio tracks sourced from a microphone where AEC is applied + double echoReturnLoss; // in decibels from G.168 (2012) section 3.14 + double echoReturnLossEnhancement; // as above, section 3.15 +}; + +dictionary RTCMediaStreamStats : RTCStats { + DOMString streamIdentifier; // stream.id property + sequence<DOMString> trackIds; // Note: stats object ids, not track.id +}; + +dictionary RTCTransportStats: RTCStats { + unsigned long bytesSent; + unsigned long bytesReceived; +}; + +dictionary RTCIceComponentStats : RTCStats { + DOMString transportId; + long component; + unsigned long bytesSent; + unsigned long bytesReceived; + boolean activeConnection; +}; + +enum RTCStatsIceCandidatePairState { + "frozen", + "waiting", + "inprogress", + "failed", + "succeeded", + "cancelled" +}; + +dictionary RTCIceCandidatePairStats : RTCStats { + DOMString componentId; + DOMString localCandidateId; + DOMString remoteCandidateId; + RTCStatsIceCandidatePairState state; + unsigned long long priority; + boolean readable; + boolean nominated; + boolean selected; +}; + +enum RTCStatsIceCandidateType { + "host", + "serverreflexive", + "peerreflexive", + "relayed" +}; + +dictionary RTCIceCandidateStats : RTCStats { + DOMString componentId; + DOMString candidateId; + DOMString ipAddress; + DOMString transport; + DOMString mozLocalTransport; // needs standardization + long portNumber; + RTCStatsIceCandidateType candidateType; +}; + +dictionary RTCCodecStats : RTCStats { + unsigned long payloadType; // As used in RTP encoding. + DOMString codec; // video/vp8 or equivalent + unsigned long clockRate; + unsigned long channels; // 2=stereo, missing for most other cases. + DOMString parameters; // From SDP description line +}; + +// This is the internal representation of the report in this implementation +// to be received from c++ + +dictionary RTCStatsReportInternal { + DOMString pcid = ""; + sequence<RTCInboundRTPStreamStats> inboundRTPStreamStats; + sequence<RTCOutboundRTPStreamStats> outboundRTPStreamStats; + sequence<RTCMediaStreamTrackStats> mediaStreamTrackStats; + sequence<RTCMediaStreamStats> mediaStreamStats; + sequence<RTCTransportStats> transportStats; + sequence<RTCIceComponentStats> iceComponentStats; + sequence<RTCIceCandidatePairStats> iceCandidatePairStats; + sequence<RTCIceCandidateStats> iceCandidateStats; + sequence<RTCCodecStats> codecStats; + DOMString localSdp; + DOMString remoteSdp; + DOMHighResTimeStamp timestamp; + boolean closed; // Is the PC now closed +}; + +[Pref="media.peerconnection.enabled", +// TODO: Use MapClass here once it's available (Bug 928114) +// MapClass(DOMString, object) + JSImplementation="@mozilla.org/dom/rtcstatsreport;1"] +interface RTCStatsReport { + readonly maplike<DOMString, object>; + [ChromeOnly] + readonly attribute DOMString mozPcid; +}; diff --git a/dom/webidl/RTCTrackEvent.webidl b/dom/webidl/RTCTrackEvent.webidl new file mode 100644 index 0000000000..a87915bbed --- /dev/null +++ b/dom/webidl/RTCTrackEvent.webidl @@ -0,0 +1,27 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://w3c.github.io/webrtc-pc/#idl-def-RTCTrackEvent + */ + +dictionary RTCTrackEventInit : EventInit { + required RTCRtpReceiver receiver; + required MediaStreamTrack track; + sequence<MediaStream> streams = []; +}; + +[Pref="media.peerconnection.enabled", + Constructor(DOMString type, RTCTrackEventInit eventInitDict)] +interface RTCTrackEvent : Event { + readonly attribute RTCRtpReceiver receiver; + readonly attribute MediaStreamTrack track; + +// TODO: Use FrozenArray once available. (Bug 1236777) +// readonly attribute FrozenArray<MediaStream> streams; + + [Frozen, Cached, Pure] + readonly attribute sequence<MediaStream> streams; // workaround +}; diff --git a/dom/webidl/RadioNodeList.webidl b/dom/webidl/RadioNodeList.webidl new file mode 100644 index 0000000000..4e533533a2 --- /dev/null +++ b/dom/webidl/RadioNodeList.webidl @@ -0,0 +1,16 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.whatwg.org/specs/web-apps/current-work/multipage/common-dom-interfaces.html#htmlformcontrolscollection-0 + * + * © Copyright 2004-2014 Apple Computer, Inc., Mozilla Foundation, and + * Opera Software ASA. You are granted a license to use, reproduce + * and create derivative works of this document. + */ + +interface RadioNodeList : NodeList { + attribute DOMString value; +}; diff --git a/dom/webidl/Range.webidl b/dom/webidl/Range.webidl new file mode 100644 index 0000000000..ac8e1ebf09 --- /dev/null +++ b/dom/webidl/Range.webidl @@ -0,0 +1,98 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://dom.spec.whatwg.org/#range + * http://domparsing.spec.whatwg.org/#dom-range-createcontextualfragment + * http://dvcs.w3.org/hg/csswg/raw-file/tip/cssom-view/Overview.html#extensions-to-the-range-interface + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +[Constructor] +interface Range { + [Throws] + readonly attribute Node startContainer; + [Throws] + readonly attribute unsigned long startOffset; + [Throws] + readonly attribute Node endContainer; + [Throws] + readonly attribute unsigned long endOffset; + readonly attribute boolean collapsed; + [Throws] + readonly attribute Node commonAncestorContainer; + + [Throws] + void setStart(Node refNode, unsigned long offset); + [Throws] + void setEnd(Node refNode, unsigned long offset); + [Throws] + void setStartBefore(Node refNode); + [Throws] + void setStartAfter(Node refNode); + [Throws] + void setEndBefore(Node refNode); + [Throws] + void setEndAfter(Node refNode); + void collapse(optional boolean toStart = false); + [Throws] + void selectNode(Node refNode); + [Throws] + void selectNodeContents(Node refNode); + + const unsigned short START_TO_START = 0; + const unsigned short START_TO_END = 1; + const unsigned short END_TO_END = 2; + const unsigned short END_TO_START = 3; + [Throws] + short compareBoundaryPoints(unsigned short how, Range sourceRange); + [Throws] + void deleteContents(); + [Throws] + DocumentFragment extractContents(); + [Throws] + DocumentFragment cloneContents(); + [Throws] + void insertNode(Node node); + [Throws] + void surroundContents(Node newParent); + + Range cloneRange(); + void detach(); + + [Throws] + boolean isPointInRange(Node node, unsigned long offset); + [Throws] + short comparePoint(Node node, unsigned long offset); + + [Throws] + boolean intersectsNode(Node node); + + stringifier; +}; + +// http://domparsing.spec.whatwg.org/#dom-range-createcontextualfragment +partial interface Range { + [Throws] + DocumentFragment createContextualFragment(DOMString fragment); +}; + +// http://dvcs.w3.org/hg/csswg/raw-file/tip/cssom-view/Overview.html#extensions-to-the-range-interface +partial interface Range { + DOMRectList? getClientRects(); + DOMRect getBoundingClientRect(); +}; + +dictionary ClientRectsAndTexts { + required DOMRectList rectList; + required DOMStringList textList; +}; + +partial interface Range { + [ChromeOnly, Throws] + ClientRectsAndTexts getClientRectsAndTexts(); +}; diff --git a/dom/webidl/RecordErrorEvent.webidl b/dom/webidl/RecordErrorEvent.webidl new file mode 100644 index 0000000000..c7022dbbe2 --- /dev/null +++ b/dom/webidl/RecordErrorEvent.webidl @@ -0,0 +1,16 @@ +/* -*- 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/. + */ + +[Constructor(DOMString type, optional RecordErrorEventInit eventInitDict)] +interface RecordErrorEvent : Event +{ + readonly attribute DOMString name; +}; + +dictionary RecordErrorEventInit : EventInit +{ + DOMString name = ""; +}; diff --git a/dom/webidl/Rect.webidl b/dom/webidl/Rect.webidl new file mode 100644 index 0000000000..1be3181436 --- /dev/null +++ b/dom/webidl/Rect.webidl @@ -0,0 +1,12 @@ +/* -*- 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/. + */ + +interface Rect { + readonly attribute CSSPrimitiveValue top; + readonly attribute CSSPrimitiveValue right; + readonly attribute CSSPrimitiveValue bottom; + readonly attribute CSSPrimitiveValue left; +}; diff --git a/dom/webidl/Request.webidl b/dom/webidl/Request.webidl new file mode 100644 index 0000000000..e29c084d00 --- /dev/null +++ b/dom/webidl/Request.webidl @@ -0,0 +1,66 @@ +/* -*- Mode: IDL; tab-width: 1; 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/. + * + * The origin of this IDL file is + * https://fetch.spec.whatwg.org/#request-class + */ + +typedef (Request or USVString) RequestInfo; +typedef unsigned long nsContentPolicyType; + +[Constructor(RequestInfo input, optional RequestInit init), + Exposed=(Window,Worker)] +interface Request { + readonly attribute ByteString method; + readonly attribute USVString url; + [SameObject] readonly attribute Headers headers; + + [Func="mozilla::dom::Request::RequestContextEnabled"] + readonly attribute RequestContext context; + readonly attribute USVString referrer; + readonly attribute ReferrerPolicy referrerPolicy; + readonly attribute RequestMode mode; + readonly attribute RequestCredentials credentials; + readonly attribute RequestCache cache; + readonly attribute RequestRedirect redirect; + readonly attribute DOMString integrity; + + [Throws, + NewObject] Request clone(); + + // Bug 1124638 - Allow chrome callers to set the context. + [ChromeOnly] + void overrideContentPolicyType(nsContentPolicyType context); +}; +Request implements Body; + +dictionary RequestInit { + ByteString method; + HeadersInit headers; + BodyInit? body; + USVString referrer; + ReferrerPolicy referrerPolicy; + RequestMode mode; + RequestCredentials credentials; + RequestCache cache; + RequestRedirect redirect; + DOMString integrity; +}; + +// Gecko currently does not ship RequestContext, so please don't use it in IDL +// that is exposed to script. +enum RequestContext { + "audio", "beacon", "cspreport", "download", "embed", "eventsource", "favicon", "fetch", + "font", "form", "frame", "hyperlink", "iframe", "image", "imageset", "import", + "internal", "location", "manifest", "object", "ping", "plugin", "prefetch", "script", + "sharedworker", "subresource", "style", "track", "video", "worker", "xmlhttprequest", + "xslt" +}; + +enum RequestMode { "same-origin", "no-cors", "cors", "navigate" }; +enum RequestCredentials { "omit", "same-origin", "include" }; +enum RequestCache { "default", "no-store", "reload", "no-cache", "force-cache", "only-if-cached" }; +enum RequestRedirect { "follow", "error", "manual" }; +enum ReferrerPolicy { "", "no-referrer", "no-referrer-when-downgrade", "origin", "origin-when-cross-origin", "unsafe-url" }; diff --git a/dom/webidl/Response.webidl b/dom/webidl/Response.webidl new file mode 100644 index 0000000000..8713146aa4 --- /dev/null +++ b/dom/webidl/Response.webidl @@ -0,0 +1,39 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * https://fetch.spec.whatwg.org/#response-class + */ + +[Constructor(optional BodyInit body, optional ResponseInit init), + Exposed=(Window,Worker)] +interface Response { + [NewObject] static Response error(); + [Throws, + NewObject] static Response redirect(USVString url, optional unsigned short status = 302); + + readonly attribute ResponseType type; + + readonly attribute USVString url; + readonly attribute boolean redirected; + readonly attribute unsigned short status; + readonly attribute boolean ok; + readonly attribute ByteString statusText; + [SameObject] readonly attribute Headers headers; + + [Throws, + NewObject] Response clone(); + + [ChromeOnly, NewObject, Throws] Response cloneUnfiltered(); +}; +Response implements Body; + +dictionary ResponseInit { + unsigned short status = 200; + ByteString statusText = "OK"; + HeadersInit headers; +}; + +enum ResponseType { "basic", "cors", "default", "error", "opaque", "opaqueredirect" }; diff --git a/dom/webidl/SVGAElement.webidl b/dom/webidl/SVGAElement.webidl new file mode 100644 index 0000000000..f158669113 --- /dev/null +++ b/dom/webidl/SVGAElement.webidl @@ -0,0 +1,21 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/SVG2/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface SVGAElement : SVGGraphicsElement { + readonly attribute SVGAnimatedString target; + + [SetterThrows] + attribute DOMString download; +}; + +SVGAElement implements SVGURIReference; + diff --git a/dom/webidl/SVGAngle.webidl b/dom/webidl/SVGAngle.webidl new file mode 100644 index 0000000000..f17b8836cc --- /dev/null +++ b/dom/webidl/SVGAngle.webidl @@ -0,0 +1,35 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/SVG2/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface SVGAngle { + + // Angle Unit Types + const unsigned short SVG_ANGLETYPE_UNKNOWN = 0; + const unsigned short SVG_ANGLETYPE_UNSPECIFIED = 1; + const unsigned short SVG_ANGLETYPE_DEG = 2; + const unsigned short SVG_ANGLETYPE_RAD = 3; + const unsigned short SVG_ANGLETYPE_GRAD = 4; + + readonly attribute unsigned short unitType; + [SetterThrows] + attribute float value; + [SetterThrows] + attribute float valueInSpecifiedUnits; + [SetterThrows] + attribute DOMString valueAsString; + + [Throws] + void newValueSpecifiedUnits(unsigned short unitType, float valueInSpecifiedUnits); + [Throws] + void convertToSpecifiedUnits(unsigned short unitType); +}; + diff --git a/dom/webidl/SVGAnimateElement.webidl b/dom/webidl/SVGAnimateElement.webidl new file mode 100644 index 0000000000..c9841f2a84 --- /dev/null +++ b/dom/webidl/SVGAnimateElement.webidl @@ -0,0 +1,15 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/SVG2/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface SVGAnimateElement : SVGAnimationElement { +}; + diff --git a/dom/webidl/SVGAnimateMotionElement.webidl b/dom/webidl/SVGAnimateMotionElement.webidl new file mode 100644 index 0000000000..38993d7619 --- /dev/null +++ b/dom/webidl/SVGAnimateMotionElement.webidl @@ -0,0 +1,15 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/SVG2/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface SVGAnimateMotionElement : SVGAnimationElement { +}; + diff --git a/dom/webidl/SVGAnimateTransformElement.webidl b/dom/webidl/SVGAnimateTransformElement.webidl new file mode 100644 index 0000000000..38701e61ce --- /dev/null +++ b/dom/webidl/SVGAnimateTransformElement.webidl @@ -0,0 +1,15 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/SVG2/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface SVGAnimateTransformElement : SVGAnimationElement { +}; + diff --git a/dom/webidl/SVGAnimatedAngle.webidl b/dom/webidl/SVGAnimatedAngle.webidl new file mode 100644 index 0000000000..5b01c8c35e --- /dev/null +++ b/dom/webidl/SVGAnimatedAngle.webidl @@ -0,0 +1,19 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/SVG2/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface SVGAnimatedAngle { + [Constant] + readonly attribute SVGAngle baseVal; + [Constant] + readonly attribute SVGAngle animVal; +}; + diff --git a/dom/webidl/SVGAnimatedBoolean.webidl b/dom/webidl/SVGAnimatedBoolean.webidl new file mode 100644 index 0000000000..990bbc7dee --- /dev/null +++ b/dom/webidl/SVGAnimatedBoolean.webidl @@ -0,0 +1,17 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/SVG2/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface SVGAnimatedBoolean { + attribute boolean baseVal; + readonly attribute boolean animVal; +}; + diff --git a/dom/webidl/SVGAnimatedEnumeration.webidl b/dom/webidl/SVGAnimatedEnumeration.webidl new file mode 100644 index 0000000000..80591c2f1b --- /dev/null +++ b/dom/webidl/SVGAnimatedEnumeration.webidl @@ -0,0 +1,17 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * https://svgwg.org/svg2-draft/types.html#InterfaceSVGAnimatedEnumeration + * + * Copyright © 2013 W3C® (MIT, ERCIM, Keio, Beihang), All Rights Reserved. + * W3C liability, trademark and document use rules apply. + */ + +interface SVGAnimatedEnumeration { + [SetterThrows] + attribute unsigned short baseVal; + readonly attribute unsigned short animVal; +}; diff --git a/dom/webidl/SVGAnimatedInteger.webidl b/dom/webidl/SVGAnimatedInteger.webidl new file mode 100644 index 0000000000..61b43b3517 --- /dev/null +++ b/dom/webidl/SVGAnimatedInteger.webidl @@ -0,0 +1,16 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * https://svgwg.org/svg2-draft/types.html#InterfaceSVGAnimatedInteger + * + * Copyright © 2013 W3C® (MIT, ERCIM, Keio, Beihang), All Rights Reserved. + * W3C liability, trademark and document use rules apply. + */ + +interface SVGAnimatedInteger { + attribute long baseVal; + readonly attribute long animVal; +}; diff --git a/dom/webidl/SVGAnimatedLength.webidl b/dom/webidl/SVGAnimatedLength.webidl new file mode 100644 index 0000000000..f7fac144d3 --- /dev/null +++ b/dom/webidl/SVGAnimatedLength.webidl @@ -0,0 +1,19 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/SVG2/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface SVGAnimatedLength { + [Constant] + readonly attribute SVGLength baseVal; + [Constant] + readonly attribute SVGLength animVal; +}; + diff --git a/dom/webidl/SVGAnimatedLengthList.webidl b/dom/webidl/SVGAnimatedLengthList.webidl new file mode 100644 index 0000000000..0d85e1616b --- /dev/null +++ b/dom/webidl/SVGAnimatedLengthList.webidl @@ -0,0 +1,19 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/SVG2/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface SVGAnimatedLengthList { + [Constant] + readonly attribute SVGLengthList baseVal; + [Constant] + readonly attribute SVGLengthList animVal; +}; + diff --git a/dom/webidl/SVGAnimatedNumber.webidl b/dom/webidl/SVGAnimatedNumber.webidl new file mode 100644 index 0000000000..5908f0f868 --- /dev/null +++ b/dom/webidl/SVGAnimatedNumber.webidl @@ -0,0 +1,16 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * https://svgwg.org/svg2-draft/types.html#InterfaceSVGAnimatedNumber + * + * Copyright © 2013 W3C® (MIT, ERCIM, Keio, Beihang), All Rights Reserved. + * W3C liability, trademark and document use rules apply. + */ + +interface SVGAnimatedNumber { + attribute float baseVal; + readonly attribute float animVal; +}; diff --git a/dom/webidl/SVGAnimatedNumberList.webidl b/dom/webidl/SVGAnimatedNumberList.webidl new file mode 100644 index 0000000000..81fba2e062 --- /dev/null +++ b/dom/webidl/SVGAnimatedNumberList.webidl @@ -0,0 +1,19 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/SVG2/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface SVGAnimatedNumberList { + [Constant] + readonly attribute SVGNumberList baseVal; + [Constant] + readonly attribute SVGNumberList animVal; +}; + diff --git a/dom/webidl/SVGAnimatedPathData.webidl b/dom/webidl/SVGAnimatedPathData.webidl new file mode 100644 index 0000000000..08f10f7217 --- /dev/null +++ b/dom/webidl/SVGAnimatedPathData.webidl @@ -0,0 +1,20 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/SVG2/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +[NoInterfaceObject] +interface SVGAnimatedPathData { + readonly attribute SVGPathSegList pathSegList; + //readonly attribute SVGPathSegList normalizedPathSegList; + readonly attribute SVGPathSegList animatedPathSegList; + //readonly attribute SVGPathSegList animatedNormalizedPathSegList; +}; + diff --git a/dom/webidl/SVGAnimatedPoints.webidl b/dom/webidl/SVGAnimatedPoints.webidl new file mode 100644 index 0000000000..891ca4bc0f --- /dev/null +++ b/dom/webidl/SVGAnimatedPoints.webidl @@ -0,0 +1,20 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/SVG2/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +[NoInterfaceObject] +interface SVGAnimatedPoints { + [Constant] + readonly attribute SVGPointList points; + [Constant] + readonly attribute SVGPointList animatedPoints; +}; + diff --git a/dom/webidl/SVGAnimatedPreserveAspectRatio.webidl b/dom/webidl/SVGAnimatedPreserveAspectRatio.webidl new file mode 100644 index 0000000000..07506a5bf8 --- /dev/null +++ b/dom/webidl/SVGAnimatedPreserveAspectRatio.webidl @@ -0,0 +1,19 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/SVG2/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface SVGAnimatedPreserveAspectRatio { + [Constant] + readonly attribute SVGPreserveAspectRatio baseVal; + [Constant] + readonly attribute SVGPreserveAspectRatio animVal; +}; + diff --git a/dom/webidl/SVGAnimatedRect.webidl b/dom/webidl/SVGAnimatedRect.webidl new file mode 100644 index 0000000000..fffebbe88d --- /dev/null +++ b/dom/webidl/SVGAnimatedRect.webidl @@ -0,0 +1,16 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/SVG2/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface SVGAnimatedRect { + readonly attribute SVGRect? baseVal; + readonly attribute SVGRect? animVal; +}; diff --git a/dom/webidl/SVGAnimatedString.webidl b/dom/webidl/SVGAnimatedString.webidl new file mode 100644 index 0000000000..eaf3773d0e --- /dev/null +++ b/dom/webidl/SVGAnimatedString.webidl @@ -0,0 +1,16 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/SVG2/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface SVGAnimatedString { + attribute DOMString baseVal; + readonly attribute DOMString animVal; +}; diff --git a/dom/webidl/SVGAnimatedTransformList.webidl b/dom/webidl/SVGAnimatedTransformList.webidl new file mode 100644 index 0000000000..3ea39d130a --- /dev/null +++ b/dom/webidl/SVGAnimatedTransformList.webidl @@ -0,0 +1,19 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/SVG2/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface SVGAnimatedTransformList { + [Constant] + readonly attribute SVGTransformList baseVal; + [Constant] + readonly attribute SVGTransformList animVal; +}; + diff --git a/dom/webidl/SVGAnimationElement.webidl b/dom/webidl/SVGAnimationElement.webidl new file mode 100644 index 0000000000..4f9a95fe3b --- /dev/null +++ b/dom/webidl/SVGAnimationElement.webidl @@ -0,0 +1,34 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/SVG2/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface SVGAnimationElement : SVGElement { + + readonly attribute SVGElement? targetElement; + + [Throws] + float getStartTime(); + float getCurrentTime(); + [Throws] + float getSimpleDuration(); + + [Throws] + void beginElement(); + [Throws] + void beginElementAt(float offset); + [Throws] + void endElement(); + [Throws] + void endElementAt(float offset); +}; + +SVGAnimationElement implements SVGTests; + diff --git a/dom/webidl/SVGCircleElement.webidl b/dom/webidl/SVGCircleElement.webidl new file mode 100644 index 0000000000..1fd19377a0 --- /dev/null +++ b/dom/webidl/SVGCircleElement.webidl @@ -0,0 +1,21 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/SVG2/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface SVGCircleElement : SVGGraphicsElement { + [Constant] + readonly attribute SVGAnimatedLength cx; + [Constant] + readonly attribute SVGAnimatedLength cy; + [Constant] + readonly attribute SVGAnimatedLength r; +}; + diff --git a/dom/webidl/SVGClipPathElement.webidl b/dom/webidl/SVGClipPathElement.webidl new file mode 100644 index 0000000000..b6c5081e4f --- /dev/null +++ b/dom/webidl/SVGClipPathElement.webidl @@ -0,0 +1,21 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/SVG2/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface SVGClipPathElement : SVGElement { + [Constant] + readonly attribute SVGAnimatedEnumeration clipPathUnits; + [Constant] + readonly attribute SVGAnimatedTransformList transform; +}; + +SVGClipPathElement implements SVGUnitTypeValues; + diff --git a/dom/webidl/SVGComponentTransferFunctionElement.webidl b/dom/webidl/SVGComponentTransferFunctionElement.webidl new file mode 100644 index 0000000000..1842fe6f56 --- /dev/null +++ b/dom/webidl/SVGComponentTransferFunctionElement.webidl @@ -0,0 +1,36 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * https://dvcs.w3.org/hg/FXTF/raw-file/tip/filters/index.html + * + * Copyright © 2013 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface SVGComponentTransferFunctionElement : SVGElement { + // Component Transfer Types + const unsigned short SVG_FECOMPONENTTRANSFER_TYPE_UNKNOWN = 0; + const unsigned short SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY = 1; + const unsigned short SVG_FECOMPONENTTRANSFER_TYPE_TABLE = 2; + const unsigned short SVG_FECOMPONENTTRANSFER_TYPE_DISCRETE = 3; + const unsigned short SVG_FECOMPONENTTRANSFER_TYPE_LINEAR = 4; + const unsigned short SVG_FECOMPONENTTRANSFER_TYPE_GAMMA = 5; + + [Constant] + readonly attribute SVGAnimatedEnumeration type; + [Constant] + readonly attribute SVGAnimatedNumberList tableValues; + [Constant] + readonly attribute SVGAnimatedNumber slope; + [Constant] + readonly attribute SVGAnimatedNumber intercept; + [Constant] + readonly attribute SVGAnimatedNumber amplitude; + [Constant] + readonly attribute SVGAnimatedNumber exponent; + [Constant] + readonly attribute SVGAnimatedNumber offset; +}; diff --git a/dom/webidl/SVGDefsElement.webidl b/dom/webidl/SVGDefsElement.webidl new file mode 100644 index 0000000000..0b37978b47 --- /dev/null +++ b/dom/webidl/SVGDefsElement.webidl @@ -0,0 +1,15 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/SVG2/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface SVGDefsElement : SVGGraphicsElement { +}; + diff --git a/dom/webidl/SVGDescElement.webidl b/dom/webidl/SVGDescElement.webidl new file mode 100644 index 0000000000..1841ff5458 --- /dev/null +++ b/dom/webidl/SVGDescElement.webidl @@ -0,0 +1,15 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/SVG2/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface SVGDescElement : SVGElement { +}; + diff --git a/dom/webidl/SVGElement.webidl b/dom/webidl/SVGElement.webidl new file mode 100644 index 0000000000..8de42f7e50 --- /dev/null +++ b/dom/webidl/SVGElement.webidl @@ -0,0 +1,37 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/SVG2/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface SVGElement : Element { + attribute DOMString id; + + [Constant] + readonly attribute SVGAnimatedString className; + [SameObject] readonly attribute DOMStringMap dataset; + [PutForwards=cssText, Constant] + readonly attribute CSSStyleDeclaration style; + + readonly attribute SVGSVGElement? ownerSVGElement; + readonly attribute SVGElement? viewportElement; + + attribute EventHandler oncopy; + attribute EventHandler oncut; + attribute EventHandler onpaste; + + [SetterThrows, Pure] + attribute long tabIndex; + [Throws] void focus(); + [Throws] void blur(); +}; + +SVGElement implements GlobalEventHandlers; +SVGElement implements TouchEventHandlers; +SVGElement implements OnErrorEventHandlerForNodes; diff --git a/dom/webidl/SVGEllipseElement.webidl b/dom/webidl/SVGEllipseElement.webidl new file mode 100644 index 0000000000..b039a05b45 --- /dev/null +++ b/dom/webidl/SVGEllipseElement.webidl @@ -0,0 +1,23 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/SVG2/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface SVGEllipseElement : SVGGraphicsElement { + [Constant] + readonly attribute SVGAnimatedLength cx; + [Constant] + readonly attribute SVGAnimatedLength cy; + [Constant] + readonly attribute SVGAnimatedLength rx; + [Constant] + readonly attribute SVGAnimatedLength ry; +}; + diff --git a/dom/webidl/SVGFEBlendElement.webidl b/dom/webidl/SVGFEBlendElement.webidl new file mode 100644 index 0000000000..5cd469bd5a --- /dev/null +++ b/dom/webidl/SVGFEBlendElement.webidl @@ -0,0 +1,41 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/SVG2/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface SVGFEBlendElement : SVGElement { + + // Blend Mode Types + const unsigned short SVG_FEBLEND_MODE_UNKNOWN = 0; + const unsigned short SVG_FEBLEND_MODE_NORMAL = 1; + const unsigned short SVG_FEBLEND_MODE_MULTIPLY = 2; + const unsigned short SVG_FEBLEND_MODE_SCREEN = 3; + const unsigned short SVG_FEBLEND_MODE_DARKEN = 4; + const unsigned short SVG_FEBLEND_MODE_LIGHTEN = 5; + const unsigned short SVG_FEBLEND_MODE_OVERLAY = 6; + const unsigned short SVG_FEBLEND_MODE_COLOR_DODGE = 7; + const unsigned short SVG_FEBLEND_MODE_COLOR_BURN = 8; + const unsigned short SVG_FEBLEND_MODE_HARD_LIGHT = 9; + const unsigned short SVG_FEBLEND_MODE_SOFT_LIGHT = 10; + const unsigned short SVG_FEBLEND_MODE_DIFFERENCE = 11; + const unsigned short SVG_FEBLEND_MODE_EXCLUSION = 12; + const unsigned short SVG_FEBLEND_MODE_HUE = 13; + const unsigned short SVG_FEBLEND_MODE_SATURATION = 14; + const unsigned short SVG_FEBLEND_MODE_COLOR = 15; + const unsigned short SVG_FEBLEND_MODE_LUMINOSITY = 16; + [Constant] + readonly attribute SVGAnimatedString in1; + [Constant] + readonly attribute SVGAnimatedString in2; + [Constant] + readonly attribute SVGAnimatedEnumeration mode; +}; + +SVGFEBlendElement implements SVGFilterPrimitiveStandardAttributes; diff --git a/dom/webidl/SVGFEColorMatrixElement.webidl b/dom/webidl/SVGFEColorMatrixElement.webidl new file mode 100644 index 0000000000..61d91040d5 --- /dev/null +++ b/dom/webidl/SVGFEColorMatrixElement.webidl @@ -0,0 +1,30 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/SVG2/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface SVGFEColorMatrixElement : SVGElement { + + // Color Matrix Types + const unsigned short SVG_FECOLORMATRIX_TYPE_UNKNOWN = 0; + const unsigned short SVG_FECOLORMATRIX_TYPE_MATRIX = 1; + const unsigned short SVG_FECOLORMATRIX_TYPE_SATURATE = 2; + const unsigned short SVG_FECOLORMATRIX_TYPE_HUEROTATE = 3; + const unsigned short SVG_FECOLORMATRIX_TYPE_LUMINANCETOALPHA = 4; + + [Constant] + readonly attribute SVGAnimatedString in1; + [Constant] + readonly attribute SVGAnimatedEnumeration type; + [Constant] + readonly attribute SVGAnimatedNumberList values; +}; + +SVGFEColorMatrixElement implements SVGFilterPrimitiveStandardAttributes; diff --git a/dom/webidl/SVGFEComponentTransferElement.webidl b/dom/webidl/SVGFEComponentTransferElement.webidl new file mode 100644 index 0000000000..6cf6f6d65d --- /dev/null +++ b/dom/webidl/SVGFEComponentTransferElement.webidl @@ -0,0 +1,18 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/SVG2/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface SVGFEComponentTransferElement : SVGElement { + [Constant] + readonly attribute SVGAnimatedString in1; +}; + +SVGFEComponentTransferElement implements SVGFilterPrimitiveStandardAttributes; diff --git a/dom/webidl/SVGFECompositeElement.webidl b/dom/webidl/SVGFECompositeElement.webidl new file mode 100644 index 0000000000..3ab983fe0d --- /dev/null +++ b/dom/webidl/SVGFECompositeElement.webidl @@ -0,0 +1,40 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/SVG2/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface SVGFECompositeElement : SVGElement { + + // Composite Operators + const unsigned short SVG_FECOMPOSITE_OPERATOR_UNKNOWN = 0; + const unsigned short SVG_FECOMPOSITE_OPERATOR_OVER = 1; + const unsigned short SVG_FECOMPOSITE_OPERATOR_IN = 2; + const unsigned short SVG_FECOMPOSITE_OPERATOR_OUT = 3; + const unsigned short SVG_FECOMPOSITE_OPERATOR_ATOP = 4; + const unsigned short SVG_FECOMPOSITE_OPERATOR_XOR = 5; + const unsigned short SVG_FECOMPOSITE_OPERATOR_ARITHMETIC = 6; + + [Constant] + readonly attribute SVGAnimatedString in1; + [Constant] + readonly attribute SVGAnimatedString in2; + [Constant] + readonly attribute SVGAnimatedEnumeration operator; + [Constant] + readonly attribute SVGAnimatedNumber k1; + [Constant] + readonly attribute SVGAnimatedNumber k2; + [Constant] + readonly attribute SVGAnimatedNumber k3; + [Constant] + readonly attribute SVGAnimatedNumber k4; +}; + +SVGFECompositeElement implements SVGFilterPrimitiveStandardAttributes; diff --git a/dom/webidl/SVGFEConvolveMatrixElement.webidl b/dom/webidl/SVGFEConvolveMatrixElement.webidl new file mode 100644 index 0000000000..27d8e80e76 --- /dev/null +++ b/dom/webidl/SVGFEConvolveMatrixElement.webidl @@ -0,0 +1,47 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/SVG2/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface SVGFEConvolveMatrixElement : SVGElement { + + // Edge Mode Values + const unsigned short SVG_EDGEMODE_UNKNOWN = 0; + const unsigned short SVG_EDGEMODE_DUPLICATE = 1; + const unsigned short SVG_EDGEMODE_WRAP = 2; + const unsigned short SVG_EDGEMODE_NONE = 3; + + [Constant] + readonly attribute SVGAnimatedString in1; + [Constant] + readonly attribute SVGAnimatedInteger orderX; + [Constant] + readonly attribute SVGAnimatedInteger orderY; + [Constant] + readonly attribute SVGAnimatedNumberList kernelMatrix; + [Constant] + readonly attribute SVGAnimatedNumber divisor; + [Constant] + readonly attribute SVGAnimatedNumber bias; + [Constant] + readonly attribute SVGAnimatedInteger targetX; + [Constant] + readonly attribute SVGAnimatedInteger targetY; + [Constant] + readonly attribute SVGAnimatedEnumeration edgeMode; + [Constant] + readonly attribute SVGAnimatedNumber kernelUnitLengthX; + [Constant] + readonly attribute SVGAnimatedNumber kernelUnitLengthY; + [Constant] + readonly attribute SVGAnimatedBoolean preserveAlpha; +}; + +SVGFEConvolveMatrixElement implements SVGFilterPrimitiveStandardAttributes; diff --git a/dom/webidl/SVGFEDiffuseLightingElement.webidl b/dom/webidl/SVGFEDiffuseLightingElement.webidl new file mode 100644 index 0000000000..fb89721d84 --- /dev/null +++ b/dom/webidl/SVGFEDiffuseLightingElement.webidl @@ -0,0 +1,26 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/SVG2/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface SVGFEDiffuseLightingElement : SVGElement { + [Constant] + readonly attribute SVGAnimatedString in1; + [Constant] + readonly attribute SVGAnimatedNumber surfaceScale; + [Constant] + readonly attribute SVGAnimatedNumber diffuseConstant; + [Constant] + readonly attribute SVGAnimatedNumber kernelUnitLengthX; + [Constant] + readonly attribute SVGAnimatedNumber kernelUnitLengthY; +}; + +SVGFEDiffuseLightingElement implements SVGFilterPrimitiveStandardAttributes; diff --git a/dom/webidl/SVGFEDisplacementMapElement.webidl b/dom/webidl/SVGFEDisplacementMapElement.webidl new file mode 100644 index 0000000000..461faff919 --- /dev/null +++ b/dom/webidl/SVGFEDisplacementMapElement.webidl @@ -0,0 +1,34 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/SVG2/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface SVGFEDisplacementMapElement : SVGElement { + + // Channel Selectors + const unsigned short SVG_CHANNEL_UNKNOWN = 0; + const unsigned short SVG_CHANNEL_R = 1; + const unsigned short SVG_CHANNEL_G = 2; + const unsigned short SVG_CHANNEL_B = 3; + const unsigned short SVG_CHANNEL_A = 4; + + [Constant] + readonly attribute SVGAnimatedString in1; + [Constant] + readonly attribute SVGAnimatedString in2; + [Constant] + readonly attribute SVGAnimatedNumber scale; + [Constant] + readonly attribute SVGAnimatedEnumeration xChannelSelector; + [Constant] + readonly attribute SVGAnimatedEnumeration yChannelSelector; +}; + +SVGFEDisplacementMapElement implements SVGFilterPrimitiveStandardAttributes; diff --git a/dom/webidl/SVGFEDistantLightElement.webidl b/dom/webidl/SVGFEDistantLightElement.webidl new file mode 100644 index 0000000000..933befc936 --- /dev/null +++ b/dom/webidl/SVGFEDistantLightElement.webidl @@ -0,0 +1,18 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/SVG2/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface SVGFEDistantLightElement : SVGElement { + [Constant] + readonly attribute SVGAnimatedNumber azimuth; + [Constant] + readonly attribute SVGAnimatedNumber elevation; +}; diff --git a/dom/webidl/SVGFEDropShadowElement.webidl b/dom/webidl/SVGFEDropShadowElement.webidl new file mode 100644 index 0000000000..b858fc91cd --- /dev/null +++ b/dom/webidl/SVGFEDropShadowElement.webidl @@ -0,0 +1,28 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/SVG2/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface SVGFEDropShadowElement : SVGElement { + [Constant] + readonly attribute SVGAnimatedString in1; + [Constant] + readonly attribute SVGAnimatedNumber dx; + [Constant] + readonly attribute SVGAnimatedNumber dy; + [Constant] + readonly attribute SVGAnimatedNumber stdDeviationX; + [Constant] + readonly attribute SVGAnimatedNumber stdDeviationY; + + void setStdDeviation(float stdDeviationX, float stdDeviationY); +}; + +SVGFEDropShadowElement implements SVGFilterPrimitiveStandardAttributes; diff --git a/dom/webidl/SVGFEFloodElement.webidl b/dom/webidl/SVGFEFloodElement.webidl new file mode 100644 index 0000000000..51d9539ff3 --- /dev/null +++ b/dom/webidl/SVGFEFloodElement.webidl @@ -0,0 +1,16 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/SVG2/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface SVGFEFloodElement : SVGElement { +}; + +SVGFEFloodElement implements SVGFilterPrimitiveStandardAttributes; diff --git a/dom/webidl/SVGFEFuncAElement.webidl b/dom/webidl/SVGFEFuncAElement.webidl new file mode 100644 index 0000000000..97282cd195 --- /dev/null +++ b/dom/webidl/SVGFEFuncAElement.webidl @@ -0,0 +1,14 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * https://dvcs.w3.org/hg/FXTF/raw-file/tip/filters/index.html + * + * Copyright © 2013 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface SVGFEFuncAElement : SVGComponentTransferFunctionElement { +}; diff --git a/dom/webidl/SVGFEFuncBElement.webidl b/dom/webidl/SVGFEFuncBElement.webidl new file mode 100644 index 0000000000..8b5c2b9255 --- /dev/null +++ b/dom/webidl/SVGFEFuncBElement.webidl @@ -0,0 +1,14 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * https://dvcs.w3.org/hg/FXTF/raw-file/tip/filters/index.html + * + * Copyright © 2013 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface SVGFEFuncBElement : SVGComponentTransferFunctionElement { +}; diff --git a/dom/webidl/SVGFEFuncGElement.webidl b/dom/webidl/SVGFEFuncGElement.webidl new file mode 100644 index 0000000000..39d2f30590 --- /dev/null +++ b/dom/webidl/SVGFEFuncGElement.webidl @@ -0,0 +1,14 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * https://dvcs.w3.org/hg/FXTF/raw-file/tip/filters/index.html + * + * Copyright © 2013 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface SVGFEFuncGElement : SVGComponentTransferFunctionElement { +}; diff --git a/dom/webidl/SVGFEFuncRElement.webidl b/dom/webidl/SVGFEFuncRElement.webidl new file mode 100644 index 0000000000..78e492be43 --- /dev/null +++ b/dom/webidl/SVGFEFuncRElement.webidl @@ -0,0 +1,14 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * https://dvcs.w3.org/hg/FXTF/raw-file/tip/filters/index.html + * + * Copyright © 2013 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface SVGFEFuncRElement : SVGComponentTransferFunctionElement { +}; diff --git a/dom/webidl/SVGFEGaussianBlurElement.webidl b/dom/webidl/SVGFEGaussianBlurElement.webidl new file mode 100644 index 0000000000..db2101b535 --- /dev/null +++ b/dom/webidl/SVGFEGaussianBlurElement.webidl @@ -0,0 +1,24 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/SVG2/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface SVGFEGaussianBlurElement : SVGElement { + [Constant] + readonly attribute SVGAnimatedString in1; + [Constant] + readonly attribute SVGAnimatedNumber stdDeviationX; + [Constant] + readonly attribute SVGAnimatedNumber stdDeviationY; + + void setStdDeviation(float stdDeviationX, float stdDeviationY); +}; + +SVGFEGaussianBlurElement implements SVGFilterPrimitiveStandardAttributes; diff --git a/dom/webidl/SVGFEImageElement.webidl b/dom/webidl/SVGFEImageElement.webidl new file mode 100644 index 0000000000..3262c0d8a2 --- /dev/null +++ b/dom/webidl/SVGFEImageElement.webidl @@ -0,0 +1,19 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/SVG2/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface SVGFEImageElement : SVGElement { + [Constant] + readonly attribute SVGAnimatedPreserveAspectRatio preserveAspectRatio; +}; + +SVGFEImageElement implements SVGFilterPrimitiveStandardAttributes; +SVGFEImageElement implements SVGURIReference; diff --git a/dom/webidl/SVGFEMergeElement.webidl b/dom/webidl/SVGFEMergeElement.webidl new file mode 100644 index 0000000000..adafbba9a6 --- /dev/null +++ b/dom/webidl/SVGFEMergeElement.webidl @@ -0,0 +1,16 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/SVG2/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface SVGFEMergeElement : SVGElement { +}; + +SVGFEMergeElement implements SVGFilterPrimitiveStandardAttributes; diff --git a/dom/webidl/SVGFEMergeNodeElement.webidl b/dom/webidl/SVGFEMergeNodeElement.webidl new file mode 100644 index 0000000000..4ff217ba77 --- /dev/null +++ b/dom/webidl/SVGFEMergeNodeElement.webidl @@ -0,0 +1,16 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/SVG2/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface SVGFEMergeNodeElement : SVGElement { + [Constant] + readonly attribute SVGAnimatedString in1; +}; diff --git a/dom/webidl/SVGFEMorphologyElement.webidl b/dom/webidl/SVGFEMorphologyElement.webidl new file mode 100644 index 0000000000..82910a6faa --- /dev/null +++ b/dom/webidl/SVGFEMorphologyElement.webidl @@ -0,0 +1,30 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/SVG2/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface SVGFEMorphologyElement : SVGElement { + + // Morphology Operators + const unsigned short SVG_MORPHOLOGY_OPERATOR_UNKNOWN = 0; + const unsigned short SVG_MORPHOLOGY_OPERATOR_ERODE = 1; + const unsigned short SVG_MORPHOLOGY_OPERATOR_DILATE = 2; + + [Constant] + readonly attribute SVGAnimatedString in1; + [Constant] + readonly attribute SVGAnimatedEnumeration operator; + [Constant] + readonly attribute SVGAnimatedNumber radiusX; + [Constant] + readonly attribute SVGAnimatedNumber radiusY; +}; + +SVGFEMorphologyElement implements SVGFilterPrimitiveStandardAttributes; diff --git a/dom/webidl/SVGFEOffsetElement.webidl b/dom/webidl/SVGFEOffsetElement.webidl new file mode 100644 index 0000000000..90132d5288 --- /dev/null +++ b/dom/webidl/SVGFEOffsetElement.webidl @@ -0,0 +1,22 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/SVG2/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface SVGFEOffsetElement : SVGElement { + [Constant] + readonly attribute SVGAnimatedString in1; + [Constant] + readonly attribute SVGAnimatedNumber dx; + [Constant] + readonly attribute SVGAnimatedNumber dy; +}; + +SVGFEOffsetElement implements SVGFilterPrimitiveStandardAttributes; diff --git a/dom/webidl/SVGFEPointLightElement.webidl b/dom/webidl/SVGFEPointLightElement.webidl new file mode 100644 index 0000000000..232edc45d0 --- /dev/null +++ b/dom/webidl/SVGFEPointLightElement.webidl @@ -0,0 +1,20 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/SVG2/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface SVGFEPointLightElement : SVGElement { + [Constant] + readonly attribute SVGAnimatedNumber x; + [Constant] + readonly attribute SVGAnimatedNumber y; + [Constant] + readonly attribute SVGAnimatedNumber z; +}; diff --git a/dom/webidl/SVGFESpecularLightingElement.webidl b/dom/webidl/SVGFESpecularLightingElement.webidl new file mode 100644 index 0000000000..42b6b0e9c8 --- /dev/null +++ b/dom/webidl/SVGFESpecularLightingElement.webidl @@ -0,0 +1,28 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/SVG2/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface SVGFESpecularLightingElement : SVGElement { + [Constant] + readonly attribute SVGAnimatedString in1; + [Constant] + readonly attribute SVGAnimatedNumber surfaceScale; + [Constant] + readonly attribute SVGAnimatedNumber specularConstant; + [Constant] + readonly attribute SVGAnimatedNumber specularExponent; + [Constant] + readonly attribute SVGAnimatedNumber kernelUnitLengthX; + [Constant] + readonly attribute SVGAnimatedNumber kernelUnitLengthY; +}; + +SVGFESpecularLightingElement implements SVGFilterPrimitiveStandardAttributes; diff --git a/dom/webidl/SVGFESpotLightElement.webidl b/dom/webidl/SVGFESpotLightElement.webidl new file mode 100644 index 0000000000..281d20c8c0 --- /dev/null +++ b/dom/webidl/SVGFESpotLightElement.webidl @@ -0,0 +1,30 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/SVG2/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface SVGFESpotLightElement : SVGElement { + [Constant] + readonly attribute SVGAnimatedNumber x; + [Constant] + readonly attribute SVGAnimatedNumber y; + [Constant] + readonly attribute SVGAnimatedNumber z; + [Constant] + readonly attribute SVGAnimatedNumber pointsAtX; + [Constant] + readonly attribute SVGAnimatedNumber pointsAtY; + [Constant] + readonly attribute SVGAnimatedNumber pointsAtZ; + [Constant] + readonly attribute SVGAnimatedNumber specularExponent; + [Constant] + readonly attribute SVGAnimatedNumber limitingConeAngle; +}; diff --git a/dom/webidl/SVGFETileElement.webidl b/dom/webidl/SVGFETileElement.webidl new file mode 100644 index 0000000000..38cad60409 --- /dev/null +++ b/dom/webidl/SVGFETileElement.webidl @@ -0,0 +1,18 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/SVG2/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface SVGFETileElement : SVGElement { + [Constant] + readonly attribute SVGAnimatedString in1; +}; + +SVGFETileElement implements SVGFilterPrimitiveStandardAttributes; diff --git a/dom/webidl/SVGFETurbulenceElement.webidl b/dom/webidl/SVGFETurbulenceElement.webidl new file mode 100644 index 0000000000..45c9d468b2 --- /dev/null +++ b/dom/webidl/SVGFETurbulenceElement.webidl @@ -0,0 +1,39 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/SVG2/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface SVGFETurbulenceElement : SVGElement { + + // Turbulence Types + const unsigned short SVG_TURBULENCE_TYPE_UNKNOWN = 0; + const unsigned short SVG_TURBULENCE_TYPE_FRACTALNOISE = 1; + const unsigned short SVG_TURBULENCE_TYPE_TURBULENCE = 2; + + // Stitch Options + const unsigned short SVG_STITCHTYPE_UNKNOWN = 0; + const unsigned short SVG_STITCHTYPE_STITCH = 1; + const unsigned short SVG_STITCHTYPE_NOSTITCH = 2; + + [Constant] + readonly attribute SVGAnimatedNumber baseFrequencyX; + [Constant] + readonly attribute SVGAnimatedNumber baseFrequencyY; + [Constant] + readonly attribute SVGAnimatedInteger numOctaves; + [Constant] + readonly attribute SVGAnimatedNumber seed; + [Constant] + readonly attribute SVGAnimatedEnumeration stitchTiles; + [Constant] + readonly attribute SVGAnimatedEnumeration type; +}; + +SVGFETurbulenceElement implements SVGFilterPrimitiveStandardAttributes; diff --git a/dom/webidl/SVGFilterElement.webidl b/dom/webidl/SVGFilterElement.webidl new file mode 100644 index 0000000000..aa4d4d196b --- /dev/null +++ b/dom/webidl/SVGFilterElement.webidl @@ -0,0 +1,32 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/SVG2/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface SVGFilterElement : SVGElement { + [Constant] + readonly attribute SVGAnimatedEnumeration filterUnits; + [Constant] + readonly attribute SVGAnimatedEnumeration primitiveUnits; + [Constant] + readonly attribute SVGAnimatedLength x; + [Constant] + readonly attribute SVGAnimatedLength y; + [Constant] + readonly attribute SVGAnimatedLength width; + [Constant] + readonly attribute SVGAnimatedLength height; + + // ImageData apply(ImageData source); +}; + +SVGFilterElement implements SVGURIReference; +SVGFilterElement implements SVGUnitTypeValues; + diff --git a/dom/webidl/SVGFilterPrimitiveStandardAttributes.webidl b/dom/webidl/SVGFilterPrimitiveStandardAttributes.webidl new file mode 100644 index 0000000000..3319505866 --- /dev/null +++ b/dom/webidl/SVGFilterPrimitiveStandardAttributes.webidl @@ -0,0 +1,25 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/SVG2/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +[NoInterfaceObject] +interface SVGFilterPrimitiveStandardAttributes { + [Constant] + readonly attribute SVGAnimatedLength x; + [Constant] + readonly attribute SVGAnimatedLength y; + [Constant] + readonly attribute SVGAnimatedLength width; + [Constant] + readonly attribute SVGAnimatedLength height; + [Constant] + readonly attribute SVGAnimatedString result; +}; diff --git a/dom/webidl/SVGFitToViewBox.webidl b/dom/webidl/SVGFitToViewBox.webidl new file mode 100644 index 0000000000..881e658d21 --- /dev/null +++ b/dom/webidl/SVGFitToViewBox.webidl @@ -0,0 +1,20 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/SVG2/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +[NoInterfaceObject] +interface SVGFitToViewBox { + [Constant] + readonly attribute SVGAnimatedRect viewBox; + [Constant] + readonly attribute SVGAnimatedPreserveAspectRatio preserveAspectRatio; +}; + diff --git a/dom/webidl/SVGForeignObjectElement.webidl b/dom/webidl/SVGForeignObjectElement.webidl new file mode 100644 index 0000000000..6829f4501f --- /dev/null +++ b/dom/webidl/SVGForeignObjectElement.webidl @@ -0,0 +1,23 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/SVG2/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface SVGForeignObjectElement : SVGGraphicsElement { + [Constant] + readonly attribute SVGAnimatedLength x; + [Constant] + readonly attribute SVGAnimatedLength y; + [Constant] + readonly attribute SVGAnimatedLength width; + [Constant] + readonly attribute SVGAnimatedLength height; +}; + diff --git a/dom/webidl/SVGGElement.webidl b/dom/webidl/SVGGElement.webidl new file mode 100644 index 0000000000..8d690677e5 --- /dev/null +++ b/dom/webidl/SVGGElement.webidl @@ -0,0 +1,15 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/SVG2/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface SVGGElement : SVGGraphicsElement { +}; + diff --git a/dom/webidl/SVGGradientElement.webidl b/dom/webidl/SVGGradientElement.webidl new file mode 100644 index 0000000000..e1e969061c --- /dev/null +++ b/dom/webidl/SVGGradientElement.webidl @@ -0,0 +1,30 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * https://svgwg.org/svg2-draft/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface SVGGradientElement : SVGElement { + + // Spread Method Types + const unsigned short SVG_SPREADMETHOD_UNKNOWN = 0; + const unsigned short SVG_SPREADMETHOD_PAD = 1; + const unsigned short SVG_SPREADMETHOD_REFLECT = 2; + const unsigned short SVG_SPREADMETHOD_REPEAT = 3; + + [Constant] + readonly attribute SVGAnimatedEnumeration gradientUnits; + [Constant] + readonly attribute SVGAnimatedTransformList gradientTransform; + [Constant] + readonly attribute SVGAnimatedEnumeration spreadMethod; +}; + +SVGGradientElement implements SVGURIReference; +SVGGradientElement implements SVGUnitTypeValues; diff --git a/dom/webidl/SVGGraphicsElement.webidl b/dom/webidl/SVGGraphicsElement.webidl new file mode 100644 index 0000000000..74af1f6738 --- /dev/null +++ b/dom/webidl/SVGGraphicsElement.webidl @@ -0,0 +1,36 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/SVG2/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +dictionary SVGBoundingBoxOptions { + boolean fill = true; + boolean stroke = false; + boolean markers = false; + boolean clipped = false; +}; + +interface SVGGraphicsElement : SVGElement { + readonly attribute SVGAnimatedTransformList transform; + + readonly attribute SVGElement? nearestViewportElement; + readonly attribute SVGElement? farthestViewportElement; + + [NewObject, Throws] + SVGRect getBBox(optional SVGBoundingBoxOptions aOptions); + // Not implemented + // SVGRect getStrokeBBox(); + SVGMatrix? getCTM(); + SVGMatrix? getScreenCTM(); + [Throws] + SVGMatrix getTransformToElement(SVGGraphicsElement element); +}; + +SVGGraphicsElement implements SVGTests; diff --git a/dom/webidl/SVGImageElement.webidl b/dom/webidl/SVGImageElement.webidl new file mode 100644 index 0000000000..67dab60f58 --- /dev/null +++ b/dom/webidl/SVGImageElement.webidl @@ -0,0 +1,28 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/SVG2/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface SVGImageElement : SVGGraphicsElement { + [Constant] + readonly attribute SVGAnimatedLength x; + [Constant] + readonly attribute SVGAnimatedLength y; + [Constant] + readonly attribute SVGAnimatedLength width; + [Constant] + readonly attribute SVGAnimatedLength height; + [Constant] + readonly attribute SVGAnimatedPreserveAspectRatio preserveAspectRatio; +}; + +SVGImageElement implements MozImageLoadingContent; +SVGImageElement implements SVGURIReference; + diff --git a/dom/webidl/SVGLength.webidl b/dom/webidl/SVGLength.webidl new file mode 100644 index 0000000000..6d56132db0 --- /dev/null +++ b/dom/webidl/SVGLength.webidl @@ -0,0 +1,40 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/SVG2/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface SVGLength { + + // Length Unit Types + const unsigned short SVG_LENGTHTYPE_UNKNOWN = 0; + const unsigned short SVG_LENGTHTYPE_NUMBER = 1; + const unsigned short SVG_LENGTHTYPE_PERCENTAGE = 2; + const unsigned short SVG_LENGTHTYPE_EMS = 3; + const unsigned short SVG_LENGTHTYPE_EXS = 4; + const unsigned short SVG_LENGTHTYPE_PX = 5; + const unsigned short SVG_LENGTHTYPE_CM = 6; + const unsigned short SVG_LENGTHTYPE_MM = 7; + const unsigned short SVG_LENGTHTYPE_IN = 8; + const unsigned short SVG_LENGTHTYPE_PT = 9; + const unsigned short SVG_LENGTHTYPE_PC = 10; + + readonly attribute unsigned short unitType; + [Throws] + attribute float value; + [SetterThrows] + attribute float valueInSpecifiedUnits; + [SetterThrows] + attribute DOMString valueAsString; + + [Throws] + void newValueSpecifiedUnits(unsigned short unitType, float valueInSpecifiedUnits); + [Throws] + void convertToSpecifiedUnits(unsigned short unitType); +}; diff --git a/dom/webidl/SVGLengthList.webidl b/dom/webidl/SVGLengthList.webidl new file mode 100644 index 0000000000..c4fab44e4b --- /dev/null +++ b/dom/webidl/SVGLengthList.webidl @@ -0,0 +1,32 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/SVG11/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface SVGLengthList { + readonly attribute unsigned long numberOfItems; + [Throws] + void clear(); + [Throws] + SVGLength initialize(SVGLength newItem); + [Throws] + getter SVGLength getItem(unsigned long index); + [Throws] + SVGLength insertItemBefore(SVGLength newItem, unsigned long index); + [Throws] + SVGLength replaceItem(SVGLength newItem, unsigned long index); + [Throws] + SVGLength removeItem(unsigned long index); + [Throws] + SVGLength appendItem(SVGLength newItem); + + // Mozilla-specific stuff + readonly attribute unsigned long length; // synonym for numberOfItems +}; diff --git a/dom/webidl/SVGLineElement.webidl b/dom/webidl/SVGLineElement.webidl new file mode 100644 index 0000000000..a03920d60c --- /dev/null +++ b/dom/webidl/SVGLineElement.webidl @@ -0,0 +1,23 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/SVG2/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface SVGLineElement : SVGGraphicsElement { + [Constant] + readonly attribute SVGAnimatedLength x1; + [Constant] + readonly attribute SVGAnimatedLength y1; + [Constant] + readonly attribute SVGAnimatedLength x2; + [Constant] + readonly attribute SVGAnimatedLength y2; +}; + diff --git a/dom/webidl/SVGLinearGradientElement.webidl b/dom/webidl/SVGLinearGradientElement.webidl new file mode 100644 index 0000000000..200bc47e67 --- /dev/null +++ b/dom/webidl/SVGLinearGradientElement.webidl @@ -0,0 +1,22 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * https://svgwg.org/svg2-draft/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface SVGLinearGradientElement : SVGGradientElement { + [Constant] + readonly attribute SVGAnimatedLength x1; + [Constant] + readonly attribute SVGAnimatedLength y1; + [Constant] + readonly attribute SVGAnimatedLength x2; + [Constant] + readonly attribute SVGAnimatedLength y2; +}; diff --git a/dom/webidl/SVGMPathElement.webidl b/dom/webidl/SVGMPathElement.webidl new file mode 100644 index 0000000000..7165b6cf74 --- /dev/null +++ b/dom/webidl/SVGMPathElement.webidl @@ -0,0 +1,17 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/SVG2/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface SVGMPathElement : SVGElement { +}; + +SVGMPathElement implements SVGURIReference; + diff --git a/dom/webidl/SVGMarkerElement.webidl b/dom/webidl/SVGMarkerElement.webidl new file mode 100644 index 0000000000..a4f819b2d0 --- /dev/null +++ b/dom/webidl/SVGMarkerElement.webidl @@ -0,0 +1,46 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/SVG2/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface SVGMarkerElement : SVGElement { + + // Marker Unit Types + const unsigned short SVG_MARKERUNITS_UNKNOWN = 0; + const unsigned short SVG_MARKERUNITS_USERSPACEONUSE = 1; + const unsigned short SVG_MARKERUNITS_STROKEWIDTH = 2; + + // Marker Orientation Types + const unsigned short SVG_MARKER_ORIENT_UNKNOWN = 0; + const unsigned short SVG_MARKER_ORIENT_AUTO = 1; + const unsigned short SVG_MARKER_ORIENT_ANGLE = 2; + + [Constant] + readonly attribute SVGAnimatedLength refX; + [Constant] + readonly attribute SVGAnimatedLength refY; + [Constant] + readonly attribute SVGAnimatedEnumeration markerUnits; + [Constant] + readonly attribute SVGAnimatedLength markerWidth; + [Constant] + readonly attribute SVGAnimatedLength markerHeight; + [Constant] + readonly attribute SVGAnimatedEnumeration orientType; + [Constant] + readonly attribute SVGAnimatedAngle orientAngle; + + void setOrientToAuto(); + [Throws] + void setOrientToAngle(SVGAngle angle); +}; + +SVGMarkerElement implements SVGFitToViewBox; + diff --git a/dom/webidl/SVGMaskElement.webidl b/dom/webidl/SVGMaskElement.webidl new file mode 100644 index 0000000000..3b00b0d55c --- /dev/null +++ b/dom/webidl/SVGMaskElement.webidl @@ -0,0 +1,34 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/SVG2/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface SVGMaskElement : SVGElement { + + // Mask Types + const unsigned short SVG_MASKTYPE_LUMINANCE = 0; + const unsigned short SVG_MASKTYPE_ALPHA = 1; + + [Constant] + readonly attribute SVGAnimatedEnumeration maskUnits; + [Constant] + readonly attribute SVGAnimatedEnumeration maskContentUnits; + [Constant] + readonly attribute SVGAnimatedLength x; + [Constant] + readonly attribute SVGAnimatedLength y; + [Constant] + readonly attribute SVGAnimatedLength width; + [Constant] + readonly attribute SVGAnimatedLength height; +}; + +SVGMaskElement implements SVGUnitTypeValues; + diff --git a/dom/webidl/SVGMatrix.webidl b/dom/webidl/SVGMatrix.webidl new file mode 100644 index 0000000000..3ede75cc72 --- /dev/null +++ b/dom/webidl/SVGMatrix.webidl @@ -0,0 +1,51 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/SVG2/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface SVGMatrix { + + [SetterThrows] + attribute float a; + [SetterThrows] + attribute float b; + [SetterThrows] + attribute float c; + [SetterThrows] + attribute float d; + [SetterThrows] + attribute float e; + [SetterThrows] + attribute float f; + + [NewObject] + SVGMatrix multiply(SVGMatrix secondMatrix); + [NewObject, Throws] + SVGMatrix inverse(); + [NewObject] + SVGMatrix translate(float x, float y); + [NewObject] + SVGMatrix scale(float scaleFactor); + [NewObject] + SVGMatrix scaleNonUniform(float scaleFactorX, float scaleFactorY); + [NewObject] + SVGMatrix rotate(float angle); + [NewObject, Throws] + SVGMatrix rotateFromVector(float x, float y); + [NewObject] + SVGMatrix flipX(); + [NewObject] + SVGMatrix flipY(); + [NewObject, Throws] + SVGMatrix skewX(float angle); + [NewObject, Throws] + SVGMatrix skewY(float angle); +}; + diff --git a/dom/webidl/SVGMetadataElement.webidl b/dom/webidl/SVGMetadataElement.webidl new file mode 100644 index 0000000000..1c404f91f2 --- /dev/null +++ b/dom/webidl/SVGMetadataElement.webidl @@ -0,0 +1,15 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/SVG2/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface SVGMetadataElement : SVGElement { +}; + diff --git a/dom/webidl/SVGNumber.webidl b/dom/webidl/SVGNumber.webidl new file mode 100644 index 0000000000..01011e6a64 --- /dev/null +++ b/dom/webidl/SVGNumber.webidl @@ -0,0 +1,18 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/SVG2/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +[Constructor, + Constructor(float value)] +interface SVGNumber { + [SetterThrows] + attribute float value; +}; diff --git a/dom/webidl/SVGNumberList.webidl b/dom/webidl/SVGNumberList.webidl new file mode 100644 index 0000000000..b4247d3374 --- /dev/null +++ b/dom/webidl/SVGNumberList.webidl @@ -0,0 +1,32 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/SVG11/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface SVGNumberList { + readonly attribute unsigned long numberOfItems; + [Throws] + void clear(); + [Throws] + SVGNumber initialize(SVGNumber newItem); + [Throws] + getter SVGNumber getItem(unsigned long index); + [Throws] + SVGNumber insertItemBefore(SVGNumber newItem, unsigned long index); + [Throws] + SVGNumber replaceItem(SVGNumber newItem, unsigned long index); + [Throws] + SVGNumber removeItem(unsigned long index); + [Throws] + SVGNumber appendItem(SVGNumber newItem); + + // Mozilla-specific stuff + readonly attribute unsigned long length; // synonym for numberOfItems +}; diff --git a/dom/webidl/SVGPathElement.webidl b/dom/webidl/SVGPathElement.webidl new file mode 100644 index 0000000000..08a9904ec2 --- /dev/null +++ b/dom/webidl/SVGPathElement.webidl @@ -0,0 +1,62 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/SVG2/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ +interface SVGPathElement : SVGGraphicsElement { + + [Constant] + readonly attribute SVGAnimatedNumber pathLength; + + float getTotalLength(); + [NewObject, Throws] + SVGPoint getPointAtLength(float distance); + unsigned long getPathSegAtLength(float distance); + [NewObject] + SVGPathSegClosePath createSVGPathSegClosePath(); + [NewObject] + SVGPathSegMovetoAbs createSVGPathSegMovetoAbs(float x, float y); + [NewObject] + SVGPathSegMovetoRel createSVGPathSegMovetoRel(float x, float y); + [NewObject] + SVGPathSegLinetoAbs createSVGPathSegLinetoAbs(float x, float y); + [NewObject] + SVGPathSegLinetoRel createSVGPathSegLinetoRel(float x, float y); + [NewObject] + SVGPathSegCurvetoCubicAbs createSVGPathSegCurvetoCubicAbs(float x, float y, float x1, float y1, float x2, float y2); + [NewObject] + SVGPathSegCurvetoCubicRel createSVGPathSegCurvetoCubicRel(float x, float y, float x1, float y1, float x2, float y2); + [NewObject] + SVGPathSegCurvetoQuadraticAbs createSVGPathSegCurvetoQuadraticAbs(float x, float y, float x1, float y1); + [NewObject] + SVGPathSegCurvetoQuadraticRel createSVGPathSegCurvetoQuadraticRel(float x, float y, float x1, float y1); + [NewObject] + SVGPathSegArcAbs createSVGPathSegArcAbs(float x, float y, float r1, float r2, float angle, boolean largeArcFlag, boolean sweepFlag); + [NewObject] + SVGPathSegArcRel createSVGPathSegArcRel(float x, float y, float r1, float r2, float angle, boolean largeArcFlag, boolean sweepFlag); + [NewObject] + SVGPathSegLinetoHorizontalAbs createSVGPathSegLinetoHorizontalAbs(float x); + [NewObject] + SVGPathSegLinetoHorizontalRel createSVGPathSegLinetoHorizontalRel(float x); + [NewObject] + SVGPathSegLinetoVerticalAbs createSVGPathSegLinetoVerticalAbs(float y); + [NewObject] + SVGPathSegLinetoVerticalRel createSVGPathSegLinetoVerticalRel(float y); + [NewObject] + SVGPathSegCurvetoCubicSmoothAbs createSVGPathSegCurvetoCubicSmoothAbs(float x, float y, float x2, float y2); + [NewObject] + SVGPathSegCurvetoCubicSmoothRel createSVGPathSegCurvetoCubicSmoothRel(float x, float y, float x2, float y2); + [NewObject] + SVGPathSegCurvetoQuadraticSmoothAbs createSVGPathSegCurvetoQuadraticSmoothAbs(float x, float y); + [NewObject] + SVGPathSegCurvetoQuadraticSmoothRel createSVGPathSegCurvetoQuadraticSmoothRel(float x, float y); +}; + +SVGPathElement implements SVGAnimatedPathData; + diff --git a/dom/webidl/SVGPathSeg.webidl b/dom/webidl/SVGPathSeg.webidl new file mode 100644 index 0000000000..b5ff1abd60 --- /dev/null +++ b/dom/webidl/SVGPathSeg.webidl @@ -0,0 +1,215 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/SVG2/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface SVGPathSeg { + + // Path Segment Types + const unsigned short PATHSEG_UNKNOWN = 0; + const unsigned short PATHSEG_CLOSEPATH = 1; + const unsigned short PATHSEG_MOVETO_ABS = 2; + const unsigned short PATHSEG_MOVETO_REL = 3; + const unsigned short PATHSEG_LINETO_ABS = 4; + const unsigned short PATHSEG_LINETO_REL = 5; + const unsigned short PATHSEG_CURVETO_CUBIC_ABS = 6; + const unsigned short PATHSEG_CURVETO_CUBIC_REL = 7; + const unsigned short PATHSEG_CURVETO_QUADRATIC_ABS = 8; + const unsigned short PATHSEG_CURVETO_QUADRATIC_REL = 9; + const unsigned short PATHSEG_ARC_ABS = 10; + const unsigned short PATHSEG_ARC_REL = 11; + const unsigned short PATHSEG_LINETO_HORIZONTAL_ABS = 12; + const unsigned short PATHSEG_LINETO_HORIZONTAL_REL = 13; + const unsigned short PATHSEG_LINETO_VERTICAL_ABS = 14; + const unsigned short PATHSEG_LINETO_VERTICAL_REL = 15; + const unsigned short PATHSEG_CURVETO_CUBIC_SMOOTH_ABS = 16; + const unsigned short PATHSEG_CURVETO_CUBIC_SMOOTH_REL = 17; + const unsigned short PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS = 18; + const unsigned short PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL = 19; + + [Pure] + readonly attribute unsigned short pathSegType; + [Pure] + readonly attribute DOMString pathSegTypeAsLetter; +}; + +interface SVGPathSegClosePath : SVGPathSeg { +}; + +interface SVGPathSegMovetoAbs : SVGPathSeg { + [SetterThrows] + attribute float x; + [SetterThrows] + attribute float y; +}; + +interface SVGPathSegMovetoRel : SVGPathSeg { + [SetterThrows] + attribute float x; + [SetterThrows] + attribute float y; +}; + +interface SVGPathSegLinetoAbs : SVGPathSeg { + [SetterThrows] + attribute float x; + [SetterThrows] + attribute float y; +}; + +interface SVGPathSegLinetoRel : SVGPathSeg { + [SetterThrows] + attribute float x; + [SetterThrows] + attribute float y; +}; + +interface SVGPathSegCurvetoCubicAbs : SVGPathSeg { + [SetterThrows] + attribute float x; + [SetterThrows] + attribute float y; + [SetterThrows] + attribute float x1; + [SetterThrows] + attribute float y1; + [SetterThrows] + attribute float x2; + [SetterThrows] + attribute float y2; +}; + +interface SVGPathSegCurvetoCubicRel : SVGPathSeg { + [SetterThrows] + attribute float x; + [SetterThrows] + attribute float y; + [SetterThrows] + attribute float x1; + [SetterThrows] + attribute float y1; + [SetterThrows] + attribute float x2; + [SetterThrows] + attribute float y2; +}; + +interface SVGPathSegCurvetoQuadraticAbs : SVGPathSeg { + [SetterThrows] + attribute float x; + [SetterThrows] + attribute float y; + [SetterThrows] + attribute float x1; + [SetterThrows] + attribute float y1; +}; + +interface SVGPathSegCurvetoQuadraticRel : SVGPathSeg { + [SetterThrows] + attribute float x; + [SetterThrows] + attribute float y; + [SetterThrows] + attribute float x1; + [SetterThrows] + attribute float y1; +}; + +interface SVGPathSegArcAbs : SVGPathSeg { + [SetterThrows] + attribute float x; + [SetterThrows] + attribute float y; + [SetterThrows] + attribute float r1; + [SetterThrows] + attribute float r2; + [SetterThrows] + attribute float angle; + [SetterThrows] + attribute boolean largeArcFlag; + [SetterThrows] + attribute boolean sweepFlag; +}; + +interface SVGPathSegArcRel : SVGPathSeg { + [SetterThrows] + attribute float x; + [SetterThrows] + attribute float y; + [SetterThrows] + attribute float r1; + [SetterThrows] + attribute float r2; + [SetterThrows] + attribute float angle; + [SetterThrows] + attribute boolean largeArcFlag; + [SetterThrows] + attribute boolean sweepFlag; +}; + +interface SVGPathSegLinetoHorizontalAbs : SVGPathSeg { + [SetterThrows] + attribute float x; +}; + +interface SVGPathSegLinetoHorizontalRel : SVGPathSeg { + [SetterThrows] + attribute float x; +}; + +interface SVGPathSegLinetoVerticalAbs : SVGPathSeg { + [SetterThrows] + attribute float y; +}; + +interface SVGPathSegLinetoVerticalRel : SVGPathSeg { + [SetterThrows] + attribute float y; +}; + +interface SVGPathSegCurvetoCubicSmoothAbs : SVGPathSeg { + [SetterThrows] + attribute float x; + [SetterThrows] + attribute float y; + [SetterThrows] + attribute float x2; + [SetterThrows] + attribute float y2; +}; + +interface SVGPathSegCurvetoCubicSmoothRel : SVGPathSeg { + [SetterThrows] + attribute float x; + [SetterThrows] + attribute float y; + [SetterThrows] + attribute float x2; + [SetterThrows] + attribute float y2; +}; + +interface SVGPathSegCurvetoQuadraticSmoothAbs : SVGPathSeg { + [SetterThrows] + attribute float x; + [SetterThrows] + attribute float y; +}; + +interface SVGPathSegCurvetoQuadraticSmoothRel : SVGPathSeg { + [SetterThrows] + attribute float x; + [SetterThrows] + attribute float y; +}; + diff --git a/dom/webidl/SVGPathSegList.webidl b/dom/webidl/SVGPathSegList.webidl new file mode 100644 index 0000000000..49d22e5af2 --- /dev/null +++ b/dom/webidl/SVGPathSegList.webidl @@ -0,0 +1,32 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/SVG11/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface SVGPathSegList { + readonly attribute unsigned long numberOfItems; + [Throws] + void clear(); + [Throws] + SVGPathSeg initialize(SVGPathSeg newItem); + [Throws] + getter SVGPathSeg getItem(unsigned long index); + [Throws] + SVGPathSeg insertItemBefore(SVGPathSeg newItem, unsigned long index); + [Throws] + SVGPathSeg replaceItem(SVGPathSeg newItem, unsigned long index); + [Throws] + SVGPathSeg removeItem(unsigned long index); + [Throws] + SVGPathSeg appendItem(SVGPathSeg newItem); + + // Mozilla-specific stuff + readonly attribute unsigned long length; // synonym for numberOfItems +}; diff --git a/dom/webidl/SVGPatternElement.webidl b/dom/webidl/SVGPatternElement.webidl new file mode 100644 index 0000000000..2a549799e0 --- /dev/null +++ b/dom/webidl/SVGPatternElement.webidl @@ -0,0 +1,32 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/SVG2/pservers.html#InterfaceSVGPatternElement + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface SVGPatternElement : SVGElement { + [Constant] + readonly attribute SVGAnimatedEnumeration patternUnits; + [Constant] + readonly attribute SVGAnimatedEnumeration patternContentUnits; + [Constant] + readonly attribute SVGAnimatedTransformList patternTransform; + [Constant] + readonly attribute SVGAnimatedLength x; + [Constant] + readonly attribute SVGAnimatedLength y; + [Constant] + readonly attribute SVGAnimatedLength width; + [Constant] + readonly attribute SVGAnimatedLength height; +}; + +SVGPatternElement implements SVGFitToViewBox; +SVGPatternElement implements SVGURIReference; +SVGPatternElement implements SVGUnitTypeValues; diff --git a/dom/webidl/SVGPoint.webidl b/dom/webidl/SVGPoint.webidl new file mode 100644 index 0000000000..c8113d40b7 --- /dev/null +++ b/dom/webidl/SVGPoint.webidl @@ -0,0 +1,23 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/SVG2/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface SVGPoint { + + [SetterThrows] + attribute float x; + [SetterThrows] + attribute float y; + + [NewObject] + SVGPoint matrixTransform(SVGMatrix matrix); +}; + diff --git a/dom/webidl/SVGPointList.webidl b/dom/webidl/SVGPointList.webidl new file mode 100644 index 0000000000..2bc553855f --- /dev/null +++ b/dom/webidl/SVGPointList.webidl @@ -0,0 +1,32 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/SVG11/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface SVGPointList { + readonly attribute unsigned long numberOfItems; + [Throws] + void clear(); + [Throws] + SVGPoint initialize(SVGPoint newItem); + [Throws] + getter SVGPoint getItem(unsigned long index); + [Throws] + SVGPoint insertItemBefore(SVGPoint newItem, unsigned long index); + [Throws] + SVGPoint replaceItem(SVGPoint newItem, unsigned long index); + [Throws] + SVGPoint removeItem(unsigned long index); + [Throws] + SVGPoint appendItem(SVGPoint newItem); + + // Mozilla-specific stuff + readonly attribute unsigned long length; // synonym for numberOfItems +}; diff --git a/dom/webidl/SVGPolygonElement.webidl b/dom/webidl/SVGPolygonElement.webidl new file mode 100644 index 0000000000..6c720c9313 --- /dev/null +++ b/dom/webidl/SVGPolygonElement.webidl @@ -0,0 +1,17 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/SVG2/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface SVGPolygonElement : SVGGraphicsElement { +}; + +SVGPolygonElement implements SVGAnimatedPoints; + diff --git a/dom/webidl/SVGPolylineElement.webidl b/dom/webidl/SVGPolylineElement.webidl new file mode 100644 index 0000000000..ca2df3a087 --- /dev/null +++ b/dom/webidl/SVGPolylineElement.webidl @@ -0,0 +1,17 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/SVG2/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface SVGPolylineElement : SVGGraphicsElement { +}; + +SVGPolylineElement implements SVGAnimatedPoints; + diff --git a/dom/webidl/SVGPreserveAspectRatio.webidl b/dom/webidl/SVGPreserveAspectRatio.webidl new file mode 100644 index 0000000000..2a9db63f58 --- /dev/null +++ b/dom/webidl/SVGPreserveAspectRatio.webidl @@ -0,0 +1,38 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/SVG2/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface SVGPreserveAspectRatio { + + // Alignment Types + const unsigned short SVG_PRESERVEASPECTRATIO_UNKNOWN = 0; + const unsigned short SVG_PRESERVEASPECTRATIO_NONE = 1; + const unsigned short SVG_PRESERVEASPECTRATIO_XMINYMIN = 2; + const unsigned short SVG_PRESERVEASPECTRATIO_XMIDYMIN = 3; + const unsigned short SVG_PRESERVEASPECTRATIO_XMAXYMIN = 4; + const unsigned short SVG_PRESERVEASPECTRATIO_XMINYMID = 5; + const unsigned short SVG_PRESERVEASPECTRATIO_XMIDYMID = 6; + const unsigned short SVG_PRESERVEASPECTRATIO_XMAXYMID = 7; + const unsigned short SVG_PRESERVEASPECTRATIO_XMINYMAX = 8; + const unsigned short SVG_PRESERVEASPECTRATIO_XMIDYMAX = 9; + const unsigned short SVG_PRESERVEASPECTRATIO_XMAXYMAX = 10; + + // Meet-or-slice Types + const unsigned short SVG_MEETORSLICE_UNKNOWN = 0; + const unsigned short SVG_MEETORSLICE_MEET = 1; + const unsigned short SVG_MEETORSLICE_SLICE = 2; + + [SetterThrows] + attribute unsigned short align; + [SetterThrows] + attribute unsigned short meetOrSlice; +}; + diff --git a/dom/webidl/SVGRadialGradientElement.webidl b/dom/webidl/SVGRadialGradientElement.webidl new file mode 100644 index 0000000000..d4a3724f6a --- /dev/null +++ b/dom/webidl/SVGRadialGradientElement.webidl @@ -0,0 +1,25 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * https://svgwg.org/svg2-draft/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface SVGRadialGradientElement : SVGGradientElement { + [Constant] + readonly attribute SVGAnimatedLength cx; + [Constant] + readonly attribute SVGAnimatedLength cy; + [Constant] + readonly attribute SVGAnimatedLength r; + [Constant] + readonly attribute SVGAnimatedLength fx; + [Constant] + readonly attribute SVGAnimatedLength fy; + // readonly attribute SVGAnimatedLength fr; +}; diff --git a/dom/webidl/SVGRect.webidl b/dom/webidl/SVGRect.webidl new file mode 100644 index 0000000000..0edda0640f --- /dev/null +++ b/dom/webidl/SVGRect.webidl @@ -0,0 +1,22 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/SVG2/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface SVGRect { + [SetterThrows] + attribute float x; + [SetterThrows] + attribute float y; + [SetterThrows] + attribute float width; + [SetterThrows] + attribute float height; +}; diff --git a/dom/webidl/SVGRectElement.webidl b/dom/webidl/SVGRectElement.webidl new file mode 100644 index 0000000000..03028f2a2d --- /dev/null +++ b/dom/webidl/SVGRectElement.webidl @@ -0,0 +1,27 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/SVG2/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface SVGRectElement : SVGGraphicsElement { + [Constant] + readonly attribute SVGAnimatedLength x; + [Constant] + readonly attribute SVGAnimatedLength y; + [Constant] + readonly attribute SVGAnimatedLength width; + [Constant] + readonly attribute SVGAnimatedLength height; + [Constant] + readonly attribute SVGAnimatedLength rx; + [Constant] + readonly attribute SVGAnimatedLength ry; +}; + diff --git a/dom/webidl/SVGSVGElement.webidl b/dom/webidl/SVGSVGElement.webidl new file mode 100644 index 0000000000..afe63dbb28 --- /dev/null +++ b/dom/webidl/SVGSVGElement.webidl @@ -0,0 +1,80 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/SVG2/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface SVGViewSpec; + +interface SVGSVGElement : SVGGraphicsElement { + + [Constant] + readonly attribute SVGAnimatedLength x; + [Constant] + readonly attribute SVGAnimatedLength y; + [Constant] + readonly attribute SVGAnimatedLength width; + [Constant] + readonly attribute SVGAnimatedLength height; + // readonly attribute SVGRect viewport; + [Constant] + readonly attribute float pixelUnitToMillimeterX; + [Constant] + readonly attribute float pixelUnitToMillimeterY; + [Constant] + readonly attribute float screenPixelToMillimeterX; + [Constant] + readonly attribute float screenPixelToMillimeterY; + readonly attribute boolean useCurrentView; + // readonly attribute SVGViewSpec currentView; + [UseCounter] + attribute float currentScale; + readonly attribute SVGPoint currentTranslate; + + [DependsOn=Nothing, Affects=Nothing] + unsigned long suspendRedraw(unsigned long maxWaitMilliseconds); + [DependsOn=Nothing, Affects=Nothing] + void unsuspendRedraw(unsigned long suspendHandleID); + [DependsOn=Nothing, Affects=Nothing] + void unsuspendRedrawAll(); + [DependsOn=Nothing, Affects=Nothing] + void forceRedraw(); + void pauseAnimations(); + void unpauseAnimations(); + boolean animationsPaused(); + float getCurrentTime(); + void setCurrentTime(float seconds); + // NodeList getIntersectionList(SVGRect rect, SVGElement referenceElement); + // NodeList getEnclosureList(SVGRect rect, SVGElement referenceElement); + // boolean checkIntersection(SVGElement element, SVGRect rect); + // boolean checkEnclosure(SVGElement element, SVGRect rect); + void deselectAll(); + [NewObject] + SVGNumber createSVGNumber(); + [NewObject] + SVGLength createSVGLength(); + [NewObject] + SVGAngle createSVGAngle(); + [NewObject] + SVGPoint createSVGPoint(); + [NewObject] + SVGMatrix createSVGMatrix(); + [NewObject] + SVGRect createSVGRect(); + [NewObject] + SVGTransform createSVGTransform(); + [NewObject] + SVGTransform createSVGTransformFromMatrix(SVGMatrix matrix); + [UseCounter] + Element? getElementById(DOMString elementId); +}; + +SVGSVGElement implements SVGFitToViewBox; +SVGSVGElement implements SVGZoomAndPanValues; + diff --git a/dom/webidl/SVGScriptElement.webidl b/dom/webidl/SVGScriptElement.webidl new file mode 100644 index 0000000000..41bbe065b6 --- /dev/null +++ b/dom/webidl/SVGScriptElement.webidl @@ -0,0 +1,23 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/SVG2/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface SVGScriptElement : SVGElement { + [SetterThrows] + attribute DOMString type; + + // CORS attribute + [SetterThrows] + attribute DOMString? crossOrigin; +}; + +SVGScriptElement implements SVGURIReference; + diff --git a/dom/webidl/SVGSetElement.webidl b/dom/webidl/SVGSetElement.webidl new file mode 100644 index 0000000000..8b816fa759 --- /dev/null +++ b/dom/webidl/SVGSetElement.webidl @@ -0,0 +1,15 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/SVG2/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface SVGSetElement : SVGAnimationElement { +}; + diff --git a/dom/webidl/SVGStopElement.webidl b/dom/webidl/SVGStopElement.webidl new file mode 100644 index 0000000000..d75e52b733 --- /dev/null +++ b/dom/webidl/SVGStopElement.webidl @@ -0,0 +1,17 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/SVG2/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface SVGStopElement : SVGElement { + [Constant] + readonly attribute SVGAnimatedNumber offset; +}; + diff --git a/dom/webidl/SVGStringList.webidl b/dom/webidl/SVGStringList.webidl new file mode 100644 index 0000000000..ad7288fe1c --- /dev/null +++ b/dom/webidl/SVGStringList.webidl @@ -0,0 +1,32 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * https://svgwg.org/svg2-draft/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface SVGStringList { + readonly attribute unsigned long length; + readonly attribute unsigned long numberOfItems; + + void clear(); + [Throws] + DOMString initialize(DOMString newItem); + [Throws] + DOMString getItem(unsigned long index); + getter DOMString(unsigned long index); + [Throws] + DOMString insertItemBefore(DOMString newItem, unsigned long index); + [Throws] + DOMString replaceItem(DOMString newItem, unsigned long index); + [Throws] + DOMString removeItem(unsigned long index); + [Throws] + DOMString appendItem(DOMString newItem); + //setter void (unsigned long index, DOMString newItem); +}; diff --git a/dom/webidl/SVGStyleElement.webidl b/dom/webidl/SVGStyleElement.webidl new file mode 100644 index 0000000000..d66b2ed6e0 --- /dev/null +++ b/dom/webidl/SVGStyleElement.webidl @@ -0,0 +1,26 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/SVG2/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface SVGStyleElement : SVGElement { + [SetterThrows] + attribute DOMString xmlspace; // Spec claims this should be on SVGElement + [SetterThrows] + attribute DOMString type; + [SetterThrows] + attribute DOMString media; + [SetterThrows] + attribute DOMString title; + [SetterThrows] + attribute boolean scoped; +}; +SVGStyleElement implements LinkStyle; + diff --git a/dom/webidl/SVGSwitchElement.webidl b/dom/webidl/SVGSwitchElement.webidl new file mode 100644 index 0000000000..43cdb6861a --- /dev/null +++ b/dom/webidl/SVGSwitchElement.webidl @@ -0,0 +1,15 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/SVG2/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface SVGSwitchElement : SVGGraphicsElement { +}; + diff --git a/dom/webidl/SVGSymbolElement.webidl b/dom/webidl/SVGSymbolElement.webidl new file mode 100644 index 0000000000..ece2c5a3f0 --- /dev/null +++ b/dom/webidl/SVGSymbolElement.webidl @@ -0,0 +1,17 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/SVG2/struct.html#InterfaceSVGSymbolElement + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface SVGSymbolElement : SVGElement { +}; + +SVGSymbolElement implements SVGFitToViewBox; +SVGSymbolElement implements SVGTests; diff --git a/dom/webidl/SVGTSpanElement.webidl b/dom/webidl/SVGTSpanElement.webidl new file mode 100644 index 0000000000..a6d944450c --- /dev/null +++ b/dom/webidl/SVGTSpanElement.webidl @@ -0,0 +1,15 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/SVG2/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface SVGTSpanElement : SVGTextPositioningElement { +}; + diff --git a/dom/webidl/SVGTests.webidl b/dom/webidl/SVGTests.webidl new file mode 100644 index 0000000000..e3c38242b3 --- /dev/null +++ b/dom/webidl/SVGTests.webidl @@ -0,0 +1,22 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/SVG2/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +[NoInterfaceObject] +interface SVGTests { + + readonly attribute SVGStringList requiredFeatures; + readonly attribute SVGStringList requiredExtensions; + readonly attribute SVGStringList systemLanguage; + + boolean hasExtension(DOMString extension); +}; + diff --git a/dom/webidl/SVGTextContentElement.webidl b/dom/webidl/SVGTextContentElement.webidl new file mode 100644 index 0000000000..15ec963730 --- /dev/null +++ b/dom/webidl/SVGTextContentElement.webidl @@ -0,0 +1,42 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/SVG2/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface SVGTextContentElement : SVGGraphicsElement { + + // lengthAdjust Types + const unsigned short LENGTHADJUST_UNKNOWN = 0; + const unsigned short LENGTHADJUST_SPACING = 1; + const unsigned short LENGTHADJUST_SPACINGANDGLYPHS = 2; + + [Constant] + readonly attribute SVGAnimatedLength textLength; + [Constant] + readonly attribute SVGAnimatedEnumeration lengthAdjust; + + long getNumberOfChars(); + float getComputedTextLength(); + [Throws] + float getSubStringLength(unsigned long charnum, unsigned long nchars); + [Throws] + SVGPoint getStartPositionOfChar(unsigned long charnum); + [Throws] + SVGPoint getEndPositionOfChar(unsigned long charnum); + [NewObject, Throws] + SVGRect getExtentOfChar(unsigned long charnum); + [Throws] + float getRotationOfChar(unsigned long charnum); + long getCharNumAtPosition(SVGPoint point); + [Throws] + void selectSubString(unsigned long charnum, unsigned long nchars); +}; + + diff --git a/dom/webidl/SVGTextElement.webidl b/dom/webidl/SVGTextElement.webidl new file mode 100644 index 0000000000..042326de2e --- /dev/null +++ b/dom/webidl/SVGTextElement.webidl @@ -0,0 +1,15 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/SVG2/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface SVGTextElement : SVGTextPositioningElement { +}; + diff --git a/dom/webidl/SVGTextPathElement.webidl b/dom/webidl/SVGTextPathElement.webidl new file mode 100644 index 0000000000..73a50f3ff4 --- /dev/null +++ b/dom/webidl/SVGTextPathElement.webidl @@ -0,0 +1,34 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/SVG2/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface SVGTextPathElement : SVGTextContentElement { + + // textPath Method Types + const unsigned short TEXTPATH_METHODTYPE_UNKNOWN = 0; + const unsigned short TEXTPATH_METHODTYPE_ALIGN = 1; + const unsigned short TEXTPATH_METHODTYPE_STRETCH = 2; + + // textPath Spacing Types + const unsigned short TEXTPATH_SPACINGTYPE_UNKNOWN = 0; + const unsigned short TEXTPATH_SPACINGTYPE_AUTO = 1; + const unsigned short TEXTPATH_SPACINGTYPE_EXACT = 2; + + [Constant] + readonly attribute SVGAnimatedLength startOffset; + [Constant] + readonly attribute SVGAnimatedEnumeration method; + [Constant] + readonly attribute SVGAnimatedEnumeration spacing; +}; + +SVGTextPathElement implements SVGURIReference; + diff --git a/dom/webidl/SVGTextPositioningElement.webidl b/dom/webidl/SVGTextPositioningElement.webidl new file mode 100644 index 0000000000..80b8b94fac --- /dev/null +++ b/dom/webidl/SVGTextPositioningElement.webidl @@ -0,0 +1,25 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/SVG2/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface SVGTextPositioningElement : SVGTextContentElement { + [Constant] + readonly attribute SVGAnimatedLengthList x; + [Constant] + readonly attribute SVGAnimatedLengthList y; + [Constant] + readonly attribute SVGAnimatedLengthList dx; + [Constant] + readonly attribute SVGAnimatedLengthList dy; + [Constant] + readonly attribute SVGAnimatedNumberList rotate; +}; + diff --git a/dom/webidl/SVGTitleElement.webidl b/dom/webidl/SVGTitleElement.webidl new file mode 100644 index 0000000000..d40c63373e --- /dev/null +++ b/dom/webidl/SVGTitleElement.webidl @@ -0,0 +1,15 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/SVG2/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface SVGTitleElement : SVGElement { +}; + diff --git a/dom/webidl/SVGTransform.webidl b/dom/webidl/SVGTransform.webidl new file mode 100644 index 0000000000..488fb8d078 --- /dev/null +++ b/dom/webidl/SVGTransform.webidl @@ -0,0 +1,41 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/SVG2/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface SVGTransform { + + // Transform Types + const unsigned short SVG_TRANSFORM_UNKNOWN = 0; + const unsigned short SVG_TRANSFORM_MATRIX = 1; + const unsigned short SVG_TRANSFORM_TRANSLATE = 2; + const unsigned short SVG_TRANSFORM_SCALE = 3; + const unsigned short SVG_TRANSFORM_ROTATE = 4; + const unsigned short SVG_TRANSFORM_SKEWX = 5; + const unsigned short SVG_TRANSFORM_SKEWY = 6; + + readonly attribute unsigned short type; + readonly attribute SVGMatrix matrix; + readonly attribute float angle; + + [Throws] + void setMatrix(SVGMatrix matrix); + [Throws] + void setTranslate(float tx, float ty); + [Throws] + void setScale(float sx, float sy); + [Throws] + void setRotate(float angle, float cx, float cy); + [Throws] + void setSkewX(float angle); + [Throws] + void setSkewY(float angle); +}; + diff --git a/dom/webidl/SVGTransformList.webidl b/dom/webidl/SVGTransformList.webidl new file mode 100644 index 0000000000..c9763aa26c --- /dev/null +++ b/dom/webidl/SVGTransformList.webidl @@ -0,0 +1,35 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/SVG11/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface SVGTransformList { + readonly attribute unsigned long numberOfItems; + [Throws] + void clear(); + [Throws] + SVGTransform initialize(SVGTransform newItem); + [Throws] + getter SVGTransform getItem(unsigned long index); + [Throws] + SVGTransform insertItemBefore(SVGTransform newItem, unsigned long index); + [Throws] + SVGTransform replaceItem(SVGTransform newItem, unsigned long index); + [Throws] + SVGTransform removeItem(unsigned long index); + [Throws] + SVGTransform appendItem(SVGTransform newItem); + SVGTransform createSVGTransformFromMatrix(SVGMatrix matrix); + [Throws] + SVGTransform? consolidate(); + + // Mozilla-specific stuff + readonly attribute unsigned long length; // synonym for numberOfItems +}; diff --git a/dom/webidl/SVGURIReference.webidl b/dom/webidl/SVGURIReference.webidl new file mode 100644 index 0000000000..11f94c1917 --- /dev/null +++ b/dom/webidl/SVGURIReference.webidl @@ -0,0 +1,18 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/SVG2/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +[NoInterfaceObject] +interface SVGURIReference { + [Constant] + readonly attribute SVGAnimatedString href; +}; + diff --git a/dom/webidl/SVGUnitTypeValues.webidl b/dom/webidl/SVGUnitTypeValues.webidl new file mode 100644 index 0000000000..6a1a33e61d --- /dev/null +++ b/dom/webidl/SVGUnitTypeValues.webidl @@ -0,0 +1,19 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * https://svgwg.org/svg2-draft/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +[NoInterfaceObject] +interface SVGUnitTypeValues { + // Unit Types + const unsigned short SVG_UNIT_TYPE_UNKNOWN = 0; + const unsigned short SVG_UNIT_TYPE_USERSPACEONUSE = 1; + const unsigned short SVG_UNIT_TYPE_OBJECTBOUNDINGBOX = 2; +}; diff --git a/dom/webidl/SVGUnitTypes.webidl b/dom/webidl/SVGUnitTypes.webidl new file mode 100644 index 0000000000..fc12c11888 --- /dev/null +++ b/dom/webidl/SVGUnitTypes.webidl @@ -0,0 +1,16 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * https://svgwg.org/svg2-draft/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface SVGUnitTypes { +}; + +SVGUnitTypes implements SVGUnitTypeValues; diff --git a/dom/webidl/SVGUseElement.webidl b/dom/webidl/SVGUseElement.webidl new file mode 100644 index 0000000000..8e7a6fd8cf --- /dev/null +++ b/dom/webidl/SVGUseElement.webidl @@ -0,0 +1,26 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/SVG2/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface SVGUseElement : SVGGraphicsElement { + [Constant] + readonly attribute SVGAnimatedLength x; + [Constant] + readonly attribute SVGAnimatedLength y; + [Constant] + readonly attribute SVGAnimatedLength width; + [Constant] + readonly attribute SVGAnimatedLength height; + //readonly attribute SVGElementInstance instanceRoot; + //readonly attribute SVGElementInstance animatedInstanceRoot; +}; + +SVGUseElement implements SVGURIReference; diff --git a/dom/webidl/SVGViewElement.webidl b/dom/webidl/SVGViewElement.webidl new file mode 100644 index 0000000000..42d9880590 --- /dev/null +++ b/dom/webidl/SVGViewElement.webidl @@ -0,0 +1,19 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/SVG2/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface SVGViewElement : SVGElement { + readonly attribute SVGStringList viewTarget; +}; + +SVGViewElement implements SVGFitToViewBox; +SVGViewElement implements SVGZoomAndPanValues; + diff --git a/dom/webidl/SVGZoomAndPan.webidl b/dom/webidl/SVGZoomAndPan.webidl new file mode 100644 index 0000000000..bb5ee780ac --- /dev/null +++ b/dom/webidl/SVGZoomAndPan.webidl @@ -0,0 +1,16 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/SVG2/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface SVGZoomAndPan { +}; + +SVGZoomAndPan implements SVGZoomAndPanValues; diff --git a/dom/webidl/SVGZoomAndPanValues.webidl b/dom/webidl/SVGZoomAndPanValues.webidl new file mode 100644 index 0000000000..a09653f0be --- /dev/null +++ b/dom/webidl/SVGZoomAndPanValues.webidl @@ -0,0 +1,24 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/SVG2/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +[NoInterfaceObject] +interface SVGZoomAndPanValues { + + // Zoom and Pan Types + const unsigned short SVG_ZOOMANDPAN_UNKNOWN = 0; + const unsigned short SVG_ZOOMANDPAN_DISABLE = 1; + const unsigned short SVG_ZOOMANDPAN_MAGNIFY = 2; + + [SetterThrows] + attribute unsigned short zoomAndPan; +}; + diff --git a/dom/webidl/SVGZoomEvent.webidl b/dom/webidl/SVGZoomEvent.webidl new file mode 100644 index 0000000000..044247f3ca --- /dev/null +++ b/dom/webidl/SVGZoomEvent.webidl @@ -0,0 +1,25 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/SVG2/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface SVGZoomEvent : UIEvent { + // Not implemented + // readonly attribute SVGRect zoomRectScreen; + + [Constant] + readonly attribute float previousScale; + [Constant] + readonly attribute SVGPoint? previousTranslate; + [Constant] + readonly attribute float newScale; + [Constant] + readonly attribute SVGPoint? newTranslate; +}; diff --git a/dom/webidl/Screen.webidl b/dom/webidl/Screen.webidl new file mode 100644 index 0000000000..6b5824fa88 --- /dev/null +++ b/dom/webidl/Screen.webidl @@ -0,0 +1,61 @@ +/* -*- 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/. */ + +interface Screen : EventTarget { + // CSSOM-View + // http://dev.w3.org/csswg/cssom-view/#the-screen-interface + [Throws] + readonly attribute long availWidth; + [Throws] + readonly attribute long availHeight; + [Throws] + readonly attribute long width; + [Throws] + readonly attribute long height; + [Throws] + readonly attribute long colorDepth; + [Throws] + readonly attribute long pixelDepth; + + [Throws] + readonly attribute long top; + [Throws] + readonly attribute long left; + [Throws] + readonly attribute long availTop; + [Throws] + readonly attribute long availLeft; + + /** + * DEPRECATED, use ScreenOrientation API instead. + * Returns the current screen orientation. + * Can be: landscape-primary, landscape-secondary, + * portrait-primary or portrait-secondary. + */ + readonly attribute DOMString mozOrientation; + + attribute EventHandler onmozorientationchange; + + /** + * DEPRECATED, use ScreenOrientation API instead. + * Lock screen orientation to the specified type. + */ + [Throws, UnsafeInPrerendering] + boolean mozLockOrientation(DOMString orientation); + [Throws, UnsafeInPrerendering] + boolean mozLockOrientation(sequence<DOMString> orientation); + + /** + * DEPRECATED, use ScreenOrientation API instead. + * Unlock the screen orientation. + */ + [UnsafeInPrerendering] + void mozUnlockOrientation(); +}; + +// https://w3c.github.io/screen-orientation +partial interface Screen { + readonly attribute ScreenOrientation orientation; +}; diff --git a/dom/webidl/ScreenOrientation.webidl b/dom/webidl/ScreenOrientation.webidl new file mode 100644 index 0000000000..48a2c11702 --- /dev/null +++ b/dom/webidl/ScreenOrientation.webidl @@ -0,0 +1,42 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * https://w3c.github.io/screen-orientation + * + * Copyright © 2014 W3C® (MIT, ERCIM, Keio, Beihang), All Rights + * Reserved. W3C liability, trademark and document use rules apply. + */ + +enum OrientationType { + "portrait-primary", + "portrait-secondary", + "landscape-primary", + "landscape-secondary" +}; + +enum OrientationLockType { + "any", + "natural", + "landscape", + "portrait", + "portrait-primary", + "portrait-secondary", + "landscape-primary", + "landscape-secondary" +}; + +[UnsafeInPrerendering] +interface ScreenOrientation : EventTarget { + [Throws] + Promise<void> lock(OrientationLockType orientation); + [Throws] + void unlock(); + [Throws] + readonly attribute OrientationType type; + [Throws] + readonly attribute unsigned short angle; + attribute EventHandler onchange; +}; diff --git a/dom/webidl/ScriptProcessorNode.webidl b/dom/webidl/ScriptProcessorNode.webidl new file mode 100644 index 0000000000..81c02443f1 --- /dev/null +++ b/dom/webidl/ScriptProcessorNode.webidl @@ -0,0 +1,24 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * https://webaudio.github.io/web-audio-api/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +[Pref="dom.webaudio.enabled"] +interface ScriptProcessorNode : AudioNode { + + attribute EventHandler onaudioprocess; + + readonly attribute long bufferSize; + +}; + +// Mozilla extension +ScriptProcessorNode implements AudioNodePassThrough; + diff --git a/dom/webidl/ScrollAreaEvent.webidl b/dom/webidl/ScrollAreaEvent.webidl new file mode 100644 index 0000000000..0f48b4bc83 --- /dev/null +++ b/dom/webidl/ScrollAreaEvent.webidl @@ -0,0 +1,23 @@ +/* -*- 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/. + */ + +interface ScrollAreaEvent : UIEvent +{ + readonly attribute float x; + readonly attribute float y; + readonly attribute float width; + readonly attribute float height; + + void initScrollAreaEvent(DOMString type, + boolean canBubble, + boolean cancelable, + Window? view, + long detail, + float x, + float y, + float width, + float height); +}; diff --git a/dom/webidl/ScrollBoxObject.webidl b/dom/webidl/ScrollBoxObject.webidl new file mode 100644 index 0000000000..af69058524 --- /dev/null +++ b/dom/webidl/ScrollBoxObject.webidl @@ -0,0 +1,70 @@ +/* -*- 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/. + */ + +[NoInterfaceObject] +interface ScrollBoxObject : BoxObject { + + /** + * Scroll to the given coordinates, in css pixels. + * (0,0) will put the top left corner of the scrolled element's padding-box + * at the top left corner of the scrollport (which is its inner-border-box). + * Values will be clamped to legal values. + */ + [Throws] + void scrollTo(long x, long y); + + /** + * Scroll the given amount of device pixels to the right and down. + * Values will be clamped to make the resuling position legal. + */ + [Throws] + void scrollBy(long dx, long dy); + [Throws] + void scrollByLine(long dlines); + [Throws] + void scrollByIndex(long dindexes); + [Throws] + void scrollToLine(long line); + [Throws] + void scrollToElement(Element child); + [Throws] + void scrollToIndex(long index); + + /** + * Get the current scroll position in css pixels. + * @see scrollTo for the definition of x and y. + */ + [Pure, Throws] + readonly attribute long positionX; + [Pure, Throws] + readonly attribute long positionY; + [Pure, Throws] + readonly attribute long scrolledWidth; + [Pure, Throws] + readonly attribute long scrolledHeight; + + /** + * DEPRECATED: Please use positionX and positionY + * + * Get the current scroll position in css pixels. + * @see scrollTo for the definition of x and y. + */ + [Throws] + void getPosition(object x, object y); + + /** + * DEPRECATED: Please use scrolledWidth and scrolledHeight + */ + [Throws] + void getScrolledSize(object width, object height); + + [Throws] + void ensureElementIsVisible(Element child); + [Throws] + void ensureIndexIsVisible(long index); + [Throws] + void ensureLineIsVisible(long line); +}; diff --git a/dom/webidl/ScrollViewChangeEvent.webidl b/dom/webidl/ScrollViewChangeEvent.webidl new file mode 100644 index 0000000000..a3e92139a2 --- /dev/null +++ b/dom/webidl/ScrollViewChangeEvent.webidl @@ -0,0 +1,17 @@ +/* -*- 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/. + */ + +enum ScrollState {"started", "stopped"}; + +dictionary ScrollViewChangeEventInit : EventInit { + ScrollState state = "started"; +}; + +[Constructor(DOMString type, optional ScrollViewChangeEventInit eventInit), + ChromeOnly] +interface ScrollViewChangeEvent : Event { + readonly attribute ScrollState state; +}; diff --git a/dom/webidl/SecureElement.webidl b/dom/webidl/SecureElement.webidl new file mode 100644 index 0000000000..1f247aac0a --- /dev/null +++ b/dom/webidl/SecureElement.webidl @@ -0,0 +1,158 @@ +/* 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/. */ + + /* Copyright © 2014 Deutsche Telekom, Inc. */ + +enum SEType { + "uicc", + "eSE" +}; + +enum SEError { + "SESecurityError", // Requested operation does not match the access control rules of the application. + "SEIoError", // I/O Error while communicating with the secure element. + "SEBadStateError", // Error occuring as a result of bad state. + "SEInvalidChannelError", // Opening a channel failed because no channel is available. + "SEInvalidApplicationError", // The requested application was not found on the secure element. + "SENotPresentError", // Secure Element is not present + "SEIllegalParameterError", // Request operation does not have valid parameters. + "SEGenericError" // Generic failures. +}; + +enum SEChannelType { + "basic", + "logical" +}; + +// Dictionary that represents an APDU command to be sent to a secure element. +dictionary SECommand { + required octet cla; // Class Byte + required octet ins; // Instruction Byte + required octet p1; // First Octet of Parameters Byte + required octet p2; // Second Octet of Parameters Byte + sequence<octet>? data = null; // Sequence of octets + short le = -1; // The length of the expected + // response data or -1 if none is expected +}; + +[Pref="dom.secureelement.enabled", + ChromeOnly, + JSImplementation="@mozilla.org/secureelement/reader;1"] +interface SEReader { + + // 'true' if a secure element is present + readonly attribute boolean isSEPresent; + + // Type of SecureElement + readonly attribute SEType type; + + /** + * Opens a session with the Secure Element. + * Note that a reader may have several opened sessions. + * + * @return If the operation is successful the promise is resolved with an instance of SESession. + */ + [Throws] + Promise<SESession> openSession(); + + /** + * Closes all sessions associated with this Reader and its associated channels. + * + */ + [Throws] + Promise<void> closeAll(); +}; + +[Pref="dom.secureelement.enabled", + ChromeOnly, + JSImplementation="@mozilla.org/secureelement/session;1"] +interface SESession { + + // 'reader' that provides this session + readonly attribute SEReader reader; + + // Status of current session + readonly attribute boolean isClosed; + + /** + * Opens a communication logical channel to an application on Secure Element identified by the AID. + * The 'aid' can be null for some secure elements. + * + * @param aid + * Application Identifier of the Card Applet on the secure element. + * If the 'aid' is null : + * For secure element type 'eSE', the default applet is selected. + * For secure element type 'uicc', the request will be immediately rejected. + * Note that the length of 'aid should be between 5 and 16. + * + * @return If the operation is successful the promise is resolved with an instance of SEChannel. + */ + [Throws] + Promise<SEChannel> openLogicalChannel(Uint8Array? aid); + + /** + * Close all active channels associated with this session. + * + */ + [Throws] + Promise<void> closeAll(); +}; + +[Pref="dom.secureelement.enabled", + ChromeOnly, + JSImplementation="@mozilla.org/secureelement/channel;1"] +interface SEChannel { + + // 'session' obj this channel is bound to + readonly attribute SESession session; + + // response to openBasicChannel / openLogicalChannel operation + [Constant, Cached] readonly attribute Uint8Array? openResponse; + + // Status of channel + readonly attribute boolean isClosed; + + // Type of channel + readonly attribute SEChannelType type; + + /** + * Transmits the APDU command to the secure element. This is an atomic operation that transmits + * an APDU command (as per ISO7816-4) to the secure element (UICC / eSE). Upon receiving response + * to the transmit apdu command, it is propogated to the applications using SEResponse object. + * + * @param command + * SECommand to be sent to secure element + * + * @return If success, the promise is resolved with the new created + * SEResponse object. Otherwise, rejected with the error of type 'SEError'. + */ + [Throws] + Promise<SEResponse> transmit(optional SECommand command); + + /** + * Closes the active channel. + * + */ + [Throws] + Promise<void> close(); +}; + +[Pref="dom.secureelement.enabled", + ChromeOnly, + JSImplementation="@mozilla.org/secureelement/response;1"] +interface SEResponse { + // Response received on this 'channel' object. + [Constant] readonly attribute SEChannel channel; + + // First octet of response's status word + [Constant] readonly attribute octet sw1; + + // Second octet of response's status word + [Constant] readonly attribute octet sw2; + + // The response's data field bytes + [Cached, Pure] readonly attribute sequence<octet>? data; + +}; + diff --git a/dom/webidl/SecureElementManager.webidl b/dom/webidl/SecureElementManager.webidl new file mode 100644 index 0000000000..4a43ad5fe0 --- /dev/null +++ b/dom/webidl/SecureElementManager.webidl @@ -0,0 +1,22 @@ +/* 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/. */ + + /* Copyright © 2014 Deutsche Telekom, Inc. */ + +[Pref="dom.secureelement.enabled", + ChromeOnly, + JSImplementation="@mozilla.org/secureelement/manager;1", + NavigatorProperty="seManager", + NoInterfaceObject] +interface SEManager { + + /** + * Retrieves all the readers available on the device. + * + * @return If success, the promise is resolved to a sequence + * of SEReaders Otherwise, rejected with an error. + */ + [Throws] + Promise<sequence<SEReader>> getSEReaders(); +}; diff --git a/dom/webidl/Selection.webidl b/dom/webidl/Selection.webidl new file mode 100644 index 0000000000..c90844dfa2 --- /dev/null +++ b/dom/webidl/Selection.webidl @@ -0,0 +1,88 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * https://dvcs.w3.org/hg/editing/raw-file/tip/editing.html#concept-selection + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface Selection { + readonly attribute Node? anchorNode; + readonly attribute unsigned long anchorOffset; + readonly attribute Node? focusNode; + readonly attribute unsigned long focusOffset; + + readonly attribute boolean isCollapsed; + [Throws] + void collapse(Node node, unsigned long offset); + [Throws] + void collapseToStart(); + [Throws] + void collapseToEnd(); + + [Throws] + void extend(Node node, unsigned long offset); + + [Throws] + void selectAllChildren(Node node); + [Throws] + void deleteFromDocument(); + + readonly attribute unsigned long rangeCount; + [Throws] + Range getRangeAt(unsigned long index); + [Throws] + void addRange(Range range); + [Throws] + void removeRange(Range range); + [Throws] + void removeAllRanges(); + + [Throws] + boolean containsNode(Node node, boolean allowPartialContainment); + + stringifier; +}; + +// Additional methods not currently in the spec +partial interface Selection { + [Throws] + void modify(DOMString alter, DOMString direction, + DOMString granularity); +}; + +// Additional chrome-only methods from nsISelectionPrivate +interface nsISelectionListener; +partial interface Selection { + [ChromeOnly] + const short ENDOFPRECEDINGLINE = 0; + [ChromeOnly] + const short STARTOFNEXTLINE = 1; + + [ChromeOnly,Throws] + attribute boolean interlinePosition; + + [Throws] + attribute short? caretBidiLevel; + + [ChromeOnly,Throws] + DOMString toStringWithFormat(DOMString formatType, unsigned long flags, long wrapColumn); + [ChromeOnly,Throws] + void addSelectionListener(nsISelectionListener newListener); + [ChromeOnly,Throws] + void removeSelectionListener(nsISelectionListener listenerToRemove); + + [ChromeOnly,BinaryName="rawType"] + readonly attribute short type; + + [ChromeOnly,Throws,Pref="dom.testing.selection.GetRangesForInterval"] + sequence<Range> GetRangesForInterval(Node beginNode, long beginOffset, Node endNode, long endOffset, + boolean allowAdjacent); + + [ChromeOnly,Throws] + void scrollIntoView(short aRegion, boolean aIsSynchronous, short aVPercent, short aHPercent); +}; diff --git a/dom/webidl/ServiceWorker.webidl b/dom/webidl/ServiceWorker.webidl new file mode 100644 index 0000000000..8c3749e940 --- /dev/null +++ b/dom/webidl/ServiceWorker.webidl @@ -0,0 +1,35 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://slightlyoff.github.io/ServiceWorker/spec/service_worker/index.html#service-worker-obj + * + */ + +// Still unclear what should be subclassed. +// https://github.com/slightlyoff/ServiceWorker/issues/189 +[Func="mozilla::dom::workers::ServiceWorkerVisible", + // FIXME(nsm): Bug 1113522. This is exposed to satisfy webidl constraints, but it won't actually work. + Exposed=(Window,Worker)] +interface ServiceWorker : EventTarget { + readonly attribute USVString scriptURL; + readonly attribute ServiceWorkerState state; + + attribute EventHandler onstatechange; + + // FIXME(catalinb): Should inherit this from Worker. + [Throws] + void postMessage(any message, optional sequence<Transferable> transferable); +}; + +ServiceWorker implements AbstractWorker; + +enum ServiceWorkerState { + "installing", + "installed", + "activating", + "activated", + "redundant" +}; diff --git a/dom/webidl/ServiceWorkerContainer.webidl b/dom/webidl/ServiceWorkerContainer.webidl new file mode 100644 index 0000000000..91232f9f3a --- /dev/null +++ b/dom/webidl/ServiceWorkerContainer.webidl @@ -0,0 +1,45 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://slightlyoff.github.io/ServiceWorker/spec/service_worker/index.html + * + */ + +[Func="ServiceWorkerContainer::IsEnabled", + Exposed=Window] +interface ServiceWorkerContainer : EventTarget { + // FIXME(nsm): + // https://github.com/slightlyoff/ServiceWorker/issues/198 + // and discussion at https://etherpad.mozilla.org/serviceworker07apr + [Unforgeable] readonly attribute ServiceWorker? controller; + + [SameObject, Throws] + readonly attribute Promise<ServiceWorkerRegistration> ready; + + [NewObject] + Promise<ServiceWorkerRegistration> register(USVString scriptURL, + optional RegistrationOptions options); + + [NewObject] + Promise<any> getRegistration(optional USVString documentURL = ""); + + [NewObject] + Promise<sequence<ServiceWorkerRegistration>> getRegistrations(); + + attribute EventHandler oncontrollerchange; + attribute EventHandler onerror; + attribute EventHandler onmessage; +}; + +// Testing only. +partial interface ServiceWorkerContainer { + [Throws,Pref="dom.serviceWorkers.testing.enabled"] + DOMString getScopeForUrl(DOMString url); +}; + +dictionary RegistrationOptions { + USVString scope; +}; diff --git a/dom/webidl/ServiceWorkerGlobalScope.webidl b/dom/webidl/ServiceWorkerGlobalScope.webidl new file mode 100644 index 0000000000..b59bf0aa05 --- /dev/null +++ b/dom/webidl/ServiceWorkerGlobalScope.webidl @@ -0,0 +1,36 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://slightlyoff.github.io/ServiceWorker/spec/service_worker/index.html + * + * You are granted a license to use, reproduce and create derivative works of + * this document. + */ + +[Global=(Worker,ServiceWorker), + Exposed=ServiceWorker] +interface ServiceWorkerGlobalScope : WorkerGlobalScope { + [SameObject] readonly attribute Clients clients; + [SameObject] readonly attribute ServiceWorkerRegistration registration; + + [Throws, NewObject] + Promise<void> skipWaiting(); + + attribute EventHandler oninstall; + attribute EventHandler onactivate; + + attribute EventHandler onfetch; + + // The event.source of these MessageEvents are instances of Client + attribute EventHandler onmessage; +}; + +// These are from w3c.github.io/push-api/ +partial interface ServiceWorkerGlobalScope { + attribute EventHandler onpush; + attribute EventHandler onpushsubscriptionchange; +}; + diff --git a/dom/webidl/ServiceWorkerMessageEvent.webidl b/dom/webidl/ServiceWorkerMessageEvent.webidl new file mode 100644 index 0000000000..c05696c159 --- /dev/null +++ b/dom/webidl/ServiceWorkerMessageEvent.webidl @@ -0,0 +1,48 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://slightlyoff.github.io/ServiceWorker/spec/service_worker/index.html + * + */ + +[Pref="dom.serviceWorkers.enabled", + Constructor(DOMString type, optional ServiceWorkerMessageEventInit eventInitDict), + Exposed=Window] +interface ServiceWorkerMessageEvent : Event { + /** + * Custom data associated with this event. + */ + readonly attribute any data; + + /** + * The origin of the site from which this event originated. + */ + readonly attribute DOMString origin; + + /** + * The last event ID string of the event source. + */ + readonly attribute DOMString lastEventId; + + /** + * The service worker or port which originated this event. + * FIXME: Use SameOject after IDL spec is updated + * https://bugzilla.mozilla.org/show_bug.cgi?id=1196097 + */ + [Constant] readonly attribute (ServiceWorker or MessagePort)? source; + + [Constant, Cached, Frozen] + readonly attribute sequence<MessagePort> ports; +}; + +dictionary ServiceWorkerMessageEventInit : EventInit +{ + any data = null; + DOMString origin = ""; + DOMString lastEventId = ""; + (ServiceWorker or MessagePort)? source = null; + sequence<MessagePort> ports = []; +}; diff --git a/dom/webidl/ServiceWorkerRegistration.webidl b/dom/webidl/ServiceWorkerRegistration.webidl new file mode 100644 index 0000000000..04d0af3f46 --- /dev/null +++ b/dom/webidl/ServiceWorkerRegistration.webidl @@ -0,0 +1,33 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://slightlyoff.github.io/ServiceWorker/spec/service_worker/index.html + * + */ + +[Func="mozilla::dom::ServiceWorkerRegistration::Visible", + Exposed=(Window,Worker)] +interface ServiceWorkerRegistration : EventTarget { + [Unforgeable] readonly attribute ServiceWorker? installing; + [Unforgeable] readonly attribute ServiceWorker? waiting; + [Unforgeable] readonly attribute ServiceWorker? active; + + readonly attribute USVString scope; + + [Throws, NewObject] + Promise<void> update(); + + [Throws, NewObject] + Promise<boolean> unregister(); + + // event + attribute EventHandler onupdatefound; +}; + +partial interface ServiceWorkerRegistration { + [Throws, Exposed=(Window,Worker), Func="nsContentUtils::PushEnabled"] + readonly attribute PushManager pushManager; +}; diff --git a/dom/webidl/SettingChangeNotification.webidl b/dom/webidl/SettingChangeNotification.webidl new file mode 100644 index 0000000000..11c097e3dd --- /dev/null +++ b/dom/webidl/SettingChangeNotification.webidl @@ -0,0 +1,12 @@ +/* -*- 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/. + */ + +// Used internally by Gecko +dictionary SettingChangeNotification { + DOMString key = ""; + any value; + boolean isInternalChange = false; +}; diff --git a/dom/webidl/SettingsManager.webidl b/dom/webidl/SettingsManager.webidl new file mode 100644 index 0000000000..ad707a2588 --- /dev/null +++ b/dom/webidl/SettingsManager.webidl @@ -0,0 +1,42 @@ +/* -*- 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/. + */ + +[JSImplementation="@mozilla.org/settingsLock;1", + Pref="dom.mozSettings.enabled"] +interface SettingsLock : EventTarget { + // Whether this lock is invalid + readonly attribute boolean closed; + + // Contains a JSON object with name/value pairs to be set. + DOMRequest set(object settings); + + // Result contains the value of the setting. + DOMRequest get(DOMString name); + + DOMRequest clear(); + attribute EventHandler onsettingstransactionsuccess; + attribute EventHandler onsettingstransactionfailure; +}; + +dictionary SettingChange { + DOMString settingName; + DOMString settingValue; +}; + +callback SettingChangeCallback = void (SettingChange setting); + +[JSImplementation="@mozilla.org/settingsManager;1", + NavigatorProperty="mozSettings", + Pref="dom.mozSettings.enabled", + ChromeOnly] +interface SettingsManager : EventTarget { + SettingsLock createLock(); + + void addObserver(DOMString name, SettingChangeCallback callback); + void removeObserver(DOMString name, SettingChangeCallback callback); + + attribute EventHandler onsettingchange; +}; diff --git a/dom/webidl/ShadowRoot.webidl b/dom/webidl/ShadowRoot.webidl new file mode 100644 index 0000000000..a6c6de2543 --- /dev/null +++ b/dom/webidl/ShadowRoot.webidl @@ -0,0 +1,27 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * https://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/shadow/index.html + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +[Func="nsDocument::IsWebComponentsEnabled"] +interface ShadowRoot : DocumentFragment +{ + Element? getElementById(DOMString elementId); + HTMLCollection getElementsByTagName(DOMString localName); + HTMLCollection getElementsByTagNameNS(DOMString? namespace, DOMString localName); + HTMLCollection getElementsByClassName(DOMString classNames); + [SetterThrows,TreatNullAs=EmptyString] + attribute DOMString innerHTML; + readonly attribute Element host; + readonly attribute ShadowRoot? olderShadowRoot; + attribute boolean applyAuthorStyles; + readonly attribute StyleSheetList styleSheets; +}; + diff --git a/dom/webidl/SharedWorker.webidl b/dom/webidl/SharedWorker.webidl new file mode 100644 index 0000000000..042fa4af98 --- /dev/null +++ b/dom/webidl/SharedWorker.webidl @@ -0,0 +1,12 @@ +/* -*- 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/. + */ + +[Constructor(DOMString scriptURL, optional DOMString name)] +interface SharedWorker : EventTarget { + readonly attribute MessagePort port; +}; + +SharedWorker implements AbstractWorker; diff --git a/dom/webidl/SharedWorkerGlobalScope.webidl b/dom/webidl/SharedWorkerGlobalScope.webidl new file mode 100644 index 0000000000..f3e8daf424 --- /dev/null +++ b/dom/webidl/SharedWorkerGlobalScope.webidl @@ -0,0 +1,20 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.whatwg.org/specs/web-apps/current-work/multipage/workers.html#the-workerglobalscope-common-interface + * + * © Copyright 2004-2011 Apple Computer, Inc., Mozilla Foundation, and Opera + * Software ASA. + * You are granted a license to use, reproduce and create derivative works of + * this document. + */ + +[Global=(Worker,SharedWorker), + Exposed=SharedWorker] +interface SharedWorkerGlobalScope : WorkerGlobalScope { + readonly attribute DOMString name; + attribute EventHandler onconnect; +}; diff --git a/dom/webidl/SimpleGestureEvent.webidl b/dom/webidl/SimpleGestureEvent.webidl new file mode 100644 index 0000000000..0829076dd4 --- /dev/null +++ b/dom/webidl/SimpleGestureEvent.webidl @@ -0,0 +1,46 @@ +/* -*- 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/. + * + * For more information see nsIDOMSimpleGestureEvent.idl. + */ + +interface SimpleGestureEvent : MouseEvent +{ + const unsigned long DIRECTION_UP = 1; + const unsigned long DIRECTION_DOWN = 2; + const unsigned long DIRECTION_LEFT = 4; + const unsigned long DIRECTION_RIGHT = 8; + + const unsigned long ROTATION_COUNTERCLOCKWISE = 1; + const unsigned long ROTATION_CLOCKWISE = 2; + + attribute unsigned long allowedDirections; + + readonly attribute unsigned long direction; + + readonly attribute double delta; + + readonly attribute unsigned long clickCount; + + void initSimpleGestureEvent(DOMString typeArg, + boolean canBubbleArg, + boolean cancelableArg, + Window? viewArg, + long detailArg, + long screenXArg, + long screenYArg, + long clientXArg, + long clientYArg, + boolean ctrlKeyArg, + boolean altKeyArg, + boolean shiftKeyArg, + boolean metaKeyArg, + unsigned short buttonArg, + EventTarget? relatedTargetArg, + unsigned long allowedDirectionsArg, + unsigned long directionArg, + double deltaArg, + unsigned long clickCount); +}; diff --git a/dom/webidl/SocketCommon.webidl b/dom/webidl/SocketCommon.webidl new file mode 100644 index 0000000000..044199ea2b --- /dev/null +++ b/dom/webidl/SocketCommon.webidl @@ -0,0 +1,16 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/2012/sysapps/tcp-udp-sockets/#readystate + */ + +enum SocketReadyState { + "opening", + "open", + "closing", + "closed", + "halfclosed" +}; diff --git a/dom/webidl/SourceBuffer.webidl b/dom/webidl/SourceBuffer.webidl new file mode 100644 index 0000000000..a1d9f98cfd --- /dev/null +++ b/dom/webidl/SourceBuffer.webidl @@ -0,0 +1,49 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://dvcs.w3.org/hg/html-media/raw-file/default/media-source/media-source.html + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +enum SourceBufferAppendMode { + "segments", + "sequence" +}; + +[Func="mozilla::dom::MediaSource::Enabled"] +interface SourceBuffer : EventTarget { + [SetterThrows] + attribute SourceBufferAppendMode mode; + readonly attribute boolean updating; + [Throws] + readonly attribute TimeRanges buffered; + [SetterThrows] + attribute double timestampOffset; + //readonly attribute AudioTrackList audioTracks; + //readonly attribute VideoTrackList videoTracks; + //readonly attribute TextTrackList textTracks; + [SetterThrows] + attribute double appendWindowStart; + [SetterThrows] + attribute unrestricted double appendWindowEnd; + attribute EventHandler onupdatestart; + attribute EventHandler onupdate; + attribute EventHandler onupdateend; + attribute EventHandler onerror; + attribute EventHandler onabort; + [Throws] + void appendBuffer(ArrayBuffer data); + [Throws] + void appendBuffer(ArrayBufferView data); + //[Throws] + //void appendStream(Stream stream, [EnforceRange] optional unsigned long long maxSize); + [Throws] + void abort(); + [Throws] + void remove(double start, unrestricted double end); +}; diff --git a/dom/webidl/SourceBufferList.webidl b/dom/webidl/SourceBufferList.webidl new file mode 100644 index 0000000000..15c302622a --- /dev/null +++ b/dom/webidl/SourceBufferList.webidl @@ -0,0 +1,19 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://dvcs.w3.org/hg/html-media/raw-file/default/media-source/media-source.html + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +[Func="mozilla::dom::MediaSource::Enabled"] +interface SourceBufferList : EventTarget { + readonly attribute unsigned long length; + attribute EventHandler onaddsourcebuffer; + attribute EventHandler onremovesourcebuffer; + getter SourceBuffer (unsigned long index); +}; diff --git a/dom/webidl/SpeechGrammar.webidl b/dom/webidl/SpeechGrammar.webidl new file mode 100644 index 0000000000..8cc97d2ffc --- /dev/null +++ b/dom/webidl/SpeechGrammar.webidl @@ -0,0 +1,22 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://dvcs.w3.org/hg/speech-api/raw-file/tip/speechapi.html + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +[Constructor, + Pref="media.webspeech.recognition.enable", + Func="SpeechRecognition::IsAuthorized"] +interface SpeechGrammar { + [Throws] + attribute DOMString src; + [Throws] + attribute float weight; +}; + diff --git a/dom/webidl/SpeechGrammarList.webidl b/dom/webidl/SpeechGrammarList.webidl new file mode 100644 index 0000000000..f1b5775ae0 --- /dev/null +++ b/dom/webidl/SpeechGrammarList.webidl @@ -0,0 +1,23 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://dvcs.w3.org/hg/speech-api/raw-file/tip/speechapi.html + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +[Constructor, Pref="media.webspeech.recognition.enable", + Func="SpeechRecognition::IsAuthorized"] +interface SpeechGrammarList { + readonly attribute unsigned long length; + [Throws] + getter SpeechGrammar item(unsigned long index); + [Throws] + void addFromURI(DOMString src, optional float weight); + [Throws] + void addFromString(DOMString string, optional float weight); +}; diff --git a/dom/webidl/SpeechRecognition.webidl b/dom/webidl/SpeechRecognition.webidl new file mode 100644 index 0000000000..c7dc9422d6 --- /dev/null +++ b/dom/webidl/SpeechRecognition.webidl @@ -0,0 +1,45 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://dvcs.w3.org/hg/speech-api/raw-file/tip/speechapi.html + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +[Constructor, + Pref="media.webspeech.recognition.enable", + Func="SpeechRecognition::IsAuthorized"] +interface SpeechRecognition : EventTarget { + // recognition parameters + attribute SpeechGrammarList grammars; + attribute DOMString lang; + [Throws] + attribute boolean continuous; + attribute boolean interimResults; + attribute unsigned long maxAlternatives; + [Throws] + attribute DOMString serviceURI; + + // methods to drive the speech interaction + [Throws, UnsafeInPrerendering] + void start(optional MediaStream stream); + void stop(); + void abort(); + + // event methods + attribute EventHandler onaudiostart; + attribute EventHandler onsoundstart; + attribute EventHandler onspeechstart; + attribute EventHandler onspeechend; + attribute EventHandler onsoundend; + attribute EventHandler onaudioend; + attribute EventHandler onresult; + attribute EventHandler onnomatch; + attribute EventHandler onerror; + attribute EventHandler onstart; + attribute EventHandler onend; +}; diff --git a/dom/webidl/SpeechRecognitionAlternative.webidl b/dom/webidl/SpeechRecognitionAlternative.webidl new file mode 100644 index 0000000000..f2692404d5 --- /dev/null +++ b/dom/webidl/SpeechRecognitionAlternative.webidl @@ -0,0 +1,18 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://dvcs.w3.org/hg/speech-api/raw-file/tip/speechapi.html + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +[Pref="media.webspeech.recognition.enable", + Func="SpeechRecognition::IsAuthorized"] +interface SpeechRecognitionAlternative { + readonly attribute DOMString transcript; + readonly attribute float confidence; +}; diff --git a/dom/webidl/SpeechRecognitionError.webidl b/dom/webidl/SpeechRecognitionError.webidl new file mode 100644 index 0000000000..ddc74e88da --- /dev/null +++ b/dom/webidl/SpeechRecognitionError.webidl @@ -0,0 +1,31 @@ +/* -*- 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/. + */ + +enum SpeechRecognitionErrorCode { + "no-speech", + "aborted", + "audio-capture", + "network", + "not-allowed", + "service-not-allowed", + "bad-grammar", + "language-not-supported" +}; + +[Pref="media.webspeech.recognition.enable", + Func="SpeechRecognition::IsAuthorized", + Constructor(DOMString type, optional SpeechRecognitionErrorInit eventInitDict)] +interface SpeechRecognitionError : Event +{ + readonly attribute SpeechRecognitionErrorCode error; + readonly attribute DOMString? message; +}; + +dictionary SpeechRecognitionErrorInit : EventInit +{ + SpeechRecognitionErrorCode error = "no-speech"; + DOMString message = ""; +}; diff --git a/dom/webidl/SpeechRecognitionEvent.webidl b/dom/webidl/SpeechRecognitionEvent.webidl new file mode 100644 index 0000000000..7a95323d77 --- /dev/null +++ b/dom/webidl/SpeechRecognitionEvent.webidl @@ -0,0 +1,25 @@ +/* -*- 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/. + */ +interface nsISupports; + +[Pref="media.webspeech.recognition.enable", + Func="SpeechRecognition::IsAuthorized", + Constructor(DOMString type, optional SpeechRecognitionEventInit eventInitDict)] +interface SpeechRecognitionEvent : Event +{ + readonly attribute unsigned long resultIndex; + readonly attribute SpeechRecognitionResultList? results; + readonly attribute any interpretation; + readonly attribute Document? emma; +}; + +dictionary SpeechRecognitionEventInit : EventInit +{ + unsigned long resultIndex = 0; + SpeechRecognitionResultList? results = null; + any interpretation = null; + Document? emma = null; +}; diff --git a/dom/webidl/SpeechRecognitionResult.webidl b/dom/webidl/SpeechRecognitionResult.webidl new file mode 100644 index 0000000000..c66bb9ca2f --- /dev/null +++ b/dom/webidl/SpeechRecognitionResult.webidl @@ -0,0 +1,19 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://dvcs.w3.org/hg/speech-api/raw-file/tip/speechapi.html + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +[Pref="media.webspeech.recognition.enable", + Func="SpeechRecognition::IsAuthorized"] +interface SpeechRecognitionResult { + readonly attribute unsigned long length; + getter SpeechRecognitionAlternative item(unsigned long index); + readonly attribute boolean isFinal; +}; diff --git a/dom/webidl/SpeechRecognitionResultList.webidl b/dom/webidl/SpeechRecognitionResultList.webidl new file mode 100644 index 0000000000..ec182c1def --- /dev/null +++ b/dom/webidl/SpeechRecognitionResultList.webidl @@ -0,0 +1,18 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://dvcs.w3.org/hg/speech-api/raw-file/tip/speechapi.html + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +[Pref="media.webspeech.recognition.enable", + Func="SpeechRecognition::IsAuthorized"] +interface SpeechRecognitionResultList { + readonly attribute unsigned long length; + getter SpeechRecognitionResult item(unsigned long index); +}; diff --git a/dom/webidl/SpeechSynthesis.webidl b/dom/webidl/SpeechSynthesis.webidl new file mode 100644 index 0000000000..9cc3a061e4 --- /dev/null +++ b/dom/webidl/SpeechSynthesis.webidl @@ -0,0 +1,32 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://dvcs.w3.org/hg/speech-api/raw-file/tip/speechapi.html + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +[Pref="media.webspeech.synth.enabled"] +interface SpeechSynthesis : EventTarget{ + readonly attribute boolean pending; + readonly attribute boolean speaking; + readonly attribute boolean paused; + + [UnsafeInPrerendering] + void speak(SpeechSynthesisUtterance utterance); + void cancel(); + void pause(); + [UnsafeInPrerendering] + void resume(); + sequence<SpeechSynthesisVoice> getVoices(); + + attribute EventHandler onvoiceschanged; + + [ChromeOnly] + // Force an utterance to end. Circumvents bad speech service implementations. + void forceEnd(); +}; diff --git a/dom/webidl/SpeechSynthesisErrorEvent.webidl b/dom/webidl/SpeechSynthesisErrorEvent.webidl new file mode 100644 index 0000000000..1388755d31 --- /dev/null +++ b/dom/webidl/SpeechSynthesisErrorEvent.webidl @@ -0,0 +1,36 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://dvcs.w3.org/hg/speech-api/raw-file/tip/speechapi.html + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +enum SpeechSynthesisErrorCode { + "canceled", + "interrupted", + "audio-busy", + "audio-hardware", + "network", + "synthesis-unavailable", + "synthesis-failed", + "language-unavailable", + "voice-unavailable", + "text-too-long", + "invalid-argument", +}; + +[Constructor(DOMString type, SpeechSynthesisErrorEventInit eventInitDict), + Pref="media.webspeech.synth.enabled"] +interface SpeechSynthesisErrorEvent : SpeechSynthesisEvent { + readonly attribute SpeechSynthesisErrorCode error; +}; + +dictionary SpeechSynthesisErrorEventInit : SpeechSynthesisEventInit +{ + required SpeechSynthesisErrorCode error; +}; diff --git a/dom/webidl/SpeechSynthesisEvent.webidl b/dom/webidl/SpeechSynthesisEvent.webidl new file mode 100644 index 0000000000..a5f8b3c2b3 --- /dev/null +++ b/dom/webidl/SpeechSynthesisEvent.webidl @@ -0,0 +1,29 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://dvcs.w3.org/hg/speech-api/raw-file/tip/speechapi.html + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +[Constructor(DOMString type, SpeechSynthesisEventInit eventInitDict), + Pref="media.webspeech.synth.enabled"] +interface SpeechSynthesisEvent : Event +{ + readonly attribute SpeechSynthesisUtterance utterance; + readonly attribute unsigned long charIndex; + readonly attribute float elapsedTime; + readonly attribute DOMString? name; +}; + +dictionary SpeechSynthesisEventInit : EventInit +{ + required SpeechSynthesisUtterance utterance; + unsigned long charIndex = 0; + float elapsedTime = 0; + DOMString name = ""; +}; diff --git a/dom/webidl/SpeechSynthesisUtterance.webidl b/dom/webidl/SpeechSynthesisUtterance.webidl new file mode 100644 index 0000000000..14f6e9fde4 --- /dev/null +++ b/dom/webidl/SpeechSynthesisUtterance.webidl @@ -0,0 +1,34 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://dvcs.w3.org/hg/speech-api/raw-file/tip/speechapi.html + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +[Pref="media.webspeech.synth.enabled", + Constructor, + Constructor(DOMString text)] +interface SpeechSynthesisUtterance : EventTarget { + attribute DOMString text; + attribute DOMString lang; + attribute SpeechSynthesisVoice? voice; + attribute float volume; + attribute float rate; + attribute float pitch; + + attribute EventHandler onstart; + attribute EventHandler onend; + attribute EventHandler onerror; + attribute EventHandler onpause; + attribute EventHandler onresume; + attribute EventHandler onmark; + attribute EventHandler onboundary; + + [ChromeOnly] + readonly attribute DOMString chosenVoiceURI; +}; diff --git a/dom/webidl/SpeechSynthesisVoice.webidl b/dom/webidl/SpeechSynthesisVoice.webidl new file mode 100644 index 0000000000..39ea6964d0 --- /dev/null +++ b/dom/webidl/SpeechSynthesisVoice.webidl @@ -0,0 +1,20 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://dvcs.w3.org/hg/speech-api/raw-file/tip/speechapi.html + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +[Pref="media.webspeech.synth.enabled"] +interface SpeechSynthesisVoice { + readonly attribute DOMString voiceURI; + readonly attribute DOMString name; + readonly attribute DOMString lang; + readonly attribute boolean localService; + readonly attribute boolean default; +}; diff --git a/dom/webidl/StereoPannerNode.webidl b/dom/webidl/StereoPannerNode.webidl new file mode 100644 index 0000000000..f84c8310b7 --- /dev/null +++ b/dom/webidl/StereoPannerNode.webidl @@ -0,0 +1,20 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * https://webaudio.github.io/web-audio-api/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +[Pref="dom.webaudio.enabled"] +interface StereoPannerNode : AudioNode { + readonly attribute AudioParam pan; +}; + +// Mozilla extension +StereoPannerNode implements AudioNodePassThrough; + diff --git a/dom/webidl/Storage.webidl b/dom/webidl/Storage.webidl new file mode 100644 index 0000000000..d951cdafed --- /dev/null +++ b/dom/webidl/Storage.webidl @@ -0,0 +1,35 @@ +/* -*- 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/. +* +* The origin of this IDL file is +* http://www.whatwg.org/html/#the-storage-interface +* +* © Copyright 2004-2011 Apple Computer, Inc., Mozilla Foundation, and +* Opera Software ASA. You are granted a license to use, reproduce +* and create derivative works of this document. +*/ + +interface Storage { + [Throws, NeedsSubjectPrincipal] + readonly attribute unsigned long length; + + [Throws, NeedsSubjectPrincipal] + DOMString? key(unsigned long index); + + [Throws, NeedsSubjectPrincipal] + getter DOMString? getItem(DOMString key); + + [Throws, NeedsSubjectPrincipal] + setter creator void setItem(DOMString key, DOMString value); + + [Throws, NeedsSubjectPrincipal] + deleter void removeItem(DOMString key); + + [Throws, NeedsSubjectPrincipal] + void clear(); + + [ChromeOnly] + readonly attribute boolean isSessionOnly; +}; diff --git a/dom/webidl/StorageEvent.webidl b/dom/webidl/StorageEvent.webidl new file mode 100644 index 0000000000..c3e9605eb6 --- /dev/null +++ b/dom/webidl/StorageEvent.webidl @@ -0,0 +1,40 @@ +/* -*- 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/. + * + * Interface for a client side storage. See + * http://dev.w3.org/html5/webstorage/#the-storage-event + * for more information. + * + * Event sent to a window when a storage area changes. + */ + +[Constructor(DOMString type, optional StorageEventInit eventInitDict)] +interface StorageEvent : Event +{ + readonly attribute DOMString? key; + readonly attribute DOMString? oldValue; + readonly attribute DOMString? newValue; + readonly attribute DOMString? url; + readonly attribute Storage? storageArea; + + // Bug 1016053 - This is not spec compliant. + void initStorageEvent(DOMString type, + boolean canBubble, + boolean cancelable, + DOMString? key, + DOMString? oldValue, + DOMString? newValue, + DOMString? url, + Storage? storageArea); +}; + +dictionary StorageEventInit : EventInit +{ + DOMString? key = null; + DOMString? oldValue = null; + DOMString? newValue = null; + DOMString url = ""; + Storage? storageArea = null; +}; diff --git a/dom/webidl/StorageManager.webidl b/dom/webidl/StorageManager.webidl new file mode 100644 index 0000000000..b2855206ec --- /dev/null +++ b/dom/webidl/StorageManager.webidl @@ -0,0 +1,25 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * https://storage.spec.whatwg.org/#storagemanager + * + */ + +[Exposed=(Window,Worker), + Func="mozilla::dom::StorageManager::PrefEnabled"] +interface StorageManager { + // [Throws] + // Promise<boolean> persisted(); + // [Throws] + // [Exposed=Window] Promise<boolean> persist(); + [Throws] + Promise<StorageEstimate> estimate(); +}; + +dictionary StorageEstimate { + unsigned long long usage; + unsigned long long quota; +}; diff --git a/dom/webidl/StorageType.webidl b/dom/webidl/StorageType.webidl new file mode 100644 index 0000000000..cb0702d2a8 --- /dev/null +++ b/dom/webidl/StorageType.webidl @@ -0,0 +1,7 @@ +/* -*- 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/. + */ + +enum StorageType { "persistent", "temporary", "default" }; diff --git a/dom/webidl/StyleRuleChangeEvent.webidl b/dom/webidl/StyleRuleChangeEvent.webidl new file mode 100644 index 0000000000..0b783366ba --- /dev/null +++ b/dom/webidl/StyleRuleChangeEvent.webidl @@ -0,0 +1,19 @@ +/* -*- 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/. + */ +interface CSSRule; + +[ChromeOnly, Constructor(DOMString type, optional StyleRuleChangeEventInit eventInitDict)] +interface StyleRuleChangeEvent : Event +{ + readonly attribute CSSStyleSheet? stylesheet; + readonly attribute CSSRule? rule; +}; + +dictionary StyleRuleChangeEventInit : EventInit +{ + CSSStyleSheet? stylesheet = null; + CSSRule? rule = null; +}; diff --git a/dom/webidl/StyleSheet.webidl b/dom/webidl/StyleSheet.webidl new file mode 100644 index 0000000000..71a8ccd8f4 --- /dev/null +++ b/dom/webidl/StyleSheet.webidl @@ -0,0 +1,29 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://dev.w3.org/csswg/cssom/ + */ + +interface CSSRule; + +interface StyleSheet { + [Constant] + readonly attribute DOMString type; + [Constant] + readonly attribute DOMString? href; + // Spec says "Node", but it can go null when the node gets a new + // sheet. That's also why it's not [Constant] + [Pure] + readonly attribute Node? ownerNode; + [Pure] + readonly attribute StyleSheet? parentStyleSheet; + [Pure] + readonly attribute DOMString? title; + [Constant] + readonly attribute MediaList media; + [Pure] + attribute boolean disabled; +}; diff --git a/dom/webidl/StyleSheetApplicableStateChangeEvent.webidl b/dom/webidl/StyleSheetApplicableStateChangeEvent.webidl new file mode 100644 index 0000000000..cb196569f5 --- /dev/null +++ b/dom/webidl/StyleSheetApplicableStateChangeEvent.webidl @@ -0,0 +1,18 @@ +/* -*- 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/. + */ + +[ChromeOnly, Constructor(DOMString type, optional StyleSheetApplicableStateChangeEventInit eventInitDict)] +interface StyleSheetApplicableStateChangeEvent : Event +{ + readonly attribute CSSStyleSheet? stylesheet; + readonly attribute boolean applicable; +}; + +dictionary StyleSheetApplicableStateChangeEventInit : EventInit +{ + CSSStyleSheet? stylesheet = null; + boolean applicable = false; +}; diff --git a/dom/webidl/StyleSheetChangeEvent.webidl b/dom/webidl/StyleSheetChangeEvent.webidl new file mode 100644 index 0000000000..9d04f67cce --- /dev/null +++ b/dom/webidl/StyleSheetChangeEvent.webidl @@ -0,0 +1,18 @@ +/* -*- 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/. + */ + +[ChromeOnly, Constructor(DOMString type, optional StyleSheetChangeEventInit eventInitDict)] +interface StyleSheetChangeEvent : Event +{ + readonly attribute CSSStyleSheet? stylesheet; + readonly attribute boolean documentSheet; +}; + +dictionary StyleSheetChangeEventInit : EventInit +{ + CSSStyleSheet? stylesheet = null; + boolean documentSheet = false; +}; diff --git a/dom/webidl/StyleSheetList.webidl b/dom/webidl/StyleSheetList.webidl new file mode 100644 index 0000000000..e6091ac296 --- /dev/null +++ b/dom/webidl/StyleSheetList.webidl @@ -0,0 +1,8 @@ +/* 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/. */ + +interface StyleSheetList { + readonly attribute unsigned long length; + getter StyleSheet? item(unsigned long index); +}; diff --git a/dom/webidl/SubtleCrypto.webidl b/dom/webidl/SubtleCrypto.webidl new file mode 100644 index 0000000000..328447ee7b --- /dev/null +++ b/dom/webidl/SubtleCrypto.webidl @@ -0,0 +1,232 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/WebCryptoAPI/ + */ + +typedef DOMString KeyType; +typedef DOMString KeyUsage; +typedef DOMString NamedCurve; +typedef Uint8Array BigInteger; + +/***** Algorithm dictionaries *****/ + +dictionary Algorithm { + required DOMString name; +}; + +dictionary AesCbcParams : Algorithm { + required BufferSource iv; +}; + +dictionary AesCtrParams : Algorithm { + required BufferSource counter; + [EnforceRange] required octet length; +}; + +dictionary AesGcmParams : Algorithm { + required BufferSource iv; + BufferSource additionalData; + [EnforceRange] octet tagLength; +}; + +dictionary HmacImportParams : Algorithm { + required AlgorithmIdentifier hash; +}; + +dictionary Pbkdf2Params : Algorithm { + required BufferSource salt; + [EnforceRange] required unsigned long iterations; + required AlgorithmIdentifier hash; +}; + +dictionary RsaHashedImportParams { + required AlgorithmIdentifier hash; +}; + +dictionary AesKeyGenParams : Algorithm { + [EnforceRange] required unsigned short length; +}; + +dictionary HmacKeyGenParams : Algorithm { + required AlgorithmIdentifier hash; + [EnforceRange] unsigned long length; +}; + +dictionary RsaHashedKeyGenParams : Algorithm { + [EnforceRange] required unsigned long modulusLength; + required BigInteger publicExponent; + required AlgorithmIdentifier hash; +}; + +dictionary RsaOaepParams : Algorithm { + BufferSource label; +}; + +dictionary RsaPssParams : Algorithm { + [EnforceRange] required unsigned long saltLength; +}; + +dictionary DhKeyGenParams : Algorithm { + required BigInteger prime; + required BigInteger generator; +}; + +dictionary EcKeyGenParams : Algorithm { + required NamedCurve namedCurve; +}; + +dictionary AesDerivedKeyParams : Algorithm { + [EnforceRange] required unsigned long length; +}; + +dictionary HmacDerivedKeyParams : HmacImportParams { + [EnforceRange] unsigned long length; +}; + +dictionary EcdhKeyDeriveParams : Algorithm { + required CryptoKey public; +}; + +dictionary DhKeyDeriveParams : Algorithm { + required CryptoKey public; +}; + +dictionary DhImportKeyParams : Algorithm { + required BigInteger prime; + required BigInteger generator; +}; + +dictionary EcdsaParams : Algorithm { + required AlgorithmIdentifier hash; +}; + +dictionary EcKeyImportParams : Algorithm { + NamedCurve namedCurve; +}; + +dictionary HkdfParams : Algorithm { + required AlgorithmIdentifier hash; + required BufferSource salt; + required BufferSource info; +}; + +/***** JWK *****/ + +dictionary RsaOtherPrimesInfo { + // The following fields are defined in Section 6.3.2.7 of JSON Web Algorithms + required DOMString r; + required DOMString d; + required DOMString t; +}; + +dictionary JsonWebKey { + // The following fields are defined in Section 3.1 of JSON Web Key + required DOMString kty; + DOMString use; + sequence<DOMString> key_ops; + DOMString alg; + + // The following fields are defined in JSON Web Key Parameters Registration + boolean ext; + + // The following fields are defined in Section 6 of JSON Web Algorithms + DOMString crv; + DOMString x; + DOMString y; + DOMString d; + DOMString n; + DOMString e; + DOMString p; + DOMString q; + DOMString dp; + DOMString dq; + DOMString qi; + sequence<RsaOtherPrimesInfo> oth; + DOMString k; +}; + + +/***** The Main API *****/ + +interface CryptoKey { + readonly attribute KeyType type; + readonly attribute boolean extractable; + [Cached, Constant, Throws] readonly attribute object algorithm; + [Cached, Constant, Frozen] readonly attribute sequence<KeyUsage> usages; +}; + +dictionary CryptoKeyPair { + required CryptoKey publicKey; + required CryptoKey privateKey; +}; + +typedef DOMString KeyFormat; +typedef (object or DOMString) AlgorithmIdentifier; + +[Exposed=(Window,Worker)] +interface SubtleCrypto { + [Throws] + Promise<any> encrypt(AlgorithmIdentifier algorithm, + CryptoKey key, + BufferSource data); + [Throws] + Promise<any> decrypt(AlgorithmIdentifier algorithm, + CryptoKey key, + BufferSource data); + [Throws] + Promise<any> sign(AlgorithmIdentifier algorithm, + CryptoKey key, + BufferSource data); + [Throws] + Promise<any> verify(AlgorithmIdentifier algorithm, + CryptoKey key, + BufferSource signature, + BufferSource data); + [Throws] + Promise<any> digest(AlgorithmIdentifier algorithm, + BufferSource data); + + [Throws] + Promise<any> generateKey(AlgorithmIdentifier algorithm, + boolean extractable, + sequence<KeyUsage> keyUsages ); + [Throws] + Promise<any> deriveKey(AlgorithmIdentifier algorithm, + CryptoKey baseKey, + AlgorithmIdentifier derivedKeyType, + boolean extractable, + sequence<KeyUsage> keyUsages ); + [Throws] + Promise<any> deriveBits(AlgorithmIdentifier algorithm, + CryptoKey baseKey, + unsigned long length); + + [Throws] + Promise<any> importKey(KeyFormat format, + object keyData, + AlgorithmIdentifier algorithm, + boolean extractable, + sequence<KeyUsage> keyUsages ); + [Throws] + Promise<any> exportKey(KeyFormat format, CryptoKey key); + + [Throws] + Promise<any> wrapKey(KeyFormat format, + CryptoKey key, + CryptoKey wrappingKey, + AlgorithmIdentifier wrapAlgorithm); + + [Throws] + Promise<any> unwrapKey(KeyFormat format, + BufferSource wrappedKey, + CryptoKey unwrappingKey, + AlgorithmIdentifier unwrapAlgorithm, + AlgorithmIdentifier unwrappedKeyAlgorithm, + boolean extractable, + sequence<KeyUsage> keyUsages ); +}; + diff --git a/dom/webidl/SystemUpdate.webidl b/dom/webidl/SystemUpdate.webidl new file mode 100644 index 0000000000..bd7857b4d1 --- /dev/null +++ b/dom/webidl/SystemUpdate.webidl @@ -0,0 +1,48 @@ +/* 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/. */ + +dictionary SystemUpdateProviderInfo { + DOMString name = ""; + DOMString uuid = ""; +}; + +dictionary SystemUpdatePackageInfo { + DOMString type = ""; + DOMString version = ""; + DOMString description = ""; + DOMTimeStamp buildDate = 0; + unsigned long long size = 0; +}; + +[JSImplementation="@mozilla.org/system-update-provider;1", + ChromeOnly, + Pref="dom.system_update.enabled"] +interface SystemUpdateProvider : EventTarget { + readonly attribute DOMString name; + readonly attribute DOMString uuid; + + attribute EventHandler onupdateavailable; + attribute EventHandler onprogress; + attribute EventHandler onupdateready; + attribute EventHandler onerror; + + void checkForUpdate(); + void startDownload(); + void stopDownload(); + void applyUpdate(); + boolean setParameter(DOMString name, DOMString value); + DOMString getParameter(DOMString name); +}; + +[NavigatorProperty="updateManager", + JSImplementation="@mozilla.org/system-update-manager;1", + ChromeOnly, + Pref="dom.system_update.enabled"] +interface SystemUpdateManager { + Promise<sequence<SystemUpdateProviderInfo>> getProviders(); + + Promise<SystemUpdateProvider> setActiveProvider(DOMString uuid); + + Promise<SystemUpdateProvider> getActiveProvider(); +}; diff --git a/dom/webidl/TCPServerSocket.webidl b/dom/webidl/TCPServerSocket.webidl new file mode 100644 index 0000000000..06d6689d2d --- /dev/null +++ b/dom/webidl/TCPServerSocket.webidl @@ -0,0 +1,42 @@ +/* -*- 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/. */ + +/** + * TCPServerSocket + * + * An interface to a server socket that can accept incoming connections for gaia apps. + */ + +dictionary ServerSocketOptions { + TCPSocketBinaryType binaryType = "string"; +}; + +[Constructor(unsigned short port, optional ServerSocketOptions options, optional unsigned short backlog = 0), + Func="mozilla::dom::TCPSocket::ShouldTCPSocketExist", + Exposed=(Window,System)] +interface TCPServerSocket : EventTarget { + /** + * The port of this server socket object. + */ + readonly attribute unsigned short localPort; + + /** + * The "connect" event is dispatched when a client connection is accepted. + * The event object will be a TCPServerSocketEvent containing a TCPSocket + * instance, which is used for communication between client and server. + */ + attribute EventHandler onconnect; + + /** + * The "error" event will be dispatched when a listening server socket is + * unexpectedly disconnected. + */ + attribute EventHandler onerror; + + /** + * Close the server socket. + */ + void close(); +}; diff --git a/dom/webidl/TCPServerSocketEvent.webidl b/dom/webidl/TCPServerSocketEvent.webidl new file mode 100644 index 0000000000..f133ae7812 --- /dev/null +++ b/dom/webidl/TCPServerSocketEvent.webidl @@ -0,0 +1,15 @@ +/* -*- 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/. */ + +[Constructor(DOMString type, optional TCPServerSocketEventInit eventInitDict), + Func="mozilla::dom::TCPSocket::ShouldTCPSocketExist", + Exposed=(Window,System)] +interface TCPServerSocketEvent : Event { + readonly attribute TCPSocket socket; +}; + +dictionary TCPServerSocketEventInit : EventInit { + TCPSocket? socket = null; +}; diff --git a/dom/webidl/TCPSocket.webidl b/dom/webidl/TCPSocket.webidl new file mode 100644 index 0000000000..42c6c2f738 --- /dev/null +++ b/dom/webidl/TCPSocket.webidl @@ -0,0 +1,210 @@ +/* -*- 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/. */ + +/** + * TCPSocket exposes a TCP client socket (no server sockets yet) + * to highly privileged apps. It provides a buffered, non-blocking + * interface for sending. For receiving, it uses an asynchronous, + * event handler based interface. + */ + +enum TCPSocketBinaryType { + "arraybuffer", + "string" +}; + +dictionary SocketOptions { + boolean useSecureTransport = false; + TCPSocketBinaryType binaryType = "string"; +}; + +enum TCPReadyState { + "connecting", + "open", + "closing", + "closed", +}; + +[NoInterfaceObject] +interface LegacyMozTCPSocket { + /** + * Legacy constructor for API compatibility. + */ + [Throws] + TCPSocket open(DOMString host, unsigned short port, optional SocketOptions options); + + [Throws] + TCPServerSocket listen(unsigned short port, optional ServerSocketOptions options, optional unsigned short backlog = 0); +}; + +[Constructor(DOMString host, unsigned short port, optional SocketOptions options), + Func="mozilla::dom::TCPSocket::ShouldTCPSocketExist", + Exposed=(Window,System)] +interface TCPSocket : EventTarget { + /** + * Upgrade an insecure connection to use TLS. Throws if the ready state is not OPEN. + */ + [Throws] void upgradeToSecure(); + + /** + * The UTF16 host of this socket object. + */ + readonly attribute USVString host; + + /** + * The port of this socket object. + */ + readonly attribute unsigned short port; + + /** + * True if this socket object is an SSL socket. + */ + readonly attribute boolean ssl; + + /** + * The number of bytes which have previously been buffered by calls to + * send on this socket. + */ + readonly attribute unsigned long long bufferedAmount; + + /** + * Pause reading incoming data and invocations of the ondata handler until + * resume is called. Can be called multiple times without resuming. + */ + void suspend(); + + /** + * Resume reading incoming data and invoking ondata as usual. There must be + * an equal number of resume as suspends that took place. Throws if the + * socket is not suspended. + */ + [Throws] + void resume(); + + /** + * Close the socket. + */ + void close(); + + /** + * Close the socket immediately without waiting for unsent data. + */ + [ChromeOnly] void closeImmediately(); + + /** + * Write data to the socket. + * + * @param data The data to write to the socket. + * + * @return Send returns true or false as a hint to the caller that + * they may either continue sending more data immediately, or + * may want to wait until the other side has read some of the + * data which has already been written to the socket before + * buffering more. If send returns true, then less than 64k + * has been buffered and it's safe to immediately write more. + * If send returns false, then more than 64k has been buffered, + * and the caller may wish to wait until the ondrain event + * handler has been called before buffering more data by more + * calls to send. + * + * @throws Throws if the ready state is not OPEN. + */ + [Throws] + boolean send(ByteString data); + + /** + * Write data to the socket. + * + * @param data The data to write to the socket. + * @param byteOffset The offset within the data from which to begin writing. + * @param byteLength The number of bytes to write. + * Defaults to the byte length of the ArrayBuffer if not present, + * and clamped to (length - byteOffset). + * + * @return Send returns true or false as a hint to the caller that + * they may either continue sending more data immediately, or + * may want to wait until the other side has read some of the + * data which has already been written to the socket before + * buffering more. If send returns true, then less than 64k + * has been buffered and it's safe to immediately write more. + * If send returns false, then more than 64k has been buffered, + * and the caller may wish to wait until the ondrain event + * handler has been called before buffering more data by more + * calls to send. + * + * @throws Throws if the ready state is not OPEN. + */ + [Throws] + boolean send(ArrayBuffer data, optional unsigned long byteOffset = 0, optional unsigned long byteLength); + + /** + * The readyState attribute indicates which state the socket is currently + * in. + */ + readonly attribute TCPReadyState readyState; + + /** + * The binaryType attribute indicates which mode this socket uses for + * sending and receiving data. If the binaryType: "arraybuffer" option + * was passed to the open method that created this socket, binaryType + * will be "arraybuffer". Otherwise, it will be "string". + */ + readonly attribute TCPSocketBinaryType binaryType; + + /** + * The "open" event is dispatched when the connection to the server + * has been established. If the connection is refused, the "error" event + * will be dispatched, instead. + */ + attribute EventHandler onopen; + + /** + * After send has buffered more than 64k of data, it returns false to + * indicate that the client should pause before sending more data, to + * avoid accumulating large buffers. This is only advisory, and the client + * is free to ignore it and buffer as much data as desired, but if reducing + * the size of buffers is important (especially for a streaming application) + * the "drain" event will be dispatched once the previously-buffered data has + * been written to the network, at which point the client can resume calling + * send again. + */ + attribute EventHandler ondrain; + + /** + * The "data" event will be dispatched repeatedly and asynchronously after + * "open" is dispatched, every time some data was available from the server + * and was read. The event object will be a TCPSocketEvent; if the "arraybuffer" + * binaryType was passed to the constructor, the data attribute of the event + * object will be an ArrayBuffer. If not, it will be a normal JavaScript string, + * truncated at the first null byte found in the payload and the remainder + * interpreted as ASCII bytes. + * + * At any time, the client may choose to pause reading and receiving "data" + * events by calling the socket's suspend() method. Further "data" events + * will be paused until resume() is called. + */ + attribute EventHandler ondata; + + /** + * The "error" event will be dispatched when there is an error. The event + * object will be a TCPSocketErrorEvent. + * + * If an "error" event is dispatched before an "open" one, the connection + * was refused, and the "close" event will not be dispatched. If an "error" + * event is dispatched after an "open" event, the connection was lost, + * and a "close" event will be dispatched subsequently. + */ + attribute EventHandler onerror; + + /** + * The "close" event is dispatched once the underlying network socket + * has been closed, either by the server, or by the client calling + * close. + * + * If the "error" event was not dispatched before "close", then one of + * the sides cleanly closed the connection. + */ + attribute EventHandler onclose; +}; diff --git a/dom/webidl/TCPSocketErrorEvent.webidl b/dom/webidl/TCPSocketErrorEvent.webidl new file mode 100644 index 0000000000..22db1b768c --- /dev/null +++ b/dom/webidl/TCPSocketErrorEvent.webidl @@ -0,0 +1,24 @@ +/* -*- 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/. */ + +/* Dispatched as part of the "error" event in the following situations: +* - if there's an error detected when the TCPSocket closes +* - if there's an internal error while sending data +* - if there's an error connecting to the host +*/ + +[Constructor(DOMString type, optional TCPSocketErrorEventInit eventInitDict), + Func="mozilla::dom::TCPSocket::ShouldTCPSocketExist", + Exposed=(Window,System)] +interface TCPSocketErrorEvent : Event { + readonly attribute DOMString name; + readonly attribute DOMString message; +}; + +dictionary TCPSocketErrorEventInit : EventInit +{ + DOMString name = ""; + DOMString message = ""; +}; diff --git a/dom/webidl/TCPSocketEvent.webidl b/dom/webidl/TCPSocketEvent.webidl new file mode 100644 index 0000000000..6a3d6851df --- /dev/null +++ b/dom/webidl/TCPSocketEvent.webidl @@ -0,0 +1,30 @@ +/* -*- 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/. */ + +/** + * TCPSocketEvent is the event dispatched for all of the events described by TCPSocket, + * except the "error" event. It contains the socket that was associated with the event, + * the type of event, and the data associated with the event if the event is a "data" event. + */ + +[Constructor(DOMString type, optional TCPSocketEventInit eventInitDict), + Func="mozilla::dom::TCPSocket::ShouldTCPSocketExist", + Exposed=(Window,System)] +interface TCPSocketEvent : Event { + /** + * If the event is a "data" event, data will be the bytes read from the network; + * if the binaryType of the socket was "arraybuffer", this value will be of type + * ArrayBuffer, otherwise, it will be a ByteString. + * + * For other events, data will be an empty string. + */ + //TODO: make this (ArrayBuffer or ByteString) after sorting out the rooting required. (bug 1121634) + readonly attribute any data; +}; + +dictionary TCPSocketEventInit : EventInit { + //TODO: make this (ArrayBuffer or ByteString) after sorting out the rooting required. (bug 1121634) + any data = null; +}; diff --git a/dom/webidl/TestFunctions.webidl b/dom/webidl/TestFunctions.webidl new file mode 100644 index 0000000000..c0db0b644f --- /dev/null +++ b/dom/webidl/TestFunctions.webidl @@ -0,0 +1,41 @@ +/* -*- 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/. + */ + +// A dumping ground for random testing functions + +callback PromiseReturner = Promise<any>(); + +[Pref="dom.expose_test_interfaces", + Constructor] +interface TestFunctions { + [Throws] + static void throwUncatchableException(); + + // Simply returns its argument. Can be used to test Promise + // argument processing behavior. + static Promise<any> passThroughPromise(Promise<any> arg); + + // Returns whatever Promise the given PromiseReturner returned. + [Throws] + static Promise<any> passThroughCallbackPromise(PromiseReturner callback); + + // Some basic tests for string binding round-tripping behavior. + void setStringData(DOMString arg); + + // Get the string data, using an nsAString argument on the C++ side. + // This will just use Assign/operator=, whatever that does. + DOMString getStringDataAsAString(); + + // Get the string data, but only "length" chars of it, using an + // nsAString argument on the C++ side. This will always copy on the + // C++ side. + DOMString getStringDataAsAString(unsigned long length); + + // Get the string data, but only "length" chars of it, using a + // DOMString argument on the C++ side and trying to hand it + // stringbuffers. If length not passed, use our full length. + DOMString getStringDataAsDOMString(optional unsigned long length); +}; diff --git a/dom/webidl/TestInterfaceJS.webidl b/dom/webidl/TestInterfaceJS.webidl new file mode 100644 index 0000000000..1ca629c39e --- /dev/null +++ b/dom/webidl/TestInterfaceJS.webidl @@ -0,0 +1,84 @@ +/* -*- 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/. + */ + +dictionary TestInterfaceJSUnionableDictionary { + object objectMember; + any anyMember; +}; + +[JSImplementation="@mozilla.org/dom/test-interface-js;1", + Pref="dom.expose_test_interfaces", + Constructor(optional any anyArg, optional object objectArg, optional TestInterfaceJSDictionary dictionaryArg)] +interface TestInterfaceJS : EventTarget { + readonly attribute any anyArg; + readonly attribute object objectArg; + [Cached, Pure] readonly attribute TestInterfaceJSDictionary dictionaryArg; + attribute any anyAttr; + attribute object objectAttr; + [Cached, Pure] attribute TestInterfaceJSDictionary dictionaryAttr; + any pingPongAny(any arg); + object pingPongObject(object obj); + any pingPongObjectOrString((object or DOMString) objOrString); + TestInterfaceJSDictionary pingPongDictionary(optional TestInterfaceJSDictionary dict); + long pingPongDictionaryOrLong(optional (TestInterfaceJSUnionableDictionary or long) dictOrLong); + DOMString pingPongMap(MozMap<any> map); + long objectSequenceLength(sequence<object> seq); + long anySequenceLength(sequence<any> seq); + + // For testing bug 968335. + DOMString getCallerPrincipal(); + + DOMString convertSVS(USVString svs); + + (TestInterfaceJS or long) pingPongUnion((TestInterfaceJS or long) something); + (DOMString or TestInterfaceJS?) pingPongUnionContainingNull((TestInterfaceJS? or DOMString) something); + (TestInterfaceJS or long)? pingPongNullableUnion((TestInterfaceJS or long)? something); + (Location or TestInterfaceJS) returnBadUnion(); + + [Cached, Pure] + readonly attribute short cachedAttr; + void setCachedAttr(short n); + void clearCachedAttrCache(); + + // Test for sequence overloading and union behavior + void testSequenceOverload(sequence<DOMString> arg); + void testSequenceOverload(DOMString arg); + + void testSequenceUnion((sequence<DOMString> or DOMString) arg); + + // Tests for exception-throwing behavior + [Throws] + void testThrowError(); + + [Throws] + void testThrowDOMException(); + + [Throws] + void testThrowTypeError(); + + [Throws] + void testThrowCallbackError(Function callback); + + [Throws] + void testThrowXraySelfHosted(); + + [Throws] + void testThrowSelfHosted(); + + // Tests for promise-rejection behavior + Promise<void> testPromiseWithThrowingChromePromiseInit(); + Promise<void> testPromiseWithThrowingContentPromiseInit(PromiseInit func); + Promise<void> testPromiseWithDOMExceptionThrowingPromiseInit(); + Promise<void> testPromiseWithThrowingChromeThenFunction(); + Promise<void> testPromiseWithThrowingContentThenFunction(AnyCallback func); + Promise<void> testPromiseWithDOMExceptionThrowingThenFunction(); + Promise<void> testPromiseWithThrowingChromeThenable(); + Promise<void> testPromiseWithThrowingContentThenable(object thenable); + Promise<void> testPromiseWithDOMExceptionThrowingThenable(); + + // Event handler tests + attribute EventHandler onsomething; +}; diff --git a/dom/webidl/TestInterfaceJSDictionaries.webidl b/dom/webidl/TestInterfaceJSDictionaries.webidl new file mode 100644 index 0000000000..366864a8d4 --- /dev/null +++ b/dom/webidl/TestInterfaceJSDictionaries.webidl @@ -0,0 +1,27 @@ +/* -*- 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/. + */ + +// +// These dictionaries are in a separate WebIDL file to avoid circular include +// problems. One of the dictionary includes a union as a member, so that +// dictionary's header needs to include UnionTypes.h. But the API in +// TestInterfaceJS also declares a union of dictionaries, so _that_ +// dictionary's header needs to be included _by_ UnionTypes.h. The solution +// is to separate those two dictionaries into separate header files. +// + +dictionary TestInterfaceJSDictionary2 { + object innerObject; +}; + +dictionary TestInterfaceJSDictionary { + TestInterfaceJSDictionary2 innerDictionary; + object objectMember; + any anyMember; + (object or DOMString) objectOrStringMember; + sequence<any> anySequenceMember; +}; + diff --git a/dom/webidl/TestInterfaceJSMaplikeSetlikeIterable.webidl b/dom/webidl/TestInterfaceJSMaplikeSetlikeIterable.webidl new file mode 100644 index 0000000000..9a953784cf --- /dev/null +++ b/dom/webidl/TestInterfaceJSMaplikeSetlikeIterable.webidl @@ -0,0 +1,68 @@ +/* -*- 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/. + */ + +[Constructor(), + Pref="dom.expose_test_interfaces"] +interface TestInterfaceMaplike { + maplike<DOMString, long>; + void setInternal(DOMString aKey, long aValue); + void clearInternal(); + boolean deleteInternal(DOMString aKey); + boolean hasInternal(DOMString aKey); +}; + +[Constructor(), + Pref="dom.expose_test_interfaces"] +interface TestInterfaceMaplikeObject { + readonly maplike<DOMString, TestInterfaceMaplike>; + void setInternal(DOMString aKey); + void clearInternal(); + boolean deleteInternal(DOMString aKey); + boolean hasInternal(DOMString aKey); +}; + +[Pref="dom.expose_test_interfaces", + JSImplementation="@mozilla.org/dom/test-interface-js-maplike;1", + Constructor()] +interface TestInterfaceJSMaplike { + readonly maplike<DOMString, long>; + void setInternal(DOMString aKey, long aValue); + void clearInternal(); + boolean deleteInternal(DOMString aKey); +}; + +[Constructor(), + Pref="dom.expose_test_interfaces"] +interface TestInterfaceSetlike { + setlike<DOMString>; +}; + +[Constructor(), + Pref="dom.expose_test_interfaces"] +interface TestInterfaceSetlikeNode { + setlike<Node>; +}; + +[Constructor(), + Pref="dom.expose_test_interfaces"] +interface TestInterfaceIterableSingle { + iterable<long>; + getter long(unsigned long index); + readonly attribute unsigned long length; +}; + +[Constructor(), + Pref="dom.expose_test_interfaces"] +interface TestInterfaceIterableDouble { + iterable<DOMString, DOMString>; +}; + +[Constructor(), + Pref="dom.expose_test_interfaces"] +interface TestInterfaceIterableDoubleUnion { + iterable<DOMString, (DOMString or long)>; +}; + diff --git a/dom/webidl/Text.webidl b/dom/webidl/Text.webidl new file mode 100644 index 0000000000..dcd25cec3a --- /dev/null +++ b/dom/webidl/Text.webidl @@ -0,0 +1,21 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/2012/WD-dom-20120105/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +[Constructor(optional DOMString data = "")] +interface Text : CharacterData { + [Throws] + Text splitText(unsigned long offset); + [Throws] + readonly attribute DOMString wholeText; +}; + +Text implements GeometryUtils; diff --git a/dom/webidl/TextClause.webidl b/dom/webidl/TextClause.webidl new file mode 100644 index 0000000000..2baeeb2d78 --- /dev/null +++ b/dom/webidl/TextClause.webidl @@ -0,0 +1,21 @@ +/* -*- 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/. + */ + +[ChromeOnly] +interface TextClause +{ + // The start offset of TextClause + readonly attribute long startOffset; + + // The end offset of TextClause + readonly attribute long endOffset; + + // If the TextClause is Caret or not + readonly attribute boolean isCaret; + + // If the TextClause is TargetClause or not + readonly attribute boolean isTargetClause; +}; diff --git a/dom/webidl/TextDecoder.webidl b/dom/webidl/TextDecoder.webidl new file mode 100644 index 0000000000..3fff4a2553 --- /dev/null +++ b/dom/webidl/TextDecoder.webidl @@ -0,0 +1,31 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://encoding.spec.whatwg.org/#interface-textdecoder + * + * Any copyright is dedicated to the Public Domain. + * http://creativecommons.org/publicdomain/zero/1.0/ + */ + +[Constructor(optional DOMString label = "utf-8", optional TextDecoderOptions options), + Exposed=(Window,Worker,System)] +interface TextDecoder { + [Constant] + readonly attribute DOMString encoding; + [Constant] + readonly attribute boolean fatal; + [Throws] + USVString decode(optional BufferSource input, optional TextDecodeOptions options); +}; + +dictionary TextDecoderOptions { + boolean fatal = false; +}; + +dictionary TextDecodeOptions { + boolean stream = false; +}; + diff --git a/dom/webidl/TextEncoder.webidl b/dom/webidl/TextEncoder.webidl new file mode 100644 index 0000000000..9269b572d4 --- /dev/null +++ b/dom/webidl/TextEncoder.webidl @@ -0,0 +1,20 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://encoding.spec.whatwg.org/#interface-textencoder + * + * Any copyright is dedicated to the Public Domain. + * http://creativecommons.org/publicdomain/zero/1.0/ + */ + +[Constructor, + Exposed=(Window,Worker,System)] +interface TextEncoder { + [Constant] + readonly attribute DOMString encoding; + [NewObject] + Uint8Array encode(optional USVString input = ""); +}; diff --git a/dom/webidl/TextTrack.webidl b/dom/webidl/TextTrack.webidl new file mode 100644 index 0000000000..442a1667f1 --- /dev/null +++ b/dom/webidl/TextTrack.webidl @@ -0,0 +1,48 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.whatwg.org/specs/web-apps/current-work/#texttrack + */ + +enum TextTrackKind { + "subtitles", + "captions", + "descriptions", + "chapters", + "metadata" +}; + +enum TextTrackMode { + "disabled", + "hidden", + "showing" +}; + +interface TextTrack : EventTarget { + readonly attribute TextTrackKind kind; + readonly attribute DOMString label; + readonly attribute DOMString language; + + readonly attribute DOMString id; + readonly attribute DOMString inBandMetadataTrackDispatchType; + + attribute TextTrackMode mode; + + readonly attribute TextTrackCueList? cues; + readonly attribute TextTrackCueList? activeCues; + + void addCue(VTTCue cue); + [Throws] + void removeCue(VTTCue cue); + + attribute EventHandler oncuechange; +}; + +// Mozilla Extensions +partial interface TextTrack { + [ChromeOnly] + readonly attribute TextTrackList? textTrackList; +}; diff --git a/dom/webidl/TextTrackCue.webidl b/dom/webidl/TextTrackCue.webidl new file mode 100644 index 0000000000..2dc242dd16 --- /dev/null +++ b/dom/webidl/TextTrackCue.webidl @@ -0,0 +1,20 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * https://html.spec.whatwg.org/#texttrackcue + */ + +interface TextTrackCue : EventTarget { + readonly attribute TextTrack? track; + + attribute DOMString id; + attribute double startTime; + attribute double endTime; + attribute boolean pauseOnExit; + + attribute EventHandler onenter; + attribute EventHandler onexit; +}; diff --git a/dom/webidl/TextTrackCueList.webidl b/dom/webidl/TextTrackCueList.webidl new file mode 100644 index 0000000000..0854004bdb --- /dev/null +++ b/dom/webidl/TextTrackCueList.webidl @@ -0,0 +1,14 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.whatwg.org/specs/web-apps/current-work/#texttrackcuelist + */ + +interface TextTrackCueList { + readonly attribute unsigned long length; + getter VTTCue (unsigned long index); + VTTCue? getCueById(DOMString id); +}; diff --git a/dom/webidl/TextTrackList.webidl b/dom/webidl/TextTrackList.webidl new file mode 100644 index 0000000000..1150871e3a --- /dev/null +++ b/dom/webidl/TextTrackList.webidl @@ -0,0 +1,24 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.whatwg.org/specs/web-apps/current-work/#texttracklist + */ + +interface TextTrackList : EventTarget { + readonly attribute unsigned long length; + getter TextTrack (unsigned long index); + TextTrack? getTrackById(DOMString id); + + attribute EventHandler onchange; + attribute EventHandler onaddtrack; + attribute EventHandler onremovetrack; +}; + +// Mozilla extensions +partial interface TextTrackList { + [ChromeOnly] + readonly attribute HTMLMediaElement? mediaElement; +}; diff --git a/dom/webidl/ThreadSafeChromeUtils.webidl b/dom/webidl/ThreadSafeChromeUtils.webidl new file mode 100644 index 0000000000..8d0f21734c --- /dev/null +++ b/dom/webidl/ThreadSafeChromeUtils.webidl @@ -0,0 +1,140 @@ +/* -*- 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/. + */ + +/** + * A collection of **thread-safe** static utility methods that are only exposed + * to Chrome. This interface is exposed in workers, while ChromeUtils is not. + */ +[ChromeOnly, Exposed=(Window,System,Worker)] +interface ThreadSafeChromeUtils { + /** + * Serialize a snapshot of the heap graph, as seen by |JS::ubi::Node| and + * restricted by |boundaries|, and write it to the provided file path. + * + * @param boundaries The portion of the heap graph to write. + * + * @returns The path to the file the heap snapshot was written + * to. This is guaranteed to be within the temp + * directory and its file name will match the regexp + * `\d+(\-\d+)?\.fxsnapshot`. + */ + [Throws] + static DOMString saveHeapSnapshot(optional HeapSnapshotBoundaries boundaries); + + /** + * Deserialize a core dump into a HeapSnapshot. + * + * @param filePath The file path to read the heap snapshot from. + */ + [Throws, NewObject] + static HeapSnapshot readHeapSnapshot(DOMString filePath); + + /** + * Return the keys in a weak map. This operation is + * non-deterministic because it is affected by the scheduling of the + * garbage collector and the cycle collector. + * + * @param aMap weak map or other JavaScript value + * @returns If aMap is a weak map object, return the keys of the weak + * map as an array. Otherwise, return undefined. + */ + [Throws, NewObject] + static any nondeterministicGetWeakMapKeys(any map); + + /** + * Return the keys in a weak set. This operation is + * non-deterministic because it is affected by the scheduling of the + * garbage collector and the cycle collector. + * + * @param aSet weak set or other JavaScript value + * @returns If aSet is a weak set object, return the keys of the weak + * set as an array. Otherwise, return undefined. + */ + [Throws, NewObject] + static any nondeterministicGetWeakSetKeys(any aSet); + + /** + * Converts a buffer to a Base64 URL-encoded string per RFC 4648. + * + * @param source The buffer to encode. + * @param options Additional encoding options. + * @returns The encoded string. + */ + [Throws] + static ByteString base64URLEncode(BufferSource source, + Base64URLEncodeOptions options); + + /** + * Decodes a Base64 URL-encoded string per RFC 4648. + * + * @param string The string to decode. + * @param options Additional decoding options. + * @returns The decoded buffer. + */ + [Throws, NewObject] + static ArrayBuffer base64URLDecode(ByteString string, + Base64URLDecodeOptions options); +}; + +/** + * A JS object whose properties specify what portion of the heap graph to + * write. The recognized properties are: + * + * * globals: [ global, ... ] + * Dump only nodes that either: + * - belong in the compartment of one of the given globals; + * - belong to no compartment, but do belong to a Zone that contains one of + * the given globals; + * - are referred to directly by one of the last two kinds of nodes; or + * - is the fictional root node, described below. + * + * * debugger: Debugger object + * Like "globals", but use the Debugger's debuggees as the globals. + * + * * runtime: true + * Dump the entire heap graph, starting with the JSRuntime's roots. + * + * One, and only one, of these properties must exist on the boundaries object. + * + * The root of the dumped graph is a fictional node whose ubi::Node type name is + * "CoreDumpRoot". If we are dumping the entire ubi::Node graph, this root node + * has an edge for each of the JSRuntime's roots. If we are dumping a selected + * set of globals, the root has an edge to each global, and an edge for each + * incoming JS reference to the selected Zones. + */ +dictionary HeapSnapshotBoundaries { + sequence<object> globals; + object debugger; + boolean runtime; +}; + +dictionary Base64URLEncodeOptions { + /** Specifies whether the output should be padded with "=" characters. */ + required boolean pad; +}; + +enum Base64URLDecodePadding { + /** + * Fails decoding if the input is unpadded. RFC 4648, section 3.2 requires + * padding, unless the referring specification prohibits it. + */ + "require", + + /** Tolerates padded and unpadded input. */ + "ignore", + + /** + * Fails decoding if the input is padded. This follows the strict base64url + * variant used in JWS (RFC 7515, Appendix C) and HTTP Encrypted + * Content-Encoding (draft-ietf-httpbis-encryption-encoding-01). + */ + "reject" +}; + +dictionary Base64URLDecodeOptions { + /** Specifies the padding mode for decoding the input. */ + required Base64URLDecodePadding padding; +}; diff --git a/dom/webidl/TimeEvent.webidl b/dom/webidl/TimeEvent.webidl new file mode 100644 index 0000000000..40e7a0beb6 --- /dev/null +++ b/dom/webidl/TimeEvent.webidl @@ -0,0 +1,20 @@ +/* -*- 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/. + * + * For more information on this interface please see + * http://dev.w3.org/2006/webapi/DOM-Level-3-Events/html/DOM3-Events.html + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface TimeEvent : Event +{ + readonly attribute long detail; + readonly attribute WindowProxy? view; + void initTimeEvent(DOMString aType, + Window? aView, + long aDetail); +}; diff --git a/dom/webidl/TimeRanges.webidl b/dom/webidl/TimeRanges.webidl new file mode 100644 index 0000000000..9f9b5270b1 --- /dev/null +++ b/dom/webidl/TimeRanges.webidl @@ -0,0 +1,22 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.whatwg.org/specs/web-apps/current-work/#timeranges + * + * © Copyright 2004-2011 Apple Computer, Inc., Mozilla Foundation, and + * Opera Software ASA. You are granted a license to use, reproduce + * and create derivative works of this document. + */ + +interface TimeRanges { + readonly attribute unsigned long length; + + [Throws] + double start(unsigned long index); + + [Throws] + double end(unsigned long index); +}; diff --git a/dom/webidl/Touch.webidl b/dom/webidl/Touch.webidl new file mode 100644 index 0000000000..cefb446748 --- /dev/null +++ b/dom/webidl/Touch.webidl @@ -0,0 +1,43 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://dvcs.w3.org/hg/webevents/raw-file/default/touchevents.html + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +dictionary TouchInit { + required long identifier; + required EventTarget target; + long clientX = 0; + long clientY = 0; + long screenX = 0; + long screenY = 0; + long pageX = 0; + long pageY = 0; + float radiusX = 0; + float radiusY = 0; + float rotationAngle = 0; + float force = 0; +}; + +[Constructor(TouchInit touchInitDict), + Func="mozilla::dom::Touch::PrefEnabled"] +interface Touch { + readonly attribute long identifier; + readonly attribute EventTarget? target; + readonly attribute long screenX; + readonly attribute long screenY; + readonly attribute long clientX; + readonly attribute long clientY; + readonly attribute long pageX; + readonly attribute long pageY; + readonly attribute long radiusX; + readonly attribute long radiusY; + readonly attribute float rotationAngle; + readonly attribute float force; +}; diff --git a/dom/webidl/TouchEvent.webidl b/dom/webidl/TouchEvent.webidl new file mode 100644 index 0000000000..d206fe0fbe --- /dev/null +++ b/dom/webidl/TouchEvent.webidl @@ -0,0 +1,37 @@ +/* -*- 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/. + */ + +dictionary TouchEventInit : EventModifierInit { + sequence<Touch> touches = []; + sequence<Touch> targetTouches = []; + sequence<Touch> changedTouches = []; +}; + +[Constructor(DOMString type, optional TouchEventInit eventInitDict), + Func="mozilla::dom::TouchEvent::PrefEnabled"] +interface TouchEvent : UIEvent { + readonly attribute TouchList touches; + readonly attribute TouchList targetTouches; + readonly attribute TouchList changedTouches; + + readonly attribute boolean altKey; + readonly attribute boolean metaKey; + readonly attribute boolean ctrlKey; + readonly attribute boolean shiftKey; + + void initTouchEvent(DOMString type, + boolean canBubble, + boolean cancelable, + Window? view, + long detail, + boolean ctrlKey, + boolean altKey, + boolean shiftKey, + boolean metaKey, + TouchList? touches, + TouchList? targetTouches, + TouchList? changedTouches); +}; diff --git a/dom/webidl/TouchList.webidl b/dom/webidl/TouchList.webidl new file mode 100644 index 0000000000..562a7fb4fc --- /dev/null +++ b/dom/webidl/TouchList.webidl @@ -0,0 +1,18 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * https://dvcs.w3.org/hg/webevents/raw-file/v1/touchevents.html + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +[Func="mozilla::dom::TouchList::PrefEnabled"] +interface TouchList { + [Pure] + readonly attribute unsigned long length; + getter Touch? item(unsigned long index); +}; diff --git a/dom/webidl/TrackEvent.webidl b/dom/webidl/TrackEvent.webidl new file mode 100644 index 0000000000..2daa2f4575 --- /dev/null +++ b/dom/webidl/TrackEvent.webidl @@ -0,0 +1,19 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.whatwg.org/specs/web-apps/current-work/#trackevent + */ + +[Constructor(DOMString type, optional TrackEventInit eventInitDict)] +interface TrackEvent : Event +{ + readonly attribute (VideoTrack or AudioTrack or TextTrack)? track; +}; + +dictionary TrackEventInit : EventInit +{ + (VideoTrack or AudioTrack or TextTrack)? track = null; +}; diff --git a/dom/webidl/TransitionEvent.webidl b/dom/webidl/TransitionEvent.webidl new file mode 100644 index 0000000000..d4476dffaf --- /dev/null +++ b/dom/webidl/TransitionEvent.webidl @@ -0,0 +1,25 @@ +/* -*- 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/. + * + * Transition events are defined in: + * http://www.w3.org/TR/css3-transitions/#transition-events- + * http://dev.w3.org/csswg/css3-transitions/#transition-events- + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +[Constructor(DOMString type, optional TransitionEventInit eventInitDict)] +interface TransitionEvent : Event { + readonly attribute DOMString propertyName; + readonly attribute float elapsedTime; + readonly attribute DOMString pseudoElement; +}; + +dictionary TransitionEventInit : EventInit { + DOMString propertyName = ""; + float elapsedTime = 0; + DOMString pseudoElement = ""; +}; diff --git a/dom/webidl/TreeBoxObject.webidl b/dom/webidl/TreeBoxObject.webidl new file mode 100644 index 0000000000..8ca0a57138 --- /dev/null +++ b/dom/webidl/TreeBoxObject.webidl @@ -0,0 +1,207 @@ + +/* -*- 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/. + */ + +interface MozTreeView; +interface nsIScriptableRegion; + +dictionary TreeCellInfo { + long row = 0; + TreeColumn? col = null; + DOMString childElt = ""; +}; + +[NoInterfaceObject] +interface TreeBoxObject : BoxObject { + + /** + * Obtain the columns. + */ + readonly attribute TreeColumns? columns; + + /** + * The view that backs the tree and that supplies it with its data. + * It is dynamically settable, either using a view attribute on the + * tree tag or by setting this attribute to a new value. + */ + [SetterThrows] + attribute MozTreeView? view; + + /** + * Whether or not we are currently focused. + */ + attribute boolean focused; + + /** + * Obtain the treebody content node + */ + readonly attribute Element? treeBody; + + /** + * Obtain the height of a row. + */ + readonly attribute long rowHeight; + + /** + * Obtain the width of a row. + */ + readonly attribute long rowWidth; + + /** + * Get the pixel position of the horizontal scrollbar. + */ + readonly attribute long horizontalPosition; + + /** + * Return the region for the visible parts of the selection, in device pixels + */ + readonly attribute nsIScriptableRegion selectionRegion; + + /** + * Get the index of the first visible row. + */ + long getFirstVisibleRow(); + + /** + * Get the index of the last visible row. + */ + long getLastVisibleRow(); + + /** + * Gets the number of possible visible rows. + */ + long getPageLength(); + + /** + * Ensures that a row at a given index is visible. + */ + void ensureRowIsVisible(long index); + + /** + * Ensures that a given cell in the tree is visible. + */ + void ensureCellIsVisible(long row, TreeColumn? col); + + /** + * Scrolls such that the row at index is at the top of the visible view. + */ + void scrollToRow(long index); + + /** + * Scroll the tree up or down by numLines lines. Positive + * values move down in the tree. Prevents scrolling off the + * end of the tree. + */ + void scrollByLines(long numLines); + + /** + * Scroll the tree up or down by numPages pages. A page + * is considered to be the amount displayed by the tree. + * Positive values move down in the tree. Prevents scrolling + * off the end of the tree. + */ + void scrollByPages(long numPages); + + /** + * Scrolls such that a given cell is visible (if possible) + * at the top left corner of the visible view. + */ + void scrollToCell(long row, TreeColumn? col); + + /** + * Scrolls horizontally so that the specified column is + * at the left of the view (if possible). + */ + void scrollToColumn(TreeColumn? col); + + /** + * Scroll to a specific horizontal pixel position. + */ + void scrollToHorizontalPosition(long horizontalPosition); + + /** + * Invalidation methods for fine-grained painting control. + */ + void invalidate(); + void invalidateColumn(TreeColumn? col); + void invalidateRow(long index); + void invalidateCell(long row, TreeColumn? col); + void invalidateRange(long startIndex, long endIndex); + void invalidateColumnRange(long startIndex, long endIndex, TreeColumn? col); + + /** + * A hit test that can tell you what row the mouse is over. + * returns -1 for invalid mouse coordinates. + * + * The coordinate system is the client coordinate system for the + * document this boxObject lives in, and the units are CSS pixels. + */ + long getRowAt(long x, long y); + + /** + * A hit test that can tell you what cell the mouse is over. + * TreeCellInfo.row is the row index hit, returns -1 for invalid mouse + * coordinates. TreeCellInfo.col is the column hit. + * TreeCellInfo.childElt is the pseudoelement hit: this can have values of + * "cell", "twisty", "image", and "text". + * + * The coordinate system is the client coordinate system for the + * document this boxObject lives in, and the units are CSS pixels. + */ + [Throws] + TreeCellInfo getCellAt(long x, long y); + + /** + * DEPRECATED: please use above version + */ + [Throws] + void getCellAt(long x, long y, object row, object column, object childElt); + + /** + * Find the coordinates of an element within a specific cell. + */ + [Throws] + DOMRect? getCoordsForCellItem(long row, TreeColumn col, DOMString element); + + /** + * DEPRECATED: Please use above version + */ + [Throws] + void getCoordsForCellItem(long row, TreeColumn col, DOMString element, + object x, object y, object width, object height); + + /** + * Determine if the text of a cell is being cropped or not. + */ + [Throws] + boolean isCellCropped(long row, TreeColumn? col); + + /** + * The view is responsible for calling these notification methods when + * rows are added or removed. Index is the position at which the new + * rows were added or at which rows were removed. For + * non-contiguous additions/removals, this method should be called multiple times. + */ + void rowCountChanged(long index, long count); + + /** + * Notify the tree that the view is about to perform a batch + * update, that is, add, remove or invalidate several rows at once. + * This must be followed by calling endUpdateBatch(), otherwise the tree + * will get out of sync. + */ + void beginUpdateBatch(); + + /** + * Notify the tree that the view has completed a batch update. + */ + void endUpdateBatch(); + + /** + * Called on a theme switch to flush out the tree's style and image caches. + */ + void clearStyleAndImageCaches(); +}; diff --git a/dom/webidl/TreeColumn.webidl b/dom/webidl/TreeColumn.webidl new file mode 100644 index 0000000000..6d843a078a --- /dev/null +++ b/dom/webidl/TreeColumn.webidl @@ -0,0 +1,36 @@ +/* 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/. */ + +[Func="IsChromeOrXBL"] +interface TreeColumn { + [Throws] + readonly attribute Element? element; + + readonly attribute TreeColumns? columns; + + [Throws] + readonly attribute long x; + [Throws] + readonly attribute long width; + + readonly attribute DOMString id; + readonly attribute long index; + + readonly attribute boolean primary; + readonly attribute boolean cycler; + readonly attribute boolean editable; + readonly attribute boolean selectable; + + const short TYPE_TEXT = 1; + const short TYPE_CHECKBOX = 2; + const short TYPE_PROGRESSMETER = 3; + const short TYPE_PASSWORD = 4; + readonly attribute short type; + + TreeColumn? getNext(); + TreeColumn? getPrevious(); + + [Throws] + void invalidate(); +}; diff --git a/dom/webidl/TreeColumns.webidl b/dom/webidl/TreeColumns.webidl new file mode 100644 index 0000000000..5958d12352 --- /dev/null +++ b/dom/webidl/TreeColumns.webidl @@ -0,0 +1,54 @@ +/* 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/. */ + +[Func="IsChromeOrXBL"] +interface TreeColumns { + /** + * The tree widget for these columns. + */ + readonly attribute TreeBoxObject? tree; + + /** + * The number of columns. + */ + readonly attribute unsigned long count; + + /** + * An alias for count (for the benefit of scripts which treat this as an + * array). + */ + readonly attribute unsigned long length; + + /** + * Get the first/last column. + */ + TreeColumn? getFirstColumn(); + TreeColumn? getLastColumn(); + + /** + * Attribute based column getters. + */ + TreeColumn? getPrimaryColumn(); + TreeColumn? getSortedColumn(); + TreeColumn? getKeyColumn(); + + /** + * Get the column for the given element. + */ + TreeColumn? getColumnFor(Element? element); + + /** + * Parametric column getters. + */ + getter TreeColumn? getNamedColumn(DOMString name); + getter TreeColumn? getColumnAt(unsigned long index); + + /** + * This method is called whenever a treecol is added or removed and + * the column cache needs to be rebuilt. + */ + void invalidateColumns(); + + void restoreNaturalOrder(); +}; diff --git a/dom/webidl/TreeWalker.webidl b/dom/webidl/TreeWalker.webidl new file mode 100644 index 0000000000..2cd302f007 --- /dev/null +++ b/dom/webidl/TreeWalker.webidl @@ -0,0 +1,37 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/2012/WD-dom-20120105/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface TreeWalker { + [Constant] + readonly attribute Node root; + [Constant] + readonly attribute unsigned long whatToShow; + [Constant] + readonly attribute NodeFilter? filter; + [Pure, SetterThrows] + attribute Node currentNode; + + [Throws] + Node? parentNode(); + [Throws] + Node? firstChild(); + [Throws] + Node? lastChild(); + [Throws] + Node? previousSibling(); + [Throws] + Node? nextSibling(); + [Throws] + Node? previousNode(); + [Throws] + Node? nextNode(); +}; diff --git a/dom/webidl/U2F.webidl b/dom/webidl/U2F.webidl new file mode 100644 index 0000000000..3222b0dedd --- /dev/null +++ b/dom/webidl/U2F.webidl @@ -0,0 +1,96 @@ +/* -*- 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/. + * + * The origin of this IDL file is a combination of the FIDO U2F Raw Message Formats: + * https://fidoalliance.org/specs/fido-u2f-v1.0-nfc-bt-amendment-20150514/fido-u2f-raw-message-formats.html + * and the U2F JavaScript API v1.1, not yet published. While v1.1 is not published, + * v1.0, is located here: + * https://fidoalliance.org/specs/fido-u2f-v1.0-nfc-bt-amendment-20150514/fido-u2f-javascript-api.html + */ + +[NoInterfaceObject] +interface GlobalU2F { + [Throws, Pref="security.webauth.u2f"] + readonly attribute U2F u2f; +}; + +typedef unsigned short ErrorCode; +typedef sequence<Transport> Transports; + +enum Transport { + "bt", + "ble", + "nfc", + "usb" +}; + +dictionary ClientData { + DOMString typ; // Spelling is from the specification + DOMString challenge; + DOMString origin; + // cid_pubkey for Token Binding is not implemented +}; + +dictionary RegisterRequest { + DOMString version; + DOMString challenge; +}; + +dictionary RegisterResponse { + DOMString version; + DOMString registrationData; + DOMString clientData; + + // From Error + ErrorCode? errorCode; + DOMString? errorMessage; +}; + +dictionary RegisteredKey { + DOMString version; + DOMString keyHandle; + Transports? transports; + DOMString? appId; +}; + +dictionary SignResponse { + DOMString keyHandle; + DOMString signatureData; + DOMString clientData; + + // From Error + ErrorCode? errorCode; + DOMString? errorMessage; +}; + +callback U2FRegisterCallback = void(RegisterResponse response); +callback U2FSignCallback = void(SignResponse response); + +[Pref="security.webauth.u2f"] +interface U2F { + // These enumerations are defined in the FIDO U2F Javascript API under the + // interface "ErrorCode" as constant integers, and also in the U2F.cpp file. + // Any changes to these must occur in both locations. + const unsigned short OK = 0; + const unsigned short OTHER_ERROR = 1; + const unsigned short BAD_REQUEST = 2; + const unsigned short CONFIGURATION_UNSUPPORTED = 3; + const unsigned short DEVICE_INELIGIBLE = 4; + const unsigned short TIMEOUT = 5; + + [Throws] + void register (DOMString appId, + sequence<RegisterRequest> registerRequests, + sequence<RegisteredKey> registeredKeys, + U2FRegisterCallback callback, + optional long? opt_timeoutSeconds); + + [Throws] + void sign (DOMString appId, + DOMString challenge, + sequence<RegisteredKey> registeredKeys, + U2FSignCallback callback, + optional long? opt_timeoutSeconds); +}; diff --git a/dom/webidl/UDPMessageEvent.webidl b/dom/webidl/UDPMessageEvent.webidl new file mode 100644 index 0000000000..862f719d08 --- /dev/null +++ b/dom/webidl/UDPMessageEvent.webidl @@ -0,0 +1,24 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/raw-sockets/#interface-udpmessageevent + */ + +//Bug 1056444: This interface should be removed after UDPSocket.input/UDPSocket.output are ready. +[Constructor(DOMString type, optional UDPMessageEventInit eventInitDict), + Pref="dom.udpsocket.enabled", + ChromeOnly] +interface UDPMessageEvent : Event { + readonly attribute DOMString remoteAddress; + readonly attribute unsigned short remotePort; + readonly attribute any data; +}; + +dictionary UDPMessageEventInit : EventInit { + DOMString remoteAddress = ""; + unsigned short remotePort = 0; + any data = null; +}; diff --git a/dom/webidl/UDPSocket.webidl b/dom/webidl/UDPSocket.webidl new file mode 100644 index 0000000000..74cede28c8 --- /dev/null +++ b/dom/webidl/UDPSocket.webidl @@ -0,0 +1,40 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.w3.org/2012/sysapps/tcp-udp-sockets/#interface-udpsocket + * http://www.w3.org/2012/sysapps/tcp-udp-sockets/#dictionary-udpoptions + */ + +dictionary UDPOptions { + DOMString localAddress; + unsigned short localPort; + DOMString remoteAddress; + unsigned short remotePort; + boolean addressReuse = true; + boolean loopback = false; +}; + +[Constructor (optional UDPOptions options), + Pref="dom.udpsocket.enabled", + ChromeOnly] +interface UDPSocket : EventTarget { + readonly attribute DOMString? localAddress; + readonly attribute unsigned short? localPort; + readonly attribute DOMString? remoteAddress; + readonly attribute unsigned short? remotePort; + readonly attribute boolean addressReuse; + readonly attribute boolean loopback; + readonly attribute SocketReadyState readyState; + readonly attribute Promise<void> opened; + readonly attribute Promise<void> closed; +// readonly attribute ReadableStream input; //Bug 1056444: Stream API is not ready +// readonly attribute WriteableStream output; //Bug 1056444: Stream API is not ready + attribute EventHandler onmessage; //Bug 1056444: use event interface before Stream API is ready + Promise<void> close (); + [Throws] void joinMulticastGroup (DOMString multicastGroupAddress); + [Throws] void leaveMulticastGroup (DOMString multicastGroupAddress); + [Throws] boolean send ((DOMString or Blob or ArrayBuffer or ArrayBufferView) data, optional DOMString? remoteAddress, optional unsigned short? remotePort); //Bug 1056444: use send method before Stream API is ready +}; diff --git a/dom/webidl/UIEvent.webidl b/dom/webidl/UIEvent.webidl new file mode 100644 index 0000000000..9cc1d0cdf5 --- /dev/null +++ b/dom/webidl/UIEvent.webidl @@ -0,0 +1,64 @@ +/* -*- 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/. + * + * For more information on this interface please see + * http://dev.w3.org/2006/webapi/DOM-Level-3-Events/html/DOM3-Events.html + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +[Constructor(DOMString type, optional UIEventInit eventInitDict)] +interface UIEvent : Event +{ + readonly attribute WindowProxy? view; + readonly attribute long detail; + void initUIEvent(DOMString aType, + boolean aCanBubble, + boolean aCancelable, + Window? aView, + long aDetail); +}; + +// Additional DOM0 properties. +partial interface UIEvent { + const long SCROLL_PAGE_UP = -32768; + const long SCROLL_PAGE_DOWN = 32768; + + readonly attribute long layerX; + readonly attribute long layerY; + readonly attribute long pageX; + readonly attribute long pageY; + readonly attribute unsigned long which; + readonly attribute Node? rangeParent; + readonly attribute long rangeOffset; + readonly attribute boolean isChar; +}; + +dictionary UIEventInit : EventInit +{ + Window? view = null; + long detail = 0; +}; + +// NOTE: Gecko doesn't support commented out modifiers yet. +dictionary EventModifierInit : UIEventInit +{ + boolean ctrlKey = false; + boolean shiftKey = false; + boolean altKey = false; + boolean metaKey = false; + boolean modifierAltGraph = false; + boolean modifierCapsLock = false; + boolean modifierFn = false; + boolean modifierFnLock = false; + // boolean modifierHyper = false; + boolean modifierNumLock = false; + boolean modifierOS = false; + boolean modifierScrollLock = false; + // boolean modifierSuper = false; + boolean modifierSymbol = false; + boolean modifierSymbolLock = false; +}; diff --git a/dom/webidl/URL.webidl b/dom/webidl/URL.webidl new file mode 100644 index 0000000000..0baa9913c1 --- /dev/null +++ b/dom/webidl/URL.webidl @@ -0,0 +1,72 @@ +/* -*- 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/. + * + * The origins of this IDL file are + * http://url.spec.whatwg.org/#api + * http://dev.w3.org/2006/webapi/FileAPI/#creating-revoking + * http://dev.w3.org/2011/webrtc/editor/getusermedia.html#url + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +// [Constructor(DOMString url, optional (URL or DOMString) base = "about:blank")] +[Constructor(DOMString url, URL base), + Constructor(DOMString url, optional DOMString base), + Exposed=(Window,Worker,WorkerDebugger)] +interface URL { + // Bug 824857: no support for stringifier attributes yet. + // stringifier attribute USVString href; + + // Bug 824857 should remove this. + [Throws] + stringifier; + + [Throws] + attribute USVString href; + [Throws] + readonly attribute USVString origin; + [Throws] + attribute USVString protocol; + [Throws] + attribute USVString username; + [Throws] + attribute USVString password; + [Throws] + attribute USVString host; + [Throws] + attribute USVString hostname; + [Throws] + attribute USVString port; + [Throws] + attribute USVString pathname; + [Throws] + attribute USVString search; + readonly attribute URLSearchParams searchParams; + [Throws] + attribute USVString hash; +}; + +partial interface URL { + [Throws] + static DOMString createObjectURL(Blob blob, optional objectURLOptions options); + [Throws] + static DOMString createObjectURL(MediaStream stream, optional objectURLOptions options); + [Throws] + static void revokeObjectURL(DOMString url); + [ChromeOnly, Throws] + static boolean isValidURL(DOMString url); +}; + +dictionary objectURLOptions +{ +/* boolean autoRevoke = true; */ /* not supported yet */ +}; + +// https://dvcs.w3.org/hg/html-media/raw-file/default/media-source/media-source.html +partial interface URL { + [Throws] + static DOMString? createObjectURL(MediaSource source, optional objectURLOptions options); +}; diff --git a/dom/webidl/URLSearchParams.webidl b/dom/webidl/URLSearchParams.webidl new file mode 100644 index 0000000000..93e8460719 --- /dev/null +++ b/dom/webidl/URLSearchParams.webidl @@ -0,0 +1,28 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://url.spec.whatwg.org/#urlsearchparams + * + * To the extent possible under law, the editors have waived all copyright + * and related or neighboring rights to this work. In addition, as of 17 + * February 2013, the editors have made this specification available under + * the Open Web Foundation Agreement Version 1.0, which is available at + * http://www.openwebfoundation.org/legal/the-owf-1-0-agreements/owfa-1-0. + */ + +[Constructor(optional USVString init = ""), + Constructor(URLSearchParams init), + Exposed=(Window,Worker,WorkerDebugger,System)] +interface URLSearchParams { + void append(USVString name, USVString value); + void delete(USVString name); + USVString? get(USVString name); + sequence<USVString> getAll(USVString name); + boolean has(USVString name); + void set(USVString name, USVString value); + iterable<USVString, USVString>; + stringifier; +}; diff --git a/dom/webidl/UserProximityEvent.webidl b/dom/webidl/UserProximityEvent.webidl new file mode 100644 index 0000000000..9c10947f78 --- /dev/null +++ b/dom/webidl/UserProximityEvent.webidl @@ -0,0 +1,16 @@ +/* -*- 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/. + */ + +[Constructor(DOMString type, optional UserProximityEventInit eventInitDict)] +interface UserProximityEvent : Event +{ + readonly attribute boolean near; +}; + +dictionary UserProximityEventInit : EventInit +{ + boolean near = false; +}; diff --git a/dom/webidl/VRDisplay.webidl b/dom/webidl/VRDisplay.webidl new file mode 100644 index 0000000000..63ebd1205b --- /dev/null +++ b/dom/webidl/VRDisplay.webidl @@ -0,0 +1,286 @@ +/* -*- 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/. */ + +enum VREye { + "left", + "right" +}; + +[Pref="dom.vr.enabled", + HeaderFile="mozilla/dom/VRDisplay.h"] +interface VRFieldOfView { + readonly attribute double upDegrees; + readonly attribute double rightDegrees; + readonly attribute double downDegrees; + readonly attribute double leftDegrees; +}; + +typedef (HTMLCanvasElement or OffscreenCanvas) VRSource; + +dictionary VRLayer { + /** + * XXX - When WebVR in WebWorkers is implemented, HTMLCanvasElement below + * should be replaced with VRSource. + */ + HTMLCanvasElement? source = null; + + /** + * The left and right viewports contain 4 values defining the viewport + * rectangles within the canvas to present to the eye in UV space. + * [0] left offset of the viewport (0.0 - 1.0) + * [1] top offset of the viewport (0.0 - 1.0) + * [2] width of the viewport (0.0 - 1.0) + * [3] height of the viewport (0.0 - 1.0) + * + * When no values are passed, they will be processed as though the left + * and right sides of the viewport were passed: + * + * leftBounds: [0.0, 0.0, 0.5, 1.0] + * rightBounds: [0.5, 0.0, 0.5, 1.0] + */ + sequence<float> leftBounds = []; + sequence<float> rightBounds = []; +}; + +/** + * Values describing the capabilities of a VRDisplay. + * These are expected to be static per-device/per-user. + */ +[Pref="dom.vr.enabled", + HeaderFile="mozilla/dom/VRDisplay.h"] +interface VRDisplayCapabilities { + /** + * hasPosition is true if the VRDisplay is capable of tracking its position. + */ + readonly attribute boolean hasPosition; + + /** + * hasOrientation is true if the VRDisplay is capable of tracking its orientation. + */ + readonly attribute boolean hasOrientation; + + /** + * Whether the VRDisplay is separate from the device’s + * primary display. If presenting VR content will obscure + * other content on the device, this should be false. When + * false, the application should not attempt to mirror VR content + * or update non-VR UI because that content will not be visible. + */ + readonly attribute boolean hasExternalDisplay; + + /** + * Whether the VRDisplay is capable of presenting content to an HMD or similar device. + * Can be used to indicate “magic window” devices that are capable of 6DoF tracking but for + * which requestPresent is not meaningful. If false then calls to requestPresent should + * always fail, and getEyeParameters should return null. + */ + readonly attribute boolean canPresent; + + /** + * Indicates the maximum length of the array that requestPresent() will accept. MUST be 1 if + canPresent is true, 0 otherwise. + */ + readonly attribute unsigned long maxLayers; +}; + +/** + * Values describing the the stage / play area for devices + * that support room-scale experiences. + */ +[Pref="dom.vr.enabled", + HeaderFile="mozilla/dom/VRDisplay.h"] +interface VRStageParameters { + /** + * A 16-element array containing the components of a column-major 4x4 + * affine transform matrix. This matrix transforms the sitting-space position + * returned by get{Immediate}Pose() to a standing-space position. + */ + [Throws] readonly attribute Float32Array sittingToStandingTransform; + + /** + * Dimensions of the play-area bounds. The bounds are defined + * as an axis-aligned rectangle on the floor. + * The center of the rectangle is at (0,0,0) in standing-space + * coordinates. + * These bounds are defined for safety purposes. + * Content should not require the user to move beyond these + * bounds; however, it is possible for the user to ignore + * the bounds resulting in position values outside of + * this rectangle. + */ + readonly attribute float sizeX; + readonly attribute float sizeZ; +}; + +[Pref="dom.vr.enabled", + HeaderFile="mozilla/dom/VRDisplay.h"] +interface VRPose +{ + /** + * position, linearVelocity, and linearAcceleration are 3-component vectors. + * position is relative to a sitting space. Transforming this point with + * VRStageParameters.sittingToStandingTransform converts this to standing space. + */ + [Constant, Throws] readonly attribute Float32Array? position; + [Constant, Throws] readonly attribute Float32Array? linearVelocity; + [Constant, Throws] readonly attribute Float32Array? linearAcceleration; + + /* orientation is a 4-entry array representing the components of a quaternion. */ + [Constant, Throws] readonly attribute Float32Array? orientation; + /* angularVelocity and angularAcceleration are the components of 3-dimensional vectors. */ + [Constant, Throws] readonly attribute Float32Array? angularVelocity; + [Constant, Throws] readonly attribute Float32Array? angularAcceleration; +}; + +[Constructor, + Pref="dom.vr.enabled", + HeaderFile="mozilla/dom/VRDisplay.h"] +interface VRFrameData { + readonly attribute DOMHighResTimeStamp timestamp; + + [Throws, Pure] readonly attribute Float32Array leftProjectionMatrix; + [Throws, Pure] readonly attribute Float32Array leftViewMatrix; + + [Throws, Pure] readonly attribute Float32Array rightProjectionMatrix; + [Throws, Pure] readonly attribute Float32Array rightViewMatrix; + + [Pure] readonly attribute VRPose pose; +}; + +[Pref="dom.vr.enabled", + HeaderFile="mozilla/dom/VRDisplay.h"] +interface VREyeParameters { + /** + * offset is a 3-component vector representing an offset to + * translate the eye. This value may vary from frame + * to frame if the user adjusts their headset ipd. + */ + [Constant, Throws] readonly attribute Float32Array offset; + + /* These values may vary as the user adjusts their headset ipd. */ + [Constant] readonly attribute VRFieldOfView fieldOfView; + + /** + * renderWidth and renderHeight specify the recommended render target + * size of each eye viewport, in pixels. If multiple eyes are rendered + * in a single render target, then the render target should be made large + * enough to fit both viewports. + */ + [Constant] readonly attribute unsigned long renderWidth; + [Constant] readonly attribute unsigned long renderHeight; +}; + +[Pref="dom.vr.enabled", + HeaderFile="mozilla/dom/VRDisplay.h"] +interface VRDisplay : EventTarget { + readonly attribute boolean isConnected; + readonly attribute boolean isPresenting; + + /** + * Dictionary of capabilities describing the VRDisplay. + */ + [Constant] readonly attribute VRDisplayCapabilities capabilities; + + /** + * If this VRDisplay supports room-scale experiences, the optional + * stage attribute contains details on the room-scale parameters. + */ + readonly attribute VRStageParameters? stageParameters; + + /* Return the current VREyeParameters for the given eye. */ + VREyeParameters getEyeParameters(VREye whichEye); + + /** + * An identifier for this distinct VRDisplay. Used as an + * association point in the Gamepad API. + */ + [Constant] readonly attribute unsigned long displayId; + + /** + * A display name, a user-readable name identifying it. + */ + [Constant] readonly attribute DOMString displayName; + + /** + * Populates the passed VRFrameData with the information required to render + * the current frame. + */ + boolean getFrameData(VRFrameData frameData); + + /** + * Return a VRPose containing the future predicted pose of the VRDisplay + * when the current frame will be presented. Subsequent calls to getPose() + * MUST return a VRPose with the same values until the next call to + * submitFrame(). + * + * The VRPose will contain the position, orientation, velocity, + * and acceleration of each of these properties. + */ + [NewObject] VRPose getPose(); + + /** + * Reset the pose for this display, treating its current position and + * orientation as the "origin/zero" values. VRPose.position, + * VRPose.orientation, and VRStageParameters.sittingToStandingTransform may be + * updated when calling resetPose(). This should be called in only + * sitting-space experiences. + */ + void resetPose(); + + /** + * z-depth defining the near plane of the eye view frustum + * enables mapping of values in the render target depth + * attachment to scene coordinates. Initially set to 0.01. + */ + attribute double depthNear; + + /** + * z-depth defining the far plane of the eye view frustum + * enables mapping of values in the render target depth + * attachment to scene coordinates. Initially set to 10000.0. + */ + attribute double depthFar; + + /** + * The callback passed to `requestAnimationFrame` will be called + * any time a new frame should be rendered. When the VRDisplay is + * presenting the callback will be called at the native refresh + * rate of the HMD. When not presenting this function acts + * identically to how window.requestAnimationFrame acts. Content should + * make no assumptions of frame rate or vsync behavior as the HMD runs + * asynchronously from other displays and at differing refresh rates. + */ + [Throws] long requestAnimationFrame(FrameRequestCallback callback); + + /** + * Passing the value returned by `requestAnimationFrame` to + * `cancelAnimationFrame` will unregister the callback. + */ + [Throws] void cancelAnimationFrame(long handle); + + /** + * Begin presenting to the VRDisplay. Must be called in response to a user gesture. + * Repeat calls while already presenting will update the VRLayers being displayed. + */ + [Throws] Promise<void> requestPresent(sequence<VRLayer> layers); + + /** + * Stops presenting to the VRDisplay. + */ + [Throws] Promise<void> exitPresent(); + + /** + * Get the layers currently being presented. + */ + sequence<VRLayer> getLayers(); + + /** + * The VRLayer provided to the VRDisplay will be captured and presented + * in the HMD. Calling this function has the same effect on the source + * canvas as any other operation that uses its source image, and canvases + * created without preserveDrawingBuffer set to true will be cleared. + */ + void submitFrame(); +}; diff --git a/dom/webidl/VTTCue.webidl b/dom/webidl/VTTCue.webidl new file mode 100644 index 0000000000..f74db7a58c --- /dev/null +++ b/dom/webidl/VTTCue.webidl @@ -0,0 +1,71 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://dev.w3.org/html5/webvtt/#the-vttcue-interface + */ + +enum AutoKeyword { "auto" }; + +enum LineAlignSetting { + "start", + "center", + "end" +}; + +enum PositionAlignSetting { + "line-left", + "center", + "line-right", + "auto" +}; + +enum AlignSetting { + "start", + "center", + "end", + "left", + "right" +}; + +enum DirectionSetting { + "", + "rl", + "lr" +}; + +[Constructor(double startTime, double endTime, DOMString text)] +interface VTTCue : TextTrackCue { + [Pref="media.webvtt.regions.enabled"] + attribute VTTRegion? region; + attribute DirectionSetting vertical; + attribute boolean snapToLines; + attribute (double or AutoKeyword) line; + [SetterThrows] + attribute LineAlignSetting lineAlign; + [SetterThrows] + attribute (double or AutoKeyword) position; + [SetterThrows] + attribute PositionAlignSetting positionAlign; + [SetterThrows] + attribute double size; + attribute AlignSetting align; + attribute DOMString text; + DocumentFragment getCueAsHTML(); +}; + +// Mozilla extensions. +partial interface VTTCue { + [ChromeOnly] + attribute HTMLDivElement? displayState; + [ChromeOnly] + readonly attribute boolean hasBeenReset; + [ChromeOnly] + readonly attribute double computedLine; + [ChromeOnly] + readonly attribute double computedPosition; + [ChromeOnly] + readonly attribute PositionAlignSetting computedPositionAlign; +}; diff --git a/dom/webidl/VTTRegion.webidl b/dom/webidl/VTTRegion.webidl new file mode 100644 index 0000000000..ec63411eb5 --- /dev/null +++ b/dom/webidl/VTTRegion.webidl @@ -0,0 +1,27 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://dev.w3.org/html5/webvtt/#extension-of-the-texttrack-interface-for-region-support + */ + +[Constructor, Pref="media.webvtt.regions.enabled"] +interface VTTRegion { + [SetterThrows] + attribute double width; + + attribute long lines; + + [SetterThrows] + attribute double regionAnchorX; + [SetterThrows] + attribute double regionAnchorY; + [SetterThrows] + attribute double viewportAnchorX; + [SetterThrows] + attribute double viewportAnchorY; + [SetterThrows] + attribute DOMString scroll; +}; diff --git a/dom/webidl/ValidityState.webidl b/dom/webidl/ValidityState.webidl new file mode 100644 index 0000000000..7e99870e9e --- /dev/null +++ b/dom/webidl/ValidityState.webidl @@ -0,0 +1,26 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.whatwg.org/specs/web-apps/current-work/#validitystate + * © Copyright 2004-2011 Apple Computer, Inc., Mozilla Foundation, and + * Opera Software ASA. You are granted a license to use, reproduce + * and create derivative works of this document. + */ + +interface ValidityState { + readonly attribute boolean valueMissing; + readonly attribute boolean typeMismatch; + readonly attribute boolean patternMismatch; + readonly attribute boolean tooLong; + readonly attribute boolean tooShort; + readonly attribute boolean rangeUnderflow; + readonly attribute boolean rangeOverflow; + readonly attribute boolean stepMismatch; + readonly attribute boolean badInput; + readonly attribute boolean customError; + readonly attribute boolean valid; +}; + diff --git a/dom/webidl/VideoPlaybackQuality.webidl b/dom/webidl/VideoPlaybackQuality.webidl new file mode 100644 index 0000000000..abbe8d19a6 --- /dev/null +++ b/dom/webidl/VideoPlaybackQuality.webidl @@ -0,0 +1,21 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://dvcs.w3.org/hg/html-media/raw-file/default/media-source/media-source.html + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +[Func="mozilla::dom::MediaSource::Enabled"] +interface VideoPlaybackQuality { + readonly attribute DOMHighResTimeStamp creationTime; + readonly attribute unsigned long totalVideoFrames; + readonly attribute unsigned long droppedVideoFrames; + readonly attribute unsigned long corruptedVideoFrames; +// At Risk: readonly attribute double totalFrameDelay; +}; + diff --git a/dom/webidl/VideoStreamTrack.webidl b/dom/webidl/VideoStreamTrack.webidl new file mode 100644 index 0000000000..b194d5c9fa --- /dev/null +++ b/dom/webidl/VideoStreamTrack.webidl @@ -0,0 +1,19 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://dev.w3.org/2011/webrtc/editor/getusermedia.html + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +// [Constructor(optional MediaTrackConstraints videoConstraints)] +interface VideoStreamTrack : MediaStreamTrack { +// static sequence<DOMString> getSourceIds (); +// void takePhoto (); +// attribute EventHandler onphoto; +// attribute EventHandler onphotoerror; +}; diff --git a/dom/webidl/VideoTrack.webidl b/dom/webidl/VideoTrack.webidl new file mode 100644 index 0000000000..7f5974f212 --- /dev/null +++ b/dom/webidl/VideoTrack.webidl @@ -0,0 +1,17 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.whatwg.org/specs/web-apps/current-work/#videotrack + */ + +[Pref="media.track.enabled"] +interface VideoTrack { + readonly attribute DOMString id; + readonly attribute DOMString kind; + readonly attribute DOMString label; + readonly attribute DOMString language; + attribute boolean selected; +}; diff --git a/dom/webidl/VideoTrackList.webidl b/dom/webidl/VideoTrackList.webidl new file mode 100644 index 0000000000..144120226c --- /dev/null +++ b/dom/webidl/VideoTrackList.webidl @@ -0,0 +1,21 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.whatwg.org/specs/web-apps/current-work/#videotracklist + */ + +[Pref="media.track.enabled"] +interface VideoTrackList : EventTarget { + readonly attribute unsigned long length; + getter VideoTrack (unsigned long index); + VideoTrack? getTrackById(DOMString id); + readonly attribute long selectedIndex; + + attribute EventHandler onchange; + attribute EventHandler onaddtrack; + attribute EventHandler onremovetrack; +}; + diff --git a/dom/webidl/WaveShaperNode.webidl b/dom/webidl/WaveShaperNode.webidl new file mode 100644 index 0000000000..ac30c94dcc --- /dev/null +++ b/dom/webidl/WaveShaperNode.webidl @@ -0,0 +1,30 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * https://webaudio.github.io/web-audio-api/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +enum OverSampleType { + "none", + "2x", + "4x" +}; + +[Pref="dom.webaudio.enabled"] +interface WaveShaperNode : AudioNode { + + [SetterThrows] + attribute Float32Array? curve; + attribute OverSampleType oversample; + +}; + +// Mozilla extension +WaveShaperNode implements AudioNodePassThrough; + diff --git a/dom/webidl/WebComponents.webidl b/dom/webidl/WebComponents.webidl new file mode 100644 index 0000000000..3dfb960bc1 --- /dev/null +++ b/dom/webidl/WebComponents.webidl @@ -0,0 +1,28 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/custom/index.html + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +callback LifecycleCreatedCallback = void(); +callback LifecycleAttachedCallback = void(); +callback LifecycleDetachedCallback = void(); +callback LifecycleAttributeChangedCallback = void(DOMString attrName, DOMString? oldValue, DOMString? newValue); + +dictionary LifecycleCallbacks { + LifecycleCreatedCallback? createdCallback; + LifecycleAttachedCallback? attachedCallback; + LifecycleDetachedCallback? detachedCallback; + LifecycleAttributeChangedCallback? attributeChangedCallback; +}; + +dictionary ElementRegistrationOptions { + object? prototype = null; + DOMString? extends = null; +}; diff --git a/dom/webidl/WebGL2RenderingContext.webidl b/dom/webidl/WebGL2RenderingContext.webidl new file mode 100644 index 0000000000..34c71a65d6 --- /dev/null +++ b/dom/webidl/WebGL2RenderingContext.webidl @@ -0,0 +1,701 @@ +/* -*- Mode: IDL; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* 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/. + * + * The source for this IDL is found at https://www.khronos.org/registry/webgl/specs/latest/2.0 + * This IDL depends on WebGLRenderingContext.webidl + */ + +typedef long long GLint64; +typedef unsigned long long GLuint64; + +[Pref="webgl.enable-webgl2"] +interface WebGLSampler { +}; + +[Pref="webgl.enable-webgl2"] +interface WebGLSync { +}; + +[Pref="webgl.enable-webgl2"] +interface WebGLTransformFeedback { +}; + +typedef (Uint32Array or sequence<GLuint>) Uint32List; + +// WebGL2 spec has this as an empty interface that pulls in everything +// via WebGL2RenderingContextBase. +[Pref="webgl.enable-webgl2"] +interface WebGL2RenderingContext +{ +}; + +[NoInterfaceObject] +interface WebGL2RenderingContextBase +{ + const GLenum READ_BUFFER = 0x0C02; + const GLenum UNPACK_ROW_LENGTH = 0x0CF2; + const GLenum UNPACK_SKIP_ROWS = 0x0CF3; + const GLenum UNPACK_SKIP_PIXELS = 0x0CF4; + const GLenum PACK_ROW_LENGTH = 0x0D02; + const GLenum PACK_SKIP_ROWS = 0x0D03; + const GLenum PACK_SKIP_PIXELS = 0x0D04; + const GLenum COLOR = 0x1800; + const GLenum DEPTH = 0x1801; + const GLenum STENCIL = 0x1802; + const GLenum RED = 0x1903; + const GLenum RGB8 = 0x8051; + const GLenum RGBA8 = 0x8058; + const GLenum RGB10_A2 = 0x8059; + const GLenum TEXTURE_BINDING_3D = 0x806A; + const GLenum UNPACK_SKIP_IMAGES = 0x806D; + const GLenum UNPACK_IMAGE_HEIGHT = 0x806E; + const GLenum TEXTURE_3D = 0x806F; + const GLenum TEXTURE_WRAP_R = 0x8072; + const GLenum MAX_3D_TEXTURE_SIZE = 0x8073; + const GLenum UNSIGNED_INT_2_10_10_10_REV = 0x8368; + const GLenum MAX_ELEMENTS_VERTICES = 0x80E8; + const GLenum MAX_ELEMENTS_INDICES = 0x80E9; + const GLenum TEXTURE_MIN_LOD = 0x813A; + const GLenum TEXTURE_MAX_LOD = 0x813B; + const GLenum TEXTURE_BASE_LEVEL = 0x813C; + const GLenum TEXTURE_MAX_LEVEL = 0x813D; + const GLenum MIN = 0x8007; + const GLenum MAX = 0x8008; + const GLenum DEPTH_COMPONENT24 = 0x81A6; + const GLenum MAX_TEXTURE_LOD_BIAS = 0x84FD; + const GLenum TEXTURE_COMPARE_MODE = 0x884C; + const GLenum TEXTURE_COMPARE_FUNC = 0x884D; + const GLenum CURRENT_QUERY = 0x8865; + const GLenum QUERY_RESULT = 0x8866; + const GLenum QUERY_RESULT_AVAILABLE = 0x8867; + const GLenum STREAM_READ = 0x88E1; + const GLenum STREAM_COPY = 0x88E2; + const GLenum STATIC_READ = 0x88E5; + const GLenum STATIC_COPY = 0x88E6; + const GLenum DYNAMIC_READ = 0x88E9; + const GLenum DYNAMIC_COPY = 0x88EA; + const GLenum MAX_DRAW_BUFFERS = 0x8824; + const GLenum DRAW_BUFFER0 = 0x8825; + const GLenum DRAW_BUFFER1 = 0x8826; + const GLenum DRAW_BUFFER2 = 0x8827; + const GLenum DRAW_BUFFER3 = 0x8828; + const GLenum DRAW_BUFFER4 = 0x8829; + const GLenum DRAW_BUFFER5 = 0x882A; + const GLenum DRAW_BUFFER6 = 0x882B; + const GLenum DRAW_BUFFER7 = 0x882C; + const GLenum DRAW_BUFFER8 = 0x882D; + const GLenum DRAW_BUFFER9 = 0x882E; + const GLenum DRAW_BUFFER10 = 0x882F; + const GLenum DRAW_BUFFER11 = 0x8830; + const GLenum DRAW_BUFFER12 = 0x8831; + const GLenum DRAW_BUFFER13 = 0x8832; + const GLenum DRAW_BUFFER14 = 0x8833; + const GLenum DRAW_BUFFER15 = 0x8834; + const GLenum MAX_FRAGMENT_UNIFORM_COMPONENTS = 0x8B49; + const GLenum MAX_VERTEX_UNIFORM_COMPONENTS = 0x8B4A; + const GLenum SAMPLER_3D = 0x8B5F; + const GLenum SAMPLER_2D_SHADOW = 0x8B62; + const GLenum FRAGMENT_SHADER_DERIVATIVE_HINT = 0x8B8B; + const GLenum PIXEL_PACK_BUFFER = 0x88EB; + const GLenum PIXEL_UNPACK_BUFFER = 0x88EC; + const GLenum PIXEL_PACK_BUFFER_BINDING = 0x88ED; + const GLenum PIXEL_UNPACK_BUFFER_BINDING = 0x88EF; + const GLenum FLOAT_MAT2x3 = 0x8B65; + const GLenum FLOAT_MAT2x4 = 0x8B66; + const GLenum FLOAT_MAT3x2 = 0x8B67; + const GLenum FLOAT_MAT3x4 = 0x8B68; + const GLenum FLOAT_MAT4x2 = 0x8B69; + const GLenum FLOAT_MAT4x3 = 0x8B6A; + const GLenum SRGB = 0x8C40; + const GLenum SRGB8 = 0x8C41; + const GLenum SRGB8_ALPHA8 = 0x8C43; + const GLenum COMPARE_REF_TO_TEXTURE = 0x884E; + const GLenum RGBA32F = 0x8814; + const GLenum RGB32F = 0x8815; + const GLenum RGBA16F = 0x881A; + const GLenum RGB16F = 0x881B; + const GLenum VERTEX_ATTRIB_ARRAY_INTEGER = 0x88FD; + const GLenum MAX_ARRAY_TEXTURE_LAYERS = 0x88FF; + const GLenum MIN_PROGRAM_TEXEL_OFFSET = 0x8904; + const GLenum MAX_PROGRAM_TEXEL_OFFSET = 0x8905; + const GLenum MAX_VARYING_COMPONENTS = 0x8B4B; + const GLenum TEXTURE_2D_ARRAY = 0x8C1A; + const GLenum TEXTURE_BINDING_2D_ARRAY = 0x8C1D; + const GLenum R11F_G11F_B10F = 0x8C3A; + const GLenum UNSIGNED_INT_10F_11F_11F_REV = 0x8C3B; + const GLenum RGB9_E5 = 0x8C3D; + const GLenum UNSIGNED_INT_5_9_9_9_REV = 0x8C3E; + const GLenum TRANSFORM_FEEDBACK_BUFFER_MODE = 0x8C7F; + const GLenum MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS = 0x8C80; + const GLenum TRANSFORM_FEEDBACK_VARYINGS = 0x8C83; + const GLenum TRANSFORM_FEEDBACK_BUFFER_START = 0x8C84; + const GLenum TRANSFORM_FEEDBACK_BUFFER_SIZE = 0x8C85; + const GLenum TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN = 0x8C88; + const GLenum RASTERIZER_DISCARD = 0x8C89; + const GLenum MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS = 0x8C8A; + const GLenum MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS = 0x8C8B; + const GLenum INTERLEAVED_ATTRIBS = 0x8C8C; + const GLenum SEPARATE_ATTRIBS = 0x8C8D; + const GLenum TRANSFORM_FEEDBACK_BUFFER = 0x8C8E; + const GLenum TRANSFORM_FEEDBACK_BUFFER_BINDING = 0x8C8F; + const GLenum RGBA32UI = 0x8D70; + const GLenum RGB32UI = 0x8D71; + const GLenum RGBA16UI = 0x8D76; + const GLenum RGB16UI = 0x8D77; + const GLenum RGBA8UI = 0x8D7C; + const GLenum RGB8UI = 0x8D7D; + const GLenum RGBA32I = 0x8D82; + const GLenum RGB32I = 0x8D83; + const GLenum RGBA16I = 0x8D88; + const GLenum RGB16I = 0x8D89; + const GLenum RGBA8I = 0x8D8E; + const GLenum RGB8I = 0x8D8F; + const GLenum RED_INTEGER = 0x8D94; + const GLenum RGB_INTEGER = 0x8D98; + const GLenum RGBA_INTEGER = 0x8D99; + const GLenum SAMPLER_2D_ARRAY = 0x8DC1; + const GLenum SAMPLER_2D_ARRAY_SHADOW = 0x8DC4; + const GLenum SAMPLER_CUBE_SHADOW = 0x8DC5; + const GLenum UNSIGNED_INT_VEC2 = 0x8DC6; + const GLenum UNSIGNED_INT_VEC3 = 0x8DC7; + const GLenum UNSIGNED_INT_VEC4 = 0x8DC8; + const GLenum INT_SAMPLER_2D = 0x8DCA; + const GLenum INT_SAMPLER_3D = 0x8DCB; + const GLenum INT_SAMPLER_CUBE = 0x8DCC; + const GLenum INT_SAMPLER_2D_ARRAY = 0x8DCF; + const GLenum UNSIGNED_INT_SAMPLER_2D = 0x8DD2; + const GLenum UNSIGNED_INT_SAMPLER_3D = 0x8DD3; + const GLenum UNSIGNED_INT_SAMPLER_CUBE = 0x8DD4; + const GLenum UNSIGNED_INT_SAMPLER_2D_ARRAY = 0x8DD7; + const GLenum DEPTH_COMPONENT32F = 0x8CAC; + const GLenum DEPTH32F_STENCIL8 = 0x8CAD; + const GLenum FLOAT_32_UNSIGNED_INT_24_8_REV = 0x8DAD; + const GLenum FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING = 0x8210; + const GLenum FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE = 0x8211; + const GLenum FRAMEBUFFER_ATTACHMENT_RED_SIZE = 0x8212; + const GLenum FRAMEBUFFER_ATTACHMENT_GREEN_SIZE = 0x8213; + const GLenum FRAMEBUFFER_ATTACHMENT_BLUE_SIZE = 0x8214; + const GLenum FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE = 0x8215; + const GLenum FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE = 0x8216; + const GLenum FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE = 0x8217; + const GLenum FRAMEBUFFER_DEFAULT = 0x8218; + const GLenum UNSIGNED_INT_24_8 = 0x84FA; + const GLenum DEPTH24_STENCIL8 = 0x88F0; + const GLenum UNSIGNED_NORMALIZED = 0x8C17; + const GLenum DRAW_FRAMEBUFFER_BINDING = 0x8CA6; /* Same as FRAMEBUFFER_BINDING */ + const GLenum READ_FRAMEBUFFER = 0x8CA8; + const GLenum DRAW_FRAMEBUFFER = 0x8CA9; + const GLenum READ_FRAMEBUFFER_BINDING = 0x8CAA; + const GLenum RENDERBUFFER_SAMPLES = 0x8CAB; + const GLenum FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER = 0x8CD4; + const GLenum MAX_COLOR_ATTACHMENTS = 0x8CDF; + const GLenum COLOR_ATTACHMENT1 = 0x8CE1; + const GLenum COLOR_ATTACHMENT2 = 0x8CE2; + const GLenum COLOR_ATTACHMENT3 = 0x8CE3; + const GLenum COLOR_ATTACHMENT4 = 0x8CE4; + const GLenum COLOR_ATTACHMENT5 = 0x8CE5; + const GLenum COLOR_ATTACHMENT6 = 0x8CE6; + const GLenum COLOR_ATTACHMENT7 = 0x8CE7; + const GLenum COLOR_ATTACHMENT8 = 0x8CE8; + const GLenum COLOR_ATTACHMENT9 = 0x8CE9; + const GLenum COLOR_ATTACHMENT10 = 0x8CEA; + const GLenum COLOR_ATTACHMENT11 = 0x8CEB; + const GLenum COLOR_ATTACHMENT12 = 0x8CEC; + const GLenum COLOR_ATTACHMENT13 = 0x8CED; + const GLenum COLOR_ATTACHMENT14 = 0x8CEE; + const GLenum COLOR_ATTACHMENT15 = 0x8CEF; + const GLenum FRAMEBUFFER_INCOMPLETE_MULTISAMPLE = 0x8D56; + const GLenum MAX_SAMPLES = 0x8D57; + const GLenum HALF_FLOAT = 0x140B; + const GLenum RG = 0x8227; + const GLenum RG_INTEGER = 0x8228; + const GLenum R8 = 0x8229; + const GLenum RG8 = 0x822B; + const GLenum R16F = 0x822D; + const GLenum R32F = 0x822E; + const GLenum RG16F = 0x822F; + const GLenum RG32F = 0x8230; + const GLenum R8I = 0x8231; + const GLenum R8UI = 0x8232; + const GLenum R16I = 0x8233; + const GLenum R16UI = 0x8234; + const GLenum R32I = 0x8235; + const GLenum R32UI = 0x8236; + const GLenum RG8I = 0x8237; + const GLenum RG8UI = 0x8238; + const GLenum RG16I = 0x8239; + const GLenum RG16UI = 0x823A; + const GLenum RG32I = 0x823B; + const GLenum RG32UI = 0x823C; + const GLenum VERTEX_ARRAY_BINDING = 0x85B5; + const GLenum R8_SNORM = 0x8F94; + const GLenum RG8_SNORM = 0x8F95; + const GLenum RGB8_SNORM = 0x8F96; + const GLenum RGBA8_SNORM = 0x8F97; + const GLenum SIGNED_NORMALIZED = 0x8F9C; + const GLenum COPY_READ_BUFFER = 0x8F36; + const GLenum COPY_WRITE_BUFFER = 0x8F37; + const GLenum COPY_READ_BUFFER_BINDING = 0x8F36; /* Same as COPY_READ_BUFFER */ + const GLenum COPY_WRITE_BUFFER_BINDING = 0x8F37; /* Same as COPY_WRITE_BUFFER */ + const GLenum UNIFORM_BUFFER = 0x8A11; + const GLenum UNIFORM_BUFFER_BINDING = 0x8A28; + const GLenum UNIFORM_BUFFER_START = 0x8A29; + const GLenum UNIFORM_BUFFER_SIZE = 0x8A2A; + const GLenum MAX_VERTEX_UNIFORM_BLOCKS = 0x8A2B; + const GLenum MAX_FRAGMENT_UNIFORM_BLOCKS = 0x8A2D; + const GLenum MAX_COMBINED_UNIFORM_BLOCKS = 0x8A2E; + const GLenum MAX_UNIFORM_BUFFER_BINDINGS = 0x8A2F; + const GLenum MAX_UNIFORM_BLOCK_SIZE = 0x8A30; + const GLenum MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS = 0x8A31; + const GLenum MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS = 0x8A33; + const GLenum UNIFORM_BUFFER_OFFSET_ALIGNMENT = 0x8A34; + const GLenum ACTIVE_UNIFORM_BLOCKS = 0x8A36; + const GLenum UNIFORM_TYPE = 0x8A37; + const GLenum UNIFORM_SIZE = 0x8A38; + const GLenum UNIFORM_BLOCK_INDEX = 0x8A3A; + const GLenum UNIFORM_OFFSET = 0x8A3B; + const GLenum UNIFORM_ARRAY_STRIDE = 0x8A3C; + const GLenum UNIFORM_MATRIX_STRIDE = 0x8A3D; + const GLenum UNIFORM_IS_ROW_MAJOR = 0x8A3E; + const GLenum UNIFORM_BLOCK_BINDING = 0x8A3F; + const GLenum UNIFORM_BLOCK_DATA_SIZE = 0x8A40; + const GLenum UNIFORM_BLOCK_ACTIVE_UNIFORMS = 0x8A42; + const GLenum UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES = 0x8A43; + const GLenum UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER = 0x8A44; + const GLenum UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER = 0x8A46; + const GLenum INVALID_INDEX = 0xFFFFFFFF; + const GLenum MAX_VERTEX_OUTPUT_COMPONENTS = 0x9122; + const GLenum MAX_FRAGMENT_INPUT_COMPONENTS = 0x9125; + const GLenum MAX_SERVER_WAIT_TIMEOUT = 0x9111; + const GLenum OBJECT_TYPE = 0x9112; + const GLenum SYNC_CONDITION = 0x9113; + const GLenum SYNC_STATUS = 0x9114; + const GLenum SYNC_FLAGS = 0x9115; + const GLenum SYNC_FENCE = 0x9116; + const GLenum SYNC_GPU_COMMANDS_COMPLETE = 0x9117; + const GLenum UNSIGNALED = 0x9118; + const GLenum SIGNALED = 0x9119; + const GLenum ALREADY_SIGNALED = 0x911A; + const GLenum TIMEOUT_EXPIRED = 0x911B; + const GLenum CONDITION_SATISFIED = 0x911C; + const GLenum WAIT_FAILED = 0x911D; + const GLenum SYNC_FLUSH_COMMANDS_BIT = 0x00000001; + const GLenum VERTEX_ATTRIB_ARRAY_DIVISOR = 0x88FE; + const GLenum ANY_SAMPLES_PASSED = 0x8C2F; + const GLenum ANY_SAMPLES_PASSED_CONSERVATIVE = 0x8D6A; + const GLenum SAMPLER_BINDING = 0x8919; + const GLenum RGB10_A2UI = 0x906F; + const GLenum INT_2_10_10_10_REV = 0x8D9F; + const GLenum TRANSFORM_FEEDBACK = 0x8E22; + const GLenum TRANSFORM_FEEDBACK_PAUSED = 0x8E23; + const GLenum TRANSFORM_FEEDBACK_ACTIVE = 0x8E24; + const GLenum TRANSFORM_FEEDBACK_BINDING = 0x8E25; + const GLenum TEXTURE_IMMUTABLE_FORMAT = 0x912F; + const GLenum MAX_ELEMENT_INDEX = 0x8D6B; + const GLenum TEXTURE_IMMUTABLE_LEVELS = 0x82DF; + + const GLint64 TIMEOUT_IGNORED = -1; + + /* WebGL-specific enums */ + const GLenum MAX_CLIENT_WAIT_TIMEOUT_WEBGL = 0x9247; + + /* Buffer objects */ + // WebGL1: + void bufferData(GLenum target, GLsizeiptr size, GLenum usage); + void bufferData(GLenum target, ArrayBuffer? srcData, GLenum usage); + void bufferData(GLenum target, ArrayBufferView srcData, GLenum usage); + void bufferSubData(GLenum target, GLintptr offset, ArrayBuffer srcData); + void bufferSubData(GLenum target, GLintptr offset, ArrayBufferView srcData); + // WebGL2: + void bufferData(GLenum target, ArrayBufferView srcData, GLenum usage, + GLuint srcOffset, optional GLuint length = 0); + void bufferSubData(GLenum target, GLintptr dstByteOffset, ArrayBufferView srcData, + GLuint srcOffset, optional GLuint length = 0); + + void copyBufferSubData(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, + GLintptr writeOffset, GLsizeiptr size); + // MapBufferRange, in particular its read-only and write-only modes, + // can not be exposed safely to JavaScript. GetBufferSubData + // replaces it for the purpose of fetching data back from the GPU. + void getBufferSubData(GLenum target, GLintptr srcByteOffset, ArrayBufferView dstData, + optional GLuint dstOffset = 0, optional GLuint length = 0); + + /* Framebuffer objects */ + void blitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, + GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); + void framebufferTextureLayer(GLenum target, GLenum attachment, WebGLTexture? texture, GLint level, + GLint layer); + + [Throws] + void invalidateFramebuffer(GLenum target, sequence<GLenum> attachments); + + [Throws] + void invalidateSubFramebuffer(GLenum target, sequence<GLenum> attachments, + GLint x, GLint y, GLsizei width, GLsizei height); + + void readBuffer(GLenum src); + + /* Renderbuffer objects */ + [Throws] + any getInternalformatParameter(GLenum target, GLenum internalformat, GLenum pname); + void renderbufferStorageMultisample(GLenum target, GLsizei samples, GLenum internalformat, + GLsizei width, GLsizei height); + + /* Texture objects */ + void texStorage2D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, + GLsizei height); + void texStorage3D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, + GLsizei height, GLsizei depth); + + // WebGL1 legacy entrypoints: + [Throws] // Another overhead throws. + void texImage2D(GLenum target, GLint level, GLint internalformat, + GLsizei width, GLsizei height, GLint border, GLenum format, + GLenum type, ArrayBufferView? pixels); + [Throws] + void texImage2D(GLenum target, GLint level, GLint internalformat, + GLenum format, GLenum type, HTMLCanvasElement source); // May throw DOMException + [Throws] + void texImage2D(GLenum target, GLint level, GLint internalformat, + GLenum format, GLenum type, HTMLImageElement source); // May throw DOMException + [Throws] + void texImage2D(GLenum target, GLint level, GLint internalformat, + GLenum format, GLenum type, HTMLVideoElement source); // May throw DOMException + [Throws] // Another overhead throws. + void texImage2D(GLenum target, GLint level, GLint internalformat, + GLenum format, GLenum type, ImageBitmap source); + [Throws] // Another overhead throws. + void texImage2D(GLenum target, GLint level, GLint internalformat, + GLenum format, GLenum type, ImageData source); + + [Throws] // Another overhead throws. + void texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, + GLsizei width, GLsizei height, + GLenum format, GLenum type, ArrayBufferView? pixels); + [Throws] + void texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, + GLenum format, GLenum type, HTMLCanvasElement source); // May throw DOMException + [Throws] + void texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, + GLenum format, GLenum type, HTMLImageElement source); // May throw DOMException + [Throws] + void texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, + GLenum format, GLenum type, HTMLVideoElement source); // May throw DOMException + [Throws] // Another overhead throws. + void texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, + GLenum format, GLenum type, ImageBitmap source); + [Throws] // Another overhead throws. + void texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, + GLenum format, GLenum type, ImageData source); + + // WebGL2 entrypoints: + [Throws] // Another overhead throws. + void texImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, + GLint border, GLenum format, GLenum type, GLintptr pboOffset); + [Throws] + void texImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, + GLint border, GLenum format, GLenum type, + HTMLCanvasElement source); // May throw DOMException + [Throws] + void texImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, + GLint border, GLenum format, GLenum type, + HTMLImageElement source); // May throw DOMException + [Throws] + void texImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, + GLint border, GLenum format, GLenum type, + HTMLVideoElement source); // May throw DOMException + [Throws] // Another overhead throws. + void texImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, + GLint border, GLenum format, GLenum type, + ImageBitmap source); + [Throws] // Another overhead throws. + void texImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, + GLint border, GLenum format, GLenum type, + ImageData source); + [Throws] // Another overhead throws. + void texImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, + GLint border, GLenum format, GLenum type, ArrayBufferView srcData, + GLuint srcOffset); + + [Throws] // Another overhead throws. + void texImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, + GLsizei depth, GLint border, GLenum format, GLenum type, GLintptr pboOffset); + [Throws] + void texImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, + GLsizei depth, GLint border, GLenum format, GLenum type, + HTMLCanvasElement source); // May throw DOMException + [Throws] + void texImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, + GLsizei depth, GLint border, GLenum format, GLenum type, + HTMLImageElement source); // May throw DOMException + [Throws] + void texImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, + GLsizei depth, GLint border, GLenum format, GLenum type, + HTMLVideoElement source); // May throw DOMException + [Throws] // Another overhead throws. + void texImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, + GLsizei depth, GLint border, GLenum format, GLenum type, + ImageBitmap source); + [Throws] // Another overhead throws. + void texImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, + GLsizei depth, GLint border, GLenum format, GLenum type, + ImageData source); + [Throws] // Another overhead throws. + void texImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, + GLsizei depth, GLint border, GLenum format, GLenum type, ArrayBufferView? srcData); + [Throws] // Another overhead throws. + void texImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, + GLsizei depth, GLint border, GLenum format, GLenum type, ArrayBufferView srcData, + GLuint srcOffset); + + [Throws] // Another overhead throws. + void texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, + GLsizei height, GLenum format, GLenum type, GLintptr pboOffset); + [Throws] + void texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, + GLsizei height, GLenum format, GLenum type, + HTMLCanvasElement source); // May throw DOMException + [Throws] + void texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, + GLsizei height, GLenum format, GLenum type, + HTMLImageElement source); // May throw DOMException + [Throws] + void texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, + GLsizei height, GLenum format, GLenum type, + HTMLVideoElement source); // May throw DOMException + [Throws] // Another overhead throws. + void texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, + GLsizei height, GLenum format, GLenum type, + ImageBitmap source); + [Throws] // Another overhead throws. + void texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, + GLsizei height, GLenum format, GLenum type, + ImageData source); + [Throws] // Another overhead throws. + void texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, + GLsizei height, GLenum format, GLenum type, ArrayBufferView srcData, + GLuint srcOffset); + + [Throws] // Another overhead throws. + void texSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, + GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, + GLintptr pboOffset); + [Throws] + void texSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, + GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, + HTMLCanvasElement source); // May throw DOMException + [Throws] + void texSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, + GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, + HTMLImageElement source); // May throw DOMException + [Throws] + void texSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, + GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, + HTMLVideoElement source); // May throw DOMException + [Throws] // Another overhead throws. + void texSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, + GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, + ImageBitmap source); + [Throws] // Another overhead throws. + void texSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, + GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, + ImageData source); + [Throws] // Another overhead throws. + void texSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, + GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, + ArrayBufferView? srcData, optional GLuint srcOffset = 0); + + void copyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, + GLint x, GLint y, GLsizei width, GLsizei height); + + void compressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, + GLsizei height, GLint border, GLintptr offset); + void compressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, + GLsizei height, GLint border, ArrayBufferView srcData, + optional GLuint srcOffset = 0, optional GLuint srcLengthOverride = 0); + + void compressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width, + GLsizei height, GLsizei depth, GLint border, GLintptr offset); + void compressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width, + GLsizei height, GLsizei depth, GLint border, ArrayBufferView srcData, + optional GLuint srcOffset = 0, optional GLuint srcLengthOverride = 0); + + void compressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, + GLsizei width, GLsizei height, GLenum format, GLintptr offset); + void compressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, + GLsizei width, GLsizei height, GLenum format, + ArrayBufferView srcData, + optional GLuint srcOffset = 0, + optional GLuint srcLengthOverride = 0); + + void compressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, + GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, + GLenum format, GLintptr offset); + void compressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, + GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, + GLenum format, ArrayBufferView srcData, + optional GLuint srcOffset = 0, + optional GLuint srcLengthOverride = 0); + + /* Programs and shaders */ + [WebGLHandlesContextLoss] GLint getFragDataLocation(WebGLProgram program, DOMString name); + + /* Uniforms */ + void uniform1ui(WebGLUniformLocation? location, GLuint v0); + void uniform2ui(WebGLUniformLocation? location, GLuint v0, GLuint v1); + void uniform3ui(WebGLUniformLocation? location, GLuint v0, GLuint v1, GLuint v2); + void uniform4ui(WebGLUniformLocation? location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); + + void uniform1fv(WebGLUniformLocation? location, Float32List data, optional GLuint srcOffset = 0, + optional GLuint srcLength = 0); + void uniform2fv(WebGLUniformLocation? location, Float32List data, optional GLuint srcOffset = 0, + optional GLuint srcLength = 0); + void uniform3fv(WebGLUniformLocation? location, Float32List data, optional GLuint srcOffset = 0, + optional GLuint srcLength = 0); + void uniform4fv(WebGLUniformLocation? location, Float32List data, optional GLuint srcOffset = 0, + optional GLuint srcLength = 0); + + void uniform1iv(WebGLUniformLocation? location, Int32List data, optional GLuint srcOffset = 0, + optional GLuint srcLength = 0); + void uniform2iv(WebGLUniformLocation? location, Int32List data, optional GLuint srcOffset = 0, + optional GLuint srcLength = 0); + void uniform3iv(WebGLUniformLocation? location, Int32List data, optional GLuint srcOffset = 0, + optional GLuint srcLength = 0); + void uniform4iv(WebGLUniformLocation? location, Int32List data, optional GLuint srcOffset = 0, + optional GLuint srcLength = 0); + + void uniform1uiv(WebGLUniformLocation? location, Uint32List data, optional GLuint srcOffset = 0, + optional GLuint srcLength = 0); + void uniform2uiv(WebGLUniformLocation? location, Uint32List data, optional GLuint srcOffset = 0, + optional GLuint srcLength = 0); + void uniform3uiv(WebGLUniformLocation? location, Uint32List data, optional GLuint srcOffset = 0, + optional GLuint srcLength = 0); + void uniform4uiv(WebGLUniformLocation? location, Uint32List data, optional GLuint srcOffset = 0, + optional GLuint srcLength = 0); + + void uniformMatrix2fv(WebGLUniformLocation? location, GLboolean transpose, Float32List data, + optional GLuint srcOffset = 0, optional GLuint srcLength = 0); + void uniformMatrix3x2fv(WebGLUniformLocation? location, GLboolean transpose, Float32List data, + optional GLuint srcOffset = 0, optional GLuint srcLength = 0); + void uniformMatrix4x2fv(WebGLUniformLocation? location, GLboolean transpose, Float32List data, + optional GLuint srcOffset = 0, optional GLuint srcLength = 0); + + void uniformMatrix2x3fv(WebGLUniformLocation? location, GLboolean transpose, Float32List data, + optional GLuint srcOffset = 0, optional GLuint srcLength = 0); + void uniformMatrix3fv(WebGLUniformLocation? location, GLboolean transpose, Float32List data, + optional GLuint srcOffset = 0, optional GLuint srcLength = 0); + void uniformMatrix4x3fv(WebGLUniformLocation? location, GLboolean transpose, Float32List data, + optional GLuint srcOffset = 0, optional GLuint srcLength = 0); + + void uniformMatrix2x4fv(WebGLUniformLocation? location, GLboolean transpose, Float32List data, + optional GLuint srcOffset = 0, optional GLuint srcLength = 0); + void uniformMatrix3x4fv(WebGLUniformLocation? location, GLboolean transpose, Float32List data, + optional GLuint srcOffset = 0, optional GLuint srcLength = 0); + void uniformMatrix4fv(WebGLUniformLocation? location, GLboolean transpose, Float32List data, + optional GLuint srcOffset = 0, optional GLuint srcLength = 0); + + /* Vertex attribs */ + void vertexAttribI4i(GLuint index, GLint x, GLint y, GLint z, GLint w); + void vertexAttribI4iv(GLuint index, Int32List values); + void vertexAttribI4ui(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); + void vertexAttribI4uiv(GLuint index, Uint32List values); + void vertexAttribIPointer(GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset); + + /* Writing to the drawing buffer */ + void vertexAttribDivisor(GLuint index, GLuint divisor); + void drawArraysInstanced(GLenum mode, GLint first, GLsizei count, GLsizei instanceCount); + void drawElementsInstanced(GLenum mode, GLsizei count, GLenum type, GLintptr offset, GLsizei instanceCount); + void drawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, GLintptr offset); + + /* Reading back pixels */ + // WebGL1: + [Throws] // Throws on readback in a write-only context. + void readPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, + ArrayBufferView? dstData); + // WebGL2: + [Throws] // Throws on readback in a write-only context. + void readPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, + GLintptr offset); + [Throws] // Throws on readback in a write-only context. + void readPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, + ArrayBufferView dstData, GLuint dstOffset); + + /* Multiple Render Targets */ + void drawBuffers(sequence<GLenum> buffers); + + void clearBufferfv(GLenum buffer, GLint drawbuffer, Float32List values, + optional GLuint srcOffset = 0); + void clearBufferiv(GLenum buffer, GLint drawbuffer, Int32List values, + optional GLuint srcOffset = 0); + void clearBufferuiv(GLenum buffer, GLint drawbuffer, Uint32List values, + optional GLuint srcOffset = 0); + + void clearBufferfi(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil); + + /* Query Objects */ + WebGLQuery? createQuery(); + void deleteQuery(WebGLQuery? query); + [WebGLHandlesContextLoss] GLboolean isQuery(WebGLQuery? query); + void beginQuery(GLenum target, WebGLQuery query); + void endQuery(GLenum target); + any getQuery(GLenum target, GLenum pname); + any getQueryParameter(WebGLQuery query, GLenum pname); + + /* Sampler Objects */ + WebGLSampler? createSampler(); + void deleteSampler(WebGLSampler? sampler); + [WebGLHandlesContextLoss] GLboolean isSampler(WebGLSampler? sampler); + void bindSampler(GLuint unit, WebGLSampler? sampler); + void samplerParameteri(WebGLSampler sampler, GLenum pname, GLint param); + void samplerParameterf(WebGLSampler sampler, GLenum pname, GLfloat param); + any getSamplerParameter(WebGLSampler sampler, GLenum pname); + + /* Sync objects */ + WebGLSync? fenceSync(GLenum condition, GLbitfield flags); + [WebGLHandlesContextLoss] GLboolean isSync(WebGLSync? sync); + void deleteSync(WebGLSync? sync); + GLenum clientWaitSync(WebGLSync sync, GLbitfield flags, GLuint64 timeout); + void waitSync(WebGLSync sync, GLbitfield flags, GLint64 timeout); + any getSyncParameter(WebGLSync sync, GLenum pname); + + /* Transform Feedback */ + WebGLTransformFeedback? createTransformFeedback(); + void deleteTransformFeedback(WebGLTransformFeedback? tf); + [WebGLHandlesContextLoss] GLboolean isTransformFeedback(WebGLTransformFeedback? tf); + void bindTransformFeedback(GLenum target, WebGLTransformFeedback? tf); + void beginTransformFeedback(GLenum primitiveMode); + void endTransformFeedback(); + void transformFeedbackVaryings(WebGLProgram program, sequence<DOMString> varyings, GLenum bufferMode); + [NewObject] + WebGLActiveInfo? getTransformFeedbackVarying(WebGLProgram program, GLuint index); + void pauseTransformFeedback(); + void resumeTransformFeedback(); + + /* Uniform Buffer Objects and Transform Feedback Buffers */ + void bindBufferBase(GLenum target, GLuint index, WebGLBuffer? buffer); + void bindBufferRange(GLenum target, GLuint index, WebGLBuffer? buffer, GLintptr offset, GLsizeiptr size); + [Throws] // GetOrCreateDOMReflector can fail. + any getIndexedParameter(GLenum target, GLuint index); + sequence<GLuint>? getUniformIndices(WebGLProgram program, sequence<DOMString> uniformNames); + any getActiveUniforms(WebGLProgram program, sequence<GLuint> uniformIndices, GLenum pname); + GLuint getUniformBlockIndex(WebGLProgram program, DOMString uniformBlockName); + [Throws] // Creating a Uint32Array can fail. + any getActiveUniformBlockParameter(WebGLProgram program, GLuint uniformBlockIndex, GLenum pname); + DOMString? getActiveUniformBlockName(WebGLProgram program, GLuint uniformBlockIndex); + void uniformBlockBinding(WebGLProgram program, GLuint uniformBlockIndex, GLuint uniformBlockBinding); + + /* Vertex Array Objects */ + WebGLVertexArrayObject? createVertexArray(); + void deleteVertexArray(WebGLVertexArrayObject? vertexArray); + [WebGLHandlesContextLoss] GLboolean isVertexArray(WebGLVertexArrayObject? vertexArray); + void bindVertexArray(WebGLVertexArrayObject? array); +}; + +WebGL2RenderingContextBase implements WebGLRenderingContextBase; +WebGL2RenderingContext implements WebGL2RenderingContextBase; + +[NoInterfaceObject] +interface EXT_color_buffer_float { +}; diff --git a/dom/webidl/WebGLContextEvent.webidl b/dom/webidl/WebGLContextEvent.webidl new file mode 100644 index 0000000000..8b227da729 --- /dev/null +++ b/dom/webidl/WebGLContextEvent.webidl @@ -0,0 +1,20 @@ +/* -*- 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/. + + * The origin of this IDL file is + * https://www.khronos.org/registry/webgl/specs/latest/1.0/#fire-a-webgl-context-event + */ + +[Constructor(DOMString type, optional WebGLContextEventInit eventInit), + Exposed=(Window,Worker), + Func="mozilla::dom::OffscreenCanvas::PrefEnabledOnWorkerThread"] +interface WebGLContextEvent : Event { + readonly attribute DOMString statusMessage; +}; + +// EventInit is defined in the DOM4 specification. +dictionary WebGLContextEventInit : EventInit { + DOMString statusMessage = ""; +}; diff --git a/dom/webidl/WebGLRenderingContext.webidl b/dom/webidl/WebGLRenderingContext.webidl new file mode 100644 index 0000000000..dd0e6ff690 --- /dev/null +++ b/dom/webidl/WebGLRenderingContext.webidl @@ -0,0 +1,1048 @@ +/* -*- Mode: IDL; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* 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/. + * + * The origin of this IDL file is + * https://www.khronos.org/registry/webgl/specs/latest/webgl.idl + * + * Copyright © 2012 Khronos Group + */ + +// WebGL IDL definitions scraped from the Khronos specification: +// https://www.khronos.org/registry/webgl/specs/latest/ +// +// This IDL depends on the typed array specification defined at: +// https://www.khronos.org/registry/typedarray/specs/latest/typedarrays.idl + +typedef unsigned long GLenum; +typedef boolean GLboolean; +typedef unsigned long GLbitfield; +typedef byte GLbyte; /* 'byte' should be a signed 8 bit type. */ +typedef short GLshort; +typedef long GLint; +typedef long GLsizei; +typedef long long GLintptr; +typedef long long GLsizeiptr; +// Ideally the typedef below would use 'unsigned byte', but that doesn't currently exist in Web IDL. +typedef octet GLubyte; /* 'octet' should be an unsigned 8 bit type. */ +typedef unsigned short GLushort; +typedef unsigned long GLuint; +typedef unrestricted float GLfloat; +typedef unrestricted float GLclampf; +typedef unsigned long long GLuint64EXT; + +dictionary WebGLContextAttributes { + // boolean alpha = true; + // We deviate from the spec here. + // If alpha isn't specified, we rely on a pref ("webgl.default-no-alpha") + GLboolean alpha; + GLboolean depth = true; + GLboolean stencil = false; + GLboolean antialias = true; + GLboolean premultipliedAlpha = true; + GLboolean preserveDrawingBuffer = false; + GLboolean failIfMajorPerformanceCaveat = false; +}; + +[Exposed=(Window,Worker), + Func="mozilla::dom::OffscreenCanvas::PrefEnabledOnWorkerThread"] +interface WebGLBuffer { +}; + +[Exposed=(Window,Worker), + Func="mozilla::dom::OffscreenCanvas::PrefEnabledOnWorkerThread"] +interface WebGLFramebuffer { +}; + +[Exposed=(Window,Worker), + Func="mozilla::dom::OffscreenCanvas::PrefEnabledOnWorkerThread"] +interface WebGLProgram { +}; + +[Exposed=(Window,Worker), + Func="mozilla::dom::OffscreenCanvas::PrefEnabledOnWorkerThread"] +interface WebGLRenderbuffer { +}; + +[Exposed=(Window,Worker), + Func="mozilla::dom::OffscreenCanvas::PrefEnabledOnWorkerThread"] +interface WebGLShader { +}; + +[Exposed=(Window,Worker), + Func="mozilla::dom::OffscreenCanvas::PrefEnabledOnWorkerThread"] +interface WebGLTexture { +}; + +[Exposed=(Window,Worker), + Func="mozilla::dom::OffscreenCanvas::PrefEnabledOnWorkerThread"] +interface WebGLUniformLocation { +}; + +interface WebGLVertexArrayObject { +}; + +[Exposed=(Window,Worker), + Func="mozilla::dom::OffscreenCanvas::PrefEnabledOnWorkerThread"] +interface WebGLActiveInfo { + readonly attribute GLint size; + readonly attribute GLenum type; + readonly attribute DOMString name; +}; + +[Exposed=(Window,Worker), + Func="mozilla::dom::OffscreenCanvas::PrefEnabledOnWorkerThread"] +interface WebGLShaderPrecisionFormat { + readonly attribute GLint rangeMin; + readonly attribute GLint rangeMax; + readonly attribute GLint precision; +}; + +typedef (Float32Array or sequence<GLfloat>) Float32List; +typedef (Int32Array or sequence<GLint>) Int32List; + +// Shared interface for the things that WebGLRenderingContext and +// WebGL2RenderingContext have in common. This doesn't have all the things they +// have in common, because we don't support splitting multiple overloads of the +// same method across separate interfaces and pulling them in with "implements". +[Exposed=(Window, Worker), NoInterfaceObject] +interface WebGLRenderingContextBase { + /* ClearBufferMask */ + const GLenum DEPTH_BUFFER_BIT = 0x00000100; + const GLenum STENCIL_BUFFER_BIT = 0x00000400; + const GLenum COLOR_BUFFER_BIT = 0x00004000; + + /* BeginMode */ + const GLenum POINTS = 0x0000; + const GLenum LINES = 0x0001; + const GLenum LINE_LOOP = 0x0002; + const GLenum LINE_STRIP = 0x0003; + const GLenum TRIANGLES = 0x0004; + const GLenum TRIANGLE_STRIP = 0x0005; + const GLenum TRIANGLE_FAN = 0x0006; + + /* AlphaFunction (not supported in ES20) */ + /* NEVER */ + /* LESS */ + /* EQUAL */ + /* LEQUAL */ + /* GREATER */ + /* NOTEQUAL */ + /* GEQUAL */ + /* ALWAYS */ + + /* BlendingFactorDest */ + const GLenum ZERO = 0; + const GLenum ONE = 1; + const GLenum SRC_COLOR = 0x0300; + const GLenum ONE_MINUS_SRC_COLOR = 0x0301; + const GLenum SRC_ALPHA = 0x0302; + const GLenum ONE_MINUS_SRC_ALPHA = 0x0303; + const GLenum DST_ALPHA = 0x0304; + const GLenum ONE_MINUS_DST_ALPHA = 0x0305; + + /* BlendingFactorSrc */ + /* ZERO */ + /* ONE */ + const GLenum DST_COLOR = 0x0306; + const GLenum ONE_MINUS_DST_COLOR = 0x0307; + const GLenum SRC_ALPHA_SATURATE = 0x0308; + /* SRC_ALPHA */ + /* ONE_MINUS_SRC_ALPHA */ + /* DST_ALPHA */ + /* ONE_MINUS_DST_ALPHA */ + + /* BlendEquationSeparate */ + const GLenum FUNC_ADD = 0x8006; + const GLenum BLEND_EQUATION = 0x8009; + const GLenum BLEND_EQUATION_RGB = 0x8009; /* same as BLEND_EQUATION */ + const GLenum BLEND_EQUATION_ALPHA = 0x883D; + + /* BlendSubtract */ + const GLenum FUNC_SUBTRACT = 0x800A; + const GLenum FUNC_REVERSE_SUBTRACT = 0x800B; + + /* Separate Blend Functions */ + const GLenum BLEND_DST_RGB = 0x80C8; + const GLenum BLEND_SRC_RGB = 0x80C9; + const GLenum BLEND_DST_ALPHA = 0x80CA; + const GLenum BLEND_SRC_ALPHA = 0x80CB; + const GLenum CONSTANT_COLOR = 0x8001; + const GLenum ONE_MINUS_CONSTANT_COLOR = 0x8002; + const GLenum CONSTANT_ALPHA = 0x8003; + const GLenum ONE_MINUS_CONSTANT_ALPHA = 0x8004; + const GLenum BLEND_COLOR = 0x8005; + + /* Buffer Objects */ + const GLenum ARRAY_BUFFER = 0x8892; + const GLenum ELEMENT_ARRAY_BUFFER = 0x8893; + const GLenum ARRAY_BUFFER_BINDING = 0x8894; + const GLenum ELEMENT_ARRAY_BUFFER_BINDING = 0x8895; + + const GLenum STREAM_DRAW = 0x88E0; + const GLenum STATIC_DRAW = 0x88E4; + const GLenum DYNAMIC_DRAW = 0x88E8; + + const GLenum BUFFER_SIZE = 0x8764; + const GLenum BUFFER_USAGE = 0x8765; + + const GLenum CURRENT_VERTEX_ATTRIB = 0x8626; + + /* CullFaceMode */ + const GLenum FRONT = 0x0404; + const GLenum BACK = 0x0405; + const GLenum FRONT_AND_BACK = 0x0408; + + /* DepthFunction */ + /* NEVER */ + /* LESS */ + /* EQUAL */ + /* LEQUAL */ + /* GREATER */ + /* NOTEQUAL */ + /* GEQUAL */ + /* ALWAYS */ + + /* EnableCap */ + /* TEXTURE_2D */ + const GLenum CULL_FACE = 0x0B44; + const GLenum BLEND = 0x0BE2; + const GLenum DITHER = 0x0BD0; + const GLenum STENCIL_TEST = 0x0B90; + const GLenum DEPTH_TEST = 0x0B71; + const GLenum SCISSOR_TEST = 0x0C11; + const GLenum POLYGON_OFFSET_FILL = 0x8037; + const GLenum SAMPLE_ALPHA_TO_COVERAGE = 0x809E; + const GLenum SAMPLE_COVERAGE = 0x80A0; + + /* ErrorCode */ + const GLenum NO_ERROR = 0; + const GLenum INVALID_ENUM = 0x0500; + const GLenum INVALID_VALUE = 0x0501; + const GLenum INVALID_OPERATION = 0x0502; + const GLenum OUT_OF_MEMORY = 0x0505; + + /* FrontFaceDirection */ + const GLenum CW = 0x0900; + const GLenum CCW = 0x0901; + + /* GetPName */ + const GLenum LINE_WIDTH = 0x0B21; + const GLenum ALIASED_POINT_SIZE_RANGE = 0x846D; + const GLenum ALIASED_LINE_WIDTH_RANGE = 0x846E; + const GLenum CULL_FACE_MODE = 0x0B45; + const GLenum FRONT_FACE = 0x0B46; + const GLenum DEPTH_RANGE = 0x0B70; + const GLenum DEPTH_WRITEMASK = 0x0B72; + const GLenum DEPTH_CLEAR_VALUE = 0x0B73; + const GLenum DEPTH_FUNC = 0x0B74; + const GLenum STENCIL_CLEAR_VALUE = 0x0B91; + const GLenum STENCIL_FUNC = 0x0B92; + const GLenum STENCIL_FAIL = 0x0B94; + const GLenum STENCIL_PASS_DEPTH_FAIL = 0x0B95; + const GLenum STENCIL_PASS_DEPTH_PASS = 0x0B96; + const GLenum STENCIL_REF = 0x0B97; + const GLenum STENCIL_VALUE_MASK = 0x0B93; + const GLenum STENCIL_WRITEMASK = 0x0B98; + const GLenum STENCIL_BACK_FUNC = 0x8800; + const GLenum STENCIL_BACK_FAIL = 0x8801; + const GLenum STENCIL_BACK_PASS_DEPTH_FAIL = 0x8802; + const GLenum STENCIL_BACK_PASS_DEPTH_PASS = 0x8803; + const GLenum STENCIL_BACK_REF = 0x8CA3; + const GLenum STENCIL_BACK_VALUE_MASK = 0x8CA4; + const GLenum STENCIL_BACK_WRITEMASK = 0x8CA5; + const GLenum VIEWPORT = 0x0BA2; + const GLenum SCISSOR_BOX = 0x0C10; + /* SCISSOR_TEST */ + const GLenum COLOR_CLEAR_VALUE = 0x0C22; + const GLenum COLOR_WRITEMASK = 0x0C23; + const GLenum UNPACK_ALIGNMENT = 0x0CF5; + const GLenum PACK_ALIGNMENT = 0x0D05; + const GLenum MAX_TEXTURE_SIZE = 0x0D33; + const GLenum MAX_VIEWPORT_DIMS = 0x0D3A; + const GLenum SUBPIXEL_BITS = 0x0D50; + const GLenum RED_BITS = 0x0D52; + const GLenum GREEN_BITS = 0x0D53; + const GLenum BLUE_BITS = 0x0D54; + const GLenum ALPHA_BITS = 0x0D55; + const GLenum DEPTH_BITS = 0x0D56; + const GLenum STENCIL_BITS = 0x0D57; + const GLenum POLYGON_OFFSET_UNITS = 0x2A00; + /* POLYGON_OFFSET_FILL */ + const GLenum POLYGON_OFFSET_FACTOR = 0x8038; + const GLenum TEXTURE_BINDING_2D = 0x8069; + const GLenum SAMPLE_BUFFERS = 0x80A8; + const GLenum SAMPLES = 0x80A9; + const GLenum SAMPLE_COVERAGE_VALUE = 0x80AA; + const GLenum SAMPLE_COVERAGE_INVERT = 0x80AB; + + /* GetTextureParameter */ + /* TEXTURE_MAG_FILTER */ + /* TEXTURE_MIN_FILTER */ + /* TEXTURE_WRAP_S */ + /* TEXTURE_WRAP_T */ + + const GLenum COMPRESSED_TEXTURE_FORMATS = 0x86A3; + + /* HintMode */ + const GLenum DONT_CARE = 0x1100; + const GLenum FASTEST = 0x1101; + const GLenum NICEST = 0x1102; + + /* HintTarget */ + const GLenum GENERATE_MIPMAP_HINT = 0x8192; + + /* DataType */ + const GLenum BYTE = 0x1400; + const GLenum UNSIGNED_BYTE = 0x1401; + const GLenum SHORT = 0x1402; + const GLenum UNSIGNED_SHORT = 0x1403; + const GLenum INT = 0x1404; + const GLenum UNSIGNED_INT = 0x1405; + const GLenum FLOAT = 0x1406; + + /* PixelFormat */ + const GLenum DEPTH_COMPONENT = 0x1902; + const GLenum ALPHA = 0x1906; + const GLenum RGB = 0x1907; + const GLenum RGBA = 0x1908; + const GLenum LUMINANCE = 0x1909; + const GLenum LUMINANCE_ALPHA = 0x190A; + + /* PixelType */ + /* UNSIGNED_BYTE */ + const GLenum UNSIGNED_SHORT_4_4_4_4 = 0x8033; + const GLenum UNSIGNED_SHORT_5_5_5_1 = 0x8034; + const GLenum UNSIGNED_SHORT_5_6_5 = 0x8363; + + /* Shaders */ + const GLenum FRAGMENT_SHADER = 0x8B30; + const GLenum VERTEX_SHADER = 0x8B31; + const GLenum MAX_VERTEX_ATTRIBS = 0x8869; + const GLenum MAX_VERTEX_UNIFORM_VECTORS = 0x8DFB; + const GLenum MAX_VARYING_VECTORS = 0x8DFC; + const GLenum MAX_COMBINED_TEXTURE_IMAGE_UNITS = 0x8B4D; + const GLenum MAX_VERTEX_TEXTURE_IMAGE_UNITS = 0x8B4C; + const GLenum MAX_TEXTURE_IMAGE_UNITS = 0x8872; + const GLenum MAX_FRAGMENT_UNIFORM_VECTORS = 0x8DFD; + const GLenum SHADER_TYPE = 0x8B4F; + const GLenum DELETE_STATUS = 0x8B80; + const GLenum LINK_STATUS = 0x8B82; + const GLenum VALIDATE_STATUS = 0x8B83; + const GLenum ATTACHED_SHADERS = 0x8B85; + const GLenum ACTIVE_UNIFORMS = 0x8B86; + const GLenum ACTIVE_ATTRIBUTES = 0x8B89; + const GLenum SHADING_LANGUAGE_VERSION = 0x8B8C; + const GLenum CURRENT_PROGRAM = 0x8B8D; + + /* StencilFunction */ + const GLenum NEVER = 0x0200; + const GLenum LESS = 0x0201; + const GLenum EQUAL = 0x0202; + const GLenum LEQUAL = 0x0203; + const GLenum GREATER = 0x0204; + const GLenum NOTEQUAL = 0x0205; + const GLenum GEQUAL = 0x0206; + const GLenum ALWAYS = 0x0207; + + /* StencilOp */ + /* ZERO */ + const GLenum KEEP = 0x1E00; + const GLenum REPLACE = 0x1E01; + const GLenum INCR = 0x1E02; + const GLenum DECR = 0x1E03; + const GLenum INVERT = 0x150A; + const GLenum INCR_WRAP = 0x8507; + const GLenum DECR_WRAP = 0x8508; + + /* StringName */ + const GLenum VENDOR = 0x1F00; + const GLenum RENDERER = 0x1F01; + const GLenum VERSION = 0x1F02; + + /* TextureMagFilter */ + const GLenum NEAREST = 0x2600; + const GLenum LINEAR = 0x2601; + + /* TextureMinFilter */ + /* NEAREST */ + /* LINEAR */ + const GLenum NEAREST_MIPMAP_NEAREST = 0x2700; + const GLenum LINEAR_MIPMAP_NEAREST = 0x2701; + const GLenum NEAREST_MIPMAP_LINEAR = 0x2702; + const GLenum LINEAR_MIPMAP_LINEAR = 0x2703; + + /* TextureParameterName */ + const GLenum TEXTURE_MAG_FILTER = 0x2800; + const GLenum TEXTURE_MIN_FILTER = 0x2801; + const GLenum TEXTURE_WRAP_S = 0x2802; + const GLenum TEXTURE_WRAP_T = 0x2803; + + /* TextureTarget */ + const GLenum TEXTURE_2D = 0x0DE1; + const GLenum TEXTURE = 0x1702; + + const GLenum TEXTURE_CUBE_MAP = 0x8513; + const GLenum TEXTURE_BINDING_CUBE_MAP = 0x8514; + const GLenum TEXTURE_CUBE_MAP_POSITIVE_X = 0x8515; + const GLenum TEXTURE_CUBE_MAP_NEGATIVE_X = 0x8516; + const GLenum TEXTURE_CUBE_MAP_POSITIVE_Y = 0x8517; + const GLenum TEXTURE_CUBE_MAP_NEGATIVE_Y = 0x8518; + const GLenum TEXTURE_CUBE_MAP_POSITIVE_Z = 0x8519; + const GLenum TEXTURE_CUBE_MAP_NEGATIVE_Z = 0x851A; + const GLenum MAX_CUBE_MAP_TEXTURE_SIZE = 0x851C; + + /* TextureUnit */ + const GLenum TEXTURE0 = 0x84C0; + const GLenum TEXTURE1 = 0x84C1; + const GLenum TEXTURE2 = 0x84C2; + const GLenum TEXTURE3 = 0x84C3; + const GLenum TEXTURE4 = 0x84C4; + const GLenum TEXTURE5 = 0x84C5; + const GLenum TEXTURE6 = 0x84C6; + const GLenum TEXTURE7 = 0x84C7; + const GLenum TEXTURE8 = 0x84C8; + const GLenum TEXTURE9 = 0x84C9; + const GLenum TEXTURE10 = 0x84CA; + const GLenum TEXTURE11 = 0x84CB; + const GLenum TEXTURE12 = 0x84CC; + const GLenum TEXTURE13 = 0x84CD; + const GLenum TEXTURE14 = 0x84CE; + const GLenum TEXTURE15 = 0x84CF; + const GLenum TEXTURE16 = 0x84D0; + const GLenum TEXTURE17 = 0x84D1; + const GLenum TEXTURE18 = 0x84D2; + const GLenum TEXTURE19 = 0x84D3; + const GLenum TEXTURE20 = 0x84D4; + const GLenum TEXTURE21 = 0x84D5; + const GLenum TEXTURE22 = 0x84D6; + const GLenum TEXTURE23 = 0x84D7; + const GLenum TEXTURE24 = 0x84D8; + const GLenum TEXTURE25 = 0x84D9; + const GLenum TEXTURE26 = 0x84DA; + const GLenum TEXTURE27 = 0x84DB; + const GLenum TEXTURE28 = 0x84DC; + const GLenum TEXTURE29 = 0x84DD; + const GLenum TEXTURE30 = 0x84DE; + const GLenum TEXTURE31 = 0x84DF; + const GLenum ACTIVE_TEXTURE = 0x84E0; + + /* TextureWrapMode */ + const GLenum REPEAT = 0x2901; + const GLenum CLAMP_TO_EDGE = 0x812F; + const GLenum MIRRORED_REPEAT = 0x8370; + + /* Uniform Types */ + const GLenum FLOAT_VEC2 = 0x8B50; + const GLenum FLOAT_VEC3 = 0x8B51; + const GLenum FLOAT_VEC4 = 0x8B52; + const GLenum INT_VEC2 = 0x8B53; + const GLenum INT_VEC3 = 0x8B54; + const GLenum INT_VEC4 = 0x8B55; + const GLenum BOOL = 0x8B56; + const GLenum BOOL_VEC2 = 0x8B57; + const GLenum BOOL_VEC3 = 0x8B58; + const GLenum BOOL_VEC4 = 0x8B59; + const GLenum FLOAT_MAT2 = 0x8B5A; + const GLenum FLOAT_MAT3 = 0x8B5B; + const GLenum FLOAT_MAT4 = 0x8B5C; + const GLenum SAMPLER_2D = 0x8B5E; + const GLenum SAMPLER_CUBE = 0x8B60; + + /* Vertex Arrays */ + const GLenum VERTEX_ATTRIB_ARRAY_ENABLED = 0x8622; + const GLenum VERTEX_ATTRIB_ARRAY_SIZE = 0x8623; + const GLenum VERTEX_ATTRIB_ARRAY_STRIDE = 0x8624; + const GLenum VERTEX_ATTRIB_ARRAY_TYPE = 0x8625; + const GLenum VERTEX_ATTRIB_ARRAY_NORMALIZED = 0x886A; + const GLenum VERTEX_ATTRIB_ARRAY_POINTER = 0x8645; + const GLenum VERTEX_ATTRIB_ARRAY_BUFFER_BINDING = 0x889F; + + /* Read Format */ + const GLenum IMPLEMENTATION_COLOR_READ_TYPE = 0x8B9A; + const GLenum IMPLEMENTATION_COLOR_READ_FORMAT = 0x8B9B; + + /* Shader Source */ + const GLenum COMPILE_STATUS = 0x8B81; + + /* Shader Precision-Specified Types */ + const GLenum LOW_FLOAT = 0x8DF0; + const GLenum MEDIUM_FLOAT = 0x8DF1; + const GLenum HIGH_FLOAT = 0x8DF2; + const GLenum LOW_INT = 0x8DF3; + const GLenum MEDIUM_INT = 0x8DF4; + const GLenum HIGH_INT = 0x8DF5; + + /* Framebuffer Object. */ + const GLenum FRAMEBUFFER = 0x8D40; + const GLenum RENDERBUFFER = 0x8D41; + + const GLenum RGBA4 = 0x8056; + const GLenum RGB5_A1 = 0x8057; + const GLenum RGB565 = 0x8D62; + const GLenum DEPTH_COMPONENT16 = 0x81A5; + const GLenum STENCIL_INDEX = 0x1901; + const GLenum STENCIL_INDEX8 = 0x8D48; + const GLenum DEPTH_STENCIL = 0x84F9; + + const GLenum RENDERBUFFER_WIDTH = 0x8D42; + const GLenum RENDERBUFFER_HEIGHT = 0x8D43; + const GLenum RENDERBUFFER_INTERNAL_FORMAT = 0x8D44; + const GLenum RENDERBUFFER_RED_SIZE = 0x8D50; + const GLenum RENDERBUFFER_GREEN_SIZE = 0x8D51; + const GLenum RENDERBUFFER_BLUE_SIZE = 0x8D52; + const GLenum RENDERBUFFER_ALPHA_SIZE = 0x8D53; + const GLenum RENDERBUFFER_DEPTH_SIZE = 0x8D54; + const GLenum RENDERBUFFER_STENCIL_SIZE = 0x8D55; + + const GLenum FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE = 0x8CD0; + const GLenum FRAMEBUFFER_ATTACHMENT_OBJECT_NAME = 0x8CD1; + const GLenum FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL = 0x8CD2; + const GLenum FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE = 0x8CD3; + + const GLenum COLOR_ATTACHMENT0 = 0x8CE0; + const GLenum DEPTH_ATTACHMENT = 0x8D00; + const GLenum STENCIL_ATTACHMENT = 0x8D20; + const GLenum DEPTH_STENCIL_ATTACHMENT = 0x821A; + + const GLenum NONE = 0; + + const GLenum FRAMEBUFFER_COMPLETE = 0x8CD5; + const GLenum FRAMEBUFFER_INCOMPLETE_ATTACHMENT = 0x8CD6; + const GLenum FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT = 0x8CD7; + const GLenum FRAMEBUFFER_INCOMPLETE_DIMENSIONS = 0x8CD9; + const GLenum FRAMEBUFFER_UNSUPPORTED = 0x8CDD; + + const GLenum FRAMEBUFFER_BINDING = 0x8CA6; + const GLenum RENDERBUFFER_BINDING = 0x8CA7; + const GLenum MAX_RENDERBUFFER_SIZE = 0x84E8; + + const GLenum INVALID_FRAMEBUFFER_OPERATION = 0x0506; + + /* WebGL-specific enums */ + const GLenum UNPACK_FLIP_Y_WEBGL = 0x9240; + const GLenum UNPACK_PREMULTIPLY_ALPHA_WEBGL = 0x9241; + const GLenum CONTEXT_LOST_WEBGL = 0x9242; + const GLenum UNPACK_COLORSPACE_CONVERSION_WEBGL = 0x9243; + const GLenum BROWSER_DEFAULT_WEBGL = 0x9244; + + // The canvas might actually be null in some cases, apparently. + readonly attribute (HTMLCanvasElement or OffscreenCanvas)? canvas; + readonly attribute GLsizei drawingBufferWidth; + readonly attribute GLsizei drawingBufferHeight; + + [WebGLHandlesContextLoss] WebGLContextAttributes? getContextAttributes(); + [WebGLHandlesContextLoss] boolean isContextLost(); + + [NeedsCallerType] + sequence<DOMString>? getSupportedExtensions(); + + [Throws, NeedsCallerType] + object? getExtension(DOMString name); + + void activeTexture(GLenum texture); + void attachShader(WebGLProgram program, WebGLShader shader); + void bindAttribLocation(WebGLProgram program, GLuint index, DOMString name); + void bindBuffer(GLenum target, WebGLBuffer? buffer); + void bindFramebuffer(GLenum target, WebGLFramebuffer? framebuffer); + void bindRenderbuffer(GLenum target, WebGLRenderbuffer? renderbuffer); + void bindTexture(GLenum target, WebGLTexture? texture); + void blendColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); + void blendEquation(GLenum mode); + void blendEquationSeparate(GLenum modeRGB, GLenum modeAlpha); + void blendFunc(GLenum sfactor, GLenum dfactor); + void blendFuncSeparate(GLenum srcRGB, GLenum dstRGB, + GLenum srcAlpha, GLenum dstAlpha); + + [WebGLHandlesContextLoss] GLenum checkFramebufferStatus(GLenum target); + void clear(GLbitfield mask); + void clearColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); + void clearDepth(GLclampf depth); + void clearStencil(GLint s); + void colorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); + void compileShader(WebGLShader shader); + + void copyTexImage2D(GLenum target, GLint level, GLenum internalformat, + GLint x, GLint y, GLsizei width, GLsizei height, + GLint border); + void copyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, + GLint x, GLint y, GLsizei width, GLsizei height); + + WebGLBuffer? createBuffer(); + WebGLFramebuffer? createFramebuffer(); + WebGLProgram? createProgram(); + WebGLRenderbuffer? createRenderbuffer(); + WebGLShader? createShader(GLenum type); + WebGLTexture? createTexture(); + + void cullFace(GLenum mode); + + void deleteBuffer(WebGLBuffer? buffer); + void deleteFramebuffer(WebGLFramebuffer? framebuffer); + void deleteProgram(WebGLProgram? program); + void deleteRenderbuffer(WebGLRenderbuffer? renderbuffer); + void deleteShader(WebGLShader? shader); + void deleteTexture(WebGLTexture? texture); + + void depthFunc(GLenum func); + void depthMask(GLboolean flag); + void depthRange(GLclampf zNear, GLclampf zFar); + void detachShader(WebGLProgram program, WebGLShader shader); + void disable(GLenum cap); + void disableVertexAttribArray(GLuint index); + void drawArrays(GLenum mode, GLint first, GLsizei count); + void drawElements(GLenum mode, GLsizei count, GLenum type, GLintptr offset); + + void enable(GLenum cap); + void enableVertexAttribArray(GLuint index); + void finish(); + void flush(); + void framebufferRenderbuffer(GLenum target, GLenum attachment, + GLenum renderbuffertarget, + WebGLRenderbuffer? renderbuffer); + void framebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, + WebGLTexture? texture, GLint level); + void frontFace(GLenum mode); + + void generateMipmap(GLenum target); + + [NewObject] + WebGLActiveInfo? getActiveAttrib(WebGLProgram program, GLuint index); + [NewObject] + WebGLActiveInfo? getActiveUniform(WebGLProgram program, GLuint index); + + sequence<WebGLShader>? getAttachedShaders(WebGLProgram program); + + [WebGLHandlesContextLoss] GLint getAttribLocation(WebGLProgram program, DOMString name); + + any getBufferParameter(GLenum target, GLenum pname); + [Throws] + any getParameter(GLenum pname); + + [WebGLHandlesContextLoss] GLenum getError(); + + [Throws] + any getFramebufferAttachmentParameter(GLenum target, GLenum attachment, + GLenum pname); + any getProgramParameter(WebGLProgram program, GLenum pname); + DOMString? getProgramInfoLog(WebGLProgram program); + any getRenderbufferParameter(GLenum target, GLenum pname); + any getShaderParameter(WebGLShader shader, GLenum pname); + + [NewObject] + WebGLShaderPrecisionFormat? getShaderPrecisionFormat(GLenum shadertype, GLenum precisiontype); + + DOMString? getShaderInfoLog(WebGLShader shader); + + DOMString? getShaderSource(WebGLShader shader); + + any getTexParameter(GLenum target, GLenum pname); + + any getUniform(WebGLProgram program, WebGLUniformLocation location); + + [NewObject] + WebGLUniformLocation? getUniformLocation(WebGLProgram program, DOMString name); + + [Throws] + any getVertexAttrib(GLuint index, GLenum pname); + + [WebGLHandlesContextLoss] GLintptr getVertexAttribOffset(GLuint index, GLenum pname); + + void hint(GLenum target, GLenum mode); + [WebGLHandlesContextLoss] GLboolean isBuffer(WebGLBuffer? buffer); + [WebGLHandlesContextLoss] GLboolean isEnabled(GLenum cap); + [WebGLHandlesContextLoss] GLboolean isFramebuffer(WebGLFramebuffer? framebuffer); + [WebGLHandlesContextLoss] GLboolean isProgram(WebGLProgram? program); + [WebGLHandlesContextLoss] GLboolean isRenderbuffer(WebGLRenderbuffer? renderbuffer); + [WebGLHandlesContextLoss] GLboolean isShader(WebGLShader? shader); + [WebGLHandlesContextLoss] GLboolean isTexture(WebGLTexture? texture); + void lineWidth(GLfloat width); + void linkProgram(WebGLProgram program); + void pixelStorei(GLenum pname, GLint param); + void polygonOffset(GLfloat factor, GLfloat units); + + void renderbufferStorage(GLenum target, GLenum internalformat, + GLsizei width, GLsizei height); + void sampleCoverage(GLclampf value, GLboolean invert); + void scissor(GLint x, GLint y, GLsizei width, GLsizei height); + + void shaderSource(WebGLShader shader, DOMString source); + + void stencilFunc(GLenum func, GLint ref, GLuint mask); + void stencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask); + void stencilMask(GLuint mask); + void stencilMaskSeparate(GLenum face, GLuint mask); + void stencilOp(GLenum fail, GLenum zfail, GLenum zpass); + void stencilOpSeparate(GLenum face, GLenum fail, GLenum zfail, GLenum zpass); + + void texParameterf(GLenum target, GLenum pname, GLfloat param); + void texParameteri(GLenum target, GLenum pname, GLint param); + + void uniform1f(WebGLUniformLocation? location, GLfloat x); + void uniform2f(WebGLUniformLocation? location, GLfloat x, GLfloat y); + void uniform3f(WebGLUniformLocation? location, GLfloat x, GLfloat y, GLfloat z); + void uniform4f(WebGLUniformLocation? location, GLfloat x, GLfloat y, GLfloat z, GLfloat w); + + void uniform1i(WebGLUniformLocation? location, GLint x); + void uniform2i(WebGLUniformLocation? location, GLint x, GLint y); + void uniform3i(WebGLUniformLocation? location, GLint x, GLint y, GLint z); + void uniform4i(WebGLUniformLocation? location, GLint x, GLint y, GLint z, GLint w); + + void useProgram(WebGLProgram? program); + void validateProgram(WebGLProgram program); + + void vertexAttrib1f(GLuint indx, GLfloat x); + void vertexAttrib1fv(GLuint indx, Float32List values); + void vertexAttrib2f(GLuint indx, GLfloat x, GLfloat y); + void vertexAttrib2fv(GLuint indx, Float32List values); + void vertexAttrib3f(GLuint indx, GLfloat x, GLfloat y, GLfloat z); + void vertexAttrib3fv(GLuint indx, Float32List values); + void vertexAttrib4f(GLuint indx, GLfloat x, GLfloat y, GLfloat z, GLfloat w); + void vertexAttrib4fv(GLuint indx, Float32List values); + void vertexAttribPointer(GLuint indx, GLint size, GLenum type, + GLboolean normalized, GLsizei stride, GLintptr offset); + + void viewport(GLint x, GLint y, GLsizei width, GLsizei height); +}; + +[Exposed=(Window,Worker), + Func="mozilla::dom::OffscreenCanvas::PrefEnabledOnWorkerThread"] +interface WebGLRenderingContext { + // bufferData has WebGL2 overloads. + void bufferData(GLenum target, GLsizeiptr size, GLenum usage); + void bufferData(GLenum target, ArrayBuffer? data, GLenum usage); + void bufferData(GLenum target, ArrayBufferView data, GLenum usage); + // bufferSubData has WebGL2 overloads. + void bufferSubData(GLenum target, GLintptr offset, ArrayBuffer data); + void bufferSubData(GLenum target, GLintptr offset, ArrayBufferView data); + + // compressedTexImage2D has WebGL2 overloads. + void compressedTexImage2D(GLenum target, GLint level, GLenum internalformat, + GLsizei width, GLsizei height, GLint border, + ArrayBufferView data); + // compressedTexSubImage2D has WebGL2 overloads. + void compressedTexSubImage2D(GLenum target, GLint level, + GLint xoffset, GLint yoffset, + GLsizei width, GLsizei height, GLenum format, + ArrayBufferView data); + + // readPixels has WebGL2 overloads. + [Throws] + void readPixels(GLint x, GLint y, GLsizei width, GLsizei height, + GLenum format, GLenum type, ArrayBufferView? pixels); + + // texImage2D has WebGL2 overloads. + // Overloads must share [Throws]. + [Throws] // Can't actually throw. + void texImage2D(GLenum target, GLint level, GLint internalformat, + GLsizei width, GLsizei height, GLint border, GLenum format, + GLenum type, ArrayBufferView? pixels); + [Throws] // Can't actually throw. + void texImage2D(GLenum target, GLint level, GLint internalformat, + GLenum format, GLenum type, ImageBitmap pixels); + [Throws] // Can't actually throw. + void texImage2D(GLenum target, GLint level, GLint internalformat, + GLenum format, GLenum type, ImageData pixels); + [Throws] + void texImage2D(GLenum target, GLint level, GLint internalformat, + GLenum format, GLenum type, HTMLImageElement image); // May throw DOMException + [Throws] + void texImage2D(GLenum target, GLint level, GLint internalformat, + GLenum format, GLenum type, HTMLCanvasElement canvas); // May throw DOMException + [Throws] + void texImage2D(GLenum target, GLint level, GLint internalformat, + GLenum format, GLenum type, HTMLVideoElement video); // May throw DOMException + + // texSubImage2D has WebGL2 overloads. + [Throws] // Can't actually throw. + void texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, + GLsizei width, GLsizei height, + GLenum format, GLenum type, ArrayBufferView? pixels); + [Throws] // Can't actually throw. + void texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, + GLenum format, GLenum type, ImageBitmap pixels); + [Throws] // Can't actually throw. + void texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, + GLenum format, GLenum type, ImageData pixels); + [Throws] + void texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, + GLenum format, GLenum type, HTMLImageElement image); // May throw DOMException + [Throws] + void texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, + GLenum format, GLenum type, HTMLCanvasElement canvas); // May throw DOMException + [Throws] + void texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, + GLenum format, GLenum type, HTMLVideoElement video); // May throw DOMException + + // uniform*fv have WebGL2 overloads, or rather extensions, that are not + // distinguishable from the WebGL1 versions when called with two arguments. + void uniform1fv(WebGLUniformLocation? location, Float32List data); + void uniform2fv(WebGLUniformLocation? location, Float32List data); + void uniform3fv(WebGLUniformLocation? location, Float32List data); + void uniform4fv(WebGLUniformLocation? location, Float32List data); + + // uniform*iv have WebGL2 overloads, or rather extensions, that are not + // distinguishable from the WebGL1 versions when called with two arguments. + void uniform1iv(WebGLUniformLocation? location, Int32List data); + void uniform2iv(WebGLUniformLocation? location, Int32List data); + void uniform3iv(WebGLUniformLocation? location, Int32List data); + void uniform4iv(WebGLUniformLocation? location, Int32List data); + + // uniformMatrix*fv have WebGL2 overloads, or rather extensions, that are + // not distinguishable from the WebGL1 versions when called with two + // arguments. + void uniformMatrix2fv(WebGLUniformLocation? location, GLboolean transpose, Float32List data); + void uniformMatrix3fv(WebGLUniformLocation? location, GLboolean transpose, Float32List data); + void uniformMatrix4fv(WebGLUniformLocation? location, GLboolean transpose, Float32List data); +}; + +WebGLRenderingContext implements WebGLRenderingContextBase; + +// For OffscreenCanvas +// Reference: https://wiki.whatwg.org/wiki/OffscreenCanvas +[Exposed=(Window,Worker)] +partial interface WebGLRenderingContext { + [Func="mozilla::dom::OffscreenCanvas::PrefEnabled"] + void commit(); +}; + +//////////////////////////////////////// +// specific extension interfaces + +[NoInterfaceObject] +interface WEBGL_compressed_texture_s3tc +{ + const GLenum COMPRESSED_RGB_S3TC_DXT1_EXT = 0x83F0; + const GLenum COMPRESSED_RGBA_S3TC_DXT1_EXT = 0x83F1; + const GLenum COMPRESSED_RGBA_S3TC_DXT3_EXT = 0x83F2; + const GLenum COMPRESSED_RGBA_S3TC_DXT5_EXT = 0x83F3; +}; + +[NoInterfaceObject] +interface WEBGL_compressed_texture_atc +{ + const GLenum COMPRESSED_RGB_ATC_WEBGL = 0x8C92; + const GLenum COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL = 0x8C93; + const GLenum COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL = 0x87EE; +}; + +[NoInterfaceObject] +interface WEBGL_compressed_texture_etc +{ + const GLenum COMPRESSED_R11_EAC = 0x9270; + const GLenum COMPRESSED_SIGNED_R11_EAC = 0x9271; + const GLenum COMPRESSED_RG11_EAC = 0x9272; + const GLenum COMPRESSED_SIGNED_RG11_EAC = 0x9273; + const GLenum COMPRESSED_RGB8_ETC2 = 0x9274; + const GLenum COMPRESSED_SRGB8_ETC2 = 0x9275; + const GLenum COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 = 0x9276; + const GLenum COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 = 0x9277; + const GLenum COMPRESSED_RGBA8_ETC2_EAC = 0x9278; + const GLenum COMPRESSED_SRGB8_ALPHA8_ETC2_EAC = 0x9279; +}; + +[NoInterfaceObject] +interface WEBGL_compressed_texture_etc1 +{ + const GLenum COMPRESSED_RGB_ETC1_WEBGL = 0x8D64; +}; + +[NoInterfaceObject] +interface WEBGL_compressed_texture_pvrtc +{ + const GLenum COMPRESSED_RGB_PVRTC_4BPPV1_IMG = 0x8C00; + const GLenum COMPRESSED_RGB_PVRTC_2BPPV1_IMG = 0x8C01; + const GLenum COMPRESSED_RGBA_PVRTC_4BPPV1_IMG = 0x8C02; + const GLenum COMPRESSED_RGBA_PVRTC_2BPPV1_IMG = 0x8C03; +}; + +[NoInterfaceObject] +interface WEBGL_debug_renderer_info +{ + const GLenum UNMASKED_VENDOR_WEBGL = 0x9245; + const GLenum UNMASKED_RENDERER_WEBGL = 0x9246; +}; + +[NoInterfaceObject] +interface WEBGL_debug_shaders +{ + DOMString getTranslatedShaderSource(WebGLShader shader); +}; + +[NoInterfaceObject] +interface WEBGL_depth_texture +{ + const GLenum UNSIGNED_INT_24_8_WEBGL = 0x84FA; +}; + +[NoInterfaceObject] +interface OES_element_index_uint +{ +}; + +[NoInterfaceObject] +interface EXT_frag_depth +{ +}; + +[NoInterfaceObject] +interface WEBGL_lose_context { + void loseContext(); + void restoreContext(); +}; + +[NoInterfaceObject] +interface EXT_texture_filter_anisotropic +{ + const GLenum TEXTURE_MAX_ANISOTROPY_EXT = 0x84FE; + const GLenum MAX_TEXTURE_MAX_ANISOTROPY_EXT = 0x84FF; +}; + +[NoInterfaceObject] +interface EXT_sRGB +{ + const GLenum SRGB_EXT = 0x8C40; + const GLenum SRGB_ALPHA_EXT = 0x8C42; + const GLenum SRGB8_ALPHA8_EXT = 0x8C43; + const GLenum FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT = 0x8210; +}; + +[NoInterfaceObject] +interface OES_standard_derivatives { + const GLenum FRAGMENT_SHADER_DERIVATIVE_HINT_OES = 0x8B8B; +}; + +[NoInterfaceObject] +interface OES_texture_float +{ +}; + +[NoInterfaceObject] +interface WEBGL_draw_buffers { + const GLenum COLOR_ATTACHMENT0_WEBGL = 0x8CE0; + const GLenum COLOR_ATTACHMENT1_WEBGL = 0x8CE1; + const GLenum COLOR_ATTACHMENT2_WEBGL = 0x8CE2; + const GLenum COLOR_ATTACHMENT3_WEBGL = 0x8CE3; + const GLenum COLOR_ATTACHMENT4_WEBGL = 0x8CE4; + const GLenum COLOR_ATTACHMENT5_WEBGL = 0x8CE5; + const GLenum COLOR_ATTACHMENT6_WEBGL = 0x8CE6; + const GLenum COLOR_ATTACHMENT7_WEBGL = 0x8CE7; + const GLenum COLOR_ATTACHMENT8_WEBGL = 0x8CE8; + const GLenum COLOR_ATTACHMENT9_WEBGL = 0x8CE9; + const GLenum COLOR_ATTACHMENT10_WEBGL = 0x8CEA; + const GLenum COLOR_ATTACHMENT11_WEBGL = 0x8CEB; + const GLenum COLOR_ATTACHMENT12_WEBGL = 0x8CEC; + const GLenum COLOR_ATTACHMENT13_WEBGL = 0x8CED; + const GLenum COLOR_ATTACHMENT14_WEBGL = 0x8CEE; + const GLenum COLOR_ATTACHMENT15_WEBGL = 0x8CEF; + + const GLenum DRAW_BUFFER0_WEBGL = 0x8825; + const GLenum DRAW_BUFFER1_WEBGL = 0x8826; + const GLenum DRAW_BUFFER2_WEBGL = 0x8827; + const GLenum DRAW_BUFFER3_WEBGL = 0x8828; + const GLenum DRAW_BUFFER4_WEBGL = 0x8829; + const GLenum DRAW_BUFFER5_WEBGL = 0x882A; + const GLenum DRAW_BUFFER6_WEBGL = 0x882B; + const GLenum DRAW_BUFFER7_WEBGL = 0x882C; + const GLenum DRAW_BUFFER8_WEBGL = 0x882D; + const GLenum DRAW_BUFFER9_WEBGL = 0x882E; + const GLenum DRAW_BUFFER10_WEBGL = 0x882F; + const GLenum DRAW_BUFFER11_WEBGL = 0x8830; + const GLenum DRAW_BUFFER12_WEBGL = 0x8831; + const GLenum DRAW_BUFFER13_WEBGL = 0x8832; + const GLenum DRAW_BUFFER14_WEBGL = 0x8833; + const GLenum DRAW_BUFFER15_WEBGL = 0x8834; + + const GLenum MAX_COLOR_ATTACHMENTS_WEBGL = 0x8CDF; + const GLenum MAX_DRAW_BUFFERS_WEBGL = 0x8824; + + void drawBuffersWEBGL(sequence<GLenum> buffers); +}; + +[NoInterfaceObject] +interface OES_texture_float_linear +{ +}; + +[NoInterfaceObject] +interface EXT_shader_texture_lod +{ +}; + +[NoInterfaceObject] +interface OES_texture_half_float +{ + const GLenum HALF_FLOAT_OES = 0x8D61; +}; + +[NoInterfaceObject] +interface OES_texture_half_float_linear +{ +}; + +[NoInterfaceObject] +interface WEBGL_color_buffer_float +{ + const GLenum RGBA32F_EXT = 0x8814; + const GLenum RGB32F_EXT = 0x8815; + const GLenum FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT = 0x8211; + const GLenum UNSIGNED_NORMALIZED_EXT = 0x8C17; +}; + +[NoInterfaceObject] +interface EXT_color_buffer_half_float +{ + const GLenum RGBA16F_EXT = 0x881A; + const GLenum RGB16F_EXT = 0x881B; + const GLenum FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT = 0x8211; + const GLenum UNSIGNED_NORMALIZED_EXT = 0x8C17; +}; + +[NoInterfaceObject] +interface OES_vertex_array_object { + const GLenum VERTEX_ARRAY_BINDING_OES = 0x85B5; + + WebGLVertexArrayObject? createVertexArrayOES(); + void deleteVertexArrayOES(WebGLVertexArrayObject? arrayObject); + [WebGLHandlesContextLoss] GLboolean isVertexArrayOES(WebGLVertexArrayObject? arrayObject); + void bindVertexArrayOES(WebGLVertexArrayObject? arrayObject); +}; + +[NoInterfaceObject] +interface ANGLE_instanced_arrays { + const GLenum VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE = 0x88FE; + + void drawArraysInstancedANGLE(GLenum mode, GLint first, GLsizei count, GLsizei primcount); + void drawElementsInstancedANGLE(GLenum mode, GLsizei count, GLenum type, GLintptr offset, GLsizei primcount); + void vertexAttribDivisorANGLE(GLuint index, GLuint divisor); +}; + +[NoInterfaceObject] +interface EXT_blend_minmax { + const GLenum MIN_EXT = 0x8007; + const GLenum MAX_EXT = 0x8008; +}; + +interface WebGLQuery { +}; + +[NoInterfaceObject] +interface EXT_disjoint_timer_query { + const GLenum QUERY_COUNTER_BITS_EXT = 0x8864; + const GLenum CURRENT_QUERY_EXT = 0x8865; + const GLenum QUERY_RESULT_EXT = 0x8866; + const GLenum QUERY_RESULT_AVAILABLE_EXT = 0x8867; + const GLenum TIME_ELAPSED_EXT = 0x88BF; + const GLenum TIMESTAMP_EXT = 0x8E28; + const GLenum GPU_DISJOINT_EXT = 0x8FBB; + + WebGLQuery? createQueryEXT(); + void deleteQueryEXT(WebGLQuery? query); + [WebGLHandlesContextLoss] boolean isQueryEXT(WebGLQuery? query); + void beginQueryEXT(GLenum target, WebGLQuery query); + void endQueryEXT(GLenum target); + void queryCounterEXT(WebGLQuery query, GLenum target); + any getQueryEXT(GLenum target, GLenum pname); + any getQueryObjectEXT(WebGLQuery query, GLenum pname); +}; diff --git a/dom/webidl/WebKitCSSMatrix.webidl b/dom/webidl/WebKitCSSMatrix.webidl new file mode 100644 index 0000000000..8115711a33 --- /dev/null +++ b/dom/webidl/WebKitCSSMatrix.webidl @@ -0,0 +1,39 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * https://compat.spec.whatwg.org/#webkitcssmatrix-interface + */ + +[Constructor, + Constructor(DOMString transformList), + Constructor(WebKitCSSMatrix other), + Exposed=Window, + Func="mozilla::dom::WebKitCSSMatrix::FeatureEnabled"] +interface WebKitCSSMatrix : DOMMatrix { + // Mutable transform methods + [Throws] + WebKitCSSMatrix setMatrixValue(DOMString transformList); + + // Immutable transform methods + WebKitCSSMatrix multiply(WebKitCSSMatrix other); + [Throws] + WebKitCSSMatrix inverse(); + WebKitCSSMatrix translate(optional unrestricted double tx = 0, + optional unrestricted double ty = 0, + optional unrestricted double tz = 0); + WebKitCSSMatrix scale(optional unrestricted double scaleX = 1, + optional unrestricted double scaleY, + optional unrestricted double scaleZ = 1); + WebKitCSSMatrix rotate(optional unrestricted double rotX = 0, + optional unrestricted double rotY, + optional unrestricted double rotZ); + WebKitCSSMatrix rotateAxisAngle(optional unrestricted double x = 0, + optional unrestricted double y = 0, + optional unrestricted double z = 0, + optional unrestricted double angle = 0); + WebKitCSSMatrix skewX(optional unrestricted double sx = 0); + WebKitCSSMatrix skewY(optional unrestricted double sy = 0); +}; diff --git a/dom/webidl/WebSocket.webidl b/dom/webidl/WebSocket.webidl new file mode 100644 index 0000000000..492e366bab --- /dev/null +++ b/dom/webidl/WebSocket.webidl @@ -0,0 +1,77 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.whatwg.org/html/#network + * + * © Copyright 2004-2011 Apple Computer, Inc., Mozilla Foundation, and Opera Software ASA. + * You are granted a license to use, reproduce and create derivative works of this document. + */ + +enum BinaryType { "blob", "arraybuffer" }; + +[Exposed=(Window,Worker), + Constructor(DOMString url), + Constructor(DOMString url, DOMString protocols), + Constructor(DOMString url, sequence<DOMString> protocols)] +interface WebSocket : EventTarget { + + readonly attribute DOMString url; + + // ready state + const unsigned short CONNECTING = 0; + const unsigned short OPEN = 1; + const unsigned short CLOSING = 2; + const unsigned short CLOSED = 3; + + readonly attribute unsigned short readyState; + + readonly attribute unsigned long bufferedAmount; + + // networking + + attribute EventHandler onopen; + + attribute EventHandler onerror; + + attribute EventHandler onclose; + + readonly attribute DOMString extensions; + + readonly attribute DOMString protocol; + + [Throws] + void close([Clamp] optional unsigned short code, optional DOMString reason); + + // messaging + + attribute EventHandler onmessage; + + attribute BinaryType binaryType; + + [Throws] + void send(DOMString data); + + [Throws] + void send(Blob data); + + [Throws] + void send(ArrayBuffer data); + + [Throws] + void send(ArrayBufferView data); +}; + +// Support for creating server-side chrome-only WebSocket. Used in FlyWeb and in +// devtools remote debugging server. +interface nsITransportProvider; + +partial interface WebSocket { + [ChromeOnly, NewObject, Throws] + static WebSocket createServerWebSocket(DOMString url, + sequence<DOMString> protocols, + nsITransportProvider transportProvider, + DOMString negotiatedExtensions); +}; diff --git a/dom/webidl/WebrtcDeprecated.webidl b/dom/webidl/WebrtcDeprecated.webidl new file mode 100644 index 0000000000..bd939ba8ce --- /dev/null +++ b/dom/webidl/WebrtcDeprecated.webidl @@ -0,0 +1,29 @@ +/* -*- 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/. + * + * This file includes all the deprecated mozRTC prefixed interfaces. + * + * The declaration of each should match the declaration of the real, unprefixed + * interface. These aliases will be removed at some point (Bug 1155923). + */ + +[Deprecated="WebrtcDeprecatedPrefix", + Pref="media.peerconnection.enabled", + JSImplementation="@mozilla.org/dom/rtcicecandidate;1", + Constructor(optional RTCIceCandidateInit candidateInitDict)] +interface mozRTCIceCandidate : RTCIceCandidate {}; + +[Deprecated="WebrtcDeprecatedPrefix", + Pref="media.peerconnection.enabled", + JSImplementation="@mozilla.org/dom/peerconnection;1", + Constructor (optional RTCConfiguration configuration, + optional object? constraints)] +interface mozRTCPeerConnection : RTCPeerConnection {}; + +[Deprecated="WebrtcDeprecatedPrefix", + Pref="media.peerconnection.enabled", + JSImplementation="@mozilla.org/dom/rtcsessiondescription;1", + Constructor(optional RTCSessionDescriptionInit descriptionInitDict)] +interface mozRTCSessionDescription : RTCSessionDescription {}; diff --git a/dom/webidl/WebrtcGlobalInformation.webidl b/dom/webidl/WebrtcGlobalInformation.webidl new file mode 100644 index 0000000000..ace9e71784 --- /dev/null +++ b/dom/webidl/WebrtcGlobalInformation.webidl @@ -0,0 +1,39 @@ +/* -*- 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/. + */ + +dictionary WebrtcGlobalStatisticsReport { + sequence<RTCStatsReportInternal> reports; +}; + +callback WebrtcGlobalStatisticsCallback = void (WebrtcGlobalStatisticsReport reports); +callback WebrtcGlobalLoggingCallback = void (sequence<DOMString> logMessages); + +[ChromeOnly] +interface WebrtcGlobalInformation { + + [Throws] + static void getAllStats(WebrtcGlobalStatisticsCallback callback, + optional DOMString pcIdFilter); + + static void clearAllStats(); + + [Throws] + static void getLogging(DOMString pattern, + WebrtcGlobalLoggingCallback callback); + + static void clearLogging(); + + // NSPR WebRTC Trace debug level (0 - 65535) + // + // Notes: + // - Setting a non-zero debug level turns on gathering of log for file output. + // - Subsequently setting a zero debug level writes that log to disk. + + static attribute long debugLevel; + + // WebRTC AEC debugging enable + static attribute boolean aecDebug; +}; diff --git a/dom/webidl/WheelEvent.webidl b/dom/webidl/WheelEvent.webidl new file mode 100644 index 0000000000..0c89bc73ee --- /dev/null +++ b/dom/webidl/WheelEvent.webidl @@ -0,0 +1,33 @@ +/* -*- 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/. + * + * For more information on this interface please see + * http://dev.w3.org/2006/webapi/DOM-Level-3-Events/html/DOM3-Events.html + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +[Constructor(DOMString type, optional WheelEventInit eventInitDict)] +interface WheelEvent : MouseEvent +{ + const unsigned long DOM_DELTA_PIXEL = 0x00; + const unsigned long DOM_DELTA_LINE = 0x01; + const unsigned long DOM_DELTA_PAGE = 0x02; + + readonly attribute double deltaX; + readonly attribute double deltaY; + readonly attribute double deltaZ; + readonly attribute unsigned long deltaMode; + +}; + +dictionary WheelEventInit : MouseEventInit +{ + double deltaX = 0; + double deltaY = 0; + double deltaZ = 0; + unsigned long deltaMode = 0; +}; diff --git a/dom/webidl/WidevineCDMManifest.webidl b/dom/webidl/WidevineCDMManifest.webidl new file mode 100644 index 0000000000..83e14e0b0b --- /dev/null +++ b/dom/webidl/WidevineCDMManifest.webidl @@ -0,0 +1,15 @@ +/* -*- 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/.
+ */
+
+dictionary WidevineCDMManifest {
+ required DOMString name;
+ required DOMString description;
+ required DOMString version;
+ required DOMString x-cdm-module-versions;
+ required DOMString x-cdm-interface-versions;
+ required DOMString x-cdm-host-versions;
+ required DOMString x-cdm-codecs;
+};
diff --git a/dom/webidl/WifiOptions.webidl b/dom/webidl/WifiOptions.webidl new file mode 100644 index 0000000000..22105b1b0c --- /dev/null +++ b/dom/webidl/WifiOptions.webidl @@ -0,0 +1,38 @@ +/* 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/. */ + +/** + * This dictionnary holds the parameters sent to the wifi service. + */ +dictionary WifiCommandOptions +{ + long id = 0; // opaque id. + DOMString cmd = ""; // the command name. + DOMString request; // for "command" +}; + +/** + * This dictionnary holds the parameters sent back to WifiWorker.js + */ +dictionary WifiResultOptions +{ + long id = 0; // opaque id. + long status = 0; // the return status of the command. + // Used by most commands. + DOMString reply = ""; // for "command". +}; + + +/** + * This dictionary holds the callback parameter sent back from WifiCertService + * to WifiWorker, and should only be passed around in chrome process. + */ +dictionary WifiCertServiceResultOptions +{ + long id = 0; // request id in WifiWorker. + long status = 0; // error code of the request, 0 indicates success. + unsigned short usageFlag = 0; // usage flag of certificate, the flag is defined + // in nsIWifiCertService.idl + DOMString nickname = ""; // nickname of certificate of the request. +}; diff --git a/dom/webidl/Window.webidl b/dom/webidl/Window.webidl new file mode 100644 index 0000000000..055a274cc1 --- /dev/null +++ b/dom/webidl/Window.webidl @@ -0,0 +1,521 @@ +/* -*- 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/. + * + * The origin of this IDL file is: + * http://www.whatwg.org/specs/web-apps/current-work/ + * https://dvcs.w3.org/hg/editing/raw-file/tip/editing.html + * https://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html + * http://dev.w3.org/csswg/cssom/ + * http://dev.w3.org/csswg/cssom-view/ + * https://dvcs.w3.org/hg/webperf/raw-file/tip/specs/RequestAnimationFrame/Overview.html + * https://dvcs.w3.org/hg/webperf/raw-file/tip/specs/NavigationTiming/Overview.html + * https://dvcs.w3.org/hg/webcrypto-api/raw-file/tip/spec/Overview.html + * http://dvcs.w3.org/hg/speech-api/raw-file/tip/speechapi.html + * https://w3c.github.io/webappsec-secure-contexts/#monkey-patching-global-object + * https://w3c.github.io/requestidlecallback/ + */ + +interface ApplicationCache; +interface IID; +interface nsIBrowserDOMWindow; +interface nsIMessageBroadcaster; +interface nsIDOMCrypto; +typedef any Transferable; + +// http://www.whatwg.org/specs/web-apps/current-work/ +[PrimaryGlobal, LegacyUnenumerableNamedProperties, NeedResolve] +/*sealed*/ interface Window : EventTarget { + // the current browsing context + [Unforgeable, Constant, StoreInSlot, + CrossOriginReadable] readonly attribute Window window; + [Replaceable, Constant, StoreInSlot, + CrossOriginReadable] readonly attribute Window self; + [Unforgeable, StoreInSlot, Pure] readonly attribute Document? document; + [Throws] attribute DOMString name; + [PutForwards=href, Unforgeable, Throws, + CrossOriginReadable, CrossOriginWritable] readonly attribute Location? location; + [Throws] readonly attribute History history; + [Func="CustomElementRegistry::IsCustomElementEnabled"] + readonly attribute CustomElementRegistry customElements; + [Replaceable, Throws] readonly attribute BarProp locationbar; + [Replaceable, Throws] readonly attribute BarProp menubar; + [Replaceable, Throws] readonly attribute BarProp personalbar; + [Replaceable, Throws] readonly attribute BarProp scrollbars; + [Replaceable, Throws] readonly attribute BarProp statusbar; + [Replaceable, Throws] readonly attribute BarProp toolbar; + [Throws] attribute DOMString status; + [Throws, CrossOriginCallable, UnsafeInPrerendering] void close(); + [Throws, CrossOriginReadable] readonly attribute boolean closed; + [Throws] void stop(); + [Throws, CrossOriginCallable, UnsafeInPrerendering] void focus(); + [Throws, CrossOriginCallable] void blur(); + + // other browsing contexts + [Replaceable, Throws, CrossOriginReadable] readonly attribute WindowProxy frames; + [Replaceable, CrossOriginReadable] readonly attribute unsigned long length; + //[Unforgeable, Throws, CrossOriginReadable] readonly attribute WindowProxy top; + [Unforgeable, Throws, CrossOriginReadable] readonly attribute WindowProxy? top; + [Throws, CrossOriginReadable] attribute any opener; + //[Throws] readonly attribute WindowProxy parent; + [Replaceable, Throws, CrossOriginReadable] readonly attribute WindowProxy? parent; + [Throws, NeedsSubjectPrincipal] readonly attribute Element? frameElement; + //[Throws] WindowProxy? open(optional USVString url = "about:blank", optional DOMString target = "_blank", [TreatNullAs=EmptyString] optional DOMString features = ""); + [Throws, UnsafeInPrerendering] WindowProxy? open(optional DOMString url = "", optional DOMString target = "", [TreatNullAs=EmptyString] optional DOMString features = ""); + getter object (DOMString name); + + // the user agent + [Throws] readonly attribute Navigator navigator; +#ifdef HAVE_SIDEBAR + [Replaceable, Throws] readonly attribute External external; +#endif + [Throws, Pref="browser.cache.offline.enable"] readonly attribute ApplicationCache applicationCache; + + // user prompts + [Throws, UnsafeInPrerendering, NeedsSubjectPrincipal] void alert(); + [Throws, UnsafeInPrerendering, NeedsSubjectPrincipal] void alert(DOMString message); + [Throws, UnsafeInPrerendering, NeedsSubjectPrincipal] boolean confirm(optional DOMString message = ""); + [Throws, UnsafeInPrerendering, NeedsSubjectPrincipal] DOMString? prompt(optional DOMString message = "", optional DOMString default = ""); + [Throws, UnsafeInPrerendering] void print(); + //[Throws] any showModalDialog(DOMString url, optional any argument); + [Throws, Func="nsGlobalWindow::IsShowModalDialogEnabled", UnsafeInPrerendering, NeedsSubjectPrincipal] + any showModalDialog(DOMString url, optional any argument, optional DOMString options = ""); + + [Throws, CrossOriginCallable, NeedsSubjectPrincipal] + void postMessage(any message, DOMString targetOrigin, optional sequence<Transferable> transfer); + + // also has obsolete members +}; +Window implements GlobalEventHandlers; +Window implements WindowEventHandlers; + +// https://www.w3.org/TR/appmanifest/#onappinstalled-attribute +partial interface Window { + [Pref="dom.manifest.onappinstalled"] + attribute EventHandler onappinstalled; +}; + +// http://www.whatwg.org/specs/web-apps/current-work/ +[NoInterfaceObject] +interface WindowSessionStorage { + //[Throws] readonly attribute Storage sessionStorage; + [Throws] readonly attribute Storage? sessionStorage; +}; +Window implements WindowSessionStorage; + +// http://www.whatwg.org/specs/web-apps/current-work/ +[NoInterfaceObject] +interface WindowLocalStorage { + [Throws] readonly attribute Storage? localStorage; +}; +Window implements WindowLocalStorage; + +// http://www.whatwg.org/specs/web-apps/current-work/ +partial interface Window { + void captureEvents(); + void releaseEvents(); +}; + +// https://dvcs.w3.org/hg/editing/raw-file/tip/editing.html +partial interface Window { + //[Throws] Selection getSelection(); + [Throws] Selection? getSelection(); +}; + +// http://dev.w3.org/csswg/cssom/ +partial interface Window { + //[NewObject, Throws] CSSStyleDeclaration getComputedStyle(Element elt, optional DOMString pseudoElt = ""); + [NewObject, Throws] CSSStyleDeclaration? getComputedStyle(Element elt, optional DOMString pseudoElt = ""); +}; + +// http://dev.w3.org/csswg/cssom-view/ +enum ScrollBehavior { "auto", "instant", "smooth" }; + +dictionary ScrollOptions { + ScrollBehavior behavior = "auto"; +}; + +dictionary ScrollToOptions : ScrollOptions { + unrestricted double left; + unrestricted double top; +}; + +partial interface Window { + //[Throws,NewObject] MediaQueryList matchMedia(DOMString query); + [Throws,NewObject] MediaQueryList? matchMedia(DOMString query); + // Per spec, screen is SameObject, but we don't actually guarantee that given + // nsGlobalWindow::Cleanup. :( + //[SameObject, Replaceable, Throws] readonly attribute Screen screen; + [Replaceable, Throws] readonly attribute Screen screen; + + // browsing context + //[Throws] void moveTo(double x, double y); + //[Throws] void moveBy(double x, double y); + //[Throws] void resizeTo(double x, double y); + //[Throws] void resizeBy(double x, double y); + [Throws, UnsafeInPrerendering] void moveTo(long x, long y); + [Throws, UnsafeInPrerendering] void moveBy(long x, long y); + [Throws, UnsafeInPrerendering] void resizeTo(long x, long y); + [Throws, UnsafeInPrerendering] void resizeBy(long x, long y); + + // viewport + // These are writable because we allow chrome to write them. And they need + // to use 'any' as the type, because non-chrome writing them needs to act + // like a [Replaceable] attribute would, which needs the original JS value. + //[Replaceable, Throws] readonly attribute double innerWidth; + //[Replaceable, Throws] readonly attribute double innerHeight; + [Throws, NeedsCallerType] attribute any innerWidth; + [Throws, NeedsCallerType] attribute any innerHeight; + + // viewport scrolling + void scroll(unrestricted double x, unrestricted double y); + void scroll(optional ScrollToOptions options); + void scrollTo(unrestricted double x, unrestricted double y); + void scrollTo(optional ScrollToOptions options); + void scrollBy(unrestricted double x, unrestricted double y); + void scrollBy(optional ScrollToOptions options); + // mozScrollSnap is used by chrome to perform scroll snapping after the + // user performs actions that may affect scroll position + // mozScrollSnap is deprecated, to be replaced by a web accessible API, such + // as an extension to the ScrollOptions dictionary. See bug 1137937. + [ChromeOnly] void mozScrollSnap(); + // The four properties below are double per spec at the moment, but whether + // that will continue is unclear. + //[Replaceable, Throws] readonly attribute double scrollX; + //[Replaceable, Throws] readonly attribute double pageXOffset; + //[Replaceable, Throws] readonly attribute double scrollY; + //[Replaceable, Throws] readonly attribute double pageYOffset; + [Replaceable, Throws] readonly attribute long scrollX; + [Replaceable, Throws] readonly attribute long pageXOffset; + [Replaceable, Throws] readonly attribute long scrollY; + [Replaceable, Throws] readonly attribute long pageYOffset; + + // client + // These are writable because we allow chrome to write them. And they need + // to use 'any' as the type, because non-chrome writing them needs to act + // like a [Replaceable] attribute would, which needs the original JS value. + //[Replaceable, Throws] readonly attribute double screenX; + //[Replaceable, Throws] readonly attribute double screenY; + //[Replaceable, Throws] readonly attribute double outerWidth; + //[Replaceable, Throws] readonly attribute double outerHeight; + [Throws, NeedsCallerType] attribute any screenX; + [Throws, NeedsCallerType] attribute any screenY; + [Throws, NeedsCallerType] attribute any outerWidth; + [Throws, NeedsCallerType] attribute any outerHeight; +}; + +/** + * Special function that gets the fill ratio from the compositor used for testing + * and is an indicator that we're layerizing correctly. + * This function will call the given callback current fill ratio for a + * composited frame. We don't guarantee which frame fill ratios will be returned. + */ +partial interface Window { + [ChromeOnly, Throws] void mozRequestOverfill(OverfillCallback callback); +}; +callback OverfillCallback = void (unsigned long overfill); + +// https://dvcs.w3.org/hg/webperf/raw-file/tip/specs/RequestAnimationFrame/Overview.html +partial interface Window { + [Throws] long requestAnimationFrame(FrameRequestCallback callback); + [Throws] void cancelAnimationFrame(long handle); +}; +callback FrameRequestCallback = void (DOMHighResTimeStamp time); + +// https://dvcs.w3.org/hg/webperf/raw-file/tip/specs/NavigationTiming/Overview.html +partial interface Window { + [Replaceable, Pure, StoreInSlot] readonly attribute Performance? performance; +}; + +// https://dvcs.w3.org/hg/webcrypto-api/raw-file/tip/spec/Overview.html +Window implements GlobalCrypto; + +// https://fidoalliance.org/specifications/download/ +Window implements GlobalU2F; + +#ifdef MOZ_WEBSPEECH +// http://dvcs.w3.org/hg/speech-api/raw-file/tip/speechapi.html +[NoInterfaceObject] +interface SpeechSynthesisGetter { + [Throws, Pref="media.webspeech.synth.enabled"] readonly attribute SpeechSynthesis speechSynthesis; +}; + +Window implements SpeechSynthesisGetter; +#endif + +// http://www.whatwg.org/specs/web-apps/current-work/ +[NoInterfaceObject] +interface WindowModal { + [Throws, Func="nsGlobalWindow::IsModalContentWindow", NeedsSubjectPrincipal] + readonly attribute any dialogArguments; + + [Throws, Func="nsGlobalWindow::IsModalContentWindow", NeedsSubjectPrincipal] + attribute any returnValue; +}; +Window implements WindowModal; + +// Mozilla-specific stuff +partial interface Window { + //[NewObject, Throws] CSSStyleDeclaration getDefaultComputedStyle(Element elt, optional DOMString pseudoElt = ""); + [NewObject, Throws] CSSStyleDeclaration? getDefaultComputedStyle(Element elt, optional DOMString pseudoElt = ""); + + // Mozilla extensions + /** + * Method for scrolling this window by a number of lines. + */ + void scrollByLines(long numLines, optional ScrollOptions options); + + /** + * Method for scrolling this window by a number of pages. + */ + void scrollByPages(long numPages, optional ScrollOptions options); + + /** + * Method for sizing this window to the content in the window. + */ + [Throws, UnsafeInPrerendering] void sizeToContent(); + + // XXX Shouldn't this be in nsIDOMChromeWindow? + [ChromeOnly, Replaceable, Throws] readonly attribute MozControllers controllers; + + [ChromeOnly, Throws] readonly attribute Element? realFrameElement; + + [Throws, NeedsCallerType] + readonly attribute float mozInnerScreenX; + [Throws, NeedsCallerType] + readonly attribute float mozInnerScreenY; + [Replaceable, Throws, NeedsCallerType] + readonly attribute float devicePixelRatio; + + /* The maximum offset that the window can be scrolled to + (i.e., the document width/height minus the scrollport width/height) */ + [ChromeOnly, Throws] readonly attribute long scrollMinX; + [ChromeOnly, Throws] readonly attribute long scrollMinY; + [Replaceable, Throws] readonly attribute long scrollMaxX; + [Replaceable, Throws] readonly attribute long scrollMaxY; + + [Throws, UnsafeInPrerendering] attribute boolean fullScreen; + + [Throws, ChromeOnly, UnsafeInPrerendering] void back(); + [Throws, ChromeOnly, UnsafeInPrerendering] void forward(); + [Throws, ChromeOnly, UnsafeInPrerendering] void home(); + + // XXX Should this be in nsIDOMChromeWindow? + void updateCommands(DOMString action, + optional Selection? sel = null, + optional short reason = 0); + + /* Find in page. + * @param str: the search pattern + * @param caseSensitive: is the search caseSensitive + * @param backwards: should we search backwards + * @param wrapAround: should we wrap the search + * @param wholeWord: should we search only for whole words + * @param searchInFrames: should we search through all frames + * @param showDialog: should we show the Find dialog + */ + [Throws, UnsafeInPrerendering] boolean find(optional DOMString str = "", + optional boolean caseSensitive = false, + optional boolean backwards = false, + optional boolean wrapAround = false, + optional boolean wholeWord = false, + optional boolean searchInFrames = false, + optional boolean showDialog = false); + + /** + * Returns the number of times this document for this window has + * been painted to the screen. + */ + [Throws] readonly attribute unsigned long long mozPaintCount; + + /** + * This property exists because static attributes don't yet work for + * JS-implemented WebIDL (see bugs 1058606 and 863952). With this hack, we + * can use `MozSelfSupport.something(...)`, which will continue to work + * after we ditch this property and switch to static attributes. See + */ + [ChromeOnly, Throws] readonly attribute MozSelfSupport MozSelfSupport; + + [Pure] + attribute EventHandler onwheel; + + attribute EventHandler ondevicemotion; + attribute EventHandler ondeviceorientation; + attribute EventHandler onabsolutedeviceorientation; + attribute EventHandler ondeviceproximity; + attribute EventHandler onuserproximity; + attribute EventHandler ondevicelight; + +#ifdef MOZ_B2G + attribute EventHandler onmoztimechange; + attribute EventHandler onmoznetworkupload; + attribute EventHandler onmoznetworkdownload; +#endif + + void dump(DOMString str); + + /** + * This method is here for backwards compatibility with 4.x only, + * its implementation is a no-op + */ + void setResizable(boolean resizable); + + /** + * This is the scriptable version of + * nsIDOMWindow::openDialog() that takes 3 optional + * arguments, plus any additional arguments are passed on as + * arguments on the dialog's window object (window.arguments). + */ + [Throws, ChromeOnly, UnsafeInPrerendering] WindowProxy? openDialog(optional DOMString url = "", + optional DOMString name = "", + optional DOMString options = "", + any... extraArguments); + + [Replaceable, Throws] readonly attribute object? content; + + [ChromeOnly, Throws] readonly attribute object? __content; + + [Throws, ChromeOnly] any getInterface(IID iid); + + /** + * Same as nsIDOMWindow.windowRoot, useful for event listener targeting. + */ + [ChromeOnly, Throws] + readonly attribute WindowRoot? windowRoot; +}; + +Window implements TouchEventHandlers; + +Window implements OnErrorEventHandlerForWindow; + +#if defined(MOZ_WIDGET_ANDROID) || defined(MOZ_WIDGET_GONK) +// https://compat.spec.whatwg.org/#windoworientation-interface +partial interface Window { + [NeedsCallerType] + readonly attribute short orientation; + attribute EventHandler onorientationchange; +}; +#endif + +#ifdef HAVE_SIDEBAR +// Mozilla extension +partial interface Window { + [Replaceable, Throws, UseCounter] + readonly attribute (External or WindowProxy) sidebar; +}; +#endif + +[Func="IsChromeOrXBL"] +interface ChromeWindow { + [Func="nsGlobalWindow::IsPrivilegedChromeWindow"] + const unsigned short STATE_MAXIMIZED = 1; + [Func="nsGlobalWindow::IsPrivilegedChromeWindow"] + const unsigned short STATE_MINIMIZED = 2; + [Func="nsGlobalWindow::IsPrivilegedChromeWindow"] + const unsigned short STATE_NORMAL = 3; + [Func="nsGlobalWindow::IsPrivilegedChromeWindow"] + const unsigned short STATE_FULLSCREEN = 4; + + [Func="nsGlobalWindow::IsPrivilegedChromeWindow"] + readonly attribute unsigned short windowState; + + /** + * browserDOMWindow provides access to yet another layer of + * utility functions implemented by chrome script. It will be null + * for DOMWindows not corresponding to browsers. + */ + [Throws, Func="nsGlobalWindow::IsPrivilegedChromeWindow"] + attribute nsIBrowserDOMWindow? browserDOMWindow; + + [Throws, Func="nsGlobalWindow::IsPrivilegedChromeWindow"] + void getAttention(); + + [Throws, Func="nsGlobalWindow::IsPrivilegedChromeWindow"] + void getAttentionWithCycleCount(long aCycleCount); + + [Throws, Func="nsGlobalWindow::IsPrivilegedChromeWindow"] + void setCursor(DOMString cursor); + + [Func="nsGlobalWindow::IsPrivilegedChromeWindow", UnsafeInPrerendering] + void maximize(); + [Func="nsGlobalWindow::IsPrivilegedChromeWindow", UnsafeInPrerendering] + void minimize(); + [Func="nsGlobalWindow::IsPrivilegedChromeWindow", UnsafeInPrerendering] + void restore(); + + /** + * Notify a default button is loaded on a dialog or a wizard. + * defaultButton is the default button. + */ + [Throws, Func="nsGlobalWindow::IsPrivilegedChromeWindow"] + void notifyDefaultButtonLoaded(Element defaultButton); + + [Throws, Func="nsGlobalWindow::IsPrivilegedChromeWindow"] + readonly attribute nsIMessageBroadcaster messageManager; + + /** + * Returns the message manager identified by the given group name that + * manages all frame loaders belonging to that group. + */ + [Throws, Func="nsGlobalWindow::IsPrivilegedChromeWindow"] + nsIMessageBroadcaster getGroupMessageManager(DOMString aGroup); + + /** + * On some operating systems, we must allow the window manager to + * handle window dragging. This function tells the window manager to + * start dragging the window. This function will fail unless called + * while the left mouse button is held down, callers must check this. + * + * The optional panel argument should be set when moving a panel. + * + * Throws NS_ERROR_NOT_IMPLEMENTED if the OS doesn't support this. + */ + [Throws, Func="nsGlobalWindow::IsPrivilegedChromeWindow"] + void beginWindowMove(Event mouseDownEvent, optional Element? panel = null); +}; + +partial interface Window { + [Pref="dom.vr.enabled"] + attribute EventHandler onvrdisplayconnect; + [Pref="dom.vr.enabled"] + attribute EventHandler onvrdisplaydisconnect; + [Pref="dom.vr.enabled"] + attribute EventHandler onvrdisplaypresentchange; +}; + +// For testing worklet only +partial interface Window { + [Pref="dom.worklet.testing.enabled", Throws] + Worklet createWorklet(); +}; + +Window implements ChromeWindow; +Window implements WindowOrWorkerGlobalScope; + +partial interface Window { + [Throws, Pref="dom.requestIdleCallback.enabled"] + unsigned long requestIdleCallback(IdleRequestCallback callback, + optional IdleRequestOptions options); + [Pref="dom.requestIdleCallback.enabled"] + void cancelIdleCallback(unsigned long handle); +}; + +dictionary IdleRequestOptions { + unsigned long timeout; +}; + +callback IdleRequestCallback = void (IdleDeadline deadline); + +/** + * Similar to |isSecureContext|, but doesn't pay attention to whether the + * window's opener (if any) is a secure context or not. + * + * WARNING: Do not use this unless you are familiar with the issues that + * taking opener state into account is designed to address (or else you may + * introduce security issues). If in doubt, use |isSecureContext|. In + * particular do not use this to gate access to JavaScript APIs. + */ +partial interface Window { + [ChromeOnly] readonly attribute boolean isSecureContextIfOpenerIgnored; +}; diff --git a/dom/webidl/WindowOrWorkerGlobalScope.webidl b/dom/webidl/WindowOrWorkerGlobalScope.webidl new file mode 100644 index 0000000000..8f0d0029ff --- /dev/null +++ b/dom/webidl/WindowOrWorkerGlobalScope.webidl @@ -0,0 +1,83 @@ +/* -*- 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/. + * + * The origin of this IDL file is: + * https://html.spec.whatwg.org/multipage/webappapis.html#windoworworkerglobalscope-mixin + * https://fetch.spec.whatwg.org/#fetch-method + * https://w3c.github.io/webappsec-secure-contexts/#monkey-patching-global-object + * https://w3c.github.io/ServiceWorker/#self-caches + */ + +// https://html.spec.whatwg.org/multipage/webappapis.html#windoworworkerglobalscope-mixin +[NoInterfaceObject, Exposed=(Window,Worker)] +interface WindowOrWorkerGlobalScope { + // XXXbz We don't implement 'origin' yet on either window or worker globals. + // See bug 1306170. + // [Replaceable] readonly attribute USVString origin; + + // base64 utility methods + [Throws] + DOMString btoa(DOMString btoa); + [Throws] + DOMString atob(DOMString atob); + + // timers + // NOTE: We're using overloads where the spec uses a union. Should + // be black-box the same. + [Throws] + long setTimeout(Function handler, optional long timeout = 0, any... arguments); + [Throws] + long setTimeout(DOMString handler, optional long timeout = 0, any... unused); + void clearTimeout(optional long handle = 0); + [Throws] + long setInterval(Function handler, optional long timeout, any... arguments); + [Throws] + long setInterval(DOMString handler, optional long timeout, any... unused); + void clearInterval(optional long handle = 0); + + // ImageBitmap + [Throws] + Promise<ImageBitmap> createImageBitmap(ImageBitmapSource aImage); + [Throws] + Promise<ImageBitmap> createImageBitmap(ImageBitmapSource aImage, long aSx, long aSy, long aSw, long aSh); +}; + +// https://fetch.spec.whatwg.org/#fetch-method +partial interface WindowOrWorkerGlobalScope { + [NewObject] Promise<Response> fetch(RequestInfo input, optional RequestInit init); +}; + +// https://w3c.github.io/webappsec-secure-contexts/#monkey-patching-global-object +partial interface WindowOrWorkerGlobalScope { + readonly attribute boolean isSecureContext; +}; + +// http://w3c.github.io/IndexedDB/#factory-interface +partial interface WindowOrWorkerGlobalScope { + // readonly attribute IDBFactory indexedDB; + [Throws] + readonly attribute IDBFactory? indexedDB; +}; + +// https://w3c.github.io/ServiceWorker/#self-caches +partial interface WindowOrWorkerGlobalScope { + [Throws, Func="mozilla::dom::cache::CacheStorage::PrefEnabled", SameObject] + readonly attribute CacheStorage caches; +}; + +// Mozilla extensions +partial interface WindowOrWorkerGlobalScope { + // Extensions to ImageBitmap bits. + // Bug 1141979 - [FoxEye] Extend ImageBitmap with interfaces to access its + // underlying image data + // + // Note: + // Overloaded functions cannot have different "extended attributes", + // so I cannot add preference on the extended version of createImageBitmap(). + // To work around, I will then check the preference at run time and throw if + // the preference is set to be false. + [Throws] + Promise<ImageBitmap> createImageBitmap(ImageBitmapSource aImage, long aOffset, long aLength, ImageBitmapFormat aFormat, ImagePixelLayout aLayout); +}; diff --git a/dom/webidl/WindowRoot.webidl b/dom/webidl/WindowRoot.webidl new file mode 100644 index 0000000000..0ddb1a9fb6 --- /dev/null +++ b/dom/webidl/WindowRoot.webidl @@ -0,0 +1,9 @@ +/* -*- 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/. + */ + +[ChromeOnly] +interface WindowRoot : EventTarget { +}; diff --git a/dom/webidl/Worker.webidl b/dom/webidl/Worker.webidl new file mode 100644 index 0000000000..158a502d60 --- /dev/null +++ b/dom/webidl/Worker.webidl @@ -0,0 +1,33 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.whatwg.org/specs/web-apps/current-work/multipage/workers.html + * + * © Copyright 2004-2011 Apple Computer, Inc., Mozilla Foundation, and Opera + * Software ASA. + * You are granted a license to use, reproduce and create derivative works of + * this document. + */ + +[Constructor(DOMString scriptURL), + Func="mozilla::dom::workers::WorkerPrivate::WorkerAvailable", + Exposed=(Window,DedicatedWorker,SharedWorker,System)] +interface Worker : EventTarget { + void terminate(); + + [Throws] + void postMessage(any message, optional sequence<any> transfer); + + attribute EventHandler onmessage; +}; + +Worker implements AbstractWorker; + +[Constructor(DOMString scriptURL), + Func="mozilla::dom::workers::ChromeWorkerPrivate::WorkerAvailable", + Exposed=(Window,DedicatedWorker,SharedWorker,System)] +interface ChromeWorker : Worker { +}; diff --git a/dom/webidl/WorkerDebuggerGlobalScope.webidl b/dom/webidl/WorkerDebuggerGlobalScope.webidl new file mode 100644 index 0000000000..16850589a6 --- /dev/null +++ b/dom/webidl/WorkerDebuggerGlobalScope.webidl @@ -0,0 +1,40 @@ +/* -*- 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/. */ + +[Global=(WorkerDebugger), Exposed=WorkerDebugger] +interface WorkerDebuggerGlobalScope : EventTarget { + [Throws] + readonly attribute object global; + + [Throws] + object createSandbox(DOMString name, object prototype); + + [Throws] + void loadSubScript(DOMString url, optional object sandbox); + + void enterEventLoop(); + + void leaveEventLoop(); + + void postMessage(DOMString message); + + attribute EventHandler onmessage; + + [Throws] + void setImmediate(Function handler); + + void reportError(DOMString message); + + [Throws] + sequence<any> retrieveConsoleEvents(); + + [Throws] + void setConsoleEventHandler(AnyCallback? handler); +}; + +// So you can debug while you debug +partial interface WorkerDebuggerGlobalScope { + void dump(optional DOMString string); +}; diff --git a/dom/webidl/WorkerGlobalScope.webidl b/dom/webidl/WorkerGlobalScope.webidl new file mode 100644 index 0000000000..25cfe9e294 --- /dev/null +++ b/dom/webidl/WorkerGlobalScope.webidl @@ -0,0 +1,52 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.whatwg.org/specs/web-apps/current-work/multipage/workers.html#the-workerglobalscope-common-interface + * + * © Copyright 2004-2011 Apple Computer, Inc., Mozilla Foundation, and Opera + * Software ASA. + * You are granted a license to use, reproduce and create derivative works of + * this document. + */ + +[Exposed=(Worker)] +interface WorkerGlobalScope : EventTarget { + [Constant, Cached] + readonly attribute WorkerGlobalScope self; + + readonly attribute WorkerLocation location; + + [Throws] + void close(); + attribute OnErrorEventHandler onerror; + + attribute EventHandler onoffline; + attribute EventHandler ononline; + // also has additional members in a partial interface +}; + +partial interface WorkerGlobalScope { + [Throws] + void importScripts(DOMString... urls); + + readonly attribute WorkerNavigator navigator; +}; + +WorkerGlobalScope implements GlobalCrypto; +WorkerGlobalScope implements WindowOrWorkerGlobalScope; + +// Not implemented yet: bug 1072107. +// WorkerGlobalScope implements FontFaceSource; + +// Mozilla extensions +partial interface WorkerGlobalScope { + + void dump(optional DOMString str); + + // XXXbz no spec for this yet, because the webperf WG is a bit dysfunctional + [Constant, Cached] + readonly attribute Performance performance; +}; diff --git a/dom/webidl/WorkerLocation.webidl b/dom/webidl/WorkerLocation.webidl new file mode 100644 index 0000000000..23fc478d80 --- /dev/null +++ b/dom/webidl/WorkerLocation.webidl @@ -0,0 +1,33 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * http://www.whatwg.org/html/#worker-locations + * + * © Copyright 2004-2011 Apple Computer, Inc., Mozilla Foundation, and Opera + * Software ASA. + * You are granted a license to use, reproduce and create derivative works of + * this document. + */ + +[Exposed=Worker] +interface WorkerLocation { + // Bug 824857: no support for stringifier attributes yet. + // stringifier attribute USVString href; + + // Bug 824857 should remove this. + stringifier; + + readonly attribute USVString href; + + readonly attribute USVString origin; + readonly attribute USVString protocol; + readonly attribute USVString host; + readonly attribute USVString hostname; + readonly attribute USVString port; + readonly attribute USVString pathname; + readonly attribute USVString search; + readonly attribute USVString hash; +}; diff --git a/dom/webidl/WorkerNavigator.webidl b/dom/webidl/WorkerNavigator.webidl new file mode 100644 index 0000000000..44d1e29f68 --- /dev/null +++ b/dom/webidl/WorkerNavigator.webidl @@ -0,0 +1,14 @@ +/* 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/. */ + + +[Exposed=Worker] +interface WorkerNavigator { +}; + +WorkerNavigator implements NavigatorID; +WorkerNavigator implements NavigatorLanguage; +WorkerNavigator implements NavigatorOnLine; +WorkerNavigator implements NavigatorConcurrentHardware; +WorkerNavigator implements NavigatorStorage; diff --git a/dom/webidl/Worklet.webidl b/dom/webidl/Worklet.webidl new file mode 100644 index 0000000000..7f003779f7 --- /dev/null +++ b/dom/webidl/Worklet.webidl @@ -0,0 +1,14 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * https://drafts.css-houdini.org/worklets/#idl-index + */ + +[Pref="dom.worklet.enabled"] +interface Worklet { + [NewObject, Throws] + Promise<void> import(USVString moduleURL); +}; diff --git a/dom/webidl/WorkletGlobalScope.webidl b/dom/webidl/WorkletGlobalScope.webidl new file mode 100644 index 0000000000..208ea03fa5 --- /dev/null +++ b/dom/webidl/WorkletGlobalScope.webidl @@ -0,0 +1,17 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * https://drafts.css-houdini.org/worklets/#idl-index + */ + +[Global=(Worklet), Exposed=(Worklet)] +interface WorkletGlobalScope { +}; + +// Mozilla extensions +partial interface WorkletGlobalScope { + void dump(optional DOMString str); +}; diff --git a/dom/webidl/XMLDocument.webidl b/dom/webidl/XMLDocument.webidl new file mode 100644 index 0000000000..0f503c9f5c --- /dev/null +++ b/dom/webidl/XMLDocument.webidl @@ -0,0 +1,23 @@ +/* -*- 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/. + * + * The origin of this IDL file is: + * http://dom.spec.whatwg.org/#xmldocument + * http://www.whatwg.org/specs/web-apps/current-work/#xmldocument + */ + +// http://dom.spec.whatwg.org/#xmldocument +interface XMLDocument : Document {}; + +// http://www.whatwg.org/specs/web-apps/current-work/#xmldocument +partial interface XMLDocument { + [Throws] + boolean load(DOMString url); +}; + +// Gecko extensions? +partial interface XMLDocument { + attribute boolean async; +}; diff --git a/dom/webidl/XMLHttpRequest.webidl b/dom/webidl/XMLHttpRequest.webidl new file mode 100644 index 0000000000..fa44c449ff --- /dev/null +++ b/dom/webidl/XMLHttpRequest.webidl @@ -0,0 +1,160 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * www.w3.org/TR/2012/WD-XMLHttpRequest-20120117/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +interface InputStream; +interface MozChannel; +interface IID; + +enum XMLHttpRequestResponseType { + "", + "arraybuffer", + "blob", + "document", + "json", + "text", + + // Mozilla-specific stuff + "moz-chunked-text", + "moz-chunked-arraybuffer", + "moz-blob" +}; + +/** + * Parameters for instantiating an XMLHttpRequest. They are passed as an + * optional argument to the constructor: + * + * new XMLHttpRequest({anon: true, system: true}); + */ +dictionary MozXMLHttpRequestParameters +{ + /** + * If true, the request will be sent without cookie and authentication + * headers. + */ + boolean mozAnon = false; + + /** + * If true, the same origin policy will not be enforced on the request. + */ + boolean mozSystem = false; +}; + +[Constructor(optional MozXMLHttpRequestParameters params), + // There are apparently callers, specifically CoffeeScript, who do + // things like this: + // c = new(window.ActiveXObject || XMLHttpRequest)("Microsoft.XMLHTTP") + // To handle that, we need a constructor that takes a string. + Constructor(DOMString ignored), + Exposed=(Window,DedicatedWorker,SharedWorker)] +interface XMLHttpRequest : XMLHttpRequestEventTarget { + // event handler + attribute EventHandler onreadystatechange; + + // states + const unsigned short UNSENT = 0; + const unsigned short OPENED = 1; + const unsigned short HEADERS_RECEIVED = 2; + const unsigned short LOADING = 3; + const unsigned short DONE = 4; + + readonly attribute unsigned short readyState; + + // request + [Throws] + void open(ByteString method, DOMString url); + [Throws] + void open(ByteString method, DOMString url, boolean async, + optional DOMString? user=null, optional DOMString? password=null); + [Throws] + void setRequestHeader(ByteString header, ByteString value); + + [SetterThrows] + attribute unsigned long timeout; + + [SetterThrows] + attribute boolean withCredentials; + + [Throws] + readonly attribute XMLHttpRequestUpload upload; + + [Throws] + void send(); + [Throws] + void send(ArrayBuffer data); + [Throws] + void send(ArrayBufferView data); + [Throws] + void send(Blob data); + [Throws] + void send(Document data); + [Throws] + void send(DOMString? data); + [Throws] + void send(FormData data); + [Throws] + void send(InputStream data); + [Throws] + void send(URLSearchParams data); + + [Throws] + void abort(); + + // response + readonly attribute DOMString responseURL; + + [Throws] + readonly attribute unsigned short status; + + [Throws] + readonly attribute ByteString statusText; + + [Throws] + ByteString? getResponseHeader(ByteString header); + + [Throws] + ByteString getAllResponseHeaders(); + + [Throws] + void overrideMimeType(DOMString mime); + + [SetterThrows] + attribute XMLHttpRequestResponseType responseType; + [Throws] + readonly attribute any response; + [Cached, Pure, Throws] + readonly attribute DOMString? responseText; + + [Throws, Exposed=Window] + readonly attribute Document? responseXML; + + // Mozilla-specific stuff + + [ChromeOnly, SetterThrows] + attribute boolean mozBackgroundRequest; + + [ChromeOnly, Exposed=Window] + readonly attribute MozChannel? channel; + + // A platform-specific identifer to represent the network interface + // which the HTTP request would occur on. + [ChromeOnly, Exposed=Window] + attribute ByteString? networkInterfaceId; + + [Throws, ChromeOnly, Exposed=Window] + any getInterface(IID iid); + + [ChromeOnly, Exposed=Window] + void setOriginAttributes(optional OriginAttributesDictionary originAttributes); + + readonly attribute boolean mozAnon; + readonly attribute boolean mozSystem; +}; diff --git a/dom/webidl/XMLHttpRequestEventTarget.webidl b/dom/webidl/XMLHttpRequestEventTarget.webidl new file mode 100644 index 0000000000..035da04ccd --- /dev/null +++ b/dom/webidl/XMLHttpRequestEventTarget.webidl @@ -0,0 +1,29 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * www.w3.org/TR/2012/WD-XMLHttpRequest-20120117/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +[Exposed=(Window,DedicatedWorker,SharedWorker)] +interface XMLHttpRequestEventTarget : EventTarget { + // event handlers + attribute EventHandler onloadstart; + + attribute EventHandler onprogress; + + attribute EventHandler onabort; + + attribute EventHandler onerror; + + attribute EventHandler onload; + + attribute EventHandler ontimeout; + + attribute EventHandler onloadend; +}; diff --git a/dom/webidl/XMLHttpRequestUpload.webidl b/dom/webidl/XMLHttpRequestUpload.webidl new file mode 100644 index 0000000000..cbb8728b7a --- /dev/null +++ b/dom/webidl/XMLHttpRequestUpload.webidl @@ -0,0 +1,16 @@ +/* -*- 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/. + * + * The origin of this IDL file is + * www.w3.org/TR/2012/WD-XMLHttpRequest-20120117/ + * + * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C + * liability, trademark and document use rules apply. + */ + +[Exposed=(Window,DedicatedWorker,SharedWorker)] +interface XMLHttpRequestUpload : XMLHttpRequestEventTarget { + +}; diff --git a/dom/webidl/XMLSerializer.webidl b/dom/webidl/XMLSerializer.webidl new file mode 100644 index 0000000000..700098e2fc --- /dev/null +++ b/dom/webidl/XMLSerializer.webidl @@ -0,0 +1,20 @@ +/* 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/. + * + * The origin of this IDL file is + * http://domparsing.spec.whatwg.org/#the-xmlserializer-interface + */ + +interface OutputStream; + +[Constructor] +interface XMLSerializer { + [Throws] + DOMString serializeToString(Node root); + + // Mozilla-specific stuff + [Throws, ChromeOnly] + void serializeToStream(Node root, OutputStream stream, DOMString? charset); +}; + diff --git a/dom/webidl/XMLStylesheetProcessingInstruction.webidl b/dom/webidl/XMLStylesheetProcessingInstruction.webidl new file mode 100644 index 0000000000..ec7d64a0d3 --- /dev/null +++ b/dom/webidl/XMLStylesheetProcessingInstruction.webidl @@ -0,0 +1,9 @@ +/* -*- 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/. + */ + +interface XMLStylesheetProcessingInstruction : ProcessingInstruction { + readonly attribute StyleSheet? sheet; +}; diff --git a/dom/webidl/XPathEvaluator.webidl b/dom/webidl/XPathEvaluator.webidl new file mode 100644 index 0000000000..a74909f2ab --- /dev/null +++ b/dom/webidl/XPathEvaluator.webidl @@ -0,0 +1,19 @@ +/* -*- 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/. + */ + +[Constructor] +interface XPathEvaluator { + // Based on nsIDOMXPathEvaluator + [NewObject, Throws] + XPathExpression createExpression(DOMString expression, + XPathNSResolver? resolver); + [Pure] + Node createNSResolver(Node nodeResolver); + [Throws] + XPathResult evaluate(DOMString expression, Node contextNode, + XPathNSResolver? resolver, unsigned short type, + object? result); +}; diff --git a/dom/webidl/XPathExpression.webidl b/dom/webidl/XPathExpression.webidl new file mode 100644 index 0000000000..dd5835492e --- /dev/null +++ b/dom/webidl/XPathExpression.webidl @@ -0,0 +1,22 @@ +/* -*- 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/. + */ + +interface XPathExpression { + // The result specifies a specific result object which may be reused and + // returned by this method. If this is specified as null or it's not an + // XPathResult object, a new result object will be constructed and returned. + [Throws] + XPathResult evaluate(Node contextNode, unsigned short type, object? result); + + // The result specifies a specific result object which may be reused and + // returned by this method. If this is specified as null or it's not an + // XPathResult object, a new result object will be constructed and returned. + [Throws, ChromeOnly] + XPathResult evaluateWithContext(Node contextNode, + unsigned long contextPosition, + unsigned long contextSize, + unsigned short type, object? result); +}; diff --git a/dom/webidl/XPathNSResolver.webidl b/dom/webidl/XPathNSResolver.webidl new file mode 100644 index 0000000000..6309ff38c1 --- /dev/null +++ b/dom/webidl/XPathNSResolver.webidl @@ -0,0 +1,10 @@ +/* -*- 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/. + */ + +callback interface XPathNSResolver +{ + DOMString? lookupNamespaceURI(DOMString? prefix); +}; diff --git a/dom/webidl/XPathResult.webidl b/dom/webidl/XPathResult.webidl new file mode 100644 index 0000000000..d50063771d --- /dev/null +++ b/dom/webidl/XPathResult.webidl @@ -0,0 +1,38 @@ +/* -*- 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/. + * + * Corresponds to http://www.w3.org/TR/2002/WD-DOM-Level-3-XPath-20020208 + */ + +interface XPathResult { + // XPathResultType + const unsigned short ANY_TYPE = 0; + const unsigned short NUMBER_TYPE = 1; + const unsigned short STRING_TYPE = 2; + const unsigned short BOOLEAN_TYPE = 3; + const unsigned short UNORDERED_NODE_ITERATOR_TYPE = 4; + const unsigned short ORDERED_NODE_ITERATOR_TYPE = 5; + const unsigned short UNORDERED_NODE_SNAPSHOT_TYPE = 6; + const unsigned short ORDERED_NODE_SNAPSHOT_TYPE = 7; + const unsigned short ANY_UNORDERED_NODE_TYPE = 8; + const unsigned short FIRST_ORDERED_NODE_TYPE = 9; + + readonly attribute unsigned short resultType; + [Throws] + readonly attribute double numberValue; + [Throws] + readonly attribute DOMString stringValue; + [Throws] + readonly attribute boolean booleanValue; + [Throws] + readonly attribute Node? singleNodeValue; + readonly attribute boolean invalidIteratorState; + [Throws] + readonly attribute unsigned long snapshotLength; + [Throws] + Node? iterateNext(); + [Throws] + Node? snapshotItem(unsigned long index); +}; diff --git a/dom/webidl/XSLTProcessor.webidl b/dom/webidl/XSLTProcessor.webidl new file mode 100644 index 0000000000..ce9ed846f0 --- /dev/null +++ b/dom/webidl/XSLTProcessor.webidl @@ -0,0 +1,109 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* 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/. */ + +interface nsIVariant; + +[Constructor] +interface XSLTProcessor { + /** + * Import the stylesheet into this XSLTProcessor for transformations. + * + * @param style The root-node of a XSLT stylesheet. This can be either + * a document node or an element node. If a document node + * then the document can contain either a XSLT stylesheet + * or a LRE stylesheet. + * If the argument is an element node it must be the + * xsl:stylesheet (or xsl:transform) element of an XSLT + * stylesheet. + */ + [Throws] + void importStylesheet(Node style); + + /** + * Transforms the node source applying the stylesheet given by + * the importStylesheet() function. The owner document of the output node + * owns the returned document fragment. + * + * @param source The node to be transformed + * @param output This document is used to generate the output + * @return DocumentFragment The result of the transformation + */ + [Throws] + DocumentFragment transformToFragment(Node source, + Document output); + + /** + * Transforms the node source applying the stylesheet given by the + * importStylesheet() function. + * + * @param source The node to be transformed + * @return Document The result of the transformation + */ + [Throws] + Document transformToDocument(Node source); + + /** + * Sets a parameter to be used in subsequent transformations with this + * nsIXSLTProcessor. If the parameter doesn't exist in the stylesheet the + * parameter will be ignored. + * + * @param namespaceURI The namespaceURI of the XSLT parameter + * @param localName The local name of the XSLT parameter + * @param value The new value of the XSLT parameter + */ + [Throws] + void setParameter([TreatNullAs=EmptyString] DOMString namespaceURI, + DOMString localName, + any value); + + /** + * Gets a parameter if previously set by setParameter. Returns null + * otherwise. + * + * @param namespaceURI The namespaceURI of the XSLT parameter + * @param localName The local name of the XSLT parameter + * @return nsIVariant The value of the XSLT parameter + */ + [Throws] + nsIVariant? getParameter([TreatNullAs=EmptyString] DOMString namespaceURI, + DOMString localName); + /** + * Removes a parameter, if set. This will make the processor use the + * default-value for the parameter as specified in the stylesheet. + * + * @param namespaceURI The namespaceURI of the XSLT parameter + * @param localName The local name of the XSLT parameter + */ + [Throws] + void removeParameter([TreatNullAs=EmptyString] DOMString namespaceURI, + DOMString localName); + + /** + * Removes all set parameters from this nsIXSLTProcessor. This will make + * the processor use the default-value for all parameters as specified in + * the stylesheet. + */ + void clearParameters(); + + /** + * Remove all parameters and stylesheets from this nsIXSLTProcessor. + */ + void reset(); + + /** + * Disables all loading of external documents, such as from + * <xsl:import> and document() + * Defaults to off and is *not* reset by calls to reset() + */ + [ChromeOnly] + const unsigned long DISABLE_ALL_LOADS = 1; + + /** + * Flags for this processor. Defaults to 0. See individual flags above + * for documentation for effect of reset() + */ + [ChromeOnly] + attribute unsigned long flags; +}; diff --git a/dom/webidl/XULCommandEvent.webidl b/dom/webidl/XULCommandEvent.webidl new file mode 100644 index 0000000000..9c024edc13 --- /dev/null +++ b/dom/webidl/XULCommandEvent.webidl @@ -0,0 +1,27 @@ +/* -*- 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/. + */ + +[Func="IsChromeOrXBL"] +interface XULCommandEvent : UIEvent +{ + readonly attribute boolean ctrlKey; + readonly attribute boolean shiftKey; + readonly attribute boolean altKey; + readonly attribute boolean metaKey; + + readonly attribute Event? sourceEvent; + + void initCommandEvent(DOMString type, + boolean canBubble, + boolean cancelable, + Window? view, + long detail, + boolean ctrlKey, + boolean altKey, + boolean shiftKey, + boolean metaKey, + Event? sourceEvent); +}; diff --git a/dom/webidl/XULDocument.webidl b/dom/webidl/XULDocument.webidl new file mode 100644 index 0000000000..c974733f62 --- /dev/null +++ b/dom/webidl/XULDocument.webidl @@ -0,0 +1,57 @@ +/* -*- 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/. + * + * The origin of this IDL file is: + * dom/interfaces/xul/nsIDOMXULDocument.idl + */ + +interface XULCommandDispatcher; +interface MozObserver; + +[Func="IsChromeOrXBL"] +interface XULDocument : Document { + attribute Node? popupNode; + + /** + * These attributes correspond to trustedGetPopupNode().rangeOffset and + * rangeParent. They will help you find where in the DOM the popup is + * happening. Can be accessed only during a popup event. Accessing any other + * time will be an error. + */ + [Throws, ChromeOnly] + readonly attribute Node? popupRangeParent; + [Throws, ChromeOnly] + readonly attribute long popupRangeOffset; + + attribute Node? tooltipNode; + + readonly attribute XULCommandDispatcher? commandDispatcher; + + [Throws] + readonly attribute long width; + [Throws] + readonly attribute long height; + + NodeList getElementsByAttribute(DOMString name, + [TreatNullAs=EmptyString] DOMString value); + [Throws] + NodeList getElementsByAttributeNS(DOMString? namespaceURI, DOMString name, + [TreatNullAs=EmptyString] DOMString value); + + [Throws] + void addBroadcastListenerFor(Element broadcaster, Element observer, + DOMString attr); + void removeBroadcastListenerFor(Element broadcaster, Element observer, + DOMString attr); + + [Throws] + void persist([TreatNullAs=EmptyString] DOMString id, DOMString attr); + + [Throws] + BoxObject? getBoxObjectFor(Element? element); + + [Throws] + void loadOverlay(DOMString url, MozObserver? observer); +}; diff --git a/dom/webidl/XULElement.webidl b/dom/webidl/XULElement.webidl new file mode 100644 index 0000000000..28c79b9a7b --- /dev/null +++ b/dom/webidl/XULElement.webidl @@ -0,0 +1,141 @@ +/* -*- 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/. + */ + +interface MozControllers; +interface MozFrameLoader; +interface MozRDFCompositeDataSource; +interface MozRDFResource; +interface MozXULTemplateBuilder; + +[Func="IsChromeOrXBL"] +interface XULElement : Element { + [SetterThrows] + attribute DOMString className; + + // Layout properties + [SetterThrows] + attribute DOMString align; + [SetterThrows] + attribute DOMString dir; + [SetterThrows] + attribute DOMString flex; + [SetterThrows] + attribute DOMString flexGroup; + [SetterThrows] + attribute DOMString ordinal; + [SetterThrows] + attribute DOMString orient; + [SetterThrows] + attribute DOMString pack; + + // Properties for hiding elements. + attribute boolean hidden; + attribute boolean collapsed; + + // Property for hooking up to broadcasters + [SetterThrows] + attribute DOMString observes; + + // Properties for hooking up to popups + [SetterThrows] + attribute DOMString menu; + [SetterThrows] + attribute DOMString contextMenu; + [SetterThrows] + attribute DOMString tooltip; + + // Width/height properties + [SetterThrows] + attribute DOMString width; + [SetterThrows] + attribute DOMString height; + [SetterThrows] + attribute DOMString minWidth; + [SetterThrows] + attribute DOMString minHeight; + [SetterThrows] + attribute DOMString maxWidth; + [SetterThrows] + attribute DOMString maxHeight; + + // Persistence + [SetterThrows] + attribute DOMString persist; + + // Position properties for + // * popups - these are screen coordinates + // * other elements - these are client coordinates relative to parent stack. + [SetterThrows] + attribute DOMString left; + [SetterThrows] + attribute DOMString top; + + // XUL Template Builder + [SetterThrows] + attribute DOMString datasources; + [SetterThrows] + attribute DOMString ref; + + // Tooltip and status info + [SetterThrows] + attribute DOMString tooltipText; + [SetterThrows] + attribute DOMString statusText; + + attribute boolean allowEvents; + + readonly attribute MozRDFCompositeDataSource? database; + readonly attribute MozXULTemplateBuilder? builder; + [Throws] + readonly attribute MozRDFResource? resource; + [Throws] + readonly attribute MozControllers controllers; + [Throws] + readonly attribute BoxObject? boxObject; + + [Throws] + void focus(); + [Throws] + void blur(); + [Throws] + void click(); + void doCommand(); + + // XXXbz this isn't really a nodelist! See bug 818548 + NodeList getElementsByAttribute(DOMString name, + DOMString value); + // XXXbz this isn't really a nodelist! See bug 818548 + [Throws] + NodeList getElementsByAttributeNS(DOMString namespaceURI, + DOMString name, + DOMString value); + [Constant] + readonly attribute CSSStyleDeclaration style; +}; + +// And the things from nsIFrameLoaderOwner +[NoInterfaceObject] +interface MozFrameLoaderOwner { + [ChromeOnly] + readonly attribute MozFrameLoader? frameLoader; + + [ChromeOnly] + void setIsPrerendered(); + + [ChromeOnly, Throws] + void presetOpenerWindow(WindowProxy? window); + + [ChromeOnly, Throws] + void swapFrameLoaders(XULElement aOtherLoaderOwner); + + [ChromeOnly, Throws] + void swapFrameLoaders(HTMLIFrameElement aOtherLoaderOwner); +}; + +XULElement implements GlobalEventHandlers; +XULElement implements TouchEventHandlers; +XULElement implements MozFrameLoaderOwner; +XULElement implements OnErrorEventHandlerForNodes; diff --git a/dom/webidl/moz.build b/dom/webidl/moz.build new file mode 100644 index 0000000000..efa90230d1 --- /dev/null +++ b/dom/webidl/moz.build @@ -0,0 +1,788 @@ +# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*- +# vim: set filetype=python: +# 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/. + +GENERATED_WEBIDL_FILES = [ + 'CSS2Properties.webidl', +] + +PREPROCESSED_WEBIDL_FILES = [ + 'Navigator.webidl', + 'Node.webidl', + 'Promise.webidl', + 'PromiseDebugging.webidl', + 'Window.webidl', +] + +WEBIDL_FILES = [ + 'AbstractWorker.webidl', + 'AddonManager.webidl', + 'AnalyserNode.webidl', + 'Animatable.webidl', + 'Animation.webidl', + 'AnimationEffectReadOnly.webidl', + 'AnimationEffectTiming.webidl', + 'AnimationEffectTimingReadOnly.webidl', + 'AnimationEvent.webidl', + 'AnimationTimeline.webidl', + 'AnonymousContent.webidl', + 'AppInfo.webidl', + 'AppNotificationServiceOptions.webidl', + 'APZTestData.webidl', + 'ArchiveReader.webidl', + 'ArchiveRequest.webidl', + 'Attr.webidl', + 'AudioBuffer.webidl', + 'AudioBufferSourceNode.webidl', + 'AudioChannel.webidl', + 'AudioContext.webidl', + 'AudioDestinationNode.webidl', + 'AudioListener.webidl', + 'AudioNode.webidl', + 'AudioParam.webidl', + 'AudioProcessingEvent.webidl', + 'AudioStreamTrack.webidl', + 'AudioTrack.webidl', + 'AudioTrackList.webidl', + 'AutocompleteInfo.webidl', + 'BarProp.webidl', + 'BaseKeyframeTypes.webidl', + 'BatteryManager.webidl', + 'BeforeAfterKeyboardEvent.webidl', + 'BeforeUnloadEvent.webidl', + 'BiquadFilterNode.webidl', + 'Blob.webidl', + 'BoxObject.webidl', + 'BroadcastChannel.webidl', + 'BrowserElement.webidl', + 'BrowserElementAudioChannel.webidl', + 'BrowserElementDictionaries.webidl', + 'BrowserElementProxy.webidl', + 'Cache.webidl', + 'CacheStorage.webidl', + 'CanvasCaptureMediaStream.webidl', + 'CanvasRenderingContext2D.webidl', + 'CaretPosition.webidl', + 'CDATASection.webidl', + 'ChannelMergerNode.webidl', + 'ChannelSplitterNode.webidl', + 'CharacterData.webidl', + 'CheckerboardReportService.webidl', + 'ChildNode.webidl', + 'ChromeNodeList.webidl', + 'ChromeUtils.webidl', + 'Client.webidl', + 'Clients.webidl', + 'ClipboardEvent.webidl', + 'CommandEvent.webidl', + 'Comment.webidl', + 'CompositionEvent.webidl', + 'Console.webidl', + 'ConstantSourceNode.webidl', + 'ContainerBoxObject.webidl', + 'ConvolverNode.webidl', + 'Coordinates.webidl', + 'CreateOfferRequest.webidl', + 'Crypto.webidl', + 'CSPDictionaries.webidl', + 'CSPReport.webidl', + 'CSS.webidl', + 'CSSAnimation.webidl', + 'CSSLexer.webidl', + 'CSSPrimitiveValue.webidl', + 'CSSPseudoElement.webidl', + 'CSSRuleList.webidl', + 'CSSStyleDeclaration.webidl', + 'CSSStyleSheet.webidl', + 'CSSTransition.webidl', + 'CSSValue.webidl', + 'CSSValueList.webidl', + 'CustomElementRegistry.webidl', + 'DataContainerEvent.webidl', + 'DataTransfer.webidl', + 'DataTransferItem.webidl', + 'DataTransferItemList.webidl', + 'DecoderDoctorNotification.webidl', + 'DedicatedWorkerGlobalScope.webidl', + 'DelayNode.webidl', + 'DesktopNotification.webidl', + 'DeviceMotionEvent.webidl', + 'Directory.webidl', + 'Document.webidl', + 'DocumentFragment.webidl', + 'DocumentTimeline.webidl', + 'DocumentType.webidl', + 'DOMCursor.webidl', + 'DOMError.webidl', + 'DOMException.webidl', + 'DOMImplementation.webidl', + 'DominatorTree.webidl', + 'DOMMatrix.webidl', + 'DOMParser.webidl', + 'DOMPoint.webidl', + 'DOMQuad.webidl', + 'DOMRect.webidl', + 'DOMRectList.webidl', + 'DOMRequest.webidl', + 'DOMStringList.webidl', + 'DOMStringMap.webidl', + 'DOMTokenList.webidl', + 'Downloads.webidl', + 'DragEvent.webidl', + 'DynamicsCompressorNode.webidl', + 'Element.webidl', + 'Event.webidl', + 'EventHandler.webidl', + 'EventListener.webidl', + 'EventSource.webidl', + 'EventTarget.webidl', + 'ExtendableEvent.webidl', + 'ExtendableMessageEvent.webidl', + 'FakePluginTagInit.webidl', + 'Fetch.webidl', + 'FetchEvent.webidl', + 'File.webidl', + 'FileList.webidl', + 'FileMode.webidl', + 'FileReader.webidl', + 'FileReaderSync.webidl', + 'FileSystem.webidl', + 'FileSystemDirectoryEntry.webidl', + 'FileSystemDirectoryReader.webidl', + 'FileSystemEntry.webidl', + 'FileSystemFileEntry.webidl', + 'FlyWebDiscoveryManager.webidl', + 'FlyWebFetchEvent.webidl', + 'FlyWebPublish.webidl', + 'FlyWebWebSocketEvent.webidl', + 'FocusEvent.webidl', + 'FontFace.webidl', + 'FontFaceSet.webidl', + 'FontFaceSource.webidl', + 'FormData.webidl', + 'Function.webidl', + 'GainNode.webidl', + 'Geolocation.webidl', + 'GeometryUtils.webidl', + 'GetUserMediaRequest.webidl', + 'Grid.webidl', + 'Headers.webidl', + 'HeapSnapshot.webidl', + 'History.webidl', + 'HTMLAllCollection.webidl', + 'HTMLAnchorElement.webidl', + 'HTMLAppletElement.webidl', + 'HTMLAreaElement.webidl', + 'HTMLAudioElement.webidl', + 'HTMLBaseElement.webidl', + 'HTMLBodyElement.webidl', + 'HTMLBRElement.webidl', + 'HTMLButtonElement.webidl', + 'HTMLCanvasElement.webidl', + 'HTMLCollection.webidl', + 'HTMLContentElement.webidl', + 'HTMLDataElement.webidl', + 'HTMLDataListElement.webidl', + 'HTMLDetailsElement.webidl', + 'HTMLDirectoryElement.webidl', + 'HTMLDivElement.webidl', + 'HTMLDListElement.webidl', + 'HTMLDocument.webidl', + 'HTMLElement.webidl', + 'HTMLEmbedElement.webidl', + 'HTMLFieldSetElement.webidl', + 'HTMLFontElement.webidl', + 'HTMLFormControlsCollection.webidl', + 'HTMLFormElement.webidl', + 'HTMLFrameElement.webidl', + 'HTMLFrameSetElement.webidl', + 'HTMLHeadElement.webidl', + 'HTMLHeadingElement.webidl', + 'HTMLHRElement.webidl', + 'HTMLHtmlElement.webidl', + 'HTMLHyperlinkElementUtils.webidl', + 'HTMLIFrameElement.webidl', + 'HTMLImageElement.webidl', + 'HTMLInputElement.webidl', + 'HTMLLabelElement.webidl', + 'HTMLLegendElement.webidl', + 'HTMLLIElement.webidl', + 'HTMLLinkElement.webidl', + 'HTMLMapElement.webidl', + 'HTMLMediaElement.webidl', + 'HTMLMenuElement.webidl', + 'HTMLMenuItemElement.webidl', + 'HTMLMetaElement.webidl', + 'HTMLMeterElement.webidl', + 'HTMLModElement.webidl', + 'HTMLObjectElement.webidl', + 'HTMLOListElement.webidl', + 'HTMLOptGroupElement.webidl', + 'HTMLOptionElement.webidl', + 'HTMLOptionsCollection.webidl', + 'HTMLOutputElement.webidl', + 'HTMLParagraphElement.webidl', + 'HTMLParamElement.webidl', + 'HTMLPictureElement.webidl', + 'HTMLPreElement.webidl', + 'HTMLProgressElement.webidl', + 'HTMLQuoteElement.webidl', + 'HTMLScriptElement.webidl', + 'HTMLSelectElement.webidl', + 'HTMLShadowElement.webidl', + 'HTMLSourceElement.webidl', + 'HTMLSpanElement.webidl', + 'HTMLStyleElement.webidl', + 'HTMLTableCaptionElement.webidl', + 'HTMLTableCellElement.webidl', + 'HTMLTableColElement.webidl', + 'HTMLTableElement.webidl', + 'HTMLTableRowElement.webidl', + 'HTMLTableSectionElement.webidl', + 'HTMLTemplateElement.webidl', + 'HTMLTextAreaElement.webidl', + 'HTMLTimeElement.webidl', + 'HTMLTitleElement.webidl', + 'HTMLTrackElement.webidl', + 'HTMLUListElement.webidl', + 'HTMLVideoElement.webidl', + 'IDBCursor.webidl', + 'IDBDatabase.webidl', + 'IDBFactory.webidl', + 'IDBFileHandle.webidl', + 'IDBFileRequest.webidl', + 'IDBIndex.webidl', + 'IDBKeyRange.webidl', + 'IDBMutableFile.webidl', + 'IDBObjectStore.webidl', + 'IDBOpenDBRequest.webidl', + 'IDBRequest.webidl', + 'IDBTransaction.webidl', + 'IDBVersionChangeEvent.webidl', + 'IdleDeadline.webidl', + 'IIRFilterNode.webidl', + 'ImageBitmap.webidl', + 'ImageBitmapRenderingContext.webidl', + 'ImageCapture.webidl', + 'ImageData.webidl', + 'ImageDocument.webidl', + 'InputEvent.webidl', + 'InputMethod.webidl', + 'InspectorUtils.webidl', + 'IntersectionObserver.webidl', + 'IterableIterator.webidl', + 'KeyAlgorithm.webidl', + 'KeyboardEvent.webidl', + 'KeyEvent.webidl', + 'KeyframeAnimationOptions.webidl', + 'KeyframeEffect.webidl', + 'KeyIdsInitData.webidl', + 'LegacyQueryInterface.webidl', + 'LinkStyle.webidl', + 'ListBoxObject.webidl', + 'LocalMediaStream.webidl', + 'Location.webidl', + 'MediaDeviceInfo.webidl', + 'MediaDevices.webidl', + 'MediaElementAudioSourceNode.webidl', + 'MediaEncryptedEvent.webidl', + 'MediaError.webidl', + 'MediaKeyError.webidl', + 'MediaKeyMessageEvent.webidl', + 'MediaKeys.webidl', + 'MediaKeySession.webidl', + 'MediaKeysRequestStatus.webidl', + 'MediaKeyStatusMap.webidl', + 'MediaKeySystemAccess.webidl', + 'MediaList.webidl', + 'MediaQueryList.webidl', + 'MediaRecorder.webidl', + 'MediaSource.webidl', + 'MediaStream.webidl', + 'MediaStreamAudioDestinationNode.webidl', + 'MediaStreamAudioSourceNode.webidl', + 'MediaStreamError.webidl', + 'MediaStreamTrack.webidl', + 'MediaTrackConstraintSet.webidl', + 'MediaTrackSettings.webidl', + 'MediaTrackSupportedConstraints.webidl', + 'MenuBoxObject.webidl', + 'MessageChannel.webidl', + 'MessageEvent.webidl', + 'MessagePort.webidl', + 'MimeType.webidl', + 'MimeTypeArray.webidl', + 'MouseEvent.webidl', + 'MouseScrollEvent.webidl', + 'MozPowerManager.webidl', + 'MozSelfSupport.webidl', + 'MozTetheringManager.webidl', + 'MozTimeManager.webidl', + 'MozWakeLock.webidl', + 'MutationEvent.webidl', + 'MutationObserver.webidl', + 'NamedNodeMap.webidl', + 'NativeOSFileInternals.webidl', + 'NetDashboard.webidl', + 'NetworkInformation.webidl', + 'NetworkOptions.webidl', + 'NodeFilter.webidl', + 'NodeIterator.webidl', + 'NodeList.webidl', + 'Notification.webidl', + 'NotificationEvent.webidl', + 'NotifyPaintEvent.webidl', + 'OfflineAudioCompletionEvent.webidl', + 'OfflineAudioContext.webidl', + 'OfflineResourceList.webidl', + 'OffscreenCanvas.webidl', + 'OscillatorNode.webidl', + 'PaintRequest.webidl', + 'PaintRequestList.webidl', + 'PannerNode.webidl', + 'ParentNode.webidl', + 'Performance.webidl', + 'PerformanceEntry.webidl', + 'PerformanceMark.webidl', + 'PerformanceMeasure.webidl', + 'PerformanceNavigation.webidl', + 'PerformanceObserver.webidl', + 'PerformanceObserverEntryList.webidl', + 'PerformanceResourceTiming.webidl', + 'PerformanceTiming.webidl', + 'PeriodicWave.webidl', + 'Permissions.webidl', + 'PermissionSettings.webidl', + 'PermissionStatus.webidl', + 'Plugin.webidl', + 'PluginArray.webidl', + 'PointerEvent.webidl', + 'PopupBoxObject.webidl', + 'Position.webidl', + 'PositionError.webidl', + 'Presentation.webidl', + 'PresentationAvailability.webidl', + 'PresentationConnection.webidl', + 'PresentationConnectionList.webidl', + 'PresentationDeviceInfoManager.webidl', + 'PresentationReceiver.webidl', + 'PresentationRequest.webidl', + 'ProcessingInstruction.webidl', + 'ProfileTimelineMarker.webidl', + 'PushEvent.webidl', + 'PushManager.webidl', + 'PushManager.webidl', + 'PushMessageData.webidl', + 'PushSubscription.webidl', + 'PushSubscriptionOptions.webidl', + 'RadioNodeList.webidl', + 'Range.webidl', + 'Rect.webidl', + 'Request.webidl', + 'Response.webidl', + 'RGBColor.webidl', + 'RTCStatsReport.webidl', + 'Screen.webidl', + 'ScreenOrientation.webidl', + 'ScriptProcessorNode.webidl', + 'ScrollAreaEvent.webidl', + 'ScrollBoxObject.webidl', + 'Selection.webidl', + 'ServiceWorker.webidl', + 'ServiceWorkerContainer.webidl', + 'ServiceWorkerGlobalScope.webidl', + 'ServiceWorkerRegistration.webidl', + 'SettingChangeNotification.webidl', + 'SettingsManager.webidl', + 'ShadowRoot.webidl', + 'SharedWorker.webidl', + 'SharedWorkerGlobalScope.webidl', + 'SimpleGestureEvent.webidl', + 'SocketCommon.webidl', + 'SourceBuffer.webidl', + 'SourceBufferList.webidl', + 'StereoPannerNode.webidl', + 'Storage.webidl', + 'StorageEvent.webidl', + 'StorageManager.webidl', + 'StorageType.webidl', + 'StyleSheet.webidl', + 'StyleSheetList.webidl', + 'SubtleCrypto.webidl', + 'SVGAElement.webidl', + 'SVGAngle.webidl', + 'SVGAnimatedAngle.webidl', + 'SVGAnimatedBoolean.webidl', + 'SVGAnimatedEnumeration.webidl', + 'SVGAnimatedInteger.webidl', + 'SVGAnimatedLength.webidl', + 'SVGAnimatedLengthList.webidl', + 'SVGAnimatedNumber.webidl', + 'SVGAnimatedNumberList.webidl', + 'SVGAnimatedPathData.webidl', + 'SVGAnimatedPoints.webidl', + 'SVGAnimatedPreserveAspectRatio.webidl', + 'SVGAnimatedRect.webidl', + 'SVGAnimatedString.webidl', + 'SVGAnimatedTransformList.webidl', + 'SVGAnimateElement.webidl', + 'SVGAnimateMotionElement.webidl', + 'SVGAnimateTransformElement.webidl', + 'SVGAnimationElement.webidl', + 'SVGCircleElement.webidl', + 'SVGClipPathElement.webidl', + 'SVGComponentTransferFunctionElement.webidl', + 'SVGDefsElement.webidl', + 'SVGDescElement.webidl', + 'SVGElement.webidl', + 'SVGEllipseElement.webidl', + 'SVGFEBlendElement.webidl', + 'SVGFEColorMatrixElement.webidl', + 'SVGFEComponentTransferElement.webidl', + 'SVGFECompositeElement.webidl', + 'SVGFEConvolveMatrixElement.webidl', + 'SVGFEDiffuseLightingElement.webidl', + 'SVGFEDisplacementMapElement.webidl', + 'SVGFEDistantLightElement.webidl', + 'SVGFEDropShadowElement.webidl', + 'SVGFEFloodElement.webidl', + 'SVGFEFuncAElement.webidl', + 'SVGFEFuncBElement.webidl', + 'SVGFEFuncGElement.webidl', + 'SVGFEFuncRElement.webidl', + 'SVGFEGaussianBlurElement.webidl', + 'SVGFEImageElement.webidl', + 'SVGFEMergeElement.webidl', + 'SVGFEMergeNodeElement.webidl', + 'SVGFEMorphologyElement.webidl', + 'SVGFEOffsetElement.webidl', + 'SVGFEPointLightElement.webidl', + 'SVGFESpecularLightingElement.webidl', + 'SVGFESpotLightElement.webidl', + 'SVGFETileElement.webidl', + 'SVGFETurbulenceElement.webidl', + 'SVGFilterElement.webidl', + 'SVGFilterPrimitiveStandardAttributes.webidl', + 'SVGFitToViewBox.webidl', + 'SVGForeignObjectElement.webidl', + 'SVGGElement.webidl', + 'SVGGradientElement.webidl', + 'SVGGraphicsElement.webidl', + 'SVGImageElement.webidl', + 'SVGLength.webidl', + 'SVGLengthList.webidl', + 'SVGLinearGradientElement.webidl', + 'SVGLineElement.webidl', + 'SVGMarkerElement.webidl', + 'SVGMaskElement.webidl', + 'SVGMatrix.webidl', + 'SVGMetadataElement.webidl', + 'SVGMPathElement.webidl', + 'SVGNumber.webidl', + 'SVGNumberList.webidl', + 'SVGPathElement.webidl', + 'SVGPathSeg.webidl', + 'SVGPathSegList.webidl', + 'SVGPatternElement.webidl', + 'SVGPoint.webidl', + 'SVGPointList.webidl', + 'SVGPolygonElement.webidl', + 'SVGPolylineElement.webidl', + 'SVGPreserveAspectRatio.webidl', + 'SVGRadialGradientElement.webidl', + 'SVGRect.webidl', + 'SVGRectElement.webidl', + 'SVGScriptElement.webidl', + 'SVGSetElement.webidl', + 'SVGStopElement.webidl', + 'SVGStringList.webidl', + 'SVGStyleElement.webidl', + 'SVGSVGElement.webidl', + 'SVGSwitchElement.webidl', + 'SVGSymbolElement.webidl', + 'SVGTests.webidl', + 'SVGTextContentElement.webidl', + 'SVGTextElement.webidl', + 'SVGTextPathElement.webidl', + 'SVGTextPositioningElement.webidl', + 'SVGTitleElement.webidl', + 'SVGTransform.webidl', + 'SVGTransformList.webidl', + 'SVGTSpanElement.webidl', + 'SVGUnitTypes.webidl', + 'SVGUnitTypeValues.webidl', + 'SVGURIReference.webidl', + 'SVGUseElement.webidl', + 'SVGViewElement.webidl', + 'SVGZoomAndPan.webidl', + 'SVGZoomAndPanValues.webidl', + 'SVGZoomEvent.webidl', + 'SystemUpdate.webidl', + 'TCPServerSocket.webidl', + 'TCPServerSocketEvent.webidl', + 'TCPSocket.webidl', + 'TCPSocketErrorEvent.webidl', + 'TCPSocketEvent.webidl', + 'Text.webidl', + 'TextClause.webidl', + 'TextDecoder.webidl', + 'TextEncoder.webidl', + 'TextTrack.webidl', + 'TextTrackCue.webidl', + 'TextTrackCueList.webidl', + 'TextTrackList.webidl', + 'ThreadSafeChromeUtils.webidl', + 'TimeEvent.webidl', + 'TimeRanges.webidl', + 'Touch.webidl', + 'TouchEvent.webidl', + 'TouchList.webidl', + 'TransitionEvent.webidl', + 'TreeBoxObject.webidl', + 'TreeColumn.webidl', + 'TreeColumns.webidl', + 'TreeWalker.webidl', + 'U2F.webidl', + 'UDPMessageEvent.webidl', + 'UDPSocket.webidl', + 'UIEvent.webidl', + 'URL.webidl', + 'URLSearchParams.webidl', + 'ValidityState.webidl', + 'VideoPlaybackQuality.webidl', + 'VideoStreamTrack.webidl', + 'VideoTrack.webidl', + 'VideoTrackList.webidl', + 'VRDisplay.webidl', + 'VTTCue.webidl', + 'VTTRegion.webidl', + 'WaveShaperNode.webidl', + 'WebComponents.webidl', + 'WebGL2RenderingContext.webidl', + 'WebGLRenderingContext.webidl', + 'WebKitCSSMatrix.webidl', + 'WebSocket.webidl', + 'WheelEvent.webidl', + 'WidevineCDMManifest.webidl', + 'WifiOptions.webidl', + 'WindowOrWorkerGlobalScope.webidl', + 'WindowRoot.webidl', + 'Worker.webidl', + 'WorkerDebuggerGlobalScope.webidl', + 'WorkerGlobalScope.webidl', + 'WorkerLocation.webidl', + 'WorkerNavigator.webidl', + 'Worklet.webidl', + 'WorkletGlobalScope.webidl', + 'XMLDocument.webidl', + 'XMLHttpRequest.webidl', + 'XMLHttpRequestEventTarget.webidl', + 'XMLHttpRequestUpload.webidl', + 'XMLSerializer.webidl', + 'XMLStylesheetProcessingInstruction.webidl', + 'XPathEvaluator.webidl', + 'XPathExpression.webidl', + 'XPathNSResolver.webidl', + 'XPathResult.webidl', + 'XSLTProcessor.webidl', + 'XULCommandEvent.webidl', + 'XULDocument.webidl', + 'XULElement.webidl', +] + +if CONFIG['MOZ_AUDIO_CHANNEL_MANAGER']: + WEBIDL_FILES += [ + 'AudioChannelManager.webidl', + ] + +if CONFIG['MOZ_WEBRTC']: + WEBIDL_FILES += [ + 'DataChannel.webidl', + 'MediaStreamList.webidl', + 'PeerConnectionImpl.webidl', + 'PeerConnectionImplEnums.webidl', + 'PeerConnectionObserver.webidl', + 'PeerConnectionObserverEnums.webidl', + 'RTCCertificate.webidl', + 'RTCConfiguration.webidl', + 'RTCDTMFSender.webidl', + 'RTCIceCandidate.webidl', + 'RTCIdentityAssertion.webidl', + 'RTCIdentityProvider.webidl', + 'RTCPeerConnection.webidl', + 'RTCPeerConnectionStatic.webidl', + 'RTCRtpReceiver.webidl', + 'RTCRtpSender.webidl', + 'RTCSessionDescription.webidl', + 'WebrtcDeprecated.webidl', + 'WebrtcGlobalInformation.webidl', + ] + +if CONFIG['MOZ_WEBSPEECH']: + WEBIDL_FILES += [ + 'SpeechGrammar.webidl', + 'SpeechGrammarList.webidl', + 'SpeechRecognition.webidl', + 'SpeechRecognitionAlternative.webidl', + 'SpeechRecognitionError.webidl', + 'SpeechRecognitionEvent.webidl', + 'SpeechRecognitionResult.webidl', + 'SpeechRecognitionResultList.webidl', + 'SpeechSynthesis.webidl', + 'SpeechSynthesisErrorEvent.webidl', + 'SpeechSynthesisEvent.webidl', + 'SpeechSynthesisUtterance.webidl', + 'SpeechSynthesisVoice.webidl', + ] + +if CONFIG['MOZ_GAMEPAD']: + WEBIDL_FILES += [ + 'Gamepad.webidl', + 'GamepadPose.webidl', + 'GamepadServiceTest.webidl' + ] + +WEBIDL_FILES += [ + 'CloseEvent.webidl', + 'CustomEvent.webidl', + 'DeviceOrientationEvent.webidl', + 'HashChangeEvent.webidl', + 'MozSettingsEvent.webidl', + 'PageTransitionEvent.webidl', + 'PopStateEvent.webidl', + 'PopupBlockedEvent.webidl', + 'ProgressEvent.webidl', + 'RecordErrorEvent.webidl', + 'StyleRuleChangeEvent.webidl', + 'StyleSheetApplicableStateChangeEvent.webidl', + 'StyleSheetChangeEvent.webidl', +] + +# We only expose our prefable test interfaces in debug builds, just to be on +# the safe side. +if CONFIG['MOZ_DEBUG']: + WEBIDL_FILES += ['TestFunctions.webidl', + 'TestInterfaceJS.webidl', + 'TestInterfaceJSDictionaries.webidl', + 'TestInterfaceJSMaplikeSetlikeIterable.webidl'] + +if CONFIG['MOZ_SECUREELEMENT']: + WEBIDL_FILES += [ + 'SecureElement.webidl', + 'SecureElementManager.webidl', + ] + +if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gonk': + WEBIDL_FILES += [ + 'MozNetworkStats.webidl', + 'MozNetworkStatsAlarm.webidl', + 'MozNetworkStatsData.webidl', + 'MozNetworkStatsInterface.webidl', + 'MozNetworkStatsManager.webidl', + 'MozSpeakerManager.webidl', + 'MozWifiCapabilities.webidl', + 'MozWifiManager.webidl', + 'MozWifiP2pManager.webidl', + ] +else: + WEBIDL_FILES += [ + 'InstallTrigger.webidl', + ] + +GENERATED_EVENTS_WEBIDL_FILES = [ + 'AddonEvent.webidl', + 'AnimationPlaybackEvent.webidl', + 'AutocompleteErrorEvent.webidl', + 'BlobEvent.webidl', + 'CaretStateChangedEvent.webidl', + 'CloseEvent.webidl', + 'DeviceLightEvent.webidl', + 'DeviceOrientationEvent.webidl', + 'DeviceProximityEvent.webidl', + 'DownloadEvent.webidl', + 'ErrorEvent.webidl', + 'FontFaceSetLoadEvent.webidl', + 'HashChangeEvent.webidl', + 'HiddenPluginEvent.webidl', + 'ImageCaptureErrorEvent.webidl', + 'MediaStreamEvent.webidl', + 'MediaStreamTrackEvent.webidl', + 'MozSettingsEvent.webidl', + 'MozSettingsTransactionEvent.webidl', + 'PageTransitionEvent.webidl', + 'PerformanceEntryEvent.webidl', + 'PluginCrashedEvent.webidl', + 'PopStateEvent.webidl', + 'PopupBlockedEvent.webidl', + 'PresentationConnectionAvailableEvent.webidl', + 'PresentationConnectionCloseEvent.webidl', + 'ProgressEvent.webidl', + 'RecordErrorEvent.webidl', + 'ScrollViewChangeEvent.webidl', + 'ServiceWorkerMessageEvent.webidl', + 'StyleRuleChangeEvent.webidl', + 'StyleSheetApplicableStateChangeEvent.webidl', + 'StyleSheetChangeEvent.webidl', + 'TCPServerSocketEvent.webidl', + 'TCPSocketErrorEvent.webidl', + 'TCPSocketEvent.webidl', + 'TrackEvent.webidl', + 'UDPMessageEvent.webidl', + 'UserProximityEvent.webidl', + 'WebGLContextEvent.webidl', +] + +if CONFIG['MOZ_WEBRTC']: + GENERATED_EVENTS_WEBIDL_FILES += [ + 'RTCDataChannelEvent.webidl', + 'RTCDTMFToneChangeEvent.webidl', + 'RTCPeerConnectionIceEvent.webidl', + 'RTCTrackEvent.webidl', + ] + +if CONFIG['MOZ_WEBSPEECH']: + GENERATED_EVENTS_WEBIDL_FILES += [ + 'SpeechRecognitionEvent.webidl', + 'SpeechSynthesisErrorEvent.webidl', + 'SpeechSynthesisEvent.webidl', + ] + +if CONFIG['MOZ_GAMEPAD']: + GENERATED_EVENTS_WEBIDL_FILES += [ + 'GamepadAxisMoveEvent.webidl', + 'GamepadButtonEvent.webidl', + 'GamepadEvent.webidl', + ] + +if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gonk': + GENERATED_EVENTS_WEBIDL_FILES += [ + 'MozWifiConnectionInfoEvent.webidl', + 'MozWifiP2pStatusChangeEvent.webidl', + 'MozWifiStationInfoEvent.webidl', + 'MozWifiStatusChangeEvent.webidl', + ] + +if CONFIG['MOZ_BUILD_APP'] in ['browser', 'xulrunner'] or CONFIG['MOZ_SUITE']: + WEBIDL_FILES += [ + 'BrowserFeedWriter.webidl', + ] + +if CONFIG['MOZ_BUILD_APP'] in ['browser', 'mobile/android', 'xulrunner']: + WEBIDL_FILES += [ + 'External.webidl', + ] + +if CONFIG['MOZ_B2G']: + WEBIDL_FILES += [ + 'MozApplicationEvent.webidl' + ] + GENERATED_EVENTS_WEBIDL_FILES += [ + 'MozApplicationEvent.webidl' + ] + +if CONFIG['ACCESSIBILITY']: + WEBIDL_FILES += [ + 'AccessibleNode.webidl', + ] |