Skip to content

Commit 1d732f0

Browse files
committed
Rename [NoInterfaceObject] to [LegacyNoInterfaceObject]
Part of #350. Also removes some references to usages in other specs that have since been fixed, and removes the discussion of the previous usage of this extended attribute for mixin purposes, as all those usages have migrated.
1 parent f7eb809 commit 1d732f0

File tree

1 file changed

+23
-42
lines changed

1 file changed

+23
-42
lines changed

index.bs

Lines changed: 23 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -1011,7 +1011,7 @@ The following extended attributes are applicable to interfaces:
10111011
[{{Global}}],
10121012
[{{LegacyWindowAlias}}],
10131013
[{{LegacyFactoryFunction}}],
1014-
[{{NoInterfaceObject}}],
1014+
[{{LegacyNoInterfaceObject}}],
10151015
[{{LegacyOverrideBuiltIns}}], and
10161016
[{{SecureContext}}].
10171017

@@ -1021,7 +1021,7 @@ The following extended attributes are applicable to [=partial interfaces=]:
10211021
[{{SecureContext}}].
10221022

10231023
[=Interfaces=] which are not annotated
1024-
with a [{{NoInterfaceObject}}] [=extended attribute=]
1024+
with a [{{LegacyNoInterfaceObject}}] [=extended attribute=]
10251025
must be annotated with an [{{Exposed}}] [=extended attribute=].
10261026

10271027
<div algorithm>
@@ -9589,7 +9589,7 @@ attribute.
95899589
The [{{LegacyNamespace}}] extended attribute [=takes an identifier|take an identifier=].
95909590
This identifier must be the identifier of a namespace.
95919591

9592-
The [{{LegacyNamespace}}] and [{{NoInterfaceObject}}]
9592+
The [{{LegacyNamespace}}] and [{{LegacyNoInterfaceObject}}]
95939593
extended attributes must not be specified on the same interface.
95949594

95959595
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,
97089708
must not be the same as an [=identifier=] of an interface that has an [=interface object=],
97099709
and must not be one of the [=reserved identifiers=].
97109710

9711-
The [{{LegacyWindowAlias}}] and [{{NoInterfaceObject}}]
9711+
The [{{LegacyWindowAlias}}] and [{{LegacyNoInterfaceObject}}]
97129712
extended attributes must not be specified on the same interface.
97139713

97149714
The [{{LegacyWindowAlias}}] and [{{LegacyNamespace}}]
@@ -10046,29 +10046,22 @@ a [=promise type=].
1004610046
</div>
1004710047

1004810048

10049-
<h4 id="NoInterfaceObject" extended-attribute lt="NoInterfaceObject">[NoInterfaceObject]</h4>
10049+
<h4 id="LegacyNoInterfaceObject" extended-attribute lt="LegacyNoInterfaceObject" oldids="NoInterfaceObject">[LegacyNoInterfaceObject]</h4>
1005010050

1005110051
<div class="advisement">
1005210052

10053-
The [{{NoInterfaceObject}}] [=extended attribute=] is an undesirable feature.
10053+
The [{{LegacyNoInterfaceObject}}] [=extended attribute=] is an undesirable feature.
1005410054
It exists only so that legacy Web platform features can be specified.
1005510055
It should not be used in specifications
1005610056
unless required to specify the behavior of legacy APIs,
1005710057
or for consistency with these APIs.
1005810058
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>
1006010060
before proceeding.
1006110061

1006210062
<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+
1007210065
{{WEBGL_compressed_texture_astc}},
1007310066
{{WEBGL_compressed_texture_s3tc_srgb}},
1007410067
{{WEBGL_draw_buffers}},
@@ -10079,45 +10072,33 @@ a [=promise type=].
1007910072
{{EXT_disjoint_timer_query}},
1008010073
{{OES_standard_derivatives}}, and
1008110074
{{OES_vertex_array_object}}.
10082-
[[GEOLOCATION-API]]
10083-
[[ORIENTATION-EVENT]]
10084-
[[MEDIACAPTURE-STREAMS]]
1008510075
(various [[WEBGL]] extension specifications)
1008610076
</small>
1008710077

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.
1009710078
</div>
1009810079

10099-
If the [{{NoInterfaceObject}}] [=extended attribute=] appears on an [=interface=],
10080+
If the [{{LegacyNoInterfaceObject}}] [=extended attribute=] appears on an [=interface=],
1010010081
it indicates that an [=interface object=]
1010110082
will not exist for the interface in the ECMAScript binding.
1010210083

10103-
The [{{NoInterfaceObject}}] extended attribute
10084+
The [{{LegacyNoInterfaceObject}}] extended attribute
1010410085
must [=takes no arguments|take no arguments=].
1010510086

10106-
The [{{NoInterfaceObject}}] extended attribute
10087+
The [{{LegacyNoInterfaceObject}}] extended attribute
1010710088
must not be specified on an interface that has any
1010810089
[=constructors=] or [=static operations=] defined on it.
1010910090

10110-
Note: Combining the [{{NoInterfaceObject}}] and [{{LegacyFactoryFunction}}] extended attribute is not
10091+
Note: Combining the [{{LegacyNoInterfaceObject}}] and [{{LegacyFactoryFunction}}] extended attribute is not
1011110092
forbidden, however.
1011210093

10113-
An interface that does not have the [{{NoInterfaceObject}}] extended
10094+
An interface that does not have the [{{LegacyNoInterfaceObject}}] extended
1011410095
attribute specified must not inherit
10115-
from an interface that has the [{{NoInterfaceObject}}] extended
10096+
from an interface that has the [{{LegacyNoInterfaceObject}}] extended
1011610097
attribute specified.
1011710098

1011810099
See [[#es-interfaces]]
1011910100
for the specific requirements that the use of
10120-
[{{NoInterfaceObject}}] entails.
10101+
[{{LegacyNoInterfaceObject}}] entails.
1012110102

1012210103
<div class="example">
1012310104

@@ -10131,7 +10112,7 @@ for the specific requirements that the use of
1013110112
};
1013210113

1013310114
[Exposed=Window,
10134-
NoInterfaceObject]
10115+
LegacyNoInterfaceObject]
1013510116
interface Query {
1013610117
any lookupEntry(unsigned long key);
1013710118
};
@@ -11252,7 +11233,7 @@ Note: The HTML Standard defines how a security check is performed. [[!HTML]]
1125211233

1125311234
For every [=interface=] that is [=exposed=] in
1125411235
a given [=Realm=] and that is not declared with
11255-
the [{{NoInterfaceObject}}] or [{{LegacyNamespace}}] [=extended attributes=],
11236+
the [{{LegacyNoInterfaceObject}}] or [{{LegacyNamespace}}] [=extended attributes=],
1125611237
a corresponding property exists on the [=Realm=]'s [=Realm/global object=].
1125711238
The name of the property is the [=identifier=] of the interface,
1125811239
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
1142411405
There will exist an <dfn id="dfn-interface-prototype-object" export>interface prototype object</dfn>
1142511406
for every [=interface=] defined,
1142611407
regardless of whether the interface was declared
11427-
with the [{{NoInterfaceObject}}] [=extended attribute=].
11408+
with the [{{LegacyNoInterfaceObject}}] [=extended attribute=].
1142811409

1142911410
<div algorithm>
1143011411

@@ -11474,7 +11455,7 @@ with the [{{NoInterfaceObject}}] [=extended attribute=].
1147411455
1. [=Define the asynchronous iteration methods=] of |interface| on |interfaceProtoObj|
1147511456
given |realm|.
1147611457
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:
1147811459
1. Let |constructor| be the [=interface object=] of |interface| in |realm|.
1147911460
1. Let |desc| be the PropertyDescriptor{\[[Writable]]: <emu-val>true</emu-val>,
1148011461
\[[Enumerable]]: <emu-val>false</emu-val>, \[[Configurable]]: <emu-val>true</emu-val>,
@@ -11497,14 +11478,14 @@ Issue: Define those properties imperatively instead.
1149711478

1149811479
The [=interface prototype object=]
1149911480
of an [=interface=] that is defined with
11500-
the [{{NoInterfaceObject}}]
11481+
the [{{LegacyNoInterfaceObject}}]
1150111482
[=extended attribute=]
1150211483
will be accessible.
1150311484
For example, with the following IDL:
1150411485

1150511486
<pre highlight="webidl">
1150611487
[Exposed=Window,
11507-
NoInterfaceObject]
11488+
LegacyNoInterfaceObject]
1150811489
interface Foo {
1150911490
};
1151011491

@@ -13235,7 +13216,7 @@ the Realm given as an argument.
1323513216
1. Sort |interfaces| in such a way that if |A| and |B| are [=list/items=] of |interfaces|,
1323613217
and |A| [=interface/inherits=] from |B|, |A| has a higher index in |interfaces| than |B|.
1323713218
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
1323913220
[{{LegacyNamespace}}] [=extended attributes=], then:
1324013221
1. Let |id| be |interface|'s [=identifier=].
1324113222
1. Let |interfaceObject| be the result of [=create an interface object|creating

0 commit comments

Comments
 (0)