Auto merge of #12353 - Ms2ger:expose, r=jdm

Implement [Exposed].

<!-- Reviewable:start -->
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/12353)
<!-- Reviewable:end -->
This commit is contained in:
bors-servo 2016-07-12 04:35:53 -07:00 committed by GitHub
commit 6d59be17be
210 changed files with 374 additions and 249 deletions

View file

@ -1817,20 +1817,25 @@ def DOMClassTypeId(desc):
def DOMClass(descriptor):
protoList = ['PrototypeList::ID::' + proto for proto in descriptor.prototypeChain]
# Pad out the list to the right length with ID::Last so we
# guarantee that all the lists are the same length. ID::Last
# is never the ID of any prototype, so it's safe to use as
# padding.
protoList.extend(['PrototypeList::ID::Last'] * (descriptor.config.maxProtoChainLength - len(protoList)))
prototypeChainString = ', '.join(protoList)
heapSizeOf = 'heap_size_of_raw_self_and_children::<%s>' % descriptor.interface.identifier.name
return """\
protoList = ['PrototypeList::ID::' + proto for proto in descriptor.prototypeChain]
# Pad out the list to the right length with ID::Last so we
# guarantee that all the lists are the same length. ID::Last
# is never the ID of any prototype, so it's safe to use as
# padding.
protoList.extend(['PrototypeList::ID::Last'] * (descriptor.config.maxProtoChainLength - len(protoList)))
prototypeChainString = ', '.join(protoList)
heapSizeOf = 'heap_size_of_raw_self_and_children::<%s>' % descriptor.interface.identifier.name
if descriptor.isGlobal():
globals_ = camel_to_upper_snake(descriptor.name)
else:
globals_ = 'EMPTY'
return """\
DOMClass {
interface_chain: [ %s ],
type_id: %s,
heap_size_of: %s as unsafe fn(_) -> _,
}""" % (prototypeChainString, DOMClassTypeId(descriptor), heapSizeOf)
global: InterfaceObjectMap::%s,
}""" % (prototypeChainString, DOMClassTypeId(descriptor), heapSizeOf, globals_)
class CGDOMJSClass(CGThing):
@ -2143,8 +2148,8 @@ class CGAbstractMethod(CGThing):
docs is None or documentation for the method in a string.
"""
def __init__(self, descriptor, name, returnType, args, inline=False,
alwaysInline=False, extern=False, pub=False, templateArgs=None,
unsafe=False, docs=None, doesNotPanic=False):
alwaysInline=False, extern=False, unsafe_fn=False, pub=False,
templateArgs=None, unsafe=False, docs=None, doesNotPanic=False):
CGThing.__init__(self)
self.descriptor = descriptor
self.name = name
@ -2152,6 +2157,7 @@ class CGAbstractMethod(CGThing):
self.args = args
self.alwaysInline = alwaysInline
self.extern = extern
self.unsafe_fn = extern or unsafe_fn
self.templateArgs = templateArgs
self.pub = pub
self.unsafe = unsafe
@ -2178,13 +2184,15 @@ class CGAbstractMethod(CGThing):
if self.alwaysInline:
decorators.append('#[inline]')
if self.extern:
decorators.append('unsafe')
decorators.append('extern')
if self.pub:
decorators.append('pub')
if self.unsafe_fn:
decorators.append('unsafe')
if self.extern:
decorators.append('extern')
if not decorators:
return ''
return ' '.join(decorators) + ' '
@ -2230,45 +2238,37 @@ match result {
class CGConstructorEnabled(CGAbstractMethod):
"""
A method for testing whether we should be exposing this interface
object or navigator property. This can perform various tests
depending on what conditions are specified on the interface.
A method for testing whether we should be exposing this interface object.
This can perform various tests depending on what conditions are specified
on the interface.
"""
def __init__(self, descriptor):
CGAbstractMethod.__init__(self, descriptor,
'ConstructorEnabled', 'bool',
[Argument("*mut JSContext", "aCx"),
Argument("HandleObject", "aObj")])
Argument("HandleObject", "aObj")],
unsafe_fn=True)
def definition_body(self):
body = CGList([], "\n")
conditions = []
iface = self.descriptor.interface
bits = " | ".join(sorted(
"InterfaceObjectMap::" + camel_to_upper_snake(i) for i in iface.exposureSet
))
conditions.append("is_exposed_in(aObj, %s)" % bits)
pref = iface.getExtendedAttribute("Pref")
if pref:
assert isinstance(pref, list) and len(pref) == 1
conditions.append('PREFS.get("%s").as_boolean().unwrap_or(false)' % pref[0])
func = iface.getExtendedAttribute("Func")
if func:
assert isinstance(func, list) and len(func) == 1
conditions.append("%s(aCx, aObj)" % func[0])
# We should really have some conditions
assert len(body) or len(conditions)
conditionsWrapper = ""
if len(conditions):
conditionsWrapper = CGWrapper(CGList((CGGeneric(cond) for cond in conditions),
" &&\n"),
pre="return ",
post=";\n",
reindent=True)
else:
conditionsWrapper = CGGeneric("return true;\n")
body.append(conditionsWrapper)
return body
return CGList((CGGeneric(cond) for cond in conditions), " &&\n")
def CreateBindingJSObject(descriptor, parent=None):
@ -2806,27 +2806,27 @@ class CGDefineDOMInterfaceMethod(CGAbstractMethod):
Argument('*mut JSContext', 'cx'),
Argument('HandleObject', 'global'),
]
CGAbstractMethod.__init__(self, descriptor, 'DefineDOMInterface', 'void', args, pub=True)
CGAbstractMethod.__init__(self, descriptor, 'DefineDOMInterface',
'void', args, pub=True, unsafe_fn=True)
def define(self):
return CGAbstractMethod.define(self)
def definition_body(self):
def getCheck(desc):
if not desc.isExposedConditionally():
return ""
else:
return "if !ConstructorEnabled(cx, global) { return; }"
if self.descriptor.interface.isCallback():
function = "GetConstructorObject"
else:
function = "GetProtoObject"
return CGGeneric("""\
assert!(!global.get().is_null());
%s
if !ConstructorEnabled(cx, global) {
return;
}
rooted!(in(cx) let mut proto = ptr::null_mut());
%s(cx, global, proto.handle_mut());
assert!(!proto.is_null());""" % (getCheck(self.descriptor), function))
assert!(!proto.is_null());""" % (function,))
def needCx(returnType, arguments, considerTypes):
@ -5140,8 +5140,7 @@ class CGDescriptor(CGThing):
if descriptor.interface.hasInterfaceObject():
cgThings.append(CGDefineDOMInterfaceMethod(descriptor))
if descriptor.isExposedConditionally():
cgThings.append(CGConstructorEnabled(descriptor))
cgThings.append(CGConstructorEnabled(descriptor))
if descriptor.proxy:
cgThings.append(CGDefineProxyHandler(descriptor))
@ -5562,6 +5561,7 @@ class CGBindingRoot(CGThing):
'js::glue::AppendToAutoIdVector',
'js::rust::{GCMethods, define_methods, define_properties}',
'dom::bindings',
'dom::bindings::codegen::InterfaceObjectMap',
'dom::bindings::global::{GlobalRef, global_root_from_object, global_root_from_reflector}',
'dom::bindings::interface::{InterfaceConstructorBehavior, NonCallbackInterfaceObjectClass}',
'dom::bindings::interface::{create_callback_interface_object, create_interface_prototype_object}',
@ -5569,6 +5569,7 @@ class CGBindingRoot(CGThing):
'dom::bindings::interface::{define_guarded_methods, define_guarded_properties}',
'dom::bindings::interface::{ConstantSpec, NonNullJSNative}',
'dom::bindings::interface::ConstantVal::{IntVal, UintVal}',
'dom::bindings::interface::is_exposed_in',
'dom::bindings::js::{JS, Root, RootedReference}',
'dom::bindings::js::{OptionalRootedReference}',
'dom::bindings::reflector::{Reflectable}',
@ -6222,6 +6223,10 @@ class CallbackSetter(CallbackMember):
return None
def camel_to_upper_snake(s):
return "_".join(m.group(0).upper() for m in re.finditer("[A-Z][a-z]*", s))
class GlobalGenRoots():
"""
Roots for global codegen.
@ -6239,6 +6244,18 @@ class GlobalGenRoots():
]
imports = CGList([CGGeneric("use %s;" % mod) for mod in mods], "\n")
global_descriptors = config.getDescriptors(isGlobal=True)
flags = [("EMPTY", 0)]
flags.extend(
(camel_to_upper_snake(d.name), 2 ** idx)
for (idx, d) in enumerate(global_descriptors)
)
global_flags = CGWrapper(CGIndenter(CGList([
CGGeneric("const %s = %#x," % args)
for args in flags
], "\n")), pre="pub flags Globals: u8 {\n", post="\n}")
globals_ = CGWrapper(CGIndenter(global_flags), pre="bitflags! {\n", post="\n}")
pairs = []
for d in config.getDescriptors(hasInterfaceObject=True):
binding = toBindingNamespace(d.name)
@ -6247,10 +6264,10 @@ class GlobalGenRoots():
pairs.append((ctor.identifier.name, binding))
pairs.sort(key=operator.itemgetter(0))
mappings = [
CGGeneric('b"%s" => codegen::Bindings::%s::DefineDOMInterface as fn(_, _),' % pair)
CGGeneric('b"%s" => codegen::Bindings::%s::DefineDOMInterface as unsafe fn(_, _),' % pair)
for pair in pairs
]
mapType = "phf::Map<&'static [u8], fn(*mut JSContext, HandleObject)>"
mapType = "phf::Map<&'static [u8], unsafe fn(*mut JSContext, HandleObject)>"
phf = CGWrapper(
CGIndenter(CGList(mappings, "\n")),
pre="pub static MAP: %s = phf_map! {\n" % mapType,
@ -6258,7 +6275,7 @@ class GlobalGenRoots():
return CGList([
CGGeneric(AUTOGENERATED_WARNING_COMMENT),
CGList([imports, phf], "\n\n")
CGList([imports, globals_, phf], "\n\n")
])
@staticmethod

View file

@ -85,6 +85,8 @@ class Configuration:
getter = lambda x: x.interface.isCallback()
elif key == 'isJSImplemented':
getter = lambda x: x.interface.isJSImplemented()
elif key == 'isGlobal':
getter = lambda x: x.isGlobal()
else:
getter = lambda x: getattr(x, key)
curr = filter(lambda x: getter(x) == val, curr)
@ -367,8 +369,8 @@ class Descriptor(DescriptorProvider):
Returns true if this is the primary interface for a global object
of some sort.
"""
return (self.interface.getExtendedAttribute("Global") or
self.interface.getExtendedAttribute("PrimaryGlobal"))
return bool(self.interface.getExtendedAttribute("Global") or
self.interface.getExtendedAttribute("PrimaryGlobal"))
# Some utility methods

View file

@ -1239,12 +1239,6 @@ class IDLInterface(IDLObjectWithScope, IDLExposureMixins):
alias,
[member.location, m.location])
if (self.getExtendedAttribute("Pref") and
self._exposureGlobalNames != set([self.parentScope.primaryGlobalName])):
raise WebIDLError("[Pref] used on an interface that is not %s-only" %
self.parentScope.primaryGlobalName,
[self.location])
for attribute in ["CheckAnyPermissions", "CheckAllPermissions"]:
if (self.getExtendedAttribute(attribute) and
self._exposureGlobalNames != set([self.parentScope.primaryGlobalName])):
@ -3459,12 +3453,6 @@ class IDLInterfaceMember(IDLObjectWithIdentifier, IDLExposureMixins):
IDLExposureMixins.finish(self, scope)
def validate(self):
if (self.getExtendedAttribute("Pref") and
self.exposureSet != set([self._globalScope.primaryGlobalName])):
raise WebIDLError("[Pref] used on an interface member that is not "
"%s-only" % self._globalScope.primaryGlobalName,
[self.location])
for attribute in ["CheckAnyPermissions", "CheckAllPermissions"]:
if (self.getExtendedAttribute(attribute) and
self.exposureSet != set([self._globalScope.primaryGlobalName])):

View file

@ -0,0 +1,28 @@
--- WebIDL.py
+++ WebIDL.py
@@ -1239,12 +1239,6 @@ class IDLInterface(IDLObjectWithScope, IDLExposureMixins):
alias,
[member.location, m.location])
- if (self.getExtendedAttribute("Pref") and
- self._exposureGlobalNames != set([self.parentScope.primaryGlobalName])):
- raise WebIDLError("[Pref] used on an interface that is not %s-only" %
- self.parentScope.primaryGlobalName,
- [self.location])
-
for attribute in ["CheckAnyPermissions", "CheckAllPermissions"]:
if (self.getExtendedAttribute(attribute) and
self._exposureGlobalNames != set([self.parentScope.primaryGlobalName])):
@@ -3459,12 +3453,6 @@ class IDLInterfaceMember(IDLObjectWithIdentifier, IDLExposureMixins):
IDLExposureMixins.finish(self, scope)
def validate(self):
- if (self.getExtendedAttribute("Pref") and
- self.exposureSet != set([self._globalScope.primaryGlobalName])):
- raise WebIDLError("[Pref] used on an interface member that is not "
- "%s-only" % self._globalScope.primaryGlobalName,
- [self.location])
-
for attribute in ["CheckAnyPermissions", "CheckAllPermissions"]:
if (self.getExtendedAttribute(attribute) and
self.exposureSet != set([self._globalScope.primaryGlobalName])):

View file

@ -1,6 +1,7 @@
wget https://mxr.mozilla.org/mozilla-central/source/dom/bindings/parser/WebIDL.py?raw=1 -O WebIDL.py
patch < abstract.patch
patch < debug.patch
patch < pref-main-thread.patch
wget https://hg.mozilla.org/mozilla-central/archive/tip.tar.gz/dom/bindings/parser/tests/ -O tests.tar.gz
rm -r tests

View file

@ -4,6 +4,7 @@
//! Machinery to initialise interface prototype objects and interface objects.
use dom::bindings::codegen::InterfaceObjectMap::Globals;
use dom::bindings::codegen::PrototypeList;
use dom::bindings::conversions::get_dom_class;
use dom::bindings::guard::Guard;
@ -484,3 +485,11 @@ unsafe extern "C" fn non_new_constructor(
throw_type_error(cx, "This constructor needs to be called with `new`.");
false
}
/// Returns whether an interface with exposure set given by `globals` should
/// be exposed in the global object `obj`.
pub unsafe fn is_exposed_in(object: HandleObject, globals: Globals) -> bool {
let unwrapped = UncheckedUnwrapObject(object.get(), /* stopAtWindowProxy = */ 0);
let dom_class = get_dom_class(unwrapped).unwrap();
globals.contains(dom_class.global)
}

View file

@ -93,6 +93,9 @@ pub struct DOMClass {
/// The HeapSizeOf function wrapper for that interface.
pub heap_size_of: unsafe fn(*const c_void) -> usize,
/// The `Globals` flag for this global interface, if any.
pub global: InterfaceObjectMap::Globals,
}
unsafe impl Sync for DOMClass {}

View file

@ -7,6 +7,7 @@
*
*/
[Exposed=(Window,Worker)]
interface Attr {
[Constant]
readonly attribute DOMString? namespaceURI;

View file

@ -6,6 +6,7 @@
* https://html.spec.whatwg.org/multipage/#beforeunloadevent
*/
[Exposed=(Window,Worker)]
interface BeforeUnloadEvent : Event {
attribute DOMString returnValue;
};

View file

@ -6,7 +6,7 @@
[Constructor(optional sequence<BlobPart> blobParts,
optional BlobPropertyBag options),
Exposed=Window/*,Worker*/]
Exposed=(Window,Worker)]
interface Blob {
readonly attribute unsigned long long size;

View file

@ -15,7 +15,7 @@ dictionary RequestDeviceOptions {
sequence<BluetoothServiceUUID> optionalServices /*= []*/;
};
[Pref="dom.bluetooth.enabled"]
[Pref="dom.bluetooth.enabled", Exposed=(Window,Worker)]
interface Bluetooth {
// Promise<BluetoothDevice> requestDevice(RequestDeviceOptions options);
[Throws]

View file

@ -12,7 +12,7 @@ interface BluetoothServiceDataMap {
readonly maplike<UUID, DataView>;
};*/
[Pref="dom.bluetooth.enabled"]
[Pref="dom.bluetooth.enabled", Exposed=(Window,Worker)]
interface BluetoothAdvertisingData {
readonly attribute unsigned short? appearance;
readonly attribute byte? txPower;

View file

@ -4,7 +4,7 @@
// https://webbluetoothcg.github.io/web-bluetooth/#characteristicproperties
[Pref="dom.bluetooth.enabled"]
[Pref="dom.bluetooth.enabled", Exposed=(Window,Worker)]
interface BluetoothCharacteristicProperties {
readonly attribute boolean broadcast;
readonly attribute boolean read;

View file

@ -4,7 +4,7 @@
// https://webbluetoothcg.github.io/web-bluetooth/#bluetoothdevice
[Pref="dom.bluetooth.enabled"]
[Pref="dom.bluetooth.enabled", Exposed=(Window,Worker)]
interface BluetoothDevice {
readonly attribute DOMString id;
readonly attribute DOMString? name;

View file

@ -4,7 +4,7 @@
// https://webbluetoothcg.github.io/web-bluetooth/#bluetoothremotegattcharacteristic
[Pref="dom.bluetooth.enabled"]
[Pref="dom.bluetooth.enabled", Exposed=(Window,Worker)]
interface BluetoothRemoteGATTCharacteristic {
readonly attribute BluetoothRemoteGATTService service;
readonly attribute DOMString uuid;

View file

@ -4,7 +4,7 @@
// http://webbluetoothcg.github.io/web-bluetooth/#bluetoothremotegattdescriptor
[Pref="dom.bluetooth.enabled"]
[Pref="dom.bluetooth.enabled", Exposed=(Window,Worker)]
interface BluetoothRemoteGATTDescriptor {
readonly attribute BluetoothRemoteGATTCharacteristic characteristic;
readonly attribute DOMString uuid;

View file

@ -4,7 +4,7 @@
//https://webbluetoothcg.github.io/web-bluetooth/#bluetoothremotegattserver
[Pref="dom.bluetooth.enabled"]
[Pref="dom.bluetooth.enabled", Exposed=(Window,Worker)]
interface BluetoothRemoteGATTServer {
readonly attribute BluetoothDevice device;
readonly attribute boolean connected;

View file

@ -4,7 +4,7 @@
// https://webbluetoothcg.github.io/web-bluetooth/#bluetoothremotegattservice
[Pref="dom.bluetooth.enabled"]
[Pref="dom.bluetooth.enabled", Exposed=(Window,Worker)]
interface BluetoothRemoteGATTService {
readonly attribute BluetoothDevice device;
readonly attribute DOMString uuid;

View file

@ -4,7 +4,7 @@
// https://webbluetoothcg.github.io/web-bluetooth/#bluetoothuuid
[Pref="dom.bluetooth.enabled"]
[Pref="dom.bluetooth.enabled", Exposed=(Window,Worker)]
interface BluetoothUUID {
[Throws]
static UUID getService(BluetoothServiceUUID name);

View file

@ -19,7 +19,7 @@ callback BrowserElementNextPaintEventCallback = void ();
// DOMString? origin;
//};
[NoInterfaceObject]
[NoInterfaceObject, Exposed=(Window,Worker)]
interface BrowserElement {
};
@ -104,44 +104,37 @@ dictionary BrowserElementVisibilityChangeEventDetail {
BrowserElement implements BrowserElementCommon;
BrowserElement implements BrowserElementPrivileged;
[NoInterfaceObject]
[NoInterfaceObject, Exposed=(Window,Worker)]
interface BrowserElementCommon {
[Throws,
Pref="dom.mozbrowser.enabled",
CheckAnyPermissions="browser embed-widgets"]
Pref="dom.mozbrowser.enabled"]
void setVisible(boolean visible);
[Throws,
Pref="dom.mozbrowser.enabled",
CheckAnyPermissions="browser embed-widgets"]
Pref="dom.mozbrowser.enabled"]
boolean getVisible();
//[Throws,
// Pref="dom.mozBrowserFramesEnabled",
// CheckAnyPermissions="browser embed-widgets"]
// Pref="dom.mozBrowserFramesEnabled"]
//void setActive(boolean active);
//[Throws,
// Pref="dom.mozBrowserFramesEnabled",
// CheckAnyPermissions="browser embed-widgets"]
// Pref="dom.mozBrowserFramesEnabled"]
//boolean getActive();
//[Throws,
// Pref="dom.mozBrowserFramesEnabled",
// CheckAnyPermissions="browser embed-widgets"]
// Pref="dom.mozBrowserFramesEnabled"]
//void addNextPaintListener(BrowserElementNextPaintEventCallback listener);
//[Throws,
// Pref="dom.mozBrowserFramesEnabled",
// CheckAnyPermissions="browser embed-widgets"]
// Pref="dom.mozBrowserFramesEnabled"]
//void removeNextPaintListener(BrowserElementNextPaintEventCallback listener);
};
[NoInterfaceObject]
[NoInterfaceObject, Exposed=(Window,Worker)]
interface BrowserElementPrivileged {
//[Throws,
// Pref="dom.mozBrowserFramesEnabled",
// CheckAnyPermissions="browser"]
// Pref="dom.mozBrowserFramesEnabled"]
//void sendMouseEvent(DOMString type,
// unsigned long x,
// unsigned long y,
@ -151,8 +144,7 @@ interface BrowserElementPrivileged {
//[Throws,
// Pref="dom.mozBrowserFramesEnabled",
// Func="TouchEvent::PrefEnabled",
// CheckAnyPermissions="browser"]
// Func="TouchEvent::PrefEnabled"]
//void sendTouchEvent(DOMString type,
// sequence<unsigned long> identifiers,
// sequence<long> x,
@ -177,71 +169,58 @@ interface BrowserElementPrivileged {
void stop();
//[Throws,
// Pref="dom.mozBrowserFramesEnabled",
// CheckAnyPermissions="browser"]
// Pref="dom.mozBrowserFramesEnabled"]
//DOMRequest download(DOMString url,
// optional BrowserElementDownloadOptions options);
//[Throws,
// Pref="dom.mozBrowserFramesEnabled",
// CheckAnyPermissions="browser"]
// Pref="dom.mozBrowserFramesEnabled"]
//DOMRequest purgeHistory();
//[Throws,
// Pref="dom.mozBrowserFramesEnabled",
// CheckAnyPermissions="browser"]
// Pref="dom.mozBrowserFramesEnabled"]
//DOMRequest getScreenshot([EnforceRange] unsigned long width,
// [EnforceRange] unsigned long height,
// optional DOMString mimeType="");
//[Throws,
// Pref="dom.mozBrowserFramesEnabled",
// CheckAnyPermissions="browser"]
// Pref="dom.mozBrowserFramesEnabled"]
//void zoom(float zoom);
//[Throws,
// Pref="dom.mozBrowserFramesEnabled",
// CheckAnyPermissions="browser"]
// Pref="dom.mozBrowserFramesEnabled"]
//DOMRequest getCanGoBack();
//[Throws,
// Pref="dom.mozBrowserFramesEnabled",
// CheckAnyPermissions="browser"]
// Pref="dom.mozBrowserFramesEnabled"]
//DOMRequest getCanGoForward();
//[Throws,
// Pref="dom.mozBrowserFramesEnabled",
// CheckAnyPermissions="browser"]
// Pref="dom.mozBrowserFramesEnabled"]
//DOMRequest getContentDimensions();
//[Throws,
// Pref="dom.mozBrowserFramesEnabled",
// CheckAllPermissions="browser input-manage"]
// Pref="dom.mozBrowserFramesEnabled"]
//DOMRequest setInputMethodActive(boolean isActive);
//[Throws,
// Pref="dom.mozBrowserFramesEnabled",
// CheckAllPermissions="browser nfc-manager"]
// Pref="dom.mozBrowserFramesEnabled"]
//void setNFCFocus(boolean isFocus);
//[Throws,
// Pref="dom.mozBrowserFramesEnabled",
// CheckAnyPermissions="browser"]
// Pref="dom.mozBrowserFramesEnabled"]
//void findAll(DOMString searchString, BrowserFindCaseSensitivity caseSensitivity);
//[Throws,
// Pref="dom.mozBrowserFramesEnabled",
// CheckAnyPermissions="browser"]
// Pref="dom.mozBrowserFramesEnabled"]
//void findNext(BrowserFindDirection direction);
//[Throws,
// Pref="dom.mozBrowserFramesEnabled",
// CheckAnyPermissions="browser"]
// Pref="dom.mozBrowserFramesEnabled"]
//void clearMatch();
//[Throws,
// Pref="dom.mozBrowserFramesEnabled",
// CheckAllPermissions="browser browser:universalxss"]
// Pref="dom.mozBrowserFramesEnabled"]
//DOMRequest executeScript(DOMString script,
// optional BrowserElementExecuteScriptOptions options);

View file

@ -6,7 +6,7 @@
* http://dev.w3.org/csswg/cssom/#the-css-interface
*/
[Abstract]
[Abstract, Exposed=(Window,Worker)]
interface CSS {
[Throws]
static DOMString escape(DOMString ident);

View file

@ -8,6 +8,7 @@
* Copyright © 2013 W3C® (MIT, ERCIM, Keio, Beihang), All Rights Reserved.
*/
[Exposed=(Window,Worker)]
interface CSSStyleDeclaration {
[SetterThrows]
attribute DOMString cssText;

View file

@ -3,7 +3,7 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
// https://html.spec.whatwg.org/multipage/#canvasgradient
// [Exposed=(Window,Worker)]
[Exposed=(Window,Worker)]
interface CanvasGradient {
// opaque object
[Throws]

View file

@ -4,6 +4,7 @@
// https://html.spec.whatwg.org/multipage/#canvaspattern
[Exposed=(Window,Worker)]
interface CanvasPattern {
//void setTransform(SVGMatrix matrix);
};

View file

@ -11,7 +11,8 @@ typedef (HTMLImageElement or
CanvasRenderingContext2D /* or
ImageBitmap */) CanvasImageSource;
//[Constructor(optional unsigned long width, unsigned long height), Exposed=Window,Worker]
//[Constructor(optional unsigned long width, unsigned long height)]
[Exposed=(Window,Worker)]
interface CanvasRenderingContext2D {
// back-reference to the canvas
@ -41,14 +42,14 @@ CanvasRenderingContext2D implements CanvasPathDrawingStyles;
CanvasRenderingContext2D implements CanvasTextDrawingStyles;
CanvasRenderingContext2D implements CanvasPath;
[NoInterfaceObject]//,Exposed=(Window,Worker)]
[NoInterfaceObject, Exposed=(Window,Worker)]
interface CanvasState {
// state
void save(); // push state on state stack
void restore(); // pop state stack and restore state
};
[NoInterfaceObject]//,Exposed=(Window,Worker)]
[NoInterfaceObject, Exposed=(Window,Worker)]
interface CanvasTransform {
// transformations (default transform is the identity matrix)
void scale(unrestricted double x, unrestricted double y);
@ -72,21 +73,21 @@ interface CanvasTransform {
void resetTransform();
};
[NoInterfaceObject]//,Exposed=(Window,Worker)]
[NoInterfaceObject, Exposed=(Window,Worker)]
interface CanvasCompositing {
// compositing
attribute unrestricted double globalAlpha; // (default 1.0)
attribute DOMString globalCompositeOperation; // (default source-over)
};
[NoInterfaceObject]//,Exposed=(Window,Worker)]
[NoInterfaceObject, Exposed=(Window,Worker)]
interface CanvasImageSmoothing {
// image smoothing
attribute boolean imageSmoothingEnabled; // (default true)
// attribute ImageSmoothingQuality imageSmoothingQuality; // (default low)
};
[NoInterfaceObject]//,Exposed=(Window,Worker)]
[NoInterfaceObject, Exposed=(Window,Worker)]
interface CanvasFillStrokeStyles {
// colours and styles (see also the CanvasDrawingStyles interface)
@ -99,7 +100,7 @@ interface CanvasFillStrokeStyles {
CanvasPattern createPattern(CanvasImageSource image, [TreatNullAs=EmptyString] DOMString repetition);
};
[NoInterfaceObject]//,Exposed=(Window,Worker)]
[NoInterfaceObject, Exposed=(Window,Worker)]
interface CanvasShadowStyles {
// shadows
attribute unrestricted double shadowOffsetX; // (default 0)
@ -108,7 +109,7 @@ interface CanvasShadowStyles {
attribute DOMString shadowColor; // (default transparent black)
};
[NoInterfaceObject]//,Exposed=(Window,Worker)]
[NoInterfaceObject, Exposed=(Window,Worker)]
interface CanvasRect {
// rects
//[LenientFloat]
@ -119,7 +120,7 @@ interface CanvasRect {
void strokeRect(unrestricted double x, unrestricted double y, unrestricted double w, unrestricted double h);
};
[NoInterfaceObject]//,Exposed=(Window,Worker)]
[NoInterfaceObject, Exposed=(Window,Worker)]
interface CanvasDrawPath {
// path API (see also CanvasPathMethods)
void beginPath();
@ -142,12 +143,12 @@ interface CanvasDrawPath {
//boolean isPointInStroke(Path2D path, unrestricted double x, unrestricted double y);
};
[NoInterfaceObject]//,Exposed=(Window,Worker)]
[NoInterfaceObject, Exposed=(Window,Worker)]
interface CanvasUserInterface {
// TODO?
};
[NoInterfaceObject]//,Exposed=(Window,Worker)]
[NoInterfaceObject, Exposed=(Window,Worker)]
interface CanvasText {
// text (see also the CanvasDrawingStyles interface)
//void fillText(DOMString text, unrestricted double x, unrestricted double y,
@ -157,7 +158,7 @@ interface CanvasText {
//TextMetrics measureText(DOMString text);
};
[NoInterfaceObject]//,Exposed=(Window,Worker)]
[NoInterfaceObject, Exposed=(Window,Worker)]
interface CanvasDrawImage {
// drawing images
[Throws]
@ -172,7 +173,7 @@ interface CanvasDrawImage {
unrestricted double dw, unrestricted double dh);
};
[NoInterfaceObject]//,Exposed=(Window,Worker)]
[NoInterfaceObject, Exposed=(Window,Worker)]
interface CanvasHitRegion {
// hit regions
//void addHitRegion(optional HitRegionOptions options);
@ -180,7 +181,7 @@ interface CanvasHitRegion {
//void clearHitRegions();
};
[NoInterfaceObject]//,Exposed=(Window,Worker)]
[NoInterfaceObject, Exposed=(Window,Worker)]
interface CanvasImageData {
// pixel manipulation
[Throws]
@ -205,7 +206,7 @@ enum CanvasTextAlign { "start", "end", "left", "right", "center" };
enum CanvasTextBaseline { "top", "hanging", "middle", "alphabetic", "ideographic", "bottom" };
enum CanvasDirection { "ltr", "rtl", "inherit" };
[NoInterfaceObject]
[NoInterfaceObject, Exposed=(Window,Worker)]
interface CanvasPathDrawingStyles {
// line caps/joins
attribute unrestricted double lineWidth; // (default 1)
@ -219,7 +220,7 @@ interface CanvasPathDrawingStyles {
//attribute unrestricted double lineDashOffset;
};
[NoInterfaceObject]
[NoInterfaceObject, Exposed=(Window,Worker)]
interface CanvasTextDrawingStyles {
// text
//attribute DOMString font; // (default 10px sans-serif)
@ -229,7 +230,7 @@ interface CanvasTextDrawingStyles {
//attribute CanvasDirection direction; // "ltr", "rtl", "inherit" (default: "inherit")
};
[NoInterfaceObject]
[NoInterfaceObject, Exposed=(Window,Worker)]
interface CanvasPath {
// shared path API methods
void closePath();

View file

@ -9,7 +9,7 @@
* liability, trademark and document use rules apply.
*/
[Abstract]
[Abstract, Exposed=(Window,Worker)]
interface CharacterData : Node {
[Pure, TreatNullAs=EmptyString] attribute DOMString data;
[Pure] readonly attribute unsigned long length;

View file

@ -6,7 +6,7 @@
* https://dom.spec.whatwg.org/#interface-childnode
*/
[NoInterfaceObject]
[NoInterfaceObject, Exposed=(Window,Worker)]
interface ChildNode {
[Throws, Unscopable]
void before((Node or DOMString)... nodes);
@ -18,7 +18,7 @@ interface ChildNode {
void remove();
};
[NoInterfaceObject]
[NoInterfaceObject, Exposed=(Window,Worker)]
interface NonDocumentTypeChildNode {
[Pure]
readonly attribute Element? previousElementSibling;

View file

@ -4,8 +4,7 @@
// https://slightlyoff.github.io/ServiceWorker/spec/service_worker/#client
// [Exposed=ServiceWorker]
[Pref="dom.serviceworker.enabled"]
[Pref="dom.serviceworker.enabled", Exposed=(Window,Worker)]
interface Client {
readonly attribute USVString url;
readonly attribute FrameType frameType;

View file

@ -3,7 +3,7 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
//https://html.spec.whatwg.org/multipage/#the-closeevent-interfaces
[Constructor(DOMString type, optional CloseEventInit eventInitDict)/*, Exposed=(Window,Worker)*/]
[Constructor(DOMString type, optional CloseEventInit eventInitDict), Exposed=(Window,Worker)]
interface CloseEvent : Event {
readonly attribute boolean wasClean;
readonly attribute unsigned short code;

View file

@ -9,6 +9,6 @@
* liability, trademark and document use rules apply.
*/
[Constructor(optional DOMString data = "")]
[Constructor(optional DOMString data = ""), Exposed=(Window,Worker)]
interface Comment : CharacterData {
};

View file

@ -9,6 +9,7 @@
* © Copyright 2014 Mozilla Foundation.
*/
[Exposed=(Window,Worker)]
interface Console {
// These should be DOMString message, DOMString message2, ...
void log(DOMString... messages);

View file

@ -7,7 +7,7 @@
*
*/
[NoInterfaceObject]
[NoInterfaceObject, Exposed=(Window,Worker)]
interface GlobalCrypto {
readonly attribute Crypto crypto;
};
@ -15,7 +15,7 @@ interface GlobalCrypto {
Window implements GlobalCrypto;
WorkerGlobalScope implements GlobalCrypto;
//[Exposed=(Window,Worker)]
[Exposed=(Window,Worker)]
interface Crypto {
//readonly attribute SubtleCrypto subtle;
//ArrayBufferView getRandomValues(ArrayBufferView array);

View file

@ -13,8 +13,8 @@
* http://www.openwebfoundation.org/legal/the-owf-1-0-agreements/owfa-1-0.
*/
[Constructor(DOMString type, optional CustomEventInit eventInitDict)/*,
Exposed=Window,Worker*/]
[Constructor(DOMString type, optional CustomEventInit eventInitDict),
Exposed=(Window,Worker)]
interface CustomEvent : Event {
readonly attribute any detail;

View file

@ -7,7 +7,7 @@
* https://heycam.github.io/webidl/#es-DOMException-constructor-object
*/
[ExceptionClass]
[ExceptionClass, Exposed=(Window,Worker)]
interface DOMException {
const unsigned short INDEX_SIZE_ERR = 1;
const unsigned short DOMSTRING_SIZE_ERR = 2; // historical

View file

@ -10,7 +10,7 @@
* related or neighboring rights to this work.
*/
// [Exposed=Window]
[Exposed=(Window,Worker)]
interface DOMImplementation {
[NewObject, Throws]
DocumentType createDocumentType(DOMString qualifiedName, DOMString publicId,

View file

@ -12,7 +12,7 @@
// http://dev.w3.org/fxtf/geometry/Overview.html#dompoint
[Constructor(optional unrestricted double x = 0, optional unrestricted double y = 0,
optional unrestricted double z = 0, optional unrestricted double w = 1),
/*Exposed=(Window,Worker)*/]
Exposed=(Window,Worker)]
interface DOMPoint : DOMPointReadOnly {
inherit attribute unrestricted double x;
inherit attribute unrestricted double y;

View file

@ -12,7 +12,7 @@
// http://dev.w3.org/fxtf/geometry/Overview.html#dompointreadonly
[Constructor(optional unrestricted double x = 0, optional unrestricted double y = 0,
optional unrestricted double z = 0, optional unrestricted double w = 1),
/*Exposed=(Window,Worker)*/]
Exposed=(Window,Worker)]
interface DOMPointReadOnly {
readonly attribute unrestricted double x;
readonly attribute unrestricted double y;

View file

@ -12,7 +12,7 @@
[Constructor(optional DOMPointInit p1, optional DOMPointInit p2,
optional DOMPointInit p3, optional DOMPointInit p4),
/*Exposed=(Window,Worker)*/]
Exposed=(Window,Worker)]
interface DOMQuad {
[NewObject] static DOMQuad fromRect(optional DOMRectInit other);
[NewObject] static DOMQuad fromQuad(optional DOMQuadInit other);

View file

@ -4,7 +4,7 @@
[Constructor(optional unrestricted double x = 0, optional unrestricted double y = 0,
optional unrestricted double width = 0, optional unrestricted double height = 0),
/*Exposed=(Window,Worker)*/]
Exposed=(Window,Worker)]
// https://drafts.fxtf.org/geometry/#domrect
interface DOMRect : DOMRectReadOnly {
inherit attribute unrestricted double x;

View file

@ -3,8 +3,8 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
// http://dev.w3.org/fxtf/geometry/#DOMRectList
[NoInterfaceObject/*,
ArrayClass*/]
[NoInterfaceObject, Exposed=(Window,Worker)]
//[ArrayClass]
interface DOMRectList {
readonly attribute unsigned long length;
getter DOMRect? item(unsigned long index);

View file

@ -4,7 +4,7 @@
[Constructor(optional unrestricted double x = 0, optional unrestricted double y = 0,
optional unrestricted double width = 0, optional unrestricted double height = 0),
/*Exposed=(Window,Worker)*/]
Exposed=(Window,Worker)]
// https://drafts.fxtf.org/geometry/#domrect
interface DOMRectReadOnly {
// [NewObject] static DOMRectReadOnly fromRect(optional DOMRectInit other);

View file

@ -3,7 +3,7 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
// https://html.spec.whatwg.org/multipage/#the-domstringmap-interface
[OverrideBuiltins]
[OverrideBuiltins, Exposed=(Window,Worker)]
interface DOMStringMap {
getter DOMString (DOMString name);
[Throws]

View file

@ -3,6 +3,7 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
// https://dom.spec.whatwg.org/#domtokenlist
[Exposed=(Window,Worker)]
interface DOMTokenList {
[Pure]
readonly attribute unsigned long length;

View file

@ -3,7 +3,7 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
// https://html.spec.whatwg.org/multipage/#dedicatedworkerglobalscope
[Global/*=Worker,DedicatedWorker*/]
[Global=(Worker,DedicatedWorker), Exposed=DedicatedWorker]
/*sealed*/ interface DedicatedWorkerGlobalScope : WorkerGlobalScope {
[Throws]
void postMessage(any message/*, optional sequence<Transferable> transfer*/);

View file

@ -8,7 +8,7 @@
*/
// https://dom.spec.whatwg.org/#interface-document
[Constructor]
[Constructor, Exposed=(Window,Worker)]
interface Document : Node {
[SameObject]
readonly attribute DOMImplementation implementation;

View file

@ -3,7 +3,7 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
// https://dom.spec.whatwg.org/#interface-documentfragment
[Constructor]
[Constructor, Exposed=(Window,Worker)]
interface DocumentFragment : Node {
};

View file

@ -9,6 +9,7 @@
* liability, trademark and document use rules apply.
*/
[Exposed=(Window,Worker)]
interface DocumentType : Node {
[Constant]
readonly attribute DOMString name;

View file

@ -12,6 +12,7 @@
* liability, trademark and document use rules apply.
*/
[Exposed=(Window,Worker)]
interface Element : Node {
[Constant]
readonly attribute DOMString? namespaceURI;

View file

@ -4,7 +4,7 @@
//http://dev.w3.org/csswg/cssom/#elementcssinlinestyle
[NoInterfaceObject]
[NoInterfaceObject, Exposed=(Window,Worker)]
interface ElementCSSInlineStyle {
[SameObject/*, PutForwards=cssText*/] readonly attribute CSSStyleDeclaration style;
};

View file

@ -3,7 +3,7 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
// https://html.spec.whatwg.org/multipage/#elementcontenteditable
[NoInterfaceObject]
[NoInterfaceObject, Exposed=(Window,Worker)]
interface ElementContentEditable {
// attribute DOMString contentEditable;
// readonly attribute boolean isContentEditable;

View file

@ -4,7 +4,7 @@
// https://html.spec.whatwg.org/multipage/#the-errorevent-interface
[Constructor(DOMString type, optional ErrorEventInit eventInitDict)/*, Exposed=(Window,Worker)*/]
[Constructor(DOMString type, optional ErrorEventInit eventInitDict), Exposed=(Window,Worker)]
interface ErrorEvent : Event {
readonly attribute DOMString message;
readonly attribute DOMString filename;

View file

@ -6,7 +6,7 @@
* https://dom.spec.whatwg.org/#event
*/
[Constructor(DOMString type, optional EventInit eventInitDict)]
[Constructor(DOMString type, optional EventInit eventInitDict), Exposed=(Window,Worker)]
interface Event {
[Pure]
readonly attribute DOMString type;

View file

@ -25,7 +25,7 @@ callback OnBeforeUnloadEventHandlerNonNull = DOMString? (Event event);
typedef OnBeforeUnloadEventHandlerNonNull? OnBeforeUnloadEventHandler;
// https://html.spec.whatwg.org/multipage/#globaleventhandlers
[NoInterfaceObject]
[NoInterfaceObject, Exposed=(Window,Worker)]
interface GlobalEventHandlers {
attribute EventHandler onabort;
attribute EventHandler onblur;
@ -90,7 +90,7 @@ interface GlobalEventHandlers {
};
// https://html.spec.whatwg.org/multipage/#windoweventhandlers
[NoInterfaceObject]
[NoInterfaceObject, Exposed=(Window,Worker)]
interface WindowEventHandlers {
attribute EventHandler onafterprint;
attribute EventHandler onbeforeprint;
@ -110,7 +110,7 @@ interface WindowEventHandlers {
};
// https://html.spec.whatwg.org/multipage/#documentandelementeventhandlers
[NoInterfaceObject]
[NoInterfaceObject, Exposed=(Window,Worker)]
interface DocumentAndElementEventHandlers {
attribute EventHandler oncopy;
attribute EventHandler oncut;

View file

@ -7,7 +7,7 @@
*/
[Constructor(DOMString url, optional EventSourceInit eventSourceInitDict),
/*Exposed=(Window,Worker)*/]
Exposed=(Window,Worker)]
interface EventSource : EventTarget {
readonly attribute DOMString url;
readonly attribute boolean withCredentials;

View file

@ -5,7 +5,7 @@
* https://dom.spec.whatwg.org/#interface-eventtarget
*/
[Abstract]
[Abstract, Exposed=(Window,Worker)]
interface EventTarget {
void addEventListener(DOMString type,
EventListener? listener,

View file

@ -7,7 +7,7 @@
[Constructor(sequence<BlobPart> fileBits,
DOMString fileName,
optional FilePropertyBag options),
Exposed=Window/*,Worker*/]
Exposed=(Window,Worker)]
interface File : Blob {
readonly attribute DOMString name;
readonly attribute long long lastModified;

View file

@ -4,6 +4,7 @@
// https://w3c.github.io/FileAPI/#dfn-filelist
[Exposed=(Window,Worker)]
interface FileList {
getter File? item(unsigned long index);
readonly attribute unsigned long length;

View file

@ -5,7 +5,7 @@
// http://dev.w3.org/2006/webapi/FileAPI/#APIASynch
//typedef (DOMString or ArrayBuffer) FileReaderResult;
[Constructor, Exposed=Window/*,Worker*/]
[Constructor, Exposed=(Window,Worker)]
interface FileReader: EventTarget {
// async read methods

View file

@ -3,7 +3,7 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
// https://w3c.github.io/uievents/#interface-FocusEvent
[Constructor(DOMString typeArg, optional FocusEventInit focusEventInitDict)]
[Constructor(DOMString typeArg, optional FocusEventInit focusEventInitDict), Exposed=(Window,Worker)]
interface FocusEvent : UIEvent {
readonly attribute EventTarget? relatedTarget;
};

View file

@ -23,7 +23,7 @@
*/
[Pref="dom.forcetouch.enabled"]
[Pref="dom.forcetouch.enabled", Exposed=(Window,Worker)]
interface ForceTouchEvent : UIEvent {
// Represents the amount of force required to perform a regular click.
readonly attribute float SERVO_FORCE_AT_MOUSE_DOWN;

View file

@ -9,7 +9,7 @@
typedef (Blob or USVString) FormDataEntryValue;
[Constructor(optional HTMLFormElement form),
/*Exposed=(Window,Worker)*/]
Exposed=(Window,Worker)]
interface FormData {
void append(USVString name, USVString value);
void append(USVString name, Blob value, optional USVString filename);

View file

@ -11,6 +11,7 @@
*/
// https://html.spec.whatwg.org/multipage/#htmlanchorelement
[Exposed=(Window,Worker)]
interface HTMLAnchorElement : HTMLElement {
attribute DOMString target;
// attribute DOMString download;

View file

@ -3,6 +3,7 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
// https://html.spec.whatwg.org/multipage/#htmlappletelement
[Exposed=(Window,Worker)]
interface HTMLAppletElement : HTMLElement {
// attribute DOMString align;
// attribute DOMString alt;

View file

@ -3,6 +3,7 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
// https://html.spec.whatwg.org/multipage/#htmlareaelement
[Exposed=(Window,Worker)]
interface HTMLAreaElement : HTMLElement {
// attribute DOMString alt;
// attribute DOMString coords;

View file

@ -4,4 +4,5 @@
// https://html.spec.whatwg.org/multipage/#htmlaudioelement
//[NamedConstructor=Audio(optional DOMString src)]
[Exposed=(Window,Worker)]
interface HTMLAudioElement : HTMLMediaElement {};

View file

@ -3,6 +3,7 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
// https://html.spec.whatwg.org/multipage/#htmlbrelement
[Exposed=(Window,Worker)]
interface HTMLBRElement : HTMLElement {
// also has obsolete members
};

View file

@ -3,6 +3,7 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
// https://html.spec.whatwg.org/multipage/#htmlbaseelement
[Exposed=(Window,Worker)]
interface HTMLBaseElement : HTMLElement {
attribute DOMString href;
// attribute DOMString target;

View file

@ -3,6 +3,7 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
// https://html.spec.whatwg.org/multipage/#the-body-element
[Exposed=(Window,Worker)]
interface HTMLBodyElement : HTMLElement {
// also has obsolete members
};

View file

@ -3,6 +3,7 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
// https://html.spec.whatwg.org/multipage/#htmlbuttonelement
[Exposed=(Window,Worker)]
interface HTMLButtonElement : HTMLElement {
// attribute boolean autofocus;
attribute boolean disabled;

View file

@ -5,6 +5,7 @@
// https://html.spec.whatwg.org/multipage/#htmlcanvaselement
typedef (CanvasRenderingContext2D or WebGLRenderingContext) RenderingContext;
[Exposed=(Window,Worker)]
interface HTMLCanvasElement : HTMLElement {
[Pure]
attribute unsigned long width;

View file

@ -4,7 +4,7 @@
// https://dom.spec.whatwg.org/#interface-htmlcollection
[LegacyUnenumerableNamedProperties]
[LegacyUnenumerableNamedProperties, Exposed=(Window,Worker)]
interface HTMLCollection {
[Pure]
readonly attribute unsigned long length;

View file

@ -3,6 +3,7 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
// https://html.spec.whatwg.org/multipage/#htmldlistelement
[Exposed=(Window,Worker)]
interface HTMLDListElement : HTMLElement {
// also has obsolete members
};

View file

@ -3,6 +3,7 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
// https://html.spec.whatwg.org/multipage/#htmldataelement
[Exposed=(Window,Worker)]
interface HTMLDataElement : HTMLElement {
// attribute DOMString value;
};

View file

@ -3,6 +3,7 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
// https://html.spec.whatwg.org/multipage/#htmldatalistelement
[Exposed=(Window,Worker)]
interface HTMLDataListElement : HTMLElement {
readonly attribute HTMLCollection options;
};

View file

@ -3,6 +3,7 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
// https://html.spec.whatwg.org/multipage/#htmldetailselement
[Exposed=(Window,Worker)]
interface HTMLDetailsElement : HTMLElement {
attribute boolean open;
};

View file

@ -3,6 +3,7 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
// https://html.spec.whatwg.org/multipage/#htmldialogelement
[Exposed=(Window,Worker)]
interface HTMLDialogElement : HTMLElement {
attribute boolean open;
attribute DOMString returnValue;

View file

@ -3,6 +3,7 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
// https://html.spec.whatwg.org/multipage/#htmldirectoryelement
[Exposed=(Window,Worker)]
interface HTMLDirectoryElement : HTMLElement {
// attribute boolean compact;
};

View file

@ -3,6 +3,7 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
// https://html.spec.whatwg.org/multipage/#htmldivelement
[Exposed=(Window,Worker)]
interface HTMLDivElement : HTMLElement {
// also has obsolete members
};

View file

@ -3,6 +3,7 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
// https://html.spec.whatwg.org/multipage/#htmlelement
[Exposed=(Window,Worker)]
interface HTMLElement : Element {
// metadata attributes
attribute DOMString title;

View file

@ -3,6 +3,7 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
// https://html.spec.whatwg.org/multipage/#htmlembedelement
[Exposed=(Window,Worker)]
interface HTMLEmbedElement : HTMLElement {
// attribute DOMString src;
// attribute DOMString type;

View file

@ -3,6 +3,7 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
// https://html.spec.whatwg.org/multipage/#htmlfieldsetelement
[Exposed=(Window,Worker)]
interface HTMLFieldSetElement : HTMLElement {
attribute boolean disabled;
readonly attribute HTMLFormElement? form;

View file

@ -3,6 +3,7 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
// https://html.spec.whatwg.org/multipage/#htmlfontelement
[Exposed=(Window,Worker)]
interface HTMLFontElement : HTMLElement {
[TreatNullAs=EmptyString] attribute DOMString color;
attribute DOMString face;

View file

@ -3,6 +3,7 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
// https://html.spec.whatwg.org/multipage/#htmlformcontrolscollection
[Exposed=(Window,Worker)]
interface HTMLFormControlsCollection : HTMLCollection {
// inherits length and item()
getter (RadioNodeList or Element)? namedItem(DOMString name); // shadows inherited namedItem()

View file

@ -4,6 +4,7 @@
// https://html.spec.whatwg.org/multipage/#htmlformelement
//[OverrideBuiltins]
[Exposed=(Window,Worker)]
interface HTMLFormElement : HTMLElement {
attribute DOMString acceptCharset;
attribute DOMString action;

View file

@ -3,6 +3,7 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
// https://html.spec.whatwg.org/multipage/#htmlframeelement
[Exposed=(Window,Worker)]
interface HTMLFrameElement : HTMLElement {
// attribute DOMString name;
// attribute DOMString scrolling;

View file

@ -3,6 +3,7 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
// https://html.spec.whatwg.org/multipage/#htmlframesetelement
[Exposed=(Window,Worker)]
interface HTMLFrameSetElement : HTMLElement {
// attribute DOMString cols;
// attribute DOMString rows;

View file

@ -3,6 +3,7 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
// https://html.spec.whatwg.org/multipage/#htmlhrelement
[Exposed=(Window,Worker)]
interface HTMLHRElement : HTMLElement {
// also has obsolete members
};

View file

@ -3,4 +3,5 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
// https://html.spec.whatwg.org/multipage/#htmlheadelement
[Exposed=(Window,Worker)]
interface HTMLHeadElement : HTMLElement {};

View file

@ -3,6 +3,7 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
// https://html.spec.whatwg.org/multipage/#htmlheadingelement
[Exposed=(Window,Worker)]
interface HTMLHeadingElement : HTMLElement {
// also has obsolete members
};

View file

@ -3,6 +3,7 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
// https://html.spec.whatwg.org/multipage/#htmlhtmlelement
[Exposed=(Window,Worker)]
interface HTMLHtmlElement : HTMLElement {
// also has obsolete members
};

View file

@ -3,7 +3,7 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
// https://html.spec.whatwg.org/multipage/#htmlhyperlinkelementutils
[NoInterfaceObject/*, Exposed=Window*/]
[NoInterfaceObject, Exposed=(Window,Worker)]
interface HTMLHyperlinkElementUtils {
// stringifier attribute USVString href;
attribute USVString href;

View file

@ -3,6 +3,7 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
// https://html.spec.whatwg.org/multipage/#htmliframeelement
[Exposed=(Window,Worker)]
interface HTMLIFrameElement : HTMLElement {
attribute DOMString src;
// attribute DOMString srcdoc;

View file

@ -3,7 +3,7 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
// https://html.spec.whatwg.org/multipage/#htmlimageelement
[NamedConstructor=Image(optional unsigned long width, optional unsigned long height)]
[NamedConstructor=Image(optional unsigned long width, optional unsigned long height), Exposed=(Window,Worker)]
interface HTMLImageElement : HTMLElement {
attribute DOMString alt;
attribute DOMString src;

View file

@ -3,6 +3,7 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
// https://html.spec.whatwg.org/multipage/#htmlinputelement
[Exposed=(Window,Worker)]
interface HTMLInputElement : HTMLElement {
attribute DOMString accept;
attribute DOMString alt;

View file

@ -3,6 +3,7 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
// https://html.spec.whatwg.org/multipage/#htmllielement
[Exposed=(Window,Worker)]
interface HTMLLIElement : HTMLElement {
// attribute long value;

View file

@ -3,6 +3,7 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
// https://html.spec.whatwg.org/multipage/#htmllabelelement
[Exposed=(Window,Worker)]
interface HTMLLabelElement : HTMLElement {
readonly attribute HTMLFormElement? form;
attribute DOMString htmlFor;

View file

@ -3,6 +3,7 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
// https://html.spec.whatwg.org/multipage/#htmllegendelement
[Exposed=(Window,Worker)]
interface HTMLLegendElement : HTMLElement {
readonly attribute HTMLFormElement? form;

View file

@ -3,6 +3,7 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
// https://html.spec.whatwg.org/multipage/#htmllinkelement
[Exposed=(Window,Worker)]
interface HTMLLinkElement : HTMLElement {
attribute DOMString href;
// attribute DOMString crossOrigin;

View file

@ -3,6 +3,7 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
// https://html.spec.whatwg.org/multipage/#htmlmapelement
[Exposed=(Window,Worker)]
interface HTMLMapElement : HTMLElement {
// attribute DOMString name;
//readonly attribute HTMLCollection areas;

View file

@ -4,7 +4,7 @@
// https://html.spec.whatwg.org/multipage/#htmlmediaelement
enum CanPlayTypeResult { "" /* empty string */, "maybe", "probably" };
[Abstract]
[Abstract, Exposed=(Window,Worker)]
interface HTMLMediaElement : HTMLElement {
// error state

Some files were not shown because too many files have changed in this diff Show more