@@ -1011,7 +1011,7 @@ The following extended attributes are applicable to interfaces:
1011
1011
[{{Global}}],
1012
1012
[{{LegacyWindowAlias}}],
1013
1013
[{{LegacyFactoryFunction}}],
1014
- [{{NoInterfaceObject }}],
1014
+ [{{LegacyNoInterfaceObject }}],
1015
1015
[{{LegacyOverrideBuiltIns}}], and
1016
1016
[{{SecureContext}}].
1017
1017
@@ -1021,7 +1021,7 @@ The following extended attributes are applicable to [=partial interfaces=]:
1021
1021
[{{SecureContext}}].
1022
1022
1023
1023
[=Interfaces=] which are not annotated
1024
- with a [{{NoInterfaceObject }}] [=extended attribute=]
1024
+ with a [{{LegacyNoInterfaceObject }}] [=extended attribute=]
1025
1025
must be annotated with an [{{Exposed}}] [=extended attribute=].
1026
1026
1027
1027
<div algorithm>
@@ -9589,7 +9589,7 @@ attribute.
9589
9589
The [{{LegacyNamespace}}] extended attribute [=takes an identifier|take an identifier=].
9590
9590
This identifier must be the identifier of a namespace.
9591
9591
9592
- The [{{LegacyNamespace}}] and [{{NoInterfaceObject }}]
9592
+ The [{{LegacyNamespace}}] and [{{LegacyNoInterfaceObject }}]
9593
9593
extended attributes must not be specified on the same interface.
9594
9594
9595
9595
See [[#namespace-object]] for details on how an interface is exposed on a namespace.
@@ -9708,7 +9708,7 @@ extended attribute on this interface or another interface,
9708
9708
must not be the same as an [=identifier=] of an interface that has an [=interface object=],
9709
9709
and must not be one of the [=reserved identifiers=].
9710
9710
9711
- The [{{LegacyWindowAlias}}] and [{{NoInterfaceObject }}]
9711
+ The [{{LegacyWindowAlias}}] and [{{LegacyNoInterfaceObject }}]
9712
9712
extended attributes must not be specified on the same interface.
9713
9713
9714
9714
The [{{LegacyWindowAlias}}] and [{{LegacyNamespace}}]
@@ -10046,29 +10046,22 @@ a [=promise type=].
10046
10046
</div>
10047
10047
10048
10048
10049
- <h4 id="NoInterfaceObject " extended-attribute lt="NoInterfaceObject">[NoInterfaceObject ]</h4>
10049
+ <h4 id="LegacyNoInterfaceObject " extended-attribute lt="LegacyNoInterfaceObject" oldids=" NoInterfaceObject">[LegacyNoInterfaceObject ]</h4>
10050
10050
10051
10051
<div class="advisement">
10052
10052
10053
- The [{{NoInterfaceObject }}] [=extended attribute=] is an undesirable feature.
10053
+ The [{{LegacyNoInterfaceObject }}] [=extended attribute=] is an undesirable feature.
10054
10054
It exists only so that legacy Web platform features can be specified.
10055
10055
It should not be used in specifications
10056
10056
unless required to specify the behavior of legacy APIs,
10057
10057
or for consistency with these APIs.
10058
10058
Editors who wish to use this feature are strongly advised to discuss this
10059
- by <a href="https://github.com/heycam/webidl/issues/new?title=Intent%20to%20use%20[NoInterfaceObject ]">filing an issue</a>
10059
+ by <a href="https://github.com/heycam/webidl/issues/new?title=Intent%20to%20use%20[LegacyNoInterfaceObject ]">filing an issue</a>
10060
10060
before proceeding.
10061
10061
10062
10062
<small class="non-normative">
10063
- The [{{NoInterfaceObject}}] [=extended attribute=] appears on the following [=interfaces=]:
10064
-
10065
- {{Geolocation}},
10066
- {{Coordinates}},
10067
- {{Position}},
10068
- {{PositionError}},
10069
- {{DeviceAcceleration}},
10070
- {{DeviceRotationRate}},
10071
- {{ConstrainablePattern}},
10063
+ The [{{LegacyNoInterfaceObject}}] [=extended attribute=] appears on the following [=interfaces=]:
10064
+
10072
10065
{{WEBGL_compressed_texture_astc}},
10073
10066
{{WEBGL_compressed_texture_s3tc_srgb}},
10074
10067
{{WEBGL_draw_buffers}},
@@ -10079,45 +10072,33 @@ a [=promise type=].
10079
10072
{{EXT_disjoint_timer_query}},
10080
10073
{{OES_standard_derivatives}}, and
10081
10074
{{OES_vertex_array_object}}.
10082
- [[GEOLOCATION-API]]
10083
- [[ORIENTATION-EVENT]]
10084
- [[MEDIACAPTURE-STREAMS]]
10085
10075
(various [[WEBGL]] extension specifications)
10086
10076
</small>
10087
10077
10088
- Note: Previously, the [{{NoInterfaceObject}}] [=extended attribute=] could also be used
10089
- to annotate [=interfaces=], which other [=interfaces=] could then implement
10090
- (using the defunct "implements statement") as if they were mixins.
10091
- There is now dedicated syntax to cater for this use case
10092
- in the form of [=interface mixins=] and [=includes statements=].
10093
- Using the [{{NoInterfaceObject}}] [=extended attribute=]
10094
- for this purpose is no longer supported.
10095
- Specifications which still do are strongly encouraged
10096
- to migrate to [=interface mixins=] as soon as possible.
10097
10078
</div>
10098
10079
10099
- If the [{{NoInterfaceObject }}] [=extended attribute=] appears on an [=interface=],
10080
+ If the [{{LegacyNoInterfaceObject }}] [=extended attribute=] appears on an [=interface=],
10100
10081
it indicates that an [=interface object=]
10101
10082
will not exist for the interface in the ECMAScript binding.
10102
10083
10103
- The [{{NoInterfaceObject }}] extended attribute
10084
+ The [{{LegacyNoInterfaceObject }}] extended attribute
10104
10085
must [=takes no arguments|take no arguments=].
10105
10086
10106
- The [{{NoInterfaceObject }}] extended attribute
10087
+ The [{{LegacyNoInterfaceObject }}] extended attribute
10107
10088
must not be specified on an interface that has any
10108
10089
[=constructors=] or [=static operations=] defined on it.
10109
10090
10110
- Note: Combining the [{{NoInterfaceObject }}] and [{{LegacyFactoryFunction}}] extended attribute is not
10091
+ Note: Combining the [{{LegacyNoInterfaceObject }}] and [{{LegacyFactoryFunction}}] extended attribute is not
10111
10092
forbidden, however.
10112
10093
10113
- An interface that does not have the [{{NoInterfaceObject }}] extended
10094
+ An interface that does not have the [{{LegacyNoInterfaceObject }}] extended
10114
10095
attribute specified must not inherit
10115
- from an interface that has the [{{NoInterfaceObject }}] extended
10096
+ from an interface that has the [{{LegacyNoInterfaceObject }}] extended
10116
10097
attribute specified.
10117
10098
10118
10099
See [[#es-interfaces]]
10119
10100
for the specific requirements that the use of
10120
- [{{NoInterfaceObject }}] entails.
10101
+ [{{LegacyNoInterfaceObject }}] entails.
10121
10102
10122
10103
<div class="example">
10123
10104
@@ -10131,7 +10112,7 @@ for the specific requirements that the use of
10131
10112
};
10132
10113
10133
10114
[Exposed=Window,
10134
- NoInterfaceObject ]
10115
+ LegacyNoInterfaceObject ]
10135
10116
interface Query {
10136
10117
any lookupEntry(unsigned long key);
10137
10118
};
@@ -11252,7 +11233,7 @@ Note: The HTML Standard defines how a security check is performed. [[!HTML]]
11252
11233
11253
11234
For every [=interface=] that is [=exposed=] in
11254
11235
a given [=Realm=] and that is not declared with
11255
- the [{{NoInterfaceObject }}] or [{{LegacyNamespace}}] [=extended attributes=],
11236
+ the [{{LegacyNoInterfaceObject }}] or [{{LegacyNamespace}}] [=extended attributes=],
11256
11237
a corresponding property exists on the [=Realm=]'s [=Realm/global object=].
11257
11238
The name of the property is the [=identifier=] of the interface,
11258
11239
and its value is an object called the <dfn id="dfn-interface-object" export>interface object</dfn>.
@@ -11424,7 +11405,7 @@ implement the interface on which the
11424
11405
There will exist an <dfn id="dfn-interface-prototype-object" export>interface prototype object</dfn>
11425
11406
for every [=interface=] defined,
11426
11407
regardless of whether the interface was declared
11427
- with the [{{NoInterfaceObject }}] [=extended attribute=].
11408
+ with the [{{LegacyNoInterfaceObject }}] [=extended attribute=].
11428
11409
11429
11410
<div algorithm>
11430
11411
@@ -11474,7 +11455,7 @@ with the [{{NoInterfaceObject}}] [=extended attribute=].
11474
11455
1. [=Define the asynchronous iteration methods=] of |interface| on |interfaceProtoObj|
11475
11456
given |realm|.
11476
11457
1. [=Define the constants=] of |interface| on |interfaceProtoObj| given |realm|.
11477
- 1. If the [{{NoInterfaceObject }}] [=extended attribute=] was not specified on |interface|, then:
11458
+ 1. If the [{{LegacyNoInterfaceObject }}] [=extended attribute=] was not specified on |interface|, then:
11478
11459
1. Let |constructor| be the [=interface object=] of |interface| in |realm|.
11479
11460
1. Let |desc| be the PropertyDescriptor{\[[Writable]]: <emu-val>true</emu-val>,
11480
11461
\[[Enumerable]]: <emu-val>false</emu-val>, \[[Configurable]]: <emu-val>true</emu-val>,
@@ -11497,14 +11478,14 @@ Issue: Define those properties imperatively instead.
11497
11478
11498
11479
The [=interface prototype object=]
11499
11480
of an [=interface=] that is defined with
11500
- the [{{NoInterfaceObject }}]
11481
+ the [{{LegacyNoInterfaceObject }}]
11501
11482
[=extended attribute=]
11502
11483
will be accessible.
11503
11484
For example, with the following IDL:
11504
11485
11505
11486
<pre highlight="webidl">
11506
11487
[Exposed=Window,
11507
- NoInterfaceObject ]
11488
+ LegacyNoInterfaceObject ]
11508
11489
interface Foo {
11509
11490
};
11510
11491
@@ -13235,7 +13216,7 @@ the Realm given as an argument.
13235
13216
1. Sort |interfaces| in such a way that if |A| and |B| are [=list/items=] of |interfaces|,
13236
13217
and |A| [=interface/inherits=] from |B|, |A| has a higher index in |interfaces| than |B|.
13237
13218
1. [=list/iterate|For every=] |interface| of |interfaces|:
13238
- 1. If |interface| is not declared with the [{{NoInterfaceObject }}] or
13219
+ 1. If |interface| is not declared with the [{{LegacyNoInterfaceObject }}] or
13239
13220
[{{LegacyNamespace}}] [=extended attributes=], then:
13240
13221
1. Let |id| be |interface|'s [=identifier=].
13241
13222
1. Let |interfaceObject| be the result of [=create an interface object|creating
0 commit comments