All prototypes should call didBecomePrototype()
[WebKit.git] / Source / WebCore / bindings / scripts / IDLAttributes.json
1 {
2     "contexts": [
3         "type",
4         "interface",
5         "attribute",
6         "operation",
7         "argument",
8         "callback-function",
9         "dictionary",
10         "dictionary-member",
11         "enum",
12         "constant",
13         "union-member",
14         "iterable",
15         "map-like",
16         "set-like"
17     ],
18     "attributes": {
19         "ActiveDOMObject": {
20             "contextsAllowed": ["interface"]
21         },
22         "AppleCopyright": {
23             "contextsAllowed": ["interface", "attribute", "operation"]
24         },
25         "AtomicString": {
26             "contextsAllowed": ["type"]
27         },
28         "CEReactions": {
29             "contextsAllowed": ["attribute", "operation"]
30         },
31         "CachedAttribute": {
32             "contextsAllowed": ["attribute"]
33         },
34         "CallTracingCallback": {
35             "contextsAllowed": ["interface", "attribute", "operation"],
36             "values": ["*"]
37         },
38         "CallbackNeedsOperatorEqual": {
39             "contextsAllowed": ["callback-function"]
40         },
41         "CallbackThisObject": {
42             "contextsAllowed": ["callback-function", "operation"]
43         },
44         "CallNamedSetterOnlyForSupportedProperties": {
45             "contextsAllowed": ["operation"]
46         },
47         "CallWith": {
48             "contextsAllowed": ["attribute", "operation"],
49             "values": ["Document", "ExecState", "ScriptExecutionContext", "GlobalObject", "ActiveWindow", "FirstWindow", "ResponsibleDocument", "World"]
50         },
51         "CheckSecurity": {
52             "contextsAllowed": ["interface"]
53         },
54         "CheckSecurityForNode": {
55             "contextsAllowed": ["attribute", "operation"]
56         },
57         "Clamp": {
58             "contextsAllowed": ["type"],
59             "standard": {
60                 "url": "https://heycam.github.io/webidl/#Clamp"
61             }
62         },
63         "Conditional": {
64             "contextsAllowed": ["interface", "dictionary", "dictionary-member", "enum", "attribute", "operation", "constant", "callback-function"],
65             "values": ["*"]
66         },
67         "ConditionallyReadWrite": {
68             "contextsAllowed": ["attribute"],
69             "values": ["*"]
70         },
71         "ConstantsScope": {
72             "contextsAllowed": ["interface"],
73             "values": ["*"]
74         },
75         "Constructor": {
76             "contextsAllowed": ["interface"],
77             "standard": {
78                 "url": "https://heycam.github.io/webidl/#Constructor"
79             }
80         },
81         "ConstructorCallWith": {
82             "contextsAllowed": ["interface"],
83             "values": ["Document", "ExecState", "RuntimeFlags", "ScriptExecutionContext"]
84         },
85         "ConstructorMayThrowException": {
86             "contextsAllowed": ["interface"]
87         },
88         "ContextAllowsMediaDevices": {
89             "contextsAllowed": ["attribute"]
90         },
91         "ContextHasServiceWorkerScheme": {
92             "contextsAllowed": ["attribute"]
93         },
94         "Custom": {
95             "contextsAllowed": ["attribute", "operation"]
96         },
97         "CustomConstructor": {
98             "contextsAllowed": ["interface"]
99         },
100         "CustomDefineOwnProperty": {
101             "contextsAllowed": ["interface"]
102         },
103         "CustomDefineOwnPropertyOnPrototype": {
104             "contextsAllowed": ["interface"]
105         },
106         "CustomDeleteProperty": {
107             "contextsAllowed": ["interface"]
108         },
109         "CustomGetCallData": {
110             "contextsAllowed": ["interface"]
111         },
112         "CustomGetOwnPropertyNames": {
113             "contextsAllowed": ["interface"]
114         },
115         "CustomGetOwnPropertySlot": {
116             "contextsAllowed": ["interface"]
117         },
118         "CustomGetPrototype": {
119             "contextsAllowed": ["interface"]
120         },
121         "CustomGetter": {
122             "contextsAllowed": ["attribute"]
123         },
124         "CustomHeapSnapshot": {
125             "contextsAllowed": ["interface"]
126         },
127         "CustomIndexedSetter": {
128             "contextsAllowed": ["interface"]
129         },
130         "CustomIsReachable": {
131             "contextsAllowed": ["interface"]
132         },
133         "CustomPreventExtensions": {
134             "contextsAllowed": ["interface"]
135         },
136         "CustomProxyToJSObject": {
137             "contextsAllowed": ["interface"]
138         },
139         "CustomPushEventHandlerScope": {
140             "contextsAllowed": ["interface"]
141         },
142         "CustomPut": {
143             "contextsAllowed": ["interface"]
144         },
145         "CustomPutOnPrototype": {
146             "contextsAllowed": ["interface"]
147         },
148         "CustomSetter": {
149             "contextsAllowed": ["attribute"]
150         },
151         "CustomToJSObject": {
152             "contextsAllowed": ["interface"]
153         },
154         "CustomToStringName": {
155             "contextsAllowed": ["interface"]
156         },
157         "DOMJIT": {
158             "contextsAllowed": ["interface", "attribute", "operation"],
159             "values": ["", "ReadDOM", "Getter"]
160         },
161         "DefaultDefineOwnProperty": {
162             "contextsAllowed": ["interface"]
163         },
164         "DoNotCheckConstants": {
165             "contextsAllowed": ["interface"]
166         },
167         "DoNotCheckSecurity": {
168             "contextsAllowed": ["attribute", "operation"]
169         },
170         "DoNotCheckSecurityOnGetter": {
171             "contextsAllowed": ["attribute"]
172         },
173         "DoNotCheckSecurityOnSetter": {
174             "contextsAllowed": ["attribute"]
175         },
176         "DocumentEventHandler": {
177             "contextsAllowed": ["attribute"]
178         },
179         "EnabledAtRuntime": {
180             "contextsAllowed": ["interface", "dictionary", "enum", "attribute", "operation", "constant", "iterable"],
181             "values": ["*"]
182         },
183         "EnabledBySetting": {
184             "contextsAllowed": ["interface", "dictionary", "enum", "attribute", "operation", "constant", "dictionary-member"],
185             "values": ["*"]
186         },
187         "DisabledByQuirk": {
188             "contextsAllowed": ["interface", "dictionary", "enum", "attribute", "operation", "constant"],
189             "values": ["*"]
190         },
191         "EnabledByQuirk": {
192             "contextsAllowed": ["interface", "dictionary", "enum", "attribute", "operation", "constant"],
193             "values": ["*"]
194         },
195         "EnabledForWorld": {
196             "contextsAllowed": ["attribute", "operation"],
197             "values": ["*"]
198         },
199         "EnforceRange": {
200             "contextsAllowed": ["type"],
201             "standard": {
202                 "url": "https://heycam.github.io/webidl/#EnforceRange"
203             }
204         },
205         "ResultField": {
206             "contextsAllowed": ["operation"]
207         },
208         "ExportMacro": {
209             "contextsAllowed": ["interface", "dictionary", "enum", "callback-function"],
210             "values": ["WEBCORE_EXPORT", "WEBCORE_TESTSUPPORT_EXPORT"]
211         },
212         "ExportToWrappedFunction": {
213             "contextsAllowed": ["interface"]
214         },
215         "Exposed": {
216             "contextsAllowed": ["interface", "attribute", "operation", "constant"],
217             "values": ["*"],
218             "standard": {
219                 "url": "https://heycam.github.io/webidl/#Exposed"
220             }
221         },
222         "ForwardDeclareInHeader": {
223             "contextsAllowed": ["attribute", "operation"]
224         },
225         "GenerateIsReachable": {
226             "contextsAllowed": ["interface"],
227             "values": ["", "Impl", "ImplWebGLRenderingContext", "ImplDocument", "ImplElementRoot", "ImplFrame", "ImplOwnerNodeRoot", "ImplScriptExecutionContext"]
228         },
229         "Global": {
230             "contextsAllowed": ["interface"],
231             "values": ["*"],
232             "standard": {
233                 "url": "https://heycam.github.io/webidl/#Global"
234             }
235         },
236         "ImplementedAs": {
237             "contextsAllowed": ["interface", "dictionary", "dictionary-member", "enum", "attribute", "operation"],
238             "values": ["*"]
239         },
240         "ImplementationLacksVTable": {
241             "contextsAllowed": ["interface"]
242         },
243         "ImplicitThis": {
244             "contextsAllowed": ["interface"]
245         },
246         "InterfaceName": {
247             "contextsAllowed": ["interface"],
248             "values": ["*"]
249         },
250         "IsImmutablePrototypeExoticObject": {
251             "contextsAllowed": ["interface"]
252         },
253         "IsImmutablePrototypeExoticObjectOnPrototype": {
254             "contextsAllowed": ["interface"]
255         },
256         "IsWeakCallback": {
257             "contextsAllowed": ["callback-function", "interface"]
258         },
259         "JSBuiltin": {
260             "contextsAllowed": ["interface", "attribute", "operation"]
261         },
262         "JSBuiltinConstructor": {
263             "contextsAllowed": ["interface"]
264         },
265         "JSCustomFinalize": {
266             "contextsAllowed": ["interface"]
267         },
268         "JSCustomHeader": {
269             "contextsAllowed": ["interface"]
270         },
271         "JSCustomMarkFunction": {
272             "contextsAllowed": ["interface"]
273         },
274         "JSCustomToNativeObject": {
275             "contextsAllowed": ["interface"]
276         },
277         "JSGenerateToJSObject": {
278             "contextsAllowed": ["interface", "dictionary", "callback-function"]
279         },
280         "JSGenerateToNativeObject": {
281             "contextsAllowed": ["interface"]
282         },
283         "JSLegacyParent": {
284             "contextsAllowed": ["interface"],
285             "values": ["*"]
286         },
287         "LegacyArrayClass": {
288             "contextsAllowed": ["interface"],
289             "standard": {
290                 "url": "https://heycam.github.io/webidl/#LegacyArrayClass"
291             },
292             "unsupported": true
293         },
294         "LegacyUnenumerableNamedProperties": {
295             "contextsAllowed": ["interface"],
296             "standard": {
297                 "url": "https://heycam.github.io/webidl/#LegacyUnenumerableNamedProperties"
298             }
299         },
300         "LegacyWindowAlias": {
301             "contextsAllowed": ["interface"],
302             "values": ["*"],
303             "standard": {
304                 "url": "https://heycam.github.io/webidl/#LegacyWindowAlias"
305             }
306         },
307         "LenientSetter": {
308             "contextsAllowed": ["attribute"],
309             "standard": {
310                 "url": "https://heycam.github.io/webidl/#LenientSetter"
311             },
312             "unsupported": true
313         },
314         "LenientThis": {
315             "contextsAllowed": ["attribute"],
316             "standard": {
317                 "url": "https://heycam.github.io/webidl/#LenientThis"
318             }
319         },
320         "MasqueradesAsUndefined": {
321             "contextsAllowed": ["interface"]
322         },
323         "MayThrowException": {
324             "contextsAllowed": ["attribute", "operation"]
325         },
326         "NamedConstructor": {
327             "contextsAllowed": ["interface"],
328             "values": ["*"],
329             "standard": {
330                 "url": "https://heycam.github.io/webidl/#NamedConstructor"
331             }
332         },
333         "NewImpurePropertyFiresWatchpoints": {
334             "contextsAllowed": ["interface"]
335         },
336         "NewObject": {
337             "contextsAllowed": ["attribute", "operation"],
338             "standard": {
339                 "url": "https://heycam.github.io/webidl/#NewObject"
340             }
341         },
342         "NoInterfaceObject": {
343             "contextsAllowed": ["interface"],
344             "standard": {
345                 "url": "https://heycam.github.io/webidl/#NoInterfaceObject"
346             }
347         },
348         "NotEnumerable": {
349             "contextsAllowed": ["attribute", "operation"]
350         },
351         "OverrideBuiltins": {
352             "contextsAllowed": ["interface"],
353             "standard": {
354                 "url": "https://heycam.github.io/webidl/#OverrideBuiltins"
355             }
356         },
357         "OverrideIDLType": {
358             "contextsAllowed": ["type"],
359             "values": ["*"]
360         },
361         "PassContext": {
362             "contextsAllowed": ["operation"],
363             "notes" : "Only used by WebKitTestRunner and DumpRenderTree"
364         },
365         "Plugin": {
366             "contextsAllowed": ["interface"],
367             "notes" : "Should only be used by elements that forward to Netscape plug-ins"
368         },
369         "PrimaryGlobal": {
370             "contextsAllowed": ["interface"],
371             "values": ["*"],
372             "standard": {
373                 "url": "https://heycam.github.io/webidl/#Global"
374             }
375         },
376         "PrivateIdentifier": {
377             "contextsAllowed": ["interface", "attribute", "operation"]
378         },
379         "PromiseProxy": {
380             "contextsAllowed": ["operation"]
381         },
382         "PublicIdentifier": {
383             "contextsAllowed": ["interface", "attribute", "operation"]
384         },
385         "PutForwards": {
386             "contextsAllowed": ["attribute"],
387             "values": ["*"],
388             "standard": {
389                 "url": "https://heycam.github.io/webidl/#PutForwards"
390             }
391         },
392         "Reflect": {
393             "contextsAllowed": ["attribute", "constant"],
394             "values": ["*"]
395         },
396         "Replaceable": {
397             "contextsAllowed": ["attribute"],
398             "standard": {
399                 "url": "https://heycam.github.io/webidl/#Replaceable"
400             }
401         },
402         "ReportExtraMemoryCost": {
403             "contextsAllowed": ["interface"]
404         },
405         "ReportExternalMemoryCost": {
406             "contextsAllowed": ["interface"]
407         },
408         "RequiresExistingAtomicString": {
409             "contextsAllowed": ["type"]
410         },
411         "RethrowException": {
412             "contextsAllowed": ["operation", "callback-function"]
413         },
414         "ReturnsOwnPromise": {
415             "contextsAllowed": ["operation"]
416         },
417         "ReturnValue": {
418             "contextsAllowed": ["argument"]
419         },
420         "SameObject": {
421             "contextsAllowed": ["attribute"],
422             "standard": {
423                 "url": "https://heycam.github.io/webidl/#Replaceable"
424             },
425             "unsupported": true
426         },
427         "SecureContext": {
428             "contextsAllowed": ["interface", "dictionary", "enum", "attribute", "operation", "constant"],
429             "standard": {
430                 "url": "https://heycam.github.io/webidl/#SecureContext"
431             }
432         },
433         "SetterCallWith": {
434             "contextsAllowed": ["attribute"],
435             "values": ["ExecState", "ScriptExecutionContext", "GlobalObject", "ActiveWindow", "FirstWindow"]
436         },
437         "SkipCallbackInvokeCheck": {
438             "contextsAllowed": ["operation", "callback-function"]
439         },
440         "SkipVTableValidation": {
441             "contextsAllowed": ["interface"]
442         },
443         "SuppressToJSObject": {
444             "contextsAllowed": ["interface"]
445         },
446         "TreatNonObjectAsNull": {
447             "contextsAllowed": ["callback-function"],
448             "standard": {
449                 "url": "https://heycam.github.io/webidl/#TreatNonObjectAsNull"
450             },
451             "unsupported": true
452         },
453         "TreatNullAs": {
454             "contextsAllowed": ["type"],
455             "values": ["EmptyString"],
456             "standard": {
457                 "url": "https://heycam.github.io/webidl/#TreatNullAs"
458             }
459         },
460         "URL": {
461             "contextsAllowed": ["attribute"]
462         },
463         "Unforgeable": {
464             "contextsAllowed": ["attribute", "operation", "interface"],
465             "standard": {
466                 "url": "https://heycam.github.io/webidl/#Unforgeable"
467             }
468         },
469         "Unscopable": {
470             "contextsAllowed": ["attribute", "operation"],
471             "standard": {
472                 "url": "https://heycam.github.io/webidl/#Unscopable"
473             }
474         },
475         "WindowEventHandler": {
476             "contextsAllowed": ["attribute"]
477         }
478     }
479 }