Line data Source code
1 : /* THIS FILE IS AUTOGENERATED FROM HTMLElement.webidl BY Codegen.py - DO NOT EDIT */
2 :
3 : #include "ElementBinding.h"
4 : #include "EventHandlerBinding.h"
5 : #include "HTMLElementBinding.h"
6 : #include "WrapperFactory.h"
7 : #include "mozilla/OwningNonNull.h"
8 : #include "mozilla/Preferences.h"
9 : #include "mozilla/dom/BindingUtils.h"
10 : #include "mozilla/dom/CustomElementRegistry.h"
11 : #include "mozilla/dom/DOMJSClass.h"
12 : #include "mozilla/dom/Element.h"
13 : #include "mozilla/dom/HTMLMenuElement.h"
14 : #include "mozilla/dom/HTMLUnknownElement.h"
15 : #include "mozilla/dom/NonRefcountedDOMObject.h"
16 : #include "mozilla/dom/Nullable.h"
17 : #include "mozilla/dom/PrimitiveConversions.h"
18 : #include "mozilla/dom/XrayExpandoClass.h"
19 : #include "nsContentUtils.h"
20 : #include "nsDOMStringMap.h"
21 : #include "nsGenericHTMLElement.h"
22 : #include "nsICSSDeclaration.h"
23 :
24 : namespace mozilla {
25 : namespace dom {
26 :
27 : namespace HTMLElementBinding {
28 :
29 : static_assert(IsRefcounted<NativeType>::value == IsRefcounted<ElementBinding::NativeType>::value,
30 : "Can't inherit from an interface with a different ownership model.");
31 :
32 : static bool
33 0 : get_title(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
34 : {
35 0 : DOMString result;
36 0 : self->GetTitle(result);
37 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
38 0 : if (!xpc::NonVoidStringToJsval(cx, result, args.rval())) {
39 0 : return false;
40 : }
41 0 : return true;
42 : }
43 :
44 : static bool
45 0 : set_title(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitSetterCallArgs args)
46 : {
47 0 : binding_detail::FakeString arg0;
48 0 : if (!ConvertJSValueToString(cx, args[0], eStringify, eStringify, arg0)) {
49 0 : return false;
50 : }
51 0 : CustomElementReactionsStack* reactionsStack = GetCustomElementReactionsStack(obj);
52 0 : Maybe<AutoCEReaction> ceReaction;
53 0 : if (reactionsStack) {
54 0 : ceReaction.emplace(reactionsStack);
55 : }
56 0 : self->SetTitle(NonNullHelper(Constify(arg0)));
57 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
58 :
59 0 : return true;
60 : }
61 :
62 : static const JSJitInfo title_getterinfo = {
63 : { (JSJitGetterOp)get_title },
64 : { prototypes::id::HTMLElement },
65 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
66 : JSJitInfo::Getter,
67 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
68 : JSVAL_TYPE_STRING, /* returnType. Not relevant for setters. */
69 : false, /* isInfallible. False in setters. */
70 : false, /* isMovable. Not relevant for setters. */
71 : false, /* isEliminatable. Not relevant for setters. */
72 : false, /* isAlwaysInSlot. Only relevant for getters. */
73 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
74 : false, /* isTypedMethod. Only relevant for methods. */
75 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
76 : };
77 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
78 : static_assert(0 < 1, "There is no slot for us");
79 : static const JSJitInfo title_setterinfo = {
80 : { (JSJitGetterOp)set_title },
81 : { prototypes::id::HTMLElement },
82 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
83 : JSJitInfo::Setter,
84 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
85 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
86 : false, /* isInfallible. False in setters. */
87 : false, /* isMovable. Not relevant for setters. */
88 : false, /* isEliminatable. Not relevant for setters. */
89 : false, /* isAlwaysInSlot. Only relevant for getters. */
90 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
91 : false, /* isTypedMethod. Only relevant for methods. */
92 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
93 : };
94 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
95 : static_assert(0 < 1, "There is no slot for us");
96 :
97 : static bool
98 0 : get_lang(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
99 : {
100 0 : DOMString result;
101 0 : self->GetLang(result);
102 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
103 0 : if (!xpc::NonVoidStringToJsval(cx, result, args.rval())) {
104 0 : return false;
105 : }
106 0 : return true;
107 : }
108 :
109 : static bool
110 0 : set_lang(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitSetterCallArgs args)
111 : {
112 0 : binding_detail::FakeString arg0;
113 0 : if (!ConvertJSValueToString(cx, args[0], eStringify, eStringify, arg0)) {
114 0 : return false;
115 : }
116 0 : CustomElementReactionsStack* reactionsStack = GetCustomElementReactionsStack(obj);
117 0 : Maybe<AutoCEReaction> ceReaction;
118 0 : if (reactionsStack) {
119 0 : ceReaction.emplace(reactionsStack);
120 : }
121 0 : self->SetLang(NonNullHelper(Constify(arg0)));
122 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
123 :
124 0 : return true;
125 : }
126 :
127 : static const JSJitInfo lang_getterinfo = {
128 : { (JSJitGetterOp)get_lang },
129 : { prototypes::id::HTMLElement },
130 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
131 : JSJitInfo::Getter,
132 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
133 : JSVAL_TYPE_STRING, /* returnType. Not relevant for setters. */
134 : false, /* isInfallible. False in setters. */
135 : false, /* isMovable. Not relevant for setters. */
136 : false, /* isEliminatable. Not relevant for setters. */
137 : false, /* isAlwaysInSlot. Only relevant for getters. */
138 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
139 : false, /* isTypedMethod. Only relevant for methods. */
140 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
141 : };
142 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
143 : static_assert(0 < 1, "There is no slot for us");
144 : static const JSJitInfo lang_setterinfo = {
145 : { (JSJitGetterOp)set_lang },
146 : { prototypes::id::HTMLElement },
147 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
148 : JSJitInfo::Setter,
149 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
150 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
151 : false, /* isInfallible. False in setters. */
152 : false, /* isMovable. Not relevant for setters. */
153 : false, /* isEliminatable. Not relevant for setters. */
154 : false, /* isAlwaysInSlot. Only relevant for getters. */
155 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
156 : false, /* isTypedMethod. Only relevant for methods. */
157 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
158 : };
159 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
160 : static_assert(0 < 1, "There is no slot for us");
161 :
162 : static bool
163 0 : get_dir(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
164 : {
165 0 : DOMString result;
166 0 : self->GetDir(result);
167 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
168 0 : if (!xpc::NonVoidStringToJsval(cx, result, args.rval())) {
169 0 : return false;
170 : }
171 0 : return true;
172 : }
173 :
174 : static bool
175 0 : set_dir(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitSetterCallArgs args)
176 : {
177 0 : binding_detail::FakeString arg0;
178 0 : if (!ConvertJSValueToString(cx, args[0], eStringify, eStringify, arg0)) {
179 0 : return false;
180 : }
181 0 : CustomElementReactionsStack* reactionsStack = GetCustomElementReactionsStack(obj);
182 0 : Maybe<AutoCEReaction> ceReaction;
183 0 : if (reactionsStack) {
184 0 : ceReaction.emplace(reactionsStack);
185 : }
186 0 : binding_detail::FastErrorResult rv;
187 0 : self->SetDir(NonNullHelper(Constify(arg0)), rv);
188 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
189 0 : return false;
190 : }
191 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
192 :
193 0 : return true;
194 : }
195 :
196 : static const JSJitInfo dir_getterinfo = {
197 : { (JSJitGetterOp)get_dir },
198 : { prototypes::id::HTMLElement },
199 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
200 : JSJitInfo::Getter,
201 : JSJitInfo::AliasDOMSets, /* aliasSet. Not relevant for setters. */
202 : JSVAL_TYPE_STRING, /* returnType. Not relevant for setters. */
203 : false, /* isInfallible. False in setters. */
204 : true, /* isMovable. Not relevant for setters. */
205 : true, /* isEliminatable. Not relevant for setters. */
206 : false, /* isAlwaysInSlot. Only relevant for getters. */
207 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
208 : false, /* isTypedMethod. Only relevant for methods. */
209 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
210 : };
211 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
212 : static_assert(0 < 1, "There is no slot for us");
213 : static const JSJitInfo dir_setterinfo = {
214 : { (JSJitGetterOp)set_dir },
215 : { prototypes::id::HTMLElement },
216 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
217 : JSJitInfo::Setter,
218 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
219 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
220 : false, /* isInfallible. False in setters. */
221 : false, /* isMovable. Not relevant for setters. */
222 : false, /* isEliminatable. Not relevant for setters. */
223 : false, /* isAlwaysInSlot. Only relevant for getters. */
224 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
225 : false, /* isTypedMethod. Only relevant for methods. */
226 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
227 : };
228 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
229 : static_assert(0 < 1, "There is no slot for us");
230 :
231 : static bool
232 0 : get_dataset(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
233 : {
234 0 : auto result(StrongOrRawPtr<nsDOMStringMap>(self->Dataset()));
235 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
236 0 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
237 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
238 0 : return false;
239 : }
240 0 : return true;
241 : }
242 :
243 : static const JSJitInfo dataset_getterinfo = {
244 : { (JSJitGetterOp)get_dataset },
245 : { prototypes::id::HTMLElement },
246 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
247 : JSJitInfo::Getter,
248 : JSJitInfo::AliasNone, /* aliasSet. Not relevant for setters. */
249 : JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
250 : false, /* isInfallible. False in setters. */
251 : true, /* isMovable. Not relevant for setters. */
252 : true, /* isEliminatable. Not relevant for setters. */
253 : false, /* isAlwaysInSlot. Only relevant for getters. */
254 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
255 : false, /* isTypedMethod. Only relevant for methods. */
256 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
257 : };
258 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
259 : static_assert(0 < 1, "There is no slot for us");
260 :
261 : static bool
262 0 : get_innerText(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
263 : {
264 0 : binding_detail::FastErrorResult rv;
265 0 : DOMString result;
266 0 : self->GetInnerText(result, rv);
267 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
268 0 : return false;
269 : }
270 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
271 0 : if (!xpc::NonVoidStringToJsval(cx, result, args.rval())) {
272 0 : return false;
273 : }
274 0 : return true;
275 : }
276 :
277 : static bool
278 0 : set_innerText(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitSetterCallArgs args)
279 : {
280 0 : binding_detail::FakeString arg0;
281 0 : if (!ConvertJSValueToString(cx, args[0], eEmpty, eStringify, arg0)) {
282 0 : return false;
283 : }
284 0 : CustomElementReactionsStack* reactionsStack = GetCustomElementReactionsStack(obj);
285 0 : Maybe<AutoCEReaction> ceReaction;
286 0 : if (reactionsStack) {
287 0 : ceReaction.emplace(reactionsStack);
288 : }
289 0 : self->SetInnerText(NonNullHelper(Constify(arg0)));
290 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
291 :
292 0 : return true;
293 : }
294 :
295 : static const JSJitInfo innerText_getterinfo = {
296 : { (JSJitGetterOp)get_innerText },
297 : { prototypes::id::HTMLElement },
298 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
299 : JSJitInfo::Getter,
300 : JSJitInfo::AliasDOMSets, /* aliasSet. Not relevant for setters. */
301 : JSVAL_TYPE_STRING, /* returnType. Not relevant for setters. */
302 : false, /* isInfallible. False in setters. */
303 : false, /* isMovable. Not relevant for setters. */
304 : false, /* isEliminatable. Not relevant for setters. */
305 : false, /* isAlwaysInSlot. Only relevant for getters. */
306 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
307 : false, /* isTypedMethod. Only relevant for methods. */
308 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
309 : };
310 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
311 : static_assert(0 < 1, "There is no slot for us");
312 : static const JSJitInfo innerText_setterinfo = {
313 : { (JSJitGetterOp)set_innerText },
314 : { prototypes::id::HTMLElement },
315 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
316 : JSJitInfo::Setter,
317 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
318 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
319 : false, /* isInfallible. False in setters. */
320 : false, /* isMovable. Not relevant for setters. */
321 : false, /* isEliminatable. Not relevant for setters. */
322 : false, /* isAlwaysInSlot. Only relevant for getters. */
323 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
324 : false, /* isTypedMethod. Only relevant for methods. */
325 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
326 : };
327 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
328 : static_assert(0 < 1, "There is no slot for us");
329 :
330 : static bool
331 0 : get_hidden(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
332 : {
333 0 : bool result(self->Hidden());
334 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
335 0 : args.rval().setBoolean(result);
336 0 : return true;
337 : }
338 :
339 : static bool
340 0 : set_hidden(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitSetterCallArgs args)
341 : {
342 : bool arg0;
343 0 : if (!ValueToPrimitive<bool, eDefault>(cx, args[0], &arg0)) {
344 0 : return false;
345 : }
346 0 : CustomElementReactionsStack* reactionsStack = GetCustomElementReactionsStack(obj);
347 0 : Maybe<AutoCEReaction> ceReaction;
348 0 : if (reactionsStack) {
349 0 : ceReaction.emplace(reactionsStack);
350 : }
351 0 : binding_detail::FastErrorResult rv;
352 0 : self->SetHidden(arg0, rv);
353 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
354 0 : return false;
355 : }
356 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
357 :
358 0 : return true;
359 : }
360 :
361 : static const JSJitInfo hidden_getterinfo = {
362 : { (JSJitGetterOp)get_hidden },
363 : { prototypes::id::HTMLElement },
364 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
365 : JSJitInfo::Getter,
366 : JSJitInfo::AliasDOMSets, /* aliasSet. Not relevant for setters. */
367 : JSVAL_TYPE_BOOLEAN, /* returnType. Not relevant for setters. */
368 : true, /* isInfallible. False in setters. */
369 : true, /* isMovable. Not relevant for setters. */
370 : true, /* isEliminatable. Not relevant for setters. */
371 : false, /* isAlwaysInSlot. Only relevant for getters. */
372 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
373 : false, /* isTypedMethod. Only relevant for methods. */
374 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
375 : };
376 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
377 : static_assert(0 < 1, "There is no slot for us");
378 : static const JSJitInfo hidden_setterinfo = {
379 : { (JSJitGetterOp)set_hidden },
380 : { prototypes::id::HTMLElement },
381 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
382 : JSJitInfo::Setter,
383 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
384 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
385 : false, /* isInfallible. False in setters. */
386 : false, /* isMovable. Not relevant for setters. */
387 : false, /* isEliminatable. Not relevant for setters. */
388 : false, /* isAlwaysInSlot. Only relevant for getters. */
389 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
390 : false, /* isTypedMethod. Only relevant for methods. */
391 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
392 : };
393 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
394 : static_assert(0 < 1, "There is no slot for us");
395 :
396 : static bool
397 0 : click(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, const JSJitMethodCallArgs& args)
398 : {
399 0 : self->Click(nsContentUtils::IsSystemCaller(cx) ? CallerType::System : CallerType::NonSystem);
400 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
401 0 : args.rval().setUndefined();
402 0 : return true;
403 : }
404 :
405 : static const JSJitInfo click_methodinfo = {
406 : { (JSJitGetterOp)click },
407 : { prototypes::id::HTMLElement },
408 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
409 : JSJitInfo::Method,
410 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
411 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
412 : true, /* isInfallible. False in setters. */
413 : false, /* isMovable. Not relevant for setters. */
414 : false, /* isEliminatable. Not relevant for setters. */
415 : false, /* isAlwaysInSlot. Only relevant for getters. */
416 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
417 : false, /* isTypedMethod. Only relevant for methods. */
418 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
419 : };
420 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
421 : static_assert(0 < 1, "There is no slot for us");
422 :
423 : static bool
424 0 : get_tabIndex(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
425 : {
426 0 : int32_t result(self->TabIndex());
427 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
428 0 : args.rval().setInt32(int32_t(result));
429 0 : return true;
430 : }
431 :
432 : static bool
433 0 : set_tabIndex(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitSetterCallArgs args)
434 : {
435 : int32_t arg0;
436 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[0], &arg0)) {
437 0 : return false;
438 : }
439 0 : CustomElementReactionsStack* reactionsStack = GetCustomElementReactionsStack(obj);
440 0 : Maybe<AutoCEReaction> ceReaction;
441 0 : if (reactionsStack) {
442 0 : ceReaction.emplace(reactionsStack);
443 : }
444 0 : binding_detail::FastErrorResult rv;
445 0 : self->SetTabIndex(arg0, rv);
446 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
447 0 : return false;
448 : }
449 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
450 :
451 0 : return true;
452 : }
453 :
454 : static const JSJitInfo tabIndex_getterinfo = {
455 : { (JSJitGetterOp)get_tabIndex },
456 : { prototypes::id::HTMLElement },
457 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
458 : JSJitInfo::Getter,
459 : JSJitInfo::AliasDOMSets, /* aliasSet. Not relevant for setters. */
460 : JSVAL_TYPE_INT32, /* returnType. Not relevant for setters. */
461 : true, /* isInfallible. False in setters. */
462 : true, /* isMovable. Not relevant for setters. */
463 : true, /* isEliminatable. Not relevant for setters. */
464 : false, /* isAlwaysInSlot. Only relevant for getters. */
465 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
466 : false, /* isTypedMethod. Only relevant for methods. */
467 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
468 : };
469 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
470 : static_assert(0 < 1, "There is no slot for us");
471 : static const JSJitInfo tabIndex_setterinfo = {
472 : { (JSJitGetterOp)set_tabIndex },
473 : { prototypes::id::HTMLElement },
474 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
475 : JSJitInfo::Setter,
476 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
477 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
478 : false, /* isInfallible. False in setters. */
479 : false, /* isMovable. Not relevant for setters. */
480 : false, /* isEliminatable. Not relevant for setters. */
481 : false, /* isAlwaysInSlot. Only relevant for getters. */
482 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
483 : false, /* isTypedMethod. Only relevant for methods. */
484 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
485 : };
486 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
487 : static_assert(0 < 1, "There is no slot for us");
488 :
489 : static bool
490 0 : focus(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, const JSJitMethodCallArgs& args)
491 : {
492 0 : binding_detail::FastErrorResult rv;
493 0 : self->Focus(rv);
494 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
495 0 : return false;
496 : }
497 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
498 0 : args.rval().setUndefined();
499 0 : return true;
500 : }
501 :
502 : static const JSJitInfo focus_methodinfo = {
503 : { (JSJitGetterOp)focus },
504 : { prototypes::id::HTMLElement },
505 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
506 : JSJitInfo::Method,
507 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
508 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
509 : false, /* isInfallible. False in setters. */
510 : false, /* isMovable. Not relevant for setters. */
511 : false, /* isEliminatable. Not relevant for setters. */
512 : false, /* isAlwaysInSlot. Only relevant for getters. */
513 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
514 : false, /* isTypedMethod. Only relevant for methods. */
515 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
516 : };
517 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
518 : static_assert(0 < 1, "There is no slot for us");
519 :
520 : static bool
521 0 : blur(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, const JSJitMethodCallArgs& args)
522 : {
523 0 : binding_detail::FastErrorResult rv;
524 0 : self->Blur(rv);
525 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
526 0 : return false;
527 : }
528 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
529 0 : args.rval().setUndefined();
530 0 : return true;
531 : }
532 :
533 : static const JSJitInfo blur_methodinfo = {
534 : { (JSJitGetterOp)blur },
535 : { prototypes::id::HTMLElement },
536 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
537 : JSJitInfo::Method,
538 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
539 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
540 : false, /* isInfallible. False in setters. */
541 : false, /* isMovable. Not relevant for setters. */
542 : false, /* isEliminatable. Not relevant for setters. */
543 : false, /* isAlwaysInSlot. Only relevant for getters. */
544 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
545 : false, /* isTypedMethod. Only relevant for methods. */
546 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
547 : };
548 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
549 : static_assert(0 < 1, "There is no slot for us");
550 :
551 : static bool
552 0 : get_accessKey(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
553 : {
554 0 : DOMString result;
555 0 : self->GetAccessKey(result);
556 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
557 0 : if (!xpc::NonVoidStringToJsval(cx, result, args.rval())) {
558 0 : return false;
559 : }
560 0 : return true;
561 : }
562 :
563 : static bool
564 0 : set_accessKey(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitSetterCallArgs args)
565 : {
566 0 : binding_detail::FakeString arg0;
567 0 : if (!ConvertJSValueToString(cx, args[0], eStringify, eStringify, arg0)) {
568 0 : return false;
569 : }
570 0 : CustomElementReactionsStack* reactionsStack = GetCustomElementReactionsStack(obj);
571 0 : Maybe<AutoCEReaction> ceReaction;
572 0 : if (reactionsStack) {
573 0 : ceReaction.emplace(reactionsStack);
574 : }
575 0 : binding_detail::FastErrorResult rv;
576 0 : self->SetAccessKey(NonNullHelper(Constify(arg0)), rv);
577 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
578 0 : return false;
579 : }
580 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
581 :
582 0 : return true;
583 : }
584 :
585 : static const JSJitInfo accessKey_getterinfo = {
586 : { (JSJitGetterOp)get_accessKey },
587 : { prototypes::id::HTMLElement },
588 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
589 : JSJitInfo::Getter,
590 : JSJitInfo::AliasDOMSets, /* aliasSet. Not relevant for setters. */
591 : JSVAL_TYPE_STRING, /* returnType. Not relevant for setters. */
592 : false, /* isInfallible. False in setters. */
593 : true, /* isMovable. Not relevant for setters. */
594 : true, /* isEliminatable. Not relevant for setters. */
595 : false, /* isAlwaysInSlot. Only relevant for getters. */
596 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
597 : false, /* isTypedMethod. Only relevant for methods. */
598 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
599 : };
600 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
601 : static_assert(0 < 1, "There is no slot for us");
602 : static const JSJitInfo accessKey_setterinfo = {
603 : { (JSJitGetterOp)set_accessKey },
604 : { prototypes::id::HTMLElement },
605 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
606 : JSJitInfo::Setter,
607 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
608 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
609 : false, /* isInfallible. False in setters. */
610 : false, /* isMovable. Not relevant for setters. */
611 : false, /* isEliminatable. Not relevant for setters. */
612 : false, /* isAlwaysInSlot. Only relevant for getters. */
613 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
614 : false, /* isTypedMethod. Only relevant for methods. */
615 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
616 : };
617 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
618 : static_assert(0 < 1, "There is no slot for us");
619 :
620 : static bool
621 0 : get_accessKeyLabel(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
622 : {
623 0 : DOMString result;
624 0 : self->GetAccessKeyLabel(result);
625 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
626 0 : if (!xpc::NonVoidStringToJsval(cx, result, args.rval())) {
627 0 : return false;
628 : }
629 0 : return true;
630 : }
631 :
632 : static const JSJitInfo accessKeyLabel_getterinfo = {
633 : { (JSJitGetterOp)get_accessKeyLabel },
634 : { prototypes::id::HTMLElement },
635 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
636 : JSJitInfo::Getter,
637 : JSJitInfo::AliasDOMSets, /* aliasSet. Not relevant for setters. */
638 : JSVAL_TYPE_STRING, /* returnType. Not relevant for setters. */
639 : false, /* isInfallible. False in setters. */
640 : true, /* isMovable. Not relevant for setters. */
641 : true, /* isEliminatable. Not relevant for setters. */
642 : false, /* isAlwaysInSlot. Only relevant for getters. */
643 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
644 : false, /* isTypedMethod. Only relevant for methods. */
645 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
646 : };
647 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
648 : static_assert(0 < 1, "There is no slot for us");
649 :
650 : static bool
651 0 : get_draggable(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
652 : {
653 0 : bool result(self->Draggable());
654 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
655 0 : args.rval().setBoolean(result);
656 0 : return true;
657 : }
658 :
659 : static bool
660 0 : set_draggable(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitSetterCallArgs args)
661 : {
662 : bool arg0;
663 0 : if (!ValueToPrimitive<bool, eDefault>(cx, args[0], &arg0)) {
664 0 : return false;
665 : }
666 0 : CustomElementReactionsStack* reactionsStack = GetCustomElementReactionsStack(obj);
667 0 : Maybe<AutoCEReaction> ceReaction;
668 0 : if (reactionsStack) {
669 0 : ceReaction.emplace(reactionsStack);
670 : }
671 0 : binding_detail::FastErrorResult rv;
672 0 : self->SetDraggable(arg0, rv);
673 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
674 0 : return false;
675 : }
676 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
677 :
678 0 : return true;
679 : }
680 :
681 : static const JSJitInfo draggable_getterinfo = {
682 : { (JSJitGetterOp)get_draggable },
683 : { prototypes::id::HTMLElement },
684 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
685 : JSJitInfo::Getter,
686 : JSJitInfo::AliasDOMSets, /* aliasSet. Not relevant for setters. */
687 : JSVAL_TYPE_BOOLEAN, /* returnType. Not relevant for setters. */
688 : true, /* isInfallible. False in setters. */
689 : true, /* isMovable. Not relevant for setters. */
690 : true, /* isEliminatable. Not relevant for setters. */
691 : false, /* isAlwaysInSlot. Only relevant for getters. */
692 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
693 : false, /* isTypedMethod. Only relevant for methods. */
694 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
695 : };
696 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
697 : static_assert(0 < 1, "There is no slot for us");
698 : static const JSJitInfo draggable_setterinfo = {
699 : { (JSJitGetterOp)set_draggable },
700 : { prototypes::id::HTMLElement },
701 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
702 : JSJitInfo::Setter,
703 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
704 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
705 : false, /* isInfallible. False in setters. */
706 : false, /* isMovable. Not relevant for setters. */
707 : false, /* isEliminatable. Not relevant for setters. */
708 : false, /* isAlwaysInSlot. Only relevant for getters. */
709 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
710 : false, /* isTypedMethod. Only relevant for methods. */
711 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
712 : };
713 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
714 : static_assert(0 < 1, "There is no slot for us");
715 :
716 : static bool
717 0 : get_contentEditable(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
718 : {
719 0 : DOMString result;
720 0 : self->GetContentEditable(result);
721 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
722 0 : if (!xpc::NonVoidStringToJsval(cx, result, args.rval())) {
723 0 : return false;
724 : }
725 0 : return true;
726 : }
727 :
728 : static bool
729 0 : set_contentEditable(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitSetterCallArgs args)
730 : {
731 0 : binding_detail::FakeString arg0;
732 0 : if (!ConvertJSValueToString(cx, args[0], eStringify, eStringify, arg0)) {
733 0 : return false;
734 : }
735 0 : binding_detail::FastErrorResult rv;
736 0 : self->SetContentEditable(NonNullHelper(Constify(arg0)), rv);
737 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
738 0 : return false;
739 : }
740 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
741 :
742 0 : return true;
743 : }
744 :
745 : static const JSJitInfo contentEditable_getterinfo = {
746 : { (JSJitGetterOp)get_contentEditable },
747 : { prototypes::id::HTMLElement },
748 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
749 : JSJitInfo::Getter,
750 : JSJitInfo::AliasDOMSets, /* aliasSet. Not relevant for setters. */
751 : JSVAL_TYPE_STRING, /* returnType. Not relevant for setters. */
752 : false, /* isInfallible. False in setters. */
753 : true, /* isMovable. Not relevant for setters. */
754 : true, /* isEliminatable. Not relevant for setters. */
755 : false, /* isAlwaysInSlot. Only relevant for getters. */
756 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
757 : false, /* isTypedMethod. Only relevant for methods. */
758 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
759 : };
760 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
761 : static_assert(0 < 1, "There is no slot for us");
762 : static const JSJitInfo contentEditable_setterinfo = {
763 : { (JSJitGetterOp)set_contentEditable },
764 : { prototypes::id::HTMLElement },
765 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
766 : JSJitInfo::Setter,
767 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
768 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
769 : false, /* isInfallible. False in setters. */
770 : false, /* isMovable. Not relevant for setters. */
771 : false, /* isEliminatable. Not relevant for setters. */
772 : false, /* isAlwaysInSlot. Only relevant for getters. */
773 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
774 : false, /* isTypedMethod. Only relevant for methods. */
775 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
776 : };
777 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
778 : static_assert(0 < 1, "There is no slot for us");
779 :
780 : static bool
781 0 : get_isContentEditable(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
782 : {
783 0 : bool result(self->IsContentEditable());
784 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
785 0 : args.rval().setBoolean(result);
786 0 : return true;
787 : }
788 :
789 : static const JSJitInfo isContentEditable_getterinfo = {
790 : { (JSJitGetterOp)get_isContentEditable },
791 : { prototypes::id::HTMLElement },
792 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
793 : JSJitInfo::Getter,
794 : JSJitInfo::AliasDOMSets, /* aliasSet. Not relevant for setters. */
795 : JSVAL_TYPE_BOOLEAN, /* returnType. Not relevant for setters. */
796 : true, /* isInfallible. False in setters. */
797 : true, /* isMovable. Not relevant for setters. */
798 : true, /* isEliminatable. Not relevant for setters. */
799 : false, /* isAlwaysInSlot. Only relevant for getters. */
800 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
801 : false, /* isTypedMethod. Only relevant for methods. */
802 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
803 : };
804 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
805 : static_assert(0 < 1, "There is no slot for us");
806 :
807 : static bool
808 0 : get_contextMenu(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
809 : {
810 0 : auto result(StrongOrRawPtr<mozilla::dom::HTMLMenuElement>(self->GetContextMenu()));
811 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
812 0 : if (!result) {
813 0 : args.rval().setNull();
814 0 : return true;
815 : }
816 0 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
817 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
818 0 : return false;
819 : }
820 0 : return true;
821 : }
822 :
823 : static const JSJitInfo contextMenu_getterinfo = {
824 : { (JSJitGetterOp)get_contextMenu },
825 : { prototypes::id::HTMLElement },
826 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
827 : JSJitInfo::Getter,
828 : JSJitInfo::AliasDOMSets, /* aliasSet. Not relevant for setters. */
829 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
830 : false, /* isInfallible. False in setters. */
831 : true, /* isMovable. Not relevant for setters. */
832 : true, /* isEliminatable. Not relevant for setters. */
833 : false, /* isAlwaysInSlot. Only relevant for getters. */
834 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
835 : false, /* isTypedMethod. Only relevant for methods. */
836 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
837 : };
838 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
839 : static_assert(0 < 1, "There is no slot for us");
840 :
841 : static bool
842 0 : get_spellcheck(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
843 : {
844 0 : bool result(self->Spellcheck());
845 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
846 0 : args.rval().setBoolean(result);
847 0 : return true;
848 : }
849 :
850 : static bool
851 0 : set_spellcheck(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitSetterCallArgs args)
852 : {
853 : bool arg0;
854 0 : if (!ValueToPrimitive<bool, eDefault>(cx, args[0], &arg0)) {
855 0 : return false;
856 : }
857 0 : CustomElementReactionsStack* reactionsStack = GetCustomElementReactionsStack(obj);
858 0 : Maybe<AutoCEReaction> ceReaction;
859 0 : if (reactionsStack) {
860 0 : ceReaction.emplace(reactionsStack);
861 : }
862 0 : binding_detail::FastErrorResult rv;
863 0 : self->SetSpellcheck(arg0, rv);
864 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
865 0 : return false;
866 : }
867 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
868 :
869 0 : return true;
870 : }
871 :
872 : static const JSJitInfo spellcheck_getterinfo = {
873 : { (JSJitGetterOp)get_spellcheck },
874 : { prototypes::id::HTMLElement },
875 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
876 : JSJitInfo::Getter,
877 : JSJitInfo::AliasDOMSets, /* aliasSet. Not relevant for setters. */
878 : JSVAL_TYPE_BOOLEAN, /* returnType. Not relevant for setters. */
879 : true, /* isInfallible. False in setters. */
880 : true, /* isMovable. Not relevant for setters. */
881 : true, /* isEliminatable. Not relevant for setters. */
882 : false, /* isAlwaysInSlot. Only relevant for getters. */
883 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
884 : false, /* isTypedMethod. Only relevant for methods. */
885 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
886 : };
887 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
888 : static_assert(0 < 1, "There is no slot for us");
889 : static const JSJitInfo spellcheck_setterinfo = {
890 : { (JSJitGetterOp)set_spellcheck },
891 : { prototypes::id::HTMLElement },
892 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
893 : JSJitInfo::Setter,
894 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
895 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
896 : false, /* isInfallible. False in setters. */
897 : false, /* isMovable. Not relevant for setters. */
898 : false, /* isEliminatable. Not relevant for setters. */
899 : false, /* isAlwaysInSlot. Only relevant for getters. */
900 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
901 : false, /* isTypedMethod. Only relevant for methods. */
902 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
903 : };
904 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
905 : static_assert(0 < 1, "There is no slot for us");
906 :
907 : static bool
908 0 : get_style(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
909 : {
910 0 : auto result(StrongOrRawPtr<nsICSSDeclaration>(self->Style()));
911 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
912 0 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
913 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
914 0 : return false;
915 : }
916 0 : return true;
917 : }
918 :
919 : static bool
920 0 : set_style(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitSetterCallArgs args)
921 : {
922 0 : JS::Rooted<JS::Value> v(cx);
923 0 : if (!JS_GetProperty(cx, obj, "style", &v)) {
924 0 : return false;
925 : }
926 :
927 0 : if (!v.isObject()) {
928 0 : return ThrowErrorMessage(cx, MSG_NOT_OBJECT, "HTMLElement.style");
929 : }
930 :
931 0 : JS::Rooted<JSObject*> targetObj(cx, &v.toObject());
932 0 : return JS_SetProperty(cx, targetObj, "cssText", args[0]);
933 : }
934 :
935 : static const JSJitInfo style_getterinfo = {
936 : { (JSJitGetterOp)get_style },
937 : { prototypes::id::HTMLElement },
938 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
939 : JSJitInfo::Getter,
940 : JSJitInfo::AliasNone, /* aliasSet. Not relevant for setters. */
941 : JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
942 : false, /* isInfallible. False in setters. */
943 : true, /* isMovable. Not relevant for setters. */
944 : true, /* isEliminatable. Not relevant for setters. */
945 : false, /* isAlwaysInSlot. Only relevant for getters. */
946 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
947 : false, /* isTypedMethod. Only relevant for methods. */
948 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
949 : };
950 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
951 : static_assert(0 < 1, "There is no slot for us");
952 : static const JSJitInfo style_setterinfo = {
953 : { (JSJitGetterOp)set_style },
954 : { prototypes::id::HTMLElement },
955 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
956 : JSJitInfo::Setter,
957 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
958 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
959 : false, /* isInfallible. False in setters. */
960 : false, /* isMovable. Not relevant for setters. */
961 : false, /* isEliminatable. Not relevant for setters. */
962 : false, /* isAlwaysInSlot. Only relevant for getters. */
963 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
964 : false, /* isTypedMethod. Only relevant for methods. */
965 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
966 : };
967 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
968 : static_assert(0 < 1, "There is no slot for us");
969 :
970 : static bool
971 0 : get_offsetParent(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
972 : {
973 0 : auto result(StrongOrRawPtr<mozilla::dom::Element>(self->GetOffsetParent()));
974 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
975 0 : if (!result) {
976 0 : args.rval().setNull();
977 0 : return true;
978 : }
979 0 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
980 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
981 0 : return false;
982 : }
983 0 : return true;
984 : }
985 :
986 : static const JSJitInfo offsetParent_getterinfo = {
987 : { (JSJitGetterOp)get_offsetParent },
988 : { prototypes::id::HTMLElement },
989 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
990 : JSJitInfo::Getter,
991 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
992 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
993 : false, /* isInfallible. False in setters. */
994 : false, /* isMovable. Not relevant for setters. */
995 : false, /* isEliminatable. Not relevant for setters. */
996 : false, /* isAlwaysInSlot. Only relevant for getters. */
997 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
998 : false, /* isTypedMethod. Only relevant for methods. */
999 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1000 : };
1001 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1002 : static_assert(0 < 1, "There is no slot for us");
1003 :
1004 : static bool
1005 0 : get_offsetTop(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
1006 : {
1007 0 : int32_t result(self->OffsetTop());
1008 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1009 0 : args.rval().setInt32(int32_t(result));
1010 0 : return true;
1011 : }
1012 :
1013 : static const JSJitInfo offsetTop_getterinfo = {
1014 : { (JSJitGetterOp)get_offsetTop },
1015 : { prototypes::id::HTMLElement },
1016 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
1017 : JSJitInfo::Getter,
1018 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1019 : JSVAL_TYPE_INT32, /* returnType. Not relevant for setters. */
1020 : true, /* isInfallible. False in setters. */
1021 : false, /* isMovable. Not relevant for setters. */
1022 : false, /* isEliminatable. Not relevant for setters. */
1023 : false, /* isAlwaysInSlot. Only relevant for getters. */
1024 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1025 : false, /* isTypedMethod. Only relevant for methods. */
1026 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1027 : };
1028 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1029 : static_assert(0 < 1, "There is no slot for us");
1030 :
1031 : static bool
1032 0 : get_offsetLeft(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
1033 : {
1034 0 : int32_t result(self->OffsetLeft());
1035 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1036 0 : args.rval().setInt32(int32_t(result));
1037 0 : return true;
1038 : }
1039 :
1040 : static const JSJitInfo offsetLeft_getterinfo = {
1041 : { (JSJitGetterOp)get_offsetLeft },
1042 : { prototypes::id::HTMLElement },
1043 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
1044 : JSJitInfo::Getter,
1045 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1046 : JSVAL_TYPE_INT32, /* returnType. Not relevant for setters. */
1047 : true, /* isInfallible. False in setters. */
1048 : false, /* isMovable. Not relevant for setters. */
1049 : false, /* isEliminatable. Not relevant for setters. */
1050 : false, /* isAlwaysInSlot. Only relevant for getters. */
1051 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1052 : false, /* isTypedMethod. Only relevant for methods. */
1053 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1054 : };
1055 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1056 : static_assert(0 < 1, "There is no slot for us");
1057 :
1058 : static bool
1059 0 : get_offsetWidth(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
1060 : {
1061 0 : int32_t result(self->OffsetWidth());
1062 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1063 0 : args.rval().setInt32(int32_t(result));
1064 0 : return true;
1065 : }
1066 :
1067 : static const JSJitInfo offsetWidth_getterinfo = {
1068 : { (JSJitGetterOp)get_offsetWidth },
1069 : { prototypes::id::HTMLElement },
1070 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
1071 : JSJitInfo::Getter,
1072 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1073 : JSVAL_TYPE_INT32, /* returnType. Not relevant for setters. */
1074 : true, /* isInfallible. False in setters. */
1075 : false, /* isMovable. Not relevant for setters. */
1076 : false, /* isEliminatable. Not relevant for setters. */
1077 : false, /* isAlwaysInSlot. Only relevant for getters. */
1078 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1079 : false, /* isTypedMethod. Only relevant for methods. */
1080 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1081 : };
1082 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1083 : static_assert(0 < 1, "There is no slot for us");
1084 :
1085 : static bool
1086 0 : get_offsetHeight(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
1087 : {
1088 0 : int32_t result(self->OffsetHeight());
1089 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1090 0 : args.rval().setInt32(int32_t(result));
1091 0 : return true;
1092 : }
1093 :
1094 : static const JSJitInfo offsetHeight_getterinfo = {
1095 : { (JSJitGetterOp)get_offsetHeight },
1096 : { prototypes::id::HTMLElement },
1097 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
1098 : JSJitInfo::Getter,
1099 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1100 : JSVAL_TYPE_INT32, /* returnType. Not relevant for setters. */
1101 : true, /* isInfallible. False in setters. */
1102 : false, /* isMovable. Not relevant for setters. */
1103 : false, /* isEliminatable. Not relevant for setters. */
1104 : false, /* isAlwaysInSlot. Only relevant for getters. */
1105 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1106 : false, /* isTypedMethod. Only relevant for methods. */
1107 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1108 : };
1109 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1110 : static_assert(0 < 1, "There is no slot for us");
1111 :
1112 : static bool
1113 0 : get_oncopy(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
1114 : {
1115 0 : RefPtr<EventHandlerNonNull> result(self->GetOncopy());
1116 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1117 0 : if (result) {
1118 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
1119 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
1120 0 : return false;
1121 : }
1122 0 : return true;
1123 : } else {
1124 0 : args.rval().setNull();
1125 0 : return true;
1126 : }
1127 : }
1128 :
1129 : static bool
1130 0 : set_oncopy(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitSetterCallArgs args)
1131 : {
1132 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
1133 0 : if (args[0].isObject()) {
1134 : { // scope for tempRoot
1135 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
1136 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
1137 : }
1138 : } else {
1139 0 : arg0 = nullptr;
1140 : }
1141 0 : self->SetOncopy(Constify(arg0));
1142 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1143 :
1144 0 : return true;
1145 : }
1146 :
1147 : static const JSJitInfo oncopy_getterinfo = {
1148 : { (JSJitGetterOp)get_oncopy },
1149 : { prototypes::id::HTMLElement },
1150 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
1151 : JSJitInfo::Getter,
1152 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1153 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
1154 : false, /* isInfallible. False in setters. */
1155 : false, /* isMovable. Not relevant for setters. */
1156 : false, /* isEliminatable. Not relevant for setters. */
1157 : false, /* isAlwaysInSlot. Only relevant for getters. */
1158 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1159 : false, /* isTypedMethod. Only relevant for methods. */
1160 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1161 : };
1162 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1163 : static_assert(0 < 1, "There is no slot for us");
1164 : static const JSJitInfo oncopy_setterinfo = {
1165 : { (JSJitGetterOp)set_oncopy },
1166 : { prototypes::id::HTMLElement },
1167 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
1168 : JSJitInfo::Setter,
1169 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1170 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
1171 : false, /* isInfallible. False in setters. */
1172 : false, /* isMovable. Not relevant for setters. */
1173 : false, /* isEliminatable. Not relevant for setters. */
1174 : false, /* isAlwaysInSlot. Only relevant for getters. */
1175 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1176 : false, /* isTypedMethod. Only relevant for methods. */
1177 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1178 : };
1179 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1180 : static_assert(0 < 1, "There is no slot for us");
1181 :
1182 : static bool
1183 0 : get_oncut(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
1184 : {
1185 0 : RefPtr<EventHandlerNonNull> result(self->GetOncut());
1186 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1187 0 : if (result) {
1188 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
1189 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
1190 0 : return false;
1191 : }
1192 0 : return true;
1193 : } else {
1194 0 : args.rval().setNull();
1195 0 : return true;
1196 : }
1197 : }
1198 :
1199 : static bool
1200 0 : set_oncut(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitSetterCallArgs args)
1201 : {
1202 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
1203 0 : if (args[0].isObject()) {
1204 : { // scope for tempRoot
1205 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
1206 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
1207 : }
1208 : } else {
1209 0 : arg0 = nullptr;
1210 : }
1211 0 : self->SetOncut(Constify(arg0));
1212 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1213 :
1214 0 : return true;
1215 : }
1216 :
1217 : static const JSJitInfo oncut_getterinfo = {
1218 : { (JSJitGetterOp)get_oncut },
1219 : { prototypes::id::HTMLElement },
1220 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
1221 : JSJitInfo::Getter,
1222 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1223 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
1224 : false, /* isInfallible. False in setters. */
1225 : false, /* isMovable. Not relevant for setters. */
1226 : false, /* isEliminatable. Not relevant for setters. */
1227 : false, /* isAlwaysInSlot. Only relevant for getters. */
1228 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1229 : false, /* isTypedMethod. Only relevant for methods. */
1230 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1231 : };
1232 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1233 : static_assert(0 < 1, "There is no slot for us");
1234 : static const JSJitInfo oncut_setterinfo = {
1235 : { (JSJitGetterOp)set_oncut },
1236 : { prototypes::id::HTMLElement },
1237 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
1238 : JSJitInfo::Setter,
1239 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1240 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
1241 : false, /* isInfallible. False in setters. */
1242 : false, /* isMovable. Not relevant for setters. */
1243 : false, /* isEliminatable. Not relevant for setters. */
1244 : false, /* isAlwaysInSlot. Only relevant for getters. */
1245 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1246 : false, /* isTypedMethod. Only relevant for methods. */
1247 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1248 : };
1249 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1250 : static_assert(0 < 1, "There is no slot for us");
1251 :
1252 : static bool
1253 0 : get_onpaste(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
1254 : {
1255 0 : RefPtr<EventHandlerNonNull> result(self->GetOnpaste());
1256 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1257 0 : if (result) {
1258 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
1259 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
1260 0 : return false;
1261 : }
1262 0 : return true;
1263 : } else {
1264 0 : args.rval().setNull();
1265 0 : return true;
1266 : }
1267 : }
1268 :
1269 : static bool
1270 0 : set_onpaste(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitSetterCallArgs args)
1271 : {
1272 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
1273 0 : if (args[0].isObject()) {
1274 : { // scope for tempRoot
1275 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
1276 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
1277 : }
1278 : } else {
1279 0 : arg0 = nullptr;
1280 : }
1281 0 : self->SetOnpaste(Constify(arg0));
1282 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1283 :
1284 0 : return true;
1285 : }
1286 :
1287 : static const JSJitInfo onpaste_getterinfo = {
1288 : { (JSJitGetterOp)get_onpaste },
1289 : { prototypes::id::HTMLElement },
1290 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
1291 : JSJitInfo::Getter,
1292 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1293 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
1294 : false, /* isInfallible. False in setters. */
1295 : false, /* isMovable. Not relevant for setters. */
1296 : false, /* isEliminatable. Not relevant for setters. */
1297 : false, /* isAlwaysInSlot. Only relevant for getters. */
1298 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1299 : false, /* isTypedMethod. Only relevant for methods. */
1300 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1301 : };
1302 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1303 : static_assert(0 < 1, "There is no slot for us");
1304 : static const JSJitInfo onpaste_setterinfo = {
1305 : { (JSJitGetterOp)set_onpaste },
1306 : { prototypes::id::HTMLElement },
1307 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
1308 : JSJitInfo::Setter,
1309 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1310 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
1311 : false, /* isInfallible. False in setters. */
1312 : false, /* isMovable. Not relevant for setters. */
1313 : false, /* isEliminatable. Not relevant for setters. */
1314 : false, /* isAlwaysInSlot. Only relevant for getters. */
1315 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1316 : false, /* isTypedMethod. Only relevant for methods. */
1317 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1318 : };
1319 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1320 : static_assert(0 < 1, "There is no slot for us");
1321 :
1322 : static bool
1323 0 : get_onabort(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
1324 : {
1325 0 : RefPtr<EventHandlerNonNull> result(self->GetOnabort());
1326 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1327 0 : if (result) {
1328 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
1329 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
1330 0 : return false;
1331 : }
1332 0 : return true;
1333 : } else {
1334 0 : args.rval().setNull();
1335 0 : return true;
1336 : }
1337 : }
1338 :
1339 : static bool
1340 0 : set_onabort(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitSetterCallArgs args)
1341 : {
1342 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
1343 0 : if (args[0].isObject()) {
1344 : { // scope for tempRoot
1345 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
1346 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
1347 : }
1348 : } else {
1349 0 : arg0 = nullptr;
1350 : }
1351 0 : self->SetOnabort(Constify(arg0));
1352 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1353 :
1354 0 : return true;
1355 : }
1356 :
1357 : static const JSJitInfo onabort_getterinfo = {
1358 : { (JSJitGetterOp)get_onabort },
1359 : { prototypes::id::HTMLElement },
1360 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
1361 : JSJitInfo::Getter,
1362 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1363 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
1364 : false, /* isInfallible. False in setters. */
1365 : false, /* isMovable. Not relevant for setters. */
1366 : false, /* isEliminatable. Not relevant for setters. */
1367 : false, /* isAlwaysInSlot. Only relevant for getters. */
1368 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1369 : false, /* isTypedMethod. Only relevant for methods. */
1370 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1371 : };
1372 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1373 : static_assert(0 < 1, "There is no slot for us");
1374 : static const JSJitInfo onabort_setterinfo = {
1375 : { (JSJitGetterOp)set_onabort },
1376 : { prototypes::id::HTMLElement },
1377 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
1378 : JSJitInfo::Setter,
1379 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1380 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
1381 : false, /* isInfallible. False in setters. */
1382 : false, /* isMovable. Not relevant for setters. */
1383 : false, /* isEliminatable. Not relevant for setters. */
1384 : false, /* isAlwaysInSlot. Only relevant for getters. */
1385 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1386 : false, /* isTypedMethod. Only relevant for methods. */
1387 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1388 : };
1389 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1390 : static_assert(0 < 1, "There is no slot for us");
1391 :
1392 : static bool
1393 0 : get_onblur(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
1394 : {
1395 0 : RefPtr<EventHandlerNonNull> result(self->GetOnblur());
1396 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1397 0 : if (result) {
1398 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
1399 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
1400 0 : return false;
1401 : }
1402 0 : return true;
1403 : } else {
1404 0 : args.rval().setNull();
1405 0 : return true;
1406 : }
1407 : }
1408 :
1409 : static bool
1410 0 : set_onblur(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitSetterCallArgs args)
1411 : {
1412 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
1413 0 : if (args[0].isObject()) {
1414 : { // scope for tempRoot
1415 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
1416 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
1417 : }
1418 : } else {
1419 0 : arg0 = nullptr;
1420 : }
1421 0 : self->SetOnblur(Constify(arg0));
1422 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1423 :
1424 0 : return true;
1425 : }
1426 :
1427 : static const JSJitInfo onblur_getterinfo = {
1428 : { (JSJitGetterOp)get_onblur },
1429 : { prototypes::id::HTMLElement },
1430 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
1431 : JSJitInfo::Getter,
1432 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1433 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
1434 : false, /* isInfallible. False in setters. */
1435 : false, /* isMovable. Not relevant for setters. */
1436 : false, /* isEliminatable. Not relevant for setters. */
1437 : false, /* isAlwaysInSlot. Only relevant for getters. */
1438 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1439 : false, /* isTypedMethod. Only relevant for methods. */
1440 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1441 : };
1442 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1443 : static_assert(0 < 1, "There is no slot for us");
1444 : static const JSJitInfo onblur_setterinfo = {
1445 : { (JSJitGetterOp)set_onblur },
1446 : { prototypes::id::HTMLElement },
1447 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
1448 : JSJitInfo::Setter,
1449 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1450 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
1451 : false, /* isInfallible. False in setters. */
1452 : false, /* isMovable. Not relevant for setters. */
1453 : false, /* isEliminatable. Not relevant for setters. */
1454 : false, /* isAlwaysInSlot. Only relevant for getters. */
1455 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1456 : false, /* isTypedMethod. Only relevant for methods. */
1457 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1458 : };
1459 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1460 : static_assert(0 < 1, "There is no slot for us");
1461 :
1462 : static bool
1463 0 : get_onfocus(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
1464 : {
1465 0 : RefPtr<EventHandlerNonNull> result(self->GetOnfocus());
1466 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1467 0 : if (result) {
1468 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
1469 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
1470 0 : return false;
1471 : }
1472 0 : return true;
1473 : } else {
1474 0 : args.rval().setNull();
1475 0 : return true;
1476 : }
1477 : }
1478 :
1479 : static bool
1480 0 : set_onfocus(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitSetterCallArgs args)
1481 : {
1482 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
1483 0 : if (args[0].isObject()) {
1484 : { // scope for tempRoot
1485 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
1486 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
1487 : }
1488 : } else {
1489 0 : arg0 = nullptr;
1490 : }
1491 0 : self->SetOnfocus(Constify(arg0));
1492 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1493 :
1494 0 : return true;
1495 : }
1496 :
1497 : static const JSJitInfo onfocus_getterinfo = {
1498 : { (JSJitGetterOp)get_onfocus },
1499 : { prototypes::id::HTMLElement },
1500 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
1501 : JSJitInfo::Getter,
1502 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1503 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
1504 : false, /* isInfallible. False in setters. */
1505 : false, /* isMovable. Not relevant for setters. */
1506 : false, /* isEliminatable. Not relevant for setters. */
1507 : false, /* isAlwaysInSlot. Only relevant for getters. */
1508 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1509 : false, /* isTypedMethod. Only relevant for methods. */
1510 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1511 : };
1512 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1513 : static_assert(0 < 1, "There is no slot for us");
1514 : static const JSJitInfo onfocus_setterinfo = {
1515 : { (JSJitGetterOp)set_onfocus },
1516 : { prototypes::id::HTMLElement },
1517 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
1518 : JSJitInfo::Setter,
1519 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1520 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
1521 : false, /* isInfallible. False in setters. */
1522 : false, /* isMovable. Not relevant for setters. */
1523 : false, /* isEliminatable. Not relevant for setters. */
1524 : false, /* isAlwaysInSlot. Only relevant for getters. */
1525 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1526 : false, /* isTypedMethod. Only relevant for methods. */
1527 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1528 : };
1529 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1530 : static_assert(0 < 1, "There is no slot for us");
1531 :
1532 : static bool
1533 0 : get_onauxclick(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
1534 : {
1535 0 : RefPtr<EventHandlerNonNull> result(self->GetOnauxclick());
1536 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1537 0 : if (result) {
1538 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
1539 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
1540 0 : return false;
1541 : }
1542 0 : return true;
1543 : } else {
1544 0 : args.rval().setNull();
1545 0 : return true;
1546 : }
1547 : }
1548 :
1549 : static bool
1550 0 : set_onauxclick(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitSetterCallArgs args)
1551 : {
1552 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
1553 0 : if (args[0].isObject()) {
1554 : { // scope for tempRoot
1555 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
1556 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
1557 : }
1558 : } else {
1559 0 : arg0 = nullptr;
1560 : }
1561 0 : self->SetOnauxclick(Constify(arg0));
1562 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1563 :
1564 0 : return true;
1565 : }
1566 :
1567 : static const JSJitInfo onauxclick_getterinfo = {
1568 : { (JSJitGetterOp)get_onauxclick },
1569 : { prototypes::id::HTMLElement },
1570 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
1571 : JSJitInfo::Getter,
1572 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1573 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
1574 : false, /* isInfallible. False in setters. */
1575 : false, /* isMovable. Not relevant for setters. */
1576 : false, /* isEliminatable. Not relevant for setters. */
1577 : false, /* isAlwaysInSlot. Only relevant for getters. */
1578 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1579 : false, /* isTypedMethod. Only relevant for methods. */
1580 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1581 : };
1582 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1583 : static_assert(0 < 1, "There is no slot for us");
1584 : static const JSJitInfo onauxclick_setterinfo = {
1585 : { (JSJitGetterOp)set_onauxclick },
1586 : { prototypes::id::HTMLElement },
1587 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
1588 : JSJitInfo::Setter,
1589 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1590 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
1591 : false, /* isInfallible. False in setters. */
1592 : false, /* isMovable. Not relevant for setters. */
1593 : false, /* isEliminatable. Not relevant for setters. */
1594 : false, /* isAlwaysInSlot. Only relevant for getters. */
1595 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1596 : false, /* isTypedMethod. Only relevant for methods. */
1597 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1598 : };
1599 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1600 : static_assert(0 < 1, "There is no slot for us");
1601 :
1602 : static bool
1603 0 : get_oncanplay(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
1604 : {
1605 0 : RefPtr<EventHandlerNonNull> result(self->GetOncanplay());
1606 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1607 0 : if (result) {
1608 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
1609 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
1610 0 : return false;
1611 : }
1612 0 : return true;
1613 : } else {
1614 0 : args.rval().setNull();
1615 0 : return true;
1616 : }
1617 : }
1618 :
1619 : static bool
1620 0 : set_oncanplay(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitSetterCallArgs args)
1621 : {
1622 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
1623 0 : if (args[0].isObject()) {
1624 : { // scope for tempRoot
1625 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
1626 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
1627 : }
1628 : } else {
1629 0 : arg0 = nullptr;
1630 : }
1631 0 : self->SetOncanplay(Constify(arg0));
1632 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1633 :
1634 0 : return true;
1635 : }
1636 :
1637 : static const JSJitInfo oncanplay_getterinfo = {
1638 : { (JSJitGetterOp)get_oncanplay },
1639 : { prototypes::id::HTMLElement },
1640 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
1641 : JSJitInfo::Getter,
1642 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1643 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
1644 : false, /* isInfallible. False in setters. */
1645 : false, /* isMovable. Not relevant for setters. */
1646 : false, /* isEliminatable. Not relevant for setters. */
1647 : false, /* isAlwaysInSlot. Only relevant for getters. */
1648 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1649 : false, /* isTypedMethod. Only relevant for methods. */
1650 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1651 : };
1652 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1653 : static_assert(0 < 1, "There is no slot for us");
1654 : static const JSJitInfo oncanplay_setterinfo = {
1655 : { (JSJitGetterOp)set_oncanplay },
1656 : { prototypes::id::HTMLElement },
1657 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
1658 : JSJitInfo::Setter,
1659 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1660 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
1661 : false, /* isInfallible. False in setters. */
1662 : false, /* isMovable. Not relevant for setters. */
1663 : false, /* isEliminatable. Not relevant for setters. */
1664 : false, /* isAlwaysInSlot. Only relevant for getters. */
1665 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1666 : false, /* isTypedMethod. Only relevant for methods. */
1667 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1668 : };
1669 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1670 : static_assert(0 < 1, "There is no slot for us");
1671 :
1672 : static bool
1673 0 : get_oncanplaythrough(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
1674 : {
1675 0 : RefPtr<EventHandlerNonNull> result(self->GetOncanplaythrough());
1676 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1677 0 : if (result) {
1678 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
1679 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
1680 0 : return false;
1681 : }
1682 0 : return true;
1683 : } else {
1684 0 : args.rval().setNull();
1685 0 : return true;
1686 : }
1687 : }
1688 :
1689 : static bool
1690 0 : set_oncanplaythrough(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitSetterCallArgs args)
1691 : {
1692 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
1693 0 : if (args[0].isObject()) {
1694 : { // scope for tempRoot
1695 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
1696 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
1697 : }
1698 : } else {
1699 0 : arg0 = nullptr;
1700 : }
1701 0 : self->SetOncanplaythrough(Constify(arg0));
1702 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1703 :
1704 0 : return true;
1705 : }
1706 :
1707 : static const JSJitInfo oncanplaythrough_getterinfo = {
1708 : { (JSJitGetterOp)get_oncanplaythrough },
1709 : { prototypes::id::HTMLElement },
1710 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
1711 : JSJitInfo::Getter,
1712 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1713 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
1714 : false, /* isInfallible. False in setters. */
1715 : false, /* isMovable. Not relevant for setters. */
1716 : false, /* isEliminatable. Not relevant for setters. */
1717 : false, /* isAlwaysInSlot. Only relevant for getters. */
1718 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1719 : false, /* isTypedMethod. Only relevant for methods. */
1720 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1721 : };
1722 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1723 : static_assert(0 < 1, "There is no slot for us");
1724 : static const JSJitInfo oncanplaythrough_setterinfo = {
1725 : { (JSJitGetterOp)set_oncanplaythrough },
1726 : { prototypes::id::HTMLElement },
1727 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
1728 : JSJitInfo::Setter,
1729 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1730 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
1731 : false, /* isInfallible. False in setters. */
1732 : false, /* isMovable. Not relevant for setters. */
1733 : false, /* isEliminatable. Not relevant for setters. */
1734 : false, /* isAlwaysInSlot. Only relevant for getters. */
1735 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1736 : false, /* isTypedMethod. Only relevant for methods. */
1737 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1738 : };
1739 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1740 : static_assert(0 < 1, "There is no slot for us");
1741 :
1742 : static bool
1743 0 : get_onchange(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
1744 : {
1745 0 : RefPtr<EventHandlerNonNull> result(self->GetOnchange());
1746 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1747 0 : if (result) {
1748 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
1749 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
1750 0 : return false;
1751 : }
1752 0 : return true;
1753 : } else {
1754 0 : args.rval().setNull();
1755 0 : return true;
1756 : }
1757 : }
1758 :
1759 : static bool
1760 0 : set_onchange(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitSetterCallArgs args)
1761 : {
1762 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
1763 0 : if (args[0].isObject()) {
1764 : { // scope for tempRoot
1765 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
1766 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
1767 : }
1768 : } else {
1769 0 : arg0 = nullptr;
1770 : }
1771 0 : self->SetOnchange(Constify(arg0));
1772 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1773 :
1774 0 : return true;
1775 : }
1776 :
1777 : static const JSJitInfo onchange_getterinfo = {
1778 : { (JSJitGetterOp)get_onchange },
1779 : { prototypes::id::HTMLElement },
1780 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
1781 : JSJitInfo::Getter,
1782 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1783 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
1784 : false, /* isInfallible. False in setters. */
1785 : false, /* isMovable. Not relevant for setters. */
1786 : false, /* isEliminatable. Not relevant for setters. */
1787 : false, /* isAlwaysInSlot. Only relevant for getters. */
1788 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1789 : false, /* isTypedMethod. Only relevant for methods. */
1790 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1791 : };
1792 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1793 : static_assert(0 < 1, "There is no slot for us");
1794 : static const JSJitInfo onchange_setterinfo = {
1795 : { (JSJitGetterOp)set_onchange },
1796 : { prototypes::id::HTMLElement },
1797 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
1798 : JSJitInfo::Setter,
1799 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1800 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
1801 : false, /* isInfallible. False in setters. */
1802 : false, /* isMovable. Not relevant for setters. */
1803 : false, /* isEliminatable. Not relevant for setters. */
1804 : false, /* isAlwaysInSlot. Only relevant for getters. */
1805 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1806 : false, /* isTypedMethod. Only relevant for methods. */
1807 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1808 : };
1809 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1810 : static_assert(0 < 1, "There is no slot for us");
1811 :
1812 : static bool
1813 0 : get_onclick(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
1814 : {
1815 0 : RefPtr<EventHandlerNonNull> result(self->GetOnclick());
1816 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1817 0 : if (result) {
1818 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
1819 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
1820 0 : return false;
1821 : }
1822 0 : return true;
1823 : } else {
1824 0 : args.rval().setNull();
1825 0 : return true;
1826 : }
1827 : }
1828 :
1829 : static bool
1830 0 : set_onclick(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitSetterCallArgs args)
1831 : {
1832 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
1833 0 : if (args[0].isObject()) {
1834 : { // scope for tempRoot
1835 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
1836 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
1837 : }
1838 : } else {
1839 0 : arg0 = nullptr;
1840 : }
1841 0 : self->SetOnclick(Constify(arg0));
1842 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1843 :
1844 0 : return true;
1845 : }
1846 :
1847 : static const JSJitInfo onclick_getterinfo = {
1848 : { (JSJitGetterOp)get_onclick },
1849 : { prototypes::id::HTMLElement },
1850 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
1851 : JSJitInfo::Getter,
1852 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1853 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
1854 : false, /* isInfallible. False in setters. */
1855 : false, /* isMovable. Not relevant for setters. */
1856 : false, /* isEliminatable. Not relevant for setters. */
1857 : false, /* isAlwaysInSlot. Only relevant for getters. */
1858 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1859 : false, /* isTypedMethod. Only relevant for methods. */
1860 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1861 : };
1862 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1863 : static_assert(0 < 1, "There is no slot for us");
1864 : static const JSJitInfo onclick_setterinfo = {
1865 : { (JSJitGetterOp)set_onclick },
1866 : { prototypes::id::HTMLElement },
1867 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
1868 : JSJitInfo::Setter,
1869 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1870 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
1871 : false, /* isInfallible. False in setters. */
1872 : false, /* isMovable. Not relevant for setters. */
1873 : false, /* isEliminatable. Not relevant for setters. */
1874 : false, /* isAlwaysInSlot. Only relevant for getters. */
1875 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1876 : false, /* isTypedMethod. Only relevant for methods. */
1877 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1878 : };
1879 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1880 : static_assert(0 < 1, "There is no slot for us");
1881 :
1882 : static bool
1883 0 : get_onclose(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
1884 : {
1885 0 : RefPtr<EventHandlerNonNull> result(self->GetOnclose());
1886 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1887 0 : if (result) {
1888 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
1889 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
1890 0 : return false;
1891 : }
1892 0 : return true;
1893 : } else {
1894 0 : args.rval().setNull();
1895 0 : return true;
1896 : }
1897 : }
1898 :
1899 : static bool
1900 0 : set_onclose(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitSetterCallArgs args)
1901 : {
1902 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
1903 0 : if (args[0].isObject()) {
1904 : { // scope for tempRoot
1905 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
1906 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
1907 : }
1908 : } else {
1909 0 : arg0 = nullptr;
1910 : }
1911 0 : self->SetOnclose(Constify(arg0));
1912 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1913 :
1914 0 : return true;
1915 : }
1916 :
1917 : static const JSJitInfo onclose_getterinfo = {
1918 : { (JSJitGetterOp)get_onclose },
1919 : { prototypes::id::HTMLElement },
1920 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
1921 : JSJitInfo::Getter,
1922 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1923 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
1924 : false, /* isInfallible. False in setters. */
1925 : false, /* isMovable. Not relevant for setters. */
1926 : false, /* isEliminatable. Not relevant for setters. */
1927 : false, /* isAlwaysInSlot. Only relevant for getters. */
1928 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1929 : false, /* isTypedMethod. Only relevant for methods. */
1930 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1931 : };
1932 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1933 : static_assert(0 < 1, "There is no slot for us");
1934 : static const JSJitInfo onclose_setterinfo = {
1935 : { (JSJitGetterOp)set_onclose },
1936 : { prototypes::id::HTMLElement },
1937 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
1938 : JSJitInfo::Setter,
1939 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1940 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
1941 : false, /* isInfallible. False in setters. */
1942 : false, /* isMovable. Not relevant for setters. */
1943 : false, /* isEliminatable. Not relevant for setters. */
1944 : false, /* isAlwaysInSlot. Only relevant for getters. */
1945 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1946 : false, /* isTypedMethod. Only relevant for methods. */
1947 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1948 : };
1949 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1950 : static_assert(0 < 1, "There is no slot for us");
1951 :
1952 : static bool
1953 0 : get_oncontextmenu(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
1954 : {
1955 0 : RefPtr<EventHandlerNonNull> result(self->GetOncontextmenu());
1956 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1957 0 : if (result) {
1958 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
1959 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
1960 0 : return false;
1961 : }
1962 0 : return true;
1963 : } else {
1964 0 : args.rval().setNull();
1965 0 : return true;
1966 : }
1967 : }
1968 :
1969 : static bool
1970 0 : set_oncontextmenu(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitSetterCallArgs args)
1971 : {
1972 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
1973 0 : if (args[0].isObject()) {
1974 : { // scope for tempRoot
1975 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
1976 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
1977 : }
1978 : } else {
1979 0 : arg0 = nullptr;
1980 : }
1981 0 : self->SetOncontextmenu(Constify(arg0));
1982 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1983 :
1984 0 : return true;
1985 : }
1986 :
1987 : static const JSJitInfo oncontextmenu_getterinfo = {
1988 : { (JSJitGetterOp)get_oncontextmenu },
1989 : { prototypes::id::HTMLElement },
1990 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
1991 : JSJitInfo::Getter,
1992 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1993 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
1994 : false, /* isInfallible. False in setters. */
1995 : false, /* isMovable. Not relevant for setters. */
1996 : false, /* isEliminatable. Not relevant for setters. */
1997 : false, /* isAlwaysInSlot. Only relevant for getters. */
1998 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1999 : false, /* isTypedMethod. Only relevant for methods. */
2000 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2001 : };
2002 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2003 : static_assert(0 < 1, "There is no slot for us");
2004 : static const JSJitInfo oncontextmenu_setterinfo = {
2005 : { (JSJitGetterOp)set_oncontextmenu },
2006 : { prototypes::id::HTMLElement },
2007 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
2008 : JSJitInfo::Setter,
2009 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2010 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
2011 : false, /* isInfallible. False in setters. */
2012 : false, /* isMovable. Not relevant for setters. */
2013 : false, /* isEliminatable. Not relevant for setters. */
2014 : false, /* isAlwaysInSlot. Only relevant for getters. */
2015 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2016 : false, /* isTypedMethod. Only relevant for methods. */
2017 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2018 : };
2019 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2020 : static_assert(0 < 1, "There is no slot for us");
2021 :
2022 : static bool
2023 0 : get_ondblclick(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
2024 : {
2025 0 : RefPtr<EventHandlerNonNull> result(self->GetOndblclick());
2026 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2027 0 : if (result) {
2028 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
2029 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
2030 0 : return false;
2031 : }
2032 0 : return true;
2033 : } else {
2034 0 : args.rval().setNull();
2035 0 : return true;
2036 : }
2037 : }
2038 :
2039 : static bool
2040 0 : set_ondblclick(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitSetterCallArgs args)
2041 : {
2042 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
2043 0 : if (args[0].isObject()) {
2044 : { // scope for tempRoot
2045 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
2046 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
2047 : }
2048 : } else {
2049 0 : arg0 = nullptr;
2050 : }
2051 0 : self->SetOndblclick(Constify(arg0));
2052 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2053 :
2054 0 : return true;
2055 : }
2056 :
2057 : static const JSJitInfo ondblclick_getterinfo = {
2058 : { (JSJitGetterOp)get_ondblclick },
2059 : { prototypes::id::HTMLElement },
2060 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
2061 : JSJitInfo::Getter,
2062 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2063 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
2064 : false, /* isInfallible. False in setters. */
2065 : false, /* isMovable. Not relevant for setters. */
2066 : false, /* isEliminatable. Not relevant for setters. */
2067 : false, /* isAlwaysInSlot. Only relevant for getters. */
2068 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2069 : false, /* isTypedMethod. Only relevant for methods. */
2070 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2071 : };
2072 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2073 : static_assert(0 < 1, "There is no slot for us");
2074 : static const JSJitInfo ondblclick_setterinfo = {
2075 : { (JSJitGetterOp)set_ondblclick },
2076 : { prototypes::id::HTMLElement },
2077 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
2078 : JSJitInfo::Setter,
2079 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2080 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
2081 : false, /* isInfallible. False in setters. */
2082 : false, /* isMovable. Not relevant for setters. */
2083 : false, /* isEliminatable. Not relevant for setters. */
2084 : false, /* isAlwaysInSlot. Only relevant for getters. */
2085 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2086 : false, /* isTypedMethod. Only relevant for methods. */
2087 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2088 : };
2089 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2090 : static_assert(0 < 1, "There is no slot for us");
2091 :
2092 : static bool
2093 0 : get_ondrag(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
2094 : {
2095 0 : RefPtr<EventHandlerNonNull> result(self->GetOndrag());
2096 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2097 0 : if (result) {
2098 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
2099 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
2100 0 : return false;
2101 : }
2102 0 : return true;
2103 : } else {
2104 0 : args.rval().setNull();
2105 0 : return true;
2106 : }
2107 : }
2108 :
2109 : static bool
2110 0 : set_ondrag(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitSetterCallArgs args)
2111 : {
2112 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
2113 0 : if (args[0].isObject()) {
2114 : { // scope for tempRoot
2115 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
2116 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
2117 : }
2118 : } else {
2119 0 : arg0 = nullptr;
2120 : }
2121 0 : self->SetOndrag(Constify(arg0));
2122 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2123 :
2124 0 : return true;
2125 : }
2126 :
2127 : static const JSJitInfo ondrag_getterinfo = {
2128 : { (JSJitGetterOp)get_ondrag },
2129 : { prototypes::id::HTMLElement },
2130 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
2131 : JSJitInfo::Getter,
2132 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2133 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
2134 : false, /* isInfallible. False in setters. */
2135 : false, /* isMovable. Not relevant for setters. */
2136 : false, /* isEliminatable. Not relevant for setters. */
2137 : false, /* isAlwaysInSlot. Only relevant for getters. */
2138 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2139 : false, /* isTypedMethod. Only relevant for methods. */
2140 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2141 : };
2142 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2143 : static_assert(0 < 1, "There is no slot for us");
2144 : static const JSJitInfo ondrag_setterinfo = {
2145 : { (JSJitGetterOp)set_ondrag },
2146 : { prototypes::id::HTMLElement },
2147 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
2148 : JSJitInfo::Setter,
2149 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2150 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
2151 : false, /* isInfallible. False in setters. */
2152 : false, /* isMovable. Not relevant for setters. */
2153 : false, /* isEliminatable. Not relevant for setters. */
2154 : false, /* isAlwaysInSlot. Only relevant for getters. */
2155 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2156 : false, /* isTypedMethod. Only relevant for methods. */
2157 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2158 : };
2159 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2160 : static_assert(0 < 1, "There is no slot for us");
2161 :
2162 : static bool
2163 0 : get_ondragend(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
2164 : {
2165 0 : RefPtr<EventHandlerNonNull> result(self->GetOndragend());
2166 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2167 0 : if (result) {
2168 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
2169 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
2170 0 : return false;
2171 : }
2172 0 : return true;
2173 : } else {
2174 0 : args.rval().setNull();
2175 0 : return true;
2176 : }
2177 : }
2178 :
2179 : static bool
2180 0 : set_ondragend(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitSetterCallArgs args)
2181 : {
2182 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
2183 0 : if (args[0].isObject()) {
2184 : { // scope for tempRoot
2185 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
2186 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
2187 : }
2188 : } else {
2189 0 : arg0 = nullptr;
2190 : }
2191 0 : self->SetOndragend(Constify(arg0));
2192 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2193 :
2194 0 : return true;
2195 : }
2196 :
2197 : static const JSJitInfo ondragend_getterinfo = {
2198 : { (JSJitGetterOp)get_ondragend },
2199 : { prototypes::id::HTMLElement },
2200 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
2201 : JSJitInfo::Getter,
2202 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2203 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
2204 : false, /* isInfallible. False in setters. */
2205 : false, /* isMovable. Not relevant for setters. */
2206 : false, /* isEliminatable. Not relevant for setters. */
2207 : false, /* isAlwaysInSlot. Only relevant for getters. */
2208 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2209 : false, /* isTypedMethod. Only relevant for methods. */
2210 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2211 : };
2212 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2213 : static_assert(0 < 1, "There is no slot for us");
2214 : static const JSJitInfo ondragend_setterinfo = {
2215 : { (JSJitGetterOp)set_ondragend },
2216 : { prototypes::id::HTMLElement },
2217 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
2218 : JSJitInfo::Setter,
2219 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2220 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
2221 : false, /* isInfallible. False in setters. */
2222 : false, /* isMovable. Not relevant for setters. */
2223 : false, /* isEliminatable. Not relevant for setters. */
2224 : false, /* isAlwaysInSlot. Only relevant for getters. */
2225 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2226 : false, /* isTypedMethod. Only relevant for methods. */
2227 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2228 : };
2229 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2230 : static_assert(0 < 1, "There is no slot for us");
2231 :
2232 : static bool
2233 0 : get_ondragenter(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
2234 : {
2235 0 : RefPtr<EventHandlerNonNull> result(self->GetOndragenter());
2236 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2237 0 : if (result) {
2238 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
2239 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
2240 0 : return false;
2241 : }
2242 0 : return true;
2243 : } else {
2244 0 : args.rval().setNull();
2245 0 : return true;
2246 : }
2247 : }
2248 :
2249 : static bool
2250 0 : set_ondragenter(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitSetterCallArgs args)
2251 : {
2252 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
2253 0 : if (args[0].isObject()) {
2254 : { // scope for tempRoot
2255 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
2256 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
2257 : }
2258 : } else {
2259 0 : arg0 = nullptr;
2260 : }
2261 0 : self->SetOndragenter(Constify(arg0));
2262 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2263 :
2264 0 : return true;
2265 : }
2266 :
2267 : static const JSJitInfo ondragenter_getterinfo = {
2268 : { (JSJitGetterOp)get_ondragenter },
2269 : { prototypes::id::HTMLElement },
2270 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
2271 : JSJitInfo::Getter,
2272 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2273 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
2274 : false, /* isInfallible. False in setters. */
2275 : false, /* isMovable. Not relevant for setters. */
2276 : false, /* isEliminatable. Not relevant for setters. */
2277 : false, /* isAlwaysInSlot. Only relevant for getters. */
2278 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2279 : false, /* isTypedMethod. Only relevant for methods. */
2280 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2281 : };
2282 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2283 : static_assert(0 < 1, "There is no slot for us");
2284 : static const JSJitInfo ondragenter_setterinfo = {
2285 : { (JSJitGetterOp)set_ondragenter },
2286 : { prototypes::id::HTMLElement },
2287 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
2288 : JSJitInfo::Setter,
2289 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2290 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
2291 : false, /* isInfallible. False in setters. */
2292 : false, /* isMovable. Not relevant for setters. */
2293 : false, /* isEliminatable. Not relevant for setters. */
2294 : false, /* isAlwaysInSlot. Only relevant for getters. */
2295 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2296 : false, /* isTypedMethod. Only relevant for methods. */
2297 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2298 : };
2299 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2300 : static_assert(0 < 1, "There is no slot for us");
2301 :
2302 : static bool
2303 0 : get_ondragexit(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
2304 : {
2305 0 : RefPtr<EventHandlerNonNull> result(self->GetOndragexit());
2306 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2307 0 : if (result) {
2308 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
2309 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
2310 0 : return false;
2311 : }
2312 0 : return true;
2313 : } else {
2314 0 : args.rval().setNull();
2315 0 : return true;
2316 : }
2317 : }
2318 :
2319 : static bool
2320 0 : set_ondragexit(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitSetterCallArgs args)
2321 : {
2322 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
2323 0 : if (args[0].isObject()) {
2324 : { // scope for tempRoot
2325 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
2326 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
2327 : }
2328 : } else {
2329 0 : arg0 = nullptr;
2330 : }
2331 0 : self->SetOndragexit(Constify(arg0));
2332 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2333 :
2334 0 : return true;
2335 : }
2336 :
2337 : static const JSJitInfo ondragexit_getterinfo = {
2338 : { (JSJitGetterOp)get_ondragexit },
2339 : { prototypes::id::HTMLElement },
2340 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
2341 : JSJitInfo::Getter,
2342 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2343 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
2344 : false, /* isInfallible. False in setters. */
2345 : false, /* isMovable. Not relevant for setters. */
2346 : false, /* isEliminatable. Not relevant for setters. */
2347 : false, /* isAlwaysInSlot. Only relevant for getters. */
2348 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2349 : false, /* isTypedMethod. Only relevant for methods. */
2350 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2351 : };
2352 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2353 : static_assert(0 < 1, "There is no slot for us");
2354 : static const JSJitInfo ondragexit_setterinfo = {
2355 : { (JSJitGetterOp)set_ondragexit },
2356 : { prototypes::id::HTMLElement },
2357 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
2358 : JSJitInfo::Setter,
2359 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2360 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
2361 : false, /* isInfallible. False in setters. */
2362 : false, /* isMovable. Not relevant for setters. */
2363 : false, /* isEliminatable. Not relevant for setters. */
2364 : false, /* isAlwaysInSlot. Only relevant for getters. */
2365 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2366 : false, /* isTypedMethod. Only relevant for methods. */
2367 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2368 : };
2369 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2370 : static_assert(0 < 1, "There is no slot for us");
2371 :
2372 : static bool
2373 0 : get_ondragleave(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
2374 : {
2375 0 : RefPtr<EventHandlerNonNull> result(self->GetOndragleave());
2376 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2377 0 : if (result) {
2378 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
2379 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
2380 0 : return false;
2381 : }
2382 0 : return true;
2383 : } else {
2384 0 : args.rval().setNull();
2385 0 : return true;
2386 : }
2387 : }
2388 :
2389 : static bool
2390 0 : set_ondragleave(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitSetterCallArgs args)
2391 : {
2392 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
2393 0 : if (args[0].isObject()) {
2394 : { // scope for tempRoot
2395 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
2396 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
2397 : }
2398 : } else {
2399 0 : arg0 = nullptr;
2400 : }
2401 0 : self->SetOndragleave(Constify(arg0));
2402 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2403 :
2404 0 : return true;
2405 : }
2406 :
2407 : static const JSJitInfo ondragleave_getterinfo = {
2408 : { (JSJitGetterOp)get_ondragleave },
2409 : { prototypes::id::HTMLElement },
2410 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
2411 : JSJitInfo::Getter,
2412 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2413 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
2414 : false, /* isInfallible. False in setters. */
2415 : false, /* isMovable. Not relevant for setters. */
2416 : false, /* isEliminatable. Not relevant for setters. */
2417 : false, /* isAlwaysInSlot. Only relevant for getters. */
2418 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2419 : false, /* isTypedMethod. Only relevant for methods. */
2420 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2421 : };
2422 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2423 : static_assert(0 < 1, "There is no slot for us");
2424 : static const JSJitInfo ondragleave_setterinfo = {
2425 : { (JSJitGetterOp)set_ondragleave },
2426 : { prototypes::id::HTMLElement },
2427 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
2428 : JSJitInfo::Setter,
2429 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2430 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
2431 : false, /* isInfallible. False in setters. */
2432 : false, /* isMovable. Not relevant for setters. */
2433 : false, /* isEliminatable. Not relevant for setters. */
2434 : false, /* isAlwaysInSlot. Only relevant for getters. */
2435 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2436 : false, /* isTypedMethod. Only relevant for methods. */
2437 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2438 : };
2439 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2440 : static_assert(0 < 1, "There is no slot for us");
2441 :
2442 : static bool
2443 0 : get_ondragover(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
2444 : {
2445 0 : RefPtr<EventHandlerNonNull> result(self->GetOndragover());
2446 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2447 0 : if (result) {
2448 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
2449 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
2450 0 : return false;
2451 : }
2452 0 : return true;
2453 : } else {
2454 0 : args.rval().setNull();
2455 0 : return true;
2456 : }
2457 : }
2458 :
2459 : static bool
2460 0 : set_ondragover(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitSetterCallArgs args)
2461 : {
2462 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
2463 0 : if (args[0].isObject()) {
2464 : { // scope for tempRoot
2465 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
2466 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
2467 : }
2468 : } else {
2469 0 : arg0 = nullptr;
2470 : }
2471 0 : self->SetOndragover(Constify(arg0));
2472 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2473 :
2474 0 : return true;
2475 : }
2476 :
2477 : static const JSJitInfo ondragover_getterinfo = {
2478 : { (JSJitGetterOp)get_ondragover },
2479 : { prototypes::id::HTMLElement },
2480 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
2481 : JSJitInfo::Getter,
2482 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2483 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
2484 : false, /* isInfallible. False in setters. */
2485 : false, /* isMovable. Not relevant for setters. */
2486 : false, /* isEliminatable. Not relevant for setters. */
2487 : false, /* isAlwaysInSlot. Only relevant for getters. */
2488 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2489 : false, /* isTypedMethod. Only relevant for methods. */
2490 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2491 : };
2492 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2493 : static_assert(0 < 1, "There is no slot for us");
2494 : static const JSJitInfo ondragover_setterinfo = {
2495 : { (JSJitGetterOp)set_ondragover },
2496 : { prototypes::id::HTMLElement },
2497 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
2498 : JSJitInfo::Setter,
2499 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2500 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
2501 : false, /* isInfallible. False in setters. */
2502 : false, /* isMovable. Not relevant for setters. */
2503 : false, /* isEliminatable. Not relevant for setters. */
2504 : false, /* isAlwaysInSlot. Only relevant for getters. */
2505 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2506 : false, /* isTypedMethod. Only relevant for methods. */
2507 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2508 : };
2509 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2510 : static_assert(0 < 1, "There is no slot for us");
2511 :
2512 : static bool
2513 0 : get_ondragstart(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
2514 : {
2515 0 : RefPtr<EventHandlerNonNull> result(self->GetOndragstart());
2516 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2517 0 : if (result) {
2518 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
2519 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
2520 0 : return false;
2521 : }
2522 0 : return true;
2523 : } else {
2524 0 : args.rval().setNull();
2525 0 : return true;
2526 : }
2527 : }
2528 :
2529 : static bool
2530 0 : set_ondragstart(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitSetterCallArgs args)
2531 : {
2532 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
2533 0 : if (args[0].isObject()) {
2534 : { // scope for tempRoot
2535 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
2536 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
2537 : }
2538 : } else {
2539 0 : arg0 = nullptr;
2540 : }
2541 0 : self->SetOndragstart(Constify(arg0));
2542 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2543 :
2544 0 : return true;
2545 : }
2546 :
2547 : static const JSJitInfo ondragstart_getterinfo = {
2548 : { (JSJitGetterOp)get_ondragstart },
2549 : { prototypes::id::HTMLElement },
2550 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
2551 : JSJitInfo::Getter,
2552 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2553 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
2554 : false, /* isInfallible. False in setters. */
2555 : false, /* isMovable. Not relevant for setters. */
2556 : false, /* isEliminatable. Not relevant for setters. */
2557 : false, /* isAlwaysInSlot. Only relevant for getters. */
2558 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2559 : false, /* isTypedMethod. Only relevant for methods. */
2560 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2561 : };
2562 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2563 : static_assert(0 < 1, "There is no slot for us");
2564 : static const JSJitInfo ondragstart_setterinfo = {
2565 : { (JSJitGetterOp)set_ondragstart },
2566 : { prototypes::id::HTMLElement },
2567 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
2568 : JSJitInfo::Setter,
2569 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2570 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
2571 : false, /* isInfallible. False in setters. */
2572 : false, /* isMovable. Not relevant for setters. */
2573 : false, /* isEliminatable. Not relevant for setters. */
2574 : false, /* isAlwaysInSlot. Only relevant for getters. */
2575 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2576 : false, /* isTypedMethod. Only relevant for methods. */
2577 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2578 : };
2579 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2580 : static_assert(0 < 1, "There is no slot for us");
2581 :
2582 : static bool
2583 0 : get_ondrop(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
2584 : {
2585 0 : RefPtr<EventHandlerNonNull> result(self->GetOndrop());
2586 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2587 0 : if (result) {
2588 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
2589 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
2590 0 : return false;
2591 : }
2592 0 : return true;
2593 : } else {
2594 0 : args.rval().setNull();
2595 0 : return true;
2596 : }
2597 : }
2598 :
2599 : static bool
2600 0 : set_ondrop(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitSetterCallArgs args)
2601 : {
2602 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
2603 0 : if (args[0].isObject()) {
2604 : { // scope for tempRoot
2605 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
2606 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
2607 : }
2608 : } else {
2609 0 : arg0 = nullptr;
2610 : }
2611 0 : self->SetOndrop(Constify(arg0));
2612 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2613 :
2614 0 : return true;
2615 : }
2616 :
2617 : static const JSJitInfo ondrop_getterinfo = {
2618 : { (JSJitGetterOp)get_ondrop },
2619 : { prototypes::id::HTMLElement },
2620 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
2621 : JSJitInfo::Getter,
2622 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2623 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
2624 : false, /* isInfallible. False in setters. */
2625 : false, /* isMovable. Not relevant for setters. */
2626 : false, /* isEliminatable. Not relevant for setters. */
2627 : false, /* isAlwaysInSlot. Only relevant for getters. */
2628 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2629 : false, /* isTypedMethod. Only relevant for methods. */
2630 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2631 : };
2632 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2633 : static_assert(0 < 1, "There is no slot for us");
2634 : static const JSJitInfo ondrop_setterinfo = {
2635 : { (JSJitGetterOp)set_ondrop },
2636 : { prototypes::id::HTMLElement },
2637 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
2638 : JSJitInfo::Setter,
2639 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2640 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
2641 : false, /* isInfallible. False in setters. */
2642 : false, /* isMovable. Not relevant for setters. */
2643 : false, /* isEliminatable. Not relevant for setters. */
2644 : false, /* isAlwaysInSlot. Only relevant for getters. */
2645 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2646 : false, /* isTypedMethod. Only relevant for methods. */
2647 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2648 : };
2649 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2650 : static_assert(0 < 1, "There is no slot for us");
2651 :
2652 : static bool
2653 0 : get_ondurationchange(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
2654 : {
2655 0 : RefPtr<EventHandlerNonNull> result(self->GetOndurationchange());
2656 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2657 0 : if (result) {
2658 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
2659 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
2660 0 : return false;
2661 : }
2662 0 : return true;
2663 : } else {
2664 0 : args.rval().setNull();
2665 0 : return true;
2666 : }
2667 : }
2668 :
2669 : static bool
2670 0 : set_ondurationchange(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitSetterCallArgs args)
2671 : {
2672 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
2673 0 : if (args[0].isObject()) {
2674 : { // scope for tempRoot
2675 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
2676 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
2677 : }
2678 : } else {
2679 0 : arg0 = nullptr;
2680 : }
2681 0 : self->SetOndurationchange(Constify(arg0));
2682 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2683 :
2684 0 : return true;
2685 : }
2686 :
2687 : static const JSJitInfo ondurationchange_getterinfo = {
2688 : { (JSJitGetterOp)get_ondurationchange },
2689 : { prototypes::id::HTMLElement },
2690 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
2691 : JSJitInfo::Getter,
2692 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2693 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
2694 : false, /* isInfallible. False in setters. */
2695 : false, /* isMovable. Not relevant for setters. */
2696 : false, /* isEliminatable. Not relevant for setters. */
2697 : false, /* isAlwaysInSlot. Only relevant for getters. */
2698 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2699 : false, /* isTypedMethod. Only relevant for methods. */
2700 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2701 : };
2702 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2703 : static_assert(0 < 1, "There is no slot for us");
2704 : static const JSJitInfo ondurationchange_setterinfo = {
2705 : { (JSJitGetterOp)set_ondurationchange },
2706 : { prototypes::id::HTMLElement },
2707 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
2708 : JSJitInfo::Setter,
2709 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2710 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
2711 : false, /* isInfallible. False in setters. */
2712 : false, /* isMovable. Not relevant for setters. */
2713 : false, /* isEliminatable. Not relevant for setters. */
2714 : false, /* isAlwaysInSlot. Only relevant for getters. */
2715 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2716 : false, /* isTypedMethod. Only relevant for methods. */
2717 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2718 : };
2719 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2720 : static_assert(0 < 1, "There is no slot for us");
2721 :
2722 : static bool
2723 0 : get_onemptied(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
2724 : {
2725 0 : RefPtr<EventHandlerNonNull> result(self->GetOnemptied());
2726 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2727 0 : if (result) {
2728 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
2729 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
2730 0 : return false;
2731 : }
2732 0 : return true;
2733 : } else {
2734 0 : args.rval().setNull();
2735 0 : return true;
2736 : }
2737 : }
2738 :
2739 : static bool
2740 0 : set_onemptied(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitSetterCallArgs args)
2741 : {
2742 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
2743 0 : if (args[0].isObject()) {
2744 : { // scope for tempRoot
2745 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
2746 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
2747 : }
2748 : } else {
2749 0 : arg0 = nullptr;
2750 : }
2751 0 : self->SetOnemptied(Constify(arg0));
2752 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2753 :
2754 0 : return true;
2755 : }
2756 :
2757 : static const JSJitInfo onemptied_getterinfo = {
2758 : { (JSJitGetterOp)get_onemptied },
2759 : { prototypes::id::HTMLElement },
2760 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
2761 : JSJitInfo::Getter,
2762 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2763 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
2764 : false, /* isInfallible. False in setters. */
2765 : false, /* isMovable. Not relevant for setters. */
2766 : false, /* isEliminatable. Not relevant for setters. */
2767 : false, /* isAlwaysInSlot. Only relevant for getters. */
2768 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2769 : false, /* isTypedMethod. Only relevant for methods. */
2770 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2771 : };
2772 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2773 : static_assert(0 < 1, "There is no slot for us");
2774 : static const JSJitInfo onemptied_setterinfo = {
2775 : { (JSJitGetterOp)set_onemptied },
2776 : { prototypes::id::HTMLElement },
2777 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
2778 : JSJitInfo::Setter,
2779 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2780 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
2781 : false, /* isInfallible. False in setters. */
2782 : false, /* isMovable. Not relevant for setters. */
2783 : false, /* isEliminatable. Not relevant for setters. */
2784 : false, /* isAlwaysInSlot. Only relevant for getters. */
2785 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2786 : false, /* isTypedMethod. Only relevant for methods. */
2787 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2788 : };
2789 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2790 : static_assert(0 < 1, "There is no slot for us");
2791 :
2792 : static bool
2793 0 : get_onended(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
2794 : {
2795 0 : RefPtr<EventHandlerNonNull> result(self->GetOnended());
2796 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2797 0 : if (result) {
2798 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
2799 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
2800 0 : return false;
2801 : }
2802 0 : return true;
2803 : } else {
2804 0 : args.rval().setNull();
2805 0 : return true;
2806 : }
2807 : }
2808 :
2809 : static bool
2810 0 : set_onended(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitSetterCallArgs args)
2811 : {
2812 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
2813 0 : if (args[0].isObject()) {
2814 : { // scope for tempRoot
2815 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
2816 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
2817 : }
2818 : } else {
2819 0 : arg0 = nullptr;
2820 : }
2821 0 : self->SetOnended(Constify(arg0));
2822 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2823 :
2824 0 : return true;
2825 : }
2826 :
2827 : static const JSJitInfo onended_getterinfo = {
2828 : { (JSJitGetterOp)get_onended },
2829 : { prototypes::id::HTMLElement },
2830 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
2831 : JSJitInfo::Getter,
2832 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2833 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
2834 : false, /* isInfallible. False in setters. */
2835 : false, /* isMovable. Not relevant for setters. */
2836 : false, /* isEliminatable. Not relevant for setters. */
2837 : false, /* isAlwaysInSlot. Only relevant for getters. */
2838 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2839 : false, /* isTypedMethod. Only relevant for methods. */
2840 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2841 : };
2842 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2843 : static_assert(0 < 1, "There is no slot for us");
2844 : static const JSJitInfo onended_setterinfo = {
2845 : { (JSJitGetterOp)set_onended },
2846 : { prototypes::id::HTMLElement },
2847 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
2848 : JSJitInfo::Setter,
2849 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2850 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
2851 : false, /* isInfallible. False in setters. */
2852 : false, /* isMovable. Not relevant for setters. */
2853 : false, /* isEliminatable. Not relevant for setters. */
2854 : false, /* isAlwaysInSlot. Only relevant for getters. */
2855 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2856 : false, /* isTypedMethod. Only relevant for methods. */
2857 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2858 : };
2859 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2860 : static_assert(0 < 1, "There is no slot for us");
2861 :
2862 : static bool
2863 0 : get_oninput(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
2864 : {
2865 0 : RefPtr<EventHandlerNonNull> result(self->GetOninput());
2866 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2867 0 : if (result) {
2868 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
2869 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
2870 0 : return false;
2871 : }
2872 0 : return true;
2873 : } else {
2874 0 : args.rval().setNull();
2875 0 : return true;
2876 : }
2877 : }
2878 :
2879 : static bool
2880 0 : set_oninput(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitSetterCallArgs args)
2881 : {
2882 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
2883 0 : if (args[0].isObject()) {
2884 : { // scope for tempRoot
2885 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
2886 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
2887 : }
2888 : } else {
2889 0 : arg0 = nullptr;
2890 : }
2891 0 : self->SetOninput(Constify(arg0));
2892 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2893 :
2894 0 : return true;
2895 : }
2896 :
2897 : static const JSJitInfo oninput_getterinfo = {
2898 : { (JSJitGetterOp)get_oninput },
2899 : { prototypes::id::HTMLElement },
2900 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
2901 : JSJitInfo::Getter,
2902 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2903 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
2904 : false, /* isInfallible. False in setters. */
2905 : false, /* isMovable. Not relevant for setters. */
2906 : false, /* isEliminatable. Not relevant for setters. */
2907 : false, /* isAlwaysInSlot. Only relevant for getters. */
2908 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2909 : false, /* isTypedMethod. Only relevant for methods. */
2910 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2911 : };
2912 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2913 : static_assert(0 < 1, "There is no slot for us");
2914 : static const JSJitInfo oninput_setterinfo = {
2915 : { (JSJitGetterOp)set_oninput },
2916 : { prototypes::id::HTMLElement },
2917 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
2918 : JSJitInfo::Setter,
2919 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2920 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
2921 : false, /* isInfallible. False in setters. */
2922 : false, /* isMovable. Not relevant for setters. */
2923 : false, /* isEliminatable. Not relevant for setters. */
2924 : false, /* isAlwaysInSlot. Only relevant for getters. */
2925 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2926 : false, /* isTypedMethod. Only relevant for methods. */
2927 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2928 : };
2929 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2930 : static_assert(0 < 1, "There is no slot for us");
2931 :
2932 : static bool
2933 0 : get_oninvalid(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
2934 : {
2935 0 : RefPtr<EventHandlerNonNull> result(self->GetOninvalid());
2936 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2937 0 : if (result) {
2938 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
2939 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
2940 0 : return false;
2941 : }
2942 0 : return true;
2943 : } else {
2944 0 : args.rval().setNull();
2945 0 : return true;
2946 : }
2947 : }
2948 :
2949 : static bool
2950 0 : set_oninvalid(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitSetterCallArgs args)
2951 : {
2952 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
2953 0 : if (args[0].isObject()) {
2954 : { // scope for tempRoot
2955 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
2956 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
2957 : }
2958 : } else {
2959 0 : arg0 = nullptr;
2960 : }
2961 0 : self->SetOninvalid(Constify(arg0));
2962 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2963 :
2964 0 : return true;
2965 : }
2966 :
2967 : static const JSJitInfo oninvalid_getterinfo = {
2968 : { (JSJitGetterOp)get_oninvalid },
2969 : { prototypes::id::HTMLElement },
2970 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
2971 : JSJitInfo::Getter,
2972 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2973 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
2974 : false, /* isInfallible. False in setters. */
2975 : false, /* isMovable. Not relevant for setters. */
2976 : false, /* isEliminatable. Not relevant for setters. */
2977 : false, /* isAlwaysInSlot. Only relevant for getters. */
2978 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2979 : false, /* isTypedMethod. Only relevant for methods. */
2980 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2981 : };
2982 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2983 : static_assert(0 < 1, "There is no slot for us");
2984 : static const JSJitInfo oninvalid_setterinfo = {
2985 : { (JSJitGetterOp)set_oninvalid },
2986 : { prototypes::id::HTMLElement },
2987 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
2988 : JSJitInfo::Setter,
2989 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2990 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
2991 : false, /* isInfallible. False in setters. */
2992 : false, /* isMovable. Not relevant for setters. */
2993 : false, /* isEliminatable. Not relevant for setters. */
2994 : false, /* isAlwaysInSlot. Only relevant for getters. */
2995 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2996 : false, /* isTypedMethod. Only relevant for methods. */
2997 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2998 : };
2999 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3000 : static_assert(0 < 1, "There is no slot for us");
3001 :
3002 : static bool
3003 0 : get_onkeydown(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
3004 : {
3005 0 : RefPtr<EventHandlerNonNull> result(self->GetOnkeydown());
3006 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3007 0 : if (result) {
3008 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
3009 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
3010 0 : return false;
3011 : }
3012 0 : return true;
3013 : } else {
3014 0 : args.rval().setNull();
3015 0 : return true;
3016 : }
3017 : }
3018 :
3019 : static bool
3020 0 : set_onkeydown(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitSetterCallArgs args)
3021 : {
3022 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
3023 0 : if (args[0].isObject()) {
3024 : { // scope for tempRoot
3025 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
3026 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
3027 : }
3028 : } else {
3029 0 : arg0 = nullptr;
3030 : }
3031 0 : self->SetOnkeydown(Constify(arg0));
3032 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3033 :
3034 0 : return true;
3035 : }
3036 :
3037 : static const JSJitInfo onkeydown_getterinfo = {
3038 : { (JSJitGetterOp)get_onkeydown },
3039 : { prototypes::id::HTMLElement },
3040 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
3041 : JSJitInfo::Getter,
3042 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3043 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
3044 : false, /* isInfallible. False in setters. */
3045 : false, /* isMovable. Not relevant for setters. */
3046 : false, /* isEliminatable. Not relevant for setters. */
3047 : false, /* isAlwaysInSlot. Only relevant for getters. */
3048 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3049 : false, /* isTypedMethod. Only relevant for methods. */
3050 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3051 : };
3052 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3053 : static_assert(0 < 1, "There is no slot for us");
3054 : static const JSJitInfo onkeydown_setterinfo = {
3055 : { (JSJitGetterOp)set_onkeydown },
3056 : { prototypes::id::HTMLElement },
3057 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
3058 : JSJitInfo::Setter,
3059 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3060 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
3061 : false, /* isInfallible. False in setters. */
3062 : false, /* isMovable. Not relevant for setters. */
3063 : false, /* isEliminatable. Not relevant for setters. */
3064 : false, /* isAlwaysInSlot. Only relevant for getters. */
3065 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3066 : false, /* isTypedMethod. Only relevant for methods. */
3067 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3068 : };
3069 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3070 : static_assert(0 < 1, "There is no slot for us");
3071 :
3072 : static bool
3073 0 : get_onkeypress(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
3074 : {
3075 0 : RefPtr<EventHandlerNonNull> result(self->GetOnkeypress());
3076 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3077 0 : if (result) {
3078 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
3079 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
3080 0 : return false;
3081 : }
3082 0 : return true;
3083 : } else {
3084 0 : args.rval().setNull();
3085 0 : return true;
3086 : }
3087 : }
3088 :
3089 : static bool
3090 0 : set_onkeypress(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitSetterCallArgs args)
3091 : {
3092 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
3093 0 : if (args[0].isObject()) {
3094 : { // scope for tempRoot
3095 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
3096 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
3097 : }
3098 : } else {
3099 0 : arg0 = nullptr;
3100 : }
3101 0 : self->SetOnkeypress(Constify(arg0));
3102 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3103 :
3104 0 : return true;
3105 : }
3106 :
3107 : static const JSJitInfo onkeypress_getterinfo = {
3108 : { (JSJitGetterOp)get_onkeypress },
3109 : { prototypes::id::HTMLElement },
3110 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
3111 : JSJitInfo::Getter,
3112 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3113 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
3114 : false, /* isInfallible. False in setters. */
3115 : false, /* isMovable. Not relevant for setters. */
3116 : false, /* isEliminatable. Not relevant for setters. */
3117 : false, /* isAlwaysInSlot. Only relevant for getters. */
3118 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3119 : false, /* isTypedMethod. Only relevant for methods. */
3120 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3121 : };
3122 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3123 : static_assert(0 < 1, "There is no slot for us");
3124 : static const JSJitInfo onkeypress_setterinfo = {
3125 : { (JSJitGetterOp)set_onkeypress },
3126 : { prototypes::id::HTMLElement },
3127 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
3128 : JSJitInfo::Setter,
3129 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3130 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
3131 : false, /* isInfallible. False in setters. */
3132 : false, /* isMovable. Not relevant for setters. */
3133 : false, /* isEliminatable. Not relevant for setters. */
3134 : false, /* isAlwaysInSlot. Only relevant for getters. */
3135 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3136 : false, /* isTypedMethod. Only relevant for methods. */
3137 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3138 : };
3139 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3140 : static_assert(0 < 1, "There is no slot for us");
3141 :
3142 : static bool
3143 0 : get_onkeyup(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
3144 : {
3145 0 : RefPtr<EventHandlerNonNull> result(self->GetOnkeyup());
3146 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3147 0 : if (result) {
3148 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
3149 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
3150 0 : return false;
3151 : }
3152 0 : return true;
3153 : } else {
3154 0 : args.rval().setNull();
3155 0 : return true;
3156 : }
3157 : }
3158 :
3159 : static bool
3160 0 : set_onkeyup(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitSetterCallArgs args)
3161 : {
3162 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
3163 0 : if (args[0].isObject()) {
3164 : { // scope for tempRoot
3165 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
3166 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
3167 : }
3168 : } else {
3169 0 : arg0 = nullptr;
3170 : }
3171 0 : self->SetOnkeyup(Constify(arg0));
3172 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3173 :
3174 0 : return true;
3175 : }
3176 :
3177 : static const JSJitInfo onkeyup_getterinfo = {
3178 : { (JSJitGetterOp)get_onkeyup },
3179 : { prototypes::id::HTMLElement },
3180 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
3181 : JSJitInfo::Getter,
3182 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3183 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
3184 : false, /* isInfallible. False in setters. */
3185 : false, /* isMovable. Not relevant for setters. */
3186 : false, /* isEliminatable. Not relevant for setters. */
3187 : false, /* isAlwaysInSlot. Only relevant for getters. */
3188 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3189 : false, /* isTypedMethod. Only relevant for methods. */
3190 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3191 : };
3192 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3193 : static_assert(0 < 1, "There is no slot for us");
3194 : static const JSJitInfo onkeyup_setterinfo = {
3195 : { (JSJitGetterOp)set_onkeyup },
3196 : { prototypes::id::HTMLElement },
3197 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
3198 : JSJitInfo::Setter,
3199 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3200 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
3201 : false, /* isInfallible. False in setters. */
3202 : false, /* isMovable. Not relevant for setters. */
3203 : false, /* isEliminatable. Not relevant for setters. */
3204 : false, /* isAlwaysInSlot. Only relevant for getters. */
3205 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3206 : false, /* isTypedMethod. Only relevant for methods. */
3207 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3208 : };
3209 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3210 : static_assert(0 < 1, "There is no slot for us");
3211 :
3212 : static bool
3213 0 : get_onload(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
3214 : {
3215 0 : RefPtr<EventHandlerNonNull> result(self->GetOnload());
3216 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3217 0 : if (result) {
3218 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
3219 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
3220 0 : return false;
3221 : }
3222 0 : return true;
3223 : } else {
3224 0 : args.rval().setNull();
3225 0 : return true;
3226 : }
3227 : }
3228 :
3229 : static bool
3230 0 : set_onload(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitSetterCallArgs args)
3231 : {
3232 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
3233 0 : if (args[0].isObject()) {
3234 : { // scope for tempRoot
3235 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
3236 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
3237 : }
3238 : } else {
3239 0 : arg0 = nullptr;
3240 : }
3241 0 : self->SetOnload(Constify(arg0));
3242 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3243 :
3244 0 : return true;
3245 : }
3246 :
3247 : static const JSJitInfo onload_getterinfo = {
3248 : { (JSJitGetterOp)get_onload },
3249 : { prototypes::id::HTMLElement },
3250 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
3251 : JSJitInfo::Getter,
3252 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3253 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
3254 : false, /* isInfallible. False in setters. */
3255 : false, /* isMovable. Not relevant for setters. */
3256 : false, /* isEliminatable. Not relevant for setters. */
3257 : false, /* isAlwaysInSlot. Only relevant for getters. */
3258 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3259 : false, /* isTypedMethod. Only relevant for methods. */
3260 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3261 : };
3262 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3263 : static_assert(0 < 1, "There is no slot for us");
3264 : static const JSJitInfo onload_setterinfo = {
3265 : { (JSJitGetterOp)set_onload },
3266 : { prototypes::id::HTMLElement },
3267 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
3268 : JSJitInfo::Setter,
3269 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3270 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
3271 : false, /* isInfallible. False in setters. */
3272 : false, /* isMovable. Not relevant for setters. */
3273 : false, /* isEliminatable. Not relevant for setters. */
3274 : false, /* isAlwaysInSlot. Only relevant for getters. */
3275 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3276 : false, /* isTypedMethod. Only relevant for methods. */
3277 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3278 : };
3279 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3280 : static_assert(0 < 1, "There is no slot for us");
3281 :
3282 : static bool
3283 0 : get_onloadeddata(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
3284 : {
3285 0 : RefPtr<EventHandlerNonNull> result(self->GetOnloadeddata());
3286 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3287 0 : if (result) {
3288 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
3289 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
3290 0 : return false;
3291 : }
3292 0 : return true;
3293 : } else {
3294 0 : args.rval().setNull();
3295 0 : return true;
3296 : }
3297 : }
3298 :
3299 : static bool
3300 0 : set_onloadeddata(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitSetterCallArgs args)
3301 : {
3302 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
3303 0 : if (args[0].isObject()) {
3304 : { // scope for tempRoot
3305 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
3306 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
3307 : }
3308 : } else {
3309 0 : arg0 = nullptr;
3310 : }
3311 0 : self->SetOnloadeddata(Constify(arg0));
3312 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3313 :
3314 0 : return true;
3315 : }
3316 :
3317 : static const JSJitInfo onloadeddata_getterinfo = {
3318 : { (JSJitGetterOp)get_onloadeddata },
3319 : { prototypes::id::HTMLElement },
3320 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
3321 : JSJitInfo::Getter,
3322 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3323 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
3324 : false, /* isInfallible. False in setters. */
3325 : false, /* isMovable. Not relevant for setters. */
3326 : false, /* isEliminatable. Not relevant for setters. */
3327 : false, /* isAlwaysInSlot. Only relevant for getters. */
3328 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3329 : false, /* isTypedMethod. Only relevant for methods. */
3330 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3331 : };
3332 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3333 : static_assert(0 < 1, "There is no slot for us");
3334 : static const JSJitInfo onloadeddata_setterinfo = {
3335 : { (JSJitGetterOp)set_onloadeddata },
3336 : { prototypes::id::HTMLElement },
3337 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
3338 : JSJitInfo::Setter,
3339 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3340 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
3341 : false, /* isInfallible. False in setters. */
3342 : false, /* isMovable. Not relevant for setters. */
3343 : false, /* isEliminatable. Not relevant for setters. */
3344 : false, /* isAlwaysInSlot. Only relevant for getters. */
3345 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3346 : false, /* isTypedMethod. Only relevant for methods. */
3347 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3348 : };
3349 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3350 : static_assert(0 < 1, "There is no slot for us");
3351 :
3352 : static bool
3353 0 : get_onloadedmetadata(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
3354 : {
3355 0 : RefPtr<EventHandlerNonNull> result(self->GetOnloadedmetadata());
3356 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3357 0 : if (result) {
3358 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
3359 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
3360 0 : return false;
3361 : }
3362 0 : return true;
3363 : } else {
3364 0 : args.rval().setNull();
3365 0 : return true;
3366 : }
3367 : }
3368 :
3369 : static bool
3370 0 : set_onloadedmetadata(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitSetterCallArgs args)
3371 : {
3372 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
3373 0 : if (args[0].isObject()) {
3374 : { // scope for tempRoot
3375 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
3376 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
3377 : }
3378 : } else {
3379 0 : arg0 = nullptr;
3380 : }
3381 0 : self->SetOnloadedmetadata(Constify(arg0));
3382 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3383 :
3384 0 : return true;
3385 : }
3386 :
3387 : static const JSJitInfo onloadedmetadata_getterinfo = {
3388 : { (JSJitGetterOp)get_onloadedmetadata },
3389 : { prototypes::id::HTMLElement },
3390 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
3391 : JSJitInfo::Getter,
3392 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3393 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
3394 : false, /* isInfallible. False in setters. */
3395 : false, /* isMovable. Not relevant for setters. */
3396 : false, /* isEliminatable. Not relevant for setters. */
3397 : false, /* isAlwaysInSlot. Only relevant for getters. */
3398 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3399 : false, /* isTypedMethod. Only relevant for methods. */
3400 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3401 : };
3402 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3403 : static_assert(0 < 1, "There is no slot for us");
3404 : static const JSJitInfo onloadedmetadata_setterinfo = {
3405 : { (JSJitGetterOp)set_onloadedmetadata },
3406 : { prototypes::id::HTMLElement },
3407 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
3408 : JSJitInfo::Setter,
3409 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3410 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
3411 : false, /* isInfallible. False in setters. */
3412 : false, /* isMovable. Not relevant for setters. */
3413 : false, /* isEliminatable. Not relevant for setters. */
3414 : false, /* isAlwaysInSlot. Only relevant for getters. */
3415 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3416 : false, /* isTypedMethod. Only relevant for methods. */
3417 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3418 : };
3419 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3420 : static_assert(0 < 1, "There is no slot for us");
3421 :
3422 : static bool
3423 0 : get_onloadend(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
3424 : {
3425 0 : RefPtr<EventHandlerNonNull> result(self->GetOnloadend());
3426 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3427 0 : if (result) {
3428 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
3429 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
3430 0 : return false;
3431 : }
3432 0 : return true;
3433 : } else {
3434 0 : args.rval().setNull();
3435 0 : return true;
3436 : }
3437 : }
3438 :
3439 : static bool
3440 0 : set_onloadend(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitSetterCallArgs args)
3441 : {
3442 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
3443 0 : if (args[0].isObject()) {
3444 : { // scope for tempRoot
3445 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
3446 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
3447 : }
3448 : } else {
3449 0 : arg0 = nullptr;
3450 : }
3451 0 : self->SetOnloadend(Constify(arg0));
3452 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3453 :
3454 0 : return true;
3455 : }
3456 :
3457 : static const JSJitInfo onloadend_getterinfo = {
3458 : { (JSJitGetterOp)get_onloadend },
3459 : { prototypes::id::HTMLElement },
3460 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
3461 : JSJitInfo::Getter,
3462 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3463 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
3464 : false, /* isInfallible. False in setters. */
3465 : false, /* isMovable. Not relevant for setters. */
3466 : false, /* isEliminatable. Not relevant for setters. */
3467 : false, /* isAlwaysInSlot. Only relevant for getters. */
3468 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3469 : false, /* isTypedMethod. Only relevant for methods. */
3470 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3471 : };
3472 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3473 : static_assert(0 < 1, "There is no slot for us");
3474 : static const JSJitInfo onloadend_setterinfo = {
3475 : { (JSJitGetterOp)set_onloadend },
3476 : { prototypes::id::HTMLElement },
3477 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
3478 : JSJitInfo::Setter,
3479 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3480 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
3481 : false, /* isInfallible. False in setters. */
3482 : false, /* isMovable. Not relevant for setters. */
3483 : false, /* isEliminatable. Not relevant for setters. */
3484 : false, /* isAlwaysInSlot. Only relevant for getters. */
3485 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3486 : false, /* isTypedMethod. Only relevant for methods. */
3487 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3488 : };
3489 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3490 : static_assert(0 < 1, "There is no slot for us");
3491 :
3492 : static bool
3493 0 : get_onloadstart(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
3494 : {
3495 0 : RefPtr<EventHandlerNonNull> result(self->GetOnloadstart());
3496 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3497 0 : if (result) {
3498 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
3499 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
3500 0 : return false;
3501 : }
3502 0 : return true;
3503 : } else {
3504 0 : args.rval().setNull();
3505 0 : return true;
3506 : }
3507 : }
3508 :
3509 : static bool
3510 0 : set_onloadstart(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitSetterCallArgs args)
3511 : {
3512 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
3513 0 : if (args[0].isObject()) {
3514 : { // scope for tempRoot
3515 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
3516 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
3517 : }
3518 : } else {
3519 0 : arg0 = nullptr;
3520 : }
3521 0 : self->SetOnloadstart(Constify(arg0));
3522 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3523 :
3524 0 : return true;
3525 : }
3526 :
3527 : static const JSJitInfo onloadstart_getterinfo = {
3528 : { (JSJitGetterOp)get_onloadstart },
3529 : { prototypes::id::HTMLElement },
3530 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
3531 : JSJitInfo::Getter,
3532 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3533 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
3534 : false, /* isInfallible. False in setters. */
3535 : false, /* isMovable. Not relevant for setters. */
3536 : false, /* isEliminatable. Not relevant for setters. */
3537 : false, /* isAlwaysInSlot. Only relevant for getters. */
3538 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3539 : false, /* isTypedMethod. Only relevant for methods. */
3540 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3541 : };
3542 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3543 : static_assert(0 < 1, "There is no slot for us");
3544 : static const JSJitInfo onloadstart_setterinfo = {
3545 : { (JSJitGetterOp)set_onloadstart },
3546 : { prototypes::id::HTMLElement },
3547 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
3548 : JSJitInfo::Setter,
3549 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3550 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
3551 : false, /* isInfallible. False in setters. */
3552 : false, /* isMovable. Not relevant for setters. */
3553 : false, /* isEliminatable. Not relevant for setters. */
3554 : false, /* isAlwaysInSlot. Only relevant for getters. */
3555 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3556 : false, /* isTypedMethod. Only relevant for methods. */
3557 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3558 : };
3559 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3560 : static_assert(0 < 1, "There is no slot for us");
3561 :
3562 : static bool
3563 0 : get_onmousedown(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
3564 : {
3565 0 : RefPtr<EventHandlerNonNull> result(self->GetOnmousedown());
3566 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3567 0 : if (result) {
3568 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
3569 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
3570 0 : return false;
3571 : }
3572 0 : return true;
3573 : } else {
3574 0 : args.rval().setNull();
3575 0 : return true;
3576 : }
3577 : }
3578 :
3579 : static bool
3580 0 : set_onmousedown(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitSetterCallArgs args)
3581 : {
3582 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
3583 0 : if (args[0].isObject()) {
3584 : { // scope for tempRoot
3585 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
3586 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
3587 : }
3588 : } else {
3589 0 : arg0 = nullptr;
3590 : }
3591 0 : self->SetOnmousedown(Constify(arg0));
3592 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3593 :
3594 0 : return true;
3595 : }
3596 :
3597 : static const JSJitInfo onmousedown_getterinfo = {
3598 : { (JSJitGetterOp)get_onmousedown },
3599 : { prototypes::id::HTMLElement },
3600 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
3601 : JSJitInfo::Getter,
3602 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3603 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
3604 : false, /* isInfallible. False in setters. */
3605 : false, /* isMovable. Not relevant for setters. */
3606 : false, /* isEliminatable. Not relevant for setters. */
3607 : false, /* isAlwaysInSlot. Only relevant for getters. */
3608 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3609 : false, /* isTypedMethod. Only relevant for methods. */
3610 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3611 : };
3612 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3613 : static_assert(0 < 1, "There is no slot for us");
3614 : static const JSJitInfo onmousedown_setterinfo = {
3615 : { (JSJitGetterOp)set_onmousedown },
3616 : { prototypes::id::HTMLElement },
3617 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
3618 : JSJitInfo::Setter,
3619 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3620 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
3621 : false, /* isInfallible. False in setters. */
3622 : false, /* isMovable. Not relevant for setters. */
3623 : false, /* isEliminatable. Not relevant for setters. */
3624 : false, /* isAlwaysInSlot. Only relevant for getters. */
3625 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3626 : false, /* isTypedMethod. Only relevant for methods. */
3627 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3628 : };
3629 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3630 : static_assert(0 < 1, "There is no slot for us");
3631 :
3632 : static bool
3633 0 : get_onmouseenter(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
3634 : {
3635 0 : RefPtr<EventHandlerNonNull> result(self->GetOnmouseenter());
3636 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3637 0 : if (result) {
3638 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
3639 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
3640 0 : return false;
3641 : }
3642 0 : return true;
3643 : } else {
3644 0 : args.rval().setNull();
3645 0 : return true;
3646 : }
3647 : }
3648 :
3649 : static bool
3650 0 : set_onmouseenter(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitSetterCallArgs args)
3651 : {
3652 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
3653 0 : if (args[0].isObject()) {
3654 : { // scope for tempRoot
3655 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
3656 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
3657 : }
3658 : } else {
3659 0 : arg0 = nullptr;
3660 : }
3661 0 : self->SetOnmouseenter(Constify(arg0));
3662 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3663 :
3664 0 : return true;
3665 : }
3666 :
3667 : static const JSJitInfo onmouseenter_getterinfo = {
3668 : { (JSJitGetterOp)get_onmouseenter },
3669 : { prototypes::id::HTMLElement },
3670 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
3671 : JSJitInfo::Getter,
3672 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3673 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
3674 : false, /* isInfallible. False in setters. */
3675 : false, /* isMovable. Not relevant for setters. */
3676 : false, /* isEliminatable. Not relevant for setters. */
3677 : false, /* isAlwaysInSlot. Only relevant for getters. */
3678 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3679 : false, /* isTypedMethod. Only relevant for methods. */
3680 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3681 : };
3682 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3683 : static_assert(0 < 1, "There is no slot for us");
3684 : static const JSJitInfo onmouseenter_setterinfo = {
3685 : { (JSJitGetterOp)set_onmouseenter },
3686 : { prototypes::id::HTMLElement },
3687 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
3688 : JSJitInfo::Setter,
3689 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3690 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
3691 : false, /* isInfallible. False in setters. */
3692 : false, /* isMovable. Not relevant for setters. */
3693 : false, /* isEliminatable. Not relevant for setters. */
3694 : false, /* isAlwaysInSlot. Only relevant for getters. */
3695 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3696 : false, /* isTypedMethod. Only relevant for methods. */
3697 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3698 : };
3699 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3700 : static_assert(0 < 1, "There is no slot for us");
3701 :
3702 : static bool
3703 0 : get_onmouseleave(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
3704 : {
3705 0 : RefPtr<EventHandlerNonNull> result(self->GetOnmouseleave());
3706 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3707 0 : if (result) {
3708 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
3709 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
3710 0 : return false;
3711 : }
3712 0 : return true;
3713 : } else {
3714 0 : args.rval().setNull();
3715 0 : return true;
3716 : }
3717 : }
3718 :
3719 : static bool
3720 0 : set_onmouseleave(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitSetterCallArgs args)
3721 : {
3722 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
3723 0 : if (args[0].isObject()) {
3724 : { // scope for tempRoot
3725 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
3726 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
3727 : }
3728 : } else {
3729 0 : arg0 = nullptr;
3730 : }
3731 0 : self->SetOnmouseleave(Constify(arg0));
3732 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3733 :
3734 0 : return true;
3735 : }
3736 :
3737 : static const JSJitInfo onmouseleave_getterinfo = {
3738 : { (JSJitGetterOp)get_onmouseleave },
3739 : { prototypes::id::HTMLElement },
3740 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
3741 : JSJitInfo::Getter,
3742 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3743 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
3744 : false, /* isInfallible. False in setters. */
3745 : false, /* isMovable. Not relevant for setters. */
3746 : false, /* isEliminatable. Not relevant for setters. */
3747 : false, /* isAlwaysInSlot. Only relevant for getters. */
3748 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3749 : false, /* isTypedMethod. Only relevant for methods. */
3750 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3751 : };
3752 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3753 : static_assert(0 < 1, "There is no slot for us");
3754 : static const JSJitInfo onmouseleave_setterinfo = {
3755 : { (JSJitGetterOp)set_onmouseleave },
3756 : { prototypes::id::HTMLElement },
3757 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
3758 : JSJitInfo::Setter,
3759 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3760 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
3761 : false, /* isInfallible. False in setters. */
3762 : false, /* isMovable. Not relevant for setters. */
3763 : false, /* isEliminatable. Not relevant for setters. */
3764 : false, /* isAlwaysInSlot. Only relevant for getters. */
3765 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3766 : false, /* isTypedMethod. Only relevant for methods. */
3767 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3768 : };
3769 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3770 : static_assert(0 < 1, "There is no slot for us");
3771 :
3772 : static bool
3773 0 : get_onmousemove(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
3774 : {
3775 0 : RefPtr<EventHandlerNonNull> result(self->GetOnmousemove());
3776 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3777 0 : if (result) {
3778 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
3779 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
3780 0 : return false;
3781 : }
3782 0 : return true;
3783 : } else {
3784 0 : args.rval().setNull();
3785 0 : return true;
3786 : }
3787 : }
3788 :
3789 : static bool
3790 0 : set_onmousemove(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitSetterCallArgs args)
3791 : {
3792 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
3793 0 : if (args[0].isObject()) {
3794 : { // scope for tempRoot
3795 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
3796 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
3797 : }
3798 : } else {
3799 0 : arg0 = nullptr;
3800 : }
3801 0 : self->SetOnmousemove(Constify(arg0));
3802 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3803 :
3804 0 : return true;
3805 : }
3806 :
3807 : static const JSJitInfo onmousemove_getterinfo = {
3808 : { (JSJitGetterOp)get_onmousemove },
3809 : { prototypes::id::HTMLElement },
3810 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
3811 : JSJitInfo::Getter,
3812 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3813 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
3814 : false, /* isInfallible. False in setters. */
3815 : false, /* isMovable. Not relevant for setters. */
3816 : false, /* isEliminatable. Not relevant for setters. */
3817 : false, /* isAlwaysInSlot. Only relevant for getters. */
3818 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3819 : false, /* isTypedMethod. Only relevant for methods. */
3820 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3821 : };
3822 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3823 : static_assert(0 < 1, "There is no slot for us");
3824 : static const JSJitInfo onmousemove_setterinfo = {
3825 : { (JSJitGetterOp)set_onmousemove },
3826 : { prototypes::id::HTMLElement },
3827 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
3828 : JSJitInfo::Setter,
3829 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3830 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
3831 : false, /* isInfallible. False in setters. */
3832 : false, /* isMovable. Not relevant for setters. */
3833 : false, /* isEliminatable. Not relevant for setters. */
3834 : false, /* isAlwaysInSlot. Only relevant for getters. */
3835 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3836 : false, /* isTypedMethod. Only relevant for methods. */
3837 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3838 : };
3839 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3840 : static_assert(0 < 1, "There is no slot for us");
3841 :
3842 : static bool
3843 0 : get_onmouseout(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
3844 : {
3845 0 : RefPtr<EventHandlerNonNull> result(self->GetOnmouseout());
3846 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3847 0 : if (result) {
3848 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
3849 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
3850 0 : return false;
3851 : }
3852 0 : return true;
3853 : } else {
3854 0 : args.rval().setNull();
3855 0 : return true;
3856 : }
3857 : }
3858 :
3859 : static bool
3860 0 : set_onmouseout(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitSetterCallArgs args)
3861 : {
3862 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
3863 0 : if (args[0].isObject()) {
3864 : { // scope for tempRoot
3865 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
3866 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
3867 : }
3868 : } else {
3869 0 : arg0 = nullptr;
3870 : }
3871 0 : self->SetOnmouseout(Constify(arg0));
3872 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3873 :
3874 0 : return true;
3875 : }
3876 :
3877 : static const JSJitInfo onmouseout_getterinfo = {
3878 : { (JSJitGetterOp)get_onmouseout },
3879 : { prototypes::id::HTMLElement },
3880 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
3881 : JSJitInfo::Getter,
3882 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3883 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
3884 : false, /* isInfallible. False in setters. */
3885 : false, /* isMovable. Not relevant for setters. */
3886 : false, /* isEliminatable. Not relevant for setters. */
3887 : false, /* isAlwaysInSlot. Only relevant for getters. */
3888 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3889 : false, /* isTypedMethod. Only relevant for methods. */
3890 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3891 : };
3892 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3893 : static_assert(0 < 1, "There is no slot for us");
3894 : static const JSJitInfo onmouseout_setterinfo = {
3895 : { (JSJitGetterOp)set_onmouseout },
3896 : { prototypes::id::HTMLElement },
3897 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
3898 : JSJitInfo::Setter,
3899 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3900 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
3901 : false, /* isInfallible. False in setters. */
3902 : false, /* isMovable. Not relevant for setters. */
3903 : false, /* isEliminatable. Not relevant for setters. */
3904 : false, /* isAlwaysInSlot. Only relevant for getters. */
3905 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3906 : false, /* isTypedMethod. Only relevant for methods. */
3907 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3908 : };
3909 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3910 : static_assert(0 < 1, "There is no slot for us");
3911 :
3912 : static bool
3913 0 : get_onmouseover(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
3914 : {
3915 0 : RefPtr<EventHandlerNonNull> result(self->GetOnmouseover());
3916 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3917 0 : if (result) {
3918 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
3919 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
3920 0 : return false;
3921 : }
3922 0 : return true;
3923 : } else {
3924 0 : args.rval().setNull();
3925 0 : return true;
3926 : }
3927 : }
3928 :
3929 : static bool
3930 0 : set_onmouseover(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitSetterCallArgs args)
3931 : {
3932 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
3933 0 : if (args[0].isObject()) {
3934 : { // scope for tempRoot
3935 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
3936 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
3937 : }
3938 : } else {
3939 0 : arg0 = nullptr;
3940 : }
3941 0 : self->SetOnmouseover(Constify(arg0));
3942 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3943 :
3944 0 : return true;
3945 : }
3946 :
3947 : static const JSJitInfo onmouseover_getterinfo = {
3948 : { (JSJitGetterOp)get_onmouseover },
3949 : { prototypes::id::HTMLElement },
3950 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
3951 : JSJitInfo::Getter,
3952 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3953 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
3954 : false, /* isInfallible. False in setters. */
3955 : false, /* isMovable. Not relevant for setters. */
3956 : false, /* isEliminatable. Not relevant for setters. */
3957 : false, /* isAlwaysInSlot. Only relevant for getters. */
3958 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3959 : false, /* isTypedMethod. Only relevant for methods. */
3960 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3961 : };
3962 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3963 : static_assert(0 < 1, "There is no slot for us");
3964 : static const JSJitInfo onmouseover_setterinfo = {
3965 : { (JSJitGetterOp)set_onmouseover },
3966 : { prototypes::id::HTMLElement },
3967 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
3968 : JSJitInfo::Setter,
3969 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3970 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
3971 : false, /* isInfallible. False in setters. */
3972 : false, /* isMovable. Not relevant for setters. */
3973 : false, /* isEliminatable. Not relevant for setters. */
3974 : false, /* isAlwaysInSlot. Only relevant for getters. */
3975 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3976 : false, /* isTypedMethod. Only relevant for methods. */
3977 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3978 : };
3979 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3980 : static_assert(0 < 1, "There is no slot for us");
3981 :
3982 : static bool
3983 0 : get_onmouseup(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
3984 : {
3985 0 : RefPtr<EventHandlerNonNull> result(self->GetOnmouseup());
3986 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3987 0 : if (result) {
3988 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
3989 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
3990 0 : return false;
3991 : }
3992 0 : return true;
3993 : } else {
3994 0 : args.rval().setNull();
3995 0 : return true;
3996 : }
3997 : }
3998 :
3999 : static bool
4000 0 : set_onmouseup(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitSetterCallArgs args)
4001 : {
4002 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
4003 0 : if (args[0].isObject()) {
4004 : { // scope for tempRoot
4005 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
4006 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
4007 : }
4008 : } else {
4009 0 : arg0 = nullptr;
4010 : }
4011 0 : self->SetOnmouseup(Constify(arg0));
4012 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4013 :
4014 0 : return true;
4015 : }
4016 :
4017 : static const JSJitInfo onmouseup_getterinfo = {
4018 : { (JSJitGetterOp)get_onmouseup },
4019 : { prototypes::id::HTMLElement },
4020 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
4021 : JSJitInfo::Getter,
4022 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4023 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
4024 : false, /* isInfallible. False in setters. */
4025 : false, /* isMovable. Not relevant for setters. */
4026 : false, /* isEliminatable. Not relevant for setters. */
4027 : false, /* isAlwaysInSlot. Only relevant for getters. */
4028 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4029 : false, /* isTypedMethod. Only relevant for methods. */
4030 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4031 : };
4032 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4033 : static_assert(0 < 1, "There is no slot for us");
4034 : static const JSJitInfo onmouseup_setterinfo = {
4035 : { (JSJitGetterOp)set_onmouseup },
4036 : { prototypes::id::HTMLElement },
4037 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
4038 : JSJitInfo::Setter,
4039 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4040 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
4041 : false, /* isInfallible. False in setters. */
4042 : false, /* isMovable. Not relevant for setters. */
4043 : false, /* isEliminatable. Not relevant for setters. */
4044 : false, /* isAlwaysInSlot. Only relevant for getters. */
4045 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4046 : false, /* isTypedMethod. Only relevant for methods. */
4047 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4048 : };
4049 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4050 : static_assert(0 < 1, "There is no slot for us");
4051 :
4052 : static bool
4053 0 : get_onwheel(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
4054 : {
4055 0 : RefPtr<EventHandlerNonNull> result(self->GetOnwheel());
4056 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4057 0 : if (result) {
4058 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
4059 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
4060 0 : return false;
4061 : }
4062 0 : return true;
4063 : } else {
4064 0 : args.rval().setNull();
4065 0 : return true;
4066 : }
4067 : }
4068 :
4069 : static bool
4070 0 : set_onwheel(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitSetterCallArgs args)
4071 : {
4072 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
4073 0 : if (args[0].isObject()) {
4074 : { // scope for tempRoot
4075 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
4076 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
4077 : }
4078 : } else {
4079 0 : arg0 = nullptr;
4080 : }
4081 0 : self->SetOnwheel(Constify(arg0));
4082 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4083 :
4084 0 : return true;
4085 : }
4086 :
4087 : static const JSJitInfo onwheel_getterinfo = {
4088 : { (JSJitGetterOp)get_onwheel },
4089 : { prototypes::id::HTMLElement },
4090 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
4091 : JSJitInfo::Getter,
4092 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4093 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
4094 : false, /* isInfallible. False in setters. */
4095 : false, /* isMovable. Not relevant for setters. */
4096 : false, /* isEliminatable. Not relevant for setters. */
4097 : false, /* isAlwaysInSlot. Only relevant for getters. */
4098 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4099 : false, /* isTypedMethod. Only relevant for methods. */
4100 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4101 : };
4102 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4103 : static_assert(0 < 1, "There is no slot for us");
4104 : static const JSJitInfo onwheel_setterinfo = {
4105 : { (JSJitGetterOp)set_onwheel },
4106 : { prototypes::id::HTMLElement },
4107 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
4108 : JSJitInfo::Setter,
4109 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4110 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
4111 : false, /* isInfallible. False in setters. */
4112 : false, /* isMovable. Not relevant for setters. */
4113 : false, /* isEliminatable. Not relevant for setters. */
4114 : false, /* isAlwaysInSlot. Only relevant for getters. */
4115 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4116 : false, /* isTypedMethod. Only relevant for methods. */
4117 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4118 : };
4119 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4120 : static_assert(0 < 1, "There is no slot for us");
4121 :
4122 : static bool
4123 0 : get_onpause(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
4124 : {
4125 0 : RefPtr<EventHandlerNonNull> result(self->GetOnpause());
4126 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4127 0 : if (result) {
4128 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
4129 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
4130 0 : return false;
4131 : }
4132 0 : return true;
4133 : } else {
4134 0 : args.rval().setNull();
4135 0 : return true;
4136 : }
4137 : }
4138 :
4139 : static bool
4140 0 : set_onpause(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitSetterCallArgs args)
4141 : {
4142 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
4143 0 : if (args[0].isObject()) {
4144 : { // scope for tempRoot
4145 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
4146 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
4147 : }
4148 : } else {
4149 0 : arg0 = nullptr;
4150 : }
4151 0 : self->SetOnpause(Constify(arg0));
4152 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4153 :
4154 0 : return true;
4155 : }
4156 :
4157 : static const JSJitInfo onpause_getterinfo = {
4158 : { (JSJitGetterOp)get_onpause },
4159 : { prototypes::id::HTMLElement },
4160 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
4161 : JSJitInfo::Getter,
4162 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4163 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
4164 : false, /* isInfallible. False in setters. */
4165 : false, /* isMovable. Not relevant for setters. */
4166 : false, /* isEliminatable. Not relevant for setters. */
4167 : false, /* isAlwaysInSlot. Only relevant for getters. */
4168 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4169 : false, /* isTypedMethod. Only relevant for methods. */
4170 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4171 : };
4172 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4173 : static_assert(0 < 1, "There is no slot for us");
4174 : static const JSJitInfo onpause_setterinfo = {
4175 : { (JSJitGetterOp)set_onpause },
4176 : { prototypes::id::HTMLElement },
4177 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
4178 : JSJitInfo::Setter,
4179 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4180 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
4181 : false, /* isInfallible. False in setters. */
4182 : false, /* isMovable. Not relevant for setters. */
4183 : false, /* isEliminatable. Not relevant for setters. */
4184 : false, /* isAlwaysInSlot. Only relevant for getters. */
4185 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4186 : false, /* isTypedMethod. Only relevant for methods. */
4187 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4188 : };
4189 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4190 : static_assert(0 < 1, "There is no slot for us");
4191 :
4192 : static bool
4193 0 : get_onplay(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
4194 : {
4195 0 : RefPtr<EventHandlerNonNull> result(self->GetOnplay());
4196 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4197 0 : if (result) {
4198 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
4199 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
4200 0 : return false;
4201 : }
4202 0 : return true;
4203 : } else {
4204 0 : args.rval().setNull();
4205 0 : return true;
4206 : }
4207 : }
4208 :
4209 : static bool
4210 0 : set_onplay(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitSetterCallArgs args)
4211 : {
4212 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
4213 0 : if (args[0].isObject()) {
4214 : { // scope for tempRoot
4215 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
4216 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
4217 : }
4218 : } else {
4219 0 : arg0 = nullptr;
4220 : }
4221 0 : self->SetOnplay(Constify(arg0));
4222 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4223 :
4224 0 : return true;
4225 : }
4226 :
4227 : static const JSJitInfo onplay_getterinfo = {
4228 : { (JSJitGetterOp)get_onplay },
4229 : { prototypes::id::HTMLElement },
4230 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
4231 : JSJitInfo::Getter,
4232 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4233 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
4234 : false, /* isInfallible. False in setters. */
4235 : false, /* isMovable. Not relevant for setters. */
4236 : false, /* isEliminatable. Not relevant for setters. */
4237 : false, /* isAlwaysInSlot. Only relevant for getters. */
4238 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4239 : false, /* isTypedMethod. Only relevant for methods. */
4240 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4241 : };
4242 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4243 : static_assert(0 < 1, "There is no slot for us");
4244 : static const JSJitInfo onplay_setterinfo = {
4245 : { (JSJitGetterOp)set_onplay },
4246 : { prototypes::id::HTMLElement },
4247 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
4248 : JSJitInfo::Setter,
4249 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4250 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
4251 : false, /* isInfallible. False in setters. */
4252 : false, /* isMovable. Not relevant for setters. */
4253 : false, /* isEliminatable. Not relevant for setters. */
4254 : false, /* isAlwaysInSlot. Only relevant for getters. */
4255 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4256 : false, /* isTypedMethod. Only relevant for methods. */
4257 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4258 : };
4259 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4260 : static_assert(0 < 1, "There is no slot for us");
4261 :
4262 : static bool
4263 0 : get_onplaying(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
4264 : {
4265 0 : RefPtr<EventHandlerNonNull> result(self->GetOnplaying());
4266 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4267 0 : if (result) {
4268 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
4269 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
4270 0 : return false;
4271 : }
4272 0 : return true;
4273 : } else {
4274 0 : args.rval().setNull();
4275 0 : return true;
4276 : }
4277 : }
4278 :
4279 : static bool
4280 0 : set_onplaying(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitSetterCallArgs args)
4281 : {
4282 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
4283 0 : if (args[0].isObject()) {
4284 : { // scope for tempRoot
4285 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
4286 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
4287 : }
4288 : } else {
4289 0 : arg0 = nullptr;
4290 : }
4291 0 : self->SetOnplaying(Constify(arg0));
4292 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4293 :
4294 0 : return true;
4295 : }
4296 :
4297 : static const JSJitInfo onplaying_getterinfo = {
4298 : { (JSJitGetterOp)get_onplaying },
4299 : { prototypes::id::HTMLElement },
4300 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
4301 : JSJitInfo::Getter,
4302 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4303 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
4304 : false, /* isInfallible. False in setters. */
4305 : false, /* isMovable. Not relevant for setters. */
4306 : false, /* isEliminatable. Not relevant for setters. */
4307 : false, /* isAlwaysInSlot. Only relevant for getters. */
4308 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4309 : false, /* isTypedMethod. Only relevant for methods. */
4310 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4311 : };
4312 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4313 : static_assert(0 < 1, "There is no slot for us");
4314 : static const JSJitInfo onplaying_setterinfo = {
4315 : { (JSJitGetterOp)set_onplaying },
4316 : { prototypes::id::HTMLElement },
4317 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
4318 : JSJitInfo::Setter,
4319 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4320 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
4321 : false, /* isInfallible. False in setters. */
4322 : false, /* isMovable. Not relevant for setters. */
4323 : false, /* isEliminatable. Not relevant for setters. */
4324 : false, /* isAlwaysInSlot. Only relevant for getters. */
4325 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4326 : false, /* isTypedMethod. Only relevant for methods. */
4327 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4328 : };
4329 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4330 : static_assert(0 < 1, "There is no slot for us");
4331 :
4332 : static bool
4333 0 : get_onprogress(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
4334 : {
4335 0 : RefPtr<EventHandlerNonNull> result(self->GetOnprogress());
4336 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4337 0 : if (result) {
4338 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
4339 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
4340 0 : return false;
4341 : }
4342 0 : return true;
4343 : } else {
4344 0 : args.rval().setNull();
4345 0 : return true;
4346 : }
4347 : }
4348 :
4349 : static bool
4350 0 : set_onprogress(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitSetterCallArgs args)
4351 : {
4352 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
4353 0 : if (args[0].isObject()) {
4354 : { // scope for tempRoot
4355 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
4356 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
4357 : }
4358 : } else {
4359 0 : arg0 = nullptr;
4360 : }
4361 0 : self->SetOnprogress(Constify(arg0));
4362 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4363 :
4364 0 : return true;
4365 : }
4366 :
4367 : static const JSJitInfo onprogress_getterinfo = {
4368 : { (JSJitGetterOp)get_onprogress },
4369 : { prototypes::id::HTMLElement },
4370 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
4371 : JSJitInfo::Getter,
4372 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4373 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
4374 : false, /* isInfallible. False in setters. */
4375 : false, /* isMovable. Not relevant for setters. */
4376 : false, /* isEliminatable. Not relevant for setters. */
4377 : false, /* isAlwaysInSlot. Only relevant for getters. */
4378 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4379 : false, /* isTypedMethod. Only relevant for methods. */
4380 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4381 : };
4382 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4383 : static_assert(0 < 1, "There is no slot for us");
4384 : static const JSJitInfo onprogress_setterinfo = {
4385 : { (JSJitGetterOp)set_onprogress },
4386 : { prototypes::id::HTMLElement },
4387 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
4388 : JSJitInfo::Setter,
4389 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4390 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
4391 : false, /* isInfallible. False in setters. */
4392 : false, /* isMovable. Not relevant for setters. */
4393 : false, /* isEliminatable. Not relevant for setters. */
4394 : false, /* isAlwaysInSlot. Only relevant for getters. */
4395 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4396 : false, /* isTypedMethod. Only relevant for methods. */
4397 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4398 : };
4399 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4400 : static_assert(0 < 1, "There is no slot for us");
4401 :
4402 : static bool
4403 0 : get_onratechange(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
4404 : {
4405 0 : RefPtr<EventHandlerNonNull> result(self->GetOnratechange());
4406 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4407 0 : if (result) {
4408 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
4409 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
4410 0 : return false;
4411 : }
4412 0 : return true;
4413 : } else {
4414 0 : args.rval().setNull();
4415 0 : return true;
4416 : }
4417 : }
4418 :
4419 : static bool
4420 0 : set_onratechange(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitSetterCallArgs args)
4421 : {
4422 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
4423 0 : if (args[0].isObject()) {
4424 : { // scope for tempRoot
4425 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
4426 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
4427 : }
4428 : } else {
4429 0 : arg0 = nullptr;
4430 : }
4431 0 : self->SetOnratechange(Constify(arg0));
4432 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4433 :
4434 0 : return true;
4435 : }
4436 :
4437 : static const JSJitInfo onratechange_getterinfo = {
4438 : { (JSJitGetterOp)get_onratechange },
4439 : { prototypes::id::HTMLElement },
4440 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
4441 : JSJitInfo::Getter,
4442 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4443 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
4444 : false, /* isInfallible. False in setters. */
4445 : false, /* isMovable. Not relevant for setters. */
4446 : false, /* isEliminatable. Not relevant for setters. */
4447 : false, /* isAlwaysInSlot. Only relevant for getters. */
4448 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4449 : false, /* isTypedMethod. Only relevant for methods. */
4450 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4451 : };
4452 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4453 : static_assert(0 < 1, "There is no slot for us");
4454 : static const JSJitInfo onratechange_setterinfo = {
4455 : { (JSJitGetterOp)set_onratechange },
4456 : { prototypes::id::HTMLElement },
4457 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
4458 : JSJitInfo::Setter,
4459 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4460 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
4461 : false, /* isInfallible. False in setters. */
4462 : false, /* isMovable. Not relevant for setters. */
4463 : false, /* isEliminatable. Not relevant for setters. */
4464 : false, /* isAlwaysInSlot. Only relevant for getters. */
4465 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4466 : false, /* isTypedMethod. Only relevant for methods. */
4467 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4468 : };
4469 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4470 : static_assert(0 < 1, "There is no slot for us");
4471 :
4472 : static bool
4473 0 : get_onreset(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
4474 : {
4475 0 : RefPtr<EventHandlerNonNull> result(self->GetOnreset());
4476 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4477 0 : if (result) {
4478 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
4479 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
4480 0 : return false;
4481 : }
4482 0 : return true;
4483 : } else {
4484 0 : args.rval().setNull();
4485 0 : return true;
4486 : }
4487 : }
4488 :
4489 : static bool
4490 0 : set_onreset(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitSetterCallArgs args)
4491 : {
4492 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
4493 0 : if (args[0].isObject()) {
4494 : { // scope for tempRoot
4495 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
4496 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
4497 : }
4498 : } else {
4499 0 : arg0 = nullptr;
4500 : }
4501 0 : self->SetOnreset(Constify(arg0));
4502 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4503 :
4504 0 : return true;
4505 : }
4506 :
4507 : static const JSJitInfo onreset_getterinfo = {
4508 : { (JSJitGetterOp)get_onreset },
4509 : { prototypes::id::HTMLElement },
4510 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
4511 : JSJitInfo::Getter,
4512 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4513 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
4514 : false, /* isInfallible. False in setters. */
4515 : false, /* isMovable. Not relevant for setters. */
4516 : false, /* isEliminatable. Not relevant for setters. */
4517 : false, /* isAlwaysInSlot. Only relevant for getters. */
4518 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4519 : false, /* isTypedMethod. Only relevant for methods. */
4520 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4521 : };
4522 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4523 : static_assert(0 < 1, "There is no slot for us");
4524 : static const JSJitInfo onreset_setterinfo = {
4525 : { (JSJitGetterOp)set_onreset },
4526 : { prototypes::id::HTMLElement },
4527 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
4528 : JSJitInfo::Setter,
4529 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4530 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
4531 : false, /* isInfallible. False in setters. */
4532 : false, /* isMovable. Not relevant for setters. */
4533 : false, /* isEliminatable. Not relevant for setters. */
4534 : false, /* isAlwaysInSlot. Only relevant for getters. */
4535 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4536 : false, /* isTypedMethod. Only relevant for methods. */
4537 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4538 : };
4539 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4540 : static_assert(0 < 1, "There is no slot for us");
4541 :
4542 : static bool
4543 0 : get_onresize(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
4544 : {
4545 0 : RefPtr<EventHandlerNonNull> result(self->GetOnresize());
4546 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4547 0 : if (result) {
4548 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
4549 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
4550 0 : return false;
4551 : }
4552 0 : return true;
4553 : } else {
4554 0 : args.rval().setNull();
4555 0 : return true;
4556 : }
4557 : }
4558 :
4559 : static bool
4560 0 : set_onresize(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitSetterCallArgs args)
4561 : {
4562 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
4563 0 : if (args[0].isObject()) {
4564 : { // scope for tempRoot
4565 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
4566 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
4567 : }
4568 : } else {
4569 0 : arg0 = nullptr;
4570 : }
4571 0 : self->SetOnresize(Constify(arg0));
4572 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4573 :
4574 0 : return true;
4575 : }
4576 :
4577 : static const JSJitInfo onresize_getterinfo = {
4578 : { (JSJitGetterOp)get_onresize },
4579 : { prototypes::id::HTMLElement },
4580 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
4581 : JSJitInfo::Getter,
4582 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4583 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
4584 : false, /* isInfallible. False in setters. */
4585 : false, /* isMovable. Not relevant for setters. */
4586 : false, /* isEliminatable. Not relevant for setters. */
4587 : false, /* isAlwaysInSlot. Only relevant for getters. */
4588 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4589 : false, /* isTypedMethod. Only relevant for methods. */
4590 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4591 : };
4592 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4593 : static_assert(0 < 1, "There is no slot for us");
4594 : static const JSJitInfo onresize_setterinfo = {
4595 : { (JSJitGetterOp)set_onresize },
4596 : { prototypes::id::HTMLElement },
4597 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
4598 : JSJitInfo::Setter,
4599 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4600 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
4601 : false, /* isInfallible. False in setters. */
4602 : false, /* isMovable. Not relevant for setters. */
4603 : false, /* isEliminatable. Not relevant for setters. */
4604 : false, /* isAlwaysInSlot. Only relevant for getters. */
4605 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4606 : false, /* isTypedMethod. Only relevant for methods. */
4607 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4608 : };
4609 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4610 : static_assert(0 < 1, "There is no slot for us");
4611 :
4612 : static bool
4613 0 : get_onscroll(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
4614 : {
4615 0 : RefPtr<EventHandlerNonNull> result(self->GetOnscroll());
4616 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4617 0 : if (result) {
4618 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
4619 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
4620 0 : return false;
4621 : }
4622 0 : return true;
4623 : } else {
4624 0 : args.rval().setNull();
4625 0 : return true;
4626 : }
4627 : }
4628 :
4629 : static bool
4630 0 : set_onscroll(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitSetterCallArgs args)
4631 : {
4632 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
4633 0 : if (args[0].isObject()) {
4634 : { // scope for tempRoot
4635 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
4636 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
4637 : }
4638 : } else {
4639 0 : arg0 = nullptr;
4640 : }
4641 0 : self->SetOnscroll(Constify(arg0));
4642 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4643 :
4644 0 : return true;
4645 : }
4646 :
4647 : static const JSJitInfo onscroll_getterinfo = {
4648 : { (JSJitGetterOp)get_onscroll },
4649 : { prototypes::id::HTMLElement },
4650 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
4651 : JSJitInfo::Getter,
4652 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4653 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
4654 : false, /* isInfallible. False in setters. */
4655 : false, /* isMovable. Not relevant for setters. */
4656 : false, /* isEliminatable. Not relevant for setters. */
4657 : false, /* isAlwaysInSlot. Only relevant for getters. */
4658 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4659 : false, /* isTypedMethod. Only relevant for methods. */
4660 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4661 : };
4662 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4663 : static_assert(0 < 1, "There is no slot for us");
4664 : static const JSJitInfo onscroll_setterinfo = {
4665 : { (JSJitGetterOp)set_onscroll },
4666 : { prototypes::id::HTMLElement },
4667 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
4668 : JSJitInfo::Setter,
4669 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4670 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
4671 : false, /* isInfallible. False in setters. */
4672 : false, /* isMovable. Not relevant for setters. */
4673 : false, /* isEliminatable. Not relevant for setters. */
4674 : false, /* isAlwaysInSlot. Only relevant for getters. */
4675 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4676 : false, /* isTypedMethod. Only relevant for methods. */
4677 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4678 : };
4679 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4680 : static_assert(0 < 1, "There is no slot for us");
4681 :
4682 : static bool
4683 0 : get_onseeked(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
4684 : {
4685 0 : RefPtr<EventHandlerNonNull> result(self->GetOnseeked());
4686 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4687 0 : if (result) {
4688 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
4689 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
4690 0 : return false;
4691 : }
4692 0 : return true;
4693 : } else {
4694 0 : args.rval().setNull();
4695 0 : return true;
4696 : }
4697 : }
4698 :
4699 : static bool
4700 0 : set_onseeked(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitSetterCallArgs args)
4701 : {
4702 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
4703 0 : if (args[0].isObject()) {
4704 : { // scope for tempRoot
4705 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
4706 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
4707 : }
4708 : } else {
4709 0 : arg0 = nullptr;
4710 : }
4711 0 : self->SetOnseeked(Constify(arg0));
4712 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4713 :
4714 0 : return true;
4715 : }
4716 :
4717 : static const JSJitInfo onseeked_getterinfo = {
4718 : { (JSJitGetterOp)get_onseeked },
4719 : { prototypes::id::HTMLElement },
4720 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
4721 : JSJitInfo::Getter,
4722 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4723 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
4724 : false, /* isInfallible. False in setters. */
4725 : false, /* isMovable. Not relevant for setters. */
4726 : false, /* isEliminatable. Not relevant for setters. */
4727 : false, /* isAlwaysInSlot. Only relevant for getters. */
4728 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4729 : false, /* isTypedMethod. Only relevant for methods. */
4730 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4731 : };
4732 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4733 : static_assert(0 < 1, "There is no slot for us");
4734 : static const JSJitInfo onseeked_setterinfo = {
4735 : { (JSJitGetterOp)set_onseeked },
4736 : { prototypes::id::HTMLElement },
4737 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
4738 : JSJitInfo::Setter,
4739 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4740 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
4741 : false, /* isInfallible. False in setters. */
4742 : false, /* isMovable. Not relevant for setters. */
4743 : false, /* isEliminatable. Not relevant for setters. */
4744 : false, /* isAlwaysInSlot. Only relevant for getters. */
4745 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4746 : false, /* isTypedMethod. Only relevant for methods. */
4747 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4748 : };
4749 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4750 : static_assert(0 < 1, "There is no slot for us");
4751 :
4752 : static bool
4753 0 : get_onseeking(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
4754 : {
4755 0 : RefPtr<EventHandlerNonNull> result(self->GetOnseeking());
4756 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4757 0 : if (result) {
4758 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
4759 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
4760 0 : return false;
4761 : }
4762 0 : return true;
4763 : } else {
4764 0 : args.rval().setNull();
4765 0 : return true;
4766 : }
4767 : }
4768 :
4769 : static bool
4770 0 : set_onseeking(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitSetterCallArgs args)
4771 : {
4772 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
4773 0 : if (args[0].isObject()) {
4774 : { // scope for tempRoot
4775 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
4776 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
4777 : }
4778 : } else {
4779 0 : arg0 = nullptr;
4780 : }
4781 0 : self->SetOnseeking(Constify(arg0));
4782 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4783 :
4784 0 : return true;
4785 : }
4786 :
4787 : static const JSJitInfo onseeking_getterinfo = {
4788 : { (JSJitGetterOp)get_onseeking },
4789 : { prototypes::id::HTMLElement },
4790 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
4791 : JSJitInfo::Getter,
4792 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4793 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
4794 : false, /* isInfallible. False in setters. */
4795 : false, /* isMovable. Not relevant for setters. */
4796 : false, /* isEliminatable. Not relevant for setters. */
4797 : false, /* isAlwaysInSlot. Only relevant for getters. */
4798 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4799 : false, /* isTypedMethod. Only relevant for methods. */
4800 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4801 : };
4802 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4803 : static_assert(0 < 1, "There is no slot for us");
4804 : static const JSJitInfo onseeking_setterinfo = {
4805 : { (JSJitGetterOp)set_onseeking },
4806 : { prototypes::id::HTMLElement },
4807 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
4808 : JSJitInfo::Setter,
4809 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4810 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
4811 : false, /* isInfallible. False in setters. */
4812 : false, /* isMovable. Not relevant for setters. */
4813 : false, /* isEliminatable. Not relevant for setters. */
4814 : false, /* isAlwaysInSlot. Only relevant for getters. */
4815 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4816 : false, /* isTypedMethod. Only relevant for methods. */
4817 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4818 : };
4819 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4820 : static_assert(0 < 1, "There is no slot for us");
4821 :
4822 : static bool
4823 0 : get_onselect(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
4824 : {
4825 0 : RefPtr<EventHandlerNonNull> result(self->GetOnselect());
4826 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4827 0 : if (result) {
4828 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
4829 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
4830 0 : return false;
4831 : }
4832 0 : return true;
4833 : } else {
4834 0 : args.rval().setNull();
4835 0 : return true;
4836 : }
4837 : }
4838 :
4839 : static bool
4840 0 : set_onselect(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitSetterCallArgs args)
4841 : {
4842 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
4843 0 : if (args[0].isObject()) {
4844 : { // scope for tempRoot
4845 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
4846 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
4847 : }
4848 : } else {
4849 0 : arg0 = nullptr;
4850 : }
4851 0 : self->SetOnselect(Constify(arg0));
4852 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4853 :
4854 0 : return true;
4855 : }
4856 :
4857 : static const JSJitInfo onselect_getterinfo = {
4858 : { (JSJitGetterOp)get_onselect },
4859 : { prototypes::id::HTMLElement },
4860 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
4861 : JSJitInfo::Getter,
4862 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4863 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
4864 : false, /* isInfallible. False in setters. */
4865 : false, /* isMovable. Not relevant for setters. */
4866 : false, /* isEliminatable. Not relevant for setters. */
4867 : false, /* isAlwaysInSlot. Only relevant for getters. */
4868 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4869 : false, /* isTypedMethod. Only relevant for methods. */
4870 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4871 : };
4872 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4873 : static_assert(0 < 1, "There is no slot for us");
4874 : static const JSJitInfo onselect_setterinfo = {
4875 : { (JSJitGetterOp)set_onselect },
4876 : { prototypes::id::HTMLElement },
4877 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
4878 : JSJitInfo::Setter,
4879 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4880 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
4881 : false, /* isInfallible. False in setters. */
4882 : false, /* isMovable. Not relevant for setters. */
4883 : false, /* isEliminatable. Not relevant for setters. */
4884 : false, /* isAlwaysInSlot. Only relevant for getters. */
4885 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4886 : false, /* isTypedMethod. Only relevant for methods. */
4887 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4888 : };
4889 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4890 : static_assert(0 < 1, "There is no slot for us");
4891 :
4892 : static bool
4893 0 : get_onshow(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
4894 : {
4895 0 : RefPtr<EventHandlerNonNull> result(self->GetOnshow());
4896 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4897 0 : if (result) {
4898 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
4899 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
4900 0 : return false;
4901 : }
4902 0 : return true;
4903 : } else {
4904 0 : args.rval().setNull();
4905 0 : return true;
4906 : }
4907 : }
4908 :
4909 : static bool
4910 0 : set_onshow(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitSetterCallArgs args)
4911 : {
4912 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
4913 0 : if (args[0].isObject()) {
4914 : { // scope for tempRoot
4915 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
4916 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
4917 : }
4918 : } else {
4919 0 : arg0 = nullptr;
4920 : }
4921 0 : self->SetOnshow(Constify(arg0));
4922 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4923 :
4924 0 : return true;
4925 : }
4926 :
4927 : static const JSJitInfo onshow_getterinfo = {
4928 : { (JSJitGetterOp)get_onshow },
4929 : { prototypes::id::HTMLElement },
4930 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
4931 : JSJitInfo::Getter,
4932 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4933 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
4934 : false, /* isInfallible. False in setters. */
4935 : false, /* isMovable. Not relevant for setters. */
4936 : false, /* isEliminatable. Not relevant for setters. */
4937 : false, /* isAlwaysInSlot. Only relevant for getters. */
4938 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4939 : false, /* isTypedMethod. Only relevant for methods. */
4940 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4941 : };
4942 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4943 : static_assert(0 < 1, "There is no slot for us");
4944 : static const JSJitInfo onshow_setterinfo = {
4945 : { (JSJitGetterOp)set_onshow },
4946 : { prototypes::id::HTMLElement },
4947 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
4948 : JSJitInfo::Setter,
4949 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4950 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
4951 : false, /* isInfallible. False in setters. */
4952 : false, /* isMovable. Not relevant for setters. */
4953 : false, /* isEliminatable. Not relevant for setters. */
4954 : false, /* isAlwaysInSlot. Only relevant for getters. */
4955 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4956 : false, /* isTypedMethod. Only relevant for methods. */
4957 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4958 : };
4959 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4960 : static_assert(0 < 1, "There is no slot for us");
4961 :
4962 : static bool
4963 0 : get_onstalled(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
4964 : {
4965 0 : RefPtr<EventHandlerNonNull> result(self->GetOnstalled());
4966 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4967 0 : if (result) {
4968 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
4969 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
4970 0 : return false;
4971 : }
4972 0 : return true;
4973 : } else {
4974 0 : args.rval().setNull();
4975 0 : return true;
4976 : }
4977 : }
4978 :
4979 : static bool
4980 0 : set_onstalled(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitSetterCallArgs args)
4981 : {
4982 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
4983 0 : if (args[0].isObject()) {
4984 : { // scope for tempRoot
4985 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
4986 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
4987 : }
4988 : } else {
4989 0 : arg0 = nullptr;
4990 : }
4991 0 : self->SetOnstalled(Constify(arg0));
4992 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4993 :
4994 0 : return true;
4995 : }
4996 :
4997 : static const JSJitInfo onstalled_getterinfo = {
4998 : { (JSJitGetterOp)get_onstalled },
4999 : { prototypes::id::HTMLElement },
5000 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
5001 : JSJitInfo::Getter,
5002 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5003 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
5004 : false, /* isInfallible. False in setters. */
5005 : false, /* isMovable. Not relevant for setters. */
5006 : false, /* isEliminatable. Not relevant for setters. */
5007 : false, /* isAlwaysInSlot. Only relevant for getters. */
5008 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5009 : false, /* isTypedMethod. Only relevant for methods. */
5010 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5011 : };
5012 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5013 : static_assert(0 < 1, "There is no slot for us");
5014 : static const JSJitInfo onstalled_setterinfo = {
5015 : { (JSJitGetterOp)set_onstalled },
5016 : { prototypes::id::HTMLElement },
5017 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
5018 : JSJitInfo::Setter,
5019 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5020 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
5021 : false, /* isInfallible. False in setters. */
5022 : false, /* isMovable. Not relevant for setters. */
5023 : false, /* isEliminatable. Not relevant for setters. */
5024 : false, /* isAlwaysInSlot. Only relevant for getters. */
5025 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5026 : false, /* isTypedMethod. Only relevant for methods. */
5027 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5028 : };
5029 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5030 : static_assert(0 < 1, "There is no slot for us");
5031 :
5032 : static bool
5033 0 : get_onsubmit(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
5034 : {
5035 0 : RefPtr<EventHandlerNonNull> result(self->GetOnsubmit());
5036 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5037 0 : if (result) {
5038 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
5039 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
5040 0 : return false;
5041 : }
5042 0 : return true;
5043 : } else {
5044 0 : args.rval().setNull();
5045 0 : return true;
5046 : }
5047 : }
5048 :
5049 : static bool
5050 0 : set_onsubmit(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitSetterCallArgs args)
5051 : {
5052 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
5053 0 : if (args[0].isObject()) {
5054 : { // scope for tempRoot
5055 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
5056 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
5057 : }
5058 : } else {
5059 0 : arg0 = nullptr;
5060 : }
5061 0 : self->SetOnsubmit(Constify(arg0));
5062 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5063 :
5064 0 : return true;
5065 : }
5066 :
5067 : static const JSJitInfo onsubmit_getterinfo = {
5068 : { (JSJitGetterOp)get_onsubmit },
5069 : { prototypes::id::HTMLElement },
5070 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
5071 : JSJitInfo::Getter,
5072 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5073 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
5074 : false, /* isInfallible. False in setters. */
5075 : false, /* isMovable. Not relevant for setters. */
5076 : false, /* isEliminatable. Not relevant for setters. */
5077 : false, /* isAlwaysInSlot. Only relevant for getters. */
5078 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5079 : false, /* isTypedMethod. Only relevant for methods. */
5080 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5081 : };
5082 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5083 : static_assert(0 < 1, "There is no slot for us");
5084 : static const JSJitInfo onsubmit_setterinfo = {
5085 : { (JSJitGetterOp)set_onsubmit },
5086 : { prototypes::id::HTMLElement },
5087 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
5088 : JSJitInfo::Setter,
5089 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5090 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
5091 : false, /* isInfallible. False in setters. */
5092 : false, /* isMovable. Not relevant for setters. */
5093 : false, /* isEliminatable. Not relevant for setters. */
5094 : false, /* isAlwaysInSlot. Only relevant for getters. */
5095 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5096 : false, /* isTypedMethod. Only relevant for methods. */
5097 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5098 : };
5099 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5100 : static_assert(0 < 1, "There is no slot for us");
5101 :
5102 : static bool
5103 0 : get_onsuspend(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
5104 : {
5105 0 : RefPtr<EventHandlerNonNull> result(self->GetOnsuspend());
5106 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5107 0 : if (result) {
5108 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
5109 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
5110 0 : return false;
5111 : }
5112 0 : return true;
5113 : } else {
5114 0 : args.rval().setNull();
5115 0 : return true;
5116 : }
5117 : }
5118 :
5119 : static bool
5120 0 : set_onsuspend(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitSetterCallArgs args)
5121 : {
5122 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
5123 0 : if (args[0].isObject()) {
5124 : { // scope for tempRoot
5125 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
5126 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
5127 : }
5128 : } else {
5129 0 : arg0 = nullptr;
5130 : }
5131 0 : self->SetOnsuspend(Constify(arg0));
5132 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5133 :
5134 0 : return true;
5135 : }
5136 :
5137 : static const JSJitInfo onsuspend_getterinfo = {
5138 : { (JSJitGetterOp)get_onsuspend },
5139 : { prototypes::id::HTMLElement },
5140 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
5141 : JSJitInfo::Getter,
5142 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5143 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
5144 : false, /* isInfallible. False in setters. */
5145 : false, /* isMovable. Not relevant for setters. */
5146 : false, /* isEliminatable. Not relevant for setters. */
5147 : false, /* isAlwaysInSlot. Only relevant for getters. */
5148 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5149 : false, /* isTypedMethod. Only relevant for methods. */
5150 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5151 : };
5152 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5153 : static_assert(0 < 1, "There is no slot for us");
5154 : static const JSJitInfo onsuspend_setterinfo = {
5155 : { (JSJitGetterOp)set_onsuspend },
5156 : { prototypes::id::HTMLElement },
5157 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
5158 : JSJitInfo::Setter,
5159 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5160 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
5161 : false, /* isInfallible. False in setters. */
5162 : false, /* isMovable. Not relevant for setters. */
5163 : false, /* isEliminatable. Not relevant for setters. */
5164 : false, /* isAlwaysInSlot. Only relevant for getters. */
5165 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5166 : false, /* isTypedMethod. Only relevant for methods. */
5167 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5168 : };
5169 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5170 : static_assert(0 < 1, "There is no slot for us");
5171 :
5172 : static bool
5173 0 : get_ontimeupdate(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
5174 : {
5175 0 : RefPtr<EventHandlerNonNull> result(self->GetOntimeupdate());
5176 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5177 0 : if (result) {
5178 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
5179 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
5180 0 : return false;
5181 : }
5182 0 : return true;
5183 : } else {
5184 0 : args.rval().setNull();
5185 0 : return true;
5186 : }
5187 : }
5188 :
5189 : static bool
5190 0 : set_ontimeupdate(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitSetterCallArgs args)
5191 : {
5192 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
5193 0 : if (args[0].isObject()) {
5194 : { // scope for tempRoot
5195 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
5196 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
5197 : }
5198 : } else {
5199 0 : arg0 = nullptr;
5200 : }
5201 0 : self->SetOntimeupdate(Constify(arg0));
5202 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5203 :
5204 0 : return true;
5205 : }
5206 :
5207 : static const JSJitInfo ontimeupdate_getterinfo = {
5208 : { (JSJitGetterOp)get_ontimeupdate },
5209 : { prototypes::id::HTMLElement },
5210 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
5211 : JSJitInfo::Getter,
5212 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5213 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
5214 : false, /* isInfallible. False in setters. */
5215 : false, /* isMovable. Not relevant for setters. */
5216 : false, /* isEliminatable. Not relevant for setters. */
5217 : false, /* isAlwaysInSlot. Only relevant for getters. */
5218 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5219 : false, /* isTypedMethod. Only relevant for methods. */
5220 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5221 : };
5222 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5223 : static_assert(0 < 1, "There is no slot for us");
5224 : static const JSJitInfo ontimeupdate_setterinfo = {
5225 : { (JSJitGetterOp)set_ontimeupdate },
5226 : { prototypes::id::HTMLElement },
5227 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
5228 : JSJitInfo::Setter,
5229 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5230 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
5231 : false, /* isInfallible. False in setters. */
5232 : false, /* isMovable. Not relevant for setters. */
5233 : false, /* isEliminatable. Not relevant for setters. */
5234 : false, /* isAlwaysInSlot. Only relevant for getters. */
5235 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5236 : false, /* isTypedMethod. Only relevant for methods. */
5237 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5238 : };
5239 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5240 : static_assert(0 < 1, "There is no slot for us");
5241 :
5242 : static bool
5243 0 : get_onvolumechange(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
5244 : {
5245 0 : RefPtr<EventHandlerNonNull> result(self->GetOnvolumechange());
5246 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5247 0 : if (result) {
5248 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
5249 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
5250 0 : return false;
5251 : }
5252 0 : return true;
5253 : } else {
5254 0 : args.rval().setNull();
5255 0 : return true;
5256 : }
5257 : }
5258 :
5259 : static bool
5260 0 : set_onvolumechange(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitSetterCallArgs args)
5261 : {
5262 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
5263 0 : if (args[0].isObject()) {
5264 : { // scope for tempRoot
5265 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
5266 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
5267 : }
5268 : } else {
5269 0 : arg0 = nullptr;
5270 : }
5271 0 : self->SetOnvolumechange(Constify(arg0));
5272 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5273 :
5274 0 : return true;
5275 : }
5276 :
5277 : static const JSJitInfo onvolumechange_getterinfo = {
5278 : { (JSJitGetterOp)get_onvolumechange },
5279 : { prototypes::id::HTMLElement },
5280 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
5281 : JSJitInfo::Getter,
5282 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5283 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
5284 : false, /* isInfallible. False in setters. */
5285 : false, /* isMovable. Not relevant for setters. */
5286 : false, /* isEliminatable. Not relevant for setters. */
5287 : false, /* isAlwaysInSlot. Only relevant for getters. */
5288 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5289 : false, /* isTypedMethod. Only relevant for methods. */
5290 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5291 : };
5292 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5293 : static_assert(0 < 1, "There is no slot for us");
5294 : static const JSJitInfo onvolumechange_setterinfo = {
5295 : { (JSJitGetterOp)set_onvolumechange },
5296 : { prototypes::id::HTMLElement },
5297 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
5298 : JSJitInfo::Setter,
5299 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5300 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
5301 : false, /* isInfallible. False in setters. */
5302 : false, /* isMovable. Not relevant for setters. */
5303 : false, /* isEliminatable. Not relevant for setters. */
5304 : false, /* isAlwaysInSlot. Only relevant for getters. */
5305 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5306 : false, /* isTypedMethod. Only relevant for methods. */
5307 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5308 : };
5309 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5310 : static_assert(0 < 1, "There is no slot for us");
5311 :
5312 : static bool
5313 0 : get_onwaiting(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
5314 : {
5315 0 : RefPtr<EventHandlerNonNull> result(self->GetOnwaiting());
5316 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5317 0 : if (result) {
5318 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
5319 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
5320 0 : return false;
5321 : }
5322 0 : return true;
5323 : } else {
5324 0 : args.rval().setNull();
5325 0 : return true;
5326 : }
5327 : }
5328 :
5329 : static bool
5330 0 : set_onwaiting(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitSetterCallArgs args)
5331 : {
5332 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
5333 0 : if (args[0].isObject()) {
5334 : { // scope for tempRoot
5335 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
5336 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
5337 : }
5338 : } else {
5339 0 : arg0 = nullptr;
5340 : }
5341 0 : self->SetOnwaiting(Constify(arg0));
5342 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5343 :
5344 0 : return true;
5345 : }
5346 :
5347 : static const JSJitInfo onwaiting_getterinfo = {
5348 : { (JSJitGetterOp)get_onwaiting },
5349 : { prototypes::id::HTMLElement },
5350 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
5351 : JSJitInfo::Getter,
5352 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5353 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
5354 : false, /* isInfallible. False in setters. */
5355 : false, /* isMovable. Not relevant for setters. */
5356 : false, /* isEliminatable. Not relevant for setters. */
5357 : false, /* isAlwaysInSlot. Only relevant for getters. */
5358 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5359 : false, /* isTypedMethod. Only relevant for methods. */
5360 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5361 : };
5362 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5363 : static_assert(0 < 1, "There is no slot for us");
5364 : static const JSJitInfo onwaiting_setterinfo = {
5365 : { (JSJitGetterOp)set_onwaiting },
5366 : { prototypes::id::HTMLElement },
5367 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
5368 : JSJitInfo::Setter,
5369 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5370 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
5371 : false, /* isInfallible. False in setters. */
5372 : false, /* isMovable. Not relevant for setters. */
5373 : false, /* isEliminatable. Not relevant for setters. */
5374 : false, /* isAlwaysInSlot. Only relevant for getters. */
5375 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5376 : false, /* isTypedMethod. Only relevant for methods. */
5377 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5378 : };
5379 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5380 : static_assert(0 < 1, "There is no slot for us");
5381 :
5382 : static bool
5383 0 : get_onselectstart(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
5384 : {
5385 0 : RefPtr<EventHandlerNonNull> result(self->GetOnselectstart());
5386 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5387 0 : if (result) {
5388 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
5389 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
5390 0 : return false;
5391 : }
5392 0 : return true;
5393 : } else {
5394 0 : args.rval().setNull();
5395 0 : return true;
5396 : }
5397 : }
5398 :
5399 : static bool
5400 0 : set_onselectstart(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitSetterCallArgs args)
5401 : {
5402 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
5403 0 : if (args[0].isObject()) {
5404 : { // scope for tempRoot
5405 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
5406 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
5407 : }
5408 : } else {
5409 0 : arg0 = nullptr;
5410 : }
5411 0 : self->SetOnselectstart(Constify(arg0));
5412 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5413 :
5414 0 : return true;
5415 : }
5416 :
5417 : static const JSJitInfo onselectstart_getterinfo = {
5418 : { (JSJitGetterOp)get_onselectstart },
5419 : { prototypes::id::HTMLElement },
5420 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
5421 : JSJitInfo::Getter,
5422 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5423 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
5424 : false, /* isInfallible. False in setters. */
5425 : false, /* isMovable. Not relevant for setters. */
5426 : false, /* isEliminatable. Not relevant for setters. */
5427 : false, /* isAlwaysInSlot. Only relevant for getters. */
5428 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5429 : false, /* isTypedMethod. Only relevant for methods. */
5430 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5431 : };
5432 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5433 : static_assert(0 < 1, "There is no slot for us");
5434 : static const JSJitInfo onselectstart_setterinfo = {
5435 : { (JSJitGetterOp)set_onselectstart },
5436 : { prototypes::id::HTMLElement },
5437 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
5438 : JSJitInfo::Setter,
5439 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5440 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
5441 : false, /* isInfallible. False in setters. */
5442 : false, /* isMovable. Not relevant for setters. */
5443 : false, /* isEliminatable. Not relevant for setters. */
5444 : false, /* isAlwaysInSlot. Only relevant for getters. */
5445 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5446 : false, /* isTypedMethod. Only relevant for methods. */
5447 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5448 : };
5449 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5450 : static_assert(0 < 1, "There is no slot for us");
5451 :
5452 : static bool
5453 0 : get_ontoggle(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
5454 : {
5455 0 : RefPtr<EventHandlerNonNull> result(self->GetOntoggle());
5456 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5457 0 : if (result) {
5458 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
5459 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
5460 0 : return false;
5461 : }
5462 0 : return true;
5463 : } else {
5464 0 : args.rval().setNull();
5465 0 : return true;
5466 : }
5467 : }
5468 :
5469 : static bool
5470 0 : set_ontoggle(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitSetterCallArgs args)
5471 : {
5472 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
5473 0 : if (args[0].isObject()) {
5474 : { // scope for tempRoot
5475 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
5476 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
5477 : }
5478 : } else {
5479 0 : arg0 = nullptr;
5480 : }
5481 0 : self->SetOntoggle(Constify(arg0));
5482 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5483 :
5484 0 : return true;
5485 : }
5486 :
5487 : static const JSJitInfo ontoggle_getterinfo = {
5488 : { (JSJitGetterOp)get_ontoggle },
5489 : { prototypes::id::HTMLElement },
5490 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
5491 : JSJitInfo::Getter,
5492 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5493 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
5494 : false, /* isInfallible. False in setters. */
5495 : false, /* isMovable. Not relevant for setters. */
5496 : false, /* isEliminatable. Not relevant for setters. */
5497 : false, /* isAlwaysInSlot. Only relevant for getters. */
5498 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5499 : false, /* isTypedMethod. Only relevant for methods. */
5500 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5501 : };
5502 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5503 : static_assert(0 < 1, "There is no slot for us");
5504 : static const JSJitInfo ontoggle_setterinfo = {
5505 : { (JSJitGetterOp)set_ontoggle },
5506 : { prototypes::id::HTMLElement },
5507 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
5508 : JSJitInfo::Setter,
5509 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5510 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
5511 : false, /* isInfallible. False in setters. */
5512 : false, /* isMovable. Not relevant for setters. */
5513 : false, /* isEliminatable. Not relevant for setters. */
5514 : false, /* isAlwaysInSlot. Only relevant for getters. */
5515 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5516 : false, /* isTypedMethod. Only relevant for methods. */
5517 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5518 : };
5519 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5520 : static_assert(0 < 1, "There is no slot for us");
5521 :
5522 : static bool
5523 0 : get_onpointercancel(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
5524 : {
5525 0 : RefPtr<EventHandlerNonNull> result(self->GetOnpointercancel());
5526 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5527 0 : if (result) {
5528 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
5529 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
5530 0 : return false;
5531 : }
5532 0 : return true;
5533 : } else {
5534 0 : args.rval().setNull();
5535 0 : return true;
5536 : }
5537 : }
5538 :
5539 : static bool
5540 0 : set_onpointercancel(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitSetterCallArgs args)
5541 : {
5542 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
5543 0 : if (args[0].isObject()) {
5544 : { // scope for tempRoot
5545 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
5546 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
5547 : }
5548 : } else {
5549 0 : arg0 = nullptr;
5550 : }
5551 0 : self->SetOnpointercancel(Constify(arg0));
5552 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5553 :
5554 0 : return true;
5555 : }
5556 :
5557 : static const JSJitInfo onpointercancel_getterinfo = {
5558 : { (JSJitGetterOp)get_onpointercancel },
5559 : { prototypes::id::HTMLElement },
5560 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
5561 : JSJitInfo::Getter,
5562 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5563 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
5564 : false, /* isInfallible. False in setters. */
5565 : false, /* isMovable. Not relevant for setters. */
5566 : false, /* isEliminatable. Not relevant for setters. */
5567 : false, /* isAlwaysInSlot. Only relevant for getters. */
5568 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5569 : false, /* isTypedMethod. Only relevant for methods. */
5570 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5571 : };
5572 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5573 : static_assert(0 < 1, "There is no slot for us");
5574 : static const JSJitInfo onpointercancel_setterinfo = {
5575 : { (JSJitGetterOp)set_onpointercancel },
5576 : { prototypes::id::HTMLElement },
5577 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
5578 : JSJitInfo::Setter,
5579 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5580 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
5581 : false, /* isInfallible. False in setters. */
5582 : false, /* isMovable. Not relevant for setters. */
5583 : false, /* isEliminatable. Not relevant for setters. */
5584 : false, /* isAlwaysInSlot. Only relevant for getters. */
5585 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5586 : false, /* isTypedMethod. Only relevant for methods. */
5587 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5588 : };
5589 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5590 : static_assert(0 < 1, "There is no slot for us");
5591 :
5592 : static bool
5593 0 : get_onpointerdown(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
5594 : {
5595 0 : RefPtr<EventHandlerNonNull> result(self->GetOnpointerdown());
5596 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5597 0 : if (result) {
5598 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
5599 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
5600 0 : return false;
5601 : }
5602 0 : return true;
5603 : } else {
5604 0 : args.rval().setNull();
5605 0 : return true;
5606 : }
5607 : }
5608 :
5609 : static bool
5610 0 : set_onpointerdown(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitSetterCallArgs args)
5611 : {
5612 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
5613 0 : if (args[0].isObject()) {
5614 : { // scope for tempRoot
5615 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
5616 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
5617 : }
5618 : } else {
5619 0 : arg0 = nullptr;
5620 : }
5621 0 : self->SetOnpointerdown(Constify(arg0));
5622 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5623 :
5624 0 : return true;
5625 : }
5626 :
5627 : static const JSJitInfo onpointerdown_getterinfo = {
5628 : { (JSJitGetterOp)get_onpointerdown },
5629 : { prototypes::id::HTMLElement },
5630 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
5631 : JSJitInfo::Getter,
5632 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5633 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
5634 : false, /* isInfallible. False in setters. */
5635 : false, /* isMovable. Not relevant for setters. */
5636 : false, /* isEliminatable. Not relevant for setters. */
5637 : false, /* isAlwaysInSlot. Only relevant for getters. */
5638 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5639 : false, /* isTypedMethod. Only relevant for methods. */
5640 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5641 : };
5642 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5643 : static_assert(0 < 1, "There is no slot for us");
5644 : static const JSJitInfo onpointerdown_setterinfo = {
5645 : { (JSJitGetterOp)set_onpointerdown },
5646 : { prototypes::id::HTMLElement },
5647 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
5648 : JSJitInfo::Setter,
5649 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5650 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
5651 : false, /* isInfallible. False in setters. */
5652 : false, /* isMovable. Not relevant for setters. */
5653 : false, /* isEliminatable. Not relevant for setters. */
5654 : false, /* isAlwaysInSlot. Only relevant for getters. */
5655 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5656 : false, /* isTypedMethod. Only relevant for methods. */
5657 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5658 : };
5659 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5660 : static_assert(0 < 1, "There is no slot for us");
5661 :
5662 : static bool
5663 0 : get_onpointerup(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
5664 : {
5665 0 : RefPtr<EventHandlerNonNull> result(self->GetOnpointerup());
5666 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5667 0 : if (result) {
5668 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
5669 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
5670 0 : return false;
5671 : }
5672 0 : return true;
5673 : } else {
5674 0 : args.rval().setNull();
5675 0 : return true;
5676 : }
5677 : }
5678 :
5679 : static bool
5680 0 : set_onpointerup(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitSetterCallArgs args)
5681 : {
5682 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
5683 0 : if (args[0].isObject()) {
5684 : { // scope for tempRoot
5685 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
5686 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
5687 : }
5688 : } else {
5689 0 : arg0 = nullptr;
5690 : }
5691 0 : self->SetOnpointerup(Constify(arg0));
5692 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5693 :
5694 0 : return true;
5695 : }
5696 :
5697 : static const JSJitInfo onpointerup_getterinfo = {
5698 : { (JSJitGetterOp)get_onpointerup },
5699 : { prototypes::id::HTMLElement },
5700 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
5701 : JSJitInfo::Getter,
5702 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5703 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
5704 : false, /* isInfallible. False in setters. */
5705 : false, /* isMovable. Not relevant for setters. */
5706 : false, /* isEliminatable. Not relevant for setters. */
5707 : false, /* isAlwaysInSlot. Only relevant for getters. */
5708 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5709 : false, /* isTypedMethod. Only relevant for methods. */
5710 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5711 : };
5712 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5713 : static_assert(0 < 1, "There is no slot for us");
5714 : static const JSJitInfo onpointerup_setterinfo = {
5715 : { (JSJitGetterOp)set_onpointerup },
5716 : { prototypes::id::HTMLElement },
5717 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
5718 : JSJitInfo::Setter,
5719 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5720 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
5721 : false, /* isInfallible. False in setters. */
5722 : false, /* isMovable. Not relevant for setters. */
5723 : false, /* isEliminatable. Not relevant for setters. */
5724 : false, /* isAlwaysInSlot. Only relevant for getters. */
5725 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5726 : false, /* isTypedMethod. Only relevant for methods. */
5727 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5728 : };
5729 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5730 : static_assert(0 < 1, "There is no slot for us");
5731 :
5732 : static bool
5733 0 : get_onpointermove(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
5734 : {
5735 0 : RefPtr<EventHandlerNonNull> result(self->GetOnpointermove());
5736 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5737 0 : if (result) {
5738 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
5739 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
5740 0 : return false;
5741 : }
5742 0 : return true;
5743 : } else {
5744 0 : args.rval().setNull();
5745 0 : return true;
5746 : }
5747 : }
5748 :
5749 : static bool
5750 0 : set_onpointermove(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitSetterCallArgs args)
5751 : {
5752 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
5753 0 : if (args[0].isObject()) {
5754 : { // scope for tempRoot
5755 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
5756 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
5757 : }
5758 : } else {
5759 0 : arg0 = nullptr;
5760 : }
5761 0 : self->SetOnpointermove(Constify(arg0));
5762 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5763 :
5764 0 : return true;
5765 : }
5766 :
5767 : static const JSJitInfo onpointermove_getterinfo = {
5768 : { (JSJitGetterOp)get_onpointermove },
5769 : { prototypes::id::HTMLElement },
5770 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
5771 : JSJitInfo::Getter,
5772 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5773 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
5774 : false, /* isInfallible. False in setters. */
5775 : false, /* isMovable. Not relevant for setters. */
5776 : false, /* isEliminatable. Not relevant for setters. */
5777 : false, /* isAlwaysInSlot. Only relevant for getters. */
5778 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5779 : false, /* isTypedMethod. Only relevant for methods. */
5780 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5781 : };
5782 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5783 : static_assert(0 < 1, "There is no slot for us");
5784 : static const JSJitInfo onpointermove_setterinfo = {
5785 : { (JSJitGetterOp)set_onpointermove },
5786 : { prototypes::id::HTMLElement },
5787 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
5788 : JSJitInfo::Setter,
5789 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5790 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
5791 : false, /* isInfallible. False in setters. */
5792 : false, /* isMovable. Not relevant for setters. */
5793 : false, /* isEliminatable. Not relevant for setters. */
5794 : false, /* isAlwaysInSlot. Only relevant for getters. */
5795 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5796 : false, /* isTypedMethod. Only relevant for methods. */
5797 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5798 : };
5799 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5800 : static_assert(0 < 1, "There is no slot for us");
5801 :
5802 : static bool
5803 0 : get_onpointerout(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
5804 : {
5805 0 : RefPtr<EventHandlerNonNull> result(self->GetOnpointerout());
5806 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5807 0 : if (result) {
5808 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
5809 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
5810 0 : return false;
5811 : }
5812 0 : return true;
5813 : } else {
5814 0 : args.rval().setNull();
5815 0 : return true;
5816 : }
5817 : }
5818 :
5819 : static bool
5820 0 : set_onpointerout(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitSetterCallArgs args)
5821 : {
5822 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
5823 0 : if (args[0].isObject()) {
5824 : { // scope for tempRoot
5825 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
5826 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
5827 : }
5828 : } else {
5829 0 : arg0 = nullptr;
5830 : }
5831 0 : self->SetOnpointerout(Constify(arg0));
5832 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5833 :
5834 0 : return true;
5835 : }
5836 :
5837 : static const JSJitInfo onpointerout_getterinfo = {
5838 : { (JSJitGetterOp)get_onpointerout },
5839 : { prototypes::id::HTMLElement },
5840 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
5841 : JSJitInfo::Getter,
5842 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5843 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
5844 : false, /* isInfallible. False in setters. */
5845 : false, /* isMovable. Not relevant for setters. */
5846 : false, /* isEliminatable. Not relevant for setters. */
5847 : false, /* isAlwaysInSlot. Only relevant for getters. */
5848 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5849 : false, /* isTypedMethod. Only relevant for methods. */
5850 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5851 : };
5852 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5853 : static_assert(0 < 1, "There is no slot for us");
5854 : static const JSJitInfo onpointerout_setterinfo = {
5855 : { (JSJitGetterOp)set_onpointerout },
5856 : { prototypes::id::HTMLElement },
5857 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
5858 : JSJitInfo::Setter,
5859 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5860 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
5861 : false, /* isInfallible. False in setters. */
5862 : false, /* isMovable. Not relevant for setters. */
5863 : false, /* isEliminatable. Not relevant for setters. */
5864 : false, /* isAlwaysInSlot. Only relevant for getters. */
5865 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5866 : false, /* isTypedMethod. Only relevant for methods. */
5867 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5868 : };
5869 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5870 : static_assert(0 < 1, "There is no slot for us");
5871 :
5872 : static bool
5873 0 : get_onpointerover(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
5874 : {
5875 0 : RefPtr<EventHandlerNonNull> result(self->GetOnpointerover());
5876 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5877 0 : if (result) {
5878 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
5879 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
5880 0 : return false;
5881 : }
5882 0 : return true;
5883 : } else {
5884 0 : args.rval().setNull();
5885 0 : return true;
5886 : }
5887 : }
5888 :
5889 : static bool
5890 0 : set_onpointerover(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitSetterCallArgs args)
5891 : {
5892 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
5893 0 : if (args[0].isObject()) {
5894 : { // scope for tempRoot
5895 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
5896 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
5897 : }
5898 : } else {
5899 0 : arg0 = nullptr;
5900 : }
5901 0 : self->SetOnpointerover(Constify(arg0));
5902 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5903 :
5904 0 : return true;
5905 : }
5906 :
5907 : static const JSJitInfo onpointerover_getterinfo = {
5908 : { (JSJitGetterOp)get_onpointerover },
5909 : { prototypes::id::HTMLElement },
5910 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
5911 : JSJitInfo::Getter,
5912 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5913 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
5914 : false, /* isInfallible. False in setters. */
5915 : false, /* isMovable. Not relevant for setters. */
5916 : false, /* isEliminatable. Not relevant for setters. */
5917 : false, /* isAlwaysInSlot. Only relevant for getters. */
5918 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5919 : false, /* isTypedMethod. Only relevant for methods. */
5920 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5921 : };
5922 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5923 : static_assert(0 < 1, "There is no slot for us");
5924 : static const JSJitInfo onpointerover_setterinfo = {
5925 : { (JSJitGetterOp)set_onpointerover },
5926 : { prototypes::id::HTMLElement },
5927 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
5928 : JSJitInfo::Setter,
5929 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5930 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
5931 : false, /* isInfallible. False in setters. */
5932 : false, /* isMovable. Not relevant for setters. */
5933 : false, /* isEliminatable. Not relevant for setters. */
5934 : false, /* isAlwaysInSlot. Only relevant for getters. */
5935 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5936 : false, /* isTypedMethod. Only relevant for methods. */
5937 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5938 : };
5939 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5940 : static_assert(0 < 1, "There is no slot for us");
5941 :
5942 : static bool
5943 0 : get_onpointerenter(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
5944 : {
5945 0 : RefPtr<EventHandlerNonNull> result(self->GetOnpointerenter());
5946 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5947 0 : if (result) {
5948 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
5949 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
5950 0 : return false;
5951 : }
5952 0 : return true;
5953 : } else {
5954 0 : args.rval().setNull();
5955 0 : return true;
5956 : }
5957 : }
5958 :
5959 : static bool
5960 0 : set_onpointerenter(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitSetterCallArgs args)
5961 : {
5962 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
5963 0 : if (args[0].isObject()) {
5964 : { // scope for tempRoot
5965 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
5966 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
5967 : }
5968 : } else {
5969 0 : arg0 = nullptr;
5970 : }
5971 0 : self->SetOnpointerenter(Constify(arg0));
5972 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5973 :
5974 0 : return true;
5975 : }
5976 :
5977 : static const JSJitInfo onpointerenter_getterinfo = {
5978 : { (JSJitGetterOp)get_onpointerenter },
5979 : { prototypes::id::HTMLElement },
5980 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
5981 : JSJitInfo::Getter,
5982 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5983 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
5984 : false, /* isInfallible. False in setters. */
5985 : false, /* isMovable. Not relevant for setters. */
5986 : false, /* isEliminatable. Not relevant for setters. */
5987 : false, /* isAlwaysInSlot. Only relevant for getters. */
5988 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5989 : false, /* isTypedMethod. Only relevant for methods. */
5990 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5991 : };
5992 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5993 : static_assert(0 < 1, "There is no slot for us");
5994 : static const JSJitInfo onpointerenter_setterinfo = {
5995 : { (JSJitGetterOp)set_onpointerenter },
5996 : { prototypes::id::HTMLElement },
5997 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
5998 : JSJitInfo::Setter,
5999 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6000 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
6001 : false, /* isInfallible. False in setters. */
6002 : false, /* isMovable. Not relevant for setters. */
6003 : false, /* isEliminatable. Not relevant for setters. */
6004 : false, /* isAlwaysInSlot. Only relevant for getters. */
6005 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6006 : false, /* isTypedMethod. Only relevant for methods. */
6007 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6008 : };
6009 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6010 : static_assert(0 < 1, "There is no slot for us");
6011 :
6012 : static bool
6013 0 : get_onpointerleave(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
6014 : {
6015 0 : RefPtr<EventHandlerNonNull> result(self->GetOnpointerleave());
6016 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6017 0 : if (result) {
6018 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
6019 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
6020 0 : return false;
6021 : }
6022 0 : return true;
6023 : } else {
6024 0 : args.rval().setNull();
6025 0 : return true;
6026 : }
6027 : }
6028 :
6029 : static bool
6030 0 : set_onpointerleave(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitSetterCallArgs args)
6031 : {
6032 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
6033 0 : if (args[0].isObject()) {
6034 : { // scope for tempRoot
6035 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
6036 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
6037 : }
6038 : } else {
6039 0 : arg0 = nullptr;
6040 : }
6041 0 : self->SetOnpointerleave(Constify(arg0));
6042 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6043 :
6044 0 : return true;
6045 : }
6046 :
6047 : static const JSJitInfo onpointerleave_getterinfo = {
6048 : { (JSJitGetterOp)get_onpointerleave },
6049 : { prototypes::id::HTMLElement },
6050 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
6051 : JSJitInfo::Getter,
6052 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6053 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
6054 : false, /* isInfallible. False in setters. */
6055 : false, /* isMovable. Not relevant for setters. */
6056 : false, /* isEliminatable. Not relevant for setters. */
6057 : false, /* isAlwaysInSlot. Only relevant for getters. */
6058 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6059 : false, /* isTypedMethod. Only relevant for methods. */
6060 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6061 : };
6062 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6063 : static_assert(0 < 1, "There is no slot for us");
6064 : static const JSJitInfo onpointerleave_setterinfo = {
6065 : { (JSJitGetterOp)set_onpointerleave },
6066 : { prototypes::id::HTMLElement },
6067 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
6068 : JSJitInfo::Setter,
6069 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6070 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
6071 : false, /* isInfallible. False in setters. */
6072 : false, /* isMovable. Not relevant for setters. */
6073 : false, /* isEliminatable. Not relevant for setters. */
6074 : false, /* isAlwaysInSlot. Only relevant for getters. */
6075 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6076 : false, /* isTypedMethod. Only relevant for methods. */
6077 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6078 : };
6079 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6080 : static_assert(0 < 1, "There is no slot for us");
6081 :
6082 : static bool
6083 0 : get_ongotpointercapture(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
6084 : {
6085 0 : RefPtr<EventHandlerNonNull> result(self->GetOngotpointercapture());
6086 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6087 0 : if (result) {
6088 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
6089 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
6090 0 : return false;
6091 : }
6092 0 : return true;
6093 : } else {
6094 0 : args.rval().setNull();
6095 0 : return true;
6096 : }
6097 : }
6098 :
6099 : static bool
6100 0 : set_ongotpointercapture(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitSetterCallArgs args)
6101 : {
6102 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
6103 0 : if (args[0].isObject()) {
6104 : { // scope for tempRoot
6105 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
6106 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
6107 : }
6108 : } else {
6109 0 : arg0 = nullptr;
6110 : }
6111 0 : self->SetOngotpointercapture(Constify(arg0));
6112 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6113 :
6114 0 : return true;
6115 : }
6116 :
6117 : static const JSJitInfo ongotpointercapture_getterinfo = {
6118 : { (JSJitGetterOp)get_ongotpointercapture },
6119 : { prototypes::id::HTMLElement },
6120 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
6121 : JSJitInfo::Getter,
6122 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6123 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
6124 : false, /* isInfallible. False in setters. */
6125 : false, /* isMovable. Not relevant for setters. */
6126 : false, /* isEliminatable. Not relevant for setters. */
6127 : false, /* isAlwaysInSlot. Only relevant for getters. */
6128 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6129 : false, /* isTypedMethod. Only relevant for methods. */
6130 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6131 : };
6132 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6133 : static_assert(0 < 1, "There is no slot for us");
6134 : static const JSJitInfo ongotpointercapture_setterinfo = {
6135 : { (JSJitGetterOp)set_ongotpointercapture },
6136 : { prototypes::id::HTMLElement },
6137 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
6138 : JSJitInfo::Setter,
6139 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6140 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
6141 : false, /* isInfallible. False in setters. */
6142 : false, /* isMovable. Not relevant for setters. */
6143 : false, /* isEliminatable. Not relevant for setters. */
6144 : false, /* isAlwaysInSlot. Only relevant for getters. */
6145 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6146 : false, /* isTypedMethod. Only relevant for methods. */
6147 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6148 : };
6149 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6150 : static_assert(0 < 1, "There is no slot for us");
6151 :
6152 : static bool
6153 0 : get_onlostpointercapture(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
6154 : {
6155 0 : RefPtr<EventHandlerNonNull> result(self->GetOnlostpointercapture());
6156 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6157 0 : if (result) {
6158 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
6159 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
6160 0 : return false;
6161 : }
6162 0 : return true;
6163 : } else {
6164 0 : args.rval().setNull();
6165 0 : return true;
6166 : }
6167 : }
6168 :
6169 : static bool
6170 0 : set_onlostpointercapture(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitSetterCallArgs args)
6171 : {
6172 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
6173 0 : if (args[0].isObject()) {
6174 : { // scope for tempRoot
6175 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
6176 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
6177 : }
6178 : } else {
6179 0 : arg0 = nullptr;
6180 : }
6181 0 : self->SetOnlostpointercapture(Constify(arg0));
6182 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6183 :
6184 0 : return true;
6185 : }
6186 :
6187 : static const JSJitInfo onlostpointercapture_getterinfo = {
6188 : { (JSJitGetterOp)get_onlostpointercapture },
6189 : { prototypes::id::HTMLElement },
6190 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
6191 : JSJitInfo::Getter,
6192 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6193 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
6194 : false, /* isInfallible. False in setters. */
6195 : false, /* isMovable. Not relevant for setters. */
6196 : false, /* isEliminatable. Not relevant for setters. */
6197 : false, /* isAlwaysInSlot. Only relevant for getters. */
6198 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6199 : false, /* isTypedMethod. Only relevant for methods. */
6200 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6201 : };
6202 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6203 : static_assert(0 < 1, "There is no slot for us");
6204 : static const JSJitInfo onlostpointercapture_setterinfo = {
6205 : { (JSJitGetterOp)set_onlostpointercapture },
6206 : { prototypes::id::HTMLElement },
6207 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
6208 : JSJitInfo::Setter,
6209 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6210 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
6211 : false, /* isInfallible. False in setters. */
6212 : false, /* isMovable. Not relevant for setters. */
6213 : false, /* isEliminatable. Not relevant for setters. */
6214 : false, /* isAlwaysInSlot. Only relevant for getters. */
6215 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6216 : false, /* isTypedMethod. Only relevant for methods. */
6217 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6218 : };
6219 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6220 : static_assert(0 < 1, "There is no slot for us");
6221 :
6222 : static bool
6223 0 : get_onmozfullscreenchange(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
6224 : {
6225 0 : RefPtr<EventHandlerNonNull> result(self->GetOnmozfullscreenchange());
6226 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6227 0 : if (result) {
6228 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
6229 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
6230 0 : return false;
6231 : }
6232 0 : return true;
6233 : } else {
6234 0 : args.rval().setNull();
6235 0 : return true;
6236 : }
6237 : }
6238 :
6239 : static bool
6240 0 : set_onmozfullscreenchange(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitSetterCallArgs args)
6241 : {
6242 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
6243 0 : if (args[0].isObject()) {
6244 : { // scope for tempRoot
6245 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
6246 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
6247 : }
6248 : } else {
6249 0 : arg0 = nullptr;
6250 : }
6251 0 : self->SetOnmozfullscreenchange(Constify(arg0));
6252 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6253 :
6254 0 : return true;
6255 : }
6256 :
6257 : static const JSJitInfo onmozfullscreenchange_getterinfo = {
6258 : { (JSJitGetterOp)get_onmozfullscreenchange },
6259 : { prototypes::id::HTMLElement },
6260 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
6261 : JSJitInfo::Getter,
6262 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6263 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
6264 : false, /* isInfallible. False in setters. */
6265 : false, /* isMovable. Not relevant for setters. */
6266 : false, /* isEliminatable. Not relevant for setters. */
6267 : false, /* isAlwaysInSlot. Only relevant for getters. */
6268 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6269 : false, /* isTypedMethod. Only relevant for methods. */
6270 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6271 : };
6272 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6273 : static_assert(0 < 1, "There is no slot for us");
6274 : static const JSJitInfo onmozfullscreenchange_setterinfo = {
6275 : { (JSJitGetterOp)set_onmozfullscreenchange },
6276 : { prototypes::id::HTMLElement },
6277 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
6278 : JSJitInfo::Setter,
6279 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6280 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
6281 : false, /* isInfallible. False in setters. */
6282 : false, /* isMovable. Not relevant for setters. */
6283 : false, /* isEliminatable. Not relevant for setters. */
6284 : false, /* isAlwaysInSlot. Only relevant for getters. */
6285 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6286 : false, /* isTypedMethod. Only relevant for methods. */
6287 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6288 : };
6289 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6290 : static_assert(0 < 1, "There is no slot for us");
6291 :
6292 : static bool
6293 0 : get_onmozfullscreenerror(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
6294 : {
6295 0 : RefPtr<EventHandlerNonNull> result(self->GetOnmozfullscreenerror());
6296 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6297 0 : if (result) {
6298 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
6299 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
6300 0 : return false;
6301 : }
6302 0 : return true;
6303 : } else {
6304 0 : args.rval().setNull();
6305 0 : return true;
6306 : }
6307 : }
6308 :
6309 : static bool
6310 0 : set_onmozfullscreenerror(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitSetterCallArgs args)
6311 : {
6312 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
6313 0 : if (args[0].isObject()) {
6314 : { // scope for tempRoot
6315 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
6316 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
6317 : }
6318 : } else {
6319 0 : arg0 = nullptr;
6320 : }
6321 0 : self->SetOnmozfullscreenerror(Constify(arg0));
6322 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6323 :
6324 0 : return true;
6325 : }
6326 :
6327 : static const JSJitInfo onmozfullscreenerror_getterinfo = {
6328 : { (JSJitGetterOp)get_onmozfullscreenerror },
6329 : { prototypes::id::HTMLElement },
6330 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
6331 : JSJitInfo::Getter,
6332 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6333 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
6334 : false, /* isInfallible. False in setters. */
6335 : false, /* isMovable. Not relevant for setters. */
6336 : false, /* isEliminatable. Not relevant for setters. */
6337 : false, /* isAlwaysInSlot. Only relevant for getters. */
6338 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6339 : false, /* isTypedMethod. Only relevant for methods. */
6340 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6341 : };
6342 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6343 : static_assert(0 < 1, "There is no slot for us");
6344 : static const JSJitInfo onmozfullscreenerror_setterinfo = {
6345 : { (JSJitGetterOp)set_onmozfullscreenerror },
6346 : { prototypes::id::HTMLElement },
6347 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
6348 : JSJitInfo::Setter,
6349 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6350 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
6351 : false, /* isInfallible. False in setters. */
6352 : false, /* isMovable. Not relevant for setters. */
6353 : false, /* isEliminatable. Not relevant for setters. */
6354 : false, /* isAlwaysInSlot. Only relevant for getters. */
6355 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6356 : false, /* isTypedMethod. Only relevant for methods. */
6357 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6358 : };
6359 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6360 : static_assert(0 < 1, "There is no slot for us");
6361 :
6362 : static bool
6363 0 : get_onanimationcancel(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
6364 : {
6365 0 : RefPtr<EventHandlerNonNull> result(self->GetOnanimationcancel());
6366 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6367 0 : if (result) {
6368 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
6369 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
6370 0 : return false;
6371 : }
6372 0 : return true;
6373 : } else {
6374 0 : args.rval().setNull();
6375 0 : return true;
6376 : }
6377 : }
6378 :
6379 : static bool
6380 0 : set_onanimationcancel(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitSetterCallArgs args)
6381 : {
6382 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
6383 0 : if (args[0].isObject()) {
6384 : { // scope for tempRoot
6385 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
6386 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
6387 : }
6388 : } else {
6389 0 : arg0 = nullptr;
6390 : }
6391 0 : self->SetOnanimationcancel(Constify(arg0));
6392 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6393 :
6394 0 : return true;
6395 : }
6396 :
6397 : static const JSJitInfo onanimationcancel_getterinfo = {
6398 : { (JSJitGetterOp)get_onanimationcancel },
6399 : { prototypes::id::HTMLElement },
6400 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
6401 : JSJitInfo::Getter,
6402 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6403 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
6404 : false, /* isInfallible. False in setters. */
6405 : false, /* isMovable. Not relevant for setters. */
6406 : false, /* isEliminatable. Not relevant for setters. */
6407 : false, /* isAlwaysInSlot. Only relevant for getters. */
6408 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6409 : false, /* isTypedMethod. Only relevant for methods. */
6410 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6411 : };
6412 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6413 : static_assert(0 < 1, "There is no slot for us");
6414 : static const JSJitInfo onanimationcancel_setterinfo = {
6415 : { (JSJitGetterOp)set_onanimationcancel },
6416 : { prototypes::id::HTMLElement },
6417 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
6418 : JSJitInfo::Setter,
6419 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6420 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
6421 : false, /* isInfallible. False in setters. */
6422 : false, /* isMovable. Not relevant for setters. */
6423 : false, /* isEliminatable. Not relevant for setters. */
6424 : false, /* isAlwaysInSlot. Only relevant for getters. */
6425 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6426 : false, /* isTypedMethod. Only relevant for methods. */
6427 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6428 : };
6429 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6430 : static_assert(0 < 1, "There is no slot for us");
6431 :
6432 : static bool
6433 0 : get_onanimationend(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
6434 : {
6435 0 : RefPtr<EventHandlerNonNull> result(self->GetOnanimationend());
6436 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6437 0 : if (result) {
6438 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
6439 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
6440 0 : return false;
6441 : }
6442 0 : return true;
6443 : } else {
6444 0 : args.rval().setNull();
6445 0 : return true;
6446 : }
6447 : }
6448 :
6449 : static bool
6450 0 : set_onanimationend(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitSetterCallArgs args)
6451 : {
6452 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
6453 0 : if (args[0].isObject()) {
6454 : { // scope for tempRoot
6455 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
6456 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
6457 : }
6458 : } else {
6459 0 : arg0 = nullptr;
6460 : }
6461 0 : self->SetOnanimationend(Constify(arg0));
6462 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6463 :
6464 0 : return true;
6465 : }
6466 :
6467 : static const JSJitInfo onanimationend_getterinfo = {
6468 : { (JSJitGetterOp)get_onanimationend },
6469 : { prototypes::id::HTMLElement },
6470 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
6471 : JSJitInfo::Getter,
6472 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6473 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
6474 : false, /* isInfallible. False in setters. */
6475 : false, /* isMovable. Not relevant for setters. */
6476 : false, /* isEliminatable. Not relevant for setters. */
6477 : false, /* isAlwaysInSlot. Only relevant for getters. */
6478 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6479 : false, /* isTypedMethod. Only relevant for methods. */
6480 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6481 : };
6482 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6483 : static_assert(0 < 1, "There is no slot for us");
6484 : static const JSJitInfo onanimationend_setterinfo = {
6485 : { (JSJitGetterOp)set_onanimationend },
6486 : { prototypes::id::HTMLElement },
6487 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
6488 : JSJitInfo::Setter,
6489 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6490 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
6491 : false, /* isInfallible. False in setters. */
6492 : false, /* isMovable. Not relevant for setters. */
6493 : false, /* isEliminatable. Not relevant for setters. */
6494 : false, /* isAlwaysInSlot. Only relevant for getters. */
6495 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6496 : false, /* isTypedMethod. Only relevant for methods. */
6497 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6498 : };
6499 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6500 : static_assert(0 < 1, "There is no slot for us");
6501 :
6502 : static bool
6503 0 : get_onanimationiteration(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
6504 : {
6505 0 : RefPtr<EventHandlerNonNull> result(self->GetOnanimationiteration());
6506 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6507 0 : if (result) {
6508 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
6509 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
6510 0 : return false;
6511 : }
6512 0 : return true;
6513 : } else {
6514 0 : args.rval().setNull();
6515 0 : return true;
6516 : }
6517 : }
6518 :
6519 : static bool
6520 0 : set_onanimationiteration(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitSetterCallArgs args)
6521 : {
6522 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
6523 0 : if (args[0].isObject()) {
6524 : { // scope for tempRoot
6525 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
6526 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
6527 : }
6528 : } else {
6529 0 : arg0 = nullptr;
6530 : }
6531 0 : self->SetOnanimationiteration(Constify(arg0));
6532 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6533 :
6534 0 : return true;
6535 : }
6536 :
6537 : static const JSJitInfo onanimationiteration_getterinfo = {
6538 : { (JSJitGetterOp)get_onanimationiteration },
6539 : { prototypes::id::HTMLElement },
6540 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
6541 : JSJitInfo::Getter,
6542 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6543 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
6544 : false, /* isInfallible. False in setters. */
6545 : false, /* isMovable. Not relevant for setters. */
6546 : false, /* isEliminatable. Not relevant for setters. */
6547 : false, /* isAlwaysInSlot. Only relevant for getters. */
6548 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6549 : false, /* isTypedMethod. Only relevant for methods. */
6550 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6551 : };
6552 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6553 : static_assert(0 < 1, "There is no slot for us");
6554 : static const JSJitInfo onanimationiteration_setterinfo = {
6555 : { (JSJitGetterOp)set_onanimationiteration },
6556 : { prototypes::id::HTMLElement },
6557 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
6558 : JSJitInfo::Setter,
6559 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6560 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
6561 : false, /* isInfallible. False in setters. */
6562 : false, /* isMovable. Not relevant for setters. */
6563 : false, /* isEliminatable. Not relevant for setters. */
6564 : false, /* isAlwaysInSlot. Only relevant for getters. */
6565 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6566 : false, /* isTypedMethod. Only relevant for methods. */
6567 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6568 : };
6569 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6570 : static_assert(0 < 1, "There is no slot for us");
6571 :
6572 : static bool
6573 0 : get_onanimationstart(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
6574 : {
6575 0 : RefPtr<EventHandlerNonNull> result(self->GetOnanimationstart());
6576 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6577 0 : if (result) {
6578 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
6579 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
6580 0 : return false;
6581 : }
6582 0 : return true;
6583 : } else {
6584 0 : args.rval().setNull();
6585 0 : return true;
6586 : }
6587 : }
6588 :
6589 : static bool
6590 0 : set_onanimationstart(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitSetterCallArgs args)
6591 : {
6592 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
6593 0 : if (args[0].isObject()) {
6594 : { // scope for tempRoot
6595 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
6596 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
6597 : }
6598 : } else {
6599 0 : arg0 = nullptr;
6600 : }
6601 0 : self->SetOnanimationstart(Constify(arg0));
6602 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6603 :
6604 0 : return true;
6605 : }
6606 :
6607 : static const JSJitInfo onanimationstart_getterinfo = {
6608 : { (JSJitGetterOp)get_onanimationstart },
6609 : { prototypes::id::HTMLElement },
6610 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
6611 : JSJitInfo::Getter,
6612 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6613 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
6614 : false, /* isInfallible. False in setters. */
6615 : false, /* isMovable. Not relevant for setters. */
6616 : false, /* isEliminatable. Not relevant for setters. */
6617 : false, /* isAlwaysInSlot. Only relevant for getters. */
6618 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6619 : false, /* isTypedMethod. Only relevant for methods. */
6620 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6621 : };
6622 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6623 : static_assert(0 < 1, "There is no slot for us");
6624 : static const JSJitInfo onanimationstart_setterinfo = {
6625 : { (JSJitGetterOp)set_onanimationstart },
6626 : { prototypes::id::HTMLElement },
6627 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
6628 : JSJitInfo::Setter,
6629 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6630 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
6631 : false, /* isInfallible. False in setters. */
6632 : false, /* isMovable. Not relevant for setters. */
6633 : false, /* isEliminatable. Not relevant for setters. */
6634 : false, /* isAlwaysInSlot. Only relevant for getters. */
6635 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6636 : false, /* isTypedMethod. Only relevant for methods. */
6637 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6638 : };
6639 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6640 : static_assert(0 < 1, "There is no slot for us");
6641 :
6642 : static bool
6643 0 : get_ontransitioncancel(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
6644 : {
6645 0 : RefPtr<EventHandlerNonNull> result(self->GetOntransitioncancel());
6646 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6647 0 : if (result) {
6648 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
6649 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
6650 0 : return false;
6651 : }
6652 0 : return true;
6653 : } else {
6654 0 : args.rval().setNull();
6655 0 : return true;
6656 : }
6657 : }
6658 :
6659 : static bool
6660 0 : set_ontransitioncancel(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitSetterCallArgs args)
6661 : {
6662 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
6663 0 : if (args[0].isObject()) {
6664 : { // scope for tempRoot
6665 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
6666 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
6667 : }
6668 : } else {
6669 0 : arg0 = nullptr;
6670 : }
6671 0 : self->SetOntransitioncancel(Constify(arg0));
6672 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6673 :
6674 0 : return true;
6675 : }
6676 :
6677 : static const JSJitInfo ontransitioncancel_getterinfo = {
6678 : { (JSJitGetterOp)get_ontransitioncancel },
6679 : { prototypes::id::HTMLElement },
6680 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
6681 : JSJitInfo::Getter,
6682 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6683 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
6684 : false, /* isInfallible. False in setters. */
6685 : false, /* isMovable. Not relevant for setters. */
6686 : false, /* isEliminatable. Not relevant for setters. */
6687 : false, /* isAlwaysInSlot. Only relevant for getters. */
6688 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6689 : false, /* isTypedMethod. Only relevant for methods. */
6690 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6691 : };
6692 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6693 : static_assert(0 < 1, "There is no slot for us");
6694 : static const JSJitInfo ontransitioncancel_setterinfo = {
6695 : { (JSJitGetterOp)set_ontransitioncancel },
6696 : { prototypes::id::HTMLElement },
6697 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
6698 : JSJitInfo::Setter,
6699 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6700 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
6701 : false, /* isInfallible. False in setters. */
6702 : false, /* isMovable. Not relevant for setters. */
6703 : false, /* isEliminatable. Not relevant for setters. */
6704 : false, /* isAlwaysInSlot. Only relevant for getters. */
6705 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6706 : false, /* isTypedMethod. Only relevant for methods. */
6707 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6708 : };
6709 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6710 : static_assert(0 < 1, "There is no slot for us");
6711 :
6712 : static bool
6713 0 : get_ontransitionend(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
6714 : {
6715 0 : RefPtr<EventHandlerNonNull> result(self->GetOntransitionend());
6716 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6717 0 : if (result) {
6718 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
6719 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
6720 0 : return false;
6721 : }
6722 0 : return true;
6723 : } else {
6724 0 : args.rval().setNull();
6725 0 : return true;
6726 : }
6727 : }
6728 :
6729 : static bool
6730 0 : set_ontransitionend(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitSetterCallArgs args)
6731 : {
6732 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
6733 0 : if (args[0].isObject()) {
6734 : { // scope for tempRoot
6735 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
6736 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
6737 : }
6738 : } else {
6739 0 : arg0 = nullptr;
6740 : }
6741 0 : self->SetOntransitionend(Constify(arg0));
6742 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6743 :
6744 0 : return true;
6745 : }
6746 :
6747 : static const JSJitInfo ontransitionend_getterinfo = {
6748 : { (JSJitGetterOp)get_ontransitionend },
6749 : { prototypes::id::HTMLElement },
6750 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
6751 : JSJitInfo::Getter,
6752 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6753 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
6754 : false, /* isInfallible. False in setters. */
6755 : false, /* isMovable. Not relevant for setters. */
6756 : false, /* isEliminatable. Not relevant for setters. */
6757 : false, /* isAlwaysInSlot. Only relevant for getters. */
6758 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6759 : false, /* isTypedMethod. Only relevant for methods. */
6760 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6761 : };
6762 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6763 : static_assert(0 < 1, "There is no slot for us");
6764 : static const JSJitInfo ontransitionend_setterinfo = {
6765 : { (JSJitGetterOp)set_ontransitionend },
6766 : { prototypes::id::HTMLElement },
6767 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
6768 : JSJitInfo::Setter,
6769 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6770 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
6771 : false, /* isInfallible. False in setters. */
6772 : false, /* isMovable. Not relevant for setters. */
6773 : false, /* isEliminatable. Not relevant for setters. */
6774 : false, /* isAlwaysInSlot. Only relevant for getters. */
6775 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6776 : false, /* isTypedMethod. Only relevant for methods. */
6777 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6778 : };
6779 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6780 : static_assert(0 < 1, "There is no slot for us");
6781 :
6782 : static bool
6783 0 : get_ontransitionrun(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
6784 : {
6785 0 : RefPtr<EventHandlerNonNull> result(self->GetOntransitionrun());
6786 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6787 0 : if (result) {
6788 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
6789 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
6790 0 : return false;
6791 : }
6792 0 : return true;
6793 : } else {
6794 0 : args.rval().setNull();
6795 0 : return true;
6796 : }
6797 : }
6798 :
6799 : static bool
6800 0 : set_ontransitionrun(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitSetterCallArgs args)
6801 : {
6802 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
6803 0 : if (args[0].isObject()) {
6804 : { // scope for tempRoot
6805 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
6806 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
6807 : }
6808 : } else {
6809 0 : arg0 = nullptr;
6810 : }
6811 0 : self->SetOntransitionrun(Constify(arg0));
6812 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6813 :
6814 0 : return true;
6815 : }
6816 :
6817 : static const JSJitInfo ontransitionrun_getterinfo = {
6818 : { (JSJitGetterOp)get_ontransitionrun },
6819 : { prototypes::id::HTMLElement },
6820 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
6821 : JSJitInfo::Getter,
6822 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6823 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
6824 : false, /* isInfallible. False in setters. */
6825 : false, /* isMovable. Not relevant for setters. */
6826 : false, /* isEliminatable. Not relevant for setters. */
6827 : false, /* isAlwaysInSlot. Only relevant for getters. */
6828 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6829 : false, /* isTypedMethod. Only relevant for methods. */
6830 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6831 : };
6832 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6833 : static_assert(0 < 1, "There is no slot for us");
6834 : static const JSJitInfo ontransitionrun_setterinfo = {
6835 : { (JSJitGetterOp)set_ontransitionrun },
6836 : { prototypes::id::HTMLElement },
6837 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
6838 : JSJitInfo::Setter,
6839 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6840 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
6841 : false, /* isInfallible. False in setters. */
6842 : false, /* isMovable. Not relevant for setters. */
6843 : false, /* isEliminatable. Not relevant for setters. */
6844 : false, /* isAlwaysInSlot. Only relevant for getters. */
6845 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6846 : false, /* isTypedMethod. Only relevant for methods. */
6847 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6848 : };
6849 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6850 : static_assert(0 < 1, "There is no slot for us");
6851 :
6852 : static bool
6853 0 : get_ontransitionstart(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
6854 : {
6855 0 : RefPtr<EventHandlerNonNull> result(self->GetOntransitionstart());
6856 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6857 0 : if (result) {
6858 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
6859 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
6860 0 : return false;
6861 : }
6862 0 : return true;
6863 : } else {
6864 0 : args.rval().setNull();
6865 0 : return true;
6866 : }
6867 : }
6868 :
6869 : static bool
6870 0 : set_ontransitionstart(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitSetterCallArgs args)
6871 : {
6872 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
6873 0 : if (args[0].isObject()) {
6874 : { // scope for tempRoot
6875 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
6876 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
6877 : }
6878 : } else {
6879 0 : arg0 = nullptr;
6880 : }
6881 0 : self->SetOntransitionstart(Constify(arg0));
6882 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6883 :
6884 0 : return true;
6885 : }
6886 :
6887 : static const JSJitInfo ontransitionstart_getterinfo = {
6888 : { (JSJitGetterOp)get_ontransitionstart },
6889 : { prototypes::id::HTMLElement },
6890 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
6891 : JSJitInfo::Getter,
6892 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6893 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
6894 : false, /* isInfallible. False in setters. */
6895 : false, /* isMovable. Not relevant for setters. */
6896 : false, /* isEliminatable. Not relevant for setters. */
6897 : false, /* isAlwaysInSlot. Only relevant for getters. */
6898 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6899 : false, /* isTypedMethod. Only relevant for methods. */
6900 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6901 : };
6902 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6903 : static_assert(0 < 1, "There is no slot for us");
6904 : static const JSJitInfo ontransitionstart_setterinfo = {
6905 : { (JSJitGetterOp)set_ontransitionstart },
6906 : { prototypes::id::HTMLElement },
6907 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
6908 : JSJitInfo::Setter,
6909 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6910 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
6911 : false, /* isInfallible. False in setters. */
6912 : false, /* isMovable. Not relevant for setters. */
6913 : false, /* isEliminatable. Not relevant for setters. */
6914 : false, /* isAlwaysInSlot. Only relevant for getters. */
6915 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6916 : false, /* isTypedMethod. Only relevant for methods. */
6917 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6918 : };
6919 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6920 : static_assert(0 < 1, "There is no slot for us");
6921 :
6922 : static bool
6923 0 : get_onwebkitanimationend(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
6924 : {
6925 0 : RefPtr<EventHandlerNonNull> result(self->GetOnwebkitanimationend());
6926 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6927 0 : if (result) {
6928 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
6929 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
6930 0 : return false;
6931 : }
6932 0 : return true;
6933 : } else {
6934 0 : args.rval().setNull();
6935 0 : return true;
6936 : }
6937 : }
6938 :
6939 : static bool
6940 0 : set_onwebkitanimationend(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitSetterCallArgs args)
6941 : {
6942 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
6943 0 : if (args[0].isObject()) {
6944 : { // scope for tempRoot
6945 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
6946 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
6947 : }
6948 : } else {
6949 0 : arg0 = nullptr;
6950 : }
6951 0 : self->SetOnwebkitanimationend(Constify(arg0));
6952 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6953 :
6954 0 : return true;
6955 : }
6956 :
6957 : static const JSJitInfo onwebkitanimationend_getterinfo = {
6958 : { (JSJitGetterOp)get_onwebkitanimationend },
6959 : { prototypes::id::HTMLElement },
6960 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
6961 : JSJitInfo::Getter,
6962 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6963 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
6964 : false, /* isInfallible. False in setters. */
6965 : false, /* isMovable. Not relevant for setters. */
6966 : false, /* isEliminatable. Not relevant for setters. */
6967 : false, /* isAlwaysInSlot. Only relevant for getters. */
6968 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6969 : false, /* isTypedMethod. Only relevant for methods. */
6970 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6971 : };
6972 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6973 : static_assert(0 < 1, "There is no slot for us");
6974 : static const JSJitInfo onwebkitanimationend_setterinfo = {
6975 : { (JSJitGetterOp)set_onwebkitanimationend },
6976 : { prototypes::id::HTMLElement },
6977 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
6978 : JSJitInfo::Setter,
6979 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6980 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
6981 : false, /* isInfallible. False in setters. */
6982 : false, /* isMovable. Not relevant for setters. */
6983 : false, /* isEliminatable. Not relevant for setters. */
6984 : false, /* isAlwaysInSlot. Only relevant for getters. */
6985 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6986 : false, /* isTypedMethod. Only relevant for methods. */
6987 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6988 : };
6989 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6990 : static_assert(0 < 1, "There is no slot for us");
6991 :
6992 : static bool
6993 0 : get_onwebkitanimationiteration(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
6994 : {
6995 0 : RefPtr<EventHandlerNonNull> result(self->GetOnwebkitanimationiteration());
6996 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6997 0 : if (result) {
6998 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
6999 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
7000 0 : return false;
7001 : }
7002 0 : return true;
7003 : } else {
7004 0 : args.rval().setNull();
7005 0 : return true;
7006 : }
7007 : }
7008 :
7009 : static bool
7010 0 : set_onwebkitanimationiteration(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitSetterCallArgs args)
7011 : {
7012 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
7013 0 : if (args[0].isObject()) {
7014 : { // scope for tempRoot
7015 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
7016 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
7017 : }
7018 : } else {
7019 0 : arg0 = nullptr;
7020 : }
7021 0 : self->SetOnwebkitanimationiteration(Constify(arg0));
7022 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
7023 :
7024 0 : return true;
7025 : }
7026 :
7027 : static const JSJitInfo onwebkitanimationiteration_getterinfo = {
7028 : { (JSJitGetterOp)get_onwebkitanimationiteration },
7029 : { prototypes::id::HTMLElement },
7030 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
7031 : JSJitInfo::Getter,
7032 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7033 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
7034 : false, /* isInfallible. False in setters. */
7035 : false, /* isMovable. Not relevant for setters. */
7036 : false, /* isEliminatable. Not relevant for setters. */
7037 : false, /* isAlwaysInSlot. Only relevant for getters. */
7038 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
7039 : false, /* isTypedMethod. Only relevant for methods. */
7040 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7041 : };
7042 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
7043 : static_assert(0 < 1, "There is no slot for us");
7044 : static const JSJitInfo onwebkitanimationiteration_setterinfo = {
7045 : { (JSJitGetterOp)set_onwebkitanimationiteration },
7046 : { prototypes::id::HTMLElement },
7047 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
7048 : JSJitInfo::Setter,
7049 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7050 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
7051 : false, /* isInfallible. False in setters. */
7052 : false, /* isMovable. Not relevant for setters. */
7053 : false, /* isEliminatable. Not relevant for setters. */
7054 : false, /* isAlwaysInSlot. Only relevant for getters. */
7055 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
7056 : false, /* isTypedMethod. Only relevant for methods. */
7057 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7058 : };
7059 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
7060 : static_assert(0 < 1, "There is no slot for us");
7061 :
7062 : static bool
7063 0 : get_onwebkitanimationstart(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
7064 : {
7065 0 : RefPtr<EventHandlerNonNull> result(self->GetOnwebkitanimationstart());
7066 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
7067 0 : if (result) {
7068 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
7069 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
7070 0 : return false;
7071 : }
7072 0 : return true;
7073 : } else {
7074 0 : args.rval().setNull();
7075 0 : return true;
7076 : }
7077 : }
7078 :
7079 : static bool
7080 0 : set_onwebkitanimationstart(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitSetterCallArgs args)
7081 : {
7082 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
7083 0 : if (args[0].isObject()) {
7084 : { // scope for tempRoot
7085 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
7086 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
7087 : }
7088 : } else {
7089 0 : arg0 = nullptr;
7090 : }
7091 0 : self->SetOnwebkitanimationstart(Constify(arg0));
7092 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
7093 :
7094 0 : return true;
7095 : }
7096 :
7097 : static const JSJitInfo onwebkitanimationstart_getterinfo = {
7098 : { (JSJitGetterOp)get_onwebkitanimationstart },
7099 : { prototypes::id::HTMLElement },
7100 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
7101 : JSJitInfo::Getter,
7102 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7103 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
7104 : false, /* isInfallible. False in setters. */
7105 : false, /* isMovable. Not relevant for setters. */
7106 : false, /* isEliminatable. Not relevant for setters. */
7107 : false, /* isAlwaysInSlot. Only relevant for getters. */
7108 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
7109 : false, /* isTypedMethod. Only relevant for methods. */
7110 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7111 : };
7112 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
7113 : static_assert(0 < 1, "There is no slot for us");
7114 : static const JSJitInfo onwebkitanimationstart_setterinfo = {
7115 : { (JSJitGetterOp)set_onwebkitanimationstart },
7116 : { prototypes::id::HTMLElement },
7117 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
7118 : JSJitInfo::Setter,
7119 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7120 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
7121 : false, /* isInfallible. False in setters. */
7122 : false, /* isMovable. Not relevant for setters. */
7123 : false, /* isEliminatable. Not relevant for setters. */
7124 : false, /* isAlwaysInSlot. Only relevant for getters. */
7125 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
7126 : false, /* isTypedMethod. Only relevant for methods. */
7127 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7128 : };
7129 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
7130 : static_assert(0 < 1, "There is no slot for us");
7131 :
7132 : static bool
7133 0 : get_onwebkittransitionend(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
7134 : {
7135 0 : RefPtr<EventHandlerNonNull> result(self->GetOnwebkittransitionend());
7136 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
7137 0 : if (result) {
7138 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
7139 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
7140 0 : return false;
7141 : }
7142 0 : return true;
7143 : } else {
7144 0 : args.rval().setNull();
7145 0 : return true;
7146 : }
7147 : }
7148 :
7149 : static bool
7150 0 : set_onwebkittransitionend(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitSetterCallArgs args)
7151 : {
7152 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
7153 0 : if (args[0].isObject()) {
7154 : { // scope for tempRoot
7155 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
7156 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
7157 : }
7158 : } else {
7159 0 : arg0 = nullptr;
7160 : }
7161 0 : self->SetOnwebkittransitionend(Constify(arg0));
7162 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
7163 :
7164 0 : return true;
7165 : }
7166 :
7167 : static const JSJitInfo onwebkittransitionend_getterinfo = {
7168 : { (JSJitGetterOp)get_onwebkittransitionend },
7169 : { prototypes::id::HTMLElement },
7170 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
7171 : JSJitInfo::Getter,
7172 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7173 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
7174 : false, /* isInfallible. False in setters. */
7175 : false, /* isMovable. Not relevant for setters. */
7176 : false, /* isEliminatable. Not relevant for setters. */
7177 : false, /* isAlwaysInSlot. Only relevant for getters. */
7178 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
7179 : false, /* isTypedMethod. Only relevant for methods. */
7180 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7181 : };
7182 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
7183 : static_assert(0 < 1, "There is no slot for us");
7184 : static const JSJitInfo onwebkittransitionend_setterinfo = {
7185 : { (JSJitGetterOp)set_onwebkittransitionend },
7186 : { prototypes::id::HTMLElement },
7187 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
7188 : JSJitInfo::Setter,
7189 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7190 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
7191 : false, /* isInfallible. False in setters. */
7192 : false, /* isMovable. Not relevant for setters. */
7193 : false, /* isEliminatable. Not relevant for setters. */
7194 : false, /* isAlwaysInSlot. Only relevant for getters. */
7195 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
7196 : false, /* isTypedMethod. Only relevant for methods. */
7197 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7198 : };
7199 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
7200 : static_assert(0 < 1, "There is no slot for us");
7201 :
7202 : static bool
7203 0 : get_onerror(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
7204 : {
7205 0 : RefPtr<EventHandlerNonNull> result(self->GetOnerror());
7206 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
7207 0 : if (result) {
7208 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
7209 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
7210 0 : return false;
7211 : }
7212 0 : return true;
7213 : } else {
7214 0 : args.rval().setNull();
7215 0 : return true;
7216 : }
7217 : }
7218 :
7219 : static bool
7220 0 : set_onerror(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitSetterCallArgs args)
7221 : {
7222 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
7223 0 : if (args[0].isObject()) {
7224 : { // scope for tempRoot
7225 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
7226 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
7227 : }
7228 : } else {
7229 0 : arg0 = nullptr;
7230 : }
7231 0 : self->SetOnerror(Constify(arg0));
7232 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
7233 :
7234 0 : return true;
7235 : }
7236 :
7237 : static const JSJitInfo onerror_getterinfo = {
7238 : { (JSJitGetterOp)get_onerror },
7239 : { prototypes::id::HTMLElement },
7240 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
7241 : JSJitInfo::Getter,
7242 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7243 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
7244 : false, /* isInfallible. False in setters. */
7245 : false, /* isMovable. Not relevant for setters. */
7246 : false, /* isEliminatable. Not relevant for setters. */
7247 : false, /* isAlwaysInSlot. Only relevant for getters. */
7248 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
7249 : false, /* isTypedMethod. Only relevant for methods. */
7250 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7251 : };
7252 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
7253 : static_assert(0 < 1, "There is no slot for us");
7254 : static const JSJitInfo onerror_setterinfo = {
7255 : { (JSJitGetterOp)set_onerror },
7256 : { prototypes::id::HTMLElement },
7257 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
7258 : JSJitInfo::Setter,
7259 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7260 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
7261 : false, /* isInfallible. False in setters. */
7262 : false, /* isMovable. Not relevant for setters. */
7263 : false, /* isEliminatable. Not relevant for setters. */
7264 : false, /* isAlwaysInSlot. Only relevant for getters. */
7265 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
7266 : false, /* isTypedMethod. Only relevant for methods. */
7267 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7268 : };
7269 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
7270 : static_assert(0 < 1, "There is no slot for us");
7271 :
7272 : static bool
7273 0 : get_ontouchstart(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
7274 : {
7275 0 : RefPtr<EventHandlerNonNull> result(self->GetOntouchstart());
7276 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
7277 0 : if (result) {
7278 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
7279 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
7280 0 : return false;
7281 : }
7282 0 : return true;
7283 : } else {
7284 0 : args.rval().setNull();
7285 0 : return true;
7286 : }
7287 : }
7288 :
7289 : static bool
7290 0 : set_ontouchstart(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitSetterCallArgs args)
7291 : {
7292 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
7293 0 : if (args[0].isObject()) {
7294 : { // scope for tempRoot
7295 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
7296 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
7297 : }
7298 : } else {
7299 0 : arg0 = nullptr;
7300 : }
7301 0 : self->SetOntouchstart(Constify(arg0));
7302 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
7303 :
7304 0 : return true;
7305 : }
7306 :
7307 : static const JSJitInfo ontouchstart_getterinfo = {
7308 : { (JSJitGetterOp)get_ontouchstart },
7309 : { prototypes::id::HTMLElement },
7310 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
7311 : JSJitInfo::Getter,
7312 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7313 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
7314 : false, /* isInfallible. False in setters. */
7315 : false, /* isMovable. Not relevant for setters. */
7316 : false, /* isEliminatable. Not relevant for setters. */
7317 : false, /* isAlwaysInSlot. Only relevant for getters. */
7318 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
7319 : false, /* isTypedMethod. Only relevant for methods. */
7320 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7321 : };
7322 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
7323 : static_assert(0 < 1, "There is no slot for us");
7324 : static const JSJitInfo ontouchstart_setterinfo = {
7325 : { (JSJitGetterOp)set_ontouchstart },
7326 : { prototypes::id::HTMLElement },
7327 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
7328 : JSJitInfo::Setter,
7329 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7330 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
7331 : false, /* isInfallible. False in setters. */
7332 : false, /* isMovable. Not relevant for setters. */
7333 : false, /* isEliminatable. Not relevant for setters. */
7334 : false, /* isAlwaysInSlot. Only relevant for getters. */
7335 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
7336 : false, /* isTypedMethod. Only relevant for methods. */
7337 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7338 : };
7339 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
7340 : static_assert(0 < 1, "There is no slot for us");
7341 :
7342 : static bool
7343 0 : get_ontouchend(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
7344 : {
7345 0 : RefPtr<EventHandlerNonNull> result(self->GetOntouchend());
7346 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
7347 0 : if (result) {
7348 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
7349 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
7350 0 : return false;
7351 : }
7352 0 : return true;
7353 : } else {
7354 0 : args.rval().setNull();
7355 0 : return true;
7356 : }
7357 : }
7358 :
7359 : static bool
7360 0 : set_ontouchend(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitSetterCallArgs args)
7361 : {
7362 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
7363 0 : if (args[0].isObject()) {
7364 : { // scope for tempRoot
7365 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
7366 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
7367 : }
7368 : } else {
7369 0 : arg0 = nullptr;
7370 : }
7371 0 : self->SetOntouchend(Constify(arg0));
7372 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
7373 :
7374 0 : return true;
7375 : }
7376 :
7377 : static const JSJitInfo ontouchend_getterinfo = {
7378 : { (JSJitGetterOp)get_ontouchend },
7379 : { prototypes::id::HTMLElement },
7380 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
7381 : JSJitInfo::Getter,
7382 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7383 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
7384 : false, /* isInfallible. False in setters. */
7385 : false, /* isMovable. Not relevant for setters. */
7386 : false, /* isEliminatable. Not relevant for setters. */
7387 : false, /* isAlwaysInSlot. Only relevant for getters. */
7388 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
7389 : false, /* isTypedMethod. Only relevant for methods. */
7390 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7391 : };
7392 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
7393 : static_assert(0 < 1, "There is no slot for us");
7394 : static const JSJitInfo ontouchend_setterinfo = {
7395 : { (JSJitGetterOp)set_ontouchend },
7396 : { prototypes::id::HTMLElement },
7397 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
7398 : JSJitInfo::Setter,
7399 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7400 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
7401 : false, /* isInfallible. False in setters. */
7402 : false, /* isMovable. Not relevant for setters. */
7403 : false, /* isEliminatable. Not relevant for setters. */
7404 : false, /* isAlwaysInSlot. Only relevant for getters. */
7405 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
7406 : false, /* isTypedMethod. Only relevant for methods. */
7407 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7408 : };
7409 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
7410 : static_assert(0 < 1, "There is no slot for us");
7411 :
7412 : static bool
7413 0 : get_ontouchmove(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
7414 : {
7415 0 : RefPtr<EventHandlerNonNull> result(self->GetOntouchmove());
7416 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
7417 0 : if (result) {
7418 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
7419 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
7420 0 : return false;
7421 : }
7422 0 : return true;
7423 : } else {
7424 0 : args.rval().setNull();
7425 0 : return true;
7426 : }
7427 : }
7428 :
7429 : static bool
7430 0 : set_ontouchmove(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitSetterCallArgs args)
7431 : {
7432 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
7433 0 : if (args[0].isObject()) {
7434 : { // scope for tempRoot
7435 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
7436 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
7437 : }
7438 : } else {
7439 0 : arg0 = nullptr;
7440 : }
7441 0 : self->SetOntouchmove(Constify(arg0));
7442 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
7443 :
7444 0 : return true;
7445 : }
7446 :
7447 : static const JSJitInfo ontouchmove_getterinfo = {
7448 : { (JSJitGetterOp)get_ontouchmove },
7449 : { prototypes::id::HTMLElement },
7450 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
7451 : JSJitInfo::Getter,
7452 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7453 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
7454 : false, /* isInfallible. False in setters. */
7455 : false, /* isMovable. Not relevant for setters. */
7456 : false, /* isEliminatable. Not relevant for setters. */
7457 : false, /* isAlwaysInSlot. Only relevant for getters. */
7458 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
7459 : false, /* isTypedMethod. Only relevant for methods. */
7460 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7461 : };
7462 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
7463 : static_assert(0 < 1, "There is no slot for us");
7464 : static const JSJitInfo ontouchmove_setterinfo = {
7465 : { (JSJitGetterOp)set_ontouchmove },
7466 : { prototypes::id::HTMLElement },
7467 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
7468 : JSJitInfo::Setter,
7469 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7470 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
7471 : false, /* isInfallible. False in setters. */
7472 : false, /* isMovable. Not relevant for setters. */
7473 : false, /* isEliminatable. Not relevant for setters. */
7474 : false, /* isAlwaysInSlot. Only relevant for getters. */
7475 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
7476 : false, /* isTypedMethod. Only relevant for methods. */
7477 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7478 : };
7479 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
7480 : static_assert(0 < 1, "There is no slot for us");
7481 :
7482 : static bool
7483 0 : get_ontouchcancel(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitGetterCallArgs args)
7484 : {
7485 0 : RefPtr<EventHandlerNonNull> result(self->GetOntouchcancel());
7486 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
7487 0 : if (result) {
7488 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
7489 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
7490 0 : return false;
7491 : }
7492 0 : return true;
7493 : } else {
7494 0 : args.rval().setNull();
7495 0 : return true;
7496 : }
7497 : }
7498 :
7499 : static bool
7500 0 : set_ontouchcancel(JSContext* cx, JS::Handle<JSObject*> obj, nsGenericHTMLElement* self, JSJitSetterCallArgs args)
7501 : {
7502 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
7503 0 : if (args[0].isObject()) {
7504 : { // scope for tempRoot
7505 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
7506 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
7507 : }
7508 : } else {
7509 0 : arg0 = nullptr;
7510 : }
7511 0 : self->SetOntouchcancel(Constify(arg0));
7512 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
7513 :
7514 0 : return true;
7515 : }
7516 :
7517 : static const JSJitInfo ontouchcancel_getterinfo = {
7518 : { (JSJitGetterOp)get_ontouchcancel },
7519 : { prototypes::id::HTMLElement },
7520 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
7521 : JSJitInfo::Getter,
7522 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7523 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
7524 : false, /* isInfallible. False in setters. */
7525 : false, /* isMovable. Not relevant for setters. */
7526 : false, /* isEliminatable. Not relevant for setters. */
7527 : false, /* isAlwaysInSlot. Only relevant for getters. */
7528 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
7529 : false, /* isTypedMethod. Only relevant for methods. */
7530 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7531 : };
7532 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
7533 : static_assert(0 < 1, "There is no slot for us");
7534 : static const JSJitInfo ontouchcancel_setterinfo = {
7535 : { (JSJitGetterOp)set_ontouchcancel },
7536 : { prototypes::id::HTMLElement },
7537 : { PrototypeTraits<prototypes::id::HTMLElement>::Depth },
7538 : JSJitInfo::Setter,
7539 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7540 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
7541 : false, /* isInfallible. False in setters. */
7542 : false, /* isMovable. Not relevant for setters. */
7543 : false, /* isEliminatable. Not relevant for setters. */
7544 : false, /* isAlwaysInSlot. Only relevant for getters. */
7545 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
7546 : false, /* isTypedMethod. Only relevant for methods. */
7547 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7548 : };
7549 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
7550 : static_assert(0 < 1, "There is no slot for us");
7551 :
7552 : static bool
7553 0 : genericLenientGetter(JSContext* cx, unsigned argc, JS::Value* vp)
7554 : {
7555 0 : JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
7556 0 : if (!args.thisv().isObject()) {
7557 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
7558 0 : if (!ReportLenientThisUnwrappingFailure(cx, &args.callee())) {
7559 0 : return false;
7560 : }
7561 0 : args.rval().set(JS::UndefinedValue());
7562 0 : return true;
7563 : }
7564 0 : JS::Rooted<JSObject*> obj(cx, &args.thisv().toObject());
7565 :
7566 : nsGenericHTMLElement* self;
7567 0 : JS::Rooted<JS::Value> rootSelf(cx, JS::ObjectValue(*obj));
7568 : {
7569 0 : nsresult rv = UnwrapObject<prototypes::id::HTMLElement, nsGenericHTMLElement>(&rootSelf, self);
7570 0 : if (NS_FAILED(rv)) {
7571 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
7572 0 : if (!ReportLenientThisUnwrappingFailure(cx, &args.callee())) {
7573 0 : return false;
7574 : }
7575 0 : args.rval().set(JS::UndefinedValue());
7576 0 : return true;
7577 : }
7578 : }
7579 0 : const JSJitInfo *info = FUNCTION_VALUE_TO_JITINFO(args.calleev());
7580 0 : MOZ_ASSERT(info->type() == JSJitInfo::Getter);
7581 0 : JSJitGetterOp getter = info->getter;
7582 0 : bool ok = getter(cx, obj, self, JSJitGetterCallArgs(args));
7583 : #ifdef DEBUG
7584 0 : if (ok) {
7585 0 : AssertReturnTypeMatchesJitinfo(info, args.rval());
7586 : }
7587 : #endif
7588 0 : return ok;
7589 : }
7590 :
7591 : static bool
7592 0 : genericLenientSetter(JSContext* cx, unsigned argc, JS::Value* vp)
7593 : {
7594 0 : JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
7595 0 : if (!args.thisv().isObject()) {
7596 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
7597 0 : if (!ReportLenientThisUnwrappingFailure(cx, &args.callee())) {
7598 0 : return false;
7599 : }
7600 0 : args.rval().set(JS::UndefinedValue());
7601 0 : return true;
7602 : }
7603 0 : JS::Rooted<JSObject*> obj(cx, &args.thisv().toObject());
7604 :
7605 : nsGenericHTMLElement* self;
7606 0 : JS::Rooted<JS::Value> rootSelf(cx, JS::ObjectValue(*obj));
7607 : {
7608 0 : nsresult rv = UnwrapObject<prototypes::id::HTMLElement, nsGenericHTMLElement>(&rootSelf, self);
7609 0 : if (NS_FAILED(rv)) {
7610 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
7611 0 : if (!ReportLenientThisUnwrappingFailure(cx, &args.callee())) {
7612 0 : return false;
7613 : }
7614 0 : args.rval().set(JS::UndefinedValue());
7615 0 : return true;
7616 : }
7617 : }
7618 0 : if (args.length() == 0) {
7619 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "HTMLElement attribute setter");
7620 : }
7621 0 : const JSJitInfo *info = FUNCTION_VALUE_TO_JITINFO(args.calleev());
7622 0 : MOZ_ASSERT(info->type() == JSJitInfo::Setter);
7623 0 : JSJitSetterOp setter = info->setter;
7624 0 : if (!setter(cx, obj, self, JSJitSetterCallArgs(args))) {
7625 0 : return false;
7626 : }
7627 0 : args.rval().setUndefined();
7628 : #ifdef DEBUG
7629 0 : AssertReturnTypeMatchesJitinfo(info, args.rval());
7630 : #endif
7631 0 : return true;
7632 : }
7633 :
7634 : static bool
7635 0 : _addProperty(JSContext* cx, JS::Handle<JSObject*> obj, JS::Handle<jsid> id, JS::Handle<JS::Value> val)
7636 : {
7637 0 : nsGenericHTMLElement* self = UnwrapPossiblyNotInitializedDOMObject<nsGenericHTMLElement>(obj);
7638 : // We don't want to preserve if we don't have a wrapper, and we
7639 : // obviously can't preserve if we're not initialized.
7640 0 : if (self && self->GetWrapperPreserveColor()) {
7641 0 : PreserveWrapper(self);
7642 : }
7643 0 : return true;
7644 : }
7645 :
7646 : static void
7647 0 : _finalize(js::FreeOp* fop, JSObject* obj)
7648 : {
7649 0 : nsGenericHTMLElement* self = UnwrapPossiblyNotInitializedDOMObject<nsGenericHTMLElement>(obj);
7650 0 : if (self) {
7651 0 : ClearWrapper(self, self, obj);
7652 0 : AddForDeferredFinalization<nsGenericHTMLElement>(self);
7653 : }
7654 0 : }
7655 :
7656 : static void
7657 0 : _objectMoved(JSObject* obj, const JSObject* old)
7658 : {
7659 0 : nsGenericHTMLElement* self = UnwrapPossiblyNotInitializedDOMObject<nsGenericHTMLElement>(obj);
7660 0 : if (self) {
7661 0 : UpdateWrapper(self, self, obj, old);
7662 : }
7663 0 : }
7664 :
7665 : // We deliberately use brace-elision to make Visual Studio produce better initalization code.
7666 : #if defined(__clang__)
7667 : #pragma clang diagnostic push
7668 : #pragma clang diagnostic ignored "-Wmissing-braces"
7669 : #endif
7670 : static const JSFunctionSpec sMethods_specs[] = {
7671 : JS_FNSPEC("click", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&click_methodinfo), 0, JSPROP_ENUMERATE, nullptr),
7672 : JS_FNSPEC("focus", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&focus_methodinfo), 0, JSPROP_ENUMERATE, nullptr),
7673 : JS_FNSPEC("blur", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&blur_methodinfo), 0, JSPROP_ENUMERATE, nullptr),
7674 : JS_FS_END
7675 : };
7676 : #if defined(__clang__)
7677 : #pragma clang diagnostic pop
7678 : #endif
7679 :
7680 :
7681 : // Can't be const because the pref-enabled boolean needs to be writable
7682 : static Prefable<const JSFunctionSpec> sMethods[] = {
7683 : { nullptr, &sMethods_specs[0] },
7684 : { nullptr, nullptr }
7685 : };
7686 :
7687 : static_assert(1 <= 1ull << NUM_BITS_PROPERTY_INFO_PREF_INDEX,
7688 : "We have a prefable index that is >= (1 << NUM_BITS_PROPERTY_INFO_PREF_INDEX)");
7689 : static_assert(3 <= 1ull << NUM_BITS_PROPERTY_INFO_SPEC_INDEX,
7690 : "We have a spec index that is >= (1 << NUM_BITS_PROPERTY_INFO_SPEC_INDEX)");
7691 :
7692 : // We deliberately use brace-elision to make Visual Studio produce better initalization code.
7693 : #if defined(__clang__)
7694 : #pragma clang diagnostic push
7695 : #pragma clang diagnostic ignored "-Wmissing-braces"
7696 : #endif
7697 : static const JSPropertySpec sAttributes_specs[] = {
7698 : { "title", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &title_getterinfo, GenericBindingSetter, &title_setterinfo },
7699 : { "lang", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &lang_getterinfo, GenericBindingSetter, &lang_setterinfo },
7700 : { "dir", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &dir_getterinfo, GenericBindingSetter, &dir_setterinfo },
7701 : { "dataset", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &dataset_getterinfo, nullptr, nullptr },
7702 : { "innerText", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &innerText_getterinfo, GenericBindingSetter, &innerText_setterinfo },
7703 : { "hidden", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &hidden_getterinfo, GenericBindingSetter, &hidden_setterinfo },
7704 : { "tabIndex", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &tabIndex_getterinfo, GenericBindingSetter, &tabIndex_setterinfo },
7705 : { "accessKey", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &accessKey_getterinfo, GenericBindingSetter, &accessKey_setterinfo },
7706 : { "accessKeyLabel", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &accessKeyLabel_getterinfo, nullptr, nullptr },
7707 : { "draggable", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &draggable_getterinfo, GenericBindingSetter, &draggable_setterinfo },
7708 : { "contentEditable", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &contentEditable_getterinfo, GenericBindingSetter, &contentEditable_setterinfo },
7709 : { "isContentEditable", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &isContentEditable_getterinfo, nullptr, nullptr },
7710 : { "contextMenu", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &contextMenu_getterinfo, nullptr, nullptr },
7711 : { "spellcheck", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &spellcheck_getterinfo, GenericBindingSetter, &spellcheck_setterinfo },
7712 : { "style", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &style_getterinfo, GenericBindingSetter, &style_setterinfo },
7713 : { "offsetParent", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &offsetParent_getterinfo, nullptr, nullptr },
7714 : { "offsetTop", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &offsetTop_getterinfo, nullptr, nullptr },
7715 : { "offsetLeft", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &offsetLeft_getterinfo, nullptr, nullptr },
7716 : { "offsetWidth", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &offsetWidth_getterinfo, nullptr, nullptr },
7717 : { "offsetHeight", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &offsetHeight_getterinfo, nullptr, nullptr },
7718 : { "oncopy", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &oncopy_getterinfo, GenericBindingSetter, &oncopy_setterinfo },
7719 : { "oncut", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &oncut_getterinfo, GenericBindingSetter, &oncut_setterinfo },
7720 : { "onpaste", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onpaste_getterinfo, GenericBindingSetter, &onpaste_setterinfo },
7721 : { "onabort", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onabort_getterinfo, GenericBindingSetter, &onabort_setterinfo },
7722 : { "onblur", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onblur_getterinfo, GenericBindingSetter, &onblur_setterinfo },
7723 : { "onfocus", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onfocus_getterinfo, GenericBindingSetter, &onfocus_setterinfo },
7724 : { "onauxclick", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onauxclick_getterinfo, GenericBindingSetter, &onauxclick_setterinfo },
7725 : { "oncanplay", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &oncanplay_getterinfo, GenericBindingSetter, &oncanplay_setterinfo },
7726 : { "oncanplaythrough", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &oncanplaythrough_getterinfo, GenericBindingSetter, &oncanplaythrough_setterinfo },
7727 : { "onchange", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onchange_getterinfo, GenericBindingSetter, &onchange_setterinfo },
7728 : { "onclick", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onclick_getterinfo, GenericBindingSetter, &onclick_setterinfo },
7729 : { "onclose", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onclose_getterinfo, GenericBindingSetter, &onclose_setterinfo },
7730 : { "oncontextmenu", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &oncontextmenu_getterinfo, GenericBindingSetter, &oncontextmenu_setterinfo },
7731 : { "ondblclick", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &ondblclick_getterinfo, GenericBindingSetter, &ondblclick_setterinfo },
7732 : { "ondrag", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &ondrag_getterinfo, GenericBindingSetter, &ondrag_setterinfo },
7733 : { "ondragend", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &ondragend_getterinfo, GenericBindingSetter, &ondragend_setterinfo },
7734 : { "ondragenter", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &ondragenter_getterinfo, GenericBindingSetter, &ondragenter_setterinfo },
7735 : { "ondragexit", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &ondragexit_getterinfo, GenericBindingSetter, &ondragexit_setterinfo },
7736 : { "ondragleave", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &ondragleave_getterinfo, GenericBindingSetter, &ondragleave_setterinfo },
7737 : { "ondragover", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &ondragover_getterinfo, GenericBindingSetter, &ondragover_setterinfo },
7738 : { "ondragstart", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &ondragstart_getterinfo, GenericBindingSetter, &ondragstart_setterinfo },
7739 : { "ondrop", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &ondrop_getterinfo, GenericBindingSetter, &ondrop_setterinfo },
7740 : { "ondurationchange", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &ondurationchange_getterinfo, GenericBindingSetter, &ondurationchange_setterinfo },
7741 : { "onemptied", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onemptied_getterinfo, GenericBindingSetter, &onemptied_setterinfo },
7742 : { "onended", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onended_getterinfo, GenericBindingSetter, &onended_setterinfo },
7743 : { "oninput", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &oninput_getterinfo, GenericBindingSetter, &oninput_setterinfo },
7744 : { "oninvalid", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &oninvalid_getterinfo, GenericBindingSetter, &oninvalid_setterinfo },
7745 : { "onkeydown", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onkeydown_getterinfo, GenericBindingSetter, &onkeydown_setterinfo },
7746 : { "onkeypress", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onkeypress_getterinfo, GenericBindingSetter, &onkeypress_setterinfo },
7747 : { "onkeyup", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onkeyup_getterinfo, GenericBindingSetter, &onkeyup_setterinfo },
7748 : { "onload", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onload_getterinfo, GenericBindingSetter, &onload_setterinfo },
7749 : { "onloadeddata", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onloadeddata_getterinfo, GenericBindingSetter, &onloadeddata_setterinfo },
7750 : { "onloadedmetadata", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onloadedmetadata_getterinfo, GenericBindingSetter, &onloadedmetadata_setterinfo },
7751 : { "onloadend", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onloadend_getterinfo, GenericBindingSetter, &onloadend_setterinfo },
7752 : { "onloadstart", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onloadstart_getterinfo, GenericBindingSetter, &onloadstart_setterinfo },
7753 : { "onmousedown", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onmousedown_getterinfo, GenericBindingSetter, &onmousedown_setterinfo },
7754 : { "onmouseenter", JSPROP_SHARED | JSPROP_ENUMERATE, genericLenientGetter, &onmouseenter_getterinfo, genericLenientSetter, &onmouseenter_setterinfo },
7755 : { "onmouseleave", JSPROP_SHARED | JSPROP_ENUMERATE, genericLenientGetter, &onmouseleave_getterinfo, genericLenientSetter, &onmouseleave_setterinfo },
7756 : { "onmousemove", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onmousemove_getterinfo, GenericBindingSetter, &onmousemove_setterinfo },
7757 : { "onmouseout", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onmouseout_getterinfo, GenericBindingSetter, &onmouseout_setterinfo },
7758 : { "onmouseover", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onmouseover_getterinfo, GenericBindingSetter, &onmouseover_setterinfo },
7759 : { "onmouseup", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onmouseup_getterinfo, GenericBindingSetter, &onmouseup_setterinfo },
7760 : { "onwheel", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onwheel_getterinfo, GenericBindingSetter, &onwheel_setterinfo },
7761 : { "onpause", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onpause_getterinfo, GenericBindingSetter, &onpause_setterinfo },
7762 : { "onplay", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onplay_getterinfo, GenericBindingSetter, &onplay_setterinfo },
7763 : { "onplaying", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onplaying_getterinfo, GenericBindingSetter, &onplaying_setterinfo },
7764 : { "onprogress", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onprogress_getterinfo, GenericBindingSetter, &onprogress_setterinfo },
7765 : { "onratechange", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onratechange_getterinfo, GenericBindingSetter, &onratechange_setterinfo },
7766 : { "onreset", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onreset_getterinfo, GenericBindingSetter, &onreset_setterinfo },
7767 : { "onresize", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onresize_getterinfo, GenericBindingSetter, &onresize_setterinfo },
7768 : { "onscroll", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onscroll_getterinfo, GenericBindingSetter, &onscroll_setterinfo },
7769 : { "onseeked", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onseeked_getterinfo, GenericBindingSetter, &onseeked_setterinfo },
7770 : { "onseeking", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onseeking_getterinfo, GenericBindingSetter, &onseeking_setterinfo },
7771 : { "onselect", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onselect_getterinfo, GenericBindingSetter, &onselect_setterinfo },
7772 : { "onshow", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onshow_getterinfo, GenericBindingSetter, &onshow_setterinfo },
7773 : { "onstalled", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onstalled_getterinfo, GenericBindingSetter, &onstalled_setterinfo },
7774 : { "onsubmit", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onsubmit_getterinfo, GenericBindingSetter, &onsubmit_setterinfo },
7775 : { "onsuspend", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onsuspend_getterinfo, GenericBindingSetter, &onsuspend_setterinfo },
7776 : { "ontimeupdate", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &ontimeupdate_getterinfo, GenericBindingSetter, &ontimeupdate_setterinfo },
7777 : { "onvolumechange", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onvolumechange_getterinfo, GenericBindingSetter, &onvolumechange_setterinfo },
7778 : { "onwaiting", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onwaiting_getterinfo, GenericBindingSetter, &onwaiting_setterinfo },
7779 : { nullptr, 0, nullptr, nullptr, nullptr, nullptr },
7780 : { "onselectstart", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onselectstart_getterinfo, GenericBindingSetter, &onselectstart_setterinfo },
7781 : { nullptr, 0, nullptr, nullptr, nullptr, nullptr },
7782 : { "ontoggle", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &ontoggle_getterinfo, GenericBindingSetter, &ontoggle_setterinfo },
7783 : { nullptr, 0, nullptr, nullptr, nullptr, nullptr },
7784 : { "onpointercancel", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onpointercancel_getterinfo, GenericBindingSetter, &onpointercancel_setterinfo },
7785 : { "onpointerdown", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onpointerdown_getterinfo, GenericBindingSetter, &onpointerdown_setterinfo },
7786 : { "onpointerup", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onpointerup_getterinfo, GenericBindingSetter, &onpointerup_setterinfo },
7787 : { "onpointermove", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onpointermove_getterinfo, GenericBindingSetter, &onpointermove_setterinfo },
7788 : { "onpointerout", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onpointerout_getterinfo, GenericBindingSetter, &onpointerout_setterinfo },
7789 : { "onpointerover", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onpointerover_getterinfo, GenericBindingSetter, &onpointerover_setterinfo },
7790 : { "onpointerenter", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onpointerenter_getterinfo, GenericBindingSetter, &onpointerenter_setterinfo },
7791 : { "onpointerleave", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onpointerleave_getterinfo, GenericBindingSetter, &onpointerleave_setterinfo },
7792 : { "ongotpointercapture", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &ongotpointercapture_getterinfo, GenericBindingSetter, &ongotpointercapture_setterinfo },
7793 : { "onlostpointercapture", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onlostpointercapture_getterinfo, GenericBindingSetter, &onlostpointercapture_setterinfo },
7794 : { nullptr, 0, nullptr, nullptr, nullptr, nullptr },
7795 : { "onmozfullscreenchange", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onmozfullscreenchange_getterinfo, GenericBindingSetter, &onmozfullscreenchange_setterinfo },
7796 : { "onmozfullscreenerror", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onmozfullscreenerror_getterinfo, GenericBindingSetter, &onmozfullscreenerror_setterinfo },
7797 : { "onanimationcancel", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onanimationcancel_getterinfo, GenericBindingSetter, &onanimationcancel_setterinfo },
7798 : { "onanimationend", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onanimationend_getterinfo, GenericBindingSetter, &onanimationend_setterinfo },
7799 : { "onanimationiteration", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onanimationiteration_getterinfo, GenericBindingSetter, &onanimationiteration_setterinfo },
7800 : { "onanimationstart", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onanimationstart_getterinfo, GenericBindingSetter, &onanimationstart_setterinfo },
7801 : { "ontransitioncancel", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &ontransitioncancel_getterinfo, GenericBindingSetter, &ontransitioncancel_setterinfo },
7802 : { "ontransitionend", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &ontransitionend_getterinfo, GenericBindingSetter, &ontransitionend_setterinfo },
7803 : { "ontransitionrun", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &ontransitionrun_getterinfo, GenericBindingSetter, &ontransitionrun_setterinfo },
7804 : { "ontransitionstart", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &ontransitionstart_getterinfo, GenericBindingSetter, &ontransitionstart_setterinfo },
7805 : { "onwebkitanimationend", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onwebkitanimationend_getterinfo, GenericBindingSetter, &onwebkitanimationend_setterinfo },
7806 : { "onwebkitanimationiteration", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onwebkitanimationiteration_getterinfo, GenericBindingSetter, &onwebkitanimationiteration_setterinfo },
7807 : { "onwebkitanimationstart", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onwebkitanimationstart_getterinfo, GenericBindingSetter, &onwebkitanimationstart_setterinfo },
7808 : { "onwebkittransitionend", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onwebkittransitionend_getterinfo, GenericBindingSetter, &onwebkittransitionend_setterinfo },
7809 : { "onerror", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onerror_getterinfo, GenericBindingSetter, &onerror_setterinfo },
7810 : { nullptr, 0, nullptr, nullptr, nullptr, nullptr },
7811 : { "ontouchstart", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &ontouchstart_getterinfo, GenericBindingSetter, &ontouchstart_setterinfo },
7812 : { "ontouchend", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &ontouchend_getterinfo, GenericBindingSetter, &ontouchend_setterinfo },
7813 : { "ontouchmove", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &ontouchmove_getterinfo, GenericBindingSetter, &ontouchmove_setterinfo },
7814 : { "ontouchcancel", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &ontouchcancel_getterinfo, GenericBindingSetter, &ontouchcancel_setterinfo },
7815 : { nullptr, 0, nullptr, nullptr, nullptr, nullptr }
7816 : };
7817 : #if defined(__clang__)
7818 : #pragma clang diagnostic pop
7819 : #endif
7820 :
7821 : static PrefableDisablers sAttributes_disablers82 = {
7822 : true, false, 0, nullptr
7823 : };
7824 :
7825 : static PrefableDisablers sAttributes_disablers86 = {
7826 : true, false, 0, nullptr
7827 : };
7828 :
7829 : static PrefableDisablers sAttributes_disablers113 = {
7830 : true, false, 0, &nsGenericHTMLElement::TouchEventsEnabled
7831 : };
7832 :
7833 : // Can't be const because the pref-enabled boolean needs to be writable
7834 : static Prefable<const JSPropertySpec> sAttributes[] = {
7835 : { nullptr, &sAttributes_specs[0] },
7836 : { &sAttributes_disablers82, &sAttributes_specs[82] },
7837 : { nullptr, &sAttributes_specs[84] },
7838 : { &sAttributes_disablers86, &sAttributes_specs[86] },
7839 : { nullptr, &sAttributes_specs[97] },
7840 : { &sAttributes_disablers113, &sAttributes_specs[113] },
7841 : { nullptr, nullptr }
7842 : };
7843 :
7844 : static_assert(6 <= 1ull << NUM_BITS_PROPERTY_INFO_PREF_INDEX,
7845 : "We have a prefable index that is >= (1 << NUM_BITS_PROPERTY_INFO_PREF_INDEX)");
7846 : static_assert(81 <= 1ull << NUM_BITS_PROPERTY_INFO_SPEC_INDEX,
7847 : "We have a spec index that is >= (1 << NUM_BITS_PROPERTY_INFO_SPEC_INDEX)");
7848 :
7849 :
7850 : static uint16_t sNativeProperties_sortedPropertyIndices[115];
7851 : static PropertyInfo sNativeProperties_propertyInfos[115];
7852 :
7853 : static const NativePropertiesN<2> sNativeProperties = {
7854 : false, 0,
7855 : false, 0,
7856 : true, 0 /* sMethods */,
7857 : true, 1 /* sAttributes */,
7858 : false, 0,
7859 : false, 0,
7860 : false, 0,
7861 : -1,
7862 : 115,
7863 : sNativeProperties_sortedPropertyIndices,
7864 : {
7865 : { sMethods, &sNativeProperties_propertyInfos[0] },
7866 : { sAttributes, &sNativeProperties_propertyInfos[3] }
7867 : }
7868 : };
7869 : static_assert(115 < 1ull << CHAR_BIT * sizeof(sNativeProperties.propertyInfoCount),
7870 : "We have a property info count that is oversized");
7871 :
7872 : static bool
7873 0 : _constructor(JSContext* cx, unsigned argc, JS::Value* vp)
7874 : {
7875 0 : JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
7876 0 : JS::Rooted<JSObject*> obj(cx, &args.callee());
7877 0 : if (!args.isConstructing()) {
7878 : // XXXbz wish I could get the name from the callee instead of
7879 : // Adding more relocations
7880 0 : return ThrowConstructorWithoutNew(cx, "HTMLElement");
7881 : }
7882 :
7883 0 : GlobalObject global(cx, obj);
7884 0 : if (global.Failed()) {
7885 0 : return false;
7886 : }
7887 :
7888 : // The newTarget might be a cross-compartment wrapper. Get the underlying object
7889 : // so we can do the spec's object-identity checks.
7890 0 : JS::Rooted<JSObject*> newTarget(cx, js::CheckedUnwrap(&args.newTarget().toObject()));
7891 0 : if (!newTarget) {
7892 0 : return ThrowErrorMessage(cx, MSG_ILLEGAL_CONSTRUCTOR);
7893 : }
7894 :
7895 : // Step 2 of https://html.spec.whatwg.org/multipage/dom.html#htmlconstructor.
7896 : // Enter the compartment of our underlying newTarget object, so we end
7897 : // up comparing to the constructor object for our interface from that global.
7898 : {
7899 0 : JSAutoCompartment ac(cx, newTarget);
7900 0 : JS::Handle<JSObject*> constructor(GetConstructorObjectHandle(cx));
7901 0 : if (!constructor) {
7902 0 : return false;
7903 : }
7904 0 : if (newTarget == constructor) {
7905 0 : return ThrowErrorMessage(cx, MSG_ILLEGAL_CONSTRUCTOR);
7906 : }
7907 : }
7908 :
7909 0 : JS::Rooted<JSObject*> desiredProto(cx);
7910 0 : if (!GetDesiredProto(cx, args, &desiredProto)) {
7911 0 : return false;
7912 : }
7913 0 : if (!desiredProto) {
7914 : // Step 7 of https://html.spec.whatwg.org/multipage/dom.html#htmlconstructor.
7915 : // This fallback behavior is designed to match analogous behavior for the
7916 : // JavaScript built-ins. So we enter the compartment of our underlying
7917 : // newTarget object and fall back to the prototype object from that global.
7918 : // XXX The spec says to use GetFunctionRealm(), which is not actually
7919 : // the same thing as what we have here (e.g. in the case of scripted callable proxies
7920 : // whose target is not same-compartment with the proxy, or bound functions, etc).
7921 : // https://bugzilla.mozilla.org/show_bug.cgi?id=1317658
7922 : {
7923 0 : JSAutoCompartment ac(cx, newTarget);
7924 0 : desiredProto = GetProtoObjectHandle(cx);
7925 0 : if (!desiredProto) {
7926 0 : return false;
7927 : }
7928 : }
7929 :
7930 : // desiredProto is in the compartment of the underlying newTarget object.
7931 : // Wrap it into the context compartment.
7932 0 : if (!JS_WrapObject(cx, &desiredProto)) {
7933 0 : return false;
7934 : }
7935 : }
7936 :
7937 0 : bool objIsXray = xpc::WrapperFactory::IsXrayWrapper(obj);
7938 0 : Maybe<JSAutoCompartment> ac;
7939 0 : if (objIsXray) {
7940 0 : obj = js::CheckedUnwrap(obj);
7941 0 : if (!obj) {
7942 0 : return false;
7943 : }
7944 0 : ac.emplace(cx, obj);
7945 0 : if (!JS_WrapObject(cx, &desiredProto)) {
7946 0 : return false;
7947 : }
7948 : }
7949 0 : binding_detail::FastErrorResult rv;
7950 0 : auto result(StrongOrRawPtr<nsGenericHTMLElement>(CreateHTMLElement(global, args, rv)));
7951 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
7952 0 : return false;
7953 : }
7954 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
7955 : static_assert(!IsPointer<decltype(result)>::value,
7956 : "NewObject implies that we need to keep the object alive with a strong reference.");
7957 0 : if (!GetOrCreateDOMReflector(cx, result, args.rval(), desiredProto)) {
7958 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
7959 0 : return false;
7960 : }
7961 0 : return true;
7962 : }
7963 :
7964 : static const js::ClassOps sInterfaceObjectClassOps = {
7965 : nullptr, /* addProperty */
7966 : nullptr, /* delProperty */
7967 : nullptr, /* getProperty */
7968 : nullptr, /* setProperty */
7969 : nullptr, /* enumerate */
7970 : nullptr, /* newEnumerate */
7971 : nullptr, /* resolve */
7972 : nullptr, /* mayResolve */
7973 : nullptr, /* finalize */
7974 : _constructor, /* call */
7975 : nullptr, /* hasInstance */
7976 : _constructor, /* construct */
7977 : nullptr, /* trace */
7978 : };
7979 :
7980 : static const DOMIfaceAndProtoJSClass sInterfaceObjectClass = {
7981 : {
7982 : "Function",
7983 : JSCLASS_IS_DOMIFACEANDPROTOJSCLASS | JSCLASS_HAS_RESERVED_SLOTS(DOM_INTERFACE_SLOTS_BASE),
7984 : &sInterfaceObjectClassOps,
7985 : JS_NULL_CLASS_SPEC,
7986 : JS_NULL_CLASS_EXT,
7987 : &sInterfaceObjectClassObjectOps
7988 : },
7989 : eInterface,
7990 : true,
7991 : prototypes::id::HTMLElement,
7992 : PrototypeTraits<prototypes::id::HTMLElement>::Depth,
7993 : sNativePropertyHooks,
7994 : "function HTMLElement() {\n [native code]\n}",
7995 : ElementBinding::GetConstructorObject
7996 : };
7997 :
7998 : static const DOMIfaceAndProtoJSClass sPrototypeClass = {
7999 : {
8000 : "HTMLElementPrototype",
8001 : JSCLASS_IS_DOMIFACEANDPROTOJSCLASS | JSCLASS_HAS_RESERVED_SLOTS(DOM_INTERFACE_PROTO_SLOTS_BASE),
8002 : JS_NULL_CLASS_OPS,
8003 : JS_NULL_CLASS_SPEC,
8004 : JS_NULL_CLASS_EXT,
8005 : JS_NULL_OBJECT_OPS
8006 : },
8007 : eInterfacePrototype,
8008 : false,
8009 : prototypes::id::HTMLElement,
8010 : PrototypeTraits<prototypes::id::HTMLElement>::Depth,
8011 : sNativePropertyHooks,
8012 : "[object HTMLElementPrototype]",
8013 : ElementBinding::GetProtoObject
8014 : };
8015 :
8016 : JSObject*
8017 0 : DefineDOMInterface(JSContext* aCx, JS::Handle<JSObject*> aGlobal, JS::Handle<jsid> id, bool aDefineOnGlobal)
8018 : {
8019 0 : return GetConstructorObjectHandle(aCx, aDefineOnGlobal);
8020 : }
8021 :
8022 : static const js::ClassOps sClassOps = {
8023 : _addProperty, /* addProperty */
8024 : nullptr, /* delProperty */
8025 : nullptr, /* getProperty */
8026 : nullptr, /* setProperty */
8027 : nullptr, /* enumerate */
8028 : nullptr, /* newEnumerate */
8029 : nullptr, /* resolve */
8030 : nullptr, /* mayResolve */
8031 : _finalize, /* finalize */
8032 : nullptr, /* call */
8033 : nullptr, /* hasInstance */
8034 : nullptr, /* construct */
8035 : nullptr, /* trace */
8036 : };
8037 :
8038 : static const js::ClassExtension sClassExtension = {
8039 : nullptr, /* weakmapKeyDelegateOp */
8040 : _objectMoved /* objectMovedOp */
8041 : };
8042 :
8043 : static const DOMJSClass sClass = {
8044 : { "HTMLElement",
8045 : JSCLASS_IS_DOMJSCLASS | JSCLASS_FOREGROUND_FINALIZE | JSCLASS_HAS_RESERVED_SLOTS(1),
8046 : &sClassOps,
8047 : JS_NULL_CLASS_SPEC,
8048 : &sClassExtension,
8049 : JS_NULL_OBJECT_OPS
8050 : },
8051 : { prototypes::id::EventTarget, prototypes::id::Node, prototypes::id::Element, prototypes::id::HTMLElement, prototypes::id::_ID_Count, prototypes::id::_ID_Count, prototypes::id::_ID_Count, prototypes::id::_ID_Count },
8052 : IsBaseOf<nsISupports, nsGenericHTMLElement >::value,
8053 : sNativePropertyHooks,
8054 : FindAssociatedGlobalForNative<nsGenericHTMLElement>::Get,
8055 : GetProtoObjectHandle,
8056 : GetCCParticipant<nsGenericHTMLElement>::Get()
8057 : };
8058 : static_assert(1 == DOM_INSTANCE_RESERVED_SLOTS,
8059 : "Must have the right minimal number of reserved slots.");
8060 : static_assert(1 >= 1,
8061 : "Must have enough reserved slots.");
8062 :
8063 : const JSClass*
8064 0 : GetJSClass()
8065 : {
8066 0 : return sClass.ToJSClass();
8067 : }
8068 :
8069 : bool
8070 0 : Wrap(JSContext* aCx, nsGenericHTMLElement* aObject, nsWrapperCache* aCache, JS::Handle<JSObject*> aGivenProto, JS::MutableHandle<JSObject*> aReflector)
8071 : {
8072 : MOZ_ASSERT(static_cast<nsGenericHTMLElement*>(aObject) ==
8073 : reinterpret_cast<nsGenericHTMLElement*>(aObject),
8074 : "Multiple inheritance for nsGenericHTMLElement is broken.");
8075 : MOZ_ASSERT(static_cast<mozilla::dom::Element*>(aObject) ==
8076 : reinterpret_cast<mozilla::dom::Element*>(aObject),
8077 : "Multiple inheritance for mozilla::dom::Element is broken.");
8078 : MOZ_ASSERT(static_cast<nsINode*>(aObject) ==
8079 : reinterpret_cast<nsINode*>(aObject),
8080 : "Multiple inheritance for nsINode is broken.");
8081 : MOZ_ASSERT(static_cast<mozilla::dom::EventTarget*>(aObject) ==
8082 : reinterpret_cast<mozilla::dom::EventTarget*>(aObject),
8083 : "Multiple inheritance for mozilla::dom::EventTarget is broken.");
8084 0 : MOZ_ASSERT(ToSupportsIsCorrect(aObject));
8085 0 : MOZ_ASSERT_IF(aGivenProto, js::IsObjectInContextCompartment(aGivenProto, aCx));
8086 0 : MOZ_ASSERT(!aCache->GetWrapper(),
8087 : "You should probably not be using Wrap() directly; use "
8088 : "GetOrCreateDOMReflector instead");
8089 :
8090 0 : MOZ_ASSERT(ToSupportsIsOnPrimaryInheritanceChain(aObject, aCache),
8091 : "nsISupports must be on our primary inheritance chain");
8092 :
8093 0 : JS::Rooted<JSObject*> global(aCx, FindAssociatedGlobal(aCx, aObject->GetParentObject()));
8094 0 : if (!global) {
8095 0 : return false;
8096 : }
8097 0 : MOZ_ASSERT(JS_IsGlobalObject(global));
8098 0 : MOZ_ASSERT(JS::ObjectIsNotGray(global));
8099 :
8100 : // That might have ended up wrapping us already, due to the wonders
8101 : // of XBL. Check for that, and bail out as needed.
8102 0 : aReflector.set(aCache->GetWrapper());
8103 0 : if (aReflector) {
8104 : #ifdef DEBUG
8105 0 : binding_detail::AssertReflectorHasGivenProto(aCx, aReflector, aGivenProto);
8106 : #endif // DEBUG
8107 0 : return true;
8108 : }
8109 :
8110 0 : JSAutoCompartment ac(aCx, global);
8111 0 : JS::Handle<JSObject*> canonicalProto = GetProtoObjectHandle(aCx);
8112 0 : if (!canonicalProto) {
8113 0 : return false;
8114 : }
8115 0 : JS::Rooted<JSObject*> proto(aCx);
8116 0 : if (aGivenProto) {
8117 0 : proto = aGivenProto;
8118 : // Unfortunately, while aGivenProto was in the compartment of aCx
8119 : // coming in, we changed compartments to that of "parent" so may need
8120 : // to wrap the proto here.
8121 0 : if (js::GetContextCompartment(aCx) != js::GetObjectCompartment(proto)) {
8122 0 : if (!JS_WrapObject(aCx, &proto)) {
8123 0 : return false;
8124 : }
8125 : }
8126 : } else {
8127 0 : proto = canonicalProto;
8128 : }
8129 :
8130 0 : BindingJSObjectCreator<nsGenericHTMLElement> creator(aCx);
8131 0 : creator.CreateObject(aCx, sClass.ToJSClass(), proto, aObject, aReflector);
8132 0 : if (!aReflector) {
8133 0 : return false;
8134 : }
8135 :
8136 0 : aCache->SetWrapper(aReflector);
8137 0 : creator.InitializationSucceeded();
8138 :
8139 0 : MOZ_ASSERT(aCache->GetWrapperPreserveColor() &&
8140 : aCache->GetWrapperPreserveColor() == aReflector);
8141 : // If proto != canonicalProto, we have to preserve our wrapper;
8142 : // otherwise we won't be able to properly recreate it later, since
8143 : // we won't know what proto to use. Note that we don't check
8144 : // aGivenProto here, since it's entirely possible (and even
8145 : // somewhat common) to have a non-null aGivenProto which is the
8146 : // same as canonicalProto.
8147 0 : if (proto != canonicalProto) {
8148 0 : PreserveWrapper(aObject);
8149 : }
8150 :
8151 0 : return true;
8152 : }
8153 :
8154 : const NativePropertyHooks sNativePropertyHooks[] = { {
8155 : nullptr,
8156 : nullptr,
8157 : nullptr,
8158 : { sNativeProperties.Upcast(), nullptr },
8159 : prototypes::id::HTMLElement,
8160 : constructors::id::HTMLElement,
8161 : ElementBinding::sNativePropertyHooks,
8162 : &DefaultXrayExpandoObjectClass
8163 : } };
8164 :
8165 : void
8166 2 : CreateInterfaceObjects(JSContext* aCx, JS::Handle<JSObject*> aGlobal, ProtoAndIfaceCache& aProtoAndIfaceCache, bool aDefineOnGlobal)
8167 : {
8168 2 : JS::Handle<JSObject*> parentProto(ElementBinding::GetProtoObjectHandle(aCx));
8169 2 : if (!parentProto) {
8170 0 : return;
8171 : }
8172 :
8173 2 : JS::Handle<JSObject*> constructorProto(ElementBinding::GetConstructorObjectHandle(aCx));
8174 2 : if (!constructorProto) {
8175 0 : return;
8176 : }
8177 :
8178 : static bool sIdsInited = false;
8179 2 : if (!sIdsInited && NS_IsMainThread()) {
8180 2 : if (!InitIds(aCx, sNativeProperties.Upcast())) {
8181 0 : return;
8182 : }
8183 2 : sIdsInited = true;
8184 : }
8185 :
8186 : static bool sPrefCachesInited = false;
8187 2 : if (!sPrefCachesInited && NS_IsMainThread()) {
8188 2 : sPrefCachesInited = true;
8189 2 : Preferences::AddBoolVarCache(&sAttributes[1].disablers->enabled, "dom.select_events.enabled");
8190 2 : Preferences::AddBoolVarCache(&sAttributes[3].disablers->enabled, "dom.w3c_pointer_events.enabled");
8191 : }
8192 :
8193 2 : JS::Heap<JSObject*>* protoCache = &aProtoAndIfaceCache.EntrySlotOrCreate(prototypes::id::HTMLElement);
8194 2 : JS::Heap<JSObject*>* interfaceCache = &aProtoAndIfaceCache.EntrySlotOrCreate(constructors::id::HTMLElement);
8195 2 : dom::CreateInterfaceObjects(aCx, aGlobal, parentProto,
8196 : &sPrototypeClass.mBase, protoCache,
8197 : constructorProto, &sInterfaceObjectClass.mBase, 0, nullptr,
8198 : interfaceCache,
8199 : sNativeProperties.Upcast(),
8200 : nullptr,
8201 : "HTMLElement", aDefineOnGlobal,
8202 : nullptr,
8203 2 : false);
8204 : }
8205 :
8206 : JS::Handle<JSObject*>
8207 5 : GetProtoObjectHandle(JSContext* aCx)
8208 : {
8209 : /* Get the interface prototype object for this class. This will create the
8210 : object as needed. */
8211 5 : bool aDefineOnGlobal = true;
8212 :
8213 : /* Make sure our global is sane. Hopefully we can remove this sometime */
8214 5 : JSObject* global = JS::CurrentGlobalOrNull(aCx);
8215 5 : if (!(js::GetObjectClass(global)->flags & JSCLASS_DOM_GLOBAL)) {
8216 0 : return nullptr;
8217 : }
8218 :
8219 : /* Check to see whether the interface objects are already installed */
8220 5 : ProtoAndIfaceCache& protoAndIfaceCache = *GetProtoAndIfaceCache(global);
8221 5 : if (!protoAndIfaceCache.HasEntryInSlot(prototypes::id::HTMLElement)) {
8222 4 : JS::Rooted<JSObject*> rootedGlobal(aCx, global);
8223 2 : CreateInterfaceObjects(aCx, rootedGlobal, protoAndIfaceCache, aDefineOnGlobal);
8224 : }
8225 :
8226 : /*
8227 : * The object might _still_ be null, but that's OK.
8228 : *
8229 : * Calling fromMarkedLocation() is safe because protoAndIfaceCache is
8230 : * traced by TraceProtoAndIfaceCache() and its contents are never
8231 : * changed after they have been set.
8232 : *
8233 : * Calling address() avoids the read read barrier that does gray
8234 : * unmarking, but it's not possible for the object to be gray here.
8235 : */
8236 :
8237 5 : const JS::Heap<JSObject*>& entrySlot = protoAndIfaceCache.EntrySlotMustExist(prototypes::id::HTMLElement);
8238 5 : MOZ_ASSERT(JS::ObjectIsNotGray(entrySlot));
8239 5 : return JS::Handle<JSObject*>::fromMarkedLocation(entrySlot.address());
8240 : }
8241 :
8242 : JSObject*
8243 0 : GetProtoObject(JSContext* aCx)
8244 : {
8245 0 : return GetProtoObjectHandle(aCx);
8246 : }
8247 :
8248 : JS::Handle<JSObject*>
8249 5 : GetConstructorObjectHandle(JSContext* aCx, bool aDefineOnGlobal)
8250 : {
8251 : /* Get the interface object for this class. This will create the object as
8252 : needed. */
8253 :
8254 : /* Make sure our global is sane. Hopefully we can remove this sometime */
8255 5 : JSObject* global = JS::CurrentGlobalOrNull(aCx);
8256 5 : if (!(js::GetObjectClass(global)->flags & JSCLASS_DOM_GLOBAL)) {
8257 0 : return nullptr;
8258 : }
8259 :
8260 : /* Check to see whether the interface objects are already installed */
8261 5 : ProtoAndIfaceCache& protoAndIfaceCache = *GetProtoAndIfaceCache(global);
8262 5 : if (!protoAndIfaceCache.HasEntryInSlot(constructors::id::HTMLElement)) {
8263 0 : JS::Rooted<JSObject*> rootedGlobal(aCx, global);
8264 0 : CreateInterfaceObjects(aCx, rootedGlobal, protoAndIfaceCache, aDefineOnGlobal);
8265 : }
8266 :
8267 : /*
8268 : * The object might _still_ be null, but that's OK.
8269 : *
8270 : * Calling fromMarkedLocation() is safe because protoAndIfaceCache is
8271 : * traced by TraceProtoAndIfaceCache() and its contents are never
8272 : * changed after they have been set.
8273 : *
8274 : * Calling address() avoids the read read barrier that does gray
8275 : * unmarking, but it's not possible for the object to be gray here.
8276 : */
8277 :
8278 5 : const JS::Heap<JSObject*>& entrySlot = protoAndIfaceCache.EntrySlotMustExist(constructors::id::HTMLElement);
8279 5 : MOZ_ASSERT(JS::ObjectIsNotGray(entrySlot));
8280 5 : return JS::Handle<JSObject*>::fromMarkedLocation(entrySlot.address());
8281 : }
8282 :
8283 : JSObject*
8284 0 : GetConstructorObject(JSContext* aCx)
8285 : {
8286 0 : return GetConstructorObjectHandle(aCx);
8287 : }
8288 :
8289 : } // namespace HTMLElementBinding
8290 :
8291 :
8292 :
8293 : namespace HTMLUnknownElementBinding {
8294 :
8295 : static_assert(IsRefcounted<NativeType>::value == IsRefcounted<HTMLElementBinding::NativeType>::value,
8296 : "Can't inherit from an interface with a different ownership model.");
8297 :
8298 : static bool
8299 0 : _addProperty(JSContext* cx, JS::Handle<JSObject*> obj, JS::Handle<jsid> id, JS::Handle<JS::Value> val)
8300 : {
8301 0 : mozilla::dom::HTMLUnknownElement* self = UnwrapPossiblyNotInitializedDOMObject<mozilla::dom::HTMLUnknownElement>(obj);
8302 : // We don't want to preserve if we don't have a wrapper, and we
8303 : // obviously can't preserve if we're not initialized.
8304 0 : if (self && self->GetWrapperPreserveColor()) {
8305 0 : PreserveWrapper(self);
8306 : }
8307 0 : return true;
8308 : }
8309 :
8310 : static void
8311 0 : _finalize(js::FreeOp* fop, JSObject* obj)
8312 : {
8313 0 : mozilla::dom::HTMLUnknownElement* self = UnwrapPossiblyNotInitializedDOMObject<mozilla::dom::HTMLUnknownElement>(obj);
8314 0 : if (self) {
8315 0 : ClearWrapper(self, self, obj);
8316 0 : AddForDeferredFinalization<mozilla::dom::HTMLUnknownElement>(self);
8317 : }
8318 0 : }
8319 :
8320 : static void
8321 0 : _objectMoved(JSObject* obj, const JSObject* old)
8322 : {
8323 0 : mozilla::dom::HTMLUnknownElement* self = UnwrapPossiblyNotInitializedDOMObject<mozilla::dom::HTMLUnknownElement>(obj);
8324 0 : if (self) {
8325 0 : UpdateWrapper(self, self, obj, old);
8326 : }
8327 0 : }
8328 :
8329 : static const DOMIfaceAndProtoJSClass sInterfaceObjectClass = {
8330 : {
8331 : "Function",
8332 : JSCLASS_IS_DOMIFACEANDPROTOJSCLASS | JSCLASS_HAS_RESERVED_SLOTS(DOM_INTERFACE_SLOTS_BASE),
8333 : &sBoringInterfaceObjectClassClassOps,
8334 : JS_NULL_CLASS_SPEC,
8335 : JS_NULL_CLASS_EXT,
8336 : &sInterfaceObjectClassObjectOps
8337 : },
8338 : eInterface,
8339 : true,
8340 : prototypes::id::HTMLUnknownElement,
8341 : PrototypeTraits<prototypes::id::HTMLUnknownElement>::Depth,
8342 : sNativePropertyHooks,
8343 : "function HTMLUnknownElement() {\n [native code]\n}",
8344 : HTMLElementBinding::GetConstructorObject
8345 : };
8346 :
8347 : static const DOMIfaceAndProtoJSClass sPrototypeClass = {
8348 : {
8349 : "HTMLUnknownElementPrototype",
8350 : JSCLASS_IS_DOMIFACEANDPROTOJSCLASS | JSCLASS_HAS_RESERVED_SLOTS(DOM_INTERFACE_PROTO_SLOTS_BASE),
8351 : JS_NULL_CLASS_OPS,
8352 : JS_NULL_CLASS_SPEC,
8353 : JS_NULL_CLASS_EXT,
8354 : JS_NULL_OBJECT_OPS
8355 : },
8356 : eInterfacePrototype,
8357 : false,
8358 : prototypes::id::HTMLUnknownElement,
8359 : PrototypeTraits<prototypes::id::HTMLUnknownElement>::Depth,
8360 : sNativePropertyHooks,
8361 : "[object HTMLUnknownElementPrototype]",
8362 : HTMLElementBinding::GetProtoObject
8363 : };
8364 :
8365 : JSObject*
8366 0 : DefineDOMInterface(JSContext* aCx, JS::Handle<JSObject*> aGlobal, JS::Handle<jsid> id, bool aDefineOnGlobal)
8367 : {
8368 0 : return GetConstructorObjectHandle(aCx, aDefineOnGlobal);
8369 : }
8370 :
8371 : static const js::ClassOps sClassOps = {
8372 : _addProperty, /* addProperty */
8373 : nullptr, /* delProperty */
8374 : nullptr, /* getProperty */
8375 : nullptr, /* setProperty */
8376 : nullptr, /* enumerate */
8377 : nullptr, /* newEnumerate */
8378 : nullptr, /* resolve */
8379 : nullptr, /* mayResolve */
8380 : _finalize, /* finalize */
8381 : nullptr, /* call */
8382 : nullptr, /* hasInstance */
8383 : nullptr, /* construct */
8384 : nullptr, /* trace */
8385 : };
8386 :
8387 : static const js::ClassExtension sClassExtension = {
8388 : nullptr, /* weakmapKeyDelegateOp */
8389 : _objectMoved /* objectMovedOp */
8390 : };
8391 :
8392 : static const DOMJSClass sClass = {
8393 : { "HTMLUnknownElement",
8394 : JSCLASS_IS_DOMJSCLASS | JSCLASS_FOREGROUND_FINALIZE | JSCLASS_HAS_RESERVED_SLOTS(1),
8395 : &sClassOps,
8396 : JS_NULL_CLASS_SPEC,
8397 : &sClassExtension,
8398 : JS_NULL_OBJECT_OPS
8399 : },
8400 : { prototypes::id::EventTarget, prototypes::id::Node, prototypes::id::Element, prototypes::id::HTMLElement, prototypes::id::HTMLUnknownElement, prototypes::id::_ID_Count, prototypes::id::_ID_Count, prototypes::id::_ID_Count },
8401 : IsBaseOf<nsISupports, mozilla::dom::HTMLUnknownElement >::value,
8402 : sNativePropertyHooks,
8403 : FindAssociatedGlobalForNative<mozilla::dom::HTMLUnknownElement>::Get,
8404 : GetProtoObjectHandle,
8405 : GetCCParticipant<mozilla::dom::HTMLUnknownElement>::Get()
8406 : };
8407 : static_assert(1 == DOM_INSTANCE_RESERVED_SLOTS,
8408 : "Must have the right minimal number of reserved slots.");
8409 : static_assert(1 >= 1,
8410 : "Must have enough reserved slots.");
8411 :
8412 : const JSClass*
8413 0 : GetJSClass()
8414 : {
8415 0 : return sClass.ToJSClass();
8416 : }
8417 :
8418 : bool
8419 0 : Wrap(JSContext* aCx, mozilla::dom::HTMLUnknownElement* aObject, nsWrapperCache* aCache, JS::Handle<JSObject*> aGivenProto, JS::MutableHandle<JSObject*> aReflector)
8420 : {
8421 : MOZ_ASSERT(static_cast<mozilla::dom::HTMLUnknownElement*>(aObject) ==
8422 : reinterpret_cast<mozilla::dom::HTMLUnknownElement*>(aObject),
8423 : "Multiple inheritance for mozilla::dom::HTMLUnknownElement is broken.");
8424 : MOZ_ASSERT(static_cast<nsGenericHTMLElement*>(aObject) ==
8425 : reinterpret_cast<nsGenericHTMLElement*>(aObject),
8426 : "Multiple inheritance for nsGenericHTMLElement is broken.");
8427 : MOZ_ASSERT(static_cast<mozilla::dom::Element*>(aObject) ==
8428 : reinterpret_cast<mozilla::dom::Element*>(aObject),
8429 : "Multiple inheritance for mozilla::dom::Element is broken.");
8430 : MOZ_ASSERT(static_cast<nsINode*>(aObject) ==
8431 : reinterpret_cast<nsINode*>(aObject),
8432 : "Multiple inheritance for nsINode is broken.");
8433 : MOZ_ASSERT(static_cast<mozilla::dom::EventTarget*>(aObject) ==
8434 : reinterpret_cast<mozilla::dom::EventTarget*>(aObject),
8435 : "Multiple inheritance for mozilla::dom::EventTarget is broken.");
8436 0 : MOZ_ASSERT(ToSupportsIsCorrect(aObject));
8437 0 : MOZ_ASSERT_IF(aGivenProto, js::IsObjectInContextCompartment(aGivenProto, aCx));
8438 0 : MOZ_ASSERT(!aCache->GetWrapper(),
8439 : "You should probably not be using Wrap() directly; use "
8440 : "GetOrCreateDOMReflector instead");
8441 :
8442 0 : MOZ_ASSERT(ToSupportsIsOnPrimaryInheritanceChain(aObject, aCache),
8443 : "nsISupports must be on our primary inheritance chain");
8444 :
8445 0 : JS::Rooted<JSObject*> global(aCx, FindAssociatedGlobal(aCx, aObject->GetParentObject()));
8446 0 : if (!global) {
8447 0 : return false;
8448 : }
8449 0 : MOZ_ASSERT(JS_IsGlobalObject(global));
8450 0 : MOZ_ASSERT(JS::ObjectIsNotGray(global));
8451 :
8452 : // That might have ended up wrapping us already, due to the wonders
8453 : // of XBL. Check for that, and bail out as needed.
8454 0 : aReflector.set(aCache->GetWrapper());
8455 0 : if (aReflector) {
8456 : #ifdef DEBUG
8457 0 : binding_detail::AssertReflectorHasGivenProto(aCx, aReflector, aGivenProto);
8458 : #endif // DEBUG
8459 0 : return true;
8460 : }
8461 :
8462 0 : JSAutoCompartment ac(aCx, global);
8463 0 : JS::Handle<JSObject*> canonicalProto = GetProtoObjectHandle(aCx);
8464 0 : if (!canonicalProto) {
8465 0 : return false;
8466 : }
8467 0 : JS::Rooted<JSObject*> proto(aCx);
8468 0 : if (aGivenProto) {
8469 0 : proto = aGivenProto;
8470 : // Unfortunately, while aGivenProto was in the compartment of aCx
8471 : // coming in, we changed compartments to that of "parent" so may need
8472 : // to wrap the proto here.
8473 0 : if (js::GetContextCompartment(aCx) != js::GetObjectCompartment(proto)) {
8474 0 : if (!JS_WrapObject(aCx, &proto)) {
8475 0 : return false;
8476 : }
8477 : }
8478 : } else {
8479 0 : proto = canonicalProto;
8480 : }
8481 :
8482 0 : BindingJSObjectCreator<mozilla::dom::HTMLUnknownElement> creator(aCx);
8483 0 : creator.CreateObject(aCx, sClass.ToJSClass(), proto, aObject, aReflector);
8484 0 : if (!aReflector) {
8485 0 : return false;
8486 : }
8487 :
8488 0 : aCache->SetWrapper(aReflector);
8489 0 : creator.InitializationSucceeded();
8490 :
8491 0 : MOZ_ASSERT(aCache->GetWrapperPreserveColor() &&
8492 : aCache->GetWrapperPreserveColor() == aReflector);
8493 : // If proto != canonicalProto, we have to preserve our wrapper;
8494 : // otherwise we won't be able to properly recreate it later, since
8495 : // we won't know what proto to use. Note that we don't check
8496 : // aGivenProto here, since it's entirely possible (and even
8497 : // somewhat common) to have a non-null aGivenProto which is the
8498 : // same as canonicalProto.
8499 0 : if (proto != canonicalProto) {
8500 0 : PreserveWrapper(aObject);
8501 : }
8502 :
8503 0 : return true;
8504 : }
8505 :
8506 : const NativePropertyHooks sNativePropertyHooks[] = { {
8507 : nullptr,
8508 : nullptr,
8509 : nullptr,
8510 : { nullptr, nullptr },
8511 : prototypes::id::HTMLUnknownElement,
8512 : constructors::id::HTMLUnknownElement,
8513 : HTMLElementBinding::sNativePropertyHooks,
8514 : &DefaultXrayExpandoObjectClass
8515 : } };
8516 :
8517 : void
8518 0 : CreateInterfaceObjects(JSContext* aCx, JS::Handle<JSObject*> aGlobal, ProtoAndIfaceCache& aProtoAndIfaceCache, bool aDefineOnGlobal)
8519 : {
8520 0 : JS::Handle<JSObject*> parentProto(HTMLElementBinding::GetProtoObjectHandle(aCx));
8521 0 : if (!parentProto) {
8522 0 : return;
8523 : }
8524 :
8525 0 : JS::Handle<JSObject*> constructorProto(HTMLElementBinding::GetConstructorObjectHandle(aCx));
8526 0 : if (!constructorProto) {
8527 0 : return;
8528 : }
8529 :
8530 0 : JS::Heap<JSObject*>* protoCache = &aProtoAndIfaceCache.EntrySlotOrCreate(prototypes::id::HTMLUnknownElement);
8531 0 : JS::Heap<JSObject*>* interfaceCache = &aProtoAndIfaceCache.EntrySlotOrCreate(constructors::id::HTMLUnknownElement);
8532 0 : dom::CreateInterfaceObjects(aCx, aGlobal, parentProto,
8533 : &sPrototypeClass.mBase, protoCache,
8534 : constructorProto, &sInterfaceObjectClass.mBase, 0, nullptr,
8535 : interfaceCache,
8536 : nullptr,
8537 : nullptr,
8538 : "HTMLUnknownElement", aDefineOnGlobal,
8539 : nullptr,
8540 0 : false);
8541 : }
8542 :
8543 : JS::Handle<JSObject*>
8544 0 : GetProtoObjectHandle(JSContext* aCx)
8545 : {
8546 : /* Get the interface prototype object for this class. This will create the
8547 : object as needed. */
8548 0 : bool aDefineOnGlobal = true;
8549 :
8550 : /* Make sure our global is sane. Hopefully we can remove this sometime */
8551 0 : JSObject* global = JS::CurrentGlobalOrNull(aCx);
8552 0 : if (!(js::GetObjectClass(global)->flags & JSCLASS_DOM_GLOBAL)) {
8553 0 : return nullptr;
8554 : }
8555 :
8556 : /* Check to see whether the interface objects are already installed */
8557 0 : ProtoAndIfaceCache& protoAndIfaceCache = *GetProtoAndIfaceCache(global);
8558 0 : if (!protoAndIfaceCache.HasEntryInSlot(prototypes::id::HTMLUnknownElement)) {
8559 0 : JS::Rooted<JSObject*> rootedGlobal(aCx, global);
8560 0 : CreateInterfaceObjects(aCx, rootedGlobal, protoAndIfaceCache, aDefineOnGlobal);
8561 : }
8562 :
8563 : /*
8564 : * The object might _still_ be null, but that's OK.
8565 : *
8566 : * Calling fromMarkedLocation() is safe because protoAndIfaceCache is
8567 : * traced by TraceProtoAndIfaceCache() and its contents are never
8568 : * changed after they have been set.
8569 : *
8570 : * Calling address() avoids the read read barrier that does gray
8571 : * unmarking, but it's not possible for the object to be gray here.
8572 : */
8573 :
8574 0 : const JS::Heap<JSObject*>& entrySlot = protoAndIfaceCache.EntrySlotMustExist(prototypes::id::HTMLUnknownElement);
8575 0 : MOZ_ASSERT(JS::ObjectIsNotGray(entrySlot));
8576 0 : return JS::Handle<JSObject*>::fromMarkedLocation(entrySlot.address());
8577 : }
8578 :
8579 : JS::Handle<JSObject*>
8580 0 : GetConstructorObjectHandle(JSContext* aCx, bool aDefineOnGlobal)
8581 : {
8582 : /* Get the interface object for this class. This will create the object as
8583 : needed. */
8584 :
8585 : /* Make sure our global is sane. Hopefully we can remove this sometime */
8586 0 : JSObject* global = JS::CurrentGlobalOrNull(aCx);
8587 0 : if (!(js::GetObjectClass(global)->flags & JSCLASS_DOM_GLOBAL)) {
8588 0 : return nullptr;
8589 : }
8590 :
8591 : /* Check to see whether the interface objects are already installed */
8592 0 : ProtoAndIfaceCache& protoAndIfaceCache = *GetProtoAndIfaceCache(global);
8593 0 : if (!protoAndIfaceCache.HasEntryInSlot(constructors::id::HTMLUnknownElement)) {
8594 0 : JS::Rooted<JSObject*> rootedGlobal(aCx, global);
8595 0 : CreateInterfaceObjects(aCx, rootedGlobal, protoAndIfaceCache, aDefineOnGlobal);
8596 : }
8597 :
8598 : /*
8599 : * The object might _still_ be null, but that's OK.
8600 : *
8601 : * Calling fromMarkedLocation() is safe because protoAndIfaceCache is
8602 : * traced by TraceProtoAndIfaceCache() and its contents are never
8603 : * changed after they have been set.
8604 : *
8605 : * Calling address() avoids the read read barrier that does gray
8606 : * unmarking, but it's not possible for the object to be gray here.
8607 : */
8608 :
8609 0 : const JS::Heap<JSObject*>& entrySlot = protoAndIfaceCache.EntrySlotMustExist(constructors::id::HTMLUnknownElement);
8610 0 : MOZ_ASSERT(JS::ObjectIsNotGray(entrySlot));
8611 0 : return JS::Handle<JSObject*>::fromMarkedLocation(entrySlot.address());
8612 : }
8613 :
8614 : JSObject*
8615 0 : GetConstructorObject(JSContext* aCx)
8616 : {
8617 0 : return GetConstructorObjectHandle(aCx);
8618 : }
8619 :
8620 : } // namespace HTMLUnknownElementBinding
8621 :
8622 :
8623 :
8624 : } // namespace dom
8625 : } // namespace mozilla
|