#
# This file describes all Blink IDL extended attributes and allowed values.
# If any IDL file uses an extended attribute or values not listed below, the
# build will fail.
# If you would like to add a new extended attribute or value, please:
#     (1) add the extended attribute or value to this file
#     (2) add an explanation to the Blink IDL extended attributes document:
#         IDLExtendedAttributes.md (in this directory)
#     (3) add appropriate test cases to run_bindings_tests.py
#
# The syntax of this file is as follows:
#     - One extended attribute per one line: Name and (optionally) Values.
#     - "Attr" means that the Attr does not take a value, i.e. [Attr].
#     - "Attr=X" means that Attr takes a required value, which must be X;
#       i.e. [Attr=X].
#     - "Attr=X|Y|Z" means that Attr takes a required value, and the valid
#       values are X, Y, and Z, and combinations thereof;
#       e.g. [Attr=X], [Attr=Y], [Attr=X|Z].
#       The separator must be | or &, so [Attr=X&Z] is also valid.
#     - "Attr=|X|Y|Z" means that Attr takes an optional value, whose valid
#       values (if present) are X, Y, and Z, and combinations thereof; e.g.
#       [Attr], [Attr=X], [Attr=Y], [Attr=X|Z], [Attr=X|Y|Z], [Attr=X&Z].
#       Note that including an empty value in the list, as in [Attr=X||Y],
#       is NOT valid: the value is optional, but empty values are not allowed.
#     - "Attr=*" means that Attr takes a required value, which can be
#       arbitrary, and combinations thereof, e.g. [Attr=IndexedDB],
#       [Attr=DeleteFunction], [Attr=X|Y].
#     - "Attr=|*" means that Attr takes an optional value, which can be
#       arbitrary, e.g. [Attr], [Attr=X].
#     - "Attr=X|*" means that Attr takes an required value, which can be
#       arbitrary, but that "X" is standard, e.g. [Attr=X], [Attr=Foo].
#

ActiveScriptWrappable
Affects=Nothing
AllowShared
CEReactions
CachedAccessor
CachedAttribute=*
CallWith=ExecutionContext|ScriptState|ScriptArguments|CurrentWindow|EnteredWindow|ThisValue
CheckSecurity=Receiver|ReturnValue
Clamp
Constructor
# FIXME: remove [ConstructorCallWith=Document], as can instead use
# [ConstructorCallWith=ExecutionContext] + toDocument(executionContext)
ConstructorCallWith=ExecutionContext|ScriptState|Document
ContextEnabled=*
CrossOrigin=|Getter|Setter
Custom=|Getter|Setter|LegacyCallAsFunction|PropertyGetter|PropertyEnumerator|PropertyQuery|CallPrologue|CallEpilogue
CustomConstructor
CustomElementCallbacks
Default=Undefined
DeprecateAs=*
DoNotCheckConstants
DoNotTestNewObject
EnforceRange
Exposed=*
FeaturePolicy=*
FlexibleArrayBufferView
Global=|*
HTMLConstructor
ImmutablePrototype
ImplementedAs=*
LegacyInterfaceTypeChecking
LegacyTreatAsPartialInterface
LegacyUnenumerableNamedProperties
LenientSetter
LenientThis
LogActivity=|GetterOnly|SetterOnly
LogAllWorlds
NewObject
Measure
MeasureAs=*
NamedConstructor=*
NoInterfaceObject
NotEnumerable
OriginTrialEnabled=*
OverrideBuiltins
PartialInterfaceImplementedAs=*
PermissiveDictionaryConversion
PerWorldBindings
PrimaryGlobal=|*
PutForwards=*
RaisesException=|Getter|Setter|Constructor
Reflect=|*
ReflectEmpty=*
ReflectInvalid=*
ReflectMissing=*
ReflectOnly=*
Replaceable
# Valid values for [RuntimeEnabled] are the Runtime Enabled Features, listed in
# Source/platform/runtime_enabled_features.json5
RuntimeEnabled=*
# Valid values for [RuntimeCallStatsCounter] are counters defined in
# Source/platform/bindings/RuntimeCallStats.h
RuntimeCallStatsCounter=*
SameObject
SaveSameObject
SecureContext=|*
SetterCallWith=ExecutionContext|ScriptArguments|CurrentWindow|EnteredWindow
TreatNonObjectAsNull
TreatNullAs=NullString|EmptyString
URL
Unforgeable
Unscopable
WebAgentAPI
