diff --git a/index.bs b/index.bs index 5d1df7df..b7700902 100644 --- a/index.bs +++ b/index.bs @@ -12200,16 +12200,14 @@ depending on whether the [{{OverrideBuiltins}}] operates as follows, with property name |P| and object |O|:
If P is an unforgeable property name on O, then return false.
-If O implements an interface with
-an [Unforgeable
]-annotated attribute whose identifier is P, then return false.
If P is not a supported property name of O, then return false.
-If O implements an interface that has the [OverrideBuiltins
] extended attribute, then return true.
If O has an own property named P, then return false.
+Note: This will include cases in which O has unforgeable properties, because in practice those are always set up before objects have any supported property names, and once set up will make the corresponding named properties invisible.
+If O implements an interface that has the [OverrideBuiltins
] extended attribute, then return true.
Initialize prototype to be the value of the internal [[Prototype]] property of O.
Indexed properties.
Unforgeable attributes and operations.
+Own properties, including unforgeable attributes and operations.
Then, if [OverrideBuiltins
]:
Named properties.
-Own properties.
Properties from the prototype chain.
Otherwise, if not [OverrideBuiltins
]:
Own properties.
Properties from the prototype chain.
Let value be an uninitialized variable.
If operation was defined without an identifier, then +
If operation was defined without an identifier, then set value to the result of performing the steps listed in the interface description to determine the value of an indexed property with index as the index.
Otherwise, operation was defined with an identifier. Set value to the result @@ -11522,7 +11514,7 @@
If O supports named properties, O does not
-implement an interface with the [Global
] or [PrimaryGlobal
] extended attribute, the result of running the named property visibility algorithm with
+implement an interface with the [Global
] or [PrimaryGlobal
] extended attribute, the result of running the named property visibility algorithm with
property name P and object O is true, and ignoreNamedProps is false, then:
Let value be an uninitialized variable.
If operation was defined without an identifier, then +
If operation was defined without an identifier, then set value to the result of performing the steps listed in the interface description to determine the value of a named property with P as the name.
Otherwise, operation was defined with an identifier. Set value to the result @@ -11555,7 +11547,7 @@
The internal [[GetOwnProperty]] method of every platform object O that implements an interface which supports indexed or named properties must behave as follows when called with property name P:
+The internal [[GetOwnProperty]] method of every platform object O that implements an interface which supports indexed or named properties must behave as follows when called with property name P:
Return the result of invoking the PlatformObjectGetOwnProperty abstract operation with O, P, and
Let value be the result of converting V to an IDL value of type T.
If operation was defined without an identifier, then:
+If operation was defined without an identifier, then:
If creating is true, then perform the steps listed in the interface description to set the value of a new indexed property with index as the index and value as the value.
@@ -11597,7 +11589,7 @@Let value be the result of converting V to an IDL value of type T.
If operation was defined without an identifier, then:
+If operation was defined without an identifier, then:
If creating is true, then perform the steps listed in the interface description to set the value of a new named property with P as the name and value as the value.
@@ -11608,7 +11600,7 @@The internal [[Set]] method of every platform object O that implements an interface which supports indexed or named properties must behave as follows when called +
The internal [[Set]] method of every platform object O that implements an interface which supports indexed or named properties must behave as follows when called with property name P, value V, and ECMAScript language value Receiver:
When the internal [[DefineOwnProperty]] method of a platform object O that -implements an interface which supports indexed or named properties is +implements an interface which supports indexed or named properties is called with property key P and Property Descriptor Desc, the following steps must be taken:
If O supports named properties, O does not implement an interface with the
-[Global
] or [PrimaryGlobal
] extended attribute and P is not an unforgeable property name of O, then:
If O supports named properties, O does not implement an interface with the
+[Global
] or [PrimaryGlobal
] extended attribute and P is not an unforgeable property name of O, then:
Let creating be true if P is not a supported property name, and false otherwise.
@@ -11684,14 +11676,14 @@If O does not implement an interface with the +
If O does not implement an interface with the
[Global
] or
[PrimaryGlobal
] extended attribute, then set Desc.[[Configurable]] to
Return OrdinaryDefineOwnProperty(O, P, Desc).
The internal [[Delete]] method of every platform object O that implements an interface which supports indexed or named properties must behave as follows when called with property name P.
+The internal [[Delete]] method of every platform object O that implements an interface which supports indexed or named properties must behave as follows when called with property name P.
If O supports indexed properties and P is an array index property name, then:
@@ -11704,7 +11696,7 @@Return
If O supports named properties, O does not implement an interface with the +
If O supports named properties, O does not implement an interface with the
[Global
] or [PrimaryGlobal
] extended attribute and the result of calling the named property visibility algorithm with property name P and object O is true, then:
Let operation be the operation used to declare the named property deleter.
If operation was defined without an identifier, then:
+If operation was defined without an identifier, then:
Perform the steps listed in the interface description to delete an existing named property with P as the name.
@@ -11742,7 +11734,7 @@Return
The internal [[Call]] method of every platform object O that implements an interface I with at least one legacy caller must behave as follows, assuming arg0..n−1 is the list of argument +
The internal [[Call]] method of every platform object O that implements an interface I with at least one legacy caller must behave as follows, assuming arg0..n−1 is the list of argument values passed to [[Call]]:
This document does not define a complete property enumeration order -for all platform objects implementing interfaces (or for platform objects representing exceptions). +for all platform objects implementing interfaces (or for platform objects representing exceptions). However, if a platform object implements an interface that supports indexed or named properties, then properties on the object must be enumerated in the following order:
@@ -11766,7 +11758,7 @@If the object supports named properties and doesn’t implement an interface with the +
If the object supports named properties and doesn’t implement an interface with the
[LegacyUnenumerableNamedProperties
] extended attribute, then
the object’s supported property names that
are visible according to the named property visibility algorithm are enumerated next, in the order given in the definition of the set of supported property names.
Otherwise, the interface is not a single operation callback interface.
Any object that is not a native
Note that ECMAScript objects need not have -properties corresponding to constants on them to be considered as user objects implementing interfaces that happen +properties corresponding to constants on them to be considered as user objects implementing interfaces that happen to have constants declared on them.
A single operation callback interface is a callback interface that:
@@ -11812,9 +11804,9 @@is not declared to inherit from another interface,
has no attributes, and
+has no attributes, and
has one or more regular operations that all have the same identifier, +
has one or more regular operations that all have the same identifier, and no others.
To call a user object’s operation, given a callback interface type value value, sometimes-optional operation name opName, @@ -12102,7 +12094,7 @@
For every namespace that is exposed in a given ECMAScript global environment, a corresponding property must exist on the ECMAScript -environment’s global object. The name of the property is the identifier of the namespace, and its value is an object +environment’s global object. The name of the property is the identifier of the namespace, and its value is an object called the namespace object.
The property has the attributes { [[Writable]]:
Let F be the result of creating an operation function given op, namespace, and realm.
Perform ! CreateDataProperty(namespaceObject, op’s identifier, F).
+Perform ! CreateDataProperty(namespaceObject, op’s identifier, F).
Let F be the
If F corresponds to an attribute, operation or stringifier, then return -the global environment associated with the interface that definition appears on.
+the global environment associated with the interface that definition appears on.Otherwise, if F corresponds to an indexed or named property, then return the global environment associated with the interface that @@ -12328,7 +12320,7 @@
The following IDL fragment defines two interfaces and an exception. +
The following IDL fragment defines two interfaces and an exception.
The valueOf
attribute on ExceptionThrower
is defined to throw an exception whenever an attempt is made
to get its value.
interface Dahut { @@ -12558,7 +12550,7 @@IDL gr used in the grammar and the values used for
identifier terminals. Thus, for example, the input text “Const” is tokenized as anidentifier rather than the -terminal symbolconst , an interface with identifier “A” is distinct from one named “a”, and an extended attribute [constructor
] will not be recognized as +terminal symbolconst , an interface with identifier “A” is distinct from one named “a”, and an extended attribute [constructor
] will not be recognized as the [Constructor
] extended attribute.Implicitly, any number of
whitespace andcomment terminals are allowed between every other terminal @@ -13032,6 +13024,7 @@[HTML] defines the following terms:
+
- Window
- clean up after running a callback
- clean up after running script
- event handler idl attributes @@ -13044,19 +13037,14 @@
settings object
- - [UNICODE] defines the following terms: - -
- - [HTML] defines the following terms: + [secure-contexts] defines the following terms:
-
- Window +
- secure context
- - [secure-contexts] defines the following terms: + [UNICODE] defines the following terms:
References
@@ -13222,15 +13210,14 @@I
- 4.6.9.4. Default iterator objects
- 4.6.9.5. Iterator prototype object
- 4.8. Platform objects implementing interfaces -
- 4.8.1. Indexed and named properties -
- 4.8.2. The PlatformObjectGetOwnProperty abstract operation (2) -
- 4.8.4. Invoking a platform object indexed property setter -
- 4.8.5. Invoking a platform object named property setter -
- 4.8.8. Platform object [[Delete]] method -
- 4.9. User objects implementing callback interfaces (2) (3) -
- 4.11. Namespaces -
- 4.11.1. Namespace object -
- IDL grammar +
- 4.8.2. The PlatformObjectGetOwnProperty abstract operation (2) +
- 4.8.4. Invoking a platform object indexed property setter +
- 4.8.5. Invoking a platform object named property setter +
- 4.8.8. Platform object [[Delete]] method +
- 4.9. User objects implementing callback interfaces (2) (3) +
- 4.11. Namespaces +
- 4.11.1. Namespace object +
- IDL grammar