diff --git a/Cargo.toml b/Cargo.toml index 46f7d514256..d76eb37fbf3 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -50,6 +50,7 @@ members = [ "crates/webidl-tests", "examples/add", "examples/asm.js", + "examples/canvas", "examples/char", "examples/closures", "examples/comments", diff --git a/crates/web-sys/webidls/enabled/AbstractWorker.webidl b/crates/web-sys/webidls/enabled/AbstractWorker.webidl index 7ea6e367b6c..1475833efaf 100644 --- a/crates/web-sys/webidls/enabled/AbstractWorker.webidl +++ b/crates/web-sys/webidls/enabled/AbstractWorker.webidl @@ -4,7 +4,7 @@ * You can obtain one at http://mozilla.org/MPL/2.0/. */ -[NoInterfaceObject, Exposed=(Window,Worker,System)] -interface AbstractWorker { +[Exposed=(Window,Worker,System)] +interface mixin AbstractWorker { attribute EventHandler onerror; }; diff --git a/crates/web-sys/webidls/enabled/AnalyserNode.webidl b/crates/web-sys/webidls/enabled/AnalyserNode.webidl index 73c697f0037..5834f9430c3 100644 --- a/crates/web-sys/webidls/enabled/AnalyserNode.webidl +++ b/crates/web-sys/webidls/enabled/AnalyserNode.webidl @@ -43,6 +43,3 @@ interface AnalyserNode : AudioNode { attribute double smoothingTimeConstant; }; - -// Mozilla extension -AnalyserNode implements AudioNodePassThrough; diff --git a/crates/web-sys/webidls/enabled/Attr.webidl b/crates/web-sys/webidls/enabled/Attr.webidl index 921e2df81fb..28914dd011a 100644 --- a/crates/web-sys/webidls/enabled/Attr.webidl +++ b/crates/web-sys/webidls/enabled/Attr.webidl @@ -24,10 +24,3 @@ interface Attr : Node { readonly attribute boolean specified; }; - -// Mozilla extensions - -partial interface Attr { - [GetterThrows] - readonly attribute Element? ownerElement; -}; diff --git a/crates/web-sys/webidls/enabled/AudioBufferSourceNode.webidl b/crates/web-sys/webidls/enabled/AudioBufferSourceNode.webidl index 1c30db3da2d..729550c5d73 100644 --- a/crates/web-sys/webidls/enabled/AudioBufferSourceNode.webidl +++ b/crates/web-sys/webidls/enabled/AudioBufferSourceNode.webidl @@ -36,6 +36,3 @@ interface AudioBufferSourceNode : AudioScheduledSourceNode { void start(optional double when = 0, optional double grainOffset = 0, optional double grainDuration); }; - -// Mozilla extensions -AudioBufferSourceNode implements AudioNodePassThrough; diff --git a/crates/web-sys/webidls/enabled/AudioNode.webidl b/crates/web-sys/webidls/enabled/AudioNode.webidl index 80b33e50eeb..7f4cbbf81fa 100644 --- a/crates/web-sys/webidls/enabled/AudioNode.webidl +++ b/crates/web-sys/webidls/enabled/AudioNode.webidl @@ -62,15 +62,3 @@ interface AudioNode : EventTarget { attribute ChannelInterpretation channelInterpretation; }; - -// Mozilla extension -partial interface AudioNode { - [ChromeOnly] - readonly attribute unsigned long id; -}; -[NoInterfaceObject] -interface AudioNodePassThrough { - [ChromeOnly] - attribute boolean passThrough; -}; - diff --git a/crates/web-sys/webidls/enabled/AudioParam.webidl b/crates/web-sys/webidls/enabled/AudioParam.webidl index 7e151b41572..c9870438f89 100644 --- a/crates/web-sys/webidls/enabled/AudioParam.webidl +++ b/crates/web-sys/webidls/enabled/AudioParam.webidl @@ -18,7 +18,7 @@ interface AudioParam { readonly attribute float minValue; readonly attribute float maxValue; - // Parameter automation. + // Parameter automation. [Throws] AudioParam setValueAtTime(float value, double startTime); [Throws] @@ -26,27 +26,17 @@ interface AudioParam { [Throws] AudioParam exponentialRampToValueAtTime(float value, double endTime); - // Exponentially approach the target value with a rate having the given time constant. + // 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. + // 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. + // 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/crates/web-sys/webidls/enabled/BiquadFilterNode.webidl b/crates/web-sys/webidls/enabled/BiquadFilterNode.webidl index c9ac0f0b909..420d3026948 100644 --- a/crates/web-sys/webidls/enabled/BiquadFilterNode.webidl +++ b/crates/web-sys/webidls/enabled/BiquadFilterNode.webidl @@ -44,7 +44,3 @@ interface BiquadFilterNode : AudioNode { Float32Array phaseResponse); }; - -// Mozilla extension -BiquadFilterNode implements AudioNodePassThrough; - diff --git a/crates/web-sys/webidls/enabled/BrowserElement.webidl b/crates/web-sys/webidls/enabled/BrowserElement.webidl index 8a683d9466b..c899d667712 100644 --- a/crates/web-sys/webidls/enabled/BrowserElement.webidl +++ b/crates/web-sys/webidls/enabled/BrowserElement.webidl @@ -19,15 +19,13 @@ dictionary BrowserElementExecuteScriptOptions { DOMString? origin; }; -[NoInterfaceObject] -interface BrowserElement { +interface mixin BrowserElement { }; -BrowserElement implements BrowserElementCommon; -BrowserElement implements BrowserElementPrivileged; +BrowserElement includes BrowserElementCommon; +BrowserElement includes BrowserElementPrivileged; -[NoInterfaceObject] -interface BrowserElementCommon { +interface mixin BrowserElementCommon { [Throws, Pref="dom.mozBrowserFramesEnabled", ChromeOnly] @@ -39,8 +37,7 @@ interface BrowserElementCommon { void removeNextPaintListener(BrowserElementNextPaintEventCallback listener); }; -[NoInterfaceObject] -interface BrowserElementPrivileged { +interface mixin BrowserElementPrivileged { [Throws, Pref="dom.mozBrowserFramesEnabled", ChromeOnly] diff --git a/crates/web-sys/webidls/enabled/CSSPseudoElement.webidl b/crates/web-sys/webidls/enabled/CSSPseudoElement.webidl index 6d33baf0739..145728096b5 100644 --- a/crates/web-sys/webidls/enabled/CSSPseudoElement.webidl +++ b/crates/web-sys/webidls/enabled/CSSPseudoElement.webidl @@ -22,4 +22,4 @@ interface CSSPseudoElement { }; // https://drafts.csswg.org/web-animations/#extensions-to-the-pseudoelement-interface -CSSPseudoElement implements Animatable; +CSSPseudoElement includes Animatable; diff --git a/crates/web-sys/webidls/enabled/CanvasRenderingContext2D.webidl b/crates/web-sys/webidls/enabled/CanvasRenderingContext2D.webidl index 7348f215de3..26ae81b7221 100644 --- a/crates/web-sys/webidls/enabled/CanvasRenderingContext2D.webidl +++ b/crates/web-sys/webidls/enabled/CanvasRenderingContext2D.webidl @@ -107,33 +107,31 @@ interface CanvasRenderingContext2D { void demote(); }; -CanvasRenderingContext2D implements CanvasState; -CanvasRenderingContext2D implements CanvasTransform; -CanvasRenderingContext2D implements CanvasCompositing; -CanvasRenderingContext2D implements CanvasImageSmoothing; -CanvasRenderingContext2D implements CanvasFillStrokeStyles; -CanvasRenderingContext2D implements CanvasShadowStyles; -CanvasRenderingContext2D implements CanvasFilters; -CanvasRenderingContext2D implements CanvasRect; -CanvasRenderingContext2D implements CanvasDrawPath; -CanvasRenderingContext2D implements CanvasUserInterface; -CanvasRenderingContext2D implements CanvasText; -CanvasRenderingContext2D implements CanvasDrawImage; -CanvasRenderingContext2D implements CanvasImageData; -CanvasRenderingContext2D implements CanvasPathDrawingStyles; -CanvasRenderingContext2D implements CanvasTextDrawingStyles; -CanvasRenderingContext2D implements CanvasPathMethods; -CanvasRenderingContext2D implements CanvasHitRegions; - -[NoInterfaceObject] -interface CanvasState { +CanvasRenderingContext2D includes CanvasState; +CanvasRenderingContext2D includes CanvasTransform; +CanvasRenderingContext2D includes CanvasCompositing; +CanvasRenderingContext2D includes CanvasImageSmoothing; +CanvasRenderingContext2D includes CanvasFillStrokeStyles; +CanvasRenderingContext2D includes CanvasShadowStyles; +CanvasRenderingContext2D includes CanvasFilters; +CanvasRenderingContext2D includes CanvasRect; +CanvasRenderingContext2D includes CanvasDrawPath; +CanvasRenderingContext2D includes CanvasUserInterface; +CanvasRenderingContext2D includes CanvasText; +CanvasRenderingContext2D includes CanvasDrawImage; +CanvasRenderingContext2D includes CanvasImageData; +CanvasRenderingContext2D includes CanvasPathDrawingStyles; +CanvasRenderingContext2D includes CanvasTextDrawingStyles; +CanvasRenderingContext2D includes CanvasPathMethods; +CanvasRenderingContext2D includes CanvasHitRegions; + +interface mixin CanvasState { // state void save(); // push state on state stack void restore(); // pop state stack and restore state }; -[NoInterfaceObject] -interface CanvasTransform { +interface mixin CanvasTransform { // transformations (default transform is the identity matrix) // NOT IMPLEMENTED attribute SVGMatrix currentTransform; [Throws, LenientFloat] @@ -151,20 +149,18 @@ interface CanvasTransform { }; [NoInterfaceObject] -interface CanvasCompositing { +interface mixin CanvasCompositing { attribute unrestricted double globalAlpha; // (default 1.0) [Throws] attribute DOMString globalCompositeOperation; // (default source-over) }; -[NoInterfaceObject] -interface CanvasImageSmoothing { +interface mixin CanvasImageSmoothing { // drawing images attribute boolean imageSmoothingEnabled; }; -[NoInterfaceObject] -interface CanvasFillStrokeStyles { +interface mixin CanvasFillStrokeStyles { // colors and styles (see also the CanvasPathDrawingStyles interface) attribute (DOMString or CanvasGradient or CanvasPattern) strokeStyle; // (default black) attribute (DOMString or CanvasGradient or CanvasPattern) fillStyle; // (default black) @@ -176,8 +172,7 @@ interface CanvasFillStrokeStyles { CanvasPattern? createPattern(CanvasImageSource image, [TreatNullAs=EmptyString] DOMString repetition); }; -[NoInterfaceObject] -interface CanvasShadowStyles { +interface mixin CanvasShadowStyles { [LenientFloat] attribute double shadowOffsetX; // (default 0) [LenientFloat] @@ -187,14 +182,12 @@ interface CanvasShadowStyles { attribute DOMString shadowColor; // (default transparent black) }; -[NoInterfaceObject] -interface CanvasFilters { +interface mixin CanvasFilters { [Pref="canvas.filters.enabled", SetterThrows] attribute DOMString filter; // (default empty string = no filter) }; -[NoInterfaceObject] -interface CanvasRect { +interface mixin CanvasRect { [LenientFloat] void clearRect(double x, double y, double w, double h); [LenientFloat] @@ -203,8 +196,7 @@ interface CanvasRect { void strokeRect(double x, double y, double w, double h); }; -[NoInterfaceObject] -interface CanvasDrawPath { +interface mixin CanvasDrawPath { // path API (see also CanvasPathMethods) void beginPath(); void fill(optional CanvasWindingRule winding = "nonzero"); @@ -224,8 +216,7 @@ interface CanvasDrawPath { boolean isPointInStroke(Path2D path, unrestricted double x, unrestricted double y); }; -[NoInterfaceObject] -interface CanvasUserInterface { +interface mixin CanvasUserInterface { [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); @@ -234,8 +225,7 @@ interface CanvasUserInterface { // NOT IMPLEMENTED void scrollPathIntoView(Path path); }; -[NoInterfaceObject] -interface CanvasText { +interface mixin CanvasText { // text (see also the CanvasPathDrawingStyles interface) [Throws, LenientFloat] void fillText(DOMString text, double x, double y, optional double maxWidth); @@ -245,8 +235,7 @@ interface CanvasText { TextMetrics measureText(DOMString text); }; -[NoInterfaceObject] -interface CanvasDrawImage { +interface mixin CanvasDrawImage { [Throws, LenientFloat] void drawImage(CanvasImageSource image, double dx, double dy); [Throws, LenientFloat] @@ -255,8 +244,7 @@ interface CanvasDrawImage { void drawImage(CanvasImageSource image, double sx, double sy, double sw, double sh, double dx, double dy, double dw, double dh); }; -[NoInterfaceObject] -interface CanvasImageData { +interface mixin CanvasImageData { // pixel manipulation [NewObject, Throws] ImageData createImageData(double sw, double sh); @@ -270,8 +258,7 @@ interface CanvasImageData { void putImageData(ImageData imagedata, double dx, double dy, double dirtyX, double dirtyY, double dirtyWidth, double dirtyHeight); }; -[NoInterfaceObject] -interface CanvasPathDrawingStyles { +interface mixin CanvasPathDrawingStyles { // line caps/joins [LenientFloat] attribute double lineWidth; // (default 1) @@ -287,8 +274,7 @@ interface CanvasPathDrawingStyles { [LenientFloat] attribute double lineDashOffset; }; -[NoInterfaceObject] -interface CanvasTextDrawingStyles { +interface mixin CanvasTextDrawingStyles { // text [SetterThrows] attribute DOMString font; // (default 10px sans-serif) @@ -296,8 +282,7 @@ interface CanvasTextDrawingStyles { attribute DOMString textBaseline; // "top", "hanging", "middle", "alphabetic", "ideographic", "bottom" (default: "alphabetic") }; -[NoInterfaceObject] -interface CanvasPathMethods { +interface mixin CanvasPathMethods { // shared path API methods void closePath(); [LenientFloat] @@ -324,8 +309,7 @@ interface CanvasPathMethods { void ellipse(double x, double y, double radiusX, double radiusY, double rotation, double startAngle, double endAngle, optional boolean anticlockwise = false); }; -[NoInterfaceObject] -interface CanvasHitRegions { +interface mixin CanvasHitRegions { // hit regions [Pref="canvas.hitregions.enabled", Throws] void addHitRegion(optional HitRegionOptions options); [Pref="canvas.hitregions.enabled"] void removeHitRegion(DOMString id); @@ -381,4 +365,4 @@ interface Path2D { void addPath(Path2D path, optional SVGMatrix transformation); }; -Path2D implements CanvasPathMethods; +Path2D includes CanvasPathMethods; diff --git a/crates/web-sys/webidls/enabled/CharacterData.webidl b/crates/web-sys/webidls/enabled/CharacterData.webidl index 8d6a214e58e..a07bd0a1bf1 100644 --- a/crates/web-sys/webidls/enabled/CharacterData.webidl +++ b/crates/web-sys/webidls/enabled/CharacterData.webidl @@ -27,5 +27,5 @@ interface CharacterData : Node { void replaceData(unsigned long offset, unsigned long count, DOMString data); }; -CharacterData implements ChildNode; -CharacterData implements NonDocumentTypeChildNode; +CharacterData includes ChildNode; +CharacterData includes NonDocumentTypeChildNode; diff --git a/crates/web-sys/webidls/enabled/ChildNode.webidl b/crates/web-sys/webidls/enabled/ChildNode.webidl index ae36cd93eb7..3b1254638d4 100644 --- a/crates/web-sys/webidls/enabled/ChildNode.webidl +++ b/crates/web-sys/webidls/enabled/ChildNode.webidl @@ -7,8 +7,7 @@ * http://dom.spec.whatwg.org/#interface-childnode */ -[NoInterfaceObject] -interface ChildNode { +interface mixin ChildNode { [CEReactions, Throws, Unscopable] void before((Node or DOMString)... nodes); [CEReactions, Throws, Unscopable] @@ -19,8 +18,7 @@ interface ChildNode { void remove(); }; -[NoInterfaceObject] -interface NonDocumentTypeChildNode { +interface mixin NonDocumentTypeChildNode { [Pure] readonly attribute Element? previousElementSibling; [Pure] diff --git a/crates/web-sys/webidls/enabled/ConvolverNode.webidl b/crates/web-sys/webidls/enabled/ConvolverNode.webidl index 0e0e1137ccb..1e66d53577a 100644 --- a/crates/web-sys/webidls/enabled/ConvolverNode.webidl +++ b/crates/web-sys/webidls/enabled/ConvolverNode.webidl @@ -24,7 +24,3 @@ interface ConvolverNode : AudioNode { attribute boolean normalize; }; - -// Mozilla extension -ConvolverNode implements AudioNodePassThrough; - diff --git a/crates/web-sys/webidls/enabled/Crypto.webidl b/crates/web-sys/webidls/enabled/Crypto.webidl index 31574a219cd..448a8631b88 100644 --- a/crates/web-sys/webidls/enabled/Crypto.webidl +++ b/crates/web-sys/webidls/enabled/Crypto.webidl @@ -7,8 +7,8 @@ * https://dvcs.w3.org/hg/webcrypto-api/raw-file/tip/spec/Overview.html#crypto-interface */ -[NoInterfaceObject, Exposed=(Window,Worker)] -interface GlobalCrypto { +[Exposed=(Window,Worker)] +interface mixin GlobalCrypto { [Throws] readonly attribute Crypto crypto; }; diff --git a/crates/web-sys/webidls/enabled/DOMException.webidl b/crates/web-sys/webidls/enabled/DOMException.webidl index cc6aa624019..7e979187052 100644 --- a/crates/web-sys/webidls/enabled/DOMException.webidl +++ b/crates/web-sys/webidls/enabled/DOMException.webidl @@ -16,9 +16,8 @@ // invalid widl //interface StackFrame; -[NoInterfaceObject, - Exposed=(Window,Worker,System)] -interface ExceptionMembers +[Exposed=(Window,Worker,System)] +interface mixin ExceptionMembers { // The nsresult associated with this exception. readonly attribute unsigned long result; @@ -34,7 +33,7 @@ interface ExceptionMembers readonly attribute DOMString filename; // Valid line numbers begin at '1'. '0' indicates unknown. readonly attribute unsigned long lineNumber; - // Valid column numbers begin at 0. + // Valid column numbers begin at 0. // We don't have an unambiguous indicator for unknown. readonly attribute unsigned long columnNumber; @@ -62,7 +61,7 @@ interface Exception { stringifier; }; -Exception implements ExceptionMembers; +Exception includes ExceptionMembers; // XXXkhuey this is an 'exception', not an interface, but we don't have any // parser or codegen mechanisms for dealing with exceptions. @@ -105,4 +104,4 @@ interface DOMException { // XXXkhuey copy all of Gecko's non-standard stuff onto DOMException, but leave // the prototype chain sane. -DOMException implements ExceptionMembers; +DOMException includes ExceptionMembers; diff --git a/crates/web-sys/webidls/enabled/DOMRequest.webidl b/crates/web-sys/webidls/enabled/DOMRequest.webidl index 2e25fc19273..6445f09b2e2 100644 --- a/crates/web-sys/webidls/enabled/DOMRequest.webidl +++ b/crates/web-sys/webidls/enabled/DOMRequest.webidl @@ -5,8 +5,8 @@ enum DOMRequestReadyState { "pending", "done" }; -[Exposed=(Window,Worker,System), NoInterfaceObject] -interface DOMRequestShared { +[Exposed=(Window,Worker,System)] +interface mixin DOMRequestShared { readonly attribute DOMRequestReadyState readyState; readonly attribute any result; @@ -29,4 +29,4 @@ interface DOMRequest : EventTarget { void fireDetailedError(DOMException aError); }; -DOMRequest implements DOMRequestShared; +DOMRequest includes DOMRequestShared; diff --git a/crates/web-sys/webidls/enabled/DelayNode.webidl b/crates/web-sys/webidls/enabled/DelayNode.webidl index 02575bc5878..75056316e1d 100644 --- a/crates/web-sys/webidls/enabled/DelayNode.webidl +++ b/crates/web-sys/webidls/enabled/DelayNode.webidl @@ -22,7 +22,3 @@ interface DelayNode : AudioNode { readonly attribute AudioParam delayTime; }; - -// Mozilla extension -DelayNode implements AudioNodePassThrough; - diff --git a/crates/web-sys/webidls/enabled/DeviceMotionEvent.webidl b/crates/web-sys/webidls/enabled/DeviceMotionEvent.webidl index 851b913ef15..d5267814775 100644 --- a/crates/web-sys/webidls/enabled/DeviceMotionEvent.webidl +++ b/crates/web-sys/webidls/enabled/DeviceMotionEvent.webidl @@ -44,14 +44,3 @@ dictionary DeviceMotionEventInit : EventInit { DeviceRotationRateInit rotationRate; double? interval = null; }; - -// Mozilla extensions. -partial interface DeviceMotionEvent { - void initDeviceMotionEvent(DOMString type, - optional boolean canBubble = false, - optional boolean cancelable = false, - optional DeviceAccelerationInit acceleration, - optional DeviceAccelerationInit accelerationIncludingGravity, - optional DeviceRotationRateInit rotationRate, - optional double? interval = null); -}; diff --git a/crates/web-sys/webidls/enabled/Document.webidl b/crates/web-sys/webidls/enabled/Document.webidl index 124d8b32474..98e63de7b9c 100644 --- a/crates/web-sys/webidls/enabled/Document.webidl +++ b/crates/web-sys/webidls/enabled/Document.webidl @@ -435,12 +435,12 @@ partial interface Document { readonly attribute FlashClassification documentFlashClassification; }; -Document implements XPathEvaluator; -Document implements GlobalEventHandlers; -Document implements DocumentAndElementEventHandlers; -Document implements TouchEventHandlers; -Document implements ParentNode; -Document implements OnErrorEventHandlerForNodes; -Document implements GeometryUtils; -Document implements FontFaceSource; -Document implements DocumentOrShadowRoot; +Document includes XPathEvaluator; +Document includes GlobalEventHandlers; +Document includes DocumentAndElementEventHandlers; +Document includes TouchEventHandlers; +Document includes ParentNode; +Document includes OnErrorEventHandlerForNodes; +Document includes GeometryUtils; +Document includes FontFaceSource; +Document includes DocumentOrShadowRoot; diff --git a/crates/web-sys/webidls/enabled/DocumentFragment.webidl b/crates/web-sys/webidls/enabled/DocumentFragment.webidl index 0f814666fb6..68a69c514ea 100644 --- a/crates/web-sys/webidls/enabled/DocumentFragment.webidl +++ b/crates/web-sys/webidls/enabled/DocumentFragment.webidl @@ -24,4 +24,4 @@ partial interface DocumentFragment { NodeList querySelectorAll(DOMString selectors); }; -DocumentFragment implements ParentNode; +DocumentFragment includes ParentNode; diff --git a/crates/web-sys/webidls/enabled/DocumentOrShadowRoot.webidl b/crates/web-sys/webidls/enabled/DocumentOrShadowRoot.webidl index 8a288f6151c..34776eff393 100644 --- a/crates/web-sys/webidls/enabled/DocumentOrShadowRoot.webidl +++ b/crates/web-sys/webidls/enabled/DocumentOrShadowRoot.webidl @@ -8,8 +8,7 @@ * http://w3c.github.io/webcomponents/spec/shadow/#extensions-to-the-documentorshadowroot-mixin */ -[NoInterfaceObject] -interface DocumentOrShadowRoot { +interface mixin DocumentOrShadowRoot { // Not implemented yet: bug 1430308. // Selection? getSelection(); Element? elementFromPoint (float x, float y); diff --git a/crates/web-sys/webidls/enabled/DocumentType.webidl b/crates/web-sys/webidls/enabled/DocumentType.webidl index 89190266fde..b19b319c214 100644 --- a/crates/web-sys/webidls/enabled/DocumentType.webidl +++ b/crates/web-sys/webidls/enabled/DocumentType.webidl @@ -16,4 +16,4 @@ interface DocumentType : Node { readonly attribute DOMString systemId; }; -DocumentType implements ChildNode; +DocumentType includes ChildNode; diff --git a/crates/web-sys/webidls/enabled/DynamicsCompressorNode.webidl b/crates/web-sys/webidls/enabled/DynamicsCompressorNode.webidl index 78170756ad1..2a19e35f805 100644 --- a/crates/web-sys/webidls/enabled/DynamicsCompressorNode.webidl +++ b/crates/web-sys/webidls/enabled/DynamicsCompressorNode.webidl @@ -30,7 +30,3 @@ interface DynamicsCompressorNode : AudioNode { readonly attribute AudioParam release; // in Seconds }; - -// Mozilla extension -DynamicsCompressorNode implements AudioNodePassThrough; - diff --git a/crates/web-sys/webidls/enabled/Element.webidl b/crates/web-sys/webidls/enabled/Element.webidl index 2a6ba021fdd..7b6952b6ea9 100644 --- a/crates/web-sys/webidls/enabled/Element.webidl +++ b/crates/web-sys/webidls/enabled/Element.webidl @@ -143,8 +143,6 @@ interface Element : Node { [ChromeOnly] void setCaptureAlways(optional boolean retargetToElement = false); - // Mozilla extensions - // Obsolete methods. Attr? getAttributeNode(DOMString name); [CEReactions, Throws] @@ -267,11 +265,11 @@ partial interface Element { attribute DOMString slot; }; -Element implements ChildNode; -Element implements NonDocumentTypeChildNode; -Element implements ParentNode; -Element implements Animatable; -Element implements GeometryUtils; +Element includes ChildNode; +Element includes NonDocumentTypeChildNode; +Element includes ParentNode; +Element includes Animatable; +Element includes GeometryUtils; // https://fullscreen.spec.whatwg.org/#api partial interface Element { diff --git a/crates/web-sys/webidls/enabled/EventHandler.webidl b/crates/web-sys/webidls/enabled/EventHandler.webidl index b92348ec7f7..5d28db0a056 100644 --- a/crates/web-sys/webidls/enabled/EventHandler.webidl +++ b/crates/web-sys/webidls/enabled/EventHandler.webidl @@ -22,8 +22,7 @@ typedef OnBeforeUnloadEventHandlerNonNull? OnBeforeUnloadEventHandler; callback OnErrorEventHandlerNonNull = any ((Event or DOMString) event, optional DOMString source, optional unsigned long lineno, optional unsigned long column, optional any error); typedef OnErrorEventHandlerNonNull? OnErrorEventHandler; -[NoInterfaceObject] -interface GlobalEventHandlers { +interface mixin GlobalEventHandlers { attribute EventHandler onabort; attribute EventHandler onblur; // We think the spec is wrong here. See OnErrorEventHandlerForNodes/Window @@ -134,8 +133,7 @@ interface GlobalEventHandlers { attribute EventHandler onwebkittransitionend; }; -[NoInterfaceObject] -interface WindowEventHandlers { +interface mixin WindowEventHandlers { attribute EventHandler onafterprint; attribute EventHandler onbeforeprint; attribute OnBeforeUnloadEventHandler onbeforeunload; @@ -152,8 +150,7 @@ interface WindowEventHandlers { attribute EventHandler onunload; }; -[NoInterfaceObject] -interface DocumentAndElementEventHandlers { +interface mixin DocumentAndElementEventHandlers { attribute EventHandler oncopy; attribute EventHandler oncut; attribute EventHandler onpaste; @@ -164,12 +161,10 @@ interface DocumentAndElementEventHandlers { // 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 { +interface mixin OnErrorEventHandlerForNodes { attribute EventHandler onerror; }; -[NoInterfaceObject] -interface OnErrorEventHandlerForWindow { +interface mixin OnErrorEventHandlerForWindow { attribute OnErrorEventHandler onerror; }; diff --git a/crates/web-sys/webidls/enabled/EventTarget.webidl b/crates/web-sys/webidls/enabled/EventTarget.webidl index 9c8df094d5c..c5fb9587067 100644 --- a/crates/web-sys/webidls/enabled/EventTarget.webidl +++ b/crates/web-sys/webidls/enabled/EventTarget.webidl @@ -39,27 +39,3 @@ interface EventTarget { [Throws, NeedsCallerType] 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/crates/web-sys/webidls/enabled/Fetch.webidl b/crates/web-sys/webidls/enabled/Fetch.webidl index bbb1faf7f7d..66e4b570c8c 100644 --- a/crates/web-sys/webidls/enabled/Fetch.webidl +++ b/crates/web-sys/webidls/enabled/Fetch.webidl @@ -10,8 +10,8 @@ typedef object JSON; typedef (Blob or BufferSource or FormData or URLSearchParams or USVString) BodyInit; -[NoInterfaceObject, Exposed=(Window,Worker)] -interface Body { +[Exposed=(Window,Worker)] +interface mixin Body { readonly attribute boolean bodyUsed; [Throws] Promise arrayBuffer(); diff --git a/crates/web-sys/webidls/enabled/File.webidl b/crates/web-sys/webidls/enabled/File.webidl index 9bb33cbfcf2..5f612aaeb51 100644 --- a/crates/web-sys/webidls/enabled/File.webidl +++ b/crates/web-sys/webidls/enabled/File.webidl @@ -29,28 +29,3 @@ dictionary ChromeFilePropertyBag : FilePropertyBag { DOMString name = ""; boolean existenceCheck = true; }; - -// Mozilla extensions -partial interface File { - [BinaryName="relativePath", Func="mozilla::dom::DOMPrefs::WebkitBlinkDirectoryPickerEnabled"] - readonly attribute USVString webkitRelativePath; - - [GetterThrows, ChromeOnly, NeedsCallerType] - readonly attribute DOMString mozFullPath; -}; - -// Mozilla extensions -// These 2 methods can be used only in these conditions: -// - the main-thread -// - parent process OR file process OR, only for testing, with pref -// `dom.file.createInChild' set to true. -[Exposed=(Window)] -partial interface File { - [ChromeOnly, Throws, NeedsCallerType] - static Promise createFromNsIFile(nsIFile file, - optional ChromeFilePropertyBag options); - - [ChromeOnly, Throws, NeedsCallerType] - static Promise createFromFileName(USVString fileName, - optional ChromeFilePropertyBag options); -}; diff --git a/crates/web-sys/webidls/enabled/FontFaceSource.webidl b/crates/web-sys/webidls/enabled/FontFaceSource.webidl index 96e1c6d76da..54f36861112 100644 --- a/crates/web-sys/webidls/enabled/FontFaceSource.webidl +++ b/crates/web-sys/webidls/enabled/FontFaceSource.webidl @@ -10,9 +10,7 @@ * liability, trademark and document use rules apply. */ -[NoInterfaceObject] -interface FontFaceSource { - +interface mixin FontFaceSource { [Pref="layout.css.font-loading-api.enabled"] readonly attribute FontFaceSet fonts; }; diff --git a/crates/web-sys/webidls/enabled/FrameLoader.webidl b/crates/web-sys/webidls/enabled/FrameLoader.webidl index 0cfd06bbd82..293bdb53b3d 100644 --- a/crates/web-sys/webidls/enabled/FrameLoader.webidl +++ b/crates/web-sys/webidls/enabled/FrameLoader.webidl @@ -209,12 +209,11 @@ interface FrameLoader { * The nsIWebBrowserPersistDocumentReceiver is a callback that * will be fired once the document is ready for persisting. */ -[NoInterfaceObject] -interface WebBrowserPersistable +interface mixin WebBrowserPersistable { [Throws] void startPersistence(unsigned long long aOuterWindowID, nsIWebBrowserPersistDocumentReceiver aRecv); }; -FrameLoader implements WebBrowserPersistable; +FrameLoader includes WebBrowserPersistable; diff --git a/crates/web-sys/webidls/enabled/GainNode.webidl b/crates/web-sys/webidls/enabled/GainNode.webidl index 04bba87cb35..c62417abfb0 100644 --- a/crates/web-sys/webidls/enabled/GainNode.webidl +++ b/crates/web-sys/webidls/enabled/GainNode.webidl @@ -21,7 +21,3 @@ interface GainNode : AudioNode { readonly attribute AudioParam gain; }; - -// Mozilla extension -GainNode implements AudioNodePassThrough; - diff --git a/crates/web-sys/webidls/enabled/GeometryUtils.webidl b/crates/web-sys/webidls/enabled/GeometryUtils.webidl index 53a24a789d3..0eda05c6b29 100644 --- a/crates/web-sys/webidls/enabled/GeometryUtils.webidl +++ b/crates/web-sys/webidls/enabled/GeometryUtils.webidl @@ -21,8 +21,7 @@ dictionary ConvertCoordinateOptions { CSSBoxType toBox = "border"; }; -[NoInterfaceObject] -interface GeometryUtils { +interface mixin GeometryUtils { [Throws, Func="nsINode::HasBoxQuadsSupport", NeedsCallerType] sequence getBoxQuads(optional BoxQuadOptions options); [Throws, Pref="layout.css.convertFromNode.enabled", NeedsCallerType] @@ -33,6 +32,6 @@ interface GeometryUtils { DOMPoint convertPointFromNode(DOMPointInit point, GeometryNode from, optional ConvertCoordinateOptions options); }; -// PseudoElement implements GeometryUtils; +// PseudoElement includes GeometryUtils; typedef (Text or Element /* or PseudoElement */ or Document) GeometryNode; diff --git a/crates/web-sys/webidls/enabled/HTMLAnchorElement.webidl b/crates/web-sys/webidls/enabled/HTMLAnchorElement.webidl index fe1c1a71c22..d19c8ec5b66 100644 --- a/crates/web-sys/webidls/enabled/HTMLAnchorElement.webidl +++ b/crates/web-sys/webidls/enabled/HTMLAnchorElement.webidl @@ -35,7 +35,7 @@ interface HTMLAnchorElement : HTMLElement { attribute DOMString text; }; -HTMLAnchorElement implements HTMLHyperlinkElementUtils; +HTMLAnchorElement includes HTMLHyperlinkElementUtils; // http://www.whatwg.org/specs/web-apps/current-work/#other-elements,-attributes-and-apis partial interface HTMLAnchorElement { diff --git a/crates/web-sys/webidls/enabled/HTMLAreaElement.webidl b/crates/web-sys/webidls/enabled/HTMLAreaElement.webidl index 997535a9024..c2c05b724ab 100644 --- a/crates/web-sys/webidls/enabled/HTMLAreaElement.webidl +++ b/crates/web-sys/webidls/enabled/HTMLAreaElement.webidl @@ -35,7 +35,7 @@ interface HTMLAreaElement : HTMLElement { readonly attribute DOMTokenList relList; }; -HTMLAreaElement implements HTMLHyperlinkElementUtils; +HTMLAreaElement includes HTMLHyperlinkElementUtils; // http://www.whatwg.org/specs/web-apps/current-work/#other-elements,-attributes-and-apis partial interface HTMLAreaElement { diff --git a/crates/web-sys/webidls/enabled/HTMLBodyElement.webidl b/crates/web-sys/webidls/enabled/HTMLBodyElement.webidl index f89c287d72f..9f2dfd9ef3c 100644 --- a/crates/web-sys/webidls/enabled/HTMLBodyElement.webidl +++ b/crates/web-sys/webidls/enabled/HTMLBodyElement.webidl @@ -30,4 +30,4 @@ partial interface HTMLBodyElement { attribute DOMString background; }; -HTMLBodyElement implements WindowEventHandlers; +HTMLBodyElement includes WindowEventHandlers; diff --git a/crates/web-sys/webidls/enabled/HTMLElement.webidl b/crates/web-sys/webidls/enabled/HTMLElement.webidl index 19bb0c347be..5b7939fd693 100644 --- a/crates/web-sys/webidls/enabled/HTMLElement.webidl +++ b/crates/web-sys/webidls/enabled/HTMLElement.webidl @@ -80,8 +80,7 @@ partial interface HTMLElement { readonly attribute long offsetHeight; }; -[NoInterfaceObject] -interface TouchEventHandlers { +interface mixin TouchEventHandlers { [Func="nsGenericHTMLElement::TouchEventsEnabled"] attribute EventHandler ontouchstart; [Func="nsGenericHTMLElement::TouchEventsEnabled"] @@ -92,9 +91,9 @@ interface TouchEventHandlers { attribute EventHandler ontouchcancel; }; -HTMLElement implements GlobalEventHandlers; -HTMLElement implements DocumentAndElementEventHandlers; -HTMLElement implements TouchEventHandlers; -HTMLElement implements OnErrorEventHandlerForNodes; +HTMLElement includes GlobalEventHandlers; +HTMLElement includes DocumentAndElementEventHandlers; +HTMLElement includes TouchEventHandlers; +HTMLElement includes OnErrorEventHandlerForNodes; interface HTMLUnknownElement : HTMLElement {}; diff --git a/crates/web-sys/webidls/enabled/HTMLEmbedElement.webidl b/crates/web-sys/webidls/enabled/HTMLEmbedElement.webidl index bb6b5c0ea01..f55ff35e895 100644 --- a/crates/web-sys/webidls/enabled/HTMLEmbedElement.webidl +++ b/crates/web-sys/webidls/enabled/HTMLEmbedElement.webidl @@ -39,6 +39,6 @@ partial interface HTMLEmbedElement { Document? getSVGDocument(); }; -HTMLEmbedElement implements MozImageLoadingContent; -HTMLEmbedElement implements MozFrameLoaderOwner; -HTMLEmbedElement implements MozObjectLoadingContent; +HTMLEmbedElement includes MozImageLoadingContent; +HTMLEmbedElement includes MozFrameLoaderOwner; +HTMLEmbedElement includes MozObjectLoadingContent; diff --git a/crates/web-sys/webidls/enabled/HTMLFrameElement.webidl b/crates/web-sys/webidls/enabled/HTMLFrameElement.webidl index 2d712caf8e7..b662b426fa0 100644 --- a/crates/web-sys/webidls/enabled/HTMLFrameElement.webidl +++ b/crates/web-sys/webidls/enabled/HTMLFrameElement.webidl @@ -35,4 +35,4 @@ interface HTMLFrameElement : HTMLElement { attribute DOMString marginWidth; }; -HTMLFrameElement implements MozFrameLoaderOwner; +HTMLFrameElement includes MozFrameLoaderOwner; diff --git a/crates/web-sys/webidls/enabled/HTMLFrameSetElement.webidl b/crates/web-sys/webidls/enabled/HTMLFrameSetElement.webidl index afc4465d182..d80f28675a3 100644 --- a/crates/web-sys/webidls/enabled/HTMLFrameSetElement.webidl +++ b/crates/web-sys/webidls/enabled/HTMLFrameSetElement.webidl @@ -19,4 +19,4 @@ interface HTMLFrameSetElement : HTMLElement { attribute DOMString rows; }; -HTMLFrameSetElement implements WindowEventHandlers; +HTMLFrameSetElement includes WindowEventHandlers; diff --git a/crates/web-sys/webidls/enabled/HTMLIFrameElement.webidl b/crates/web-sys/webidls/enabled/HTMLIFrameElement.webidl index 5801de76457..f187887ead8 100644 --- a/crates/web-sys/webidls/enabled/HTMLIFrameElement.webidl +++ b/crates/web-sys/webidls/enabled/HTMLIFrameElement.webidl @@ -65,5 +65,5 @@ partial interface HTMLIFrameElement { attribute boolean mozbrowser; }; -HTMLIFrameElement implements MozFrameLoaderOwner; -HTMLIFrameElement implements BrowserElement; +HTMLIFrameElement includes MozFrameLoaderOwner; +HTMLIFrameElement includes BrowserElement; diff --git a/crates/web-sys/webidls/enabled/HTMLImageElement.webidl b/crates/web-sys/webidls/enabled/HTMLImageElement.webidl index 6839217306a..8744aeb919b 100644 --- a/crates/web-sys/webidls/enabled/HTMLImageElement.webidl +++ b/crates/web-sys/webidls/enabled/HTMLImageElement.webidl @@ -67,65 +67,3 @@ partial interface HTMLImageElement { attribute DOMString sizes; readonly attribute DOMString currentSrc; }; - -// Mozilla extensions. -partial interface HTMLImageElement { - [CEReactions, SetterThrows] - 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; - /** - * Same as addNativeObserver but intended for scripted observers or observers - * from another or without a document. - */ - [ChromeOnly] - void addObserver(imgINotificationObserver aObserver); - /** - * Same as removeNativeObserver but intended for scripted observers or - * observers from another or without a document. - */ - [ChromeOnly] - void removeObserver(imgINotificationObserver aObserver); - [ChromeOnly,Throws] - imgIRequest? getRequest(long aRequestType); - [ChromeOnly,Throws] - long getRequestType(imgIRequest aRequest); - [ChromeOnly,Throws] - readonly attribute URI? currentURI; - // Gets the final URI of the current request, if available. - // Otherwise, returns null. - [ChromeOnly] - readonly attribute URI? currentRequestFinalURI; - /** - * forceReload forces reloading of the image pointed to by currentURI - * - * @param aNotify request should notify - * @throws NS_ERROR_NOT_AVAILABLE if there is no current URI to reload - */ - [ChromeOnly,Throws] - void forceReload(optional boolean aNotify = true); - [ChromeOnly] - void forceImageState(boolean aForce, unsigned long long aState); -}; - -HTMLImageElement implements MozImageLoadingContent; diff --git a/crates/web-sys/webidls/enabled/HTMLInputElement.webidl b/crates/web-sys/webidls/enabled/HTMLInputElement.webidl index 02b5b87d75e..e31413ab3b6 100644 --- a/crates/web-sys/webidls/enabled/HTMLInputElement.webidl +++ b/crates/web-sys/webidls/enabled/HTMLInputElement.webidl @@ -147,53 +147,7 @@ partial interface HTMLInputElement { attribute DOMString useMap; }; -// Mozilla extensions - -partial interface HTMLInputElement { - [GetterThrows, ChromeOnly] - readonly attribute XULControllers controllers; - // Binaryname because we have a FragmentOrElement function named "TextLength()". - [NeedsCallerType, BinaryName="inputTextLength"] - readonly attribute long textLength; - - [Throws, ChromeOnly] - sequence mozGetFileNameArray(); - - [ChromeOnly, Throws] - void mozSetFileNameArray(sequence fileNames); - - [ChromeOnly] - void mozSetFileArray(sequence 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 () have an anonymous text control - // () 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(); -}; - -HTMLInputElement implements MozEditableElement; +HTMLInputElement includes MozEditableElement; /*Non standard partial interface HTMLInputElement { @@ -214,7 +168,7 @@ partial interface HTMLInputElement { }; */ -HTMLInputElement implements MozImageLoadingContent; +HTMLInputElement includes MozImageLoadingContent; // Webkit/Blink partial interface HTMLInputElement { diff --git a/crates/web-sys/webidls/enabled/HTMLLinkElement.webidl b/crates/web-sys/webidls/enabled/HTMLLinkElement.webidl index 0fc7890d6ea..0d484de1d0c 100644 --- a/crates/web-sys/webidls/enabled/HTMLLinkElement.webidl +++ b/crates/web-sys/webidls/enabled/HTMLLinkElement.webidl @@ -34,7 +34,7 @@ interface HTMLLinkElement : HTMLElement { attribute DOMString referrerPolicy; [PutForwards=value] readonly attribute DOMTokenList sizes; }; -HTMLLinkElement implements LinkStyle; +HTMLLinkElement includes LinkStyle; // http://www.whatwg.org/specs/web-apps/current-work/#other-elements,-attributes-and-apis partial interface HTMLLinkElement { diff --git a/crates/web-sys/webidls/enabled/HTMLObjectElement.webidl b/crates/web-sys/webidls/enabled/HTMLObjectElement.webidl index b5bcddc816e..34f5559a9a6 100644 --- a/crates/web-sys/webidls/enabled/HTMLObjectElement.webidl +++ b/crates/web-sys/webidls/enabled/HTMLObjectElement.webidl @@ -78,145 +78,6 @@ partial interface HTMLObjectElement { 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_FAKE_PLUGIN = 3; - [ChromeOnly] - const unsigned long TYPE_DOCUMENT = 4; - [ChromeOnly] - const unsigned long TYPE_NULL = 5; - - // 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 getPluginAttributes(); - - [ChromeOnly] - sequence getPluginParameters(); - - /** - * This method will play a plugin that has been stopped by the click-to-play - * feature. - */ - [ChromeOnly, Throws, NeedsCallerType] - 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 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; - - /** - * Disable the use of fake plugins and reload the tag if necessary - */ - [ChromeOnly, Throws] - void skipFakePlugins(); - - [ChromeOnly, Throws, NeedsCallerType] - readonly attribute unsigned long runID; -}; - /** * Name:Value pair type used for passing parameters to NPAPI or javascript * plugins. @@ -226,6 +87,6 @@ dictionary MozPluginParameter { DOMString value = ""; }; -HTMLObjectElement implements MozImageLoadingContent; -HTMLObjectElement implements MozFrameLoaderOwner; -HTMLObjectElement implements MozObjectLoadingContent; +HTMLObjectElement includes MozImageLoadingContent; +HTMLObjectElement includes MozFrameLoaderOwner; +HTMLObjectElement includes MozObjectLoadingContent; diff --git a/crates/web-sys/webidls/enabled/HTMLStyleElement.webidl b/crates/web-sys/webidls/enabled/HTMLStyleElement.webidl index c0c8b985b0d..6dc1a83519e 100644 --- a/crates/web-sys/webidls/enabled/HTMLStyleElement.webidl +++ b/crates/web-sys/webidls/enabled/HTMLStyleElement.webidl @@ -17,5 +17,4 @@ interface HTMLStyleElement : HTMLElement { [CEReactions, SetterThrows, Pure] attribute DOMString type; }; -HTMLStyleElement implements LinkStyle; - +HTMLStyleElement includes LinkStyle; diff --git a/crates/web-sys/webidls/enabled/HTMLTextAreaElement.webidl b/crates/web-sys/webidls/enabled/HTMLTextAreaElement.webidl index 4b50b4e77ad..7d2dd0a5a22 100644 --- a/crates/web-sys/webidls/enabled/HTMLTextAreaElement.webidl +++ b/crates/web-sys/webidls/enabled/HTMLTextAreaElement.webidl @@ -81,16 +81,4 @@ interface HTMLTextAreaElement : HTMLElement { void setSelectionRange(unsigned long start, unsigned long end, optional DOMString direction); }; -partial interface HTMLTextAreaElement { - // Chrome-only Mozilla extensions - - [Throws, ChromeOnly] - readonly attribute XULControllers controllers; -}; - -HTMLTextAreaElement implements MozEditableElement; - -partial interface HTMLTextAreaElement { - [ChromeOnly] - attribute DOMString previewValue; -}; +HTMLTextAreaElement includes MozEditableElement; diff --git a/crates/web-sys/webidls/enabled/IIRFilterNode.webidl b/crates/web-sys/webidls/enabled/IIRFilterNode.webidl index 8a0057944be..2c17a6d9b92 100644 --- a/crates/web-sys/webidls/enabled/IIRFilterNode.webidl +++ b/crates/web-sys/webidls/enabled/IIRFilterNode.webidl @@ -19,6 +19,3 @@ Constructor(BaseAudioContext context, IIRFilterOptions options)] interface IIRFilterNode : AudioNode { void getFrequencyResponse(Float32Array frequencyHz, Float32Array magResponse, Float32Array phaseResponse); }; - -// Mozilla extension -IIRFilterNode implements AudioNodePassThrough; diff --git a/crates/web-sys/webidls/enabled/KeyboardEvent.webidl b/crates/web-sys/webidls/enabled/KeyboardEvent.webidl index 28e35c74ecc..d1bbf3aba44 100644 --- a/crates/web-sys/webidls/enabled/KeyboardEvent.webidl +++ b/crates/web-sys/webidls/enabled/KeyboardEvent.webidl @@ -66,6 +66,3 @@ dictionary KeyboardEventInit : EventModifierInit unsigned long keyCode = 0; unsigned long which = 0; }; - -// Mozilla extensions -KeyboardEvent implements KeyEvent; diff --git a/crates/web-sys/webidls/enabled/LegacyQueryInterface.webidl b/crates/web-sys/webidls/enabled/LegacyQueryInterface.webidl deleted file mode 100644 index 00fd76df0c8..00000000000 --- a/crates/web-sys/webidls/enabled/LegacyQueryInterface.webidl +++ /dev/null @@ -1,31 +0,0 @@ -/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this file, - * You can obtain one at http://mozilla.org/MPL/2.0/. - */ - -// invalid widl -//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 code on the main thread. - [Exposed=(Window,System), ChromeOnly] - nsISupports QueryInterface(IID iid); -}; - -BoxObject implements LegacyQueryInterface; -DOMParser implements LegacyQueryInterface; -Document implements LegacyQueryInterface; -DocumentFragment implements LegacyQueryInterface; -Element implements LegacyQueryInterface; -Event implements LegacyQueryInterface; -Selection implements LegacyQueryInterface; -TreeColumns implements LegacyQueryInterface; -TreeContentView implements LegacyQueryInterface; -Window implements LegacyQueryInterface; -XMLHttpRequest implements LegacyQueryInterface; diff --git a/crates/web-sys/webidls/enabled/LinkStyle.webidl b/crates/web-sys/webidls/enabled/LinkStyle.webidl index db0bc031add..b57eb7e77ed 100644 --- a/crates/web-sys/webidls/enabled/LinkStyle.webidl +++ b/crates/web-sys/webidls/enabled/LinkStyle.webidl @@ -7,8 +7,6 @@ * http://dev.w3.org/csswg/cssom/#the-linkstyle-interface */ -[NoInterfaceObject] -interface LinkStyle { +interface mixin LinkStyle { readonly attribute StyleSheet? sheet; }; - diff --git a/crates/web-sys/webidls/enabled/MediaElementAudioSourceNode.webidl b/crates/web-sys/webidls/enabled/MediaElementAudioSourceNode.webidl index 37de32536d2..191ac6dacb0 100644 --- a/crates/web-sys/webidls/enabled/MediaElementAudioSourceNode.webidl +++ b/crates/web-sys/webidls/enabled/MediaElementAudioSourceNode.webidl @@ -19,7 +19,3 @@ dictionary MediaElementAudioSourceOptions { interface MediaElementAudioSourceNode : AudioNode { }; - -// Mozilla extensions -MediaElementAudioSourceNode implements AudioNodePassThrough; - diff --git a/crates/web-sys/webidls/enabled/MediaStreamAudioSourceNode.webidl b/crates/web-sys/webidls/enabled/MediaStreamAudioSourceNode.webidl index 06727a5dadd..003ef85379e 100644 --- a/crates/web-sys/webidls/enabled/MediaStreamAudioSourceNode.webidl +++ b/crates/web-sys/webidls/enabled/MediaStreamAudioSourceNode.webidl @@ -19,7 +19,3 @@ dictionary MediaStreamAudioSourceOptions { interface MediaStreamAudioSourceNode : AudioNode { }; - -// Mozilla extensions -MediaStreamAudioSourceNode implements AudioNodePassThrough; - diff --git a/crates/web-sys/webidls/enabled/MessagePort.webidl b/crates/web-sys/webidls/enabled/MessagePort.webidl index f8b3de622cd..7811487c6cd 100644 --- a/crates/web-sys/webidls/enabled/MessagePort.webidl +++ b/crates/web-sys/webidls/enabled/MessagePort.webidl @@ -19,4 +19,4 @@ interface MessagePort : EventTarget { attribute EventHandler onmessage; attribute EventHandler onmessageerror; }; -// MessagePort implements Transferable; +// MessagePort includes Transferable; diff --git a/crates/web-sys/webidls/enabled/MouseEvent.webidl b/crates/web-sys/webidls/enabled/MouseEvent.webidl index 712e0b90d3e..86bc48b17e8 100644 --- a/crates/web-sys/webidls/enabled/MouseEvent.webidl +++ b/crates/web-sys/webidls/enabled/MouseEvent.webidl @@ -73,43 +73,3 @@ dictionary MouseEventInit : EventModifierInit { long movementX = 0; long movementY = 0; }; - -// Mozilla extensions -partial interface MouseEvent -{ - // 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, - optional boolean canBubbleArg = false, - optional boolean cancelableArg = false, - optional Window? viewArg = null, - optional long detailArg = 0, - optional long screenXArg = 0, - optional long screenYArg = 0, - optional long clientXArg = 0, - optional long clientYArg = 0, - optional boolean ctrlKeyArg = false, - optional boolean altKeyArg = false, - optional boolean shiftKeyArg = false, - optional boolean metaKeyArg = false, - optional short buttonArg = 0, - optional EventTarget? relatedTargetArg = null, - optional float pressure = 0, - optional unsigned short inputSourceArg = 0); - [ChromeOnly] - readonly attribute boolean hitCluster; // True when touch occurs in a cluster of links - -}; - diff --git a/crates/web-sys/webidls/enabled/Navigator.webidl b/crates/web-sys/webidls/enabled/Navigator.webidl index 1661ffec543..f0950789350 100644 --- a/crates/web-sys/webidls/enabled/Navigator.webidl +++ b/crates/web-sys/webidls/enabled/Navigator.webidl @@ -28,17 +28,17 @@ 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; -Navigator implements NavigatorAutomationInformation; - -[NoInterfaceObject, Exposed=(Window,Worker)] -interface NavigatorID { +Navigator includes NavigatorID; +Navigator includes NavigatorLanguage; +Navigator includes NavigatorOnLine; +Navigator includes NavigatorContentUtils; +Navigator includes NavigatorStorageUtils; +Navigator includes NavigatorConcurrentHardware; +Navigator includes NavigatorStorage; +Navigator includes NavigatorAutomationInformation; + +[Exposed=(Window,Worker)] +interface mixin NavigatorID { // WebKit/Blink/Trident/Presto support this (hardcoded "Mozilla"). [Constant, Cached, Throws] readonly attribute DOMString appCodeName; // constant "Mozilla" @@ -58,8 +58,8 @@ interface NavigatorID { boolean taintEnabled(); // constant false }; -[NoInterfaceObject, Exposed=(Window,Worker)] -interface NavigatorLanguage { +[Exposed=(Window,Worker)] +interface mixin 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 @@ -72,13 +72,12 @@ interface NavigatorLanguage { readonly attribute sequence languages; }; -[NoInterfaceObject, Exposed=(Window,Worker)] -interface NavigatorOnLine { +[Exposed=(Window,Worker)] +interface mixin NavigatorOnLine { readonly attribute boolean onLine; }; -[NoInterfaceObject] -interface NavigatorContentUtils { +interface mixin NavigatorContentUtils { // content handler registration [Throws, Func="nsGlobalWindowInner::RegisterProtocolHandlerAllowedForContext"] void registerProtocolHandler(DOMString scheme, DOMString url, DOMString title); @@ -91,14 +90,13 @@ interface NavigatorContentUtils { //void unregisterContentHandler(DOMString mimeType, DOMString url); }; -[SecureContext, NoInterfaceObject, Exposed=(Window,Worker)] -interface NavigatorStorage { +[SecureContext, Exposed=(Window,Worker)] +interface mixin NavigatorStorage { [Func="mozilla::dom::DOMPrefs::StorageManagerEnabled"] readonly attribute StorageManager storage; }; -[NoInterfaceObject] -interface NavigatorStorageUtils { +interface mixin NavigatorStorageUtils { // NOT IMPLEMENTED //void yieldForStorageUpdates(); }; @@ -123,12 +121,11 @@ partial interface Navigator { }; // http://www.w3.org/TR/geolocation-API/#geolocation_interface -[NoInterfaceObject] -interface NavigatorGeolocation { +interface mixin NavigatorGeolocation { [Throws, Pref="geo.enabled"] readonly attribute Geolocation geolocation; }; -Navigator implements NavigatorGeolocation; +Navigator includes NavigatorGeolocation; // http://www.w3.org/TR/battery-status/#navigatorbattery-interface partial interface Navigator { @@ -262,8 +259,8 @@ partial interface Navigator { sequence supportedConfigurations); }; -[NoInterfaceObject, Exposed=(Window,Worker)] -interface NavigatorConcurrentHardware { +[Exposed=(Window,Worker)] +interface mixin NavigatorConcurrentHardware { readonly attribute unsigned long long hardwareConcurrency; }; diff --git a/crates/web-sys/webidls/enabled/OfflineResourceList.webidl b/crates/web-sys/webidls/enabled/OfflineResourceList.webidl index a1561e8552a..a77a1395511 100644 --- a/crates/web-sys/webidls/enabled/OfflineResourceList.webidl +++ b/crates/web-sys/webidls/enabled/OfflineResourceList.webidl @@ -60,64 +60,3 @@ interface OfflineResourceList : EventTarget { [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); - - /** - * We need a "length" to actually be valid Web IDL, given that we have an - * indexed getter. - */ - readonly attribute unsigned long length; - - /** - * 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/crates/web-sys/webidls/enabled/OffscreenCanvas.webidl b/crates/web-sys/webidls/enabled/OffscreenCanvas.webidl index 449277fc1eb..c1bc84beab6 100644 --- a/crates/web-sys/webidls/enabled/OffscreenCanvas.webidl +++ b/crates/web-sys/webidls/enabled/OffscreenCanvas.webidl @@ -27,4 +27,4 @@ interface OffscreenCanvas : EventTarget { optional any encoderOptions); }; -// OffscreenCanvas implements Transferable; +// OffscreenCanvas includes Transferable; diff --git a/crates/web-sys/webidls/enabled/OscillatorNode.webidl b/crates/web-sys/webidls/enabled/OscillatorNode.webidl index acf75a81812..65029ccb28b 100644 --- a/crates/web-sys/webidls/enabled/OscillatorNode.webidl +++ b/crates/web-sys/webidls/enabled/OscillatorNode.webidl @@ -37,6 +37,3 @@ interface OscillatorNode : AudioScheduledSourceNode { void setPeriodicWave(PeriodicWave periodicWave); }; - -// Mozilla extensions -OscillatorNode implements AudioNodePassThrough; diff --git a/crates/web-sys/webidls/enabled/PannerNode.webidl b/crates/web-sys/webidls/enabled/PannerNode.webidl index d562dccdf26..fba1b303b22 100644 --- a/crates/web-sys/webidls/enabled/PannerNode.webidl +++ b/crates/web-sys/webidls/enabled/PannerNode.webidl @@ -73,7 +73,3 @@ interface PannerNode : AudioNode { attribute double coneOuterGain; }; - -// Mozilla extension -PannerNode implements AudioNodePassThrough; - diff --git a/crates/web-sys/webidls/enabled/ParentNode.webidl b/crates/web-sys/webidls/enabled/ParentNode.webidl index aa6ca5db2ca..0b4eb59b366 100644 --- a/crates/web-sys/webidls/enabled/ParentNode.webidl +++ b/crates/web-sys/webidls/enabled/ParentNode.webidl @@ -7,8 +7,7 @@ * http://dom.spec.whatwg.org/#interface-parentnode */ -[NoInterfaceObject] -interface ParentNode { +interface mixin ParentNode { [Constant] readonly attribute HTMLCollection children; [Pure] diff --git a/crates/web-sys/webidls/enabled/ProcessingInstruction.webidl b/crates/web-sys/webidls/enabled/ProcessingInstruction.webidl index 40b001aed14..1cbe6479229 100644 --- a/crates/web-sys/webidls/enabled/ProcessingInstruction.webidl +++ b/crates/web-sys/webidls/enabled/ProcessingInstruction.webidl @@ -17,4 +17,4 @@ interface ProcessingInstruction : CharacterData { }; // https://drafts.csswg.org/cssom/#requirements-on-user-agents-implementing-the-xml-stylesheet-processing-instruction -ProcessingInstruction implements LinkStyle; +ProcessingInstruction includes LinkStyle; diff --git a/crates/web-sys/webidls/enabled/RTCDataChannel.webidl b/crates/web-sys/webidls/enabled/RTCDataChannel.webidl index 2ded0ce4590..8f20351254b 100644 --- a/crates/web-sys/webidls/enabled/RTCDataChannel.webidl +++ b/crates/web-sys/webidls/enabled/RTCDataChannel.webidl @@ -39,11 +39,3 @@ interface RTCDataChannel : EventTarget [Throws] void send(ArrayBufferView data); }; - -// Mozilla extensions. -partial interface RTCDataChannel -{ - readonly attribute DOMString protocol; - readonly attribute boolean ordered; - readonly attribute unsigned short id; -}; diff --git a/crates/web-sys/webidls/enabled/Request.webidl b/crates/web-sys/webidls/enabled/Request.webidl index 7086e3877b5..63eb40ed970 100644 --- a/crates/web-sys/webidls/enabled/Request.webidl +++ b/crates/web-sys/webidls/enabled/Request.webidl @@ -41,7 +41,7 @@ interface Request { [ChromeOnly] void overrideContentPolicyType(nsContentPolicyType context); }; -Request implements Body; +Request includes Body; dictionary RequestInit { ByteString method; diff --git a/crates/web-sys/webidls/enabled/Response.webidl b/crates/web-sys/webidls/enabled/Response.webidl index 0dd3d636b6d..0b05bea14de 100644 --- a/crates/web-sys/webidls/enabled/Response.webidl +++ b/crates/web-sys/webidls/enabled/Response.webidl @@ -30,7 +30,7 @@ interface Response { [ChromeOnly, NewObject, Throws] Response cloneUnfiltered(); }; -Response implements Body; +Response includes Body; // This should be part of Body but we don't want to expose body to request yet. // See bug 1387483. diff --git a/crates/web-sys/webidls/enabled/SVGAElement.webidl b/crates/web-sys/webidls/enabled/SVGAElement.webidl index 05b0cb1137a..7677b9873d7 100644 --- a/crates/web-sys/webidls/enabled/SVGAElement.webidl +++ b/crates/web-sys/webidls/enabled/SVGAElement.webidl @@ -32,5 +32,4 @@ interface SVGAElement : SVGGraphicsElement { attribute DOMString text; }; -SVGAElement implements SVGURIReference; - +SVGAElement includes SVGURIReference; diff --git a/crates/web-sys/webidls/enabled/SVGAnimatedPathData.webidl b/crates/web-sys/webidls/enabled/SVGAnimatedPathData.webidl index 08f10f7217c..7f844980d6a 100644 --- a/crates/web-sys/webidls/enabled/SVGAnimatedPathData.webidl +++ b/crates/web-sys/webidls/enabled/SVGAnimatedPathData.webidl @@ -10,11 +10,9 @@ * liability, trademark and document use rules apply. */ -[NoInterfaceObject] -interface SVGAnimatedPathData { +interface mixin SVGAnimatedPathData { readonly attribute SVGPathSegList pathSegList; //readonly attribute SVGPathSegList normalizedPathSegList; readonly attribute SVGPathSegList animatedPathSegList; //readonly attribute SVGPathSegList animatedNormalizedPathSegList; }; - diff --git a/crates/web-sys/webidls/enabled/SVGAnimatedPoints.webidl b/crates/web-sys/webidls/enabled/SVGAnimatedPoints.webidl index 891ca4bc0fd..633549a68df 100644 --- a/crates/web-sys/webidls/enabled/SVGAnimatedPoints.webidl +++ b/crates/web-sys/webidls/enabled/SVGAnimatedPoints.webidl @@ -10,11 +10,9 @@ * liability, trademark and document use rules apply. */ -[NoInterfaceObject] -interface SVGAnimatedPoints { +interface mixin SVGAnimatedPoints { [Constant] readonly attribute SVGPointList points; [Constant] readonly attribute SVGPointList animatedPoints; }; - diff --git a/crates/web-sys/webidls/enabled/SVGAnimationElement.webidl b/crates/web-sys/webidls/enabled/SVGAnimationElement.webidl index 4f9a95fe3b8..57058a6b3a2 100644 --- a/crates/web-sys/webidls/enabled/SVGAnimationElement.webidl +++ b/crates/web-sys/webidls/enabled/SVGAnimationElement.webidl @@ -30,5 +30,4 @@ interface SVGAnimationElement : SVGElement { void endElementAt(float offset); }; -SVGAnimationElement implements SVGTests; - +SVGAnimationElement includes SVGTests; diff --git a/crates/web-sys/webidls/enabled/SVGElement.webidl b/crates/web-sys/webidls/enabled/SVGElement.webidl index a01be378859..d2b3a53ed17 100644 --- a/crates/web-sys/webidls/enabled/SVGElement.webidl +++ b/crates/web-sys/webidls/enabled/SVGElement.webidl @@ -28,7 +28,7 @@ interface SVGElement : Element { [Throws] void blur(); }; -SVGElement implements GlobalEventHandlers; -SVGElement implements DocumentAndElementEventHandlers; -SVGElement implements TouchEventHandlers; -SVGElement implements OnErrorEventHandlerForNodes; +SVGElement includes GlobalEventHandlers; +SVGElement includes DocumentAndElementEventHandlers; +SVGElement includes TouchEventHandlers; +SVGElement includes OnErrorEventHandlerForNodes; diff --git a/crates/web-sys/webidls/enabled/SVGFEBlendElement.webidl b/crates/web-sys/webidls/enabled/SVGFEBlendElement.webidl index 5cd469bd5ab..412970b44f9 100644 --- a/crates/web-sys/webidls/enabled/SVGFEBlendElement.webidl +++ b/crates/web-sys/webidls/enabled/SVGFEBlendElement.webidl @@ -38,4 +38,4 @@ interface SVGFEBlendElement : SVGElement { readonly attribute SVGAnimatedEnumeration mode; }; -SVGFEBlendElement implements SVGFilterPrimitiveStandardAttributes; +SVGFEBlendElement includes SVGFilterPrimitiveStandardAttributes; diff --git a/crates/web-sys/webidls/enabled/SVGFEColorMatrixElement.webidl b/crates/web-sys/webidls/enabled/SVGFEColorMatrixElement.webidl index 61d91040d5d..05a7b6a79fd 100644 --- a/crates/web-sys/webidls/enabled/SVGFEColorMatrixElement.webidl +++ b/crates/web-sys/webidls/enabled/SVGFEColorMatrixElement.webidl @@ -27,4 +27,4 @@ interface SVGFEColorMatrixElement : SVGElement { readonly attribute SVGAnimatedNumberList values; }; -SVGFEColorMatrixElement implements SVGFilterPrimitiveStandardAttributes; +SVGFEColorMatrixElement includes SVGFilterPrimitiveStandardAttributes; diff --git a/crates/web-sys/webidls/enabled/SVGFEComponentTransferElement.webidl b/crates/web-sys/webidls/enabled/SVGFEComponentTransferElement.webidl index 6cf6f6d65df..df8dab5f8f1 100644 --- a/crates/web-sys/webidls/enabled/SVGFEComponentTransferElement.webidl +++ b/crates/web-sys/webidls/enabled/SVGFEComponentTransferElement.webidl @@ -15,4 +15,4 @@ interface SVGFEComponentTransferElement : SVGElement { readonly attribute SVGAnimatedString in1; }; -SVGFEComponentTransferElement implements SVGFilterPrimitiveStandardAttributes; +SVGFEComponentTransferElement includes SVGFilterPrimitiveStandardAttributes; diff --git a/crates/web-sys/webidls/enabled/SVGFECompositeElement.webidl b/crates/web-sys/webidls/enabled/SVGFECompositeElement.webidl index 3ab983fe0d8..dd0b001d1f4 100644 --- a/crates/web-sys/webidls/enabled/SVGFECompositeElement.webidl +++ b/crates/web-sys/webidls/enabled/SVGFECompositeElement.webidl @@ -37,4 +37,4 @@ interface SVGFECompositeElement : SVGElement { readonly attribute SVGAnimatedNumber k4; }; -SVGFECompositeElement implements SVGFilterPrimitiveStandardAttributes; +SVGFECompositeElement includes SVGFilterPrimitiveStandardAttributes; diff --git a/crates/web-sys/webidls/enabled/SVGFEConvolveMatrixElement.webidl b/crates/web-sys/webidls/enabled/SVGFEConvolveMatrixElement.webidl index 27d8e80e764..d07c14e2f90 100644 --- a/crates/web-sys/webidls/enabled/SVGFEConvolveMatrixElement.webidl +++ b/crates/web-sys/webidls/enabled/SVGFEConvolveMatrixElement.webidl @@ -44,4 +44,4 @@ interface SVGFEConvolveMatrixElement : SVGElement { readonly attribute SVGAnimatedBoolean preserveAlpha; }; -SVGFEConvolveMatrixElement implements SVGFilterPrimitiveStandardAttributes; +SVGFEConvolveMatrixElement includes SVGFilterPrimitiveStandardAttributes; diff --git a/crates/web-sys/webidls/enabled/SVGFEDiffuseLightingElement.webidl b/crates/web-sys/webidls/enabled/SVGFEDiffuseLightingElement.webidl index fb89721d847..e11a07a6f95 100644 --- a/crates/web-sys/webidls/enabled/SVGFEDiffuseLightingElement.webidl +++ b/crates/web-sys/webidls/enabled/SVGFEDiffuseLightingElement.webidl @@ -23,4 +23,4 @@ interface SVGFEDiffuseLightingElement : SVGElement { readonly attribute SVGAnimatedNumber kernelUnitLengthY; }; -SVGFEDiffuseLightingElement implements SVGFilterPrimitiveStandardAttributes; +SVGFEDiffuseLightingElement includes SVGFilterPrimitiveStandardAttributes; diff --git a/crates/web-sys/webidls/enabled/SVGFEDisplacementMapElement.webidl b/crates/web-sys/webidls/enabled/SVGFEDisplacementMapElement.webidl index 461faff9197..1e5dfbf7ea6 100644 --- a/crates/web-sys/webidls/enabled/SVGFEDisplacementMapElement.webidl +++ b/crates/web-sys/webidls/enabled/SVGFEDisplacementMapElement.webidl @@ -31,4 +31,4 @@ interface SVGFEDisplacementMapElement : SVGElement { readonly attribute SVGAnimatedEnumeration yChannelSelector; }; -SVGFEDisplacementMapElement implements SVGFilterPrimitiveStandardAttributes; +SVGFEDisplacementMapElement includes SVGFilterPrimitiveStandardAttributes; diff --git a/crates/web-sys/webidls/enabled/SVGFEDropShadowElement.webidl b/crates/web-sys/webidls/enabled/SVGFEDropShadowElement.webidl index b858fc91cd6..8224436761c 100644 --- a/crates/web-sys/webidls/enabled/SVGFEDropShadowElement.webidl +++ b/crates/web-sys/webidls/enabled/SVGFEDropShadowElement.webidl @@ -25,4 +25,4 @@ interface SVGFEDropShadowElement : SVGElement { void setStdDeviation(float stdDeviationX, float stdDeviationY); }; -SVGFEDropShadowElement implements SVGFilterPrimitiveStandardAttributes; +SVGFEDropShadowElement includes SVGFilterPrimitiveStandardAttributes; diff --git a/crates/web-sys/webidls/enabled/SVGFEFloodElement.webidl b/crates/web-sys/webidls/enabled/SVGFEFloodElement.webidl index 51d9539ff3e..e268000915c 100644 --- a/crates/web-sys/webidls/enabled/SVGFEFloodElement.webidl +++ b/crates/web-sys/webidls/enabled/SVGFEFloodElement.webidl @@ -13,4 +13,4 @@ interface SVGFEFloodElement : SVGElement { }; -SVGFEFloodElement implements SVGFilterPrimitiveStandardAttributes; +SVGFEFloodElement includes SVGFilterPrimitiveStandardAttributes; diff --git a/crates/web-sys/webidls/enabled/SVGFEGaussianBlurElement.webidl b/crates/web-sys/webidls/enabled/SVGFEGaussianBlurElement.webidl index db2101b5351..58e9deea757 100644 --- a/crates/web-sys/webidls/enabled/SVGFEGaussianBlurElement.webidl +++ b/crates/web-sys/webidls/enabled/SVGFEGaussianBlurElement.webidl @@ -21,4 +21,4 @@ interface SVGFEGaussianBlurElement : SVGElement { void setStdDeviation(float stdDeviationX, float stdDeviationY); }; -SVGFEGaussianBlurElement implements SVGFilterPrimitiveStandardAttributes; +SVGFEGaussianBlurElement includes SVGFilterPrimitiveStandardAttributes; diff --git a/crates/web-sys/webidls/enabled/SVGFEImageElement.webidl b/crates/web-sys/webidls/enabled/SVGFEImageElement.webidl index 3262c0d8a2f..5ef70da3a54 100644 --- a/crates/web-sys/webidls/enabled/SVGFEImageElement.webidl +++ b/crates/web-sys/webidls/enabled/SVGFEImageElement.webidl @@ -15,5 +15,5 @@ interface SVGFEImageElement : SVGElement { readonly attribute SVGAnimatedPreserveAspectRatio preserveAspectRatio; }; -SVGFEImageElement implements SVGFilterPrimitiveStandardAttributes; -SVGFEImageElement implements SVGURIReference; +SVGFEImageElement includes SVGFilterPrimitiveStandardAttributes; +SVGFEImageElement includes SVGURIReference; diff --git a/crates/web-sys/webidls/enabled/SVGFEMergeElement.webidl b/crates/web-sys/webidls/enabled/SVGFEMergeElement.webidl index adafbba9a6e..ff1932bb7bf 100644 --- a/crates/web-sys/webidls/enabled/SVGFEMergeElement.webidl +++ b/crates/web-sys/webidls/enabled/SVGFEMergeElement.webidl @@ -13,4 +13,4 @@ interface SVGFEMergeElement : SVGElement { }; -SVGFEMergeElement implements SVGFilterPrimitiveStandardAttributes; +SVGFEMergeElement includes SVGFilterPrimitiveStandardAttributes; diff --git a/crates/web-sys/webidls/enabled/SVGFEMorphologyElement.webidl b/crates/web-sys/webidls/enabled/SVGFEMorphologyElement.webidl index 82910a6faa0..ee28b8a2dea 100644 --- a/crates/web-sys/webidls/enabled/SVGFEMorphologyElement.webidl +++ b/crates/web-sys/webidls/enabled/SVGFEMorphologyElement.webidl @@ -27,4 +27,4 @@ interface SVGFEMorphologyElement : SVGElement { readonly attribute SVGAnimatedNumber radiusY; }; -SVGFEMorphologyElement implements SVGFilterPrimitiveStandardAttributes; +SVGFEMorphologyElement includes SVGFilterPrimitiveStandardAttributes; diff --git a/crates/web-sys/webidls/enabled/SVGFEOffsetElement.webidl b/crates/web-sys/webidls/enabled/SVGFEOffsetElement.webidl index 90132d52880..f4921cac579 100644 --- a/crates/web-sys/webidls/enabled/SVGFEOffsetElement.webidl +++ b/crates/web-sys/webidls/enabled/SVGFEOffsetElement.webidl @@ -19,4 +19,4 @@ interface SVGFEOffsetElement : SVGElement { readonly attribute SVGAnimatedNumber dy; }; -SVGFEOffsetElement implements SVGFilterPrimitiveStandardAttributes; +SVGFEOffsetElement includes SVGFilterPrimitiveStandardAttributes; diff --git a/crates/web-sys/webidls/enabled/SVGFESpecularLightingElement.webidl b/crates/web-sys/webidls/enabled/SVGFESpecularLightingElement.webidl index 42b6b0e9c8d..ca485268678 100644 --- a/crates/web-sys/webidls/enabled/SVGFESpecularLightingElement.webidl +++ b/crates/web-sys/webidls/enabled/SVGFESpecularLightingElement.webidl @@ -25,4 +25,4 @@ interface SVGFESpecularLightingElement : SVGElement { readonly attribute SVGAnimatedNumber kernelUnitLengthY; }; -SVGFESpecularLightingElement implements SVGFilterPrimitiveStandardAttributes; +SVGFESpecularLightingElement includes SVGFilterPrimitiveStandardAttributes; diff --git a/crates/web-sys/webidls/enabled/SVGFETileElement.webidl b/crates/web-sys/webidls/enabled/SVGFETileElement.webidl index 38cad60409f..42f3f8734a2 100644 --- a/crates/web-sys/webidls/enabled/SVGFETileElement.webidl +++ b/crates/web-sys/webidls/enabled/SVGFETileElement.webidl @@ -15,4 +15,4 @@ interface SVGFETileElement : SVGElement { readonly attribute SVGAnimatedString in1; }; -SVGFETileElement implements SVGFilterPrimitiveStandardAttributes; +SVGFETileElement includes SVGFilterPrimitiveStandardAttributes; diff --git a/crates/web-sys/webidls/enabled/SVGFETurbulenceElement.webidl b/crates/web-sys/webidls/enabled/SVGFETurbulenceElement.webidl index 45c9d468b2e..f12d8c1b801 100644 --- a/crates/web-sys/webidls/enabled/SVGFETurbulenceElement.webidl +++ b/crates/web-sys/webidls/enabled/SVGFETurbulenceElement.webidl @@ -36,4 +36,4 @@ interface SVGFETurbulenceElement : SVGElement { readonly attribute SVGAnimatedEnumeration type; }; -SVGFETurbulenceElement implements SVGFilterPrimitiveStandardAttributes; +SVGFETurbulenceElement includes SVGFilterPrimitiveStandardAttributes; diff --git a/crates/web-sys/webidls/enabled/SVGFilterElement.webidl b/crates/web-sys/webidls/enabled/SVGFilterElement.webidl index bbea6841f7a..83d491b3f72 100644 --- a/crates/web-sys/webidls/enabled/SVGFilterElement.webidl +++ b/crates/web-sys/webidls/enabled/SVGFilterElement.webidl @@ -27,5 +27,4 @@ interface SVGFilterElement : SVGElement { // ImageData apply(ImageData source); }; -SVGFilterElement implements SVGURIReference; - +SVGFilterElement includes SVGURIReference; diff --git a/crates/web-sys/webidls/enabled/SVGFilterPrimitiveStandardAttributes.webidl b/crates/web-sys/webidls/enabled/SVGFilterPrimitiveStandardAttributes.webidl index 3319505866a..02fa882d802 100644 --- a/crates/web-sys/webidls/enabled/SVGFilterPrimitiveStandardAttributes.webidl +++ b/crates/web-sys/webidls/enabled/SVGFilterPrimitiveStandardAttributes.webidl @@ -10,8 +10,7 @@ * liability, trademark and document use rules apply. */ -[NoInterfaceObject] -interface SVGFilterPrimitiveStandardAttributes { +interface mixin SVGFilterPrimitiveStandardAttributes { [Constant] readonly attribute SVGAnimatedLength x; [Constant] diff --git a/crates/web-sys/webidls/enabled/SVGFitToViewBox.webidl b/crates/web-sys/webidls/enabled/SVGFitToViewBox.webidl index 881e658d21d..650afd15e12 100644 --- a/crates/web-sys/webidls/enabled/SVGFitToViewBox.webidl +++ b/crates/web-sys/webidls/enabled/SVGFitToViewBox.webidl @@ -10,11 +10,9 @@ * liability, trademark and document use rules apply. */ -[NoInterfaceObject] -interface SVGFitToViewBox { +interface mixin SVGFitToViewBox { [Constant] readonly attribute SVGAnimatedRect viewBox; [Constant] readonly attribute SVGAnimatedPreserveAspectRatio preserveAspectRatio; }; - diff --git a/crates/web-sys/webidls/enabled/SVGGradientElement.webidl b/crates/web-sys/webidls/enabled/SVGGradientElement.webidl index 8eb75b10714..d5553a9b831 100644 --- a/crates/web-sys/webidls/enabled/SVGGradientElement.webidl +++ b/crates/web-sys/webidls/enabled/SVGGradientElement.webidl @@ -26,4 +26,4 @@ interface SVGGradientElement : SVGElement { readonly attribute SVGAnimatedEnumeration spreadMethod; }; -SVGGradientElement implements SVGURIReference; +SVGGradientElement includes SVGURIReference; diff --git a/crates/web-sys/webidls/enabled/SVGGraphicsElement.webidl b/crates/web-sys/webidls/enabled/SVGGraphicsElement.webidl index 74af1f6738e..c27d7ed5169 100644 --- a/crates/web-sys/webidls/enabled/SVGGraphicsElement.webidl +++ b/crates/web-sys/webidls/enabled/SVGGraphicsElement.webidl @@ -33,4 +33,4 @@ interface SVGGraphicsElement : SVGElement { SVGMatrix getTransformToElement(SVGGraphicsElement element); }; -SVGGraphicsElement implements SVGTests; +SVGGraphicsElement includes SVGTests; diff --git a/crates/web-sys/webidls/enabled/SVGImageElement.webidl b/crates/web-sys/webidls/enabled/SVGImageElement.webidl index 67dab60f58c..17354f83053 100644 --- a/crates/web-sys/webidls/enabled/SVGImageElement.webidl +++ b/crates/web-sys/webidls/enabled/SVGImageElement.webidl @@ -23,6 +23,5 @@ interface SVGImageElement : SVGGraphicsElement { readonly attribute SVGAnimatedPreserveAspectRatio preserveAspectRatio; }; -SVGImageElement implements MozImageLoadingContent; -SVGImageElement implements SVGURIReference; - +SVGImageElement includes MozImageLoadingContent; +SVGImageElement includes SVGURIReference; diff --git a/crates/web-sys/webidls/enabled/SVGMPathElement.webidl b/crates/web-sys/webidls/enabled/SVGMPathElement.webidl index 7165b6cf745..514c43995ea 100644 --- a/crates/web-sys/webidls/enabled/SVGMPathElement.webidl +++ b/crates/web-sys/webidls/enabled/SVGMPathElement.webidl @@ -13,5 +13,4 @@ interface SVGMPathElement : SVGElement { }; -SVGMPathElement implements SVGURIReference; - +SVGMPathElement includes SVGURIReference; diff --git a/crates/web-sys/webidls/enabled/SVGMarkerElement.webidl b/crates/web-sys/webidls/enabled/SVGMarkerElement.webidl index a4f819b2d09..c49ad096e32 100644 --- a/crates/web-sys/webidls/enabled/SVGMarkerElement.webidl +++ b/crates/web-sys/webidls/enabled/SVGMarkerElement.webidl @@ -42,5 +42,4 @@ interface SVGMarkerElement : SVGElement { void setOrientToAngle(SVGAngle angle); }; -SVGMarkerElement implements SVGFitToViewBox; - +SVGMarkerElement includes SVGFitToViewBox; diff --git a/crates/web-sys/webidls/enabled/SVGPathElement.webidl b/crates/web-sys/webidls/enabled/SVGPathElement.webidl index a811a8ff20d..d5479c4ba2b 100644 --- a/crates/web-sys/webidls/enabled/SVGPathElement.webidl +++ b/crates/web-sys/webidls/enabled/SVGPathElement.webidl @@ -14,5 +14,4 @@ interface SVGPathElement : SVGGeometryElement { unsigned long getPathSegAtLength(float distance); }; -SVGPathElement implements SVGAnimatedPathData; - +SVGPathElement includes SVGAnimatedPathData; diff --git a/crates/web-sys/webidls/enabled/SVGPatternElement.webidl b/crates/web-sys/webidls/enabled/SVGPatternElement.webidl index c1d9af9b7d6..0bde1d93f43 100644 --- a/crates/web-sys/webidls/enabled/SVGPatternElement.webidl +++ b/crates/web-sys/webidls/enabled/SVGPatternElement.webidl @@ -27,5 +27,5 @@ interface SVGPatternElement : SVGElement { readonly attribute SVGAnimatedLength height; }; -SVGPatternElement implements SVGFitToViewBox; -SVGPatternElement implements SVGURIReference; +SVGPatternElement includes SVGFitToViewBox; +SVGPatternElement includes SVGURIReference; diff --git a/crates/web-sys/webidls/enabled/SVGPolygonElement.webidl b/crates/web-sys/webidls/enabled/SVGPolygonElement.webidl index 338f9766a6a..6da0edfc4d0 100644 --- a/crates/web-sys/webidls/enabled/SVGPolygonElement.webidl +++ b/crates/web-sys/webidls/enabled/SVGPolygonElement.webidl @@ -13,5 +13,4 @@ interface SVGPolygonElement : SVGGeometryElement { }; -SVGPolygonElement implements SVGAnimatedPoints; - +SVGPolygonElement includes SVGAnimatedPoints; diff --git a/crates/web-sys/webidls/enabled/SVGPolylineElement.webidl b/crates/web-sys/webidls/enabled/SVGPolylineElement.webidl index 0508d009fa9..44e442a89b9 100644 --- a/crates/web-sys/webidls/enabled/SVGPolylineElement.webidl +++ b/crates/web-sys/webidls/enabled/SVGPolylineElement.webidl @@ -13,5 +13,4 @@ interface SVGPolylineElement : SVGGeometryElement { }; -SVGPolylineElement implements SVGAnimatedPoints; - +SVGPolylineElement includes SVGAnimatedPoints; diff --git a/crates/web-sys/webidls/enabled/SVGSVGElement.webidl b/crates/web-sys/webidls/enabled/SVGSVGElement.webidl index 2e7f01c2e53..18ff013ee8d 100644 --- a/crates/web-sys/webidls/enabled/SVGSVGElement.webidl +++ b/crates/web-sys/webidls/enabled/SVGSVGElement.webidl @@ -68,6 +68,5 @@ interface SVGSVGElement : SVGGraphicsElement { Element? getElementById(DOMString elementId); }; -SVGSVGElement implements SVGFitToViewBox; -SVGSVGElement implements SVGZoomAndPanValues; - +SVGSVGElement includes SVGFitToViewBox; +SVGSVGElement includes SVGZoomAndPanValues; diff --git a/crates/web-sys/webidls/enabled/SVGScriptElement.webidl b/crates/web-sys/webidls/enabled/SVGScriptElement.webidl index 41bbe065b67..0cd00096078 100644 --- a/crates/web-sys/webidls/enabled/SVGScriptElement.webidl +++ b/crates/web-sys/webidls/enabled/SVGScriptElement.webidl @@ -19,5 +19,4 @@ interface SVGScriptElement : SVGElement { attribute DOMString? crossOrigin; }; -SVGScriptElement implements SVGURIReference; - +SVGScriptElement includes SVGURIReference; diff --git a/crates/web-sys/webidls/enabled/SVGStyleElement.webidl b/crates/web-sys/webidls/enabled/SVGStyleElement.webidl index dcdbb8c2c27..2f74506b271 100644 --- a/crates/web-sys/webidls/enabled/SVGStyleElement.webidl +++ b/crates/web-sys/webidls/enabled/SVGStyleElement.webidl @@ -20,5 +20,4 @@ interface SVGStyleElement : SVGElement { [SetterThrows] attribute DOMString title; }; -SVGStyleElement implements LinkStyle; - +SVGStyleElement includes LinkStyle; diff --git a/crates/web-sys/webidls/enabled/SVGSymbolElement.webidl b/crates/web-sys/webidls/enabled/SVGSymbolElement.webidl index ece2c5a3f04..6cd35429c1f 100644 --- a/crates/web-sys/webidls/enabled/SVGSymbolElement.webidl +++ b/crates/web-sys/webidls/enabled/SVGSymbolElement.webidl @@ -13,5 +13,5 @@ interface SVGSymbolElement : SVGElement { }; -SVGSymbolElement implements SVGFitToViewBox; -SVGSymbolElement implements SVGTests; +SVGSymbolElement includes SVGFitToViewBox; +SVGSymbolElement includes SVGTests; diff --git a/crates/web-sys/webidls/enabled/SVGTests.webidl b/crates/web-sys/webidls/enabled/SVGTests.webidl index e3c38242b38..c74dc5efb6a 100644 --- a/crates/web-sys/webidls/enabled/SVGTests.webidl +++ b/crates/web-sys/webidls/enabled/SVGTests.webidl @@ -10,8 +10,7 @@ * liability, trademark and document use rules apply. */ -[NoInterfaceObject] -interface SVGTests { +interface mixin SVGTests { readonly attribute SVGStringList requiredFeatures; readonly attribute SVGStringList requiredExtensions; @@ -19,4 +18,3 @@ interface SVGTests { boolean hasExtension(DOMString extension); }; - diff --git a/crates/web-sys/webidls/enabled/SVGTextPathElement.webidl b/crates/web-sys/webidls/enabled/SVGTextPathElement.webidl index 73a50f3ff47..d20e50e1ade 100644 --- a/crates/web-sys/webidls/enabled/SVGTextPathElement.webidl +++ b/crates/web-sys/webidls/enabled/SVGTextPathElement.webidl @@ -30,5 +30,4 @@ interface SVGTextPathElement : SVGTextContentElement { readonly attribute SVGAnimatedEnumeration spacing; }; -SVGTextPathElement implements SVGURIReference; - +SVGTextPathElement includes SVGURIReference; diff --git a/crates/web-sys/webidls/enabled/SVGURIReference.webidl b/crates/web-sys/webidls/enabled/SVGURIReference.webidl index 11f94c1917f..12d216a0258 100644 --- a/crates/web-sys/webidls/enabled/SVGURIReference.webidl +++ b/crates/web-sys/webidls/enabled/SVGURIReference.webidl @@ -10,9 +10,7 @@ * liability, trademark and document use rules apply. */ -[NoInterfaceObject] -interface SVGURIReference { +interface mixin SVGURIReference { [Constant] readonly attribute SVGAnimatedString href; }; - diff --git a/crates/web-sys/webidls/enabled/SVGUseElement.webidl b/crates/web-sys/webidls/enabled/SVGUseElement.webidl index 8e7a6fd8cf4..0443ee6a23d 100644 --- a/crates/web-sys/webidls/enabled/SVGUseElement.webidl +++ b/crates/web-sys/webidls/enabled/SVGUseElement.webidl @@ -23,4 +23,4 @@ interface SVGUseElement : SVGGraphicsElement { //readonly attribute SVGElementInstance animatedInstanceRoot; }; -SVGUseElement implements SVGURIReference; +SVGUseElement includes SVGURIReference; diff --git a/crates/web-sys/webidls/enabled/SVGViewElement.webidl b/crates/web-sys/webidls/enabled/SVGViewElement.webidl index b4be87645de..e3c1128fde8 100644 --- a/crates/web-sys/webidls/enabled/SVGViewElement.webidl +++ b/crates/web-sys/webidls/enabled/SVGViewElement.webidl @@ -13,6 +13,5 @@ interface SVGViewElement : SVGElement { }; -SVGViewElement implements SVGFitToViewBox; -SVGViewElement implements SVGZoomAndPanValues; - +SVGViewElement includes SVGFitToViewBox; +SVGViewElement includes SVGZoomAndPanValues; diff --git a/crates/web-sys/webidls/enabled/SVGZoomAndPan.webidl b/crates/web-sys/webidls/enabled/SVGZoomAndPan.webidl index bb5ee780ac0..115e7e76b4f 100644 --- a/crates/web-sys/webidls/enabled/SVGZoomAndPan.webidl +++ b/crates/web-sys/webidls/enabled/SVGZoomAndPan.webidl @@ -13,4 +13,4 @@ interface SVGZoomAndPan { }; -SVGZoomAndPan implements SVGZoomAndPanValues; +SVGZoomAndPan includes SVGZoomAndPanValues; diff --git a/crates/web-sys/webidls/enabled/SVGZoomAndPanValues.webidl b/crates/web-sys/webidls/enabled/SVGZoomAndPanValues.webidl index a09653f0bea..9f1e14b6a54 100644 --- a/crates/web-sys/webidls/enabled/SVGZoomAndPanValues.webidl +++ b/crates/web-sys/webidls/enabled/SVGZoomAndPanValues.webidl @@ -10,8 +10,7 @@ * liability, trademark and document use rules apply. */ -[NoInterfaceObject] -interface SVGZoomAndPanValues { +interface mixin SVGZoomAndPanValues { // Zoom and Pan Types const unsigned short SVG_ZOOMANDPAN_UNKNOWN = 0; @@ -21,4 +20,3 @@ interface SVGZoomAndPanValues { [SetterThrows] attribute unsigned short zoomAndPan; }; - diff --git a/crates/web-sys/webidls/enabled/ScriptProcessorNode.webidl b/crates/web-sys/webidls/enabled/ScriptProcessorNode.webidl index 81c02443f17..81642af33c2 100644 --- a/crates/web-sys/webidls/enabled/ScriptProcessorNode.webidl +++ b/crates/web-sys/webidls/enabled/ScriptProcessorNode.webidl @@ -18,7 +18,3 @@ interface ScriptProcessorNode : AudioNode { readonly attribute long bufferSize; }; - -// Mozilla extension -ScriptProcessorNode implements AudioNodePassThrough; - diff --git a/crates/web-sys/webidls/enabled/ServiceWorker.webidl b/crates/web-sys/webidls/enabled/ServiceWorker.webidl index 8978cf07a28..c0a3a12afe7 100644 --- a/crates/web-sys/webidls/enabled/ServiceWorker.webidl +++ b/crates/web-sys/webidls/enabled/ServiceWorker.webidl @@ -23,7 +23,7 @@ interface ServiceWorker : EventTarget { void postMessage(any message, optional sequence transferable = []); }; -ServiceWorker implements AbstractWorker; +ServiceWorker includes AbstractWorker; enum ServiceWorkerState { // https://github.com/w3c/ServiceWorker/issues/1162 diff --git a/crates/web-sys/webidls/enabled/ShadowRoot.webidl b/crates/web-sys/webidls/enabled/ShadowRoot.webidl index afa5b990593..839f8d17856 100644 --- a/crates/web-sys/webidls/enabled/ShadowRoot.webidl +++ b/crates/web-sys/webidls/enabled/ShadowRoot.webidl @@ -33,4 +33,4 @@ interface ShadowRoot : DocumentFragment attribute DOMString innerHTML; }; -ShadowRoot implements DocumentOrShadowRoot; +ShadowRoot includes DocumentOrShadowRoot; diff --git a/crates/web-sys/webidls/enabled/SharedWorker.webidl b/crates/web-sys/webidls/enabled/SharedWorker.webidl index 9504f302e06..62d4dd514d7 100644 --- a/crates/web-sys/webidls/enabled/SharedWorker.webidl +++ b/crates/web-sys/webidls/enabled/SharedWorker.webidl @@ -9,4 +9,4 @@ interface SharedWorker : EventTarget { readonly attribute MessagePort port; }; -SharedWorker implements AbstractWorker; +SharedWorker includes AbstractWorker; diff --git a/crates/web-sys/webidls/enabled/StereoPannerNode.webidl b/crates/web-sys/webidls/enabled/StereoPannerNode.webidl index 9b8b3e2f841..98947b74ffe 100644 --- a/crates/web-sys/webidls/enabled/StereoPannerNode.webidl +++ b/crates/web-sys/webidls/enabled/StereoPannerNode.webidl @@ -19,7 +19,3 @@ dictionary StereoPannerOptions : AudioNodeOptions { interface StereoPannerNode : AudioNode { readonly attribute AudioParam pan; }; - -// Mozilla extension -StereoPannerNode implements AudioNodePassThrough; - diff --git a/crates/web-sys/webidls/enabled/Text.webidl b/crates/web-sys/webidls/enabled/Text.webidl index 61041149b09..f3a751baddd 100644 --- a/crates/web-sys/webidls/enabled/Text.webidl +++ b/crates/web-sys/webidls/enabled/Text.webidl @@ -23,4 +23,4 @@ partial interface Text { readonly attribute HTMLSlotElement? assignedSlot; }; -Text implements GeometryUtils; +Text includes GeometryUtils; diff --git a/crates/web-sys/webidls/enabled/TextTrack.webidl b/crates/web-sys/webidls/enabled/TextTrack.webidl index 442a1667f19..6ff0cf93bc0 100644 --- a/crates/web-sys/webidls/enabled/TextTrack.webidl +++ b/crates/web-sys/webidls/enabled/TextTrack.webidl @@ -40,9 +40,3 @@ interface TextTrack : EventTarget { attribute EventHandler oncuechange; }; - -// Mozilla Extensions -partial interface TextTrack { - [ChromeOnly] - readonly attribute TextTrackList? textTrackList; -}; diff --git a/crates/web-sys/webidls/enabled/TextTrackList.webidl b/crates/web-sys/webidls/enabled/TextTrackList.webidl index 1150871e3a7..4f3b0d6df7c 100644 --- a/crates/web-sys/webidls/enabled/TextTrackList.webidl +++ b/crates/web-sys/webidls/enabled/TextTrackList.webidl @@ -16,9 +16,3 @@ interface TextTrackList : EventTarget { attribute EventHandler onaddtrack; attribute EventHandler onremovetrack; }; - -// Mozilla extensions -partial interface TextTrackList { - [ChromeOnly] - readonly attribute HTMLMediaElement? mediaElement; -}; diff --git a/crates/web-sys/webidls/enabled/U2F.webidl b/crates/web-sys/webidls/enabled/U2F.webidl index 29bed6f3ac5..8ae485b5d8b 100644 --- a/crates/web-sys/webidls/enabled/U2F.webidl +++ b/crates/web-sys/webidls/enabled/U2F.webidl @@ -9,8 +9,7 @@ * https://www.fidoalliance.org/specs/fido-u2f-v1.1-id-20160915/fido-u2f-javascript-api-v1.1-id-20160915.html */ -[NoInterfaceObject] -interface GlobalU2F { +interface mixin GlobalU2F { [SecureContext, Throws, Pref="security.webauth.u2f"] readonly attribute U2F u2f; }; diff --git a/crates/web-sys/webidls/enabled/VTTCue.webidl b/crates/web-sys/webidls/enabled/VTTCue.webidl index 4f8214c21d9..db4540e4a56 100644 --- a/crates/web-sys/webidls/enabled/VTTCue.webidl +++ b/crates/web-sys/webidls/enabled/VTTCue.webidl @@ -55,19 +55,3 @@ interface VTTCue : TextTrackCue { 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; - [ChromeOnly] - readonly attribute boolean getActive; -}; diff --git a/crates/web-sys/webidls/enabled/WaveShaperNode.webidl b/crates/web-sys/webidls/enabled/WaveShaperNode.webidl index 0bea44c8ca7..669fe977602 100644 --- a/crates/web-sys/webidls/enabled/WaveShaperNode.webidl +++ b/crates/web-sys/webidls/enabled/WaveShaperNode.webidl @@ -30,7 +30,3 @@ interface WaveShaperNode : AudioNode { attribute OverSampleType oversample; }; - -// Mozilla extension -WaveShaperNode implements AudioNodePassThrough; - diff --git a/crates/web-sys/webidls/enabled/WebGPU.webidl b/crates/web-sys/webidls/enabled/WebGPU.webidl index 1da99854bde..2ab932a5000 100644 --- a/crates/web-sys/webidls/enabled/WebGPU.webidl +++ b/crates/web-sys/webidls/enabled/WebGPU.webidl @@ -632,8 +632,7 @@ interface WebGPU { }; // Add a "webgpu" member to Window that contains the global instance of a "WebGPU" -[NoInterfaceObject] -interface WebGPUProvider { +interface mixin WebGPUProvider { [SameObject, Replaceable, Pref="dom.webgpu.enable"] readonly attribute WebGPU webgpu; }; //Window includes WebGPUProvider; diff --git a/crates/web-sys/webidls/enabled/Window.webidl b/crates/web-sys/webidls/enabled/Window.webidl index a4b6cfd0143..bc71f851102 100644 --- a/crates/web-sys/webidls/enabled/Window.webidl +++ b/crates/web-sys/webidls/enabled/Window.webidl @@ -88,8 +88,8 @@ // also has obsolete members }; -Window implements GlobalEventHandlers; -Window implements WindowEventHandlers; +Window includes GlobalEventHandlers; +Window includes WindowEventHandlers; // https://www.w3.org/TR/appmanifest/#onappinstalled-attribute partial interface Window { @@ -98,19 +98,17 @@ partial interface Window { }; // http://www.whatwg.org/specs/web-apps/current-work/ -[NoInterfaceObject] -interface WindowSessionStorage { +interface mixin WindowSessionStorage { //[Throws] readonly attribute Storage sessionStorage; [Throws] readonly attribute Storage? sessionStorage; }; -Window implements WindowSessionStorage; +Window includes WindowSessionStorage; // http://www.whatwg.org/specs/web-apps/current-work/ -[NoInterfaceObject] -interface WindowLocalStorage { +interface mixin WindowLocalStorage { [Throws] readonly attribute Storage? localStorage; }; -Window implements WindowLocalStorage; +Window includes WindowLocalStorage; // http://www.whatwg.org/specs/web-apps/current-work/ partial interface Window { @@ -215,24 +213,23 @@ partial interface Window { }; // https://dvcs.w3.org/hg/webcrypto-api/raw-file/tip/spec/Overview.html -Window implements GlobalCrypto; +Window includes GlobalCrypto; // https://fidoalliance.org/specifications/download/ -Window implements GlobalU2F; +Window includes GlobalU2F; //#ifdef MOZ_WEBSPEECH // http://dvcs.w3.org/hg/speech-api/raw-file/tip/speechapi.html -[NoInterfaceObject] -interface SpeechSynthesisGetter { +interface mixin SpeechSynthesisGetter { [Throws, Pref="media.webspeech.synth.enabled"] readonly attribute SpeechSynthesis speechSynthesis; }; -Window implements SpeechSynthesisGetter; +Window includes SpeechSynthesisGetter; //#endif -Window implements TouchEventHandlers; +Window includes TouchEventHandlers; -Window implements OnErrorEventHandlerForWindow; +Window includes OnErrorEventHandlerForWindow; //#if defined(MOZ_WIDGET_ANDROID) // https://compat.spec.whatwg.org/#windoworientation-interface @@ -243,14 +240,6 @@ partial interface Window { }; //#endif -//#ifdef HAVE_SIDEBAR -// Mozilla extension -partial interface Window { - [Replaceable, Throws, UseCounter] - readonly attribute (External or WindowProxy) sidebar; -}; -//#endif - callback PromiseDocumentFlushedCallback = any (); partial interface Window { @@ -272,7 +261,7 @@ partial interface Window { readonly attribute Worklet paintWorklet; }; -Window implements WindowOrWorkerGlobalScope; +Window includes WindowOrWorkerGlobalScope; partial interface Window { [Throws, Func="nsGlobalWindowInner::IsRequestIdleCallbackEnabled"] @@ -288,4 +277,4 @@ dictionary IdleRequestOptions { callback IdleRequestCallback = void (IdleDeadline deadline); -Window implements WebGPUProvider; +Window includes WebGPUProvider; diff --git a/crates/web-sys/webidls/enabled/WindowOrWorkerGlobalScope.webidl b/crates/web-sys/webidls/enabled/WindowOrWorkerGlobalScope.webidl index 81b7197994d..b02a355f945 100644 --- a/crates/web-sys/webidls/enabled/WindowOrWorkerGlobalScope.webidl +++ b/crates/web-sys/webidls/enabled/WindowOrWorkerGlobalScope.webidl @@ -11,8 +11,8 @@ */ // https://html.spec.whatwg.org/multipage/webappapis.html#windoworworkerglobalscope-mixin -[NoInterfaceObject, Exposed=(Window,Worker)] -interface WindowOrWorkerGlobalScope { +[Exposed=(Window,Worker)] +interface mixin WindowOrWorkerGlobalScope { [Replaceable] readonly attribute USVString origin; // base64 utility methods @@ -65,18 +65,3 @@ partial interface WindowOrWorkerGlobalScope { [Throws, Func="mozilla::dom::DOMPrefs::DOMCachesEnabled", 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 createImageBitmap(ImageBitmapSource aImage, long aOffset, long aLength, ImageBitmapFormat aFormat, ImagePixelLayout aLayout); -}; diff --git a/crates/web-sys/webidls/enabled/Worker.webidl b/crates/web-sys/webidls/enabled/Worker.webidl index b4ce05003fc..d8c67ac4692 100644 --- a/crates/web-sys/webidls/enabled/Worker.webidl +++ b/crates/web-sys/webidls/enabled/Worker.webidl @@ -24,7 +24,7 @@ interface Worker : EventTarget { attribute EventHandler onmessageerror; }; -Worker implements AbstractWorker; +Worker includes AbstractWorker; dictionary WorkerOptions { // WorkerType type = "classic"; TODO: Bug 1247687 diff --git a/crates/web-sys/webidls/enabled/WorkerGlobalScope.webidl b/crates/web-sys/webidls/enabled/WorkerGlobalScope.webidl index 9b4342ed8ae..a673151d12e 100644 --- a/crates/web-sys/webidls/enabled/WorkerGlobalScope.webidl +++ b/crates/web-sys/webidls/enabled/WorkerGlobalScope.webidl @@ -29,21 +29,8 @@ interface WorkerGlobalScope : EventTarget { // also has additional members in a partial interface }; -WorkerGlobalScope implements GlobalCrypto; -WorkerGlobalScope implements WindowOrWorkerGlobalScope; +WorkerGlobalScope includes GlobalCrypto; +WorkerGlobalScope includes 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; - - [Func="WorkerGlobalScope::IsInAutomation", Throws] - object getJSTestingFunctions(); -}; +// WorkerGlobalScope includes FontFaceSource; diff --git a/crates/web-sys/webidls/enabled/WorkerNavigator.webidl b/crates/web-sys/webidls/enabled/WorkerNavigator.webidl index a0d2dfdce5c..1341691f914 100644 --- a/crates/web-sys/webidls/enabled/WorkerNavigator.webidl +++ b/crates/web-sys/webidls/enabled/WorkerNavigator.webidl @@ -7,11 +7,11 @@ interface WorkerNavigator { }; -WorkerNavigator implements NavigatorID; -WorkerNavigator implements NavigatorLanguage; -WorkerNavigator implements NavigatorOnLine; -WorkerNavigator implements NavigatorConcurrentHardware; -WorkerNavigator implements NavigatorStorage; +WorkerNavigator includes NavigatorID; +WorkerNavigator includes NavigatorLanguage; +WorkerNavigator includes NavigatorOnLine; +WorkerNavigator includes NavigatorConcurrentHardware; +WorkerNavigator includes NavigatorStorage; // http://wicg.github.io/netinfo/#extensions-to-the-navigator-interface [Exposed=Worker] diff --git a/crates/web-sys/webidls/enabled/WorkletGlobalScope.webidl b/crates/web-sys/webidls/enabled/WorkletGlobalScope.webidl index c4b684d2068..0cfbaef342b 100644 --- a/crates/web-sys/webidls/enabled/WorkletGlobalScope.webidl +++ b/crates/web-sys/webidls/enabled/WorkletGlobalScope.webidl @@ -10,8 +10,3 @@ [Exposed=Worklet] interface WorkletGlobalScope { }; - -// Mozilla extensions -partial interface WorkletGlobalScope { - void dump(optional DOMString str); -}; diff --git a/crates/web-sys/webidls/enabled/XPathEvaluator.webidl b/crates/web-sys/webidls/enabled/XPathEvaluator.webidl index 636048757bb..a70058d25ec 100644 --- a/crates/web-sys/webidls/enabled/XPathEvaluator.webidl +++ b/crates/web-sys/webidls/enabled/XPathEvaluator.webidl @@ -5,7 +5,7 @@ */ [Constructor] -interface XPathEvaluator { +interface mixin XPathEvaluator { [NewObject, Throws] XPathExpression createExpression(DOMString expression, optional XPathNSResolver? resolver = null); diff --git a/crates/web-sys/webidls/enabled/nsISupports.webidl b/crates/web-sys/webidls/enabled/nsISupports.webidl index 7578b9d5c94..cf6cd8f23cb 100644 --- a/crates/web-sys/webidls/enabled/nsISupports.webidl +++ b/crates/web-sys/webidls/enabled/nsISupports.webidl @@ -1,4 +1,4 @@ // `nsISupports` is a Gecko thing that can be queried if it implements some // interface. We can query anything via `JsCast`, so it is good enough to just // call it an Object. -typedef Object nsISupports; +typedef object nsISupports; diff --git a/crates/webidl/src/lib.rs b/crates/webidl/src/lib.rs index 30746f2fc36..22b4d0f7acc 100644 --- a/crates/webidl/src/lib.rs +++ b/crates/webidl/src/lib.rs @@ -215,10 +215,12 @@ impl<'src> WebidlParse<'src, ()> for weedle::InterfaceDefinition<'src> { (): (), ) -> Result<()> { if util::is_chrome_only(&self.attributes) { + info!("Skipping because of `ChromeOnly` attribute: {:?}", self); return Ok(()); } if util::is_no_interface_object(&self.attributes) { + info!("Skipping because of `NoInterfaceObject` attribute: {:?}", self); return Ok(()); } @@ -293,7 +295,7 @@ impl<'src> WebidlParse<'src, ()> for weedle::PartialInterfaceDefinition<'src> { if first_pass .interfaces .get(self.identifier.0) - .map(|interface_data| !interface_data.partial) + .map(|interface_data| interface_data.partial) .unwrap_or(true) { info!( "Partial interface {} missing non-partial interface", @@ -664,6 +666,7 @@ fn member_operation<'src>( use weedle::interface::Special; if util::is_chrome_only(attrs) { + info!("Skipping `ChromeOnly` operation: {:?}", (self_name, identifier)); return Ok(()); } @@ -691,7 +694,10 @@ fn member_operation<'src>( Special::Getter(weedle::term::Getter) => OperationId::IndexingGetter, Special::Setter(weedle::term::Setter) => OperationId::IndexingSetter, Special::Deleter(weedle::term::Deleter) => OperationId::IndexingDeleter, - Special::LegacyCaller(weedle::term::LegacyCaller) => return Ok(()), + Special::LegacyCaller(weedle::term::LegacyCaller) => { + warn!("Unsupported legacy caller: {:?}", (self_name, identifier)); + return Ok(()); + }, }; operation_ids.push(id); } diff --git a/examples/canvas/.gitignore b/examples/canvas/.gitignore new file mode 100644 index 00000000000..b2450cc7caf --- /dev/null +++ b/examples/canvas/.gitignore @@ -0,0 +1,4 @@ +package-lock.json +wasm_bindgen_canvas_demo.js +wasm_bindgen_canvas_demo_bg.js +wasm_bindgen_canvas_demo_bg.wasm diff --git a/examples/canvas/Cargo.toml b/examples/canvas/Cargo.toml new file mode 100644 index 00000000000..9012930d90a --- /dev/null +++ b/examples/canvas/Cargo.toml @@ -0,0 +1,12 @@ +[package] +name = "wasm-bindgen-canvas-demo" +version = "0.1.0" +authors = ["The wasm-bindgen Developers"] + +[lib] +crate-type = ["cdylib"] + +[dependencies] +js-sys = { path = "../../crates/js-sys" } +wasm-bindgen = { path = "../.." } +web-sys = { path = "../../crates/web-sys" } diff --git a/examples/canvas/README.md b/examples/canvas/README.md new file mode 100644 index 00000000000..a5cf37735b7 --- /dev/null +++ b/examples/canvas/README.md @@ -0,0 +1,15 @@ +# Canvas 2D Example + +This directory is an example of using the `web-sys` crate to draw on a 2D +canvas. + +You can build and run the example with: + +``` +$ ./build.sh +``` + +(or running the commands on Windows manually) + +and then opening up `http://localhost:8080/` in a web browser should show a +smiley face drawn on canvas by Rust and WebAssembly. diff --git a/examples/canvas/build.sh b/examples/canvas/build.sh new file mode 100755 index 00000000000..f9273ed4257 --- /dev/null +++ b/examples/canvas/build.sh @@ -0,0 +1,15 @@ +#!/bin/sh + +# For more coments about what's going on here, see the `hello_world` example + +set -ex +cd "$(dirname $0)" + +cargo +nightly build --target wasm32-unknown-unknown + +cargo +nightly run --manifest-path ../../crates/cli/Cargo.toml \ + --bin wasm-bindgen -- \ + ../../target/wasm32-unknown-unknown/debug/wasm_bindgen_canvas_demo.wasm --out-dir . + +npm install +npm run serve diff --git a/examples/canvas/index.html b/examples/canvas/index.html new file mode 100644 index 00000000000..c13b999e414 --- /dev/null +++ b/examples/canvas/index.html @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/examples/canvas/index.js b/examples/canvas/index.js new file mode 100644 index 00000000000..f4671805039 --- /dev/null +++ b/examples/canvas/index.js @@ -0,0 +1,5 @@ +// For more comments about what's going on here, check out the `hello_world` +// example. +import('./wasm_bindgen_canvas_demo').then(canvas => { + canvas.draw(); +}); diff --git a/examples/canvas/package.json b/examples/canvas/package.json new file mode 100644 index 00000000000..41eba8c80fc --- /dev/null +++ b/examples/canvas/package.json @@ -0,0 +1,10 @@ +{ + "scripts": { + "serve": "webpack-dev-server" + }, + "devDependencies": { + "webpack": "^4.11.1", + "webpack-cli": "^2.0.10", + "webpack-dev-server": "^3.1.0" + } +} diff --git a/examples/canvas/src/lib.rs b/examples/canvas/src/lib.rs new file mode 100755 index 00000000000..05a67b1961c --- /dev/null +++ b/examples/canvas/src/lib.rs @@ -0,0 +1,73 @@ +#![feature(use_extern_macros)] + +extern crate js_sys; +extern crate wasm_bindgen; +extern crate web_sys; + +use std::f64; +use wasm_bindgen::prelude::*; +use wasm_bindgen::JsCast; + +#[wasm_bindgen] +extern "C" { + static document: web_sys::Document; +} + +#[wasm_bindgen] +pub fn draw() { + let canvas = document.get_element_by_id("canvas").unwrap(); + let canvas: web_sys::HtmlCanvasElement = canvas + .dyn_into::() + .map_err(|_| ()) + .unwrap(); + + let context = canvas + .get_context_using_context_id("2d") + .unwrap() + .unwrap() + .dyn_into::() + .unwrap(); + + context.begin_path(); + + // Draw the outer circle. + context.arc_using_x_and_y_and_radius_and_start_angle_and_end_angle( + 75.0, + 75.0, + 50.0, + 0.0, + f64::consts::PI * 2.0, + ); + + // Draw the mouth. + context.move_to(110.0, 75.0); + context.arc_using_x_and_y_and_radius_and_start_angle_and_end_angle( + 75.0, + 75.0, + 35.0, + 0.0, + f64::consts::PI, + ); + + // Draw the left eye. + context.move_to(65.0, 65.0); + context.arc_using_x_and_y_and_radius_and_start_angle_and_end_angle( + 60.0, + 65.0, + 5.0, + 0.0, + f64::consts::PI * 2.0, + ); + + // Draw the right eye. + context.move_to(95.0, 65.0); + context.arc_using_x_and_y_and_radius_and_start_angle_and_end_angle( + 90.0, + 65.0, + 5.0, + 0.0, + f64::consts::PI * 2.0, + ); + + context.stroke(); +} diff --git a/examples/canvas/webpack.config.js b/examples/canvas/webpack.config.js new file mode 100644 index 00000000000..dce2714935e --- /dev/null +++ b/examples/canvas/webpack.config.js @@ -0,0 +1,10 @@ +const path = require('path'); + +module.exports = { + entry: './index.js', + output: { + path: path.resolve(__dirname, 'dist'), + filename: 'index.js', + }, + mode: 'development' +};