Bug 1423562 part 3. Remove [PrimaryGlobal] and require explicit [Exposed] annotations on everything. r=edgar

For review purposes, the important changes are in dom/bindings/Configuration.py
and dom/bindings/parser.

The changes to the IDL files were done by running these in dom/webidl
and dom/bindings/test:

  perl -pi -e 's/^interface ([A-Za-z0-9_]+)($| [:{])/[Exposed=Window]\ninterface \1\2/' *.webidl

  perl -pi -e 'BEGIN { $/ = undef; } s/\[HTMLConstructor\]\n\[Exposed=Window\]/[HTMLConstructor,\n Exposed=Window]/g' *.webidl

  perl -pi -e 'BEGIN { $/ = undef; } s/\[NoInterfaceObject\]\n\[Exposed=Window\]/[NoInterfaceObject,\n Exposed=Window]/g' *.webidl

  perl -pi -e 'BEGIN { $/ = undef; } s/\[ChromeOnly\]\n\[Exposed=Window\]/[ChromeOnly,\n Exposed=Window]/g' *.webidl

And running this in dom/chrome-webidl:

  perl -pi -e 'BEGIN { $/ = undef; } s/\[ChromeOnly\]\ninterface/[ChromeOnly, Exposed=Window]\ninterface/g' *.webidl

and then fixing all the resulting parser failures.  I then verified that the
generated code is the same as before this change.

Differential Revision: https://phabricator.services.mozilla.com/D46697

--HG--
extra : moz-landing-system : lando
This commit is contained in:
Boris Zbarsky 2019-09-27 15:26:14 +00:00
Родитель 29f544b623
Коммит e5497b955e
544 изменённых файлов: 1241 добавлений и 578 удалений

Просмотреть файл

@ -708,9 +708,8 @@ struct NamedConstructor {
* underlying global. * underlying global.
* unscopableNames if not null it points to a null-terminated list of const * unscopableNames if not null it points to a null-terminated list of const
* char* names of the unscopable properties for this interface. * char* names of the unscopable properties for this interface.
* isGlobal if true, we're creating interface objects for a [Global] or * isGlobal if true, we're creating interface objects for a [Global] interface,
* [PrimaryGlobal] interface, and hence shouldn't define properties on * and hence shouldn't define properties on the prototype object.
* the prototype object.
* legacyWindowAliases if not null it points to a null-terminated list of const * legacyWindowAliases if not null it points to a null-terminated list of const
* char* names of the legacy window aliases for this * char* names of the legacy window aliases for this
* interface. * interface.

Просмотреть файл

@ -748,8 +748,7 @@ class Descriptor(DescriptorProvider):
Returns true if this is the primary interface for a global object Returns true if this is the primary interface for a global object
of some sort. of some sort.
""" """
return (self.interface.getExtendedAttribute("Global") or return self.interface.getExtendedAttribute("Global")
self.interface.getExtendedAttribute("PrimaryGlobal"))
@property @property
def namedPropertiesEnumerable(self): def namedPropertiesEnumerable(self):

Просмотреть файл

@ -236,8 +236,6 @@ class IDLScope(IDLObject):
# A mapping from global name to the set of global interfaces # A mapping from global name to the set of global interfaces
# that have that global name. # that have that global name.
self.globalNameMapping = defaultdict(set) self.globalNameMapping = defaultdict(set)
self.primaryGlobalAttr = None
self.primaryGlobalName = None
def __str__(self): def __str__(self):
return self.QName() return self.QName()
@ -465,8 +463,17 @@ class IDLExposureMixins():
raise WebIDLError("Unknown [Exposed] value %s" % globalName, raise WebIDLError("Unknown [Exposed] value %s" % globalName,
[self._location]) [self._location])
if len(self._exposureGlobalNames) == 0: # Verify that we are exposed _somwhere_ if we have some place to be
self._exposureGlobalNames.add(scope.primaryGlobalName) # exposed. We don't want to assert that we're definitely exposed
# because a lot of our parser tests have small-enough IDL snippets that
# they don't include any globals, and we don't really want to go through
# and add global interfaces and [Exposed] annotations to all those
# tests.
if len(scope.globalNames) != 0:
if (len(self._exposureGlobalNames) == 0):
raise WebIDLError(("'%s' is not exposed anywhere even though we have "
"globals to be exposed to") % self,
[self.location])
globalNameSetToExposureSet(scope, self._exposureGlobalNames, globalNameSetToExposureSet(scope, self._exposureGlobalNames,
self.exposureSet) self.exposureSet)
@ -798,8 +805,10 @@ class IDLInterfaceMixin(IDLInterfaceOrInterfaceMixinOrNamespace):
# Expose to the globals of interfaces that includes this mixin if this # Expose to the globals of interfaces that includes this mixin if this
# mixin has no explicit [Exposed] so that its members can be exposed # mixin has no explicit [Exposed] so that its members can be exposed
# based on the base interface exposure set. # based on the base interface exposure set.
# Make sure this is done before IDLExposureMixins.finish call to #
# prevent exposing to PrimaryGlobal by default. # Make sure this is done before IDLExposureMixins.finish call, since
# that converts our set of exposure global names to an actual exposure
# set.
hasImplicitExposure = len(self._exposureGlobalNames) == 0 hasImplicitExposure = len(self._exposureGlobalNames) == 0
if hasImplicitExposure: if hasImplicitExposure:
self._exposureGlobalNames.update(self.actualExposureGlobalNames) self._exposureGlobalNames.update(self.actualExposureGlobalNames)
@ -997,10 +1006,8 @@ class IDLInterfaceOrNamespace(IDLInterfaceOrInterfaceMixinOrNamespace):
self.totalMembersInSlots = self.parent.totalMembersInSlots self.totalMembersInSlots = self.parent.totalMembersInSlots
# Interfaces with [Global] or [PrimaryGlobal] must not # Interfaces with [Global] must not have anything inherit from them
# have anything inherit from them if self.parent.getExtendedAttribute("Global"):
if (self.parent.getExtendedAttribute("Global") or
self.parent.getExtendedAttribute("PrimaryGlobal")):
# Note: This is not a self.parent.isOnGlobalProtoChain() check # Note: This is not a self.parent.isOnGlobalProtoChain() check
# because ancestors of a [Global] interface can have other # because ancestors of a [Global] interface can have other
# descendants. # descendants.
@ -1094,7 +1101,7 @@ class IDLInterfaceOrNamespace(IDLInterfaceOrInterfaceMixinOrNamespace):
if self.globalNames: if self.globalNames:
raise WebIDLError( raise WebIDLError(
"Can't have both a named constructor and [Global]", "Can't have both a named constructor and [Global]",
[self.location, self.namedConstructors.location]) [self.location, ctor.location])
assert len(ctor._exposureGlobalNames) == 0 assert len(ctor._exposureGlobalNames) == 0
ctor._exposureGlobalNames.update(self._exposureGlobalNames) ctor._exposureGlobalNames.update(self._exposureGlobalNames)
ctor.finish(scope) ctor.finish(scope)
@ -1718,20 +1725,6 @@ class IDLInterface(IDLInterfaceOrNamespace):
self.parentScope.addIfaceGlobalNames(self.identifier.name, self.parentScope.addIfaceGlobalNames(self.identifier.name,
self.globalNames) self.globalNames)
self._isOnGlobalProtoChain = True self._isOnGlobalProtoChain = True
elif identifier == "PrimaryGlobal":
if not attr.noArguments():
raise WebIDLError("[PrimaryGlobal] must take no arguments",
[attr.location])
if self.parentScope.primaryGlobalAttr is not None:
raise WebIDLError(
"[PrimaryGlobal] specified twice",
[attr.location,
self.parentScope.primaryGlobalAttr.location])
self.parentScope.primaryGlobalAttr = attr
self.parentScope.primaryGlobalName = self.identifier.name
self.parentScope.addIfaceGlobalNames(self.identifier.name,
[self.identifier.name])
self._isOnGlobalProtoChain = True
elif identifier == "LegacyWindowAlias": elif identifier == "LegacyWindowAlias":
if attr.hasValue(): if attr.hasValue():
self.legacyWindowAliases = [attr.value()] self.legacyWindowAliases = [attr.value()]
@ -3780,10 +3773,6 @@ class IDLInterfaceMember(IDLObjectWithIdentifier, IDLExposureMixins):
return self._extendedAttrDict.get(name, None) return self._extendedAttrDict.get(name, None)
def finish(self, scope): def finish(self, scope):
# We better be exposed _somewhere_.
if (len(self._exposureGlobalNames) == 0):
print(self.identifier.name)
assert len(self._exposureGlobalNames) != 0
IDLExposureMixins.finish(self, scope) IDLExposureMixins.finish(self, scope)
def validate(self): def validate(self):
@ -5484,10 +5473,8 @@ class IDLIncludesStatement(IDLObject):
raise WebIDLError("Right-hand side of 'includes' is not an " raise WebIDLError("Right-hand side of 'includes' is not an "
"interface mixin", "interface mixin",
[self.mixin.location, mixin.location]) [self.mixin.location, mixin.location])
if len(interface._exposureGlobalNames) != 0:
mixin.actualExposureGlobalNames.update(interface._exposureGlobalNames) mixin.actualExposureGlobalNames.update(interface._exposureGlobalNames)
else:
mixin.actualExposureGlobalNames.add(scope.primaryGlobalName);
interface.addIncludedMixin(mixin) interface.addIncludedMixin(mixin)
self.interface = interface self.interface = interface
@ -7335,12 +7322,6 @@ class Parser(Tokenizer):
self._globalScope = IDLScope(BuiltinLocation("<Global Scope>"), None, None) self._globalScope = IDLScope(BuiltinLocation("<Global Scope>"), None, None)
# To make our test harness work, pretend like we have a primary global already.
# Note that we _don't_ set _globalScope.primaryGlobalAttr,
# so we'll still be able to detect multiple PrimaryGlobal extended attributes.
self._globalScope.primaryGlobalName = "FakeTestPrimaryGlobal"
self._globalScope.addIfaceGlobalNames("FakeTestPrimaryGlobal", ["FakeTestPrimaryGlobal"])
self._installBuiltins(self._globalScope) self._installBuiltins(self._globalScope)
self._productions = [] self._productions = []

Просмотреть файл

@ -1,8 +1,10 @@
import traceback
def WebIDLTest(parser, harness): def WebIDLTest(parser, harness):
threw = False threw = False
try: try:
parser.parse(""" parser.parse("""
[Global] [Global, Exposed=TestConstructorGlobal]
interface TestConstructorGlobal { interface TestConstructorGlobal {
constructor(); constructor();
}; };
@ -18,7 +20,8 @@ def WebIDLTest(parser, harness):
threw = False threw = False
try: try:
parser.parse(""" parser.parse("""
[Global, NamedConstructor=FooBar] [Global, Exposed=TestNamedConstructorGlobal,
NamedConstructor=FooBar]
interface TestNamedConstructorGlobal { interface TestNamedConstructorGlobal {
}; };
""") """)
@ -32,7 +35,8 @@ def WebIDLTest(parser, harness):
threw = False threw = False
try: try:
parser.parse(""" parser.parse("""
[NamedConstructor=FooBar, Global] [NamedConstructor=FooBar, Global,
Exposed=TestNamedConstructorGlobal]
interface TestNamedConstructorGlobal { interface TestNamedConstructorGlobal {
}; };
""") """)
@ -46,7 +50,7 @@ def WebIDLTest(parser, harness):
threw = False threw = False
try: try:
parser.parse(""" parser.parse("""
[Global, HTMLConstructor] [Global, HTMLConstructor, Exposed=TestHTMLConstructorGlobal]
interface TestHTMLConstructorGlobal { interface TestHTMLConstructorGlobal {
}; };
""") """)
@ -61,7 +65,7 @@ def WebIDLTest(parser, harness):
threw = False threw = False
try: try:
parser.parse(""" parser.parse("""
[HTMLConstructor, Global] [HTMLConstructor, Global, Exposed=TestHTMLConstructorGlobal]
interface TestHTMLConstructorGlobal { interface TestHTMLConstructorGlobal {
}; };
""") """)

Просмотреть файл

@ -2,9 +2,9 @@ import WebIDL
def WebIDLTest(parser, harness): def WebIDLTest(parser, harness):
parser.parse(""" parser.parse("""
[PrimaryGlobal] interface Foo {}; [Global, Exposed=Foo] interface Foo {};
[Global=(Bar1,Bar2)] interface Bar {}; [Global=(Bar, Bar1,Bar2), Exposed=Bar] interface Bar {};
[Global=Baz2] interface Baz {}; [Global=(Baz, Baz2), Exposed=Baz] interface Baz {};
[Exposed=(Foo,Bar1)] [Exposed=(Foo,Bar1)]
interface Iface { interface Iface {
@ -51,10 +51,11 @@ def WebIDLTest(parser, harness):
parser = parser.reset() parser = parser.reset()
parser.parse(""" parser.parse("""
[PrimaryGlobal] interface Foo {}; [Global, Exposed=Foo] interface Foo {};
[Global=(Bar1,Bar2)] interface Bar {}; [Global=(Bar, Bar1, Bar2), Exposed=Bar] interface Bar {};
[Global=Baz2] interface Baz {}; [Global=(Baz, Baz2), Exposed=Baz] interface Baz {};
[Exposed=Foo]
interface Iface2 { interface Iface2 {
void method3(); void method3();
}; };
@ -80,9 +81,9 @@ def WebIDLTest(parser, harness):
parser = parser.reset() parser = parser.reset()
parser.parse(""" parser.parse("""
[PrimaryGlobal] interface Foo {}; [Global, Exposed=Foo] interface Foo {};
[Global=(Bar1,Bar2)] interface Bar {}; [Global=(Bar, Bar1, Bar2), Exposed=Bar] interface Bar {};
[Global=Baz2] interface Baz {}; [Global=(Baz, Baz2), Exposed=Baz] interface Baz {};
[Exposed=Foo] [Exposed=Foo]
interface Iface3 { interface Iface3 {
@ -181,8 +182,8 @@ def WebIDLTest(parser, harness):
threw = False threw = False
try: try:
parser.parse(""" parser.parse("""
[Global] interface Foo {}; [Global, Exposed=Foo] interface Foo {};
[Global] interface Bar {}; [Global, Exposed=Bar] interface Bar {};
[Exposed=Foo] [Exposed=Foo]
interface Baz { interface Baz {
@ -199,8 +200,8 @@ def WebIDLTest(parser, harness):
parser = parser.reset() parser = parser.reset()
parser.parse(""" parser.parse("""
[Global] interface Foo {}; [Global, Exposed=Foo] interface Foo {};
[Global] interface Bar {}; [Global, Exposed=Bar] interface Bar {};
[Exposed=Foo] [Exposed=Foo]
interface Baz { interface Baz {

Просмотреть файл

@ -1,9 +1,10 @@
def WebIDLTest(parser, harness): def WebIDLTest(parser, harness):
parser.parse(""" parser.parse("""
[Global] [Global, Exposed=Foo]
interface Foo : Bar { interface Foo : Bar {
getter any(DOMString name); getter any(DOMString name);
}; };
[Exposed=Foo]
interface Bar {}; interface Bar {};
""") """)
@ -18,7 +19,7 @@ def WebIDLTest(parser, harness):
threw = False threw = False
try: try:
parser.parse(""" parser.parse("""
[Global] [Global, Exposed=Foo]
interface Foo { interface Foo {
getter any(DOMString name); getter any(DOMString name);
setter void(DOMString name, any arg); setter void(DOMString name, any arg);
@ -36,7 +37,7 @@ def WebIDLTest(parser, harness):
threw = False threw = False
try: try:
parser.parse(""" parser.parse("""
[Global] [Global, Exposed=Foo]
interface Foo { interface Foo {
getter any(DOMString name); getter any(DOMString name);
deleter void(DOMString name); deleter void(DOMString name);
@ -54,7 +55,7 @@ def WebIDLTest(parser, harness):
threw = False threw = False
try: try:
parser.parse(""" parser.parse("""
[Global, OverrideBuiltins] [Global, OverrideBuiltins, Exposed=Foo]
interface Foo { interface Foo {
}; };
""") """)
@ -70,10 +71,10 @@ def WebIDLTest(parser, harness):
threw = False threw = False
try: try:
parser.parse(""" parser.parse("""
[Global] [Global, Exposed=Foo]
interface Foo : Bar { interface Foo : Bar {
}; };
[OverrideBuiltins] [OverrideBuiltins, Exposed=Foo]
interface Bar { interface Bar {
}; };
""") """)
@ -89,9 +90,10 @@ def WebIDLTest(parser, harness):
threw = False threw = False
try: try:
parser.parse(""" parser.parse("""
[Global] [Global, Exposed=Foo]
interface Foo { interface Foo {
}; };
[Exposed=Foo]
interface Bar : Foo { interface Bar : Foo {
}; };
""") """)

Просмотреть файл

@ -283,7 +283,7 @@ def WebIDLTest(parser, harness):
parser = parser.reset() parser = parser.reset()
parser.parse(""" parser.parse("""
[Global] interface Window {}; [Global, Exposed=Window] interface Window {};
[Exposed=Window, LegacyWindowAlias=A] [Exposed=Window, LegacyWindowAlias=A]
interface B {}; interface B {};
[Exposed=Window, LegacyWindowAlias=(C, D)] [Exposed=Window, LegacyWindowAlias=(C, D)]
@ -325,7 +325,8 @@ def WebIDLTest(parser, harness):
threw = False threw = False
try: try:
parser.parse(""" parser.parse("""
[Global] interface Window {}; [Global, Exposed=Window] interface Window {};
[Exposed=Window]
interface A {}; interface A {};
[Exposed=Window, LegacyWindowAlias=A] [Exposed=Window, LegacyWindowAlias=A]
interface B {}; interface B {};
@ -340,9 +341,10 @@ def WebIDLTest(parser, harness):
threw = False threw = False
try: try:
parser.parse(""" parser.parse("""
[Global] interface Window {}; [Global, Exposed=Window] interface Window {};
[Exposed=Window, LegacyWindowAlias=A] [Exposed=Window, LegacyWindowAlias=A]
interface B {}; interface B {};
[Exposed=Window]
interface A {}; interface A {};
""") """)
results = parser.finish() results = parser.finish()
@ -355,7 +357,7 @@ def WebIDLTest(parser, harness):
threw = False threw = False
try: try:
parser.parse(""" parser.parse("""
[Global] interface Window {}; [Global, Exposed=Window] interface Window {};
[Exposed=Window, LegacyWindowAlias=A] [Exposed=Window, LegacyWindowAlias=A]
interface B {}; interface B {};
[Exposed=Window, LegacyWindowAlias=A] [Exposed=Window, LegacyWindowAlias=A]

Просмотреть файл

@ -377,8 +377,8 @@ def WebIDLTest(parser, harness):
parser = parser.reset() parser = parser.reset()
parser.parse(""" parser.parse("""
[Global] interface Window {}; [Global, Exposed=Window] interface Window {};
[Global] interface Worker {}; [Global, Exposed=Worker] interface Worker {};
[Exposed=Window] [Exposed=Window]
interface Base {}; interface Base {};
interface mixin Mixin { interface mixin Mixin {
@ -394,8 +394,8 @@ def WebIDLTest(parser, harness):
parser = parser.reset() parser = parser.reset()
parser.parse(""" parser.parse("""
[Global] interface Window {}; [Global, Exposed=Window] interface Window {};
[Global] interface Worker {}; [Global, Exposed=Worker] interface Worker {};
[Exposed=Window] [Exposed=Window]
interface Base {}; interface Base {};
[Exposed=Window] [Exposed=Window]
@ -412,8 +412,8 @@ def WebIDLTest(parser, harness):
parser = parser.reset() parser = parser.reset()
parser.parse(""" parser.parse("""
[Global] interface Window {}; [Global, Exposed=Window] interface Window {};
[Global] interface Worker {}; [Global, Exposed=Worker] interface Worker {};
[Exposed=Window] [Exposed=Window]
interface Base1 {}; interface Base1 {};
[Exposed=Worker] [Exposed=Worker]
@ -435,28 +435,3 @@ def WebIDLTest(parser, harness):
harness.check(attr.exposureSet, set(["Window", "Worker"]), harness.check(attr.exposureSet, set(["Window", "Worker"]),
"Should expose on all globals where including interfaces are " "Should expose on all globals where including interfaces are "
"exposed") "exposed")
parser = parser.reset()
parser.parse("""
[PrimaryGlobal] interface Window {};
[Global] interface Worker {};
interface Base1 {};
[Exposed=Worker]
interface Base2 {};
interface mixin Mixin {
attribute short a;
};
Base1 includes Mixin;
Base2 includes Mixin;
""")
results = parser.finish()
base = results[2]
attr = base.members[0]
harness.check(attr.exposureSet, set(["Window", "Worker"]),
"Should expose on all globals where including interfaces are "
"exposed")
base = results[3]
attr = base.members[0]
harness.check(attr.exposureSet, set(["Window", "Worker"]),
"Should expose on all globals where including interfaces are "
"exposed")

Просмотреть файл

@ -12,10 +12,12 @@ typedef CustomEventInit TestDictionaryTypedef;
interface TestExternalInterface; interface TestExternalInterface;
// We need a pref name that's in StaticPrefList.h here. // We need a pref name that's in StaticPrefList.h here.
[Pref="dom.webidl.test1"] [Pref="dom.webidl.test1",
Exposed=Window]
interface TestRenamedInterface { interface TestRenamedInterface {
}; };
[Exposed=Window]
callback interface TestCallbackInterface { callback interface TestCallbackInterface {
readonly attribute long foo; readonly attribute long foo;
attribute DOMString bar; attribute DOMString bar;
@ -59,6 +61,7 @@ callback interface TestCallbackInterface {
Promise<void> receivePromise(); Promise<void> receivePromise();
}; };
[Exposed=Window]
callback interface TestSingleOperationCallbackInterface { callback interface TestSingleOperationCallbackInterface {
TestInterface doSomething(short arg, sequence<double> anotherArg); TestInterface doSomething(short arg, sequence<double> anotherArg);
}; };
@ -142,6 +145,7 @@ callback constructor TestSequenceConstruction = sequence<boolean>();
TestInterface includes InterfaceMixin; TestInterface includes InterfaceMixin;
// This interface is only for use in the constructor below // This interface is only for use in the constructor below
[Exposed=Window]
interface OnlyForUseInConstructor { interface OnlyForUseInConstructor {
}; };
@ -154,6 +158,7 @@ interface OnlyForUseInConstructor {
NamedConstructor=Test4(record<DOMString, record<DOMString, any>> arg1), NamedConstructor=Test4(record<DOMString, record<DOMString, any>> arg1),
NamedConstructor=Test5(record<DOMString, sequence<record<DOMString, record<DOMString, sequence<sequence<any>>>>>> arg1), NamedConstructor=Test5(record<DOMString, sequence<record<DOMString, record<DOMString, sequence<sequence<any>>>>>> arg1),
NamedConstructor=Test6(sequence<record<ByteString, sequence<sequence<record<ByteString, record<USVString, any>>>>>> arg1), NamedConstructor=Test6(sequence<record<ByteString, sequence<sequence<record<ByteString, record<USVString, any>>>>>> arg1),
Exposed=Window,
] ]
interface TestInterface { interface TestInterface {
constructor(); constructor();
@ -1019,12 +1024,15 @@ interface TestInterface {
// If you add things here, add them to TestExampleGen and TestJSImplGen as well // If you add things here, add them to TestExampleGen and TestJSImplGen as well
}; };
[Exposed=Window]
interface TestParentInterface { interface TestParentInterface {
}; };
[Exposed=Window]
interface TestChildInterface : TestParentInterface { interface TestChildInterface : TestParentInterface {
}; };
[Exposed=Window]
interface TestNonWrapperCacheInterface { interface TestNonWrapperCacheInterface {
}; };
@ -1189,6 +1197,7 @@ dictionary DictWithConditionalMembers {
long chromeOnlyFuncAndPrefControlledMember; long chromeOnlyFuncAndPrefControlledMember;
}; };
[Exposed=Window]
interface TestIndexedGetterInterface { interface TestIndexedGetterInterface {
getter long item(unsigned long idx); getter long item(unsigned long idx);
readonly attribute unsigned long length; readonly attribute unsigned long length;
@ -1197,10 +1206,12 @@ interface TestIndexedGetterInterface {
[StoreInSlot, Pure] readonly attribute long storeInSlotAttr; [StoreInSlot, Pure] readonly attribute long storeInSlotAttr;
}; };
[Exposed=Window]
interface TestNamedGetterInterface { interface TestNamedGetterInterface {
getter DOMString (DOMString name); getter DOMString (DOMString name);
}; };
[Exposed=Window]
interface TestIndexedGetterAndSetterAndNamedGetterInterface { interface TestIndexedGetterAndSetterAndNamedGetterInterface {
getter DOMString (DOMString myName); getter DOMString (DOMString myName);
getter long (unsigned long index); getter long (unsigned long index);
@ -1208,23 +1219,27 @@ interface TestIndexedGetterAndSetterAndNamedGetterInterface {
readonly attribute unsigned long length; readonly attribute unsigned long length;
}; };
[Exposed=Window]
interface TestIndexedAndNamedGetterInterface { interface TestIndexedAndNamedGetterInterface {
getter long (unsigned long index); getter long (unsigned long index);
getter DOMString namedItem(DOMString name); getter DOMString namedItem(DOMString name);
readonly attribute unsigned long length; readonly attribute unsigned long length;
}; };
[Exposed=Window]
interface TestIndexedSetterInterface { interface TestIndexedSetterInterface {
setter void setItem(unsigned long idx, DOMString item); setter void setItem(unsigned long idx, DOMString item);
getter DOMString (unsigned long idx); getter DOMString (unsigned long idx);
readonly attribute unsigned long length; readonly attribute unsigned long length;
}; };
[Exposed=Window]
interface TestNamedSetterInterface { interface TestNamedSetterInterface {
setter void (DOMString myName, TestIndexedSetterInterface item); setter void (DOMString myName, TestIndexedSetterInterface item);
getter TestIndexedSetterInterface (DOMString name); getter TestIndexedSetterInterface (DOMString name);
}; };
[Exposed=Window]
interface TestIndexedAndNamedSetterInterface { interface TestIndexedAndNamedSetterInterface {
setter void (unsigned long index, TestIndexedSetterInterface item); setter void (unsigned long index, TestIndexedSetterInterface item);
getter TestIndexedSetterInterface (unsigned long index); getter TestIndexedSetterInterface (unsigned long index);
@ -1233,6 +1248,7 @@ interface TestIndexedAndNamedSetterInterface {
getter TestIndexedSetterInterface (DOMString name); getter TestIndexedSetterInterface (DOMString name);
}; };
[Exposed=Window]
interface TestIndexedAndNamedGetterAndSetterInterface : TestIndexedSetterInterface { interface TestIndexedAndNamedGetterAndSetterInterface : TestIndexedSetterInterface {
getter long item(unsigned long index); getter long item(unsigned long index);
getter DOMString namedItem(DOMString name); getter DOMString namedItem(DOMString name);
@ -1242,23 +1258,27 @@ interface TestIndexedAndNamedGetterAndSetterInterface : TestIndexedSetterInterfa
readonly attribute unsigned long length; readonly attribute unsigned long length;
}; };
[Exposed=Window]
interface TestNamedDeleterInterface { interface TestNamedDeleterInterface {
deleter void (DOMString name); deleter void (DOMString name);
getter long (DOMString name); getter long (DOMString name);
}; };
[Exposed=Window]
interface TestNamedDeleterWithRetvalInterface { interface TestNamedDeleterWithRetvalInterface {
deleter boolean delNamedItem(DOMString name); deleter boolean delNamedItem(DOMString name);
getter long (DOMString name); getter long (DOMString name);
}; };
[Exposed=Window]
interface TestCppKeywordNamedMethodsInterface { interface TestCppKeywordNamedMethodsInterface {
boolean continue(); boolean continue();
boolean delete(); boolean delete();
long volatile(); long volatile();
}; };
[Deprecated="EnablePrivilege"] [Deprecated="EnablePrivilege",
Exposed=Window]
interface TestDeprecatedInterface { interface TestDeprecatedInterface {
constructor(); constructor();
@ -1266,10 +1286,12 @@ interface TestDeprecatedInterface {
}; };
[Exposed=Window]
interface TestInterfaceWithPromiseConstructorArg { interface TestInterfaceWithPromiseConstructorArg {
constructor(Promise<void> promise); constructor(Promise<void> promise);
}; };
[Exposed=Window]
namespace TestNamespace { namespace TestNamespace {
readonly attribute boolean foo; readonly attribute boolean foo;
long bar(); long bar();
@ -1279,15 +1301,18 @@ partial namespace TestNamespace {
void baz(); void baz();
}; };
[ClassString="RenamedNamespaceClassName"] [ClassString="RenamedNamespaceClassName",
Exposed=Window]
namespace TestRenamedNamespace { namespace TestRenamedNamespace {
}; };
[ProtoObjectHack] [ProtoObjectHack,
Exposed=Window]
namespace TestProtoObjectHackedNamespace { namespace TestProtoObjectHackedNamespace {
}; };
[SecureContext] [SecureContext,
Exposed=Window]
interface TestSecureContextInterface { interface TestSecureContextInterface {
static void alsoSecureContext(); static void alsoSecureContext();
}; };
@ -1302,10 +1327,12 @@ interface TestWorkerExposedInterface {
[NeedsSubjectPrincipal=NonSystem] attribute boolean needsNonSystemSubjectPrincipalAttr; [NeedsSubjectPrincipal=NonSystem] attribute boolean needsNonSystemSubjectPrincipalAttr;
}; };
[HTMLConstructor] [HTMLConstructor,
Exposed=Window]
interface TestHTMLConstructorInterface { interface TestHTMLConstructorInterface {
}; };
[Exposed=Window]
interface TestThrowingConstructorInterface { interface TestThrowingConstructorInterface {
[Throws] [Throws]
constructor(); constructor();
@ -1326,6 +1353,7 @@ interface TestThrowingConstructorInterface {
// [Throws] constructor(long arg1, long arg2, (TestInterface or OnlyForUseInConstructor) arg3); // [Throws] constructor(long arg1, long arg2, (TestInterface or OnlyForUseInConstructor) arg3);
}; };
[Exposed=Window]
interface TestCEReactionsInterface { interface TestCEReactionsInterface {
[CEReactions] setter void (unsigned long index, long item); [CEReactions] setter void (unsigned long index, long item);
[CEReactions] setter void (DOMString name, DOMString item); [CEReactions] setter void (DOMString name, DOMString item);
@ -1349,6 +1377,7 @@ dictionary TestAttributesOnDictionaryMembers {
// test [ChromeOnly] required [Clamp] octet e // test [ChromeOnly] required [Clamp] octet e
}; };
[Exposed=Window]
interface TestAttributesOnTypes { interface TestAttributesOnTypes {
void foo(OctetClamp thingy); void foo(OctetClamp thingy);
void bar(OctetRange thingy); void bar(OctetRange thingy);

Просмотреть файл

@ -8,7 +8,8 @@
NamedConstructor=Example2(DictForConstructor dict, any any1, object obj1, NamedConstructor=Example2(DictForConstructor dict, any any1, object obj1,
object? obj2, sequence<Dict> seq, optional any any2, object? obj2, sequence<Dict> seq, optional any any2,
optional object obj3, optional object? obj4), optional object obj3, optional object? obj4),
NamedConstructor=Example2((long or record<DOMString, any>) arg1) NamedConstructor=Example2((long or record<DOMString, any>) arg1),
Exposed=Window,
] ]
interface TestExampleInterface { interface TestExampleInterface {
constructor(); constructor();
@ -820,6 +821,7 @@ interface TestExampleInterface {
// If you add things here, add them to TestCodeGen and TestJSImplGen as well // If you add things here, add them to TestCodeGen and TestJSImplGen as well
}; };
[Exposed=Window]
interface TestExampleProxyInterface { interface TestExampleProxyInterface {
getter long longIndexedGetter(unsigned long ix); getter long longIndexedGetter(unsigned long ix);
setter void longIndexedSetter(unsigned long y, long z); setter void longIndexedSetter(unsigned long y, long z);
@ -840,6 +842,7 @@ interface TestExampleWorkerInterface {
[NeedsSubjectPrincipal=NonSystem] attribute boolean needsNonSystemSubjectPrincipalAttr; [NeedsSubjectPrincipal=NonSystem] attribute boolean needsNonSystemSubjectPrincipalAttr;
}; };
[Exposed=Window]
interface TestExampleThrowingConstructorInterface { interface TestExampleThrowingConstructorInterface {
[Throws] [Throws]
constructor(); constructor();

Просмотреть файл

@ -15,7 +15,7 @@ enum MyTestEnum {
"b" "b"
}; };
[JSImplementation="@mozilla.org/test-js-impl-interface;1"] [Exposed=Window, JSImplementation="@mozilla.org/test-js-impl-interface;1"]
interface TestJSImplInterface { interface TestJSImplInterface {
// We don't support multiple constructors (bug 869268) or named constructors // We don't support multiple constructors (bug 869268) or named constructors
// for JS-implemented WebIDL. // for JS-implemented WebIDL.
@ -842,14 +842,17 @@ interface TestJSImplInterface {
// If you add things here, add them to TestCodeGen as well // If you add things here, add them to TestCodeGen as well
}; };
[Exposed=Window]
interface TestCImplementedInterface : TestJSImplInterface { interface TestCImplementedInterface : TestJSImplInterface {
}; };
[Exposed=Window]
interface TestCImplementedInterface2 { interface TestCImplementedInterface2 {
}; };
[NoInterfaceObject, [NoInterfaceObject,
JSImplementation="@mozilla.org/test-js-impl-interface;2"] JSImplementation="@mozilla.org/test-js-impl-interface;2",
Exposed=Window]
interface TestJSImplNoInterfaceObject { interface TestJSImplNoInterfaceObject {
// [Cached] is not supported in JS-implemented WebIDL. // [Cached] is not supported in JS-implemented WebIDL.
//[Cached, Pure] //[Cached, Pure]

Просмотреть файл

@ -4,13 +4,13 @@
* You can obtain one at http://mozilla.org/MPL/2.0/. * You can obtain one at http://mozilla.org/MPL/2.0/.
*/ */
[JSImplementation="@mozilla.org/test-js-impl-interface2;1"] [Exposed=Window, JSImplementation="@mozilla.org/test-js-impl-interface2;1"]
interface TestJSImplInterface2 : TestCImplementedInterface { interface TestJSImplInterface2 : TestCImplementedInterface {
[Throws] [Throws]
constructor(); constructor();
}; };
[JSImplementation="@mozilla.org/test-js-impl-interface3;1"] [Exposed=Window, JSImplementation="@mozilla.org/test-js-impl-interface3;1"]
interface TestJSImplInterface3 : TestCImplementedInterface2 { interface TestJSImplInterface3 : TestCImplementedInterface2 {
[Throws] [Throws]
constructor(); constructor();
@ -18,7 +18,7 @@ interface TestJSImplInterface3 : TestCImplementedInterface2 {
// Important: TestJSImplInterface5 needs to come before TestJSImplInterface6 in // Important: TestJSImplInterface5 needs to come before TestJSImplInterface6 in
// this file to test what it's trying to test. // this file to test what it's trying to test.
[JSImplementation="@mozilla.org/test-js-impl-interface5;1"] [Exposed=Window, JSImplementation="@mozilla.org/test-js-impl-interface5;1"]
interface TestJSImplInterface5 : TestJSImplInterface6 { interface TestJSImplInterface5 : TestJSImplInterface6 {
[Throws] [Throws]
constructor(); constructor();
@ -26,13 +26,13 @@ interface TestJSImplInterface5 : TestJSImplInterface6 {
// Important: TestJSImplInterface6 needs to come after TestJSImplInterface3 in // Important: TestJSImplInterface6 needs to come after TestJSImplInterface3 in
// this file to test what it's trying to test. // this file to test what it's trying to test.
[JSImplementation="@mozilla.org/test-js-impl-interface6;1"] [Exposed=Window, JSImplementation="@mozilla.org/test-js-impl-interface6;1"]
interface TestJSImplInterface6 : TestJSImplInterface3 { interface TestJSImplInterface6 : TestJSImplInterface3 {
[Throws] [Throws]
constructor(); constructor();
}; };
[JSImplementation="@mozilla.org/test-js-impl-interface4;1"] [Exposed=Window, JSImplementation="@mozilla.org/test-js-impl-interface4;1"]
interface TestJSImplInterface4 : EventTarget { interface TestJSImplInterface4 : EventTarget {
[Throws] [Throws]
constructor(); constructor();

Просмотреть файл

@ -24,7 +24,7 @@
* *
*/ */
[ChromeOnly] [ChromeOnly, Exposed=Window]
interface DOMLocalization : Localization { interface DOMLocalization : Localization {
/** /**
* Constructor arguments: * Constructor arguments:

Просмотреть файл

@ -20,7 +20,7 @@ enum DebuggerNotificationType {
"domEvent", "domEvent",
}; };
[ChromeOnly] [ChromeOnly, Exposed=Window]
interface DebuggerNotification { interface DebuggerNotification {
readonly attribute DebuggerNotificationType type; readonly attribute DebuggerNotificationType type;
@ -37,7 +37,7 @@ enum CallbackDebuggerNotificationPhase {
// A base notification type for notifications that are dispatched as pairs with // A base notification type for notifications that are dispatched as pairs with
// a before and after notification. // a before and after notification.
[ChromeOnly] [ChromeOnly, Exposed=Window]
interface CallbackDebuggerNotification : DebuggerNotification { interface CallbackDebuggerNotification : DebuggerNotification {
readonly attribute CallbackDebuggerNotificationPhase phase; readonly attribute CallbackDebuggerNotificationPhase phase;
}; };
@ -50,7 +50,7 @@ enum EventCallbackDebuggerNotificationType {
}; };
// A notification that about the engine calling a DOM event handler. // A notification that about the engine calling a DOM event handler.
[ChromeOnly] [ChromeOnly, Exposed=Window]
interface EventCallbackDebuggerNotification : CallbackDebuggerNotification { interface EventCallbackDebuggerNotification : CallbackDebuggerNotification {
readonly attribute Event event; readonly attribute Event event;
readonly attribute EventCallbackDebuggerNotificationType targetType; readonly attribute EventCallbackDebuggerNotificationType targetType;

Просмотреть файл

@ -16,7 +16,8 @@
* are added to the document, and is removed in case all links * are added to the document, and is removed in case all links
* of that type are removed from it. * of that type are removed from it.
*/ */
[NoInterfaceObject] [NoInterfaceObject,
Exposed=Window]
interface DocumentL10n : DOMLocalization { interface DocumentL10n : DOMLocalization {
/** /**
* A promise which gets resolved when the initial DOM localization resources * A promise which gets resolved when the initial DOM localization resources

Просмотреть файл

@ -20,7 +20,7 @@ enum FlexPhysicalDirection {
"vertical-bt", "vertical-bt",
}; };
[ChromeOnly] [ChromeOnly, Exposed=Window]
interface Flex interface Flex
{ {
sequence<FlexLineValues> getLines(); sequence<FlexLineValues> getLines();
@ -51,7 +51,7 @@ interface Flex
*/ */
enum FlexLineGrowthState { "shrinking", "growing" }; enum FlexLineGrowthState { "shrinking", "growing" };
[ChromeOnly] [ChromeOnly, Exposed=Window]
interface FlexLineValues interface FlexLineValues
{ {
readonly attribute FlexLineGrowthState growthState; readonly attribute FlexLineGrowthState growthState;
@ -79,7 +79,7 @@ enum FlexItemClampState {
"unclamped", "clamped_to_min", "clamped_to_max" "unclamped", "clamped_to_min", "clamped_to_max"
}; };
[ChromeOnly] [ChromeOnly, Exposed=Window]
interface FlexItemValues interface FlexItemValues
{ {
readonly attribute Node? node; readonly attribute Node? node;

Просмотреть файл

@ -9,7 +9,8 @@
* *
* See InspectorUtils.h for documentation on these methods. * See InspectorUtils.h for documentation on these methods.
*/ */
[Func="nsContentUtils::IsCallerChromeOrFuzzingEnabled"] [Func="nsContentUtils::IsCallerChromeOrFuzzingEnabled",
Exposed=Window]
namespace InspectorUtils { namespace InspectorUtils {
// documentOnly tells whether user and UA sheets should get included. // documentOnly tells whether user and UA sheets should get included.
sequence<StyleSheet> getAllStyleSheets(Document document, optional boolean documentOnly = false); sequence<StyleSheet> getAllStyleSheets(Document document, optional boolean documentOnly = false);
@ -136,7 +137,8 @@ dictionary InspectorFontFeature {
required DOMString languageSystem; required DOMString languageSystem;
}; };
[Func="nsContentUtils::IsCallerChromeOrFuzzingEnabled"] [Func="nsContentUtils::IsCallerChromeOrFuzzingEnabled",
Exposed=Window]
interface InspectorFontFace { interface InspectorFontFace {
// An indication of how we found this font during font-matching. // An indication of how we found this font during font-matching.
// Note that the same physical font may have been found in multiple ways within a range. // Note that the same physical font may have been found in multiple ways within a range.

Просмотреть файл

@ -16,7 +16,7 @@ interface mixin JSWindowActor {
optional any obj); optional any obj);
}; };
[ChromeOnly] [ChromeOnly, Exposed=Window]
interface JSWindowActorParent { interface JSWindowActorParent {
[ChromeOnly] [ChromeOnly]
constructor(); constructor();
@ -33,7 +33,7 @@ interface JSWindowActorParent {
}; };
JSWindowActorParent includes JSWindowActor; JSWindowActorParent includes JSWindowActor;
[ChromeOnly] [ChromeOnly, Exposed=Window]
interface JSWindowActorChild { interface JSWindowActorChild {
[ChromeOnly] [ChromeOnly]
constructor(); constructor();
@ -71,6 +71,7 @@ JSWindowActorChild includes JSWindowActor;
* NOTE: This isn't marked as ChromeOnly, as it has no interface object, and * NOTE: This isn't marked as ChromeOnly, as it has no interface object, and
* thus cannot be conditionally exposed. * thus cannot be conditionally exposed.
*/ */
[Exposed=Window]
callback interface MozObserverCallback { callback interface MozObserverCallback {
void observe(nsISupports subject, ByteString topic, DOMString? data); void observe(nsISupports subject, ByteString topic, DOMString? data);
}; };

Просмотреть файл

@ -10,7 +10,8 @@ dictionary L10nOverlaysError {
DOMString l10nName; DOMString l10nName;
}; };
[ChromeOnly] [ChromeOnly,
Exposed=Window]
namespace L10nOverlays { namespace L10nOverlays {
const unsigned short ERROR_FORBIDDEN_TYPE = 1; const unsigned short ERROR_FORBIDDEN_TYPE = 1;
const unsigned short ERROR_NAMED_ELEMENT_MISSING = 2; const unsigned short ERROR_NAMED_ELEMENT_MISSING = 2;

Просмотреть файл

@ -62,7 +62,7 @@ callback GenerateMessages = Promise<any> (sequence<DOMString> aResourceIds);
* - formatMessages - format multiple compound messages * - formatMessages - format multiple compound messages
* *
*/ */
[ChromeOnly] [ChromeOnly, Exposed=Window]
interface Localization { interface Localization {
/** /**
* Constructor arguments: * Constructor arguments:

Просмотреть файл

@ -203,6 +203,7 @@ dictionary ReceiveMessageArgument
FrameLoader targetFrameLoader; FrameLoader targetFrameLoader;
}; };
[Exposed=Window]
callback interface MessageListener callback interface MessageListener
{ {
/** /**
@ -220,7 +221,7 @@ callback interface MessageListener
any receiveMessage(ReceiveMessageArgument argument); any receiveMessage(ReceiveMessageArgument argument);
}; };
[ChromeOnly] [ChromeOnly, Exposed=Window]
interface MessageListenerManager interface MessageListenerManager
{ {
// All the methods are pulled in via mixin. // All the methods are pulled in via mixin.
@ -286,7 +287,7 @@ interface mixin MessageListenerManagerMixin
* messages that are only delivered to its one parent-process message * messages that are only delivered to its one parent-process message
* manager. * manager.
*/ */
[ChromeOnly] [ChromeOnly, Exposed=Window]
interface MessageSender : MessageListenerManager interface MessageSender : MessageListenerManager
{ {
// All the methods are pulled in via mixin. // All the methods are pulled in via mixin.
@ -336,7 +337,7 @@ interface mixin MessageSenderMixin {
readonly attribute DOMString remoteType; readonly attribute DOMString remoteType;
}; };
[ChromeOnly] [ChromeOnly, Exposed=Window]
interface SyncMessageSender : MessageSender interface SyncMessageSender : MessageSender
{ {
// All the methods are pulled in via mixin. // All the methods are pulled in via mixin.
@ -379,7 +380,7 @@ interface mixin SyncMessageSenderMixin
* ChildProcessMessageManager is used in a child process to communicate with the parent * ChildProcessMessageManager is used in a child process to communicate with the parent
* process. * process.
*/ */
[ChromeOnly] [ChromeOnly, Exposed=Window]
interface ChildProcessMessageManager : SyncMessageSender interface ChildProcessMessageManager : SyncMessageSender
{ {
}; };
@ -487,7 +488,7 @@ interface mixin GlobalProcessScriptLoader
readonly attribute MozWritableSharedMap sharedData; readonly attribute MozWritableSharedMap sharedData;
}; };
[ChromeOnly] [ChromeOnly, Exposed=Window]
interface ContentFrameMessageManager : EventTarget interface ContentFrameMessageManager : EventTarget
{ {
/** /**
@ -521,7 +522,7 @@ ContentFrameMessageManager includes SyncMessageSenderMixin;
ContentFrameMessageManager includes MessageSenderMixin; ContentFrameMessageManager includes MessageSenderMixin;
ContentFrameMessageManager includes MessageListenerManagerMixin; ContentFrameMessageManager includes MessageListenerManagerMixin;
[ChromeOnly] [ChromeOnly, Exposed=Window]
interface ContentProcessMessageManager interface ContentProcessMessageManager
{ {
/** /**
@ -544,7 +545,7 @@ ContentProcessMessageManager includes MessageListenerManagerMixin;
* through a window message manager will broadcast the message to all frame message * through a window message manager will broadcast the message to all frame message
* managers within its window. * managers within its window.
*/ */
[ChromeOnly] [ChromeOnly, Exposed=Window]
interface MessageBroadcaster : MessageListenerManager interface MessageBroadcaster : MessageListenerManager
{ {
/** /**
@ -580,7 +581,7 @@ interface MessageBroadcaster : MessageListenerManager
/** /**
* ChromeMessageBroadcaster is used for window and group message managers. * ChromeMessageBroadcaster is used for window and group message managers.
*/ */
[ChromeOnly] [ChromeOnly, Exposed=Window]
interface ChromeMessageBroadcaster : MessageBroadcaster interface ChromeMessageBroadcaster : MessageBroadcaster
{ {
}; };
@ -590,14 +591,14 @@ ChromeMessageBroadcaster includes FrameScriptLoader;
* ParentProcessMessageManager is used in a parent process to communicate with all the * ParentProcessMessageManager is used in a parent process to communicate with all the
* child processes. * child processes.
*/ */
[ChromeOnly] [ChromeOnly, Exposed=Window]
interface ParentProcessMessageManager : MessageBroadcaster interface ParentProcessMessageManager : MessageBroadcaster
{ {
}; };
ParentProcessMessageManager includes ProcessScriptLoader; ParentProcessMessageManager includes ProcessScriptLoader;
ParentProcessMessageManager includes GlobalProcessScriptLoader; ParentProcessMessageManager includes GlobalProcessScriptLoader;
[ChromeOnly] [ChromeOnly, Exposed=Window]
interface ChromeMessageSender : MessageSender interface ChromeMessageSender : MessageSender
{ {
}; };
@ -607,7 +608,7 @@ ChromeMessageSender includes FrameScriptLoader;
* ProcessMessageManager is used in a parent process to communicate with a child process * ProcessMessageManager is used in a parent process to communicate with a child process
* (or with the process itself in a single-process scenario). * (or with the process itself in a single-process scenario).
*/ */
[ChromeOnly] [ChromeOnly, Exposed=Window]
interface ProcessMessageManager : MessageSender interface ProcessMessageManager : MessageSender
{ {
}; };

Просмотреть файл

@ -4,6 +4,7 @@
* You can obtain one at http://mozilla.org/MPL/2.0/. * You can obtain one at http://mozilla.org/MPL/2.0/.
*/ */
[Exposed=Window]
callback interface MozDocumentCallback { callback interface MozDocumentCallback {
void onNewDocument(MozDocumentMatcher matcher, WindowProxy window); void onNewDocument(MozDocumentMatcher matcher, WindowProxy window);
void onPreloadDocument(MozDocumentMatcher matcher, LoadInfo loadInfo); void onPreloadDocument(MozDocumentMatcher matcher, LoadInfo loadInfo);

Просмотреть файл

@ -6,7 +6,7 @@
typedef any StructuredClonable; typedef any StructuredClonable;
[ChromeOnly] [ChromeOnly, Exposed=Window]
interface MozSharedMapChangeEvent : Event { interface MozSharedMapChangeEvent : Event {
[Cached, Constant] [Cached, Constant]
readonly attribute sequence<DOMString> changedKeys; readonly attribute sequence<DOMString> changedKeys;
@ -16,7 +16,7 @@ dictionary MozSharedMapChangeEventInit : EventInit {
required sequence<DOMString> changedKeys; required sequence<DOMString> changedKeys;
}; };
[ChromeOnly] [ChromeOnly, Exposed=Window]
interface MozSharedMap : EventTarget { interface MozSharedMap : EventTarget {
boolean has(DOMString name); boolean has(DOMString name);
@ -26,7 +26,7 @@ interface MozSharedMap : EventTarget {
iterable<DOMString, StructuredClonable>; iterable<DOMString, StructuredClonable>;
}; };
[ChromeOnly] [ChromeOnly, Exposed=Window]
interface MozWritableSharedMap : MozSharedMap { interface MozWritableSharedMap : MozSharedMap {
/** /**
* Sets the given key to the given structured-clonable value. The value is * Sets the given key to the given structured-clonable value. The value is

Просмотреть файл

@ -3,7 +3,7 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this * License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
[ChromeOnly] [ChromeOnly, Exposed=Window]
interface MozStorageAsyncStatementParams interface MozStorageAsyncStatementParams
{ {
readonly attribute unsigned long length; readonly attribute unsigned long length;

Просмотреть файл

@ -3,7 +3,7 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this * License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
[ChromeOnly] [ChromeOnly, Exposed=Window]
interface MozStorageStatementParams interface MozStorageStatementParams
{ {
readonly attribute unsigned long length; readonly attribute unsigned long length;

Просмотреть файл

@ -3,7 +3,7 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this * License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
[ChromeOnly] [ChromeOnly, Exposed=Window]
interface MozStorageStatementRow interface MozStorageStatementRow
{ {
[Throws] [Throws]

Просмотреть файл

@ -29,6 +29,7 @@ enum PromiseDebuggingState { "pending", "fulfilled", "rejected" };
* this interface are responsible for presenting the information * this interface are responsible for presenting the information
* in a meaningful manner. * in a meaningful manner.
*/ */
[Exposed=Window]
callback interface UncaughtRejectionObserver { callback interface UncaughtRejectionObserver {
/** /**
* A Promise has been left in `rejected` state and is the * A Promise has been left in `rejected` state and is the

Просмотреть файл

@ -6,7 +6,8 @@
interface nsIDocShell; interface nsIDocShell;
interface nsIWebNavigation; interface nsIWebNavigation;
[HTMLConstructor, Func="IsChromeOrXBL"] [HTMLConstructor, Func="IsChromeOrXBL",
Exposed=Window]
interface XULFrameElement : XULElement interface XULFrameElement : XULElement
{ {
readonly attribute nsIDocShell? docShell; readonly attribute nsIDocShell? docShell;

Просмотреть файл

@ -5,7 +5,8 @@
* You can obtain one at http://mozilla.org/MPL/2.0/. * You can obtain one at http://mozilla.org/MPL/2.0/.
*/ */
[HTMLConstructor, Func="IsChromeOrXBL"] [HTMLConstructor, Func="IsChromeOrXBL",
Exposed=Window]
interface XULMenuElement : XULElement { interface XULMenuElement : XULElement {
attribute Element? activeChild; attribute Element? activeChild;

Просмотреть файл

@ -5,7 +5,8 @@
* You can obtain one at http://mozilla.org/MPL/2.0/. * You can obtain one at http://mozilla.org/MPL/2.0/.
*/ */
[HTMLConstructor, Func="IsChromeOrXBL"] [HTMLConstructor, Func="IsChromeOrXBL",
Exposed=Window]
interface XULTextElement : XULElement { interface XULTextElement : XULElement {
attribute boolean disabled; attribute boolean disabled;
attribute DOMString value; attribute DOMString value;

Просмотреть файл

@ -13,7 +13,8 @@ dictionary TreeCellInfo {
DOMString childElt = ""; DOMString childElt = "";
}; };
[HTMLConstructor, Func="IsChromeOrXBL"] [HTMLConstructor, Func="IsChromeOrXBL",
Exposed=Window]
interface XULTreeElement : XULElement interface XULTreeElement : XULElement
{ {
/** /**

Просмотреть файл

@ -30,7 +30,8 @@ dictionary APZBucket {
sequence<ScrollFrameData> scrollFrames; sequence<ScrollFrameData> scrollFrames;
}; };
[Pref="apz.test.logging_enabled"] [Pref="apz.test.logging_enabled",
Exposed=Window]
namespace APZHitResultFlags { namespace APZHitResultFlags {
// These constants should be kept in sync with mozilla::gfx::CompositorHitTestInfo // These constants should be kept in sync with mozilla::gfx::CompositorHitTestInfo
const unsigned short INVISIBLE = 0; const unsigned short INVISIBLE = 0;

Просмотреть файл

@ -10,6 +10,7 @@
* liability, trademark and document use rules apply. * liability, trademark and document use rules apply.
*/ */
[Exposed=Window]
interface AbstractRange { interface AbstractRange {
[BinaryName="GetStartContainer"] [BinaryName="GetStartContainer"]
readonly attribute Node startContainer; readonly attribute Node startContainer;

Просмотреть файл

@ -4,7 +4,8 @@
* You can obtain one at http://mozilla.org/MPL/2.0/. * You can obtain one at http://mozilla.org/MPL/2.0/.
*/ */
[Func="mozilla::dom::AccessibleNode::IsAOMEnabled"] [Func="mozilla::dom::AccessibleNode::IsAOMEnabled",
Exposed=Window]
interface AccessibleNode { interface AccessibleNode {
readonly attribute DOMString computedRole; readonly attribute DOMString computedRole;
[Frozen, Cached, Pure] [Frozen, Cached, Pure]

Просмотреть файл

@ -1,4 +1,5 @@
[Func="mozilla::AddonManagerWebAPI::IsAPIEnabled"] [Func="mozilla::AddonManagerWebAPI::IsAPIEnabled",
Exposed=Window]
interface AddonEvent : Event { interface AddonEvent : Event {
constructor(DOMString type, AddonEventInit eventInitDict); constructor(DOMString type, AddonEventInit eventInitDict);

Просмотреть файл

@ -6,7 +6,8 @@
/* We need a JSImplementation but cannot get one without a contract ID. /* We need a JSImplementation but cannot get one without a contract ID.
Since Addon and AddonInstall are only ever created from JS they don't need Since Addon and AddonInstall are only ever created from JS they don't need
real contract IDs. */ real contract IDs. */
[ChromeOnly, JSImplementation="dummy"] [ChromeOnly, JSImplementation="dummy",
Exposed=Window]
interface Addon { interface Addon {
// The add-on's ID. // The add-on's ID.
readonly attribute DOMString id; readonly attribute DOMString id;
@ -31,7 +32,8 @@ interface Addon {
Promise<void> setEnabled(boolean value); Promise<void> setEnabled(boolean value);
}; };
[ChromeOnly, JSImplementation="dummy"] [ChromeOnly, JSImplementation="dummy",
Exposed=Window]
interface AddonInstall : EventTarget { interface AddonInstall : EventTarget {
// One of the STATE_* symbols from AddonManager.jsm // One of the STATE_* symbols from AddonManager.jsm
readonly attribute DOMString state; readonly attribute DOMString state;
@ -57,7 +59,8 @@ dictionary addonInstallOptions {
[HeaderFile="mozilla/AddonManagerWebAPI.h", [HeaderFile="mozilla/AddonManagerWebAPI.h",
Func="mozilla::AddonManagerWebAPI::IsAPIEnabled", Func="mozilla::AddonManagerWebAPI::IsAPIEnabled",
JSImplementation="@mozilla.org/addon-web-api/manager;1", JSImplementation="@mozilla.org/addon-web-api/manager;1",
WantsEventListenerHooks] WantsEventListenerHooks,
Exposed=Window]
interface AddonManager : EventTarget { interface AddonManager : EventTarget {
/** /**
* Gets information about an add-on * Gets information about an add-on

Просмотреть файл

@ -17,7 +17,8 @@ dictionary AnalyserOptions : AudioNodeOptions {
double smoothingTimeConstant = 0.8; double smoothingTimeConstant = 0.8;
}; };
[Pref="dom.webaudio.enabled"] [Pref="dom.webaudio.enabled",
Exposed=Window]
interface AnalyserNode : AudioNode { interface AnalyserNode : AudioNode {
[Throws] [Throws]
constructor(BaseAudioContext context, constructor(BaseAudioContext context,

Просмотреть файл

@ -14,6 +14,7 @@ enum AnimationPlayState { "idle", "running", "paused", "finished" };
enum AnimationReplaceState { "active", "removed", "persisted" }; enum AnimationReplaceState { "active", "removed", "persisted" };
[Exposed=Window]
interface Animation : EventTarget { interface Animation : EventTarget {
[Throws] [Throws]
constructor(optional AnimationEffect? effect = null, constructor(optional AnimationEffect? effect = null,

Просмотреть файл

@ -55,7 +55,8 @@ dictionary ComputedEffectTiming : EffectTiming {
unrestricted double? currentIteration = null; unrestricted double? currentIteration = null;
}; };
[Func="Document::IsWebAnimationsEnabled"] [Func="Document::IsWebAnimationsEnabled",
Exposed=Window]
interface AnimationEffect { interface AnimationEffect {
EffectTiming getTiming(); EffectTiming getTiming();
[BinaryName="getComputedTimingAsDict"] [BinaryName="getComputedTimingAsDict"]

Просмотреть файл

@ -11,6 +11,7 @@
* liability, trademark and document use rules apply. * liability, trademark and document use rules apply.
*/ */
[Exposed=Window]
interface AnimationEvent : Event { interface AnimationEvent : Event {
constructor(DOMString type, optional AnimationEventInit eventInitDict = {}); constructor(DOMString type, optional AnimationEventInit eventInitDict = {});

Просмотреть файл

@ -10,7 +10,8 @@
* liability, trademark and document use rules apply. * liability, trademark and document use rules apply.
*/ */
[Func="Document::IsWebAnimationsEnabled"] [Func="Document::IsWebAnimationsEnabled",
Exposed=Window]
interface AnimationPlaybackEvent : Event { interface AnimationPlaybackEvent : Event {
constructor(DOMString type, constructor(DOMString type,
optional AnimationPlaybackEventInit eventInitDict = {}); optional AnimationPlaybackEventInit eventInitDict = {});

Просмотреть файл

@ -10,7 +10,8 @@
* liability, trademark and document use rules apply. * liability, trademark and document use rules apply.
*/ */
[Func="Document::AreWebAnimationsTimelinesEnabled"] [Func="Document::AreWebAnimationsTimelinesEnabled",
Exposed=Window]
interface AnimationTimeline { interface AnimationTimeline {
[BinaryName="currentTimeAsDouble"] [BinaryName="currentTimeAsDouble"]
readonly attribute double? currentTime; readonly attribute double? currentTime;

Просмотреть файл

@ -16,7 +16,7 @@
* the inserted content. * the inserted content.
*/ */
[ChromeOnly] [ChromeOnly, Exposed=Window]
interface AnonymousContent { interface AnonymousContent {
/** /**
* Get the text content of an element inside this custom anonymous content. * Get the text content of an element inside this custom anonymous content.

Просмотреть файл

@ -10,6 +10,7 @@
* liability, trademark and document use rules apply. * liability, trademark and document use rules apply.
*/ */
[Exposed=Window]
interface Attr : Node { interface Attr : Node {
readonly attribute DOMString localName; readonly attribute DOMString localName;
[CEReactions, SetterNeedsSubjectPrincipal=NonSystem, SetterThrows] [CEReactions, SetterNeedsSubjectPrincipal=NonSystem, SetterThrows]

Просмотреть файл

@ -16,7 +16,8 @@ dictionary AudioBufferOptions {
required float sampleRate; required float sampleRate;
}; };
[Pref="dom.webaudio.enabled"] [Pref="dom.webaudio.enabled",
Exposed=Window]
interface AudioBuffer { interface AudioBuffer {
[Throws] [Throws]
constructor(AudioBufferOptions options); constructor(AudioBufferOptions options);

Просмотреть файл

@ -19,7 +19,8 @@ dictionary AudioBufferSourceOptions {
float playbackRate = 1; float playbackRate = 1;
}; };
[Pref="dom.webaudio.enabled"] [Pref="dom.webaudio.enabled",
Exposed=Window]
interface AudioBufferSourceNode : AudioScheduledSourceNode { interface AudioBufferSourceNode : AudioScheduledSourceNode {
constructor(BaseAudioContext context, constructor(BaseAudioContext context,
optional AudioBufferSourceOptions options = {}); optional AudioBufferSourceOptions options = {});

Просмотреть файл

@ -19,7 +19,8 @@ dictionary AudioTimestamp {
DOMHighResTimeStamp performanceTime; DOMHighResTimeStamp performanceTime;
}; };
[Pref="dom.webaudio.enabled"] [Pref="dom.webaudio.enabled",
Exposed=Window]
interface AudioContext : BaseAudioContext { interface AudioContext : BaseAudioContext {
[Throws] [Throws]
constructor(optional AudioContextOptions contextOptions = {}); constructor(optional AudioContextOptions contextOptions = {});

Просмотреть файл

@ -10,7 +10,8 @@
* liability, trademark and document use rules apply. * liability, trademark and document use rules apply.
*/ */
[Pref="dom.webaudio.enabled"] [Pref="dom.webaudio.enabled",
Exposed=Window]
interface AudioDestinationNode : AudioNode { interface AudioDestinationNode : AudioNode {
readonly attribute unsigned long maxChannelCount; readonly attribute unsigned long maxChannelCount;

Просмотреть файл

@ -10,7 +10,8 @@
* liability, trademark and document use rules apply. * liability, trademark and document use rules apply.
*/ */
[Pref="dom.webaudio.enabled"] [Pref="dom.webaudio.enabled",
Exposed=Window]
interface AudioListener { interface AudioListener {
// Uses a 3D cartesian coordinate system // Uses a 3D cartesian coordinate system
void setPosition(double x, double y, double z); void setPosition(double x, double y, double z);

Просмотреть файл

@ -27,7 +27,8 @@ dictionary AudioNodeOptions {
ChannelInterpretation channelInterpretation; ChannelInterpretation channelInterpretation;
}; };
[Pref="dom.webaudio.enabled"] [Pref="dom.webaudio.enabled",
Exposed=Window]
interface AudioNode : EventTarget { interface AudioNode : EventTarget {
[Throws] [Throws]

Просмотреть файл

@ -15,7 +15,8 @@ enum AutomationRate {
"k-rate" "k-rate"
}; };
[Pref="dom.webaudio.enabled"] [Pref="dom.webaudio.enabled",
Exposed=Window]
interface AudioParam { interface AudioParam {
attribute float value; attribute float value;

Просмотреть файл

@ -10,7 +10,8 @@
* liability, trademark and document use rules apply. * liability, trademark and document use rules apply.
*/ */
[Pref="dom.audioworklet.enabled"] [Pref="dom.audioworklet.enabled",
Exposed=Window]
interface AudioParamMap { interface AudioParamMap {
readonly maplike<DOMString, AudioParam>; readonly maplike<DOMString, AudioParam>;
}; };

Просмотреть файл

@ -10,7 +10,8 @@
* liability, trademark and document use rules apply. * liability, trademark and document use rules apply.
*/ */
[Pref="dom.webaudio.enabled"] [Pref="dom.webaudio.enabled",
Exposed=Window]
interface AudioProcessingEvent : Event { interface AudioProcessingEvent : Event {
readonly attribute double playbackTime; readonly attribute double playbackTime;

Просмотреть файл

@ -10,6 +10,7 @@
* liability, trademark and document use rules apply. * liability, trademark and document use rules apply.
*/ */
[Exposed=Window]
interface AudioScheduledSourceNode : AudioNode { interface AudioScheduledSourceNode : AudioNode {
attribute EventHandler onended; attribute EventHandler onended;
[Throws] [Throws]

Просмотреть файл

@ -7,7 +7,8 @@
* http://www.whatwg.org/specs/web-apps/current-work/#audiotrack * http://www.whatwg.org/specs/web-apps/current-work/#audiotrack
*/ */
[Pref="media.track.enabled"] [Pref="media.track.enabled",
Exposed=Window]
interface AudioTrack { interface AudioTrack {
readonly attribute DOMString id; readonly attribute DOMString id;
readonly attribute DOMString kind; readonly attribute DOMString kind;

Просмотреть файл

@ -7,7 +7,8 @@
* http://www.whatwg.org/specs/web-apps/current-work/#audiotracklist * http://www.whatwg.org/specs/web-apps/current-work/#audiotracklist
*/ */
[Pref="media.track.enabled"] [Pref="media.track.enabled",
Exposed=Window]
interface AudioTrackList : EventTarget { interface AudioTrackList : EventTarget {
readonly attribute unsigned long length; readonly attribute unsigned long length;
getter AudioTrack (unsigned long index); getter AudioTrack (unsigned long index);

Просмотреть файл

@ -12,4 +12,4 @@
[Exposed=Window, SecureContext, Pref="dom.audioworklet.enabled"] [Exposed=Window, SecureContext, Pref="dom.audioworklet.enabled"]
interface AudioWorklet : Worklet { interface AudioWorklet : Worklet {
}; };

Просмотреть файл

@ -18,7 +18,8 @@ dictionary AudioWorkletNodeOptions : AudioNodeOptions {
object? processorOptions = null; object? processorOptions = null;
}; };
[SecureContext, Pref="dom.audioworklet.enabled"] [SecureContext, Pref="dom.audioworklet.enabled",
Exposed=Window]
interface AudioWorkletNode : AudioNode { interface AudioWorkletNode : AudioNode {
[Throws] [Throws]
constructor(BaseAudioContext context, DOMString name, constructor(BaseAudioContext context, DOMString name,

Просмотреть файл

@ -4,6 +4,7 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. * file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/ */
[Exposed=Window]
interface BarProp interface BarProp
{ {
[Throws, NeedsCallerType] [Throws, NeedsCallerType]

Просмотреть файл

@ -19,6 +19,7 @@ enum AudioContextState {
"closed" "closed"
}; };
[Exposed=Window]
interface BaseAudioContext : EventTarget { interface BaseAudioContext : EventTarget {
readonly attribute AudioDestinationNode destination; readonly attribute AudioDestinationNode destination;
readonly attribute float sampleRate; readonly attribute float sampleRate;

Просмотреть файл

@ -10,6 +10,7 @@
* liability, trademark and document use rules apply. * liability, trademark and document use rules apply.
*/ */
[Exposed=Window]
interface BatteryManager : EventTarget { interface BatteryManager : EventTarget {
readonly attribute boolean charging; readonly attribute boolean charging;
readonly attribute unrestricted double chargingTime; readonly attribute unrestricted double chargingTime;

Просмотреть файл

@ -7,6 +7,7 @@
* http://www.whatwg.org/specs/web-apps/current-work/#beforeunloadevent * http://www.whatwg.org/specs/web-apps/current-work/#beforeunloadevent
*/ */
[Exposed=Window]
interface BeforeUnloadEvent : Event { interface BeforeUnloadEvent : Event {
attribute DOMString returnValue; attribute DOMString returnValue;
}; };

Просмотреть файл

@ -29,7 +29,8 @@ dictionary BiquadFilterOptions : AudioNodeOptions {
float gain = 0; float gain = 0;
}; };
[Pref="dom.webaudio.enabled"] [Pref="dom.webaudio.enabled",
Exposed=Window]
interface BiquadFilterNode : AudioNode { interface BiquadFilterNode : AudioNode {
[Throws] [Throws]
constructor(BaseAudioContext context, constructor(BaseAudioContext context,

Просмотреть файл

@ -7,6 +7,7 @@
* https://w3c.github.io/mediacapture-record/#blobevent-section * https://w3c.github.io/mediacapture-record/#blobevent-section
*/ */
[Exposed=Window]
interface BlobEvent : Event interface BlobEvent : Event
{ {
constructor(DOMString type, optional BlobEventInit eventInitDict = {}); constructor(DOMString type, optional BlobEventInit eventInitDict = {});

Просмотреть файл

@ -4,5 +4,6 @@
* You can obtain one at http://mozilla.org/MPL/2.0/. * You can obtain one at http://mozilla.org/MPL/2.0/.
*/ */
[Exposed=Window]
interface CDATASection : Text { interface CDATASection : Text {
}; };

Просмотреть файл

@ -11,6 +11,7 @@
* liability, trademark and document use rules apply. * liability, trademark and document use rules apply.
*/ */
[Exposed=Window]
namespace CSS { namespace CSS {
[Throws] [Throws]
boolean supports(DOMString property, DOMString value); boolean supports(DOMString property, DOMString value);

Просмотреть файл

@ -1,3 +1,4 @@
[Exposed=Window]
interface CSS2Properties : CSSStyleDeclaration { interface CSS2Properties : CSSStyleDeclaration {
${props} ${props}
}; };

Просмотреть файл

@ -11,7 +11,8 @@
*/ */
[Func="Document::IsWebAnimationsGetAnimationsEnabled", [Func="Document::IsWebAnimationsGetAnimationsEnabled",
HeaderFile="nsAnimationManager.h"] HeaderFile="nsAnimationManager.h",
Exposed=Window]
interface CSSAnimation : Animation { interface CSSAnimation : Animation {
[Constant] readonly attribute DOMString animationName; [Constant] readonly attribute DOMString animationName;
}; };

Просмотреть файл

@ -8,6 +8,7 @@
*/ */
// https://drafts.csswg.org/css-conditional/#the-cssconditionrule-interface // https://drafts.csswg.org/css-conditional/#the-cssconditionrule-interface
[Exposed=Window]
interface CSSConditionRule : CSSGroupingRule { interface CSSConditionRule : CSSGroupingRule {
[SetterThrows] [SetterThrows]
attribute DOMString conditionText; attribute DOMString conditionText;

Просмотреть файл

@ -8,6 +8,7 @@
*/ */
// https://drafts.csswg.org/css-counter-styles-3/#the-csscounterstylerule-interface // https://drafts.csswg.org/css-counter-styles-3/#the-csscounterstylerule-interface
[Exposed=Window]
interface CSSCounterStyleRule : CSSRule { interface CSSCounterStyleRule : CSSRule {
attribute DOMString name; attribute DOMString name;
attribute DOMString system; attribute DOMString system;

Просмотреть файл

@ -10,6 +10,7 @@
// https://drafts.csswg.org/css-fonts/#om-fontface // https://drafts.csswg.org/css-fonts/#om-fontface
// But we implement a very old draft, apparently.... // But we implement a very old draft, apparently....
// See bug 1058408 for implementing the current spec. // See bug 1058408 for implementing the current spec.
[Exposed=Window]
interface CSSFontFaceRule : CSSRule { interface CSSFontFaceRule : CSSRule {
[SameObject] readonly attribute CSSStyleDeclaration style; [SameObject] readonly attribute CSSStyleDeclaration style;
}; };

Просмотреть файл

@ -9,6 +9,7 @@
// https://drafts.csswg.org/css-fonts/#om-fontfeaturevalues // https://drafts.csswg.org/css-fonts/#om-fontfeaturevalues
// but we don't implement anything remotely resembling the spec. // but we don't implement anything remotely resembling the spec.
[Exposed=Window]
interface CSSFontFeatureValuesRule : CSSRule { interface CSSFontFeatureValuesRule : CSSRule {
[SetterThrows] [SetterThrows]
attribute DOMString fontFamily; attribute DOMString fontFamily;

Просмотреть файл

@ -8,6 +8,7 @@
*/ */
// https://drafts.csswg.org/cssom/#cssgroupingrule // https://drafts.csswg.org/cssom/#cssgroupingrule
[Exposed=Window]
interface CSSGroupingRule : CSSRule { interface CSSGroupingRule : CSSRule {
[SameObject] readonly attribute CSSRuleList cssRules; [SameObject] readonly attribute CSSRuleList cssRules;
[Throws] [Throws]

Просмотреть файл

@ -8,6 +8,7 @@
*/ */
// https://drafts.csswg.org/cssom/#cssimportrule // https://drafts.csswg.org/cssom/#cssimportrule
[Exposed=Window]
interface CSSImportRule : CSSRule { interface CSSImportRule : CSSRule {
readonly attribute DOMString href; readonly attribute DOMString href;
// Per spec, the .media is never null, but in our implementation it can // Per spec, the .media is never null, but in our implementation it can

Просмотреть файл

@ -8,6 +8,7 @@
*/ */
// https://drafts.csswg.org/css-animations/#interface-csskeyframerule // https://drafts.csswg.org/css-animations/#interface-csskeyframerule
[Exposed=Window]
interface CSSKeyframeRule : CSSRule { interface CSSKeyframeRule : CSSRule {
attribute DOMString keyText; attribute DOMString keyText;
[SameObject, PutForwards=cssText] readonly attribute CSSStyleDeclaration style; [SameObject, PutForwards=cssText] readonly attribute CSSStyleDeclaration style;

Просмотреть файл

@ -8,6 +8,7 @@
*/ */
// https://drafts.csswg.org/css-animations/#interface-csskeyframesrule // https://drafts.csswg.org/css-animations/#interface-csskeyframesrule
[Exposed=Window]
interface CSSKeyframesRule : CSSRule { interface CSSKeyframesRule : CSSRule {
attribute DOMString name; attribute DOMString name;
readonly attribute CSSRuleList cssRules; readonly attribute CSSRuleList cssRules;

Просмотреть файл

@ -12,6 +12,7 @@
// https://drafts.csswg.org/css-conditional/#the-cssmediarule-interface // https://drafts.csswg.org/css-conditional/#the-cssmediarule-interface
// except they disagree with each other. We're taking the inheritance from // except they disagree with each other. We're taking the inheritance from
// css-conditional and the PutForwards behavior from cssom. // css-conditional and the PutForwards behavior from cssom.
[Exposed=Window]
interface CSSMediaRule : CSSConditionRule { interface CSSMediaRule : CSSConditionRule {
[SameObject, PutForwards=mediaText] readonly attribute MediaList media; [SameObject, PutForwards=mediaText] readonly attribute MediaList media;
}; };

Просмотреть файл

@ -5,6 +5,7 @@
*/ */
// This is a non-standard interface for @-moz-document rules // This is a non-standard interface for @-moz-document rules
[Exposed=Window]
interface CSSMozDocumentRule : CSSConditionRule { interface CSSMozDocumentRule : CSSConditionRule {
// XXX Add access to the URL list. // XXX Add access to the URL list.
}; };

Просмотреть файл

@ -8,6 +8,7 @@
*/ */
// https://drafts.csswg.org/cssom/#cssnamespacerule // https://drafts.csswg.org/cssom/#cssnamespacerule
[Exposed=Window]
interface CSSNamespaceRule : CSSRule { interface CSSNamespaceRule : CSSRule {
readonly attribute DOMString namespaceURI; readonly attribute DOMString namespaceURI;
readonly attribute DOMString prefix; readonly attribute DOMString prefix;

Просмотреть файл

@ -10,6 +10,7 @@
// https://drafts.csswg.org/cssom/#the-csspagerule-interface // https://drafts.csswg.org/cssom/#the-csspagerule-interface
// Per spec, this should inherit from CSSGroupingRule, but we don't // Per spec, this should inherit from CSSGroupingRule, but we don't
// implement this yet. // implement this yet.
[Exposed=Window]
interface CSSPageRule : CSSRule { interface CSSPageRule : CSSRule {
// selectorText not implemented yet // selectorText not implemented yet
// attribute DOMString selectorText; // attribute DOMString selectorText;

Просмотреть файл

@ -10,7 +10,8 @@
* liability, trademark and document use rules apply. * liability, trademark and document use rules apply.
*/ */
[Func="Document::IsWebAnimationsGetAnimationsEnabled"] [Func="Document::IsWebAnimationsGetAnimationsEnabled",
Exposed=Window]
interface CSSPseudoElement { interface CSSPseudoElement {
readonly attribute DOMString type; readonly attribute DOMString type;
readonly attribute Element element; readonly attribute Element element;

Просмотреть файл

@ -12,6 +12,7 @@
*/ */
// https://drafts.csswg.org/cssom/#the-cssrule-interface // https://drafts.csswg.org/cssom/#the-cssrule-interface
[Exposed=Window]
interface CSSRule { interface CSSRule {
const unsigned short STYLE_RULE = 1; const unsigned short STYLE_RULE = 1;

Просмотреть файл

@ -4,6 +4,7 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. * file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/ */
[Exposed=Window]
interface CSSRuleList { interface CSSRuleList {
readonly attribute unsigned long length; readonly attribute unsigned long length;
getter CSSRule? item(unsigned long index); getter CSSRule? item(unsigned long index);

Просмотреть файл

@ -9,7 +9,8 @@
// Because of getComputedStyle, many CSSStyleDeclaration objects can be // Because of getComputedStyle, many CSSStyleDeclaration objects can be
// short-living. // short-living.
[ProbablyShortLivingWrapper] [ProbablyShortLivingWrapper,
Exposed=Window]
interface CSSStyleDeclaration { interface CSSStyleDeclaration {
[CEReactions, SetterNeedsSubjectPrincipal=NonSystem, SetterThrows] [CEReactions, SetterNeedsSubjectPrincipal=NonSystem, SetterThrows]
attribute DOMString cssText; attribute DOMString cssText;

Просмотреть файл

@ -8,6 +8,7 @@
*/ */
// https://drafts.csswg.org/cssom/#the-cssstylerule-interface // https://drafts.csswg.org/cssom/#the-cssstylerule-interface
[Exposed=Window]
interface CSSStyleRule : CSSRule { interface CSSStyleRule : CSSRule {
attribute DOMString selectorText; attribute DOMString selectorText;
[SameObject, PutForwards=cssText] readonly attribute CSSStyleDeclaration style; [SameObject, PutForwards=cssText] readonly attribute CSSStyleDeclaration style;

Просмотреть файл

@ -13,6 +13,7 @@ enum CSSStyleSheetParsingMode {
"agent" "agent"
}; };
[Exposed=Window]
interface CSSStyleSheet : StyleSheet { interface CSSStyleSheet : StyleSheet {
[Pure, BinaryName="DOMOwnerRule"] [Pure, BinaryName="DOMOwnerRule"]
readonly attribute CSSRule? ownerRule; readonly attribute CSSRule? ownerRule;

Просмотреть файл

@ -8,5 +8,6 @@
*/ */
// https://drafts.csswg.org/css-conditional/#the-csssupportsrule-interface // https://drafts.csswg.org/css-conditional/#the-csssupportsrule-interface
[Exposed=Window]
interface CSSSupportsRule : CSSConditionRule { interface CSSSupportsRule : CSSConditionRule {
}; };

Просмотреть файл

@ -11,7 +11,8 @@
*/ */
[Func="Document::IsWebAnimationsGetAnimationsEnabled", [Func="Document::IsWebAnimationsGetAnimationsEnabled",
HeaderFile="nsTransitionManager.h"] HeaderFile="nsTransitionManager.h",
Exposed=Window]
interface CSSTransition : Animation { interface CSSTransition : Animation {
[Constant] readonly attribute DOMString transitionProperty; [Constant] readonly attribute DOMString transitionProperty;
}; };

Просмотреть файл

@ -10,7 +10,8 @@
* W3C liability, trademark and document use rules apply. * W3C liability, trademark and document use rules apply.
*/ */
[Pref="canvas.capturestream.enabled"] [Pref="canvas.capturestream.enabled",
Exposed=Window]
interface CanvasCaptureMediaStream : MediaStream { interface CanvasCaptureMediaStream : MediaStream {
readonly attribute HTMLCanvasElement canvas; readonly attribute HTMLCanvasElement canvas;
void requestFrame(); void requestFrame();

Просмотреть файл

@ -34,6 +34,7 @@ typedef (HTMLOrSVGImageElement or
HTMLVideoElement or HTMLVideoElement or
ImageBitmap) CanvasImageSource; ImageBitmap) CanvasImageSource;
[Exposed=Window]
interface CanvasRenderingContext2D { interface CanvasRenderingContext2D {
// back-reference to the canvas. Might be null if we're not // back-reference to the canvas. Might be null if we're not
@ -332,6 +333,7 @@ interface mixin CanvasHitRegions {
[Pref="canvas.hitregions.enabled"] void clearHitRegions(); [Pref="canvas.hitregions.enabled"] void clearHitRegions();
}; };
[Exposed=Window]
interface CanvasGradient { interface CanvasGradient {
// opaque object // opaque object
[Throws] [Throws]
@ -339,6 +341,7 @@ interface CanvasGradient {
void addColorStop(float offset, DOMString color); void addColorStop(float offset, DOMString color);
}; };
[Exposed=Window]
interface CanvasPattern { interface CanvasPattern {
// opaque object // opaque object
// [Throws, LenientFloat] - could not do this overload because of bug 1020975 // [Throws, LenientFloat] - could not do this overload because of bug 1020975
@ -348,6 +351,7 @@ interface CanvasPattern {
void setTransform(SVGMatrix matrix); void setTransform(SVGMatrix matrix);
}; };
[Exposed=Window]
interface TextMetrics { interface TextMetrics {
// x-direction // x-direction
@ -373,7 +377,8 @@ interface TextMetrics {
}; };
[Pref="canvas.path.enabled"] [Pref="canvas.path.enabled",
Exposed=Window]
interface Path2D interface Path2D
{ {
constructor(); constructor();

Просмотреть файл

@ -2,6 +2,7 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this * License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
[Exposed=Window]
interface CaretPosition { interface CaretPosition {
/** /**

Просмотреть файл

@ -25,7 +25,8 @@ dictionary CaretStateChangedEventInit : EventInit {
DOMString selectedTextContent = ""; DOMString selectedTextContent = "";
}; };
[ChromeOnly] [ChromeOnly,
Exposed=Window]
interface CaretStateChangedEvent : Event { interface CaretStateChangedEvent : Event {
constructor(DOMString type, constructor(DOMString type,
optional CaretStateChangedEventInit eventInit = {}); optional CaretStateChangedEventInit eventInit = {});

Просмотреть файл

@ -14,7 +14,8 @@ dictionary ChannelMergerOptions : AudioNodeOptions {
unsigned long numberOfInputs = 6; unsigned long numberOfInputs = 6;
}; };
[Pref="dom.webaudio.enabled"] [Pref="dom.webaudio.enabled",
Exposed=Window]
interface ChannelMergerNode : AudioNode { interface ChannelMergerNode : AudioNode {
[Throws] [Throws]
constructor(BaseAudioContext context, constructor(BaseAudioContext context,

Просмотреть файл

@ -14,7 +14,8 @@ dictionary ChannelSplitterOptions : AudioNodeOptions {
unsigned long numberOfOutputs = 6; unsigned long numberOfOutputs = 6;
}; };
[Pref="dom.webaudio.enabled"] [Pref="dom.webaudio.enabled",
Exposed=Window]
interface ChannelSplitterNode : AudioNode { interface ChannelSplitterNode : AudioNode {
[Throws] [Throws]
constructor(BaseAudioContext context, constructor(BaseAudioContext context,

Просмотреть файл

@ -10,6 +10,7 @@
* liability, trademark and document use rules apply. * liability, trademark and document use rules apply.
*/ */
[Exposed=Window]
interface CharacterData : Node { interface CharacterData : Node {
[Pure, SetterThrows] [Pure, SetterThrows]
attribute [TreatNullAs=EmptyString] DOMString data; attribute [TreatNullAs=EmptyString] DOMString data;

Просмотреть файл

@ -28,7 +28,8 @@ dictionary CheckerboardReport {
// The guard function only allows creation of this interface on the // The guard function only allows creation of this interface on the
// about:checkerboard page, and only if it's in the parent process. // about:checkerboard page, and only if it's in the parent process.
[Func="mozilla::dom::CheckerboardReportService::IsEnabled"] [Func="mozilla::dom::CheckerboardReportService::IsEnabled",
Exposed=Window]
interface CheckerboardReportService { interface CheckerboardReportService {
constructor(); constructor();

Просмотреть файл

@ -10,7 +10,8 @@ interface nsISHistory;
* The ChildSHistory interface represents the child side of a browsing * The ChildSHistory interface represents the child side of a browsing
* context's session history. * context's session history.
*/ */
[ChromeOnly] [ChromeOnly,
Exposed=Window]
interface ChildSHistory { interface ChildSHistory {
[Pure] [Pure]
readonly attribute long count; readonly attribute long count;

Просмотреть файл

@ -4,7 +4,8 @@
* You can obtain one at http://mozilla.org/MPL/2.0/. * You can obtain one at http://mozilla.org/MPL/2.0/.
*/ */
[Func="IsChromeOrXBL"] [Func="IsChromeOrXBL",
Exposed=Window]
interface ChromeNodeList : NodeList { interface ChromeNodeList : NodeList {
constructor(); constructor();

Просмотреть файл

@ -22,4 +22,4 @@ interface Clipboard : EventTarget {
Promise<void> write(DataTransfer data); Promise<void> write(DataTransfer data);
[Throws, NeedsSubjectPrincipal] [Throws, NeedsSubjectPrincipal]
Promise<void> writeText(DOMString data); Promise<void> writeText(DOMString data);
}; };

Просмотреть файл

@ -10,6 +10,7 @@
* liability, trademark and document use rules apply. * liability, trademark and document use rules apply.
*/ */
[Exposed=Window]
interface ClipboardEvent : Event interface ClipboardEvent : Event
{ {
[Throws] [Throws]

Некоторые файлы не были показаны из-за слишком большого количества измененных файлов Показать больше