Line data Source code
1 : /* THIS FILE IS AUTOGENERATED FROM XULElement.webidl BY Codegen.py - DO NOT EDIT */
2 :
3 : #include "ElementBinding.h"
4 : #include "EventHandlerBinding.h"
5 : #include "WrapperFactory.h"
6 : #include "XULElementBinding.h"
7 : #include "mozilla/OwningNonNull.h"
8 : #include "mozilla/Preferences.h"
9 : #include "mozilla/dom/BindingUtils.h"
10 : #include "mozilla/dom/BoxObject.h"
11 : #include "mozilla/dom/DOMJSClass.h"
12 : #include "mozilla/dom/HTMLIFrameElement.h"
13 : #include "mozilla/dom/NonRefcountedDOMObject.h"
14 : #include "mozilla/dom/Nullable.h"
15 : #include "mozilla/dom/PrimitiveConversions.h"
16 : #include "mozilla/dom/XrayExpandoClass.h"
17 : #include "nsContentUtils.h"
18 : #include "nsGenericHTMLElement.h"
19 : #include "nsICSSDeclaration.h"
20 : #include "nsIControllers.h"
21 : #include "nsIFrameLoader.h"
22 : #include "nsINodeList.h"
23 : #include "nsIRDFCompositeDataSource.h"
24 : #include "nsIRDFResource.h"
25 : #include "nsPIDOMWindow.h"
26 : #include "nsXULElement.h"
27 : #include "nsXULTemplateBuilder.h"
28 :
29 : namespace mozilla {
30 : namespace dom {
31 :
32 : namespace XULElementBinding {
33 :
34 : static_assert(IsRefcounted<NativeType>::value == IsRefcounted<ElementBinding::NativeType>::value,
35 : "Can't inherit from an interface with a different ownership model.");
36 :
37 : static bool
38 0 : get_align(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
39 : {
40 0 : DOMString result;
41 0 : self->GetAlign(result);
42 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
43 0 : if (!xpc::NonVoidStringToJsval(cx, result, args.rval())) {
44 0 : return false;
45 : }
46 0 : return true;
47 : }
48 :
49 : static bool
50 0 : set_align(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
51 : {
52 0 : binding_detail::FakeString arg0;
53 0 : if (!ConvertJSValueToString(cx, args[0], eStringify, eStringify, arg0)) {
54 0 : return false;
55 : }
56 0 : binding_detail::FastErrorResult rv;
57 0 : self->SetAlign(NonNullHelper(Constify(arg0)), rv);
58 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
59 0 : return false;
60 : }
61 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
62 :
63 0 : return true;
64 : }
65 :
66 : static const JSJitInfo align_getterinfo = {
67 : { (JSJitGetterOp)get_align },
68 : { prototypes::id::XULElement },
69 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
70 : JSJitInfo::Getter,
71 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
72 : JSVAL_TYPE_STRING, /* returnType. Not relevant for setters. */
73 : false, /* isInfallible. False in setters. */
74 : false, /* isMovable. Not relevant for setters. */
75 : false, /* isEliminatable. Not relevant for setters. */
76 : false, /* isAlwaysInSlot. Only relevant for getters. */
77 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
78 : false, /* isTypedMethod. Only relevant for methods. */
79 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
80 : };
81 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
82 : static_assert(0 < 1, "There is no slot for us");
83 : static const JSJitInfo align_setterinfo = {
84 : { (JSJitGetterOp)set_align },
85 : { prototypes::id::XULElement },
86 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
87 : JSJitInfo::Setter,
88 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
89 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
90 : false, /* isInfallible. False in setters. */
91 : false, /* isMovable. Not relevant for setters. */
92 : false, /* isEliminatable. Not relevant for setters. */
93 : false, /* isAlwaysInSlot. Only relevant for getters. */
94 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
95 : false, /* isTypedMethod. Only relevant for methods. */
96 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
97 : };
98 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
99 : static_assert(0 < 1, "There is no slot for us");
100 :
101 : static bool
102 0 : get_dir(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
103 : {
104 0 : DOMString result;
105 0 : self->GetDir(result);
106 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
107 0 : if (!xpc::NonVoidStringToJsval(cx, result, args.rval())) {
108 0 : return false;
109 : }
110 0 : return true;
111 : }
112 :
113 : static bool
114 0 : set_dir(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
115 : {
116 0 : binding_detail::FakeString arg0;
117 0 : if (!ConvertJSValueToString(cx, args[0], eStringify, eStringify, arg0)) {
118 0 : return false;
119 : }
120 0 : binding_detail::FastErrorResult rv;
121 0 : self->SetDir(NonNullHelper(Constify(arg0)), rv);
122 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
123 0 : return false;
124 : }
125 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
126 :
127 0 : return true;
128 : }
129 :
130 : static const JSJitInfo dir_getterinfo = {
131 : { (JSJitGetterOp)get_dir },
132 : { prototypes::id::XULElement },
133 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
134 : JSJitInfo::Getter,
135 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
136 : JSVAL_TYPE_STRING, /* returnType. Not relevant for setters. */
137 : false, /* isInfallible. False in setters. */
138 : false, /* isMovable. Not relevant for setters. */
139 : false, /* isEliminatable. Not relevant for setters. */
140 : false, /* isAlwaysInSlot. Only relevant for getters. */
141 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
142 : false, /* isTypedMethod. Only relevant for methods. */
143 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
144 : };
145 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
146 : static_assert(0 < 1, "There is no slot for us");
147 : static const JSJitInfo dir_setterinfo = {
148 : { (JSJitGetterOp)set_dir },
149 : { prototypes::id::XULElement },
150 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
151 : JSJitInfo::Setter,
152 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
153 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
154 : false, /* isInfallible. False in setters. */
155 : false, /* isMovable. Not relevant for setters. */
156 : false, /* isEliminatable. Not relevant for setters. */
157 : false, /* isAlwaysInSlot. Only relevant for getters. */
158 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
159 : false, /* isTypedMethod. Only relevant for methods. */
160 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
161 : };
162 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
163 : static_assert(0 < 1, "There is no slot for us");
164 :
165 : static bool
166 0 : get_flex(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
167 : {
168 0 : DOMString result;
169 0 : self->GetFlex(result);
170 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
171 0 : if (!xpc::NonVoidStringToJsval(cx, result, args.rval())) {
172 0 : return false;
173 : }
174 0 : return true;
175 : }
176 :
177 : static bool
178 0 : set_flex(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
179 : {
180 0 : binding_detail::FakeString arg0;
181 0 : if (!ConvertJSValueToString(cx, args[0], eStringify, eStringify, arg0)) {
182 0 : return false;
183 : }
184 0 : binding_detail::FastErrorResult rv;
185 0 : self->SetFlex(NonNullHelper(Constify(arg0)), rv);
186 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
187 0 : return false;
188 : }
189 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
190 :
191 0 : return true;
192 : }
193 :
194 : static const JSJitInfo flex_getterinfo = {
195 : { (JSJitGetterOp)get_flex },
196 : { prototypes::id::XULElement },
197 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
198 : JSJitInfo::Getter,
199 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
200 : JSVAL_TYPE_STRING, /* returnType. Not relevant for setters. */
201 : false, /* isInfallible. False in setters. */
202 : false, /* isMovable. Not relevant for setters. */
203 : false, /* isEliminatable. Not relevant for setters. */
204 : false, /* isAlwaysInSlot. Only relevant for getters. */
205 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
206 : false, /* isTypedMethod. Only relevant for methods. */
207 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
208 : };
209 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
210 : static_assert(0 < 1, "There is no slot for us");
211 : static const JSJitInfo flex_setterinfo = {
212 : { (JSJitGetterOp)set_flex },
213 : { prototypes::id::XULElement },
214 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
215 : JSJitInfo::Setter,
216 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
217 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
218 : false, /* isInfallible. False in setters. */
219 : false, /* isMovable. Not relevant for setters. */
220 : false, /* isEliminatable. Not relevant for setters. */
221 : false, /* isAlwaysInSlot. Only relevant for getters. */
222 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
223 : false, /* isTypedMethod. Only relevant for methods. */
224 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
225 : };
226 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
227 : static_assert(0 < 1, "There is no slot for us");
228 :
229 : static bool
230 0 : get_flexGroup(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
231 : {
232 0 : DOMString result;
233 0 : self->GetFlexGroup(result);
234 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
235 0 : if (!xpc::NonVoidStringToJsval(cx, result, args.rval())) {
236 0 : return false;
237 : }
238 0 : return true;
239 : }
240 :
241 : static bool
242 0 : set_flexGroup(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
243 : {
244 0 : binding_detail::FakeString arg0;
245 0 : if (!ConvertJSValueToString(cx, args[0], eStringify, eStringify, arg0)) {
246 0 : return false;
247 : }
248 0 : binding_detail::FastErrorResult rv;
249 0 : self->SetFlexGroup(NonNullHelper(Constify(arg0)), rv);
250 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
251 0 : return false;
252 : }
253 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
254 :
255 0 : return true;
256 : }
257 :
258 : static const JSJitInfo flexGroup_getterinfo = {
259 : { (JSJitGetterOp)get_flexGroup },
260 : { prototypes::id::XULElement },
261 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
262 : JSJitInfo::Getter,
263 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
264 : JSVAL_TYPE_STRING, /* returnType. Not relevant for setters. */
265 : false, /* isInfallible. False in setters. */
266 : false, /* isMovable. Not relevant for setters. */
267 : false, /* isEliminatable. Not relevant for setters. */
268 : false, /* isAlwaysInSlot. Only relevant for getters. */
269 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
270 : false, /* isTypedMethod. Only relevant for methods. */
271 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
272 : };
273 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
274 : static_assert(0 < 1, "There is no slot for us");
275 : static const JSJitInfo flexGroup_setterinfo = {
276 : { (JSJitGetterOp)set_flexGroup },
277 : { prototypes::id::XULElement },
278 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
279 : JSJitInfo::Setter,
280 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
281 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
282 : false, /* isInfallible. False in setters. */
283 : false, /* isMovable. Not relevant for setters. */
284 : false, /* isEliminatable. Not relevant for setters. */
285 : false, /* isAlwaysInSlot. Only relevant for getters. */
286 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
287 : false, /* isTypedMethod. Only relevant for methods. */
288 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
289 : };
290 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
291 : static_assert(0 < 1, "There is no slot for us");
292 :
293 : static bool
294 0 : get_ordinal(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
295 : {
296 0 : DOMString result;
297 0 : self->GetOrdinal(result);
298 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
299 0 : if (!xpc::NonVoidStringToJsval(cx, result, args.rval())) {
300 0 : return false;
301 : }
302 0 : return true;
303 : }
304 :
305 : static bool
306 0 : set_ordinal(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
307 : {
308 0 : binding_detail::FakeString arg0;
309 0 : if (!ConvertJSValueToString(cx, args[0], eStringify, eStringify, arg0)) {
310 0 : return false;
311 : }
312 0 : binding_detail::FastErrorResult rv;
313 0 : self->SetOrdinal(NonNullHelper(Constify(arg0)), rv);
314 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
315 0 : return false;
316 : }
317 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
318 :
319 0 : return true;
320 : }
321 :
322 : static const JSJitInfo ordinal_getterinfo = {
323 : { (JSJitGetterOp)get_ordinal },
324 : { prototypes::id::XULElement },
325 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
326 : JSJitInfo::Getter,
327 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
328 : JSVAL_TYPE_STRING, /* returnType. Not relevant for setters. */
329 : false, /* isInfallible. False in setters. */
330 : false, /* isMovable. Not relevant for setters. */
331 : false, /* isEliminatable. Not relevant for setters. */
332 : false, /* isAlwaysInSlot. Only relevant for getters. */
333 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
334 : false, /* isTypedMethod. Only relevant for methods. */
335 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
336 : };
337 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
338 : static_assert(0 < 1, "There is no slot for us");
339 : static const JSJitInfo ordinal_setterinfo = {
340 : { (JSJitGetterOp)set_ordinal },
341 : { prototypes::id::XULElement },
342 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
343 : JSJitInfo::Setter,
344 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
345 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
346 : false, /* isInfallible. False in setters. */
347 : false, /* isMovable. Not relevant for setters. */
348 : false, /* isEliminatable. Not relevant for setters. */
349 : false, /* isAlwaysInSlot. Only relevant for getters. */
350 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
351 : false, /* isTypedMethod. Only relevant for methods. */
352 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
353 : };
354 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
355 : static_assert(0 < 1, "There is no slot for us");
356 :
357 : static bool
358 0 : get_orient(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
359 : {
360 0 : DOMString result;
361 0 : self->GetOrient(result);
362 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
363 0 : if (!xpc::NonVoidStringToJsval(cx, result, args.rval())) {
364 0 : return false;
365 : }
366 0 : return true;
367 : }
368 :
369 : static bool
370 0 : set_orient(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
371 : {
372 0 : binding_detail::FakeString arg0;
373 0 : if (!ConvertJSValueToString(cx, args[0], eStringify, eStringify, arg0)) {
374 0 : return false;
375 : }
376 0 : binding_detail::FastErrorResult rv;
377 0 : self->SetOrient(NonNullHelper(Constify(arg0)), rv);
378 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
379 0 : return false;
380 : }
381 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
382 :
383 0 : return true;
384 : }
385 :
386 : static const JSJitInfo orient_getterinfo = {
387 : { (JSJitGetterOp)get_orient },
388 : { prototypes::id::XULElement },
389 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
390 : JSJitInfo::Getter,
391 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
392 : JSVAL_TYPE_STRING, /* returnType. Not relevant for setters. */
393 : false, /* isInfallible. False in setters. */
394 : false, /* isMovable. Not relevant for setters. */
395 : false, /* isEliminatable. Not relevant for setters. */
396 : false, /* isAlwaysInSlot. Only relevant for getters. */
397 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
398 : false, /* isTypedMethod. Only relevant for methods. */
399 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
400 : };
401 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
402 : static_assert(0 < 1, "There is no slot for us");
403 : static const JSJitInfo orient_setterinfo = {
404 : { (JSJitGetterOp)set_orient },
405 : { prototypes::id::XULElement },
406 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
407 : JSJitInfo::Setter,
408 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
409 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
410 : false, /* isInfallible. False in setters. */
411 : false, /* isMovable. Not relevant for setters. */
412 : false, /* isEliminatable. Not relevant for setters. */
413 : false, /* isAlwaysInSlot. Only relevant for getters. */
414 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
415 : false, /* isTypedMethod. Only relevant for methods. */
416 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
417 : };
418 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
419 : static_assert(0 < 1, "There is no slot for us");
420 :
421 : static bool
422 0 : get_pack(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
423 : {
424 0 : DOMString result;
425 0 : self->GetPack(result);
426 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
427 0 : if (!xpc::NonVoidStringToJsval(cx, result, args.rval())) {
428 0 : return false;
429 : }
430 0 : return true;
431 : }
432 :
433 : static bool
434 0 : set_pack(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
435 : {
436 0 : binding_detail::FakeString arg0;
437 0 : if (!ConvertJSValueToString(cx, args[0], eStringify, eStringify, arg0)) {
438 0 : return false;
439 : }
440 0 : binding_detail::FastErrorResult rv;
441 0 : self->SetPack(NonNullHelper(Constify(arg0)), rv);
442 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
443 0 : return false;
444 : }
445 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
446 :
447 0 : return true;
448 : }
449 :
450 : static const JSJitInfo pack_getterinfo = {
451 : { (JSJitGetterOp)get_pack },
452 : { prototypes::id::XULElement },
453 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
454 : JSJitInfo::Getter,
455 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
456 : JSVAL_TYPE_STRING, /* returnType. Not relevant for setters. */
457 : false, /* isInfallible. False in setters. */
458 : false, /* isMovable. Not relevant for setters. */
459 : false, /* isEliminatable. Not relevant for setters. */
460 : false, /* isAlwaysInSlot. Only relevant for getters. */
461 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
462 : false, /* isTypedMethod. Only relevant for methods. */
463 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
464 : };
465 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
466 : static_assert(0 < 1, "There is no slot for us");
467 : static const JSJitInfo pack_setterinfo = {
468 : { (JSJitGetterOp)set_pack },
469 : { prototypes::id::XULElement },
470 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
471 : JSJitInfo::Setter,
472 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
473 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
474 : false, /* isInfallible. False in setters. */
475 : false, /* isMovable. Not relevant for setters. */
476 : false, /* isEliminatable. Not relevant for setters. */
477 : false, /* isAlwaysInSlot. Only relevant for getters. */
478 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
479 : false, /* isTypedMethod. Only relevant for methods. */
480 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
481 : };
482 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
483 : static_assert(0 < 1, "There is no slot for us");
484 :
485 : static bool
486 3 : get_hidden(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
487 : {
488 3 : bool result(self->Hidden());
489 3 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
490 3 : args.rval().setBoolean(result);
491 3 : return true;
492 : }
493 :
494 : static bool
495 18 : set_hidden(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
496 : {
497 : bool arg0;
498 18 : if (!ValueToPrimitive<bool, eDefault>(cx, args[0], &arg0)) {
499 0 : return false;
500 : }
501 18 : self->SetHidden(arg0);
502 18 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
503 :
504 18 : return true;
505 : }
506 :
507 : static const JSJitInfo hidden_getterinfo = {
508 : { (JSJitGetterOp)get_hidden },
509 : { prototypes::id::XULElement },
510 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
511 : JSJitInfo::Getter,
512 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
513 : JSVAL_TYPE_BOOLEAN, /* returnType. Not relevant for setters. */
514 : true, /* isInfallible. False in setters. */
515 : false, /* isMovable. Not relevant for setters. */
516 : false, /* isEliminatable. Not relevant for setters. */
517 : false, /* isAlwaysInSlot. Only relevant for getters. */
518 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
519 : false, /* isTypedMethod. Only relevant for methods. */
520 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
521 : };
522 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
523 : static_assert(0 < 1, "There is no slot for us");
524 : static const JSJitInfo hidden_setterinfo = {
525 : { (JSJitGetterOp)set_hidden },
526 : { prototypes::id::XULElement },
527 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
528 : JSJitInfo::Setter,
529 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
530 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
531 : false, /* isInfallible. False in setters. */
532 : false, /* isMovable. Not relevant for setters. */
533 : false, /* isEliminatable. Not relevant for setters. */
534 : false, /* isAlwaysInSlot. Only relevant for getters. */
535 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
536 : false, /* isTypedMethod. Only relevant for methods. */
537 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
538 : };
539 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
540 : static_assert(0 < 1, "There is no slot for us");
541 :
542 : static bool
543 4 : get_collapsed(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
544 : {
545 4 : bool result(self->Collapsed());
546 4 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
547 4 : args.rval().setBoolean(result);
548 4 : return true;
549 : }
550 :
551 : static bool
552 6 : set_collapsed(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
553 : {
554 : bool arg0;
555 6 : if (!ValueToPrimitive<bool, eDefault>(cx, args[0], &arg0)) {
556 0 : return false;
557 : }
558 6 : self->SetCollapsed(arg0);
559 6 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
560 :
561 6 : return true;
562 : }
563 :
564 : static const JSJitInfo collapsed_getterinfo = {
565 : { (JSJitGetterOp)get_collapsed },
566 : { prototypes::id::XULElement },
567 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
568 : JSJitInfo::Getter,
569 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
570 : JSVAL_TYPE_BOOLEAN, /* returnType. Not relevant for setters. */
571 : true, /* isInfallible. False in setters. */
572 : false, /* isMovable. Not relevant for setters. */
573 : false, /* isEliminatable. Not relevant for setters. */
574 : false, /* isAlwaysInSlot. Only relevant for getters. */
575 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
576 : false, /* isTypedMethod. Only relevant for methods. */
577 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
578 : };
579 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
580 : static_assert(0 < 1, "There is no slot for us");
581 : static const JSJitInfo collapsed_setterinfo = {
582 : { (JSJitGetterOp)set_collapsed },
583 : { prototypes::id::XULElement },
584 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
585 : JSJitInfo::Setter,
586 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
587 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
588 : false, /* isInfallible. False in setters. */
589 : false, /* isMovable. Not relevant for setters. */
590 : false, /* isEliminatable. Not relevant for setters. */
591 : false, /* isAlwaysInSlot. Only relevant for getters. */
592 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
593 : false, /* isTypedMethod. Only relevant for methods. */
594 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
595 : };
596 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
597 : static_assert(0 < 1, "There is no slot for us");
598 :
599 : static bool
600 0 : get_observes(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
601 : {
602 0 : DOMString result;
603 0 : self->GetObserves(result);
604 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
605 0 : if (!xpc::NonVoidStringToJsval(cx, result, args.rval())) {
606 0 : return false;
607 : }
608 0 : return true;
609 : }
610 :
611 : static bool
612 0 : set_observes(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
613 : {
614 0 : binding_detail::FakeString arg0;
615 0 : if (!ConvertJSValueToString(cx, args[0], eStringify, eStringify, arg0)) {
616 0 : return false;
617 : }
618 0 : binding_detail::FastErrorResult rv;
619 0 : self->SetObserves(NonNullHelper(Constify(arg0)), rv);
620 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
621 0 : return false;
622 : }
623 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
624 :
625 0 : return true;
626 : }
627 :
628 : static const JSJitInfo observes_getterinfo = {
629 : { (JSJitGetterOp)get_observes },
630 : { prototypes::id::XULElement },
631 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
632 : JSJitInfo::Getter,
633 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
634 : JSVAL_TYPE_STRING, /* returnType. Not relevant for setters. */
635 : false, /* isInfallible. False in setters. */
636 : false, /* isMovable. Not relevant for setters. */
637 : false, /* isEliminatable. Not relevant for setters. */
638 : false, /* isAlwaysInSlot. Only relevant for getters. */
639 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
640 : false, /* isTypedMethod. Only relevant for methods. */
641 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
642 : };
643 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
644 : static_assert(0 < 1, "There is no slot for us");
645 : static const JSJitInfo observes_setterinfo = {
646 : { (JSJitGetterOp)set_observes },
647 : { prototypes::id::XULElement },
648 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
649 : JSJitInfo::Setter,
650 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
651 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
652 : false, /* isInfallible. False in setters. */
653 : false, /* isMovable. Not relevant for setters. */
654 : false, /* isEliminatable. Not relevant for setters. */
655 : false, /* isAlwaysInSlot. Only relevant for getters. */
656 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
657 : false, /* isTypedMethod. Only relevant for methods. */
658 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
659 : };
660 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
661 : static_assert(0 < 1, "There is no slot for us");
662 :
663 : static bool
664 0 : get_menu(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
665 : {
666 0 : DOMString result;
667 0 : self->GetMenu(result);
668 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
669 0 : if (!xpc::NonVoidStringToJsval(cx, result, args.rval())) {
670 0 : return false;
671 : }
672 0 : return true;
673 : }
674 :
675 : static bool
676 0 : set_menu(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
677 : {
678 0 : binding_detail::FakeString arg0;
679 0 : if (!ConvertJSValueToString(cx, args[0], eStringify, eStringify, arg0)) {
680 0 : return false;
681 : }
682 0 : binding_detail::FastErrorResult rv;
683 0 : self->SetMenu(NonNullHelper(Constify(arg0)), rv);
684 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
685 0 : return false;
686 : }
687 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
688 :
689 0 : return true;
690 : }
691 :
692 : static const JSJitInfo menu_getterinfo = {
693 : { (JSJitGetterOp)get_menu },
694 : { prototypes::id::XULElement },
695 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
696 : JSJitInfo::Getter,
697 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
698 : JSVAL_TYPE_STRING, /* returnType. Not relevant for setters. */
699 : false, /* isInfallible. False in setters. */
700 : false, /* isMovable. Not relevant for setters. */
701 : false, /* isEliminatable. Not relevant for setters. */
702 : false, /* isAlwaysInSlot. Only relevant for getters. */
703 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
704 : false, /* isTypedMethod. Only relevant for methods. */
705 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
706 : };
707 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
708 : static_assert(0 < 1, "There is no slot for us");
709 : static const JSJitInfo menu_setterinfo = {
710 : { (JSJitGetterOp)set_menu },
711 : { prototypes::id::XULElement },
712 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
713 : JSJitInfo::Setter,
714 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
715 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
716 : false, /* isInfallible. False in setters. */
717 : false, /* isMovable. Not relevant for setters. */
718 : false, /* isEliminatable. Not relevant for setters. */
719 : false, /* isAlwaysInSlot. Only relevant for getters. */
720 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
721 : false, /* isTypedMethod. Only relevant for methods. */
722 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
723 : };
724 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
725 : static_assert(0 < 1, "There is no slot for us");
726 :
727 : static bool
728 0 : get_contextMenu(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
729 : {
730 0 : DOMString result;
731 0 : self->GetContextMenu(result);
732 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
733 0 : if (!xpc::NonVoidStringToJsval(cx, result, args.rval())) {
734 0 : return false;
735 : }
736 0 : return true;
737 : }
738 :
739 : static bool
740 0 : set_contextMenu(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
741 : {
742 0 : binding_detail::FakeString arg0;
743 0 : if (!ConvertJSValueToString(cx, args[0], eStringify, eStringify, arg0)) {
744 0 : return false;
745 : }
746 0 : binding_detail::FastErrorResult rv;
747 0 : self->SetContextMenu(NonNullHelper(Constify(arg0)), rv);
748 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
749 0 : return false;
750 : }
751 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
752 :
753 0 : return true;
754 : }
755 :
756 : static const JSJitInfo contextMenu_getterinfo = {
757 : { (JSJitGetterOp)get_contextMenu },
758 : { prototypes::id::XULElement },
759 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
760 : JSJitInfo::Getter,
761 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
762 : JSVAL_TYPE_STRING, /* returnType. Not relevant for setters. */
763 : false, /* isInfallible. False in setters. */
764 : false, /* isMovable. Not relevant for setters. */
765 : false, /* isEliminatable. Not relevant for setters. */
766 : false, /* isAlwaysInSlot. Only relevant for getters. */
767 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
768 : false, /* isTypedMethod. Only relevant for methods. */
769 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
770 : };
771 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
772 : static_assert(0 < 1, "There is no slot for us");
773 : static const JSJitInfo contextMenu_setterinfo = {
774 : { (JSJitGetterOp)set_contextMenu },
775 : { prototypes::id::XULElement },
776 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
777 : JSJitInfo::Setter,
778 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
779 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
780 : false, /* isInfallible. False in setters. */
781 : false, /* isMovable. Not relevant for setters. */
782 : false, /* isEliminatable. Not relevant for setters. */
783 : false, /* isAlwaysInSlot. Only relevant for getters. */
784 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
785 : false, /* isTypedMethod. Only relevant for methods. */
786 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
787 : };
788 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
789 : static_assert(0 < 1, "There is no slot for us");
790 :
791 : static bool
792 0 : get_tooltip(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
793 : {
794 0 : DOMString result;
795 0 : self->GetTooltip(result);
796 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
797 0 : if (!xpc::NonVoidStringToJsval(cx, result, args.rval())) {
798 0 : return false;
799 : }
800 0 : return true;
801 : }
802 :
803 : static bool
804 0 : set_tooltip(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
805 : {
806 0 : binding_detail::FakeString arg0;
807 0 : if (!ConvertJSValueToString(cx, args[0], eStringify, eStringify, arg0)) {
808 0 : return false;
809 : }
810 0 : binding_detail::FastErrorResult rv;
811 0 : self->SetTooltip(NonNullHelper(Constify(arg0)), rv);
812 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
813 0 : return false;
814 : }
815 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
816 :
817 0 : return true;
818 : }
819 :
820 : static const JSJitInfo tooltip_getterinfo = {
821 : { (JSJitGetterOp)get_tooltip },
822 : { prototypes::id::XULElement },
823 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
824 : JSJitInfo::Getter,
825 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
826 : JSVAL_TYPE_STRING, /* returnType. Not relevant for setters. */
827 : false, /* isInfallible. False in setters. */
828 : false, /* isMovable. Not relevant for setters. */
829 : false, /* isEliminatable. Not relevant for setters. */
830 : false, /* isAlwaysInSlot. Only relevant for getters. */
831 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
832 : false, /* isTypedMethod. Only relevant for methods. */
833 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
834 : };
835 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
836 : static_assert(0 < 1, "There is no slot for us");
837 : static const JSJitInfo tooltip_setterinfo = {
838 : { (JSJitGetterOp)set_tooltip },
839 : { prototypes::id::XULElement },
840 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
841 : JSJitInfo::Setter,
842 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
843 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
844 : false, /* isInfallible. False in setters. */
845 : false, /* isMovable. Not relevant for setters. */
846 : false, /* isEliminatable. Not relevant for setters. */
847 : false, /* isAlwaysInSlot. Only relevant for getters. */
848 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
849 : false, /* isTypedMethod. Only relevant for methods. */
850 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
851 : };
852 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
853 : static_assert(0 < 1, "There is no slot for us");
854 :
855 : static bool
856 0 : get_width(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
857 : {
858 0 : DOMString result;
859 0 : self->GetWidth(result);
860 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
861 0 : if (!xpc::NonVoidStringToJsval(cx, result, args.rval())) {
862 0 : return false;
863 : }
864 0 : return true;
865 : }
866 :
867 : static bool
868 0 : set_width(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
869 : {
870 0 : binding_detail::FakeString arg0;
871 0 : if (!ConvertJSValueToString(cx, args[0], eStringify, eStringify, arg0)) {
872 0 : return false;
873 : }
874 0 : binding_detail::FastErrorResult rv;
875 0 : self->SetWidth(NonNullHelper(Constify(arg0)), rv);
876 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
877 0 : return false;
878 : }
879 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
880 :
881 0 : return true;
882 : }
883 :
884 : static const JSJitInfo width_getterinfo = {
885 : { (JSJitGetterOp)get_width },
886 : { prototypes::id::XULElement },
887 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
888 : JSJitInfo::Getter,
889 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
890 : JSVAL_TYPE_STRING, /* returnType. Not relevant for setters. */
891 : false, /* isInfallible. False in setters. */
892 : false, /* isMovable. Not relevant for setters. */
893 : false, /* isEliminatable. Not relevant for setters. */
894 : false, /* isAlwaysInSlot. Only relevant for getters. */
895 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
896 : false, /* isTypedMethod. Only relevant for methods. */
897 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
898 : };
899 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
900 : static_assert(0 < 1, "There is no slot for us");
901 : static const JSJitInfo width_setterinfo = {
902 : { (JSJitGetterOp)set_width },
903 : { prototypes::id::XULElement },
904 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
905 : JSJitInfo::Setter,
906 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
907 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
908 : false, /* isInfallible. False in setters. */
909 : false, /* isMovable. Not relevant for setters. */
910 : false, /* isEliminatable. Not relevant for setters. */
911 : false, /* isAlwaysInSlot. Only relevant for getters. */
912 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
913 : false, /* isTypedMethod. Only relevant for methods. */
914 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
915 : };
916 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
917 : static_assert(0 < 1, "There is no slot for us");
918 :
919 : static bool
920 0 : get_height(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
921 : {
922 0 : DOMString result;
923 0 : self->GetHeight(result);
924 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
925 0 : if (!xpc::NonVoidStringToJsval(cx, result, args.rval())) {
926 0 : return false;
927 : }
928 0 : return true;
929 : }
930 :
931 : static bool
932 0 : set_height(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
933 : {
934 0 : binding_detail::FakeString arg0;
935 0 : if (!ConvertJSValueToString(cx, args[0], eStringify, eStringify, arg0)) {
936 0 : return false;
937 : }
938 0 : binding_detail::FastErrorResult rv;
939 0 : self->SetHeight(NonNullHelper(Constify(arg0)), rv);
940 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
941 0 : return false;
942 : }
943 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
944 :
945 0 : return true;
946 : }
947 :
948 : static const JSJitInfo height_getterinfo = {
949 : { (JSJitGetterOp)get_height },
950 : { prototypes::id::XULElement },
951 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
952 : JSJitInfo::Getter,
953 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
954 : JSVAL_TYPE_STRING, /* returnType. Not relevant for setters. */
955 : false, /* isInfallible. False in setters. */
956 : false, /* isMovable. Not relevant for setters. */
957 : false, /* isEliminatable. Not relevant for setters. */
958 : false, /* isAlwaysInSlot. Only relevant for getters. */
959 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
960 : false, /* isTypedMethod. Only relevant for methods. */
961 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
962 : };
963 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
964 : static_assert(0 < 1, "There is no slot for us");
965 : static const JSJitInfo height_setterinfo = {
966 : { (JSJitGetterOp)set_height },
967 : { prototypes::id::XULElement },
968 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
969 : JSJitInfo::Setter,
970 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
971 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
972 : false, /* isInfallible. False in setters. */
973 : false, /* isMovable. Not relevant for setters. */
974 : false, /* isEliminatable. Not relevant for setters. */
975 : false, /* isAlwaysInSlot. Only relevant for getters. */
976 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
977 : false, /* isTypedMethod. Only relevant for methods. */
978 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
979 : };
980 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
981 : static_assert(0 < 1, "There is no slot for us");
982 :
983 : static bool
984 0 : get_minWidth(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
985 : {
986 0 : DOMString result;
987 0 : self->GetMinWidth(result);
988 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
989 0 : if (!xpc::NonVoidStringToJsval(cx, result, args.rval())) {
990 0 : return false;
991 : }
992 0 : return true;
993 : }
994 :
995 : static bool
996 0 : set_minWidth(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
997 : {
998 0 : binding_detail::FakeString arg0;
999 0 : if (!ConvertJSValueToString(cx, args[0], eStringify, eStringify, arg0)) {
1000 0 : return false;
1001 : }
1002 0 : binding_detail::FastErrorResult rv;
1003 0 : self->SetMinWidth(NonNullHelper(Constify(arg0)), rv);
1004 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
1005 0 : return false;
1006 : }
1007 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1008 :
1009 0 : return true;
1010 : }
1011 :
1012 : static const JSJitInfo minWidth_getterinfo = {
1013 : { (JSJitGetterOp)get_minWidth },
1014 : { prototypes::id::XULElement },
1015 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
1016 : JSJitInfo::Getter,
1017 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1018 : JSVAL_TYPE_STRING, /* returnType. Not relevant for setters. */
1019 : false, /* isInfallible. False in setters. */
1020 : false, /* isMovable. Not relevant for setters. */
1021 : false, /* isEliminatable. Not relevant for setters. */
1022 : false, /* isAlwaysInSlot. Only relevant for getters. */
1023 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1024 : false, /* isTypedMethod. Only relevant for methods. */
1025 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1026 : };
1027 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1028 : static_assert(0 < 1, "There is no slot for us");
1029 : static const JSJitInfo minWidth_setterinfo = {
1030 : { (JSJitGetterOp)set_minWidth },
1031 : { prototypes::id::XULElement },
1032 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
1033 : JSJitInfo::Setter,
1034 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1035 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
1036 : false, /* isInfallible. False in setters. */
1037 : false, /* isMovable. Not relevant for setters. */
1038 : false, /* isEliminatable. Not relevant for setters. */
1039 : false, /* isAlwaysInSlot. Only relevant for getters. */
1040 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1041 : false, /* isTypedMethod. Only relevant for methods. */
1042 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1043 : };
1044 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1045 : static_assert(0 < 1, "There is no slot for us");
1046 :
1047 : static bool
1048 0 : get_minHeight(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
1049 : {
1050 0 : DOMString result;
1051 0 : self->GetMinHeight(result);
1052 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1053 0 : if (!xpc::NonVoidStringToJsval(cx, result, args.rval())) {
1054 0 : return false;
1055 : }
1056 0 : return true;
1057 : }
1058 :
1059 : static bool
1060 0 : set_minHeight(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
1061 : {
1062 0 : binding_detail::FakeString arg0;
1063 0 : if (!ConvertJSValueToString(cx, args[0], eStringify, eStringify, arg0)) {
1064 0 : return false;
1065 : }
1066 0 : binding_detail::FastErrorResult rv;
1067 0 : self->SetMinHeight(NonNullHelper(Constify(arg0)), rv);
1068 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
1069 0 : return false;
1070 : }
1071 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1072 :
1073 0 : return true;
1074 : }
1075 :
1076 : static const JSJitInfo minHeight_getterinfo = {
1077 : { (JSJitGetterOp)get_minHeight },
1078 : { prototypes::id::XULElement },
1079 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
1080 : JSJitInfo::Getter,
1081 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1082 : JSVAL_TYPE_STRING, /* returnType. Not relevant for setters. */
1083 : false, /* isInfallible. False in setters. */
1084 : false, /* isMovable. Not relevant for setters. */
1085 : false, /* isEliminatable. Not relevant for setters. */
1086 : false, /* isAlwaysInSlot. Only relevant for getters. */
1087 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1088 : false, /* isTypedMethod. Only relevant for methods. */
1089 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1090 : };
1091 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1092 : static_assert(0 < 1, "There is no slot for us");
1093 : static const JSJitInfo minHeight_setterinfo = {
1094 : { (JSJitGetterOp)set_minHeight },
1095 : { prototypes::id::XULElement },
1096 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
1097 : JSJitInfo::Setter,
1098 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1099 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
1100 : false, /* isInfallible. False in setters. */
1101 : false, /* isMovable. Not relevant for setters. */
1102 : false, /* isEliminatable. Not relevant for setters. */
1103 : false, /* isAlwaysInSlot. Only relevant for getters. */
1104 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1105 : false, /* isTypedMethod. Only relevant for methods. */
1106 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1107 : };
1108 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1109 : static_assert(0 < 1, "There is no slot for us");
1110 :
1111 : static bool
1112 0 : get_maxWidth(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
1113 : {
1114 0 : DOMString result;
1115 0 : self->GetMaxWidth(result);
1116 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1117 0 : if (!xpc::NonVoidStringToJsval(cx, result, args.rval())) {
1118 0 : return false;
1119 : }
1120 0 : return true;
1121 : }
1122 :
1123 : static bool
1124 0 : set_maxWidth(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
1125 : {
1126 0 : binding_detail::FakeString arg0;
1127 0 : if (!ConvertJSValueToString(cx, args[0], eStringify, eStringify, arg0)) {
1128 0 : return false;
1129 : }
1130 0 : binding_detail::FastErrorResult rv;
1131 0 : self->SetMaxWidth(NonNullHelper(Constify(arg0)), rv);
1132 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
1133 0 : return false;
1134 : }
1135 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1136 :
1137 0 : return true;
1138 : }
1139 :
1140 : static const JSJitInfo maxWidth_getterinfo = {
1141 : { (JSJitGetterOp)get_maxWidth },
1142 : { prototypes::id::XULElement },
1143 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
1144 : JSJitInfo::Getter,
1145 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1146 : JSVAL_TYPE_STRING, /* returnType. Not relevant for setters. */
1147 : false, /* isInfallible. False in setters. */
1148 : false, /* isMovable. Not relevant for setters. */
1149 : false, /* isEliminatable. Not relevant for setters. */
1150 : false, /* isAlwaysInSlot. Only relevant for getters. */
1151 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1152 : false, /* isTypedMethod. Only relevant for methods. */
1153 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1154 : };
1155 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1156 : static_assert(0 < 1, "There is no slot for us");
1157 : static const JSJitInfo maxWidth_setterinfo = {
1158 : { (JSJitGetterOp)set_maxWidth },
1159 : { prototypes::id::XULElement },
1160 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
1161 : JSJitInfo::Setter,
1162 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1163 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
1164 : false, /* isInfallible. False in setters. */
1165 : false, /* isMovable. Not relevant for setters. */
1166 : false, /* isEliminatable. Not relevant for setters. */
1167 : false, /* isAlwaysInSlot. Only relevant for getters. */
1168 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1169 : false, /* isTypedMethod. Only relevant for methods. */
1170 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1171 : };
1172 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1173 : static_assert(0 < 1, "There is no slot for us");
1174 :
1175 : static bool
1176 0 : get_maxHeight(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
1177 : {
1178 0 : DOMString result;
1179 0 : self->GetMaxHeight(result);
1180 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1181 0 : if (!xpc::NonVoidStringToJsval(cx, result, args.rval())) {
1182 0 : return false;
1183 : }
1184 0 : return true;
1185 : }
1186 :
1187 : static bool
1188 0 : set_maxHeight(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
1189 : {
1190 0 : binding_detail::FakeString arg0;
1191 0 : if (!ConvertJSValueToString(cx, args[0], eStringify, eStringify, arg0)) {
1192 0 : return false;
1193 : }
1194 0 : binding_detail::FastErrorResult rv;
1195 0 : self->SetMaxHeight(NonNullHelper(Constify(arg0)), rv);
1196 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
1197 0 : return false;
1198 : }
1199 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1200 :
1201 0 : return true;
1202 : }
1203 :
1204 : static const JSJitInfo maxHeight_getterinfo = {
1205 : { (JSJitGetterOp)get_maxHeight },
1206 : { prototypes::id::XULElement },
1207 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
1208 : JSJitInfo::Getter,
1209 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1210 : JSVAL_TYPE_STRING, /* returnType. Not relevant for setters. */
1211 : false, /* isInfallible. False in setters. */
1212 : false, /* isMovable. Not relevant for setters. */
1213 : false, /* isEliminatable. Not relevant for setters. */
1214 : false, /* isAlwaysInSlot. Only relevant for getters. */
1215 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1216 : false, /* isTypedMethod. Only relevant for methods. */
1217 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1218 : };
1219 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1220 : static_assert(0 < 1, "There is no slot for us");
1221 : static const JSJitInfo maxHeight_setterinfo = {
1222 : { (JSJitGetterOp)set_maxHeight },
1223 : { prototypes::id::XULElement },
1224 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
1225 : JSJitInfo::Setter,
1226 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1227 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
1228 : false, /* isInfallible. False in setters. */
1229 : false, /* isMovable. Not relevant for setters. */
1230 : false, /* isEliminatable. Not relevant for setters. */
1231 : false, /* isAlwaysInSlot. Only relevant for getters. */
1232 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1233 : false, /* isTypedMethod. Only relevant for methods. */
1234 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1235 : };
1236 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1237 : static_assert(0 < 1, "There is no slot for us");
1238 :
1239 : static bool
1240 0 : get_persist(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
1241 : {
1242 0 : DOMString result;
1243 0 : self->GetPersist(result);
1244 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1245 0 : if (!xpc::NonVoidStringToJsval(cx, result, args.rval())) {
1246 0 : return false;
1247 : }
1248 0 : return true;
1249 : }
1250 :
1251 : static bool
1252 0 : set_persist(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
1253 : {
1254 0 : binding_detail::FakeString arg0;
1255 0 : if (!ConvertJSValueToString(cx, args[0], eStringify, eStringify, arg0)) {
1256 0 : return false;
1257 : }
1258 0 : binding_detail::FastErrorResult rv;
1259 0 : self->SetPersist(NonNullHelper(Constify(arg0)), rv);
1260 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
1261 0 : return false;
1262 : }
1263 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1264 :
1265 0 : return true;
1266 : }
1267 :
1268 : static const JSJitInfo persist_getterinfo = {
1269 : { (JSJitGetterOp)get_persist },
1270 : { prototypes::id::XULElement },
1271 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
1272 : JSJitInfo::Getter,
1273 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1274 : JSVAL_TYPE_STRING, /* returnType. Not relevant for setters. */
1275 : false, /* isInfallible. False in setters. */
1276 : false, /* isMovable. Not relevant for setters. */
1277 : false, /* isEliminatable. Not relevant for setters. */
1278 : false, /* isAlwaysInSlot. Only relevant for getters. */
1279 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1280 : false, /* isTypedMethod. Only relevant for methods. */
1281 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1282 : };
1283 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1284 : static_assert(0 < 1, "There is no slot for us");
1285 : static const JSJitInfo persist_setterinfo = {
1286 : { (JSJitGetterOp)set_persist },
1287 : { prototypes::id::XULElement },
1288 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
1289 : JSJitInfo::Setter,
1290 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1291 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
1292 : false, /* isInfallible. False in setters. */
1293 : false, /* isMovable. Not relevant for setters. */
1294 : false, /* isEliminatable. Not relevant for setters. */
1295 : false, /* isAlwaysInSlot. Only relevant for getters. */
1296 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1297 : false, /* isTypedMethod. Only relevant for methods. */
1298 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1299 : };
1300 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1301 : static_assert(0 < 1, "There is no slot for us");
1302 :
1303 : static bool
1304 0 : get_left(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
1305 : {
1306 0 : DOMString result;
1307 0 : self->GetLeft(result);
1308 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1309 0 : if (!xpc::NonVoidStringToJsval(cx, result, args.rval())) {
1310 0 : return false;
1311 : }
1312 0 : return true;
1313 : }
1314 :
1315 : static bool
1316 0 : set_left(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
1317 : {
1318 0 : binding_detail::FakeString arg0;
1319 0 : if (!ConvertJSValueToString(cx, args[0], eStringify, eStringify, arg0)) {
1320 0 : return false;
1321 : }
1322 0 : binding_detail::FastErrorResult rv;
1323 0 : self->SetLeft(NonNullHelper(Constify(arg0)), rv);
1324 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
1325 0 : return false;
1326 : }
1327 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1328 :
1329 0 : return true;
1330 : }
1331 :
1332 : static const JSJitInfo left_getterinfo = {
1333 : { (JSJitGetterOp)get_left },
1334 : { prototypes::id::XULElement },
1335 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
1336 : JSJitInfo::Getter,
1337 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1338 : JSVAL_TYPE_STRING, /* returnType. Not relevant for setters. */
1339 : false, /* isInfallible. False in setters. */
1340 : false, /* isMovable. Not relevant for setters. */
1341 : false, /* isEliminatable. Not relevant for setters. */
1342 : false, /* isAlwaysInSlot. Only relevant for getters. */
1343 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1344 : false, /* isTypedMethod. Only relevant for methods. */
1345 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1346 : };
1347 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1348 : static_assert(0 < 1, "There is no slot for us");
1349 : static const JSJitInfo left_setterinfo = {
1350 : { (JSJitGetterOp)set_left },
1351 : { prototypes::id::XULElement },
1352 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
1353 : JSJitInfo::Setter,
1354 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1355 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
1356 : false, /* isInfallible. False in setters. */
1357 : false, /* isMovable. Not relevant for setters. */
1358 : false, /* isEliminatable. Not relevant for setters. */
1359 : false, /* isAlwaysInSlot. Only relevant for getters. */
1360 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1361 : false, /* isTypedMethod. Only relevant for methods. */
1362 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1363 : };
1364 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1365 : static_assert(0 < 1, "There is no slot for us");
1366 :
1367 : static bool
1368 0 : get_top(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
1369 : {
1370 0 : DOMString result;
1371 0 : self->GetTop(result);
1372 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1373 0 : if (!xpc::NonVoidStringToJsval(cx, result, args.rval())) {
1374 0 : return false;
1375 : }
1376 0 : return true;
1377 : }
1378 :
1379 : static bool
1380 0 : set_top(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
1381 : {
1382 0 : binding_detail::FakeString arg0;
1383 0 : if (!ConvertJSValueToString(cx, args[0], eStringify, eStringify, arg0)) {
1384 0 : return false;
1385 : }
1386 0 : binding_detail::FastErrorResult rv;
1387 0 : self->SetTop(NonNullHelper(Constify(arg0)), rv);
1388 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
1389 0 : return false;
1390 : }
1391 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1392 :
1393 0 : return true;
1394 : }
1395 :
1396 : static const JSJitInfo top_getterinfo = {
1397 : { (JSJitGetterOp)get_top },
1398 : { prototypes::id::XULElement },
1399 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
1400 : JSJitInfo::Getter,
1401 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1402 : JSVAL_TYPE_STRING, /* returnType. Not relevant for setters. */
1403 : false, /* isInfallible. False in setters. */
1404 : false, /* isMovable. Not relevant for setters. */
1405 : false, /* isEliminatable. Not relevant for setters. */
1406 : false, /* isAlwaysInSlot. Only relevant for getters. */
1407 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1408 : false, /* isTypedMethod. Only relevant for methods. */
1409 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1410 : };
1411 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1412 : static_assert(0 < 1, "There is no slot for us");
1413 : static const JSJitInfo top_setterinfo = {
1414 : { (JSJitGetterOp)set_top },
1415 : { prototypes::id::XULElement },
1416 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
1417 : JSJitInfo::Setter,
1418 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1419 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
1420 : false, /* isInfallible. False in setters. */
1421 : false, /* isMovable. Not relevant for setters. */
1422 : false, /* isEliminatable. Not relevant for setters. */
1423 : false, /* isAlwaysInSlot. Only relevant for getters. */
1424 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1425 : false, /* isTypedMethod. Only relevant for methods. */
1426 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1427 : };
1428 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1429 : static_assert(0 < 1, "There is no slot for us");
1430 :
1431 : static bool
1432 0 : get_datasources(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
1433 : {
1434 0 : DOMString result;
1435 0 : self->GetDatasources(result);
1436 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1437 0 : if (!xpc::NonVoidStringToJsval(cx, result, args.rval())) {
1438 0 : return false;
1439 : }
1440 0 : return true;
1441 : }
1442 :
1443 : static bool
1444 0 : set_datasources(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
1445 : {
1446 0 : binding_detail::FakeString arg0;
1447 0 : if (!ConvertJSValueToString(cx, args[0], eStringify, eStringify, arg0)) {
1448 0 : return false;
1449 : }
1450 0 : binding_detail::FastErrorResult rv;
1451 0 : self->SetDatasources(NonNullHelper(Constify(arg0)), rv);
1452 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
1453 0 : return false;
1454 : }
1455 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1456 :
1457 0 : return true;
1458 : }
1459 :
1460 : static const JSJitInfo datasources_getterinfo = {
1461 : { (JSJitGetterOp)get_datasources },
1462 : { prototypes::id::XULElement },
1463 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
1464 : JSJitInfo::Getter,
1465 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1466 : JSVAL_TYPE_STRING, /* returnType. Not relevant for setters. */
1467 : false, /* isInfallible. False in setters. */
1468 : false, /* isMovable. Not relevant for setters. */
1469 : false, /* isEliminatable. Not relevant for setters. */
1470 : false, /* isAlwaysInSlot. Only relevant for getters. */
1471 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1472 : false, /* isTypedMethod. Only relevant for methods. */
1473 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1474 : };
1475 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1476 : static_assert(0 < 1, "There is no slot for us");
1477 : static const JSJitInfo datasources_setterinfo = {
1478 : { (JSJitGetterOp)set_datasources },
1479 : { prototypes::id::XULElement },
1480 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
1481 : JSJitInfo::Setter,
1482 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1483 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
1484 : false, /* isInfallible. False in setters. */
1485 : false, /* isMovable. Not relevant for setters. */
1486 : false, /* isEliminatable. Not relevant for setters. */
1487 : false, /* isAlwaysInSlot. Only relevant for getters. */
1488 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1489 : false, /* isTypedMethod. Only relevant for methods. */
1490 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1491 : };
1492 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1493 : static_assert(0 < 1, "There is no slot for us");
1494 :
1495 : static bool
1496 0 : get_ref(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
1497 : {
1498 0 : DOMString result;
1499 0 : self->GetRef(result);
1500 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1501 0 : if (!xpc::NonVoidStringToJsval(cx, result, args.rval())) {
1502 0 : return false;
1503 : }
1504 0 : return true;
1505 : }
1506 :
1507 : static bool
1508 0 : set_ref(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
1509 : {
1510 0 : binding_detail::FakeString arg0;
1511 0 : if (!ConvertJSValueToString(cx, args[0], eStringify, eStringify, arg0)) {
1512 0 : return false;
1513 : }
1514 0 : binding_detail::FastErrorResult rv;
1515 0 : self->SetRef(NonNullHelper(Constify(arg0)), rv);
1516 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
1517 0 : return false;
1518 : }
1519 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1520 :
1521 0 : return true;
1522 : }
1523 :
1524 : static const JSJitInfo ref_getterinfo = {
1525 : { (JSJitGetterOp)get_ref },
1526 : { prototypes::id::XULElement },
1527 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
1528 : JSJitInfo::Getter,
1529 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1530 : JSVAL_TYPE_STRING, /* returnType. Not relevant for setters. */
1531 : false, /* isInfallible. False in setters. */
1532 : false, /* isMovable. Not relevant for setters. */
1533 : false, /* isEliminatable. Not relevant for setters. */
1534 : false, /* isAlwaysInSlot. Only relevant for getters. */
1535 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1536 : false, /* isTypedMethod. Only relevant for methods. */
1537 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1538 : };
1539 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1540 : static_assert(0 < 1, "There is no slot for us");
1541 : static const JSJitInfo ref_setterinfo = {
1542 : { (JSJitGetterOp)set_ref },
1543 : { prototypes::id::XULElement },
1544 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
1545 : JSJitInfo::Setter,
1546 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1547 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
1548 : false, /* isInfallible. False in setters. */
1549 : false, /* isMovable. Not relevant for setters. */
1550 : false, /* isEliminatable. Not relevant for setters. */
1551 : false, /* isAlwaysInSlot. Only relevant for getters. */
1552 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1553 : false, /* isTypedMethod. Only relevant for methods. */
1554 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1555 : };
1556 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1557 : static_assert(0 < 1, "There is no slot for us");
1558 :
1559 : static bool
1560 0 : get_tooltipText(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
1561 : {
1562 0 : DOMString result;
1563 0 : self->GetTooltipText(result);
1564 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1565 0 : if (!xpc::NonVoidStringToJsval(cx, result, args.rval())) {
1566 0 : return false;
1567 : }
1568 0 : return true;
1569 : }
1570 :
1571 : static bool
1572 12 : set_tooltipText(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
1573 : {
1574 24 : binding_detail::FakeString arg0;
1575 12 : if (!ConvertJSValueToString(cx, args[0], eStringify, eStringify, arg0)) {
1576 0 : return false;
1577 : }
1578 24 : binding_detail::FastErrorResult rv;
1579 12 : self->SetTooltipText(NonNullHelper(Constify(arg0)), rv);
1580 12 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
1581 0 : return false;
1582 : }
1583 12 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1584 :
1585 12 : return true;
1586 : }
1587 :
1588 : static const JSJitInfo tooltipText_getterinfo = {
1589 : { (JSJitGetterOp)get_tooltipText },
1590 : { prototypes::id::XULElement },
1591 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
1592 : JSJitInfo::Getter,
1593 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1594 : JSVAL_TYPE_STRING, /* returnType. Not relevant for setters. */
1595 : false, /* isInfallible. False in setters. */
1596 : false, /* isMovable. Not relevant for setters. */
1597 : false, /* isEliminatable. Not relevant for setters. */
1598 : false, /* isAlwaysInSlot. Only relevant for getters. */
1599 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1600 : false, /* isTypedMethod. Only relevant for methods. */
1601 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1602 : };
1603 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1604 : static_assert(0 < 1, "There is no slot for us");
1605 : static const JSJitInfo tooltipText_setterinfo = {
1606 : { (JSJitGetterOp)set_tooltipText },
1607 : { prototypes::id::XULElement },
1608 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
1609 : JSJitInfo::Setter,
1610 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1611 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
1612 : false, /* isInfallible. False in setters. */
1613 : false, /* isMovable. Not relevant for setters. */
1614 : false, /* isEliminatable. Not relevant for setters. */
1615 : false, /* isAlwaysInSlot. Only relevant for getters. */
1616 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1617 : false, /* isTypedMethod. Only relevant for methods. */
1618 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1619 : };
1620 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1621 : static_assert(0 < 1, "There is no slot for us");
1622 :
1623 : static bool
1624 0 : get_statusText(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
1625 : {
1626 0 : DOMString result;
1627 0 : self->GetStatusText(result);
1628 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1629 0 : if (!xpc::NonVoidStringToJsval(cx, result, args.rval())) {
1630 0 : return false;
1631 : }
1632 0 : return true;
1633 : }
1634 :
1635 : static bool
1636 0 : set_statusText(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
1637 : {
1638 0 : binding_detail::FakeString arg0;
1639 0 : if (!ConvertJSValueToString(cx, args[0], eStringify, eStringify, arg0)) {
1640 0 : return false;
1641 : }
1642 0 : binding_detail::FastErrorResult rv;
1643 0 : self->SetStatusText(NonNullHelper(Constify(arg0)), rv);
1644 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
1645 0 : return false;
1646 : }
1647 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1648 :
1649 0 : return true;
1650 : }
1651 :
1652 : static const JSJitInfo statusText_getterinfo = {
1653 : { (JSJitGetterOp)get_statusText },
1654 : { prototypes::id::XULElement },
1655 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
1656 : JSJitInfo::Getter,
1657 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1658 : JSVAL_TYPE_STRING, /* returnType. Not relevant for setters. */
1659 : false, /* isInfallible. False in setters. */
1660 : false, /* isMovable. Not relevant for setters. */
1661 : false, /* isEliminatable. Not relevant for setters. */
1662 : false, /* isAlwaysInSlot. Only relevant for getters. */
1663 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1664 : false, /* isTypedMethod. Only relevant for methods. */
1665 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1666 : };
1667 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1668 : static_assert(0 < 1, "There is no slot for us");
1669 : static const JSJitInfo statusText_setterinfo = {
1670 : { (JSJitGetterOp)set_statusText },
1671 : { prototypes::id::XULElement },
1672 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
1673 : JSJitInfo::Setter,
1674 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1675 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
1676 : false, /* isInfallible. False in setters. */
1677 : false, /* isMovable. Not relevant for setters. */
1678 : false, /* isEliminatable. Not relevant for setters. */
1679 : false, /* isAlwaysInSlot. Only relevant for getters. */
1680 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1681 : false, /* isTypedMethod. Only relevant for methods. */
1682 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1683 : };
1684 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1685 : static_assert(0 < 1, "There is no slot for us");
1686 :
1687 : static bool
1688 0 : get_allowEvents(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
1689 : {
1690 0 : bool result(self->AllowEvents());
1691 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1692 0 : args.rval().setBoolean(result);
1693 0 : return true;
1694 : }
1695 :
1696 : static bool
1697 0 : set_allowEvents(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
1698 : {
1699 : bool arg0;
1700 0 : if (!ValueToPrimitive<bool, eDefault>(cx, args[0], &arg0)) {
1701 0 : return false;
1702 : }
1703 0 : self->SetAllowEvents(arg0);
1704 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1705 :
1706 0 : return true;
1707 : }
1708 :
1709 : static const JSJitInfo allowEvents_getterinfo = {
1710 : { (JSJitGetterOp)get_allowEvents },
1711 : { prototypes::id::XULElement },
1712 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
1713 : JSJitInfo::Getter,
1714 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1715 : JSVAL_TYPE_BOOLEAN, /* returnType. Not relevant for setters. */
1716 : true, /* isInfallible. False in setters. */
1717 : false, /* isMovable. Not relevant for setters. */
1718 : false, /* isEliminatable. Not relevant for setters. */
1719 : false, /* isAlwaysInSlot. Only relevant for getters. */
1720 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1721 : false, /* isTypedMethod. Only relevant for methods. */
1722 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1723 : };
1724 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1725 : static_assert(0 < 1, "There is no slot for us");
1726 : static const JSJitInfo allowEvents_setterinfo = {
1727 : { (JSJitGetterOp)set_allowEvents },
1728 : { prototypes::id::XULElement },
1729 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
1730 : JSJitInfo::Setter,
1731 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1732 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
1733 : false, /* isInfallible. False in setters. */
1734 : false, /* isMovable. Not relevant for setters. */
1735 : false, /* isEliminatable. Not relevant for setters. */
1736 : false, /* isAlwaysInSlot. Only relevant for getters. */
1737 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1738 : false, /* isTypedMethod. Only relevant for methods. */
1739 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1740 : };
1741 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1742 : static_assert(0 < 1, "There is no slot for us");
1743 :
1744 : static bool
1745 0 : get_database(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
1746 : {
1747 0 : auto result(StrongOrRawPtr<nsIRDFCompositeDataSource>(self->GetDatabase()));
1748 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1749 0 : if (!result) {
1750 0 : args.rval().setNull();
1751 0 : return true;
1752 : }
1753 0 : if (!WrapObject(cx, result, &NS_GET_IID(nsIRDFCompositeDataSource), args.rval())) {
1754 0 : return false;
1755 : }
1756 0 : return true;
1757 : }
1758 :
1759 : static const JSJitInfo database_getterinfo = {
1760 : { (JSJitGetterOp)get_database },
1761 : { prototypes::id::XULElement },
1762 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
1763 : JSJitInfo::Getter,
1764 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1765 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
1766 : false, /* isInfallible. False in setters. */
1767 : false, /* isMovable. Not relevant for setters. */
1768 : false, /* isEliminatable. Not relevant for setters. */
1769 : false, /* isAlwaysInSlot. Only relevant for getters. */
1770 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1771 : false, /* isTypedMethod. Only relevant for methods. */
1772 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1773 : };
1774 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1775 : static_assert(0 < 1, "There is no slot for us");
1776 :
1777 : static bool
1778 0 : get_builder(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
1779 : {
1780 0 : auto result(StrongOrRawPtr<nsXULTemplateBuilder>(self->GetBuilder()));
1781 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1782 0 : if (!result) {
1783 0 : args.rval().setNull();
1784 0 : return true;
1785 : }
1786 0 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
1787 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
1788 0 : return false;
1789 : }
1790 0 : return true;
1791 : }
1792 :
1793 : static const JSJitInfo builder_getterinfo = {
1794 : { (JSJitGetterOp)get_builder },
1795 : { prototypes::id::XULElement },
1796 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
1797 : JSJitInfo::Getter,
1798 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1799 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
1800 : false, /* isInfallible. False in setters. */
1801 : false, /* isMovable. Not relevant for setters. */
1802 : false, /* isEliminatable. Not relevant for setters. */
1803 : false, /* isAlwaysInSlot. Only relevant for getters. */
1804 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1805 : false, /* isTypedMethod. Only relevant for methods. */
1806 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1807 : };
1808 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1809 : static_assert(0 < 1, "There is no slot for us");
1810 :
1811 : static bool
1812 0 : get_resource(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
1813 : {
1814 0 : binding_detail::FastErrorResult rv;
1815 0 : auto result(StrongOrRawPtr<nsIRDFResource>(self->GetResource(rv)));
1816 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
1817 0 : return false;
1818 : }
1819 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1820 0 : if (!result) {
1821 0 : args.rval().setNull();
1822 0 : return true;
1823 : }
1824 0 : if (!WrapObject(cx, result, &NS_GET_IID(nsIRDFResource), args.rval())) {
1825 0 : return false;
1826 : }
1827 0 : return true;
1828 : }
1829 :
1830 : static const JSJitInfo resource_getterinfo = {
1831 : { (JSJitGetterOp)get_resource },
1832 : { prototypes::id::XULElement },
1833 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
1834 : JSJitInfo::Getter,
1835 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1836 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
1837 : false, /* isInfallible. False in setters. */
1838 : false, /* isMovable. Not relevant for setters. */
1839 : false, /* isEliminatable. Not relevant for setters. */
1840 : false, /* isAlwaysInSlot. Only relevant for getters. */
1841 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1842 : false, /* isTypedMethod. Only relevant for methods. */
1843 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1844 : };
1845 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1846 : static_assert(0 < 1, "There is no slot for us");
1847 :
1848 : static bool
1849 1 : get_controllers(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
1850 : {
1851 2 : binding_detail::FastErrorResult rv;
1852 1 : auto result(StrongOrRawPtr<nsIControllers>(self->GetControllers(rv)));
1853 1 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
1854 0 : return false;
1855 : }
1856 1 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1857 1 : if (!WrapObject(cx, result, &NS_GET_IID(nsIControllers), args.rval())) {
1858 0 : return false;
1859 : }
1860 1 : return true;
1861 : }
1862 :
1863 : static const JSJitInfo controllers_getterinfo = {
1864 : { (JSJitGetterOp)get_controllers },
1865 : { prototypes::id::XULElement },
1866 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
1867 : JSJitInfo::Getter,
1868 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1869 : JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
1870 : false, /* isInfallible. False in setters. */
1871 : false, /* isMovable. Not relevant for setters. */
1872 : false, /* isEliminatable. Not relevant for setters. */
1873 : false, /* isAlwaysInSlot. Only relevant for getters. */
1874 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1875 : false, /* isTypedMethod. Only relevant for methods. */
1876 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1877 : };
1878 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1879 : static_assert(0 < 1, "There is no slot for us");
1880 :
1881 : static bool
1882 12 : get_boxObject(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
1883 : {
1884 24 : binding_detail::FastErrorResult rv;
1885 24 : auto result(StrongOrRawPtr<mozilla::dom::BoxObject>(self->GetBoxObject(rv)));
1886 12 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
1887 0 : return false;
1888 : }
1889 12 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1890 12 : if (!result) {
1891 0 : args.rval().setNull();
1892 0 : return true;
1893 : }
1894 12 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
1895 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
1896 0 : return false;
1897 : }
1898 12 : return true;
1899 : }
1900 :
1901 : static const JSJitInfo boxObject_getterinfo = {
1902 : { (JSJitGetterOp)get_boxObject },
1903 : { prototypes::id::XULElement },
1904 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
1905 : JSJitInfo::Getter,
1906 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1907 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
1908 : false, /* isInfallible. False in setters. */
1909 : false, /* isMovable. Not relevant for setters. */
1910 : false, /* isEliminatable. Not relevant for setters. */
1911 : false, /* isAlwaysInSlot. Only relevant for getters. */
1912 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1913 : false, /* isTypedMethod. Only relevant for methods. */
1914 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1915 : };
1916 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1917 : static_assert(0 < 1, "There is no slot for us");
1918 :
1919 : static bool
1920 2 : focus(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, const JSJitMethodCallArgs& args)
1921 : {
1922 4 : binding_detail::FastErrorResult rv;
1923 2 : self->Focus(rv);
1924 2 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
1925 0 : return false;
1926 : }
1927 2 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1928 2 : args.rval().setUndefined();
1929 2 : return true;
1930 : }
1931 :
1932 : static const JSJitInfo focus_methodinfo = {
1933 : { (JSJitGetterOp)focus },
1934 : { prototypes::id::XULElement },
1935 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
1936 : JSJitInfo::Method,
1937 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1938 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
1939 : false, /* isInfallible. False in setters. */
1940 : false, /* isMovable. Not relevant for setters. */
1941 : false, /* isEliminatable. Not relevant for setters. */
1942 : false, /* isAlwaysInSlot. Only relevant for getters. */
1943 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1944 : false, /* isTypedMethod. Only relevant for methods. */
1945 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1946 : };
1947 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1948 : static_assert(0 < 1, "There is no slot for us");
1949 :
1950 : static bool
1951 0 : blur(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, const JSJitMethodCallArgs& args)
1952 : {
1953 0 : binding_detail::FastErrorResult rv;
1954 0 : self->Blur(rv);
1955 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
1956 0 : return false;
1957 : }
1958 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1959 0 : args.rval().setUndefined();
1960 0 : return true;
1961 : }
1962 :
1963 : static const JSJitInfo blur_methodinfo = {
1964 : { (JSJitGetterOp)blur },
1965 : { prototypes::id::XULElement },
1966 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
1967 : JSJitInfo::Method,
1968 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1969 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
1970 : false, /* isInfallible. False in setters. */
1971 : false, /* isMovable. Not relevant for setters. */
1972 : false, /* isEliminatable. Not relevant for setters. */
1973 : false, /* isAlwaysInSlot. Only relevant for getters. */
1974 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1975 : false, /* isTypedMethod. Only relevant for methods. */
1976 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1977 : };
1978 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1979 : static_assert(0 < 1, "There is no slot for us");
1980 :
1981 : static bool
1982 0 : click(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, const JSJitMethodCallArgs& args)
1983 : {
1984 0 : self->Click(nsContentUtils::IsSystemCaller(cx) ? CallerType::System : CallerType::NonSystem);
1985 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1986 0 : args.rval().setUndefined();
1987 0 : return true;
1988 : }
1989 :
1990 : static const JSJitInfo click_methodinfo = {
1991 : { (JSJitGetterOp)click },
1992 : { prototypes::id::XULElement },
1993 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
1994 : JSJitInfo::Method,
1995 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1996 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
1997 : true, /* isInfallible. False in setters. */
1998 : false, /* isMovable. Not relevant for setters. */
1999 : false, /* isEliminatable. Not relevant for setters. */
2000 : false, /* isAlwaysInSlot. Only relevant for getters. */
2001 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2002 : false, /* isTypedMethod. Only relevant for methods. */
2003 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2004 : };
2005 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2006 : static_assert(0 < 1, "There is no slot for us");
2007 :
2008 : static bool
2009 0 : doCommand(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, const JSJitMethodCallArgs& args)
2010 : {
2011 0 : self->DoCommand();
2012 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2013 0 : args.rval().setUndefined();
2014 0 : return true;
2015 : }
2016 :
2017 : static const JSJitInfo doCommand_methodinfo = {
2018 : { (JSJitGetterOp)doCommand },
2019 : { prototypes::id::XULElement },
2020 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
2021 : JSJitInfo::Method,
2022 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2023 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
2024 : true, /* isInfallible. False in setters. */
2025 : false, /* isMovable. Not relevant for setters. */
2026 : false, /* isEliminatable. Not relevant for setters. */
2027 : false, /* isAlwaysInSlot. Only relevant for getters. */
2028 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2029 : false, /* isTypedMethod. Only relevant for methods. */
2030 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2031 : };
2032 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2033 : static_assert(0 < 1, "There is no slot for us");
2034 :
2035 : static bool
2036 2 : getElementsByAttribute(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, const JSJitMethodCallArgs& args)
2037 : {
2038 2 : if (MOZ_UNLIKELY(args.length() < 2)) {
2039 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "XULElement.getElementsByAttribute");
2040 : }
2041 4 : binding_detail::FakeString arg0;
2042 2 : if (!ConvertJSValueToString(cx, args[0], eStringify, eStringify, arg0)) {
2043 0 : return false;
2044 : }
2045 4 : binding_detail::FakeString arg1;
2046 2 : if (!ConvertJSValueToString(cx, args[1], eStringify, eStringify, arg1)) {
2047 0 : return false;
2048 : }
2049 4 : auto result(StrongOrRawPtr<nsINodeList>(self->GetElementsByAttribute(NonNullHelper(Constify(arg0)), NonNullHelper(Constify(arg1)))));
2050 2 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2051 2 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
2052 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
2053 0 : return false;
2054 : }
2055 2 : return true;
2056 : }
2057 :
2058 : static const JSJitInfo getElementsByAttribute_methodinfo = {
2059 : { (JSJitGetterOp)getElementsByAttribute },
2060 : { prototypes::id::XULElement },
2061 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
2062 : JSJitInfo::Method,
2063 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2064 : JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
2065 : false, /* isInfallible. False in setters. */
2066 : false, /* isMovable. Not relevant for setters. */
2067 : false, /* isEliminatable. Not relevant for setters. */
2068 : false, /* isAlwaysInSlot. Only relevant for getters. */
2069 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2070 : false, /* isTypedMethod. Only relevant for methods. */
2071 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2072 : };
2073 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2074 : static_assert(0 < 1, "There is no slot for us");
2075 :
2076 : static bool
2077 0 : getElementsByAttributeNS(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, const JSJitMethodCallArgs& args)
2078 : {
2079 0 : if (MOZ_UNLIKELY(args.length() < 3)) {
2080 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "XULElement.getElementsByAttributeNS");
2081 : }
2082 0 : binding_detail::FakeString arg0;
2083 0 : if (!ConvertJSValueToString(cx, args[0], eStringify, eStringify, arg0)) {
2084 0 : return false;
2085 : }
2086 0 : binding_detail::FakeString arg1;
2087 0 : if (!ConvertJSValueToString(cx, args[1], eStringify, eStringify, arg1)) {
2088 0 : return false;
2089 : }
2090 0 : binding_detail::FakeString arg2;
2091 0 : if (!ConvertJSValueToString(cx, args[2], eStringify, eStringify, arg2)) {
2092 0 : return false;
2093 : }
2094 0 : binding_detail::FastErrorResult rv;
2095 0 : auto result(StrongOrRawPtr<nsINodeList>(self->GetElementsByAttributeNS(NonNullHelper(Constify(arg0)), NonNullHelper(Constify(arg1)), NonNullHelper(Constify(arg2)), rv)));
2096 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
2097 0 : return false;
2098 : }
2099 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2100 0 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
2101 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
2102 0 : return false;
2103 : }
2104 0 : return true;
2105 : }
2106 :
2107 : static const JSJitInfo getElementsByAttributeNS_methodinfo = {
2108 : { (JSJitGetterOp)getElementsByAttributeNS },
2109 : { prototypes::id::XULElement },
2110 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
2111 : JSJitInfo::Method,
2112 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2113 : JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
2114 : false, /* isInfallible. False in setters. */
2115 : false, /* isMovable. Not relevant for setters. */
2116 : false, /* isEliminatable. Not relevant for setters. */
2117 : false, /* isAlwaysInSlot. Only relevant for getters. */
2118 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2119 : false, /* isTypedMethod. Only relevant for methods. */
2120 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2121 : };
2122 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2123 : static_assert(0 < 1, "There is no slot for us");
2124 :
2125 : static bool
2126 19 : get_style(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
2127 : {
2128 19 : auto result(StrongOrRawPtr<nsICSSDeclaration>(self->Style()));
2129 19 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2130 19 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
2131 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
2132 0 : return false;
2133 : }
2134 19 : return true;
2135 : }
2136 :
2137 : static const JSJitInfo style_getterinfo = {
2138 : { (JSJitGetterOp)get_style },
2139 : { prototypes::id::XULElement },
2140 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
2141 : JSJitInfo::Getter,
2142 : JSJitInfo::AliasNone, /* aliasSet. Not relevant for setters. */
2143 : JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
2144 : false, /* isInfallible. False in setters. */
2145 : true, /* isMovable. Not relevant for setters. */
2146 : true, /* isEliminatable. Not relevant for setters. */
2147 : false, /* isAlwaysInSlot. Only relevant for getters. */
2148 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2149 : false, /* isTypedMethod. Only relevant for methods. */
2150 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2151 : };
2152 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2153 : static_assert(0 < 1, "There is no slot for us");
2154 :
2155 : static bool
2156 0 : get_onabort(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
2157 : {
2158 0 : RefPtr<EventHandlerNonNull> result(self->GetOnabort());
2159 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2160 0 : if (result) {
2161 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
2162 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
2163 0 : return false;
2164 : }
2165 0 : return true;
2166 : } else {
2167 0 : args.rval().setNull();
2168 0 : return true;
2169 : }
2170 : }
2171 :
2172 : static bool
2173 0 : set_onabort(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
2174 : {
2175 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
2176 0 : if (args[0].isObject()) {
2177 : { // scope for tempRoot
2178 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
2179 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
2180 : }
2181 : } else {
2182 0 : arg0 = nullptr;
2183 : }
2184 0 : self->SetOnabort(Constify(arg0));
2185 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2186 :
2187 0 : return true;
2188 : }
2189 :
2190 : static const JSJitInfo onabort_getterinfo = {
2191 : { (JSJitGetterOp)get_onabort },
2192 : { prototypes::id::XULElement },
2193 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
2194 : JSJitInfo::Getter,
2195 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2196 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
2197 : false, /* isInfallible. False in setters. */
2198 : false, /* isMovable. Not relevant for setters. */
2199 : false, /* isEliminatable. Not relevant for setters. */
2200 : false, /* isAlwaysInSlot. Only relevant for getters. */
2201 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2202 : false, /* isTypedMethod. Only relevant for methods. */
2203 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2204 : };
2205 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2206 : static_assert(0 < 1, "There is no slot for us");
2207 : static const JSJitInfo onabort_setterinfo = {
2208 : { (JSJitGetterOp)set_onabort },
2209 : { prototypes::id::XULElement },
2210 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
2211 : JSJitInfo::Setter,
2212 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2213 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
2214 : false, /* isInfallible. False in setters. */
2215 : false, /* isMovable. Not relevant for setters. */
2216 : false, /* isEliminatable. Not relevant for setters. */
2217 : false, /* isAlwaysInSlot. Only relevant for getters. */
2218 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2219 : false, /* isTypedMethod. Only relevant for methods. */
2220 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2221 : };
2222 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2223 : static_assert(0 < 1, "There is no slot for us");
2224 :
2225 : static bool
2226 0 : get_onblur(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
2227 : {
2228 0 : RefPtr<EventHandlerNonNull> result(self->GetOnblur());
2229 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2230 0 : if (result) {
2231 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
2232 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
2233 0 : return false;
2234 : }
2235 0 : return true;
2236 : } else {
2237 0 : args.rval().setNull();
2238 0 : return true;
2239 : }
2240 : }
2241 :
2242 : static bool
2243 0 : set_onblur(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
2244 : {
2245 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
2246 0 : if (args[0].isObject()) {
2247 : { // scope for tempRoot
2248 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
2249 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
2250 : }
2251 : } else {
2252 0 : arg0 = nullptr;
2253 : }
2254 0 : self->SetOnblur(Constify(arg0));
2255 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2256 :
2257 0 : return true;
2258 : }
2259 :
2260 : static const JSJitInfo onblur_getterinfo = {
2261 : { (JSJitGetterOp)get_onblur },
2262 : { prototypes::id::XULElement },
2263 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
2264 : JSJitInfo::Getter,
2265 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2266 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
2267 : false, /* isInfallible. False in setters. */
2268 : false, /* isMovable. Not relevant for setters. */
2269 : false, /* isEliminatable. Not relevant for setters. */
2270 : false, /* isAlwaysInSlot. Only relevant for getters. */
2271 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2272 : false, /* isTypedMethod. Only relevant for methods. */
2273 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2274 : };
2275 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2276 : static_assert(0 < 1, "There is no slot for us");
2277 : static const JSJitInfo onblur_setterinfo = {
2278 : { (JSJitGetterOp)set_onblur },
2279 : { prototypes::id::XULElement },
2280 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
2281 : JSJitInfo::Setter,
2282 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2283 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
2284 : false, /* isInfallible. False in setters. */
2285 : false, /* isMovable. Not relevant for setters. */
2286 : false, /* isEliminatable. Not relevant for setters. */
2287 : false, /* isAlwaysInSlot. Only relevant for getters. */
2288 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2289 : false, /* isTypedMethod. Only relevant for methods. */
2290 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2291 : };
2292 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2293 : static_assert(0 < 1, "There is no slot for us");
2294 :
2295 : static bool
2296 0 : get_onfocus(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
2297 : {
2298 0 : RefPtr<EventHandlerNonNull> result(self->GetOnfocus());
2299 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2300 0 : if (result) {
2301 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
2302 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
2303 0 : return false;
2304 : }
2305 0 : return true;
2306 : } else {
2307 0 : args.rval().setNull();
2308 0 : return true;
2309 : }
2310 : }
2311 :
2312 : static bool
2313 0 : set_onfocus(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
2314 : {
2315 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
2316 0 : if (args[0].isObject()) {
2317 : { // scope for tempRoot
2318 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
2319 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
2320 : }
2321 : } else {
2322 0 : arg0 = nullptr;
2323 : }
2324 0 : self->SetOnfocus(Constify(arg0));
2325 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2326 :
2327 0 : return true;
2328 : }
2329 :
2330 : static const JSJitInfo onfocus_getterinfo = {
2331 : { (JSJitGetterOp)get_onfocus },
2332 : { prototypes::id::XULElement },
2333 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
2334 : JSJitInfo::Getter,
2335 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2336 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
2337 : false, /* isInfallible. False in setters. */
2338 : false, /* isMovable. Not relevant for setters. */
2339 : false, /* isEliminatable. Not relevant for setters. */
2340 : false, /* isAlwaysInSlot. Only relevant for getters. */
2341 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2342 : false, /* isTypedMethod. Only relevant for methods. */
2343 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2344 : };
2345 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2346 : static_assert(0 < 1, "There is no slot for us");
2347 : static const JSJitInfo onfocus_setterinfo = {
2348 : { (JSJitGetterOp)set_onfocus },
2349 : { prototypes::id::XULElement },
2350 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
2351 : JSJitInfo::Setter,
2352 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2353 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
2354 : false, /* isInfallible. False in setters. */
2355 : false, /* isMovable. Not relevant for setters. */
2356 : false, /* isEliminatable. Not relevant for setters. */
2357 : false, /* isAlwaysInSlot. Only relevant for getters. */
2358 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2359 : false, /* isTypedMethod. Only relevant for methods. */
2360 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2361 : };
2362 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2363 : static_assert(0 < 1, "There is no slot for us");
2364 :
2365 : static bool
2366 0 : get_onauxclick(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
2367 : {
2368 0 : RefPtr<EventHandlerNonNull> result(self->GetOnauxclick());
2369 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2370 0 : if (result) {
2371 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
2372 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
2373 0 : return false;
2374 : }
2375 0 : return true;
2376 : } else {
2377 0 : args.rval().setNull();
2378 0 : return true;
2379 : }
2380 : }
2381 :
2382 : static bool
2383 0 : set_onauxclick(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
2384 : {
2385 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
2386 0 : if (args[0].isObject()) {
2387 : { // scope for tempRoot
2388 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
2389 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
2390 : }
2391 : } else {
2392 0 : arg0 = nullptr;
2393 : }
2394 0 : self->SetOnauxclick(Constify(arg0));
2395 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2396 :
2397 0 : return true;
2398 : }
2399 :
2400 : static const JSJitInfo onauxclick_getterinfo = {
2401 : { (JSJitGetterOp)get_onauxclick },
2402 : { prototypes::id::XULElement },
2403 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
2404 : JSJitInfo::Getter,
2405 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2406 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
2407 : false, /* isInfallible. False in setters. */
2408 : false, /* isMovable. Not relevant for setters. */
2409 : false, /* isEliminatable. Not relevant for setters. */
2410 : false, /* isAlwaysInSlot. Only relevant for getters. */
2411 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2412 : false, /* isTypedMethod. Only relevant for methods. */
2413 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2414 : };
2415 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2416 : static_assert(0 < 1, "There is no slot for us");
2417 : static const JSJitInfo onauxclick_setterinfo = {
2418 : { (JSJitGetterOp)set_onauxclick },
2419 : { prototypes::id::XULElement },
2420 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
2421 : JSJitInfo::Setter,
2422 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2423 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
2424 : false, /* isInfallible. False in setters. */
2425 : false, /* isMovable. Not relevant for setters. */
2426 : false, /* isEliminatable. Not relevant for setters. */
2427 : false, /* isAlwaysInSlot. Only relevant for getters. */
2428 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2429 : false, /* isTypedMethod. Only relevant for methods. */
2430 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2431 : };
2432 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2433 : static_assert(0 < 1, "There is no slot for us");
2434 :
2435 : static bool
2436 0 : get_oncanplay(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
2437 : {
2438 0 : RefPtr<EventHandlerNonNull> result(self->GetOncanplay());
2439 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2440 0 : if (result) {
2441 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
2442 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
2443 0 : return false;
2444 : }
2445 0 : return true;
2446 : } else {
2447 0 : args.rval().setNull();
2448 0 : return true;
2449 : }
2450 : }
2451 :
2452 : static bool
2453 0 : set_oncanplay(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
2454 : {
2455 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
2456 0 : if (args[0].isObject()) {
2457 : { // scope for tempRoot
2458 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
2459 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
2460 : }
2461 : } else {
2462 0 : arg0 = nullptr;
2463 : }
2464 0 : self->SetOncanplay(Constify(arg0));
2465 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2466 :
2467 0 : return true;
2468 : }
2469 :
2470 : static const JSJitInfo oncanplay_getterinfo = {
2471 : { (JSJitGetterOp)get_oncanplay },
2472 : { prototypes::id::XULElement },
2473 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
2474 : JSJitInfo::Getter,
2475 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2476 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
2477 : false, /* isInfallible. False in setters. */
2478 : false, /* isMovable. Not relevant for setters. */
2479 : false, /* isEliminatable. Not relevant for setters. */
2480 : false, /* isAlwaysInSlot. Only relevant for getters. */
2481 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2482 : false, /* isTypedMethod. Only relevant for methods. */
2483 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2484 : };
2485 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2486 : static_assert(0 < 1, "There is no slot for us");
2487 : static const JSJitInfo oncanplay_setterinfo = {
2488 : { (JSJitGetterOp)set_oncanplay },
2489 : { prototypes::id::XULElement },
2490 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
2491 : JSJitInfo::Setter,
2492 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2493 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
2494 : false, /* isInfallible. False in setters. */
2495 : false, /* isMovable. Not relevant for setters. */
2496 : false, /* isEliminatable. Not relevant for setters. */
2497 : false, /* isAlwaysInSlot. Only relevant for getters. */
2498 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2499 : false, /* isTypedMethod. Only relevant for methods. */
2500 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2501 : };
2502 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2503 : static_assert(0 < 1, "There is no slot for us");
2504 :
2505 : static bool
2506 0 : get_oncanplaythrough(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
2507 : {
2508 0 : RefPtr<EventHandlerNonNull> result(self->GetOncanplaythrough());
2509 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2510 0 : if (result) {
2511 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
2512 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
2513 0 : return false;
2514 : }
2515 0 : return true;
2516 : } else {
2517 0 : args.rval().setNull();
2518 0 : return true;
2519 : }
2520 : }
2521 :
2522 : static bool
2523 0 : set_oncanplaythrough(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
2524 : {
2525 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
2526 0 : if (args[0].isObject()) {
2527 : { // scope for tempRoot
2528 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
2529 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
2530 : }
2531 : } else {
2532 0 : arg0 = nullptr;
2533 : }
2534 0 : self->SetOncanplaythrough(Constify(arg0));
2535 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2536 :
2537 0 : return true;
2538 : }
2539 :
2540 : static const JSJitInfo oncanplaythrough_getterinfo = {
2541 : { (JSJitGetterOp)get_oncanplaythrough },
2542 : { prototypes::id::XULElement },
2543 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
2544 : JSJitInfo::Getter,
2545 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2546 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
2547 : false, /* isInfallible. False in setters. */
2548 : false, /* isMovable. Not relevant for setters. */
2549 : false, /* isEliminatable. Not relevant for setters. */
2550 : false, /* isAlwaysInSlot. Only relevant for getters. */
2551 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2552 : false, /* isTypedMethod. Only relevant for methods. */
2553 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2554 : };
2555 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2556 : static_assert(0 < 1, "There is no slot for us");
2557 : static const JSJitInfo oncanplaythrough_setterinfo = {
2558 : { (JSJitGetterOp)set_oncanplaythrough },
2559 : { prototypes::id::XULElement },
2560 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
2561 : JSJitInfo::Setter,
2562 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2563 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
2564 : false, /* isInfallible. False in setters. */
2565 : false, /* isMovable. Not relevant for setters. */
2566 : false, /* isEliminatable. Not relevant for setters. */
2567 : false, /* isAlwaysInSlot. Only relevant for getters. */
2568 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2569 : false, /* isTypedMethod. Only relevant for methods. */
2570 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2571 : };
2572 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2573 : static_assert(0 < 1, "There is no slot for us");
2574 :
2575 : static bool
2576 0 : get_onchange(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
2577 : {
2578 0 : RefPtr<EventHandlerNonNull> result(self->GetOnchange());
2579 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2580 0 : if (result) {
2581 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
2582 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
2583 0 : return false;
2584 : }
2585 0 : return true;
2586 : } else {
2587 0 : args.rval().setNull();
2588 0 : return true;
2589 : }
2590 : }
2591 :
2592 : static bool
2593 0 : set_onchange(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
2594 : {
2595 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
2596 0 : if (args[0].isObject()) {
2597 : { // scope for tempRoot
2598 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
2599 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
2600 : }
2601 : } else {
2602 0 : arg0 = nullptr;
2603 : }
2604 0 : self->SetOnchange(Constify(arg0));
2605 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2606 :
2607 0 : return true;
2608 : }
2609 :
2610 : static const JSJitInfo onchange_getterinfo = {
2611 : { (JSJitGetterOp)get_onchange },
2612 : { prototypes::id::XULElement },
2613 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
2614 : JSJitInfo::Getter,
2615 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2616 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
2617 : false, /* isInfallible. False in setters. */
2618 : false, /* isMovable. Not relevant for setters. */
2619 : false, /* isEliminatable. Not relevant for setters. */
2620 : false, /* isAlwaysInSlot. Only relevant for getters. */
2621 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2622 : false, /* isTypedMethod. Only relevant for methods. */
2623 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2624 : };
2625 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2626 : static_assert(0 < 1, "There is no slot for us");
2627 : static const JSJitInfo onchange_setterinfo = {
2628 : { (JSJitGetterOp)set_onchange },
2629 : { prototypes::id::XULElement },
2630 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
2631 : JSJitInfo::Setter,
2632 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2633 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
2634 : false, /* isInfallible. False in setters. */
2635 : false, /* isMovable. Not relevant for setters. */
2636 : false, /* isEliminatable. Not relevant for setters. */
2637 : false, /* isAlwaysInSlot. Only relevant for getters. */
2638 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2639 : false, /* isTypedMethod. Only relevant for methods. */
2640 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2641 : };
2642 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2643 : static_assert(0 < 1, "There is no slot for us");
2644 :
2645 : static bool
2646 0 : get_onclick(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
2647 : {
2648 0 : RefPtr<EventHandlerNonNull> result(self->GetOnclick());
2649 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2650 0 : if (result) {
2651 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
2652 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
2653 0 : return false;
2654 : }
2655 0 : return true;
2656 : } else {
2657 0 : args.rval().setNull();
2658 0 : return true;
2659 : }
2660 : }
2661 :
2662 : static bool
2663 0 : set_onclick(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
2664 : {
2665 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
2666 0 : if (args[0].isObject()) {
2667 : { // scope for tempRoot
2668 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
2669 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
2670 : }
2671 : } else {
2672 0 : arg0 = nullptr;
2673 : }
2674 0 : self->SetOnclick(Constify(arg0));
2675 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2676 :
2677 0 : return true;
2678 : }
2679 :
2680 : static const JSJitInfo onclick_getterinfo = {
2681 : { (JSJitGetterOp)get_onclick },
2682 : { prototypes::id::XULElement },
2683 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
2684 : JSJitInfo::Getter,
2685 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2686 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
2687 : false, /* isInfallible. False in setters. */
2688 : false, /* isMovable. Not relevant for setters. */
2689 : false, /* isEliminatable. Not relevant for setters. */
2690 : false, /* isAlwaysInSlot. Only relevant for getters. */
2691 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2692 : false, /* isTypedMethod. Only relevant for methods. */
2693 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2694 : };
2695 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2696 : static_assert(0 < 1, "There is no slot for us");
2697 : static const JSJitInfo onclick_setterinfo = {
2698 : { (JSJitGetterOp)set_onclick },
2699 : { prototypes::id::XULElement },
2700 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
2701 : JSJitInfo::Setter,
2702 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2703 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
2704 : false, /* isInfallible. False in setters. */
2705 : false, /* isMovable. Not relevant for setters. */
2706 : false, /* isEliminatable. Not relevant for setters. */
2707 : false, /* isAlwaysInSlot. Only relevant for getters. */
2708 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2709 : false, /* isTypedMethod. Only relevant for methods. */
2710 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2711 : };
2712 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2713 : static_assert(0 < 1, "There is no slot for us");
2714 :
2715 : static bool
2716 0 : get_onclose(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
2717 : {
2718 0 : RefPtr<EventHandlerNonNull> result(self->GetOnclose());
2719 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2720 0 : if (result) {
2721 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
2722 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
2723 0 : return false;
2724 : }
2725 0 : return true;
2726 : } else {
2727 0 : args.rval().setNull();
2728 0 : return true;
2729 : }
2730 : }
2731 :
2732 : static bool
2733 0 : set_onclose(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
2734 : {
2735 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
2736 0 : if (args[0].isObject()) {
2737 : { // scope for tempRoot
2738 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
2739 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
2740 : }
2741 : } else {
2742 0 : arg0 = nullptr;
2743 : }
2744 0 : self->SetOnclose(Constify(arg0));
2745 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2746 :
2747 0 : return true;
2748 : }
2749 :
2750 : static const JSJitInfo onclose_getterinfo = {
2751 : { (JSJitGetterOp)get_onclose },
2752 : { prototypes::id::XULElement },
2753 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
2754 : JSJitInfo::Getter,
2755 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2756 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
2757 : false, /* isInfallible. False in setters. */
2758 : false, /* isMovable. Not relevant for setters. */
2759 : false, /* isEliminatable. Not relevant for setters. */
2760 : false, /* isAlwaysInSlot. Only relevant for getters. */
2761 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2762 : false, /* isTypedMethod. Only relevant for methods. */
2763 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2764 : };
2765 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2766 : static_assert(0 < 1, "There is no slot for us");
2767 : static const JSJitInfo onclose_setterinfo = {
2768 : { (JSJitGetterOp)set_onclose },
2769 : { prototypes::id::XULElement },
2770 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
2771 : JSJitInfo::Setter,
2772 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2773 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
2774 : false, /* isInfallible. False in setters. */
2775 : false, /* isMovable. Not relevant for setters. */
2776 : false, /* isEliminatable. Not relevant for setters. */
2777 : false, /* isAlwaysInSlot. Only relevant for getters. */
2778 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2779 : false, /* isTypedMethod. Only relevant for methods. */
2780 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2781 : };
2782 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2783 : static_assert(0 < 1, "There is no slot for us");
2784 :
2785 : static bool
2786 0 : get_oncontextmenu(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
2787 : {
2788 0 : RefPtr<EventHandlerNonNull> result(self->GetOncontextmenu());
2789 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2790 0 : if (result) {
2791 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
2792 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
2793 0 : return false;
2794 : }
2795 0 : return true;
2796 : } else {
2797 0 : args.rval().setNull();
2798 0 : return true;
2799 : }
2800 : }
2801 :
2802 : static bool
2803 0 : set_oncontextmenu(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
2804 : {
2805 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
2806 0 : if (args[0].isObject()) {
2807 : { // scope for tempRoot
2808 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
2809 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
2810 : }
2811 : } else {
2812 0 : arg0 = nullptr;
2813 : }
2814 0 : self->SetOncontextmenu(Constify(arg0));
2815 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2816 :
2817 0 : return true;
2818 : }
2819 :
2820 : static const JSJitInfo oncontextmenu_getterinfo = {
2821 : { (JSJitGetterOp)get_oncontextmenu },
2822 : { prototypes::id::XULElement },
2823 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
2824 : JSJitInfo::Getter,
2825 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2826 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
2827 : false, /* isInfallible. False in setters. */
2828 : false, /* isMovable. Not relevant for setters. */
2829 : false, /* isEliminatable. Not relevant for setters. */
2830 : false, /* isAlwaysInSlot. Only relevant for getters. */
2831 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2832 : false, /* isTypedMethod. Only relevant for methods. */
2833 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2834 : };
2835 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2836 : static_assert(0 < 1, "There is no slot for us");
2837 : static const JSJitInfo oncontextmenu_setterinfo = {
2838 : { (JSJitGetterOp)set_oncontextmenu },
2839 : { prototypes::id::XULElement },
2840 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
2841 : JSJitInfo::Setter,
2842 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2843 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
2844 : false, /* isInfallible. False in setters. */
2845 : false, /* isMovable. Not relevant for setters. */
2846 : false, /* isEliminatable. Not relevant for setters. */
2847 : false, /* isAlwaysInSlot. Only relevant for getters. */
2848 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2849 : false, /* isTypedMethod. Only relevant for methods. */
2850 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2851 : };
2852 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2853 : static_assert(0 < 1, "There is no slot for us");
2854 :
2855 : static bool
2856 0 : get_ondblclick(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
2857 : {
2858 0 : RefPtr<EventHandlerNonNull> result(self->GetOndblclick());
2859 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2860 0 : if (result) {
2861 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
2862 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
2863 0 : return false;
2864 : }
2865 0 : return true;
2866 : } else {
2867 0 : args.rval().setNull();
2868 0 : return true;
2869 : }
2870 : }
2871 :
2872 : static bool
2873 0 : set_ondblclick(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
2874 : {
2875 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
2876 0 : if (args[0].isObject()) {
2877 : { // scope for tempRoot
2878 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
2879 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
2880 : }
2881 : } else {
2882 0 : arg0 = nullptr;
2883 : }
2884 0 : self->SetOndblclick(Constify(arg0));
2885 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2886 :
2887 0 : return true;
2888 : }
2889 :
2890 : static const JSJitInfo ondblclick_getterinfo = {
2891 : { (JSJitGetterOp)get_ondblclick },
2892 : { prototypes::id::XULElement },
2893 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
2894 : JSJitInfo::Getter,
2895 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2896 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
2897 : false, /* isInfallible. False in setters. */
2898 : false, /* isMovable. Not relevant for setters. */
2899 : false, /* isEliminatable. Not relevant for setters. */
2900 : false, /* isAlwaysInSlot. Only relevant for getters. */
2901 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2902 : false, /* isTypedMethod. Only relevant for methods. */
2903 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2904 : };
2905 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2906 : static_assert(0 < 1, "There is no slot for us");
2907 : static const JSJitInfo ondblclick_setterinfo = {
2908 : { (JSJitGetterOp)set_ondblclick },
2909 : { prototypes::id::XULElement },
2910 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
2911 : JSJitInfo::Setter,
2912 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2913 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
2914 : false, /* isInfallible. False in setters. */
2915 : false, /* isMovable. Not relevant for setters. */
2916 : false, /* isEliminatable. Not relevant for setters. */
2917 : false, /* isAlwaysInSlot. Only relevant for getters. */
2918 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2919 : false, /* isTypedMethod. Only relevant for methods. */
2920 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2921 : };
2922 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2923 : static_assert(0 < 1, "There is no slot for us");
2924 :
2925 : static bool
2926 0 : get_ondrag(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
2927 : {
2928 0 : RefPtr<EventHandlerNonNull> result(self->GetOndrag());
2929 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2930 0 : if (result) {
2931 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
2932 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
2933 0 : return false;
2934 : }
2935 0 : return true;
2936 : } else {
2937 0 : args.rval().setNull();
2938 0 : return true;
2939 : }
2940 : }
2941 :
2942 : static bool
2943 0 : set_ondrag(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
2944 : {
2945 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
2946 0 : if (args[0].isObject()) {
2947 : { // scope for tempRoot
2948 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
2949 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
2950 : }
2951 : } else {
2952 0 : arg0 = nullptr;
2953 : }
2954 0 : self->SetOndrag(Constify(arg0));
2955 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2956 :
2957 0 : return true;
2958 : }
2959 :
2960 : static const JSJitInfo ondrag_getterinfo = {
2961 : { (JSJitGetterOp)get_ondrag },
2962 : { prototypes::id::XULElement },
2963 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
2964 : JSJitInfo::Getter,
2965 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2966 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
2967 : false, /* isInfallible. False in setters. */
2968 : false, /* isMovable. Not relevant for setters. */
2969 : false, /* isEliminatable. Not relevant for setters. */
2970 : false, /* isAlwaysInSlot. Only relevant for getters. */
2971 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2972 : false, /* isTypedMethod. Only relevant for methods. */
2973 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2974 : };
2975 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2976 : static_assert(0 < 1, "There is no slot for us");
2977 : static const JSJitInfo ondrag_setterinfo = {
2978 : { (JSJitGetterOp)set_ondrag },
2979 : { prototypes::id::XULElement },
2980 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
2981 : JSJitInfo::Setter,
2982 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2983 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
2984 : false, /* isInfallible. False in setters. */
2985 : false, /* isMovable. Not relevant for setters. */
2986 : false, /* isEliminatable. Not relevant for setters. */
2987 : false, /* isAlwaysInSlot. Only relevant for getters. */
2988 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2989 : false, /* isTypedMethod. Only relevant for methods. */
2990 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2991 : };
2992 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2993 : static_assert(0 < 1, "There is no slot for us");
2994 :
2995 : static bool
2996 0 : get_ondragend(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
2997 : {
2998 0 : RefPtr<EventHandlerNonNull> result(self->GetOndragend());
2999 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3000 0 : if (result) {
3001 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
3002 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
3003 0 : return false;
3004 : }
3005 0 : return true;
3006 : } else {
3007 0 : args.rval().setNull();
3008 0 : return true;
3009 : }
3010 : }
3011 :
3012 : static bool
3013 0 : set_ondragend(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
3014 : {
3015 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
3016 0 : if (args[0].isObject()) {
3017 : { // scope for tempRoot
3018 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
3019 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
3020 : }
3021 : } else {
3022 0 : arg0 = nullptr;
3023 : }
3024 0 : self->SetOndragend(Constify(arg0));
3025 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3026 :
3027 0 : return true;
3028 : }
3029 :
3030 : static const JSJitInfo ondragend_getterinfo = {
3031 : { (JSJitGetterOp)get_ondragend },
3032 : { prototypes::id::XULElement },
3033 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
3034 : JSJitInfo::Getter,
3035 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3036 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
3037 : false, /* isInfallible. False in setters. */
3038 : false, /* isMovable. Not relevant for setters. */
3039 : false, /* isEliminatable. Not relevant for setters. */
3040 : false, /* isAlwaysInSlot. Only relevant for getters. */
3041 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3042 : false, /* isTypedMethod. Only relevant for methods. */
3043 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3044 : };
3045 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3046 : static_assert(0 < 1, "There is no slot for us");
3047 : static const JSJitInfo ondragend_setterinfo = {
3048 : { (JSJitGetterOp)set_ondragend },
3049 : { prototypes::id::XULElement },
3050 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
3051 : JSJitInfo::Setter,
3052 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3053 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
3054 : false, /* isInfallible. False in setters. */
3055 : false, /* isMovable. Not relevant for setters. */
3056 : false, /* isEliminatable. Not relevant for setters. */
3057 : false, /* isAlwaysInSlot. Only relevant for getters. */
3058 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3059 : false, /* isTypedMethod. Only relevant for methods. */
3060 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3061 : };
3062 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3063 : static_assert(0 < 1, "There is no slot for us");
3064 :
3065 : static bool
3066 0 : get_ondragenter(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
3067 : {
3068 0 : RefPtr<EventHandlerNonNull> result(self->GetOndragenter());
3069 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3070 0 : if (result) {
3071 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
3072 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
3073 0 : return false;
3074 : }
3075 0 : return true;
3076 : } else {
3077 0 : args.rval().setNull();
3078 0 : return true;
3079 : }
3080 : }
3081 :
3082 : static bool
3083 0 : set_ondragenter(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
3084 : {
3085 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
3086 0 : if (args[0].isObject()) {
3087 : { // scope for tempRoot
3088 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
3089 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
3090 : }
3091 : } else {
3092 0 : arg0 = nullptr;
3093 : }
3094 0 : self->SetOndragenter(Constify(arg0));
3095 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3096 :
3097 0 : return true;
3098 : }
3099 :
3100 : static const JSJitInfo ondragenter_getterinfo = {
3101 : { (JSJitGetterOp)get_ondragenter },
3102 : { prototypes::id::XULElement },
3103 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
3104 : JSJitInfo::Getter,
3105 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3106 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
3107 : false, /* isInfallible. False in setters. */
3108 : false, /* isMovable. Not relevant for setters. */
3109 : false, /* isEliminatable. Not relevant for setters. */
3110 : false, /* isAlwaysInSlot. Only relevant for getters. */
3111 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3112 : false, /* isTypedMethod. Only relevant for methods. */
3113 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3114 : };
3115 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3116 : static_assert(0 < 1, "There is no slot for us");
3117 : static const JSJitInfo ondragenter_setterinfo = {
3118 : { (JSJitGetterOp)set_ondragenter },
3119 : { prototypes::id::XULElement },
3120 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
3121 : JSJitInfo::Setter,
3122 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3123 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
3124 : false, /* isInfallible. False in setters. */
3125 : false, /* isMovable. Not relevant for setters. */
3126 : false, /* isEliminatable. Not relevant for setters. */
3127 : false, /* isAlwaysInSlot. Only relevant for getters. */
3128 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3129 : false, /* isTypedMethod. Only relevant for methods. */
3130 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3131 : };
3132 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3133 : static_assert(0 < 1, "There is no slot for us");
3134 :
3135 : static bool
3136 0 : get_ondragexit(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
3137 : {
3138 0 : RefPtr<EventHandlerNonNull> result(self->GetOndragexit());
3139 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3140 0 : if (result) {
3141 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
3142 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
3143 0 : return false;
3144 : }
3145 0 : return true;
3146 : } else {
3147 0 : args.rval().setNull();
3148 0 : return true;
3149 : }
3150 : }
3151 :
3152 : static bool
3153 0 : set_ondragexit(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
3154 : {
3155 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
3156 0 : if (args[0].isObject()) {
3157 : { // scope for tempRoot
3158 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
3159 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
3160 : }
3161 : } else {
3162 0 : arg0 = nullptr;
3163 : }
3164 0 : self->SetOndragexit(Constify(arg0));
3165 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3166 :
3167 0 : return true;
3168 : }
3169 :
3170 : static const JSJitInfo ondragexit_getterinfo = {
3171 : { (JSJitGetterOp)get_ondragexit },
3172 : { prototypes::id::XULElement },
3173 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
3174 : JSJitInfo::Getter,
3175 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3176 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
3177 : false, /* isInfallible. False in setters. */
3178 : false, /* isMovable. Not relevant for setters. */
3179 : false, /* isEliminatable. Not relevant for setters. */
3180 : false, /* isAlwaysInSlot. Only relevant for getters. */
3181 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3182 : false, /* isTypedMethod. Only relevant for methods. */
3183 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3184 : };
3185 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3186 : static_assert(0 < 1, "There is no slot for us");
3187 : static const JSJitInfo ondragexit_setterinfo = {
3188 : { (JSJitGetterOp)set_ondragexit },
3189 : { prototypes::id::XULElement },
3190 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
3191 : JSJitInfo::Setter,
3192 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3193 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
3194 : false, /* isInfallible. False in setters. */
3195 : false, /* isMovable. Not relevant for setters. */
3196 : false, /* isEliminatable. Not relevant for setters. */
3197 : false, /* isAlwaysInSlot. Only relevant for getters. */
3198 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3199 : false, /* isTypedMethod. Only relevant for methods. */
3200 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3201 : };
3202 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3203 : static_assert(0 < 1, "There is no slot for us");
3204 :
3205 : static bool
3206 0 : get_ondragleave(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
3207 : {
3208 0 : RefPtr<EventHandlerNonNull> result(self->GetOndragleave());
3209 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3210 0 : if (result) {
3211 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
3212 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
3213 0 : return false;
3214 : }
3215 0 : return true;
3216 : } else {
3217 0 : args.rval().setNull();
3218 0 : return true;
3219 : }
3220 : }
3221 :
3222 : static bool
3223 0 : set_ondragleave(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
3224 : {
3225 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
3226 0 : if (args[0].isObject()) {
3227 : { // scope for tempRoot
3228 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
3229 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
3230 : }
3231 : } else {
3232 0 : arg0 = nullptr;
3233 : }
3234 0 : self->SetOndragleave(Constify(arg0));
3235 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3236 :
3237 0 : return true;
3238 : }
3239 :
3240 : static const JSJitInfo ondragleave_getterinfo = {
3241 : { (JSJitGetterOp)get_ondragleave },
3242 : { prototypes::id::XULElement },
3243 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
3244 : JSJitInfo::Getter,
3245 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3246 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
3247 : false, /* isInfallible. False in setters. */
3248 : false, /* isMovable. Not relevant for setters. */
3249 : false, /* isEliminatable. Not relevant for setters. */
3250 : false, /* isAlwaysInSlot. Only relevant for getters. */
3251 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3252 : false, /* isTypedMethod. Only relevant for methods. */
3253 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3254 : };
3255 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3256 : static_assert(0 < 1, "There is no slot for us");
3257 : static const JSJitInfo ondragleave_setterinfo = {
3258 : { (JSJitGetterOp)set_ondragleave },
3259 : { prototypes::id::XULElement },
3260 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
3261 : JSJitInfo::Setter,
3262 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3263 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
3264 : false, /* isInfallible. False in setters. */
3265 : false, /* isMovable. Not relevant for setters. */
3266 : false, /* isEliminatable. Not relevant for setters. */
3267 : false, /* isAlwaysInSlot. Only relevant for getters. */
3268 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3269 : false, /* isTypedMethod. Only relevant for methods. */
3270 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3271 : };
3272 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3273 : static_assert(0 < 1, "There is no slot for us");
3274 :
3275 : static bool
3276 0 : get_ondragover(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
3277 : {
3278 0 : RefPtr<EventHandlerNonNull> result(self->GetOndragover());
3279 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3280 0 : if (result) {
3281 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
3282 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
3283 0 : return false;
3284 : }
3285 0 : return true;
3286 : } else {
3287 0 : args.rval().setNull();
3288 0 : return true;
3289 : }
3290 : }
3291 :
3292 : static bool
3293 0 : set_ondragover(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
3294 : {
3295 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
3296 0 : if (args[0].isObject()) {
3297 : { // scope for tempRoot
3298 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
3299 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
3300 : }
3301 : } else {
3302 0 : arg0 = nullptr;
3303 : }
3304 0 : self->SetOndragover(Constify(arg0));
3305 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3306 :
3307 0 : return true;
3308 : }
3309 :
3310 : static const JSJitInfo ondragover_getterinfo = {
3311 : { (JSJitGetterOp)get_ondragover },
3312 : { prototypes::id::XULElement },
3313 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
3314 : JSJitInfo::Getter,
3315 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3316 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
3317 : false, /* isInfallible. False in setters. */
3318 : false, /* isMovable. Not relevant for setters. */
3319 : false, /* isEliminatable. Not relevant for setters. */
3320 : false, /* isAlwaysInSlot. Only relevant for getters. */
3321 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3322 : false, /* isTypedMethod. Only relevant for methods. */
3323 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3324 : };
3325 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3326 : static_assert(0 < 1, "There is no slot for us");
3327 : static const JSJitInfo ondragover_setterinfo = {
3328 : { (JSJitGetterOp)set_ondragover },
3329 : { prototypes::id::XULElement },
3330 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
3331 : JSJitInfo::Setter,
3332 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3333 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
3334 : false, /* isInfallible. False in setters. */
3335 : false, /* isMovable. Not relevant for setters. */
3336 : false, /* isEliminatable. Not relevant for setters. */
3337 : false, /* isAlwaysInSlot. Only relevant for getters. */
3338 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3339 : false, /* isTypedMethod. Only relevant for methods. */
3340 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3341 : };
3342 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3343 : static_assert(0 < 1, "There is no slot for us");
3344 :
3345 : static bool
3346 0 : get_ondragstart(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
3347 : {
3348 0 : RefPtr<EventHandlerNonNull> result(self->GetOndragstart());
3349 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3350 0 : if (result) {
3351 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
3352 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
3353 0 : return false;
3354 : }
3355 0 : return true;
3356 : } else {
3357 0 : args.rval().setNull();
3358 0 : return true;
3359 : }
3360 : }
3361 :
3362 : static bool
3363 0 : set_ondragstart(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
3364 : {
3365 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
3366 0 : if (args[0].isObject()) {
3367 : { // scope for tempRoot
3368 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
3369 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
3370 : }
3371 : } else {
3372 0 : arg0 = nullptr;
3373 : }
3374 0 : self->SetOndragstart(Constify(arg0));
3375 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3376 :
3377 0 : return true;
3378 : }
3379 :
3380 : static const JSJitInfo ondragstart_getterinfo = {
3381 : { (JSJitGetterOp)get_ondragstart },
3382 : { prototypes::id::XULElement },
3383 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
3384 : JSJitInfo::Getter,
3385 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3386 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
3387 : false, /* isInfallible. False in setters. */
3388 : false, /* isMovable. Not relevant for setters. */
3389 : false, /* isEliminatable. Not relevant for setters. */
3390 : false, /* isAlwaysInSlot. Only relevant for getters. */
3391 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3392 : false, /* isTypedMethod. Only relevant for methods. */
3393 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3394 : };
3395 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3396 : static_assert(0 < 1, "There is no slot for us");
3397 : static const JSJitInfo ondragstart_setterinfo = {
3398 : { (JSJitGetterOp)set_ondragstart },
3399 : { prototypes::id::XULElement },
3400 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
3401 : JSJitInfo::Setter,
3402 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3403 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
3404 : false, /* isInfallible. False in setters. */
3405 : false, /* isMovable. Not relevant for setters. */
3406 : false, /* isEliminatable. Not relevant for setters. */
3407 : false, /* isAlwaysInSlot. Only relevant for getters. */
3408 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3409 : false, /* isTypedMethod. Only relevant for methods. */
3410 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3411 : };
3412 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3413 : static_assert(0 < 1, "There is no slot for us");
3414 :
3415 : static bool
3416 0 : get_ondrop(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
3417 : {
3418 0 : RefPtr<EventHandlerNonNull> result(self->GetOndrop());
3419 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3420 0 : if (result) {
3421 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
3422 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
3423 0 : return false;
3424 : }
3425 0 : return true;
3426 : } else {
3427 0 : args.rval().setNull();
3428 0 : return true;
3429 : }
3430 : }
3431 :
3432 : static bool
3433 0 : set_ondrop(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
3434 : {
3435 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
3436 0 : if (args[0].isObject()) {
3437 : { // scope for tempRoot
3438 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
3439 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
3440 : }
3441 : } else {
3442 0 : arg0 = nullptr;
3443 : }
3444 0 : self->SetOndrop(Constify(arg0));
3445 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3446 :
3447 0 : return true;
3448 : }
3449 :
3450 : static const JSJitInfo ondrop_getterinfo = {
3451 : { (JSJitGetterOp)get_ondrop },
3452 : { prototypes::id::XULElement },
3453 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
3454 : JSJitInfo::Getter,
3455 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3456 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
3457 : false, /* isInfallible. False in setters. */
3458 : false, /* isMovable. Not relevant for setters. */
3459 : false, /* isEliminatable. Not relevant for setters. */
3460 : false, /* isAlwaysInSlot. Only relevant for getters. */
3461 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3462 : false, /* isTypedMethod. Only relevant for methods. */
3463 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3464 : };
3465 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3466 : static_assert(0 < 1, "There is no slot for us");
3467 : static const JSJitInfo ondrop_setterinfo = {
3468 : { (JSJitGetterOp)set_ondrop },
3469 : { prototypes::id::XULElement },
3470 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
3471 : JSJitInfo::Setter,
3472 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3473 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
3474 : false, /* isInfallible. False in setters. */
3475 : false, /* isMovable. Not relevant for setters. */
3476 : false, /* isEliminatable. Not relevant for setters. */
3477 : false, /* isAlwaysInSlot. Only relevant for getters. */
3478 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3479 : false, /* isTypedMethod. Only relevant for methods. */
3480 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3481 : };
3482 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3483 : static_assert(0 < 1, "There is no slot for us");
3484 :
3485 : static bool
3486 0 : get_ondurationchange(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
3487 : {
3488 0 : RefPtr<EventHandlerNonNull> result(self->GetOndurationchange());
3489 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3490 0 : if (result) {
3491 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
3492 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
3493 0 : return false;
3494 : }
3495 0 : return true;
3496 : } else {
3497 0 : args.rval().setNull();
3498 0 : return true;
3499 : }
3500 : }
3501 :
3502 : static bool
3503 0 : set_ondurationchange(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
3504 : {
3505 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
3506 0 : if (args[0].isObject()) {
3507 : { // scope for tempRoot
3508 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
3509 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
3510 : }
3511 : } else {
3512 0 : arg0 = nullptr;
3513 : }
3514 0 : self->SetOndurationchange(Constify(arg0));
3515 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3516 :
3517 0 : return true;
3518 : }
3519 :
3520 : static const JSJitInfo ondurationchange_getterinfo = {
3521 : { (JSJitGetterOp)get_ondurationchange },
3522 : { prototypes::id::XULElement },
3523 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
3524 : JSJitInfo::Getter,
3525 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3526 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
3527 : false, /* isInfallible. False in setters. */
3528 : false, /* isMovable. Not relevant for setters. */
3529 : false, /* isEliminatable. Not relevant for setters. */
3530 : false, /* isAlwaysInSlot. Only relevant for getters. */
3531 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3532 : false, /* isTypedMethod. Only relevant for methods. */
3533 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3534 : };
3535 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3536 : static_assert(0 < 1, "There is no slot for us");
3537 : static const JSJitInfo ondurationchange_setterinfo = {
3538 : { (JSJitGetterOp)set_ondurationchange },
3539 : { prototypes::id::XULElement },
3540 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
3541 : JSJitInfo::Setter,
3542 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3543 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
3544 : false, /* isInfallible. False in setters. */
3545 : false, /* isMovable. Not relevant for setters. */
3546 : false, /* isEliminatable. Not relevant for setters. */
3547 : false, /* isAlwaysInSlot. Only relevant for getters. */
3548 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3549 : false, /* isTypedMethod. Only relevant for methods. */
3550 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3551 : };
3552 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3553 : static_assert(0 < 1, "There is no slot for us");
3554 :
3555 : static bool
3556 0 : get_onemptied(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
3557 : {
3558 0 : RefPtr<EventHandlerNonNull> result(self->GetOnemptied());
3559 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3560 0 : if (result) {
3561 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
3562 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
3563 0 : return false;
3564 : }
3565 0 : return true;
3566 : } else {
3567 0 : args.rval().setNull();
3568 0 : return true;
3569 : }
3570 : }
3571 :
3572 : static bool
3573 0 : set_onemptied(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
3574 : {
3575 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
3576 0 : if (args[0].isObject()) {
3577 : { // scope for tempRoot
3578 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
3579 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
3580 : }
3581 : } else {
3582 0 : arg0 = nullptr;
3583 : }
3584 0 : self->SetOnemptied(Constify(arg0));
3585 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3586 :
3587 0 : return true;
3588 : }
3589 :
3590 : static const JSJitInfo onemptied_getterinfo = {
3591 : { (JSJitGetterOp)get_onemptied },
3592 : { prototypes::id::XULElement },
3593 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
3594 : JSJitInfo::Getter,
3595 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3596 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
3597 : false, /* isInfallible. False in setters. */
3598 : false, /* isMovable. Not relevant for setters. */
3599 : false, /* isEliminatable. Not relevant for setters. */
3600 : false, /* isAlwaysInSlot. Only relevant for getters. */
3601 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3602 : false, /* isTypedMethod. Only relevant for methods. */
3603 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3604 : };
3605 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3606 : static_assert(0 < 1, "There is no slot for us");
3607 : static const JSJitInfo onemptied_setterinfo = {
3608 : { (JSJitGetterOp)set_onemptied },
3609 : { prototypes::id::XULElement },
3610 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
3611 : JSJitInfo::Setter,
3612 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3613 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
3614 : false, /* isInfallible. False in setters. */
3615 : false, /* isMovable. Not relevant for setters. */
3616 : false, /* isEliminatable. Not relevant for setters. */
3617 : false, /* isAlwaysInSlot. Only relevant for getters. */
3618 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3619 : false, /* isTypedMethod. Only relevant for methods. */
3620 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3621 : };
3622 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3623 : static_assert(0 < 1, "There is no slot for us");
3624 :
3625 : static bool
3626 0 : get_onended(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
3627 : {
3628 0 : RefPtr<EventHandlerNonNull> result(self->GetOnended());
3629 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3630 0 : if (result) {
3631 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
3632 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
3633 0 : return false;
3634 : }
3635 0 : return true;
3636 : } else {
3637 0 : args.rval().setNull();
3638 0 : return true;
3639 : }
3640 : }
3641 :
3642 : static bool
3643 0 : set_onended(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
3644 : {
3645 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
3646 0 : if (args[0].isObject()) {
3647 : { // scope for tempRoot
3648 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
3649 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
3650 : }
3651 : } else {
3652 0 : arg0 = nullptr;
3653 : }
3654 0 : self->SetOnended(Constify(arg0));
3655 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3656 :
3657 0 : return true;
3658 : }
3659 :
3660 : static const JSJitInfo onended_getterinfo = {
3661 : { (JSJitGetterOp)get_onended },
3662 : { prototypes::id::XULElement },
3663 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
3664 : JSJitInfo::Getter,
3665 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3666 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
3667 : false, /* isInfallible. False in setters. */
3668 : false, /* isMovable. Not relevant for setters. */
3669 : false, /* isEliminatable. Not relevant for setters. */
3670 : false, /* isAlwaysInSlot. Only relevant for getters. */
3671 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3672 : false, /* isTypedMethod. Only relevant for methods. */
3673 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3674 : };
3675 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3676 : static_assert(0 < 1, "There is no slot for us");
3677 : static const JSJitInfo onended_setterinfo = {
3678 : { (JSJitGetterOp)set_onended },
3679 : { prototypes::id::XULElement },
3680 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
3681 : JSJitInfo::Setter,
3682 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3683 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
3684 : false, /* isInfallible. False in setters. */
3685 : false, /* isMovable. Not relevant for setters. */
3686 : false, /* isEliminatable. Not relevant for setters. */
3687 : false, /* isAlwaysInSlot. Only relevant for getters. */
3688 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3689 : false, /* isTypedMethod. Only relevant for methods. */
3690 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3691 : };
3692 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3693 : static_assert(0 < 1, "There is no slot for us");
3694 :
3695 : static bool
3696 0 : get_oninput(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
3697 : {
3698 0 : RefPtr<EventHandlerNonNull> result(self->GetOninput());
3699 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3700 0 : if (result) {
3701 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
3702 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
3703 0 : return false;
3704 : }
3705 0 : return true;
3706 : } else {
3707 0 : args.rval().setNull();
3708 0 : return true;
3709 : }
3710 : }
3711 :
3712 : static bool
3713 0 : set_oninput(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
3714 : {
3715 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
3716 0 : if (args[0].isObject()) {
3717 : { // scope for tempRoot
3718 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
3719 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
3720 : }
3721 : } else {
3722 0 : arg0 = nullptr;
3723 : }
3724 0 : self->SetOninput(Constify(arg0));
3725 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3726 :
3727 0 : return true;
3728 : }
3729 :
3730 : static const JSJitInfo oninput_getterinfo = {
3731 : { (JSJitGetterOp)get_oninput },
3732 : { prototypes::id::XULElement },
3733 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
3734 : JSJitInfo::Getter,
3735 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3736 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
3737 : false, /* isInfallible. False in setters. */
3738 : false, /* isMovable. Not relevant for setters. */
3739 : false, /* isEliminatable. Not relevant for setters. */
3740 : false, /* isAlwaysInSlot. Only relevant for getters. */
3741 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3742 : false, /* isTypedMethod. Only relevant for methods. */
3743 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3744 : };
3745 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3746 : static_assert(0 < 1, "There is no slot for us");
3747 : static const JSJitInfo oninput_setterinfo = {
3748 : { (JSJitGetterOp)set_oninput },
3749 : { prototypes::id::XULElement },
3750 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
3751 : JSJitInfo::Setter,
3752 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3753 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
3754 : false, /* isInfallible. False in setters. */
3755 : false, /* isMovable. Not relevant for setters. */
3756 : false, /* isEliminatable. Not relevant for setters. */
3757 : false, /* isAlwaysInSlot. Only relevant for getters. */
3758 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3759 : false, /* isTypedMethod. Only relevant for methods. */
3760 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3761 : };
3762 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3763 : static_assert(0 < 1, "There is no slot for us");
3764 :
3765 : static bool
3766 0 : get_oninvalid(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
3767 : {
3768 0 : RefPtr<EventHandlerNonNull> result(self->GetOninvalid());
3769 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3770 0 : if (result) {
3771 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
3772 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
3773 0 : return false;
3774 : }
3775 0 : return true;
3776 : } else {
3777 0 : args.rval().setNull();
3778 0 : return true;
3779 : }
3780 : }
3781 :
3782 : static bool
3783 0 : set_oninvalid(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
3784 : {
3785 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
3786 0 : if (args[0].isObject()) {
3787 : { // scope for tempRoot
3788 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
3789 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
3790 : }
3791 : } else {
3792 0 : arg0 = nullptr;
3793 : }
3794 0 : self->SetOninvalid(Constify(arg0));
3795 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3796 :
3797 0 : return true;
3798 : }
3799 :
3800 : static const JSJitInfo oninvalid_getterinfo = {
3801 : { (JSJitGetterOp)get_oninvalid },
3802 : { prototypes::id::XULElement },
3803 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
3804 : JSJitInfo::Getter,
3805 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3806 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
3807 : false, /* isInfallible. False in setters. */
3808 : false, /* isMovable. Not relevant for setters. */
3809 : false, /* isEliminatable. Not relevant for setters. */
3810 : false, /* isAlwaysInSlot. Only relevant for getters. */
3811 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3812 : false, /* isTypedMethod. Only relevant for methods. */
3813 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3814 : };
3815 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3816 : static_assert(0 < 1, "There is no slot for us");
3817 : static const JSJitInfo oninvalid_setterinfo = {
3818 : { (JSJitGetterOp)set_oninvalid },
3819 : { prototypes::id::XULElement },
3820 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
3821 : JSJitInfo::Setter,
3822 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3823 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
3824 : false, /* isInfallible. False in setters. */
3825 : false, /* isMovable. Not relevant for setters. */
3826 : false, /* isEliminatable. Not relevant for setters. */
3827 : false, /* isAlwaysInSlot. Only relevant for getters. */
3828 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3829 : false, /* isTypedMethod. Only relevant for methods. */
3830 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3831 : };
3832 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3833 : static_assert(0 < 1, "There is no slot for us");
3834 :
3835 : static bool
3836 0 : get_onkeydown(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
3837 : {
3838 0 : RefPtr<EventHandlerNonNull> result(self->GetOnkeydown());
3839 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3840 0 : if (result) {
3841 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
3842 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
3843 0 : return false;
3844 : }
3845 0 : return true;
3846 : } else {
3847 0 : args.rval().setNull();
3848 0 : return true;
3849 : }
3850 : }
3851 :
3852 : static bool
3853 0 : set_onkeydown(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
3854 : {
3855 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
3856 0 : if (args[0].isObject()) {
3857 : { // scope for tempRoot
3858 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
3859 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
3860 : }
3861 : } else {
3862 0 : arg0 = nullptr;
3863 : }
3864 0 : self->SetOnkeydown(Constify(arg0));
3865 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3866 :
3867 0 : return true;
3868 : }
3869 :
3870 : static const JSJitInfo onkeydown_getterinfo = {
3871 : { (JSJitGetterOp)get_onkeydown },
3872 : { prototypes::id::XULElement },
3873 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
3874 : JSJitInfo::Getter,
3875 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3876 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
3877 : false, /* isInfallible. False in setters. */
3878 : false, /* isMovable. Not relevant for setters. */
3879 : false, /* isEliminatable. Not relevant for setters. */
3880 : false, /* isAlwaysInSlot. Only relevant for getters. */
3881 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3882 : false, /* isTypedMethod. Only relevant for methods. */
3883 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3884 : };
3885 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3886 : static_assert(0 < 1, "There is no slot for us");
3887 : static const JSJitInfo onkeydown_setterinfo = {
3888 : { (JSJitGetterOp)set_onkeydown },
3889 : { prototypes::id::XULElement },
3890 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
3891 : JSJitInfo::Setter,
3892 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3893 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
3894 : false, /* isInfallible. False in setters. */
3895 : false, /* isMovable. Not relevant for setters. */
3896 : false, /* isEliminatable. Not relevant for setters. */
3897 : false, /* isAlwaysInSlot. Only relevant for getters. */
3898 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3899 : false, /* isTypedMethod. Only relevant for methods. */
3900 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3901 : };
3902 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3903 : static_assert(0 < 1, "There is no slot for us");
3904 :
3905 : static bool
3906 0 : get_onkeypress(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
3907 : {
3908 0 : RefPtr<EventHandlerNonNull> result(self->GetOnkeypress());
3909 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3910 0 : if (result) {
3911 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
3912 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
3913 0 : return false;
3914 : }
3915 0 : return true;
3916 : } else {
3917 0 : args.rval().setNull();
3918 0 : return true;
3919 : }
3920 : }
3921 :
3922 : static bool
3923 0 : set_onkeypress(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
3924 : {
3925 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
3926 0 : if (args[0].isObject()) {
3927 : { // scope for tempRoot
3928 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
3929 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
3930 : }
3931 : } else {
3932 0 : arg0 = nullptr;
3933 : }
3934 0 : self->SetOnkeypress(Constify(arg0));
3935 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3936 :
3937 0 : return true;
3938 : }
3939 :
3940 : static const JSJitInfo onkeypress_getterinfo = {
3941 : { (JSJitGetterOp)get_onkeypress },
3942 : { prototypes::id::XULElement },
3943 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
3944 : JSJitInfo::Getter,
3945 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3946 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
3947 : false, /* isInfallible. False in setters. */
3948 : false, /* isMovable. Not relevant for setters. */
3949 : false, /* isEliminatable. Not relevant for setters. */
3950 : false, /* isAlwaysInSlot. Only relevant for getters. */
3951 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3952 : false, /* isTypedMethod. Only relevant for methods. */
3953 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3954 : };
3955 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3956 : static_assert(0 < 1, "There is no slot for us");
3957 : static const JSJitInfo onkeypress_setterinfo = {
3958 : { (JSJitGetterOp)set_onkeypress },
3959 : { prototypes::id::XULElement },
3960 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
3961 : JSJitInfo::Setter,
3962 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3963 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
3964 : false, /* isInfallible. False in setters. */
3965 : false, /* isMovable. Not relevant for setters. */
3966 : false, /* isEliminatable. Not relevant for setters. */
3967 : false, /* isAlwaysInSlot. Only relevant for getters. */
3968 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3969 : false, /* isTypedMethod. Only relevant for methods. */
3970 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3971 : };
3972 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3973 : static_assert(0 < 1, "There is no slot for us");
3974 :
3975 : static bool
3976 0 : get_onkeyup(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
3977 : {
3978 0 : RefPtr<EventHandlerNonNull> result(self->GetOnkeyup());
3979 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3980 0 : if (result) {
3981 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
3982 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
3983 0 : return false;
3984 : }
3985 0 : return true;
3986 : } else {
3987 0 : args.rval().setNull();
3988 0 : return true;
3989 : }
3990 : }
3991 :
3992 : static bool
3993 0 : set_onkeyup(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
3994 : {
3995 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
3996 0 : if (args[0].isObject()) {
3997 : { // scope for tempRoot
3998 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
3999 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
4000 : }
4001 : } else {
4002 0 : arg0 = nullptr;
4003 : }
4004 0 : self->SetOnkeyup(Constify(arg0));
4005 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4006 :
4007 0 : return true;
4008 : }
4009 :
4010 : static const JSJitInfo onkeyup_getterinfo = {
4011 : { (JSJitGetterOp)get_onkeyup },
4012 : { prototypes::id::XULElement },
4013 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
4014 : JSJitInfo::Getter,
4015 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4016 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
4017 : false, /* isInfallible. False in setters. */
4018 : false, /* isMovable. Not relevant for setters. */
4019 : false, /* isEliminatable. Not relevant for setters. */
4020 : false, /* isAlwaysInSlot. Only relevant for getters. */
4021 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4022 : false, /* isTypedMethod. Only relevant for methods. */
4023 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4024 : };
4025 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4026 : static_assert(0 < 1, "There is no slot for us");
4027 : static const JSJitInfo onkeyup_setterinfo = {
4028 : { (JSJitGetterOp)set_onkeyup },
4029 : { prototypes::id::XULElement },
4030 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
4031 : JSJitInfo::Setter,
4032 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4033 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
4034 : false, /* isInfallible. False in setters. */
4035 : false, /* isMovable. Not relevant for setters. */
4036 : false, /* isEliminatable. Not relevant for setters. */
4037 : false, /* isAlwaysInSlot. Only relevant for getters. */
4038 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4039 : false, /* isTypedMethod. Only relevant for methods. */
4040 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4041 : };
4042 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4043 : static_assert(0 < 1, "There is no slot for us");
4044 :
4045 : static bool
4046 0 : get_onload(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
4047 : {
4048 0 : RefPtr<EventHandlerNonNull> result(self->GetOnload());
4049 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4050 0 : if (result) {
4051 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
4052 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
4053 0 : return false;
4054 : }
4055 0 : return true;
4056 : } else {
4057 0 : args.rval().setNull();
4058 0 : return true;
4059 : }
4060 : }
4061 :
4062 : static bool
4063 0 : set_onload(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
4064 : {
4065 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
4066 0 : if (args[0].isObject()) {
4067 : { // scope for tempRoot
4068 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
4069 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
4070 : }
4071 : } else {
4072 0 : arg0 = nullptr;
4073 : }
4074 0 : self->SetOnload(Constify(arg0));
4075 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4076 :
4077 0 : return true;
4078 : }
4079 :
4080 : static const JSJitInfo onload_getterinfo = {
4081 : { (JSJitGetterOp)get_onload },
4082 : { prototypes::id::XULElement },
4083 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
4084 : JSJitInfo::Getter,
4085 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4086 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
4087 : false, /* isInfallible. False in setters. */
4088 : false, /* isMovable. Not relevant for setters. */
4089 : false, /* isEliminatable. Not relevant for setters. */
4090 : false, /* isAlwaysInSlot. Only relevant for getters. */
4091 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4092 : false, /* isTypedMethod. Only relevant for methods. */
4093 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4094 : };
4095 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4096 : static_assert(0 < 1, "There is no slot for us");
4097 : static const JSJitInfo onload_setterinfo = {
4098 : { (JSJitGetterOp)set_onload },
4099 : { prototypes::id::XULElement },
4100 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
4101 : JSJitInfo::Setter,
4102 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4103 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
4104 : false, /* isInfallible. False in setters. */
4105 : false, /* isMovable. Not relevant for setters. */
4106 : false, /* isEliminatable. Not relevant for setters. */
4107 : false, /* isAlwaysInSlot. Only relevant for getters. */
4108 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4109 : false, /* isTypedMethod. Only relevant for methods. */
4110 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4111 : };
4112 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4113 : static_assert(0 < 1, "There is no slot for us");
4114 :
4115 : static bool
4116 0 : get_onloadeddata(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
4117 : {
4118 0 : RefPtr<EventHandlerNonNull> result(self->GetOnloadeddata());
4119 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4120 0 : if (result) {
4121 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
4122 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
4123 0 : return false;
4124 : }
4125 0 : return true;
4126 : } else {
4127 0 : args.rval().setNull();
4128 0 : return true;
4129 : }
4130 : }
4131 :
4132 : static bool
4133 0 : set_onloadeddata(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
4134 : {
4135 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
4136 0 : if (args[0].isObject()) {
4137 : { // scope for tempRoot
4138 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
4139 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
4140 : }
4141 : } else {
4142 0 : arg0 = nullptr;
4143 : }
4144 0 : self->SetOnloadeddata(Constify(arg0));
4145 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4146 :
4147 0 : return true;
4148 : }
4149 :
4150 : static const JSJitInfo onloadeddata_getterinfo = {
4151 : { (JSJitGetterOp)get_onloadeddata },
4152 : { prototypes::id::XULElement },
4153 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
4154 : JSJitInfo::Getter,
4155 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4156 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
4157 : false, /* isInfallible. False in setters. */
4158 : false, /* isMovable. Not relevant for setters. */
4159 : false, /* isEliminatable. Not relevant for setters. */
4160 : false, /* isAlwaysInSlot. Only relevant for getters. */
4161 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4162 : false, /* isTypedMethod. Only relevant for methods. */
4163 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4164 : };
4165 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4166 : static_assert(0 < 1, "There is no slot for us");
4167 : static const JSJitInfo onloadeddata_setterinfo = {
4168 : { (JSJitGetterOp)set_onloadeddata },
4169 : { prototypes::id::XULElement },
4170 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
4171 : JSJitInfo::Setter,
4172 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4173 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
4174 : false, /* isInfallible. False in setters. */
4175 : false, /* isMovable. Not relevant for setters. */
4176 : false, /* isEliminatable. Not relevant for setters. */
4177 : false, /* isAlwaysInSlot. Only relevant for getters. */
4178 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4179 : false, /* isTypedMethod. Only relevant for methods. */
4180 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4181 : };
4182 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4183 : static_assert(0 < 1, "There is no slot for us");
4184 :
4185 : static bool
4186 0 : get_onloadedmetadata(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
4187 : {
4188 0 : RefPtr<EventHandlerNonNull> result(self->GetOnloadedmetadata());
4189 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4190 0 : if (result) {
4191 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
4192 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
4193 0 : return false;
4194 : }
4195 0 : return true;
4196 : } else {
4197 0 : args.rval().setNull();
4198 0 : return true;
4199 : }
4200 : }
4201 :
4202 : static bool
4203 0 : set_onloadedmetadata(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
4204 : {
4205 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
4206 0 : if (args[0].isObject()) {
4207 : { // scope for tempRoot
4208 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
4209 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
4210 : }
4211 : } else {
4212 0 : arg0 = nullptr;
4213 : }
4214 0 : self->SetOnloadedmetadata(Constify(arg0));
4215 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4216 :
4217 0 : return true;
4218 : }
4219 :
4220 : static const JSJitInfo onloadedmetadata_getterinfo = {
4221 : { (JSJitGetterOp)get_onloadedmetadata },
4222 : { prototypes::id::XULElement },
4223 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
4224 : JSJitInfo::Getter,
4225 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4226 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
4227 : false, /* isInfallible. False in setters. */
4228 : false, /* isMovable. Not relevant for setters. */
4229 : false, /* isEliminatable. Not relevant for setters. */
4230 : false, /* isAlwaysInSlot. Only relevant for getters. */
4231 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4232 : false, /* isTypedMethod. Only relevant for methods. */
4233 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4234 : };
4235 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4236 : static_assert(0 < 1, "There is no slot for us");
4237 : static const JSJitInfo onloadedmetadata_setterinfo = {
4238 : { (JSJitGetterOp)set_onloadedmetadata },
4239 : { prototypes::id::XULElement },
4240 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
4241 : JSJitInfo::Setter,
4242 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4243 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
4244 : false, /* isInfallible. False in setters. */
4245 : false, /* isMovable. Not relevant for setters. */
4246 : false, /* isEliminatable. Not relevant for setters. */
4247 : false, /* isAlwaysInSlot. Only relevant for getters. */
4248 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4249 : false, /* isTypedMethod. Only relevant for methods. */
4250 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4251 : };
4252 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4253 : static_assert(0 < 1, "There is no slot for us");
4254 :
4255 : static bool
4256 0 : get_onloadend(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
4257 : {
4258 0 : RefPtr<EventHandlerNonNull> result(self->GetOnloadend());
4259 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4260 0 : if (result) {
4261 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
4262 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
4263 0 : return false;
4264 : }
4265 0 : return true;
4266 : } else {
4267 0 : args.rval().setNull();
4268 0 : return true;
4269 : }
4270 : }
4271 :
4272 : static bool
4273 0 : set_onloadend(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
4274 : {
4275 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
4276 0 : if (args[0].isObject()) {
4277 : { // scope for tempRoot
4278 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
4279 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
4280 : }
4281 : } else {
4282 0 : arg0 = nullptr;
4283 : }
4284 0 : self->SetOnloadend(Constify(arg0));
4285 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4286 :
4287 0 : return true;
4288 : }
4289 :
4290 : static const JSJitInfo onloadend_getterinfo = {
4291 : { (JSJitGetterOp)get_onloadend },
4292 : { prototypes::id::XULElement },
4293 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
4294 : JSJitInfo::Getter,
4295 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4296 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
4297 : false, /* isInfallible. False in setters. */
4298 : false, /* isMovable. Not relevant for setters. */
4299 : false, /* isEliminatable. Not relevant for setters. */
4300 : false, /* isAlwaysInSlot. Only relevant for getters. */
4301 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4302 : false, /* isTypedMethod. Only relevant for methods. */
4303 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4304 : };
4305 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4306 : static_assert(0 < 1, "There is no slot for us");
4307 : static const JSJitInfo onloadend_setterinfo = {
4308 : { (JSJitGetterOp)set_onloadend },
4309 : { prototypes::id::XULElement },
4310 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
4311 : JSJitInfo::Setter,
4312 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4313 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
4314 : false, /* isInfallible. False in setters. */
4315 : false, /* isMovable. Not relevant for setters. */
4316 : false, /* isEliminatable. Not relevant for setters. */
4317 : false, /* isAlwaysInSlot. Only relevant for getters. */
4318 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4319 : false, /* isTypedMethod. Only relevant for methods. */
4320 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4321 : };
4322 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4323 : static_assert(0 < 1, "There is no slot for us");
4324 :
4325 : static bool
4326 0 : get_onloadstart(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
4327 : {
4328 0 : RefPtr<EventHandlerNonNull> result(self->GetOnloadstart());
4329 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4330 0 : if (result) {
4331 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
4332 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
4333 0 : return false;
4334 : }
4335 0 : return true;
4336 : } else {
4337 0 : args.rval().setNull();
4338 0 : return true;
4339 : }
4340 : }
4341 :
4342 : static bool
4343 0 : set_onloadstart(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
4344 : {
4345 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
4346 0 : if (args[0].isObject()) {
4347 : { // scope for tempRoot
4348 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
4349 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
4350 : }
4351 : } else {
4352 0 : arg0 = nullptr;
4353 : }
4354 0 : self->SetOnloadstart(Constify(arg0));
4355 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4356 :
4357 0 : return true;
4358 : }
4359 :
4360 : static const JSJitInfo onloadstart_getterinfo = {
4361 : { (JSJitGetterOp)get_onloadstart },
4362 : { prototypes::id::XULElement },
4363 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
4364 : JSJitInfo::Getter,
4365 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4366 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
4367 : false, /* isInfallible. False in setters. */
4368 : false, /* isMovable. Not relevant for setters. */
4369 : false, /* isEliminatable. Not relevant for setters. */
4370 : false, /* isAlwaysInSlot. Only relevant for getters. */
4371 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4372 : false, /* isTypedMethod. Only relevant for methods. */
4373 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4374 : };
4375 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4376 : static_assert(0 < 1, "There is no slot for us");
4377 : static const JSJitInfo onloadstart_setterinfo = {
4378 : { (JSJitGetterOp)set_onloadstart },
4379 : { prototypes::id::XULElement },
4380 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
4381 : JSJitInfo::Setter,
4382 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4383 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
4384 : false, /* isInfallible. False in setters. */
4385 : false, /* isMovable. Not relevant for setters. */
4386 : false, /* isEliminatable. Not relevant for setters. */
4387 : false, /* isAlwaysInSlot. Only relevant for getters. */
4388 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4389 : false, /* isTypedMethod. Only relevant for methods. */
4390 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4391 : };
4392 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4393 : static_assert(0 < 1, "There is no slot for us");
4394 :
4395 : static bool
4396 0 : get_onmousedown(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
4397 : {
4398 0 : RefPtr<EventHandlerNonNull> result(self->GetOnmousedown());
4399 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4400 0 : if (result) {
4401 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
4402 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
4403 0 : return false;
4404 : }
4405 0 : return true;
4406 : } else {
4407 0 : args.rval().setNull();
4408 0 : return true;
4409 : }
4410 : }
4411 :
4412 : static bool
4413 0 : set_onmousedown(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
4414 : {
4415 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
4416 0 : if (args[0].isObject()) {
4417 : { // scope for tempRoot
4418 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
4419 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
4420 : }
4421 : } else {
4422 0 : arg0 = nullptr;
4423 : }
4424 0 : self->SetOnmousedown(Constify(arg0));
4425 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4426 :
4427 0 : return true;
4428 : }
4429 :
4430 : static const JSJitInfo onmousedown_getterinfo = {
4431 : { (JSJitGetterOp)get_onmousedown },
4432 : { prototypes::id::XULElement },
4433 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
4434 : JSJitInfo::Getter,
4435 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4436 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
4437 : false, /* isInfallible. False in setters. */
4438 : false, /* isMovable. Not relevant for setters. */
4439 : false, /* isEliminatable. Not relevant for setters. */
4440 : false, /* isAlwaysInSlot. Only relevant for getters. */
4441 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4442 : false, /* isTypedMethod. Only relevant for methods. */
4443 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4444 : };
4445 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4446 : static_assert(0 < 1, "There is no slot for us");
4447 : static const JSJitInfo onmousedown_setterinfo = {
4448 : { (JSJitGetterOp)set_onmousedown },
4449 : { prototypes::id::XULElement },
4450 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
4451 : JSJitInfo::Setter,
4452 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4453 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
4454 : false, /* isInfallible. False in setters. */
4455 : false, /* isMovable. Not relevant for setters. */
4456 : false, /* isEliminatable. Not relevant for setters. */
4457 : false, /* isAlwaysInSlot. Only relevant for getters. */
4458 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4459 : false, /* isTypedMethod. Only relevant for methods. */
4460 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4461 : };
4462 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4463 : static_assert(0 < 1, "There is no slot for us");
4464 :
4465 : static bool
4466 0 : get_onmouseenter(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
4467 : {
4468 0 : RefPtr<EventHandlerNonNull> result(self->GetOnmouseenter());
4469 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4470 0 : if (result) {
4471 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
4472 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
4473 0 : return false;
4474 : }
4475 0 : return true;
4476 : } else {
4477 0 : args.rval().setNull();
4478 0 : return true;
4479 : }
4480 : }
4481 :
4482 : static bool
4483 0 : set_onmouseenter(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
4484 : {
4485 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
4486 0 : if (args[0].isObject()) {
4487 : { // scope for tempRoot
4488 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
4489 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
4490 : }
4491 : } else {
4492 0 : arg0 = nullptr;
4493 : }
4494 0 : self->SetOnmouseenter(Constify(arg0));
4495 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4496 :
4497 0 : return true;
4498 : }
4499 :
4500 : static const JSJitInfo onmouseenter_getterinfo = {
4501 : { (JSJitGetterOp)get_onmouseenter },
4502 : { prototypes::id::XULElement },
4503 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
4504 : JSJitInfo::Getter,
4505 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4506 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
4507 : false, /* isInfallible. False in setters. */
4508 : false, /* isMovable. Not relevant for setters. */
4509 : false, /* isEliminatable. Not relevant for setters. */
4510 : false, /* isAlwaysInSlot. Only relevant for getters. */
4511 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4512 : false, /* isTypedMethod. Only relevant for methods. */
4513 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4514 : };
4515 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4516 : static_assert(0 < 1, "There is no slot for us");
4517 : static const JSJitInfo onmouseenter_setterinfo = {
4518 : { (JSJitGetterOp)set_onmouseenter },
4519 : { prototypes::id::XULElement },
4520 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
4521 : JSJitInfo::Setter,
4522 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4523 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
4524 : false, /* isInfallible. False in setters. */
4525 : false, /* isMovable. Not relevant for setters. */
4526 : false, /* isEliminatable. Not relevant for setters. */
4527 : false, /* isAlwaysInSlot. Only relevant for getters. */
4528 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4529 : false, /* isTypedMethod. Only relevant for methods. */
4530 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4531 : };
4532 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4533 : static_assert(0 < 1, "There is no slot for us");
4534 :
4535 : static bool
4536 0 : get_onmouseleave(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
4537 : {
4538 0 : RefPtr<EventHandlerNonNull> result(self->GetOnmouseleave());
4539 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4540 0 : if (result) {
4541 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
4542 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
4543 0 : return false;
4544 : }
4545 0 : return true;
4546 : } else {
4547 0 : args.rval().setNull();
4548 0 : return true;
4549 : }
4550 : }
4551 :
4552 : static bool
4553 0 : set_onmouseleave(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
4554 : {
4555 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
4556 0 : if (args[0].isObject()) {
4557 : { // scope for tempRoot
4558 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
4559 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
4560 : }
4561 : } else {
4562 0 : arg0 = nullptr;
4563 : }
4564 0 : self->SetOnmouseleave(Constify(arg0));
4565 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4566 :
4567 0 : return true;
4568 : }
4569 :
4570 : static const JSJitInfo onmouseleave_getterinfo = {
4571 : { (JSJitGetterOp)get_onmouseleave },
4572 : { prototypes::id::XULElement },
4573 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
4574 : JSJitInfo::Getter,
4575 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4576 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
4577 : false, /* isInfallible. False in setters. */
4578 : false, /* isMovable. Not relevant for setters. */
4579 : false, /* isEliminatable. Not relevant for setters. */
4580 : false, /* isAlwaysInSlot. Only relevant for getters. */
4581 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4582 : false, /* isTypedMethod. Only relevant for methods. */
4583 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4584 : };
4585 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4586 : static_assert(0 < 1, "There is no slot for us");
4587 : static const JSJitInfo onmouseleave_setterinfo = {
4588 : { (JSJitGetterOp)set_onmouseleave },
4589 : { prototypes::id::XULElement },
4590 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
4591 : JSJitInfo::Setter,
4592 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4593 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
4594 : false, /* isInfallible. False in setters. */
4595 : false, /* isMovable. Not relevant for setters. */
4596 : false, /* isEliminatable. Not relevant for setters. */
4597 : false, /* isAlwaysInSlot. Only relevant for getters. */
4598 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4599 : false, /* isTypedMethod. Only relevant for methods. */
4600 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4601 : };
4602 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4603 : static_assert(0 < 1, "There is no slot for us");
4604 :
4605 : static bool
4606 0 : get_onmousemove(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
4607 : {
4608 0 : RefPtr<EventHandlerNonNull> result(self->GetOnmousemove());
4609 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4610 0 : if (result) {
4611 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
4612 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
4613 0 : return false;
4614 : }
4615 0 : return true;
4616 : } else {
4617 0 : args.rval().setNull();
4618 0 : return true;
4619 : }
4620 : }
4621 :
4622 : static bool
4623 0 : set_onmousemove(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
4624 : {
4625 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
4626 0 : if (args[0].isObject()) {
4627 : { // scope for tempRoot
4628 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
4629 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
4630 : }
4631 : } else {
4632 0 : arg0 = nullptr;
4633 : }
4634 0 : self->SetOnmousemove(Constify(arg0));
4635 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4636 :
4637 0 : return true;
4638 : }
4639 :
4640 : static const JSJitInfo onmousemove_getterinfo = {
4641 : { (JSJitGetterOp)get_onmousemove },
4642 : { prototypes::id::XULElement },
4643 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
4644 : JSJitInfo::Getter,
4645 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4646 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
4647 : false, /* isInfallible. False in setters. */
4648 : false, /* isMovable. Not relevant for setters. */
4649 : false, /* isEliminatable. Not relevant for setters. */
4650 : false, /* isAlwaysInSlot. Only relevant for getters. */
4651 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4652 : false, /* isTypedMethod. Only relevant for methods. */
4653 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4654 : };
4655 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4656 : static_assert(0 < 1, "There is no slot for us");
4657 : static const JSJitInfo onmousemove_setterinfo = {
4658 : { (JSJitGetterOp)set_onmousemove },
4659 : { prototypes::id::XULElement },
4660 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
4661 : JSJitInfo::Setter,
4662 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4663 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
4664 : false, /* isInfallible. False in setters. */
4665 : false, /* isMovable. Not relevant for setters. */
4666 : false, /* isEliminatable. Not relevant for setters. */
4667 : false, /* isAlwaysInSlot. Only relevant for getters. */
4668 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4669 : false, /* isTypedMethod. Only relevant for methods. */
4670 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4671 : };
4672 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4673 : static_assert(0 < 1, "There is no slot for us");
4674 :
4675 : static bool
4676 0 : get_onmouseout(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
4677 : {
4678 0 : RefPtr<EventHandlerNonNull> result(self->GetOnmouseout());
4679 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4680 0 : if (result) {
4681 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
4682 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
4683 0 : return false;
4684 : }
4685 0 : return true;
4686 : } else {
4687 0 : args.rval().setNull();
4688 0 : return true;
4689 : }
4690 : }
4691 :
4692 : static bool
4693 0 : set_onmouseout(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
4694 : {
4695 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
4696 0 : if (args[0].isObject()) {
4697 : { // scope for tempRoot
4698 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
4699 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
4700 : }
4701 : } else {
4702 0 : arg0 = nullptr;
4703 : }
4704 0 : self->SetOnmouseout(Constify(arg0));
4705 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4706 :
4707 0 : return true;
4708 : }
4709 :
4710 : static const JSJitInfo onmouseout_getterinfo = {
4711 : { (JSJitGetterOp)get_onmouseout },
4712 : { prototypes::id::XULElement },
4713 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
4714 : JSJitInfo::Getter,
4715 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4716 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
4717 : false, /* isInfallible. False in setters. */
4718 : false, /* isMovable. Not relevant for setters. */
4719 : false, /* isEliminatable. Not relevant for setters. */
4720 : false, /* isAlwaysInSlot. Only relevant for getters. */
4721 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4722 : false, /* isTypedMethod. Only relevant for methods. */
4723 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4724 : };
4725 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4726 : static_assert(0 < 1, "There is no slot for us");
4727 : static const JSJitInfo onmouseout_setterinfo = {
4728 : { (JSJitGetterOp)set_onmouseout },
4729 : { prototypes::id::XULElement },
4730 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
4731 : JSJitInfo::Setter,
4732 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4733 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
4734 : false, /* isInfallible. False in setters. */
4735 : false, /* isMovable. Not relevant for setters. */
4736 : false, /* isEliminatable. Not relevant for setters. */
4737 : false, /* isAlwaysInSlot. Only relevant for getters. */
4738 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4739 : false, /* isTypedMethod. Only relevant for methods. */
4740 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4741 : };
4742 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4743 : static_assert(0 < 1, "There is no slot for us");
4744 :
4745 : static bool
4746 0 : get_onmouseover(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
4747 : {
4748 0 : RefPtr<EventHandlerNonNull> result(self->GetOnmouseover());
4749 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4750 0 : if (result) {
4751 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
4752 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
4753 0 : return false;
4754 : }
4755 0 : return true;
4756 : } else {
4757 0 : args.rval().setNull();
4758 0 : return true;
4759 : }
4760 : }
4761 :
4762 : static bool
4763 0 : set_onmouseover(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
4764 : {
4765 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
4766 0 : if (args[0].isObject()) {
4767 : { // scope for tempRoot
4768 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
4769 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
4770 : }
4771 : } else {
4772 0 : arg0 = nullptr;
4773 : }
4774 0 : self->SetOnmouseover(Constify(arg0));
4775 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4776 :
4777 0 : return true;
4778 : }
4779 :
4780 : static const JSJitInfo onmouseover_getterinfo = {
4781 : { (JSJitGetterOp)get_onmouseover },
4782 : { prototypes::id::XULElement },
4783 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
4784 : JSJitInfo::Getter,
4785 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4786 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
4787 : false, /* isInfallible. False in setters. */
4788 : false, /* isMovable. Not relevant for setters. */
4789 : false, /* isEliminatable. Not relevant for setters. */
4790 : false, /* isAlwaysInSlot. Only relevant for getters. */
4791 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4792 : false, /* isTypedMethod. Only relevant for methods. */
4793 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4794 : };
4795 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4796 : static_assert(0 < 1, "There is no slot for us");
4797 : static const JSJitInfo onmouseover_setterinfo = {
4798 : { (JSJitGetterOp)set_onmouseover },
4799 : { prototypes::id::XULElement },
4800 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
4801 : JSJitInfo::Setter,
4802 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4803 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
4804 : false, /* isInfallible. False in setters. */
4805 : false, /* isMovable. Not relevant for setters. */
4806 : false, /* isEliminatable. Not relevant for setters. */
4807 : false, /* isAlwaysInSlot. Only relevant for getters. */
4808 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4809 : false, /* isTypedMethod. Only relevant for methods. */
4810 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4811 : };
4812 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4813 : static_assert(0 < 1, "There is no slot for us");
4814 :
4815 : static bool
4816 0 : get_onmouseup(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
4817 : {
4818 0 : RefPtr<EventHandlerNonNull> result(self->GetOnmouseup());
4819 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4820 0 : if (result) {
4821 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
4822 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
4823 0 : return false;
4824 : }
4825 0 : return true;
4826 : } else {
4827 0 : args.rval().setNull();
4828 0 : return true;
4829 : }
4830 : }
4831 :
4832 : static bool
4833 0 : set_onmouseup(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
4834 : {
4835 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
4836 0 : if (args[0].isObject()) {
4837 : { // scope for tempRoot
4838 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
4839 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
4840 : }
4841 : } else {
4842 0 : arg0 = nullptr;
4843 : }
4844 0 : self->SetOnmouseup(Constify(arg0));
4845 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4846 :
4847 0 : return true;
4848 : }
4849 :
4850 : static const JSJitInfo onmouseup_getterinfo = {
4851 : { (JSJitGetterOp)get_onmouseup },
4852 : { prototypes::id::XULElement },
4853 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
4854 : JSJitInfo::Getter,
4855 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4856 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
4857 : false, /* isInfallible. False in setters. */
4858 : false, /* isMovable. Not relevant for setters. */
4859 : false, /* isEliminatable. Not relevant for setters. */
4860 : false, /* isAlwaysInSlot. Only relevant for getters. */
4861 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4862 : false, /* isTypedMethod. Only relevant for methods. */
4863 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4864 : };
4865 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4866 : static_assert(0 < 1, "There is no slot for us");
4867 : static const JSJitInfo onmouseup_setterinfo = {
4868 : { (JSJitGetterOp)set_onmouseup },
4869 : { prototypes::id::XULElement },
4870 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
4871 : JSJitInfo::Setter,
4872 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4873 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
4874 : false, /* isInfallible. False in setters. */
4875 : false, /* isMovable. Not relevant for setters. */
4876 : false, /* isEliminatable. Not relevant for setters. */
4877 : false, /* isAlwaysInSlot. Only relevant for getters. */
4878 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4879 : false, /* isTypedMethod. Only relevant for methods. */
4880 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4881 : };
4882 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4883 : static_assert(0 < 1, "There is no slot for us");
4884 :
4885 : static bool
4886 0 : get_onwheel(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
4887 : {
4888 0 : RefPtr<EventHandlerNonNull> result(self->GetOnwheel());
4889 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4890 0 : if (result) {
4891 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
4892 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
4893 0 : return false;
4894 : }
4895 0 : return true;
4896 : } else {
4897 0 : args.rval().setNull();
4898 0 : return true;
4899 : }
4900 : }
4901 :
4902 : static bool
4903 0 : set_onwheel(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
4904 : {
4905 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
4906 0 : if (args[0].isObject()) {
4907 : { // scope for tempRoot
4908 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
4909 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
4910 : }
4911 : } else {
4912 0 : arg0 = nullptr;
4913 : }
4914 0 : self->SetOnwheel(Constify(arg0));
4915 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4916 :
4917 0 : return true;
4918 : }
4919 :
4920 : static const JSJitInfo onwheel_getterinfo = {
4921 : { (JSJitGetterOp)get_onwheel },
4922 : { prototypes::id::XULElement },
4923 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
4924 : JSJitInfo::Getter,
4925 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4926 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
4927 : false, /* isInfallible. False in setters. */
4928 : false, /* isMovable. Not relevant for setters. */
4929 : false, /* isEliminatable. Not relevant for setters. */
4930 : false, /* isAlwaysInSlot. Only relevant for getters. */
4931 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4932 : false, /* isTypedMethod. Only relevant for methods. */
4933 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4934 : };
4935 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4936 : static_assert(0 < 1, "There is no slot for us");
4937 : static const JSJitInfo onwheel_setterinfo = {
4938 : { (JSJitGetterOp)set_onwheel },
4939 : { prototypes::id::XULElement },
4940 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
4941 : JSJitInfo::Setter,
4942 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4943 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
4944 : false, /* isInfallible. False in setters. */
4945 : false, /* isMovable. Not relevant for setters. */
4946 : false, /* isEliminatable. Not relevant for setters. */
4947 : false, /* isAlwaysInSlot. Only relevant for getters. */
4948 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4949 : false, /* isTypedMethod. Only relevant for methods. */
4950 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4951 : };
4952 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4953 : static_assert(0 < 1, "There is no slot for us");
4954 :
4955 : static bool
4956 0 : get_onpause(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
4957 : {
4958 0 : RefPtr<EventHandlerNonNull> result(self->GetOnpause());
4959 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4960 0 : if (result) {
4961 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
4962 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
4963 0 : return false;
4964 : }
4965 0 : return true;
4966 : } else {
4967 0 : args.rval().setNull();
4968 0 : return true;
4969 : }
4970 : }
4971 :
4972 : static bool
4973 0 : set_onpause(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
4974 : {
4975 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
4976 0 : if (args[0].isObject()) {
4977 : { // scope for tempRoot
4978 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
4979 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
4980 : }
4981 : } else {
4982 0 : arg0 = nullptr;
4983 : }
4984 0 : self->SetOnpause(Constify(arg0));
4985 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4986 :
4987 0 : return true;
4988 : }
4989 :
4990 : static const JSJitInfo onpause_getterinfo = {
4991 : { (JSJitGetterOp)get_onpause },
4992 : { prototypes::id::XULElement },
4993 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
4994 : JSJitInfo::Getter,
4995 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4996 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
4997 : false, /* isInfallible. False in setters. */
4998 : false, /* isMovable. Not relevant for setters. */
4999 : false, /* isEliminatable. Not relevant for setters. */
5000 : false, /* isAlwaysInSlot. Only relevant for getters. */
5001 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5002 : false, /* isTypedMethod. Only relevant for methods. */
5003 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5004 : };
5005 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5006 : static_assert(0 < 1, "There is no slot for us");
5007 : static const JSJitInfo onpause_setterinfo = {
5008 : { (JSJitGetterOp)set_onpause },
5009 : { prototypes::id::XULElement },
5010 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
5011 : JSJitInfo::Setter,
5012 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5013 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
5014 : false, /* isInfallible. False in setters. */
5015 : false, /* isMovable. Not relevant for setters. */
5016 : false, /* isEliminatable. Not relevant for setters. */
5017 : false, /* isAlwaysInSlot. Only relevant for getters. */
5018 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5019 : false, /* isTypedMethod. Only relevant for methods. */
5020 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5021 : };
5022 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5023 : static_assert(0 < 1, "There is no slot for us");
5024 :
5025 : static bool
5026 0 : get_onplay(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
5027 : {
5028 0 : RefPtr<EventHandlerNonNull> result(self->GetOnplay());
5029 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5030 0 : if (result) {
5031 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
5032 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
5033 0 : return false;
5034 : }
5035 0 : return true;
5036 : } else {
5037 0 : args.rval().setNull();
5038 0 : return true;
5039 : }
5040 : }
5041 :
5042 : static bool
5043 0 : set_onplay(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
5044 : {
5045 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
5046 0 : if (args[0].isObject()) {
5047 : { // scope for tempRoot
5048 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
5049 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
5050 : }
5051 : } else {
5052 0 : arg0 = nullptr;
5053 : }
5054 0 : self->SetOnplay(Constify(arg0));
5055 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5056 :
5057 0 : return true;
5058 : }
5059 :
5060 : static const JSJitInfo onplay_getterinfo = {
5061 : { (JSJitGetterOp)get_onplay },
5062 : { prototypes::id::XULElement },
5063 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
5064 : JSJitInfo::Getter,
5065 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5066 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
5067 : false, /* isInfallible. False in setters. */
5068 : false, /* isMovable. Not relevant for setters. */
5069 : false, /* isEliminatable. Not relevant for setters. */
5070 : false, /* isAlwaysInSlot. Only relevant for getters. */
5071 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5072 : false, /* isTypedMethod. Only relevant for methods. */
5073 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5074 : };
5075 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5076 : static_assert(0 < 1, "There is no slot for us");
5077 : static const JSJitInfo onplay_setterinfo = {
5078 : { (JSJitGetterOp)set_onplay },
5079 : { prototypes::id::XULElement },
5080 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
5081 : JSJitInfo::Setter,
5082 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5083 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
5084 : false, /* isInfallible. False in setters. */
5085 : false, /* isMovable. Not relevant for setters. */
5086 : false, /* isEliminatable. Not relevant for setters. */
5087 : false, /* isAlwaysInSlot. Only relevant for getters. */
5088 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5089 : false, /* isTypedMethod. Only relevant for methods. */
5090 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5091 : };
5092 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5093 : static_assert(0 < 1, "There is no slot for us");
5094 :
5095 : static bool
5096 0 : get_onplaying(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
5097 : {
5098 0 : RefPtr<EventHandlerNonNull> result(self->GetOnplaying());
5099 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5100 0 : if (result) {
5101 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
5102 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
5103 0 : return false;
5104 : }
5105 0 : return true;
5106 : } else {
5107 0 : args.rval().setNull();
5108 0 : return true;
5109 : }
5110 : }
5111 :
5112 : static bool
5113 0 : set_onplaying(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
5114 : {
5115 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
5116 0 : if (args[0].isObject()) {
5117 : { // scope for tempRoot
5118 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
5119 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
5120 : }
5121 : } else {
5122 0 : arg0 = nullptr;
5123 : }
5124 0 : self->SetOnplaying(Constify(arg0));
5125 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5126 :
5127 0 : return true;
5128 : }
5129 :
5130 : static const JSJitInfo onplaying_getterinfo = {
5131 : { (JSJitGetterOp)get_onplaying },
5132 : { prototypes::id::XULElement },
5133 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
5134 : JSJitInfo::Getter,
5135 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5136 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
5137 : false, /* isInfallible. False in setters. */
5138 : false, /* isMovable. Not relevant for setters. */
5139 : false, /* isEliminatable. Not relevant for setters. */
5140 : false, /* isAlwaysInSlot. Only relevant for getters. */
5141 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5142 : false, /* isTypedMethod. Only relevant for methods. */
5143 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5144 : };
5145 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5146 : static_assert(0 < 1, "There is no slot for us");
5147 : static const JSJitInfo onplaying_setterinfo = {
5148 : { (JSJitGetterOp)set_onplaying },
5149 : { prototypes::id::XULElement },
5150 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
5151 : JSJitInfo::Setter,
5152 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5153 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
5154 : false, /* isInfallible. False in setters. */
5155 : false, /* isMovable. Not relevant for setters. */
5156 : false, /* isEliminatable. Not relevant for setters. */
5157 : false, /* isAlwaysInSlot. Only relevant for getters. */
5158 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5159 : false, /* isTypedMethod. Only relevant for methods. */
5160 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5161 : };
5162 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5163 : static_assert(0 < 1, "There is no slot for us");
5164 :
5165 : static bool
5166 0 : get_onprogress(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
5167 : {
5168 0 : RefPtr<EventHandlerNonNull> result(self->GetOnprogress());
5169 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5170 0 : if (result) {
5171 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
5172 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
5173 0 : return false;
5174 : }
5175 0 : return true;
5176 : } else {
5177 0 : args.rval().setNull();
5178 0 : return true;
5179 : }
5180 : }
5181 :
5182 : static bool
5183 0 : set_onprogress(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
5184 : {
5185 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
5186 0 : if (args[0].isObject()) {
5187 : { // scope for tempRoot
5188 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
5189 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
5190 : }
5191 : } else {
5192 0 : arg0 = nullptr;
5193 : }
5194 0 : self->SetOnprogress(Constify(arg0));
5195 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5196 :
5197 0 : return true;
5198 : }
5199 :
5200 : static const JSJitInfo onprogress_getterinfo = {
5201 : { (JSJitGetterOp)get_onprogress },
5202 : { prototypes::id::XULElement },
5203 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
5204 : JSJitInfo::Getter,
5205 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5206 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
5207 : false, /* isInfallible. False in setters. */
5208 : false, /* isMovable. Not relevant for setters. */
5209 : false, /* isEliminatable. Not relevant for setters. */
5210 : false, /* isAlwaysInSlot. Only relevant for getters. */
5211 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5212 : false, /* isTypedMethod. Only relevant for methods. */
5213 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5214 : };
5215 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5216 : static_assert(0 < 1, "There is no slot for us");
5217 : static const JSJitInfo onprogress_setterinfo = {
5218 : { (JSJitGetterOp)set_onprogress },
5219 : { prototypes::id::XULElement },
5220 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
5221 : JSJitInfo::Setter,
5222 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5223 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
5224 : false, /* isInfallible. False in setters. */
5225 : false, /* isMovable. Not relevant for setters. */
5226 : false, /* isEliminatable. Not relevant for setters. */
5227 : false, /* isAlwaysInSlot. Only relevant for getters. */
5228 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5229 : false, /* isTypedMethod. Only relevant for methods. */
5230 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5231 : };
5232 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5233 : static_assert(0 < 1, "There is no slot for us");
5234 :
5235 : static bool
5236 0 : get_onratechange(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
5237 : {
5238 0 : RefPtr<EventHandlerNonNull> result(self->GetOnratechange());
5239 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5240 0 : if (result) {
5241 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
5242 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
5243 0 : return false;
5244 : }
5245 0 : return true;
5246 : } else {
5247 0 : args.rval().setNull();
5248 0 : return true;
5249 : }
5250 : }
5251 :
5252 : static bool
5253 0 : set_onratechange(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
5254 : {
5255 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
5256 0 : if (args[0].isObject()) {
5257 : { // scope for tempRoot
5258 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
5259 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
5260 : }
5261 : } else {
5262 0 : arg0 = nullptr;
5263 : }
5264 0 : self->SetOnratechange(Constify(arg0));
5265 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5266 :
5267 0 : return true;
5268 : }
5269 :
5270 : static const JSJitInfo onratechange_getterinfo = {
5271 : { (JSJitGetterOp)get_onratechange },
5272 : { prototypes::id::XULElement },
5273 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
5274 : JSJitInfo::Getter,
5275 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5276 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
5277 : false, /* isInfallible. False in setters. */
5278 : false, /* isMovable. Not relevant for setters. */
5279 : false, /* isEliminatable. Not relevant for setters. */
5280 : false, /* isAlwaysInSlot. Only relevant for getters. */
5281 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5282 : false, /* isTypedMethod. Only relevant for methods. */
5283 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5284 : };
5285 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5286 : static_assert(0 < 1, "There is no slot for us");
5287 : static const JSJitInfo onratechange_setterinfo = {
5288 : { (JSJitGetterOp)set_onratechange },
5289 : { prototypes::id::XULElement },
5290 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
5291 : JSJitInfo::Setter,
5292 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5293 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
5294 : false, /* isInfallible. False in setters. */
5295 : false, /* isMovable. Not relevant for setters. */
5296 : false, /* isEliminatable. Not relevant for setters. */
5297 : false, /* isAlwaysInSlot. Only relevant for getters. */
5298 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5299 : false, /* isTypedMethod. Only relevant for methods. */
5300 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5301 : };
5302 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5303 : static_assert(0 < 1, "There is no slot for us");
5304 :
5305 : static bool
5306 0 : get_onreset(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
5307 : {
5308 0 : RefPtr<EventHandlerNonNull> result(self->GetOnreset());
5309 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5310 0 : if (result) {
5311 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
5312 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
5313 0 : return false;
5314 : }
5315 0 : return true;
5316 : } else {
5317 0 : args.rval().setNull();
5318 0 : return true;
5319 : }
5320 : }
5321 :
5322 : static bool
5323 0 : set_onreset(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
5324 : {
5325 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
5326 0 : if (args[0].isObject()) {
5327 : { // scope for tempRoot
5328 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
5329 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
5330 : }
5331 : } else {
5332 0 : arg0 = nullptr;
5333 : }
5334 0 : self->SetOnreset(Constify(arg0));
5335 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5336 :
5337 0 : return true;
5338 : }
5339 :
5340 : static const JSJitInfo onreset_getterinfo = {
5341 : { (JSJitGetterOp)get_onreset },
5342 : { prototypes::id::XULElement },
5343 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
5344 : JSJitInfo::Getter,
5345 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5346 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
5347 : false, /* isInfallible. False in setters. */
5348 : false, /* isMovable. Not relevant for setters. */
5349 : false, /* isEliminatable. Not relevant for setters. */
5350 : false, /* isAlwaysInSlot. Only relevant for getters. */
5351 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5352 : false, /* isTypedMethod. Only relevant for methods. */
5353 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5354 : };
5355 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5356 : static_assert(0 < 1, "There is no slot for us");
5357 : static const JSJitInfo onreset_setterinfo = {
5358 : { (JSJitGetterOp)set_onreset },
5359 : { prototypes::id::XULElement },
5360 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
5361 : JSJitInfo::Setter,
5362 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5363 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
5364 : false, /* isInfallible. False in setters. */
5365 : false, /* isMovable. Not relevant for setters. */
5366 : false, /* isEliminatable. Not relevant for setters. */
5367 : false, /* isAlwaysInSlot. Only relevant for getters. */
5368 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5369 : false, /* isTypedMethod. Only relevant for methods. */
5370 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5371 : };
5372 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5373 : static_assert(0 < 1, "There is no slot for us");
5374 :
5375 : static bool
5376 0 : get_onresize(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
5377 : {
5378 0 : RefPtr<EventHandlerNonNull> result(self->GetOnresize());
5379 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5380 0 : if (result) {
5381 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
5382 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
5383 0 : return false;
5384 : }
5385 0 : return true;
5386 : } else {
5387 0 : args.rval().setNull();
5388 0 : return true;
5389 : }
5390 : }
5391 :
5392 : static bool
5393 0 : set_onresize(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
5394 : {
5395 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
5396 0 : if (args[0].isObject()) {
5397 : { // scope for tempRoot
5398 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
5399 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
5400 : }
5401 : } else {
5402 0 : arg0 = nullptr;
5403 : }
5404 0 : self->SetOnresize(Constify(arg0));
5405 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5406 :
5407 0 : return true;
5408 : }
5409 :
5410 : static const JSJitInfo onresize_getterinfo = {
5411 : { (JSJitGetterOp)get_onresize },
5412 : { prototypes::id::XULElement },
5413 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
5414 : JSJitInfo::Getter,
5415 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5416 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
5417 : false, /* isInfallible. False in setters. */
5418 : false, /* isMovable. Not relevant for setters. */
5419 : false, /* isEliminatable. Not relevant for setters. */
5420 : false, /* isAlwaysInSlot. Only relevant for getters. */
5421 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5422 : false, /* isTypedMethod. Only relevant for methods. */
5423 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5424 : };
5425 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5426 : static_assert(0 < 1, "There is no slot for us");
5427 : static const JSJitInfo onresize_setterinfo = {
5428 : { (JSJitGetterOp)set_onresize },
5429 : { prototypes::id::XULElement },
5430 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
5431 : JSJitInfo::Setter,
5432 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5433 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
5434 : false, /* isInfallible. False in setters. */
5435 : false, /* isMovable. Not relevant for setters. */
5436 : false, /* isEliminatable. Not relevant for setters. */
5437 : false, /* isAlwaysInSlot. Only relevant for getters. */
5438 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5439 : false, /* isTypedMethod. Only relevant for methods. */
5440 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5441 : };
5442 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5443 : static_assert(0 < 1, "There is no slot for us");
5444 :
5445 : static bool
5446 0 : get_onscroll(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
5447 : {
5448 0 : RefPtr<EventHandlerNonNull> result(self->GetOnscroll());
5449 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5450 0 : if (result) {
5451 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
5452 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
5453 0 : return false;
5454 : }
5455 0 : return true;
5456 : } else {
5457 0 : args.rval().setNull();
5458 0 : return true;
5459 : }
5460 : }
5461 :
5462 : static bool
5463 0 : set_onscroll(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
5464 : {
5465 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
5466 0 : if (args[0].isObject()) {
5467 : { // scope for tempRoot
5468 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
5469 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
5470 : }
5471 : } else {
5472 0 : arg0 = nullptr;
5473 : }
5474 0 : self->SetOnscroll(Constify(arg0));
5475 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5476 :
5477 0 : return true;
5478 : }
5479 :
5480 : static const JSJitInfo onscroll_getterinfo = {
5481 : { (JSJitGetterOp)get_onscroll },
5482 : { prototypes::id::XULElement },
5483 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
5484 : JSJitInfo::Getter,
5485 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5486 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
5487 : false, /* isInfallible. False in setters. */
5488 : false, /* isMovable. Not relevant for setters. */
5489 : false, /* isEliminatable. Not relevant for setters. */
5490 : false, /* isAlwaysInSlot. Only relevant for getters. */
5491 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5492 : false, /* isTypedMethod. Only relevant for methods. */
5493 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5494 : };
5495 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5496 : static_assert(0 < 1, "There is no slot for us");
5497 : static const JSJitInfo onscroll_setterinfo = {
5498 : { (JSJitGetterOp)set_onscroll },
5499 : { prototypes::id::XULElement },
5500 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
5501 : JSJitInfo::Setter,
5502 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5503 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
5504 : false, /* isInfallible. False in setters. */
5505 : false, /* isMovable. Not relevant for setters. */
5506 : false, /* isEliminatable. Not relevant for setters. */
5507 : false, /* isAlwaysInSlot. Only relevant for getters. */
5508 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5509 : false, /* isTypedMethod. Only relevant for methods. */
5510 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5511 : };
5512 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5513 : static_assert(0 < 1, "There is no slot for us");
5514 :
5515 : static bool
5516 0 : get_onseeked(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
5517 : {
5518 0 : RefPtr<EventHandlerNonNull> result(self->GetOnseeked());
5519 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5520 0 : if (result) {
5521 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
5522 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
5523 0 : return false;
5524 : }
5525 0 : return true;
5526 : } else {
5527 0 : args.rval().setNull();
5528 0 : return true;
5529 : }
5530 : }
5531 :
5532 : static bool
5533 0 : set_onseeked(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
5534 : {
5535 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
5536 0 : if (args[0].isObject()) {
5537 : { // scope for tempRoot
5538 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
5539 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
5540 : }
5541 : } else {
5542 0 : arg0 = nullptr;
5543 : }
5544 0 : self->SetOnseeked(Constify(arg0));
5545 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5546 :
5547 0 : return true;
5548 : }
5549 :
5550 : static const JSJitInfo onseeked_getterinfo = {
5551 : { (JSJitGetterOp)get_onseeked },
5552 : { prototypes::id::XULElement },
5553 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
5554 : JSJitInfo::Getter,
5555 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5556 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
5557 : false, /* isInfallible. False in setters. */
5558 : false, /* isMovable. Not relevant for setters. */
5559 : false, /* isEliminatable. Not relevant for setters. */
5560 : false, /* isAlwaysInSlot. Only relevant for getters. */
5561 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5562 : false, /* isTypedMethod. Only relevant for methods. */
5563 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5564 : };
5565 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5566 : static_assert(0 < 1, "There is no slot for us");
5567 : static const JSJitInfo onseeked_setterinfo = {
5568 : { (JSJitGetterOp)set_onseeked },
5569 : { prototypes::id::XULElement },
5570 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
5571 : JSJitInfo::Setter,
5572 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5573 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
5574 : false, /* isInfallible. False in setters. */
5575 : false, /* isMovable. Not relevant for setters. */
5576 : false, /* isEliminatable. Not relevant for setters. */
5577 : false, /* isAlwaysInSlot. Only relevant for getters. */
5578 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5579 : false, /* isTypedMethod. Only relevant for methods. */
5580 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5581 : };
5582 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5583 : static_assert(0 < 1, "There is no slot for us");
5584 :
5585 : static bool
5586 0 : get_onseeking(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
5587 : {
5588 0 : RefPtr<EventHandlerNonNull> result(self->GetOnseeking());
5589 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5590 0 : if (result) {
5591 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
5592 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
5593 0 : return false;
5594 : }
5595 0 : return true;
5596 : } else {
5597 0 : args.rval().setNull();
5598 0 : return true;
5599 : }
5600 : }
5601 :
5602 : static bool
5603 0 : set_onseeking(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
5604 : {
5605 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
5606 0 : if (args[0].isObject()) {
5607 : { // scope for tempRoot
5608 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
5609 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
5610 : }
5611 : } else {
5612 0 : arg0 = nullptr;
5613 : }
5614 0 : self->SetOnseeking(Constify(arg0));
5615 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5616 :
5617 0 : return true;
5618 : }
5619 :
5620 : static const JSJitInfo onseeking_getterinfo = {
5621 : { (JSJitGetterOp)get_onseeking },
5622 : { prototypes::id::XULElement },
5623 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
5624 : JSJitInfo::Getter,
5625 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5626 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
5627 : false, /* isInfallible. False in setters. */
5628 : false, /* isMovable. Not relevant for setters. */
5629 : false, /* isEliminatable. Not relevant for setters. */
5630 : false, /* isAlwaysInSlot. Only relevant for getters. */
5631 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5632 : false, /* isTypedMethod. Only relevant for methods. */
5633 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5634 : };
5635 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5636 : static_assert(0 < 1, "There is no slot for us");
5637 : static const JSJitInfo onseeking_setterinfo = {
5638 : { (JSJitGetterOp)set_onseeking },
5639 : { prototypes::id::XULElement },
5640 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
5641 : JSJitInfo::Setter,
5642 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5643 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
5644 : false, /* isInfallible. False in setters. */
5645 : false, /* isMovable. Not relevant for setters. */
5646 : false, /* isEliminatable. Not relevant for setters. */
5647 : false, /* isAlwaysInSlot. Only relevant for getters. */
5648 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5649 : false, /* isTypedMethod. Only relevant for methods. */
5650 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5651 : };
5652 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5653 : static_assert(0 < 1, "There is no slot for us");
5654 :
5655 : static bool
5656 0 : get_onselect(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
5657 : {
5658 0 : RefPtr<EventHandlerNonNull> result(self->GetOnselect());
5659 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5660 0 : if (result) {
5661 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
5662 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
5663 0 : return false;
5664 : }
5665 0 : return true;
5666 : } else {
5667 0 : args.rval().setNull();
5668 0 : return true;
5669 : }
5670 : }
5671 :
5672 : static bool
5673 0 : set_onselect(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
5674 : {
5675 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
5676 0 : if (args[0].isObject()) {
5677 : { // scope for tempRoot
5678 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
5679 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
5680 : }
5681 : } else {
5682 0 : arg0 = nullptr;
5683 : }
5684 0 : self->SetOnselect(Constify(arg0));
5685 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5686 :
5687 0 : return true;
5688 : }
5689 :
5690 : static const JSJitInfo onselect_getterinfo = {
5691 : { (JSJitGetterOp)get_onselect },
5692 : { prototypes::id::XULElement },
5693 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
5694 : JSJitInfo::Getter,
5695 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5696 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
5697 : false, /* isInfallible. False in setters. */
5698 : false, /* isMovable. Not relevant for setters. */
5699 : false, /* isEliminatable. Not relevant for setters. */
5700 : false, /* isAlwaysInSlot. Only relevant for getters. */
5701 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5702 : false, /* isTypedMethod. Only relevant for methods. */
5703 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5704 : };
5705 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5706 : static_assert(0 < 1, "There is no slot for us");
5707 : static const JSJitInfo onselect_setterinfo = {
5708 : { (JSJitGetterOp)set_onselect },
5709 : { prototypes::id::XULElement },
5710 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
5711 : JSJitInfo::Setter,
5712 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5713 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
5714 : false, /* isInfallible. False in setters. */
5715 : false, /* isMovable. Not relevant for setters. */
5716 : false, /* isEliminatable. Not relevant for setters. */
5717 : false, /* isAlwaysInSlot. Only relevant for getters. */
5718 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5719 : false, /* isTypedMethod. Only relevant for methods. */
5720 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5721 : };
5722 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5723 : static_assert(0 < 1, "There is no slot for us");
5724 :
5725 : static bool
5726 0 : get_onshow(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
5727 : {
5728 0 : RefPtr<EventHandlerNonNull> result(self->GetOnshow());
5729 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5730 0 : if (result) {
5731 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
5732 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
5733 0 : return false;
5734 : }
5735 0 : return true;
5736 : } else {
5737 0 : args.rval().setNull();
5738 0 : return true;
5739 : }
5740 : }
5741 :
5742 : static bool
5743 0 : set_onshow(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
5744 : {
5745 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
5746 0 : if (args[0].isObject()) {
5747 : { // scope for tempRoot
5748 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
5749 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
5750 : }
5751 : } else {
5752 0 : arg0 = nullptr;
5753 : }
5754 0 : self->SetOnshow(Constify(arg0));
5755 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5756 :
5757 0 : return true;
5758 : }
5759 :
5760 : static const JSJitInfo onshow_getterinfo = {
5761 : { (JSJitGetterOp)get_onshow },
5762 : { prototypes::id::XULElement },
5763 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
5764 : JSJitInfo::Getter,
5765 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5766 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
5767 : false, /* isInfallible. False in setters. */
5768 : false, /* isMovable. Not relevant for setters. */
5769 : false, /* isEliminatable. Not relevant for setters. */
5770 : false, /* isAlwaysInSlot. Only relevant for getters. */
5771 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5772 : false, /* isTypedMethod. Only relevant for methods. */
5773 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5774 : };
5775 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5776 : static_assert(0 < 1, "There is no slot for us");
5777 : static const JSJitInfo onshow_setterinfo = {
5778 : { (JSJitGetterOp)set_onshow },
5779 : { prototypes::id::XULElement },
5780 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
5781 : JSJitInfo::Setter,
5782 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5783 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
5784 : false, /* isInfallible. False in setters. */
5785 : false, /* isMovable. Not relevant for setters. */
5786 : false, /* isEliminatable. Not relevant for setters. */
5787 : false, /* isAlwaysInSlot. Only relevant for getters. */
5788 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5789 : false, /* isTypedMethod. Only relevant for methods. */
5790 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5791 : };
5792 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5793 : static_assert(0 < 1, "There is no slot for us");
5794 :
5795 : static bool
5796 0 : get_onstalled(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
5797 : {
5798 0 : RefPtr<EventHandlerNonNull> result(self->GetOnstalled());
5799 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5800 0 : if (result) {
5801 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
5802 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
5803 0 : return false;
5804 : }
5805 0 : return true;
5806 : } else {
5807 0 : args.rval().setNull();
5808 0 : return true;
5809 : }
5810 : }
5811 :
5812 : static bool
5813 0 : set_onstalled(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
5814 : {
5815 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
5816 0 : if (args[0].isObject()) {
5817 : { // scope for tempRoot
5818 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
5819 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
5820 : }
5821 : } else {
5822 0 : arg0 = nullptr;
5823 : }
5824 0 : self->SetOnstalled(Constify(arg0));
5825 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5826 :
5827 0 : return true;
5828 : }
5829 :
5830 : static const JSJitInfo onstalled_getterinfo = {
5831 : { (JSJitGetterOp)get_onstalled },
5832 : { prototypes::id::XULElement },
5833 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
5834 : JSJitInfo::Getter,
5835 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5836 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
5837 : false, /* isInfallible. False in setters. */
5838 : false, /* isMovable. Not relevant for setters. */
5839 : false, /* isEliminatable. Not relevant for setters. */
5840 : false, /* isAlwaysInSlot. Only relevant for getters. */
5841 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5842 : false, /* isTypedMethod. Only relevant for methods. */
5843 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5844 : };
5845 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5846 : static_assert(0 < 1, "There is no slot for us");
5847 : static const JSJitInfo onstalled_setterinfo = {
5848 : { (JSJitGetterOp)set_onstalled },
5849 : { prototypes::id::XULElement },
5850 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
5851 : JSJitInfo::Setter,
5852 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5853 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
5854 : false, /* isInfallible. False in setters. */
5855 : false, /* isMovable. Not relevant for setters. */
5856 : false, /* isEliminatable. Not relevant for setters. */
5857 : false, /* isAlwaysInSlot. Only relevant for getters. */
5858 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5859 : false, /* isTypedMethod. Only relevant for methods. */
5860 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5861 : };
5862 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5863 : static_assert(0 < 1, "There is no slot for us");
5864 :
5865 : static bool
5866 0 : get_onsubmit(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
5867 : {
5868 0 : RefPtr<EventHandlerNonNull> result(self->GetOnsubmit());
5869 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5870 0 : if (result) {
5871 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
5872 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
5873 0 : return false;
5874 : }
5875 0 : return true;
5876 : } else {
5877 0 : args.rval().setNull();
5878 0 : return true;
5879 : }
5880 : }
5881 :
5882 : static bool
5883 0 : set_onsubmit(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
5884 : {
5885 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
5886 0 : if (args[0].isObject()) {
5887 : { // scope for tempRoot
5888 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
5889 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
5890 : }
5891 : } else {
5892 0 : arg0 = nullptr;
5893 : }
5894 0 : self->SetOnsubmit(Constify(arg0));
5895 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5896 :
5897 0 : return true;
5898 : }
5899 :
5900 : static const JSJitInfo onsubmit_getterinfo = {
5901 : { (JSJitGetterOp)get_onsubmit },
5902 : { prototypes::id::XULElement },
5903 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
5904 : JSJitInfo::Getter,
5905 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5906 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
5907 : false, /* isInfallible. False in setters. */
5908 : false, /* isMovable. Not relevant for setters. */
5909 : false, /* isEliminatable. Not relevant for setters. */
5910 : false, /* isAlwaysInSlot. Only relevant for getters. */
5911 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5912 : false, /* isTypedMethod. Only relevant for methods. */
5913 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5914 : };
5915 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5916 : static_assert(0 < 1, "There is no slot for us");
5917 : static const JSJitInfo onsubmit_setterinfo = {
5918 : { (JSJitGetterOp)set_onsubmit },
5919 : { prototypes::id::XULElement },
5920 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
5921 : JSJitInfo::Setter,
5922 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5923 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
5924 : false, /* isInfallible. False in setters. */
5925 : false, /* isMovable. Not relevant for setters. */
5926 : false, /* isEliminatable. Not relevant for setters. */
5927 : false, /* isAlwaysInSlot. Only relevant for getters. */
5928 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5929 : false, /* isTypedMethod. Only relevant for methods. */
5930 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5931 : };
5932 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5933 : static_assert(0 < 1, "There is no slot for us");
5934 :
5935 : static bool
5936 0 : get_onsuspend(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
5937 : {
5938 0 : RefPtr<EventHandlerNonNull> result(self->GetOnsuspend());
5939 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5940 0 : if (result) {
5941 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
5942 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
5943 0 : return false;
5944 : }
5945 0 : return true;
5946 : } else {
5947 0 : args.rval().setNull();
5948 0 : return true;
5949 : }
5950 : }
5951 :
5952 : static bool
5953 0 : set_onsuspend(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
5954 : {
5955 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
5956 0 : if (args[0].isObject()) {
5957 : { // scope for tempRoot
5958 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
5959 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
5960 : }
5961 : } else {
5962 0 : arg0 = nullptr;
5963 : }
5964 0 : self->SetOnsuspend(Constify(arg0));
5965 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5966 :
5967 0 : return true;
5968 : }
5969 :
5970 : static const JSJitInfo onsuspend_getterinfo = {
5971 : { (JSJitGetterOp)get_onsuspend },
5972 : { prototypes::id::XULElement },
5973 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
5974 : JSJitInfo::Getter,
5975 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5976 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
5977 : false, /* isInfallible. False in setters. */
5978 : false, /* isMovable. Not relevant for setters. */
5979 : false, /* isEliminatable. Not relevant for setters. */
5980 : false, /* isAlwaysInSlot. Only relevant for getters. */
5981 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5982 : false, /* isTypedMethod. Only relevant for methods. */
5983 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5984 : };
5985 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5986 : static_assert(0 < 1, "There is no slot for us");
5987 : static const JSJitInfo onsuspend_setterinfo = {
5988 : { (JSJitGetterOp)set_onsuspend },
5989 : { prototypes::id::XULElement },
5990 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
5991 : JSJitInfo::Setter,
5992 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5993 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
5994 : false, /* isInfallible. False in setters. */
5995 : false, /* isMovable. Not relevant for setters. */
5996 : false, /* isEliminatable. Not relevant for setters. */
5997 : false, /* isAlwaysInSlot. Only relevant for getters. */
5998 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5999 : false, /* isTypedMethod. Only relevant for methods. */
6000 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6001 : };
6002 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6003 : static_assert(0 < 1, "There is no slot for us");
6004 :
6005 : static bool
6006 0 : get_ontimeupdate(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
6007 : {
6008 0 : RefPtr<EventHandlerNonNull> result(self->GetOntimeupdate());
6009 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6010 0 : if (result) {
6011 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
6012 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
6013 0 : return false;
6014 : }
6015 0 : return true;
6016 : } else {
6017 0 : args.rval().setNull();
6018 0 : return true;
6019 : }
6020 : }
6021 :
6022 : static bool
6023 0 : set_ontimeupdate(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
6024 : {
6025 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
6026 0 : if (args[0].isObject()) {
6027 : { // scope for tempRoot
6028 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
6029 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
6030 : }
6031 : } else {
6032 0 : arg0 = nullptr;
6033 : }
6034 0 : self->SetOntimeupdate(Constify(arg0));
6035 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6036 :
6037 0 : return true;
6038 : }
6039 :
6040 : static const JSJitInfo ontimeupdate_getterinfo = {
6041 : { (JSJitGetterOp)get_ontimeupdate },
6042 : { prototypes::id::XULElement },
6043 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
6044 : JSJitInfo::Getter,
6045 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6046 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
6047 : false, /* isInfallible. False in setters. */
6048 : false, /* isMovable. Not relevant for setters. */
6049 : false, /* isEliminatable. Not relevant for setters. */
6050 : false, /* isAlwaysInSlot. Only relevant for getters. */
6051 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6052 : false, /* isTypedMethod. Only relevant for methods. */
6053 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6054 : };
6055 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6056 : static_assert(0 < 1, "There is no slot for us");
6057 : static const JSJitInfo ontimeupdate_setterinfo = {
6058 : { (JSJitGetterOp)set_ontimeupdate },
6059 : { prototypes::id::XULElement },
6060 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
6061 : JSJitInfo::Setter,
6062 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6063 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
6064 : false, /* isInfallible. False in setters. */
6065 : false, /* isMovable. Not relevant for setters. */
6066 : false, /* isEliminatable. Not relevant for setters. */
6067 : false, /* isAlwaysInSlot. Only relevant for getters. */
6068 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6069 : false, /* isTypedMethod. Only relevant for methods. */
6070 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6071 : };
6072 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6073 : static_assert(0 < 1, "There is no slot for us");
6074 :
6075 : static bool
6076 0 : get_onvolumechange(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
6077 : {
6078 0 : RefPtr<EventHandlerNonNull> result(self->GetOnvolumechange());
6079 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6080 0 : if (result) {
6081 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
6082 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
6083 0 : return false;
6084 : }
6085 0 : return true;
6086 : } else {
6087 0 : args.rval().setNull();
6088 0 : return true;
6089 : }
6090 : }
6091 :
6092 : static bool
6093 0 : set_onvolumechange(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
6094 : {
6095 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
6096 0 : if (args[0].isObject()) {
6097 : { // scope for tempRoot
6098 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
6099 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
6100 : }
6101 : } else {
6102 0 : arg0 = nullptr;
6103 : }
6104 0 : self->SetOnvolumechange(Constify(arg0));
6105 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6106 :
6107 0 : return true;
6108 : }
6109 :
6110 : static const JSJitInfo onvolumechange_getterinfo = {
6111 : { (JSJitGetterOp)get_onvolumechange },
6112 : { prototypes::id::XULElement },
6113 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
6114 : JSJitInfo::Getter,
6115 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6116 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
6117 : false, /* isInfallible. False in setters. */
6118 : false, /* isMovable. Not relevant for setters. */
6119 : false, /* isEliminatable. Not relevant for setters. */
6120 : false, /* isAlwaysInSlot. Only relevant for getters. */
6121 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6122 : false, /* isTypedMethod. Only relevant for methods. */
6123 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6124 : };
6125 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6126 : static_assert(0 < 1, "There is no slot for us");
6127 : static const JSJitInfo onvolumechange_setterinfo = {
6128 : { (JSJitGetterOp)set_onvolumechange },
6129 : { prototypes::id::XULElement },
6130 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
6131 : JSJitInfo::Setter,
6132 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6133 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
6134 : false, /* isInfallible. False in setters. */
6135 : false, /* isMovable. Not relevant for setters. */
6136 : false, /* isEliminatable. Not relevant for setters. */
6137 : false, /* isAlwaysInSlot. Only relevant for getters. */
6138 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6139 : false, /* isTypedMethod. Only relevant for methods. */
6140 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6141 : };
6142 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6143 : static_assert(0 < 1, "There is no slot for us");
6144 :
6145 : static bool
6146 0 : get_onwaiting(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
6147 : {
6148 0 : RefPtr<EventHandlerNonNull> result(self->GetOnwaiting());
6149 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6150 0 : if (result) {
6151 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
6152 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
6153 0 : return false;
6154 : }
6155 0 : return true;
6156 : } else {
6157 0 : args.rval().setNull();
6158 0 : return true;
6159 : }
6160 : }
6161 :
6162 : static bool
6163 0 : set_onwaiting(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
6164 : {
6165 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
6166 0 : if (args[0].isObject()) {
6167 : { // scope for tempRoot
6168 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
6169 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
6170 : }
6171 : } else {
6172 0 : arg0 = nullptr;
6173 : }
6174 0 : self->SetOnwaiting(Constify(arg0));
6175 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6176 :
6177 0 : return true;
6178 : }
6179 :
6180 : static const JSJitInfo onwaiting_getterinfo = {
6181 : { (JSJitGetterOp)get_onwaiting },
6182 : { prototypes::id::XULElement },
6183 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
6184 : JSJitInfo::Getter,
6185 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6186 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
6187 : false, /* isInfallible. False in setters. */
6188 : false, /* isMovable. Not relevant for setters. */
6189 : false, /* isEliminatable. Not relevant for setters. */
6190 : false, /* isAlwaysInSlot. Only relevant for getters. */
6191 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6192 : false, /* isTypedMethod. Only relevant for methods. */
6193 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6194 : };
6195 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6196 : static_assert(0 < 1, "There is no slot for us");
6197 : static const JSJitInfo onwaiting_setterinfo = {
6198 : { (JSJitGetterOp)set_onwaiting },
6199 : { prototypes::id::XULElement },
6200 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
6201 : JSJitInfo::Setter,
6202 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6203 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
6204 : false, /* isInfallible. False in setters. */
6205 : false, /* isMovable. Not relevant for setters. */
6206 : false, /* isEliminatable. Not relevant for setters. */
6207 : false, /* isAlwaysInSlot. Only relevant for getters. */
6208 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6209 : false, /* isTypedMethod. Only relevant for methods. */
6210 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6211 : };
6212 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6213 : static_assert(0 < 1, "There is no slot for us");
6214 :
6215 : static bool
6216 0 : get_onselectstart(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
6217 : {
6218 0 : RefPtr<EventHandlerNonNull> result(self->GetOnselectstart());
6219 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6220 0 : if (result) {
6221 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
6222 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
6223 0 : return false;
6224 : }
6225 0 : return true;
6226 : } else {
6227 0 : args.rval().setNull();
6228 0 : return true;
6229 : }
6230 : }
6231 :
6232 : static bool
6233 0 : set_onselectstart(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
6234 : {
6235 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
6236 0 : if (args[0].isObject()) {
6237 : { // scope for tempRoot
6238 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
6239 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
6240 : }
6241 : } else {
6242 0 : arg0 = nullptr;
6243 : }
6244 0 : self->SetOnselectstart(Constify(arg0));
6245 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6246 :
6247 0 : return true;
6248 : }
6249 :
6250 : static const JSJitInfo onselectstart_getterinfo = {
6251 : { (JSJitGetterOp)get_onselectstart },
6252 : { prototypes::id::XULElement },
6253 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
6254 : JSJitInfo::Getter,
6255 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6256 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
6257 : false, /* isInfallible. False in setters. */
6258 : false, /* isMovable. Not relevant for setters. */
6259 : false, /* isEliminatable. Not relevant for setters. */
6260 : false, /* isAlwaysInSlot. Only relevant for getters. */
6261 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6262 : false, /* isTypedMethod. Only relevant for methods. */
6263 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6264 : };
6265 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6266 : static_assert(0 < 1, "There is no slot for us");
6267 : static const JSJitInfo onselectstart_setterinfo = {
6268 : { (JSJitGetterOp)set_onselectstart },
6269 : { prototypes::id::XULElement },
6270 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
6271 : JSJitInfo::Setter,
6272 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6273 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
6274 : false, /* isInfallible. False in setters. */
6275 : false, /* isMovable. Not relevant for setters. */
6276 : false, /* isEliminatable. Not relevant for setters. */
6277 : false, /* isAlwaysInSlot. Only relevant for getters. */
6278 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6279 : false, /* isTypedMethod. Only relevant for methods. */
6280 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6281 : };
6282 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6283 : static_assert(0 < 1, "There is no slot for us");
6284 :
6285 : static bool
6286 0 : get_ontoggle(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
6287 : {
6288 0 : RefPtr<EventHandlerNonNull> result(self->GetOntoggle());
6289 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6290 0 : if (result) {
6291 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
6292 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
6293 0 : return false;
6294 : }
6295 0 : return true;
6296 : } else {
6297 0 : args.rval().setNull();
6298 0 : return true;
6299 : }
6300 : }
6301 :
6302 : static bool
6303 0 : set_ontoggle(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
6304 : {
6305 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
6306 0 : if (args[0].isObject()) {
6307 : { // scope for tempRoot
6308 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
6309 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
6310 : }
6311 : } else {
6312 0 : arg0 = nullptr;
6313 : }
6314 0 : self->SetOntoggle(Constify(arg0));
6315 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6316 :
6317 0 : return true;
6318 : }
6319 :
6320 : static const JSJitInfo ontoggle_getterinfo = {
6321 : { (JSJitGetterOp)get_ontoggle },
6322 : { prototypes::id::XULElement },
6323 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
6324 : JSJitInfo::Getter,
6325 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6326 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
6327 : false, /* isInfallible. False in setters. */
6328 : false, /* isMovable. Not relevant for setters. */
6329 : false, /* isEliminatable. Not relevant for setters. */
6330 : false, /* isAlwaysInSlot. Only relevant for getters. */
6331 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6332 : false, /* isTypedMethod. Only relevant for methods. */
6333 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6334 : };
6335 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6336 : static_assert(0 < 1, "There is no slot for us");
6337 : static const JSJitInfo ontoggle_setterinfo = {
6338 : { (JSJitGetterOp)set_ontoggle },
6339 : { prototypes::id::XULElement },
6340 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
6341 : JSJitInfo::Setter,
6342 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6343 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
6344 : false, /* isInfallible. False in setters. */
6345 : false, /* isMovable. Not relevant for setters. */
6346 : false, /* isEliminatable. Not relevant for setters. */
6347 : false, /* isAlwaysInSlot. Only relevant for getters. */
6348 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6349 : false, /* isTypedMethod. Only relevant for methods. */
6350 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6351 : };
6352 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6353 : static_assert(0 < 1, "There is no slot for us");
6354 :
6355 : static bool
6356 0 : get_onpointercancel(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
6357 : {
6358 0 : RefPtr<EventHandlerNonNull> result(self->GetOnpointercancel());
6359 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6360 0 : if (result) {
6361 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
6362 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
6363 0 : return false;
6364 : }
6365 0 : return true;
6366 : } else {
6367 0 : args.rval().setNull();
6368 0 : return true;
6369 : }
6370 : }
6371 :
6372 : static bool
6373 0 : set_onpointercancel(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
6374 : {
6375 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
6376 0 : if (args[0].isObject()) {
6377 : { // scope for tempRoot
6378 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
6379 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
6380 : }
6381 : } else {
6382 0 : arg0 = nullptr;
6383 : }
6384 0 : self->SetOnpointercancel(Constify(arg0));
6385 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6386 :
6387 0 : return true;
6388 : }
6389 :
6390 : static const JSJitInfo onpointercancel_getterinfo = {
6391 : { (JSJitGetterOp)get_onpointercancel },
6392 : { prototypes::id::XULElement },
6393 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
6394 : JSJitInfo::Getter,
6395 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6396 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
6397 : false, /* isInfallible. False in setters. */
6398 : false, /* isMovable. Not relevant for setters. */
6399 : false, /* isEliminatable. Not relevant for setters. */
6400 : false, /* isAlwaysInSlot. Only relevant for getters. */
6401 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6402 : false, /* isTypedMethod. Only relevant for methods. */
6403 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6404 : };
6405 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6406 : static_assert(0 < 1, "There is no slot for us");
6407 : static const JSJitInfo onpointercancel_setterinfo = {
6408 : { (JSJitGetterOp)set_onpointercancel },
6409 : { prototypes::id::XULElement },
6410 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
6411 : JSJitInfo::Setter,
6412 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6413 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
6414 : false, /* isInfallible. False in setters. */
6415 : false, /* isMovable. Not relevant for setters. */
6416 : false, /* isEliminatable. Not relevant for setters. */
6417 : false, /* isAlwaysInSlot. Only relevant for getters. */
6418 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6419 : false, /* isTypedMethod. Only relevant for methods. */
6420 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6421 : };
6422 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6423 : static_assert(0 < 1, "There is no slot for us");
6424 :
6425 : static bool
6426 0 : get_onpointerdown(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
6427 : {
6428 0 : RefPtr<EventHandlerNonNull> result(self->GetOnpointerdown());
6429 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6430 0 : if (result) {
6431 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
6432 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
6433 0 : return false;
6434 : }
6435 0 : return true;
6436 : } else {
6437 0 : args.rval().setNull();
6438 0 : return true;
6439 : }
6440 : }
6441 :
6442 : static bool
6443 0 : set_onpointerdown(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
6444 : {
6445 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
6446 0 : if (args[0].isObject()) {
6447 : { // scope for tempRoot
6448 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
6449 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
6450 : }
6451 : } else {
6452 0 : arg0 = nullptr;
6453 : }
6454 0 : self->SetOnpointerdown(Constify(arg0));
6455 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6456 :
6457 0 : return true;
6458 : }
6459 :
6460 : static const JSJitInfo onpointerdown_getterinfo = {
6461 : { (JSJitGetterOp)get_onpointerdown },
6462 : { prototypes::id::XULElement },
6463 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
6464 : JSJitInfo::Getter,
6465 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6466 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
6467 : false, /* isInfallible. False in setters. */
6468 : false, /* isMovable. Not relevant for setters. */
6469 : false, /* isEliminatable. Not relevant for setters. */
6470 : false, /* isAlwaysInSlot. Only relevant for getters. */
6471 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6472 : false, /* isTypedMethod. Only relevant for methods. */
6473 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6474 : };
6475 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6476 : static_assert(0 < 1, "There is no slot for us");
6477 : static const JSJitInfo onpointerdown_setterinfo = {
6478 : { (JSJitGetterOp)set_onpointerdown },
6479 : { prototypes::id::XULElement },
6480 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
6481 : JSJitInfo::Setter,
6482 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6483 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
6484 : false, /* isInfallible. False in setters. */
6485 : false, /* isMovable. Not relevant for setters. */
6486 : false, /* isEliminatable. Not relevant for setters. */
6487 : false, /* isAlwaysInSlot. Only relevant for getters. */
6488 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6489 : false, /* isTypedMethod. Only relevant for methods. */
6490 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6491 : };
6492 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6493 : static_assert(0 < 1, "There is no slot for us");
6494 :
6495 : static bool
6496 0 : get_onpointerup(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
6497 : {
6498 0 : RefPtr<EventHandlerNonNull> result(self->GetOnpointerup());
6499 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6500 0 : if (result) {
6501 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
6502 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
6503 0 : return false;
6504 : }
6505 0 : return true;
6506 : } else {
6507 0 : args.rval().setNull();
6508 0 : return true;
6509 : }
6510 : }
6511 :
6512 : static bool
6513 0 : set_onpointerup(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
6514 : {
6515 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
6516 0 : if (args[0].isObject()) {
6517 : { // scope for tempRoot
6518 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
6519 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
6520 : }
6521 : } else {
6522 0 : arg0 = nullptr;
6523 : }
6524 0 : self->SetOnpointerup(Constify(arg0));
6525 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6526 :
6527 0 : return true;
6528 : }
6529 :
6530 : static const JSJitInfo onpointerup_getterinfo = {
6531 : { (JSJitGetterOp)get_onpointerup },
6532 : { prototypes::id::XULElement },
6533 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
6534 : JSJitInfo::Getter,
6535 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6536 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
6537 : false, /* isInfallible. False in setters. */
6538 : false, /* isMovable. Not relevant for setters. */
6539 : false, /* isEliminatable. Not relevant for setters. */
6540 : false, /* isAlwaysInSlot. Only relevant for getters. */
6541 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6542 : false, /* isTypedMethod. Only relevant for methods. */
6543 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6544 : };
6545 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6546 : static_assert(0 < 1, "There is no slot for us");
6547 : static const JSJitInfo onpointerup_setterinfo = {
6548 : { (JSJitGetterOp)set_onpointerup },
6549 : { prototypes::id::XULElement },
6550 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
6551 : JSJitInfo::Setter,
6552 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6553 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
6554 : false, /* isInfallible. False in setters. */
6555 : false, /* isMovable. Not relevant for setters. */
6556 : false, /* isEliminatable. Not relevant for setters. */
6557 : false, /* isAlwaysInSlot. Only relevant for getters. */
6558 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6559 : false, /* isTypedMethod. Only relevant for methods. */
6560 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6561 : };
6562 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6563 : static_assert(0 < 1, "There is no slot for us");
6564 :
6565 : static bool
6566 0 : get_onpointermove(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
6567 : {
6568 0 : RefPtr<EventHandlerNonNull> result(self->GetOnpointermove());
6569 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6570 0 : if (result) {
6571 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
6572 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
6573 0 : return false;
6574 : }
6575 0 : return true;
6576 : } else {
6577 0 : args.rval().setNull();
6578 0 : return true;
6579 : }
6580 : }
6581 :
6582 : static bool
6583 0 : set_onpointermove(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
6584 : {
6585 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
6586 0 : if (args[0].isObject()) {
6587 : { // scope for tempRoot
6588 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
6589 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
6590 : }
6591 : } else {
6592 0 : arg0 = nullptr;
6593 : }
6594 0 : self->SetOnpointermove(Constify(arg0));
6595 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6596 :
6597 0 : return true;
6598 : }
6599 :
6600 : static const JSJitInfo onpointermove_getterinfo = {
6601 : { (JSJitGetterOp)get_onpointermove },
6602 : { prototypes::id::XULElement },
6603 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
6604 : JSJitInfo::Getter,
6605 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6606 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
6607 : false, /* isInfallible. False in setters. */
6608 : false, /* isMovable. Not relevant for setters. */
6609 : false, /* isEliminatable. Not relevant for setters. */
6610 : false, /* isAlwaysInSlot. Only relevant for getters. */
6611 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6612 : false, /* isTypedMethod. Only relevant for methods. */
6613 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6614 : };
6615 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6616 : static_assert(0 < 1, "There is no slot for us");
6617 : static const JSJitInfo onpointermove_setterinfo = {
6618 : { (JSJitGetterOp)set_onpointermove },
6619 : { prototypes::id::XULElement },
6620 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
6621 : JSJitInfo::Setter,
6622 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6623 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
6624 : false, /* isInfallible. False in setters. */
6625 : false, /* isMovable. Not relevant for setters. */
6626 : false, /* isEliminatable. Not relevant for setters. */
6627 : false, /* isAlwaysInSlot. Only relevant for getters. */
6628 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6629 : false, /* isTypedMethod. Only relevant for methods. */
6630 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6631 : };
6632 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6633 : static_assert(0 < 1, "There is no slot for us");
6634 :
6635 : static bool
6636 0 : get_onpointerout(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
6637 : {
6638 0 : RefPtr<EventHandlerNonNull> result(self->GetOnpointerout());
6639 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6640 0 : if (result) {
6641 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
6642 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
6643 0 : return false;
6644 : }
6645 0 : return true;
6646 : } else {
6647 0 : args.rval().setNull();
6648 0 : return true;
6649 : }
6650 : }
6651 :
6652 : static bool
6653 0 : set_onpointerout(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
6654 : {
6655 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
6656 0 : if (args[0].isObject()) {
6657 : { // scope for tempRoot
6658 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
6659 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
6660 : }
6661 : } else {
6662 0 : arg0 = nullptr;
6663 : }
6664 0 : self->SetOnpointerout(Constify(arg0));
6665 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6666 :
6667 0 : return true;
6668 : }
6669 :
6670 : static const JSJitInfo onpointerout_getterinfo = {
6671 : { (JSJitGetterOp)get_onpointerout },
6672 : { prototypes::id::XULElement },
6673 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
6674 : JSJitInfo::Getter,
6675 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6676 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
6677 : false, /* isInfallible. False in setters. */
6678 : false, /* isMovable. Not relevant for setters. */
6679 : false, /* isEliminatable. Not relevant for setters. */
6680 : false, /* isAlwaysInSlot. Only relevant for getters. */
6681 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6682 : false, /* isTypedMethod. Only relevant for methods. */
6683 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6684 : };
6685 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6686 : static_assert(0 < 1, "There is no slot for us");
6687 : static const JSJitInfo onpointerout_setterinfo = {
6688 : { (JSJitGetterOp)set_onpointerout },
6689 : { prototypes::id::XULElement },
6690 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
6691 : JSJitInfo::Setter,
6692 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6693 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
6694 : false, /* isInfallible. False in setters. */
6695 : false, /* isMovable. Not relevant for setters. */
6696 : false, /* isEliminatable. Not relevant for setters. */
6697 : false, /* isAlwaysInSlot. Only relevant for getters. */
6698 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6699 : false, /* isTypedMethod. Only relevant for methods. */
6700 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6701 : };
6702 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6703 : static_assert(0 < 1, "There is no slot for us");
6704 :
6705 : static bool
6706 0 : get_onpointerover(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
6707 : {
6708 0 : RefPtr<EventHandlerNonNull> result(self->GetOnpointerover());
6709 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6710 0 : if (result) {
6711 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
6712 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
6713 0 : return false;
6714 : }
6715 0 : return true;
6716 : } else {
6717 0 : args.rval().setNull();
6718 0 : return true;
6719 : }
6720 : }
6721 :
6722 : static bool
6723 0 : set_onpointerover(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
6724 : {
6725 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
6726 0 : if (args[0].isObject()) {
6727 : { // scope for tempRoot
6728 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
6729 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
6730 : }
6731 : } else {
6732 0 : arg0 = nullptr;
6733 : }
6734 0 : self->SetOnpointerover(Constify(arg0));
6735 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6736 :
6737 0 : return true;
6738 : }
6739 :
6740 : static const JSJitInfo onpointerover_getterinfo = {
6741 : { (JSJitGetterOp)get_onpointerover },
6742 : { prototypes::id::XULElement },
6743 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
6744 : JSJitInfo::Getter,
6745 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6746 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
6747 : false, /* isInfallible. False in setters. */
6748 : false, /* isMovable. Not relevant for setters. */
6749 : false, /* isEliminatable. Not relevant for setters. */
6750 : false, /* isAlwaysInSlot. Only relevant for getters. */
6751 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6752 : false, /* isTypedMethod. Only relevant for methods. */
6753 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6754 : };
6755 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6756 : static_assert(0 < 1, "There is no slot for us");
6757 : static const JSJitInfo onpointerover_setterinfo = {
6758 : { (JSJitGetterOp)set_onpointerover },
6759 : { prototypes::id::XULElement },
6760 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
6761 : JSJitInfo::Setter,
6762 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6763 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
6764 : false, /* isInfallible. False in setters. */
6765 : false, /* isMovable. Not relevant for setters. */
6766 : false, /* isEliminatable. Not relevant for setters. */
6767 : false, /* isAlwaysInSlot. Only relevant for getters. */
6768 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6769 : false, /* isTypedMethod. Only relevant for methods. */
6770 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6771 : };
6772 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6773 : static_assert(0 < 1, "There is no slot for us");
6774 :
6775 : static bool
6776 0 : get_onpointerenter(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
6777 : {
6778 0 : RefPtr<EventHandlerNonNull> result(self->GetOnpointerenter());
6779 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6780 0 : if (result) {
6781 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
6782 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
6783 0 : return false;
6784 : }
6785 0 : return true;
6786 : } else {
6787 0 : args.rval().setNull();
6788 0 : return true;
6789 : }
6790 : }
6791 :
6792 : static bool
6793 0 : set_onpointerenter(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
6794 : {
6795 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
6796 0 : if (args[0].isObject()) {
6797 : { // scope for tempRoot
6798 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
6799 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
6800 : }
6801 : } else {
6802 0 : arg0 = nullptr;
6803 : }
6804 0 : self->SetOnpointerenter(Constify(arg0));
6805 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6806 :
6807 0 : return true;
6808 : }
6809 :
6810 : static const JSJitInfo onpointerenter_getterinfo = {
6811 : { (JSJitGetterOp)get_onpointerenter },
6812 : { prototypes::id::XULElement },
6813 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
6814 : JSJitInfo::Getter,
6815 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6816 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
6817 : false, /* isInfallible. False in setters. */
6818 : false, /* isMovable. Not relevant for setters. */
6819 : false, /* isEliminatable. Not relevant for setters. */
6820 : false, /* isAlwaysInSlot. Only relevant for getters. */
6821 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6822 : false, /* isTypedMethod. Only relevant for methods. */
6823 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6824 : };
6825 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6826 : static_assert(0 < 1, "There is no slot for us");
6827 : static const JSJitInfo onpointerenter_setterinfo = {
6828 : { (JSJitGetterOp)set_onpointerenter },
6829 : { prototypes::id::XULElement },
6830 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
6831 : JSJitInfo::Setter,
6832 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6833 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
6834 : false, /* isInfallible. False in setters. */
6835 : false, /* isMovable. Not relevant for setters. */
6836 : false, /* isEliminatable. Not relevant for setters. */
6837 : false, /* isAlwaysInSlot. Only relevant for getters. */
6838 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6839 : false, /* isTypedMethod. Only relevant for methods. */
6840 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6841 : };
6842 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6843 : static_assert(0 < 1, "There is no slot for us");
6844 :
6845 : static bool
6846 0 : get_onpointerleave(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
6847 : {
6848 0 : RefPtr<EventHandlerNonNull> result(self->GetOnpointerleave());
6849 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6850 0 : if (result) {
6851 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
6852 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
6853 0 : return false;
6854 : }
6855 0 : return true;
6856 : } else {
6857 0 : args.rval().setNull();
6858 0 : return true;
6859 : }
6860 : }
6861 :
6862 : static bool
6863 0 : set_onpointerleave(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
6864 : {
6865 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
6866 0 : if (args[0].isObject()) {
6867 : { // scope for tempRoot
6868 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
6869 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
6870 : }
6871 : } else {
6872 0 : arg0 = nullptr;
6873 : }
6874 0 : self->SetOnpointerleave(Constify(arg0));
6875 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6876 :
6877 0 : return true;
6878 : }
6879 :
6880 : static const JSJitInfo onpointerleave_getterinfo = {
6881 : { (JSJitGetterOp)get_onpointerleave },
6882 : { prototypes::id::XULElement },
6883 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
6884 : JSJitInfo::Getter,
6885 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6886 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
6887 : false, /* isInfallible. False in setters. */
6888 : false, /* isMovable. Not relevant for setters. */
6889 : false, /* isEliminatable. Not relevant for setters. */
6890 : false, /* isAlwaysInSlot. Only relevant for getters. */
6891 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6892 : false, /* isTypedMethod. Only relevant for methods. */
6893 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6894 : };
6895 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6896 : static_assert(0 < 1, "There is no slot for us");
6897 : static const JSJitInfo onpointerleave_setterinfo = {
6898 : { (JSJitGetterOp)set_onpointerleave },
6899 : { prototypes::id::XULElement },
6900 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
6901 : JSJitInfo::Setter,
6902 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6903 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
6904 : false, /* isInfallible. False in setters. */
6905 : false, /* isMovable. Not relevant for setters. */
6906 : false, /* isEliminatable. Not relevant for setters. */
6907 : false, /* isAlwaysInSlot. Only relevant for getters. */
6908 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6909 : false, /* isTypedMethod. Only relevant for methods. */
6910 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6911 : };
6912 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6913 : static_assert(0 < 1, "There is no slot for us");
6914 :
6915 : static bool
6916 0 : get_ongotpointercapture(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
6917 : {
6918 0 : RefPtr<EventHandlerNonNull> result(self->GetOngotpointercapture());
6919 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6920 0 : if (result) {
6921 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
6922 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
6923 0 : return false;
6924 : }
6925 0 : return true;
6926 : } else {
6927 0 : args.rval().setNull();
6928 0 : return true;
6929 : }
6930 : }
6931 :
6932 : static bool
6933 0 : set_ongotpointercapture(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
6934 : {
6935 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
6936 0 : if (args[0].isObject()) {
6937 : { // scope for tempRoot
6938 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
6939 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
6940 : }
6941 : } else {
6942 0 : arg0 = nullptr;
6943 : }
6944 0 : self->SetOngotpointercapture(Constify(arg0));
6945 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6946 :
6947 0 : return true;
6948 : }
6949 :
6950 : static const JSJitInfo ongotpointercapture_getterinfo = {
6951 : { (JSJitGetterOp)get_ongotpointercapture },
6952 : { prototypes::id::XULElement },
6953 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
6954 : JSJitInfo::Getter,
6955 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6956 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
6957 : false, /* isInfallible. False in setters. */
6958 : false, /* isMovable. Not relevant for setters. */
6959 : false, /* isEliminatable. Not relevant for setters. */
6960 : false, /* isAlwaysInSlot. Only relevant for getters. */
6961 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6962 : false, /* isTypedMethod. Only relevant for methods. */
6963 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6964 : };
6965 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6966 : static_assert(0 < 1, "There is no slot for us");
6967 : static const JSJitInfo ongotpointercapture_setterinfo = {
6968 : { (JSJitGetterOp)set_ongotpointercapture },
6969 : { prototypes::id::XULElement },
6970 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
6971 : JSJitInfo::Setter,
6972 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6973 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
6974 : false, /* isInfallible. False in setters. */
6975 : false, /* isMovable. Not relevant for setters. */
6976 : false, /* isEliminatable. Not relevant for setters. */
6977 : false, /* isAlwaysInSlot. Only relevant for getters. */
6978 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6979 : false, /* isTypedMethod. Only relevant for methods. */
6980 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6981 : };
6982 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6983 : static_assert(0 < 1, "There is no slot for us");
6984 :
6985 : static bool
6986 0 : get_onlostpointercapture(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
6987 : {
6988 0 : RefPtr<EventHandlerNonNull> result(self->GetOnlostpointercapture());
6989 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6990 0 : if (result) {
6991 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
6992 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
6993 0 : return false;
6994 : }
6995 0 : return true;
6996 : } else {
6997 0 : args.rval().setNull();
6998 0 : return true;
6999 : }
7000 : }
7001 :
7002 : static bool
7003 0 : set_onlostpointercapture(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
7004 : {
7005 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
7006 0 : if (args[0].isObject()) {
7007 : { // scope for tempRoot
7008 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
7009 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
7010 : }
7011 : } else {
7012 0 : arg0 = nullptr;
7013 : }
7014 0 : self->SetOnlostpointercapture(Constify(arg0));
7015 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
7016 :
7017 0 : return true;
7018 : }
7019 :
7020 : static const JSJitInfo onlostpointercapture_getterinfo = {
7021 : { (JSJitGetterOp)get_onlostpointercapture },
7022 : { prototypes::id::XULElement },
7023 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
7024 : JSJitInfo::Getter,
7025 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7026 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
7027 : false, /* isInfallible. False in setters. */
7028 : false, /* isMovable. Not relevant for setters. */
7029 : false, /* isEliminatable. Not relevant for setters. */
7030 : false, /* isAlwaysInSlot. Only relevant for getters. */
7031 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
7032 : false, /* isTypedMethod. Only relevant for methods. */
7033 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7034 : };
7035 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
7036 : static_assert(0 < 1, "There is no slot for us");
7037 : static const JSJitInfo onlostpointercapture_setterinfo = {
7038 : { (JSJitGetterOp)set_onlostpointercapture },
7039 : { prototypes::id::XULElement },
7040 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
7041 : JSJitInfo::Setter,
7042 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7043 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
7044 : false, /* isInfallible. False in setters. */
7045 : false, /* isMovable. Not relevant for setters. */
7046 : false, /* isEliminatable. Not relevant for setters. */
7047 : false, /* isAlwaysInSlot. Only relevant for getters. */
7048 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
7049 : false, /* isTypedMethod. Only relevant for methods. */
7050 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7051 : };
7052 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
7053 : static_assert(0 < 1, "There is no slot for us");
7054 :
7055 : static bool
7056 0 : get_onmozfullscreenchange(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
7057 : {
7058 0 : RefPtr<EventHandlerNonNull> result(self->GetOnmozfullscreenchange());
7059 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
7060 0 : if (result) {
7061 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
7062 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
7063 0 : return false;
7064 : }
7065 0 : return true;
7066 : } else {
7067 0 : args.rval().setNull();
7068 0 : return true;
7069 : }
7070 : }
7071 :
7072 : static bool
7073 0 : set_onmozfullscreenchange(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
7074 : {
7075 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
7076 0 : if (args[0].isObject()) {
7077 : { // scope for tempRoot
7078 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
7079 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
7080 : }
7081 : } else {
7082 0 : arg0 = nullptr;
7083 : }
7084 0 : self->SetOnmozfullscreenchange(Constify(arg0));
7085 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
7086 :
7087 0 : return true;
7088 : }
7089 :
7090 : static const JSJitInfo onmozfullscreenchange_getterinfo = {
7091 : { (JSJitGetterOp)get_onmozfullscreenchange },
7092 : { prototypes::id::XULElement },
7093 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
7094 : JSJitInfo::Getter,
7095 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7096 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
7097 : false, /* isInfallible. False in setters. */
7098 : false, /* isMovable. Not relevant for setters. */
7099 : false, /* isEliminatable. Not relevant for setters. */
7100 : false, /* isAlwaysInSlot. Only relevant for getters. */
7101 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
7102 : false, /* isTypedMethod. Only relevant for methods. */
7103 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7104 : };
7105 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
7106 : static_assert(0 < 1, "There is no slot for us");
7107 : static const JSJitInfo onmozfullscreenchange_setterinfo = {
7108 : { (JSJitGetterOp)set_onmozfullscreenchange },
7109 : { prototypes::id::XULElement },
7110 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
7111 : JSJitInfo::Setter,
7112 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7113 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
7114 : false, /* isInfallible. False in setters. */
7115 : false, /* isMovable. Not relevant for setters. */
7116 : false, /* isEliminatable. Not relevant for setters. */
7117 : false, /* isAlwaysInSlot. Only relevant for getters. */
7118 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
7119 : false, /* isTypedMethod. Only relevant for methods. */
7120 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7121 : };
7122 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
7123 : static_assert(0 < 1, "There is no slot for us");
7124 :
7125 : static bool
7126 0 : get_onmozfullscreenerror(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
7127 : {
7128 0 : RefPtr<EventHandlerNonNull> result(self->GetOnmozfullscreenerror());
7129 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
7130 0 : if (result) {
7131 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
7132 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
7133 0 : return false;
7134 : }
7135 0 : return true;
7136 : } else {
7137 0 : args.rval().setNull();
7138 0 : return true;
7139 : }
7140 : }
7141 :
7142 : static bool
7143 0 : set_onmozfullscreenerror(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
7144 : {
7145 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
7146 0 : if (args[0].isObject()) {
7147 : { // scope for tempRoot
7148 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
7149 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
7150 : }
7151 : } else {
7152 0 : arg0 = nullptr;
7153 : }
7154 0 : self->SetOnmozfullscreenerror(Constify(arg0));
7155 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
7156 :
7157 0 : return true;
7158 : }
7159 :
7160 : static const JSJitInfo onmozfullscreenerror_getterinfo = {
7161 : { (JSJitGetterOp)get_onmozfullscreenerror },
7162 : { prototypes::id::XULElement },
7163 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
7164 : JSJitInfo::Getter,
7165 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7166 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
7167 : false, /* isInfallible. False in setters. */
7168 : false, /* isMovable. Not relevant for setters. */
7169 : false, /* isEliminatable. Not relevant for setters. */
7170 : false, /* isAlwaysInSlot. Only relevant for getters. */
7171 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
7172 : false, /* isTypedMethod. Only relevant for methods. */
7173 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7174 : };
7175 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
7176 : static_assert(0 < 1, "There is no slot for us");
7177 : static const JSJitInfo onmozfullscreenerror_setterinfo = {
7178 : { (JSJitGetterOp)set_onmozfullscreenerror },
7179 : { prototypes::id::XULElement },
7180 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
7181 : JSJitInfo::Setter,
7182 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7183 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
7184 : false, /* isInfallible. False in setters. */
7185 : false, /* isMovable. Not relevant for setters. */
7186 : false, /* isEliminatable. Not relevant for setters. */
7187 : false, /* isAlwaysInSlot. Only relevant for getters. */
7188 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
7189 : false, /* isTypedMethod. Only relevant for methods. */
7190 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7191 : };
7192 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
7193 : static_assert(0 < 1, "There is no slot for us");
7194 :
7195 : static bool
7196 0 : get_onanimationcancel(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
7197 : {
7198 0 : RefPtr<EventHandlerNonNull> result(self->GetOnanimationcancel());
7199 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
7200 0 : if (result) {
7201 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
7202 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
7203 0 : return false;
7204 : }
7205 0 : return true;
7206 : } else {
7207 0 : args.rval().setNull();
7208 0 : return true;
7209 : }
7210 : }
7211 :
7212 : static bool
7213 0 : set_onanimationcancel(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
7214 : {
7215 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
7216 0 : if (args[0].isObject()) {
7217 : { // scope for tempRoot
7218 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
7219 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
7220 : }
7221 : } else {
7222 0 : arg0 = nullptr;
7223 : }
7224 0 : self->SetOnanimationcancel(Constify(arg0));
7225 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
7226 :
7227 0 : return true;
7228 : }
7229 :
7230 : static const JSJitInfo onanimationcancel_getterinfo = {
7231 : { (JSJitGetterOp)get_onanimationcancel },
7232 : { prototypes::id::XULElement },
7233 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
7234 : JSJitInfo::Getter,
7235 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7236 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
7237 : false, /* isInfallible. False in setters. */
7238 : false, /* isMovable. Not relevant for setters. */
7239 : false, /* isEliminatable. Not relevant for setters. */
7240 : false, /* isAlwaysInSlot. Only relevant for getters. */
7241 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
7242 : false, /* isTypedMethod. Only relevant for methods. */
7243 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7244 : };
7245 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
7246 : static_assert(0 < 1, "There is no slot for us");
7247 : static const JSJitInfo onanimationcancel_setterinfo = {
7248 : { (JSJitGetterOp)set_onanimationcancel },
7249 : { prototypes::id::XULElement },
7250 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
7251 : JSJitInfo::Setter,
7252 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7253 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
7254 : false, /* isInfallible. False in setters. */
7255 : false, /* isMovable. Not relevant for setters. */
7256 : false, /* isEliminatable. Not relevant for setters. */
7257 : false, /* isAlwaysInSlot. Only relevant for getters. */
7258 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
7259 : false, /* isTypedMethod. Only relevant for methods. */
7260 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7261 : };
7262 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
7263 : static_assert(0 < 1, "There is no slot for us");
7264 :
7265 : static bool
7266 0 : get_onanimationend(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
7267 : {
7268 0 : RefPtr<EventHandlerNonNull> result(self->GetOnanimationend());
7269 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
7270 0 : if (result) {
7271 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
7272 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
7273 0 : return false;
7274 : }
7275 0 : return true;
7276 : } else {
7277 0 : args.rval().setNull();
7278 0 : return true;
7279 : }
7280 : }
7281 :
7282 : static bool
7283 0 : set_onanimationend(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
7284 : {
7285 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
7286 0 : if (args[0].isObject()) {
7287 : { // scope for tempRoot
7288 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
7289 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
7290 : }
7291 : } else {
7292 0 : arg0 = nullptr;
7293 : }
7294 0 : self->SetOnanimationend(Constify(arg0));
7295 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
7296 :
7297 0 : return true;
7298 : }
7299 :
7300 : static const JSJitInfo onanimationend_getterinfo = {
7301 : { (JSJitGetterOp)get_onanimationend },
7302 : { prototypes::id::XULElement },
7303 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
7304 : JSJitInfo::Getter,
7305 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7306 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
7307 : false, /* isInfallible. False in setters. */
7308 : false, /* isMovable. Not relevant for setters. */
7309 : false, /* isEliminatable. Not relevant for setters. */
7310 : false, /* isAlwaysInSlot. Only relevant for getters. */
7311 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
7312 : false, /* isTypedMethod. Only relevant for methods. */
7313 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7314 : };
7315 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
7316 : static_assert(0 < 1, "There is no slot for us");
7317 : static const JSJitInfo onanimationend_setterinfo = {
7318 : { (JSJitGetterOp)set_onanimationend },
7319 : { prototypes::id::XULElement },
7320 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
7321 : JSJitInfo::Setter,
7322 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7323 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
7324 : false, /* isInfallible. False in setters. */
7325 : false, /* isMovable. Not relevant for setters. */
7326 : false, /* isEliminatable. Not relevant for setters. */
7327 : false, /* isAlwaysInSlot. Only relevant for getters. */
7328 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
7329 : false, /* isTypedMethod. Only relevant for methods. */
7330 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7331 : };
7332 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
7333 : static_assert(0 < 1, "There is no slot for us");
7334 :
7335 : static bool
7336 0 : get_onanimationiteration(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
7337 : {
7338 0 : RefPtr<EventHandlerNonNull> result(self->GetOnanimationiteration());
7339 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
7340 0 : if (result) {
7341 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
7342 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
7343 0 : return false;
7344 : }
7345 0 : return true;
7346 : } else {
7347 0 : args.rval().setNull();
7348 0 : return true;
7349 : }
7350 : }
7351 :
7352 : static bool
7353 0 : set_onanimationiteration(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
7354 : {
7355 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
7356 0 : if (args[0].isObject()) {
7357 : { // scope for tempRoot
7358 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
7359 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
7360 : }
7361 : } else {
7362 0 : arg0 = nullptr;
7363 : }
7364 0 : self->SetOnanimationiteration(Constify(arg0));
7365 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
7366 :
7367 0 : return true;
7368 : }
7369 :
7370 : static const JSJitInfo onanimationiteration_getterinfo = {
7371 : { (JSJitGetterOp)get_onanimationiteration },
7372 : { prototypes::id::XULElement },
7373 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
7374 : JSJitInfo::Getter,
7375 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7376 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
7377 : false, /* isInfallible. False in setters. */
7378 : false, /* isMovable. Not relevant for setters. */
7379 : false, /* isEliminatable. Not relevant for setters. */
7380 : false, /* isAlwaysInSlot. Only relevant for getters. */
7381 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
7382 : false, /* isTypedMethod. Only relevant for methods. */
7383 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7384 : };
7385 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
7386 : static_assert(0 < 1, "There is no slot for us");
7387 : static const JSJitInfo onanimationiteration_setterinfo = {
7388 : { (JSJitGetterOp)set_onanimationiteration },
7389 : { prototypes::id::XULElement },
7390 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
7391 : JSJitInfo::Setter,
7392 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7393 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
7394 : false, /* isInfallible. False in setters. */
7395 : false, /* isMovable. Not relevant for setters. */
7396 : false, /* isEliminatable. Not relevant for setters. */
7397 : false, /* isAlwaysInSlot. Only relevant for getters. */
7398 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
7399 : false, /* isTypedMethod. Only relevant for methods. */
7400 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7401 : };
7402 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
7403 : static_assert(0 < 1, "There is no slot for us");
7404 :
7405 : static bool
7406 0 : get_onanimationstart(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
7407 : {
7408 0 : RefPtr<EventHandlerNonNull> result(self->GetOnanimationstart());
7409 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
7410 0 : if (result) {
7411 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
7412 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
7413 0 : return false;
7414 : }
7415 0 : return true;
7416 : } else {
7417 0 : args.rval().setNull();
7418 0 : return true;
7419 : }
7420 : }
7421 :
7422 : static bool
7423 0 : set_onanimationstart(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
7424 : {
7425 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
7426 0 : if (args[0].isObject()) {
7427 : { // scope for tempRoot
7428 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
7429 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
7430 : }
7431 : } else {
7432 0 : arg0 = nullptr;
7433 : }
7434 0 : self->SetOnanimationstart(Constify(arg0));
7435 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
7436 :
7437 0 : return true;
7438 : }
7439 :
7440 : static const JSJitInfo onanimationstart_getterinfo = {
7441 : { (JSJitGetterOp)get_onanimationstart },
7442 : { prototypes::id::XULElement },
7443 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
7444 : JSJitInfo::Getter,
7445 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7446 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
7447 : false, /* isInfallible. False in setters. */
7448 : false, /* isMovable. Not relevant for setters. */
7449 : false, /* isEliminatable. Not relevant for setters. */
7450 : false, /* isAlwaysInSlot. Only relevant for getters. */
7451 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
7452 : false, /* isTypedMethod. Only relevant for methods. */
7453 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7454 : };
7455 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
7456 : static_assert(0 < 1, "There is no slot for us");
7457 : static const JSJitInfo onanimationstart_setterinfo = {
7458 : { (JSJitGetterOp)set_onanimationstart },
7459 : { prototypes::id::XULElement },
7460 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
7461 : JSJitInfo::Setter,
7462 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7463 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
7464 : false, /* isInfallible. False in setters. */
7465 : false, /* isMovable. Not relevant for setters. */
7466 : false, /* isEliminatable. Not relevant for setters. */
7467 : false, /* isAlwaysInSlot. Only relevant for getters. */
7468 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
7469 : false, /* isTypedMethod. Only relevant for methods. */
7470 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7471 : };
7472 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
7473 : static_assert(0 < 1, "There is no slot for us");
7474 :
7475 : static bool
7476 0 : get_ontransitioncancel(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
7477 : {
7478 0 : RefPtr<EventHandlerNonNull> result(self->GetOntransitioncancel());
7479 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
7480 0 : if (result) {
7481 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
7482 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
7483 0 : return false;
7484 : }
7485 0 : return true;
7486 : } else {
7487 0 : args.rval().setNull();
7488 0 : return true;
7489 : }
7490 : }
7491 :
7492 : static bool
7493 0 : set_ontransitioncancel(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
7494 : {
7495 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
7496 0 : if (args[0].isObject()) {
7497 : { // scope for tempRoot
7498 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
7499 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
7500 : }
7501 : } else {
7502 0 : arg0 = nullptr;
7503 : }
7504 0 : self->SetOntransitioncancel(Constify(arg0));
7505 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
7506 :
7507 0 : return true;
7508 : }
7509 :
7510 : static const JSJitInfo ontransitioncancel_getterinfo = {
7511 : { (JSJitGetterOp)get_ontransitioncancel },
7512 : { prototypes::id::XULElement },
7513 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
7514 : JSJitInfo::Getter,
7515 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7516 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
7517 : false, /* isInfallible. False in setters. */
7518 : false, /* isMovable. Not relevant for setters. */
7519 : false, /* isEliminatable. Not relevant for setters. */
7520 : false, /* isAlwaysInSlot. Only relevant for getters. */
7521 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
7522 : false, /* isTypedMethod. Only relevant for methods. */
7523 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7524 : };
7525 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
7526 : static_assert(0 < 1, "There is no slot for us");
7527 : static const JSJitInfo ontransitioncancel_setterinfo = {
7528 : { (JSJitGetterOp)set_ontransitioncancel },
7529 : { prototypes::id::XULElement },
7530 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
7531 : JSJitInfo::Setter,
7532 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7533 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
7534 : false, /* isInfallible. False in setters. */
7535 : false, /* isMovable. Not relevant for setters. */
7536 : false, /* isEliminatable. Not relevant for setters. */
7537 : false, /* isAlwaysInSlot. Only relevant for getters. */
7538 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
7539 : false, /* isTypedMethod. Only relevant for methods. */
7540 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7541 : };
7542 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
7543 : static_assert(0 < 1, "There is no slot for us");
7544 :
7545 : static bool
7546 0 : get_ontransitionend(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
7547 : {
7548 0 : RefPtr<EventHandlerNonNull> result(self->GetOntransitionend());
7549 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
7550 0 : if (result) {
7551 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
7552 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
7553 0 : return false;
7554 : }
7555 0 : return true;
7556 : } else {
7557 0 : args.rval().setNull();
7558 0 : return true;
7559 : }
7560 : }
7561 :
7562 : static bool
7563 0 : set_ontransitionend(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
7564 : {
7565 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
7566 0 : if (args[0].isObject()) {
7567 : { // scope for tempRoot
7568 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
7569 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
7570 : }
7571 : } else {
7572 0 : arg0 = nullptr;
7573 : }
7574 0 : self->SetOntransitionend(Constify(arg0));
7575 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
7576 :
7577 0 : return true;
7578 : }
7579 :
7580 : static const JSJitInfo ontransitionend_getterinfo = {
7581 : { (JSJitGetterOp)get_ontransitionend },
7582 : { prototypes::id::XULElement },
7583 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
7584 : JSJitInfo::Getter,
7585 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7586 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
7587 : false, /* isInfallible. False in setters. */
7588 : false, /* isMovable. Not relevant for setters. */
7589 : false, /* isEliminatable. Not relevant for setters. */
7590 : false, /* isAlwaysInSlot. Only relevant for getters. */
7591 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
7592 : false, /* isTypedMethod. Only relevant for methods. */
7593 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7594 : };
7595 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
7596 : static_assert(0 < 1, "There is no slot for us");
7597 : static const JSJitInfo ontransitionend_setterinfo = {
7598 : { (JSJitGetterOp)set_ontransitionend },
7599 : { prototypes::id::XULElement },
7600 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
7601 : JSJitInfo::Setter,
7602 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7603 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
7604 : false, /* isInfallible. False in setters. */
7605 : false, /* isMovable. Not relevant for setters. */
7606 : false, /* isEliminatable. Not relevant for setters. */
7607 : false, /* isAlwaysInSlot. Only relevant for getters. */
7608 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
7609 : false, /* isTypedMethod. Only relevant for methods. */
7610 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7611 : };
7612 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
7613 : static_assert(0 < 1, "There is no slot for us");
7614 :
7615 : static bool
7616 0 : get_ontransitionrun(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
7617 : {
7618 0 : RefPtr<EventHandlerNonNull> result(self->GetOntransitionrun());
7619 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
7620 0 : if (result) {
7621 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
7622 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
7623 0 : return false;
7624 : }
7625 0 : return true;
7626 : } else {
7627 0 : args.rval().setNull();
7628 0 : return true;
7629 : }
7630 : }
7631 :
7632 : static bool
7633 0 : set_ontransitionrun(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
7634 : {
7635 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
7636 0 : if (args[0].isObject()) {
7637 : { // scope for tempRoot
7638 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
7639 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
7640 : }
7641 : } else {
7642 0 : arg0 = nullptr;
7643 : }
7644 0 : self->SetOntransitionrun(Constify(arg0));
7645 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
7646 :
7647 0 : return true;
7648 : }
7649 :
7650 : static const JSJitInfo ontransitionrun_getterinfo = {
7651 : { (JSJitGetterOp)get_ontransitionrun },
7652 : { prototypes::id::XULElement },
7653 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
7654 : JSJitInfo::Getter,
7655 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7656 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
7657 : false, /* isInfallible. False in setters. */
7658 : false, /* isMovable. Not relevant for setters. */
7659 : false, /* isEliminatable. Not relevant for setters. */
7660 : false, /* isAlwaysInSlot. Only relevant for getters. */
7661 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
7662 : false, /* isTypedMethod. Only relevant for methods. */
7663 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7664 : };
7665 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
7666 : static_assert(0 < 1, "There is no slot for us");
7667 : static const JSJitInfo ontransitionrun_setterinfo = {
7668 : { (JSJitGetterOp)set_ontransitionrun },
7669 : { prototypes::id::XULElement },
7670 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
7671 : JSJitInfo::Setter,
7672 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7673 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
7674 : false, /* isInfallible. False in setters. */
7675 : false, /* isMovable. Not relevant for setters. */
7676 : false, /* isEliminatable. Not relevant for setters. */
7677 : false, /* isAlwaysInSlot. Only relevant for getters. */
7678 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
7679 : false, /* isTypedMethod. Only relevant for methods. */
7680 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7681 : };
7682 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
7683 : static_assert(0 < 1, "There is no slot for us");
7684 :
7685 : static bool
7686 0 : get_ontransitionstart(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
7687 : {
7688 0 : RefPtr<EventHandlerNonNull> result(self->GetOntransitionstart());
7689 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
7690 0 : if (result) {
7691 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
7692 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
7693 0 : return false;
7694 : }
7695 0 : return true;
7696 : } else {
7697 0 : args.rval().setNull();
7698 0 : return true;
7699 : }
7700 : }
7701 :
7702 : static bool
7703 0 : set_ontransitionstart(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
7704 : {
7705 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
7706 0 : if (args[0].isObject()) {
7707 : { // scope for tempRoot
7708 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
7709 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
7710 : }
7711 : } else {
7712 0 : arg0 = nullptr;
7713 : }
7714 0 : self->SetOntransitionstart(Constify(arg0));
7715 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
7716 :
7717 0 : return true;
7718 : }
7719 :
7720 : static const JSJitInfo ontransitionstart_getterinfo = {
7721 : { (JSJitGetterOp)get_ontransitionstart },
7722 : { prototypes::id::XULElement },
7723 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
7724 : JSJitInfo::Getter,
7725 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7726 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
7727 : false, /* isInfallible. False in setters. */
7728 : false, /* isMovable. Not relevant for setters. */
7729 : false, /* isEliminatable. Not relevant for setters. */
7730 : false, /* isAlwaysInSlot. Only relevant for getters. */
7731 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
7732 : false, /* isTypedMethod. Only relevant for methods. */
7733 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7734 : };
7735 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
7736 : static_assert(0 < 1, "There is no slot for us");
7737 : static const JSJitInfo ontransitionstart_setterinfo = {
7738 : { (JSJitGetterOp)set_ontransitionstart },
7739 : { prototypes::id::XULElement },
7740 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
7741 : JSJitInfo::Setter,
7742 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7743 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
7744 : false, /* isInfallible. False in setters. */
7745 : false, /* isMovable. Not relevant for setters. */
7746 : false, /* isEliminatable. Not relevant for setters. */
7747 : false, /* isAlwaysInSlot. Only relevant for getters. */
7748 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
7749 : false, /* isTypedMethod. Only relevant for methods. */
7750 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7751 : };
7752 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
7753 : static_assert(0 < 1, "There is no slot for us");
7754 :
7755 : static bool
7756 0 : get_onwebkitanimationend(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
7757 : {
7758 0 : RefPtr<EventHandlerNonNull> result(self->GetOnwebkitanimationend());
7759 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
7760 0 : if (result) {
7761 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
7762 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
7763 0 : return false;
7764 : }
7765 0 : return true;
7766 : } else {
7767 0 : args.rval().setNull();
7768 0 : return true;
7769 : }
7770 : }
7771 :
7772 : static bool
7773 0 : set_onwebkitanimationend(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
7774 : {
7775 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
7776 0 : if (args[0].isObject()) {
7777 : { // scope for tempRoot
7778 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
7779 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
7780 : }
7781 : } else {
7782 0 : arg0 = nullptr;
7783 : }
7784 0 : self->SetOnwebkitanimationend(Constify(arg0));
7785 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
7786 :
7787 0 : return true;
7788 : }
7789 :
7790 : static const JSJitInfo onwebkitanimationend_getterinfo = {
7791 : { (JSJitGetterOp)get_onwebkitanimationend },
7792 : { prototypes::id::XULElement },
7793 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
7794 : JSJitInfo::Getter,
7795 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7796 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
7797 : false, /* isInfallible. False in setters. */
7798 : false, /* isMovable. Not relevant for setters. */
7799 : false, /* isEliminatable. Not relevant for setters. */
7800 : false, /* isAlwaysInSlot. Only relevant for getters. */
7801 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
7802 : false, /* isTypedMethod. Only relevant for methods. */
7803 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7804 : };
7805 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
7806 : static_assert(0 < 1, "There is no slot for us");
7807 : static const JSJitInfo onwebkitanimationend_setterinfo = {
7808 : { (JSJitGetterOp)set_onwebkitanimationend },
7809 : { prototypes::id::XULElement },
7810 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
7811 : JSJitInfo::Setter,
7812 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7813 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
7814 : false, /* isInfallible. False in setters. */
7815 : false, /* isMovable. Not relevant for setters. */
7816 : false, /* isEliminatable. Not relevant for setters. */
7817 : false, /* isAlwaysInSlot. Only relevant for getters. */
7818 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
7819 : false, /* isTypedMethod. Only relevant for methods. */
7820 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7821 : };
7822 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
7823 : static_assert(0 < 1, "There is no slot for us");
7824 :
7825 : static bool
7826 0 : get_onwebkitanimationiteration(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
7827 : {
7828 0 : RefPtr<EventHandlerNonNull> result(self->GetOnwebkitanimationiteration());
7829 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
7830 0 : if (result) {
7831 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
7832 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
7833 0 : return false;
7834 : }
7835 0 : return true;
7836 : } else {
7837 0 : args.rval().setNull();
7838 0 : return true;
7839 : }
7840 : }
7841 :
7842 : static bool
7843 0 : set_onwebkitanimationiteration(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
7844 : {
7845 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
7846 0 : if (args[0].isObject()) {
7847 : { // scope for tempRoot
7848 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
7849 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
7850 : }
7851 : } else {
7852 0 : arg0 = nullptr;
7853 : }
7854 0 : self->SetOnwebkitanimationiteration(Constify(arg0));
7855 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
7856 :
7857 0 : return true;
7858 : }
7859 :
7860 : static const JSJitInfo onwebkitanimationiteration_getterinfo = {
7861 : { (JSJitGetterOp)get_onwebkitanimationiteration },
7862 : { prototypes::id::XULElement },
7863 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
7864 : JSJitInfo::Getter,
7865 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7866 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
7867 : false, /* isInfallible. False in setters. */
7868 : false, /* isMovable. Not relevant for setters. */
7869 : false, /* isEliminatable. Not relevant for setters. */
7870 : false, /* isAlwaysInSlot. Only relevant for getters. */
7871 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
7872 : false, /* isTypedMethod. Only relevant for methods. */
7873 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7874 : };
7875 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
7876 : static_assert(0 < 1, "There is no slot for us");
7877 : static const JSJitInfo onwebkitanimationiteration_setterinfo = {
7878 : { (JSJitGetterOp)set_onwebkitanimationiteration },
7879 : { prototypes::id::XULElement },
7880 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
7881 : JSJitInfo::Setter,
7882 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7883 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
7884 : false, /* isInfallible. False in setters. */
7885 : false, /* isMovable. Not relevant for setters. */
7886 : false, /* isEliminatable. Not relevant for setters. */
7887 : false, /* isAlwaysInSlot. Only relevant for getters. */
7888 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
7889 : false, /* isTypedMethod. Only relevant for methods. */
7890 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7891 : };
7892 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
7893 : static_assert(0 < 1, "There is no slot for us");
7894 :
7895 : static bool
7896 0 : get_onwebkitanimationstart(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
7897 : {
7898 0 : RefPtr<EventHandlerNonNull> result(self->GetOnwebkitanimationstart());
7899 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
7900 0 : if (result) {
7901 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
7902 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
7903 0 : return false;
7904 : }
7905 0 : return true;
7906 : } else {
7907 0 : args.rval().setNull();
7908 0 : return true;
7909 : }
7910 : }
7911 :
7912 : static bool
7913 0 : set_onwebkitanimationstart(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
7914 : {
7915 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
7916 0 : if (args[0].isObject()) {
7917 : { // scope for tempRoot
7918 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
7919 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
7920 : }
7921 : } else {
7922 0 : arg0 = nullptr;
7923 : }
7924 0 : self->SetOnwebkitanimationstart(Constify(arg0));
7925 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
7926 :
7927 0 : return true;
7928 : }
7929 :
7930 : static const JSJitInfo onwebkitanimationstart_getterinfo = {
7931 : { (JSJitGetterOp)get_onwebkitanimationstart },
7932 : { prototypes::id::XULElement },
7933 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
7934 : JSJitInfo::Getter,
7935 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7936 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
7937 : false, /* isInfallible. False in setters. */
7938 : false, /* isMovable. Not relevant for setters. */
7939 : false, /* isEliminatable. Not relevant for setters. */
7940 : false, /* isAlwaysInSlot. Only relevant for getters. */
7941 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
7942 : false, /* isTypedMethod. Only relevant for methods. */
7943 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7944 : };
7945 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
7946 : static_assert(0 < 1, "There is no slot for us");
7947 : static const JSJitInfo onwebkitanimationstart_setterinfo = {
7948 : { (JSJitGetterOp)set_onwebkitanimationstart },
7949 : { prototypes::id::XULElement },
7950 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
7951 : JSJitInfo::Setter,
7952 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7953 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
7954 : false, /* isInfallible. False in setters. */
7955 : false, /* isMovable. Not relevant for setters. */
7956 : false, /* isEliminatable. Not relevant for setters. */
7957 : false, /* isAlwaysInSlot. Only relevant for getters. */
7958 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
7959 : false, /* isTypedMethod. Only relevant for methods. */
7960 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7961 : };
7962 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
7963 : static_assert(0 < 1, "There is no slot for us");
7964 :
7965 : static bool
7966 0 : get_onwebkittransitionend(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
7967 : {
7968 0 : RefPtr<EventHandlerNonNull> result(self->GetOnwebkittransitionend());
7969 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
7970 0 : if (result) {
7971 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
7972 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
7973 0 : return false;
7974 : }
7975 0 : return true;
7976 : } else {
7977 0 : args.rval().setNull();
7978 0 : return true;
7979 : }
7980 : }
7981 :
7982 : static bool
7983 0 : set_onwebkittransitionend(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
7984 : {
7985 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
7986 0 : if (args[0].isObject()) {
7987 : { // scope for tempRoot
7988 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
7989 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
7990 : }
7991 : } else {
7992 0 : arg0 = nullptr;
7993 : }
7994 0 : self->SetOnwebkittransitionend(Constify(arg0));
7995 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
7996 :
7997 0 : return true;
7998 : }
7999 :
8000 : static const JSJitInfo onwebkittransitionend_getterinfo = {
8001 : { (JSJitGetterOp)get_onwebkittransitionend },
8002 : { prototypes::id::XULElement },
8003 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
8004 : JSJitInfo::Getter,
8005 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
8006 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
8007 : false, /* isInfallible. False in setters. */
8008 : false, /* isMovable. Not relevant for setters. */
8009 : false, /* isEliminatable. Not relevant for setters. */
8010 : false, /* isAlwaysInSlot. Only relevant for getters. */
8011 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
8012 : false, /* isTypedMethod. Only relevant for methods. */
8013 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
8014 : };
8015 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
8016 : static_assert(0 < 1, "There is no slot for us");
8017 : static const JSJitInfo onwebkittransitionend_setterinfo = {
8018 : { (JSJitGetterOp)set_onwebkittransitionend },
8019 : { prototypes::id::XULElement },
8020 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
8021 : JSJitInfo::Setter,
8022 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
8023 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
8024 : false, /* isInfallible. False in setters. */
8025 : false, /* isMovable. Not relevant for setters. */
8026 : false, /* isEliminatable. Not relevant for setters. */
8027 : false, /* isAlwaysInSlot. Only relevant for getters. */
8028 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
8029 : false, /* isTypedMethod. Only relevant for methods. */
8030 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
8031 : };
8032 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
8033 : static_assert(0 < 1, "There is no slot for us");
8034 :
8035 : static bool
8036 98 : get_frameLoader(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
8037 : {
8038 196 : auto result(StrongOrRawPtr<nsIFrameLoader>(self->GetFrameLoader()));
8039 98 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
8040 98 : if (!result) {
8041 0 : args.rval().setNull();
8042 0 : return true;
8043 : }
8044 98 : if (!WrapObject(cx, result, &NS_GET_IID(nsIFrameLoader), args.rval())) {
8045 0 : return false;
8046 : }
8047 98 : return true;
8048 : }
8049 :
8050 : static const JSJitInfo frameLoader_getterinfo = {
8051 : { (JSJitGetterOp)get_frameLoader },
8052 : { prototypes::id::XULElement },
8053 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
8054 : JSJitInfo::Getter,
8055 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
8056 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
8057 : false, /* isInfallible. False in setters. */
8058 : false, /* isMovable. Not relevant for setters. */
8059 : false, /* isEliminatable. Not relevant for setters. */
8060 : false, /* isAlwaysInSlot. Only relevant for getters. */
8061 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
8062 : false, /* isTypedMethod. Only relevant for methods. */
8063 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
8064 : };
8065 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
8066 : static_assert(0 < 1, "There is no slot for us");
8067 :
8068 : static bool
8069 0 : setIsPrerendered(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, const JSJitMethodCallArgs& args)
8070 : {
8071 0 : self->SetIsPrerendered();
8072 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
8073 0 : args.rval().setUndefined();
8074 0 : return true;
8075 : }
8076 :
8077 : static const JSJitInfo setIsPrerendered_methodinfo = {
8078 : { (JSJitGetterOp)setIsPrerendered },
8079 : { prototypes::id::XULElement },
8080 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
8081 : JSJitInfo::Method,
8082 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
8083 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
8084 : true, /* isInfallible. False in setters. */
8085 : false, /* isMovable. Not relevant for setters. */
8086 : false, /* isEliminatable. Not relevant for setters. */
8087 : false, /* isAlwaysInSlot. Only relevant for getters. */
8088 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
8089 : false, /* isTypedMethod. Only relevant for methods. */
8090 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
8091 : };
8092 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
8093 : static_assert(0 < 1, "There is no slot for us");
8094 :
8095 : static bool
8096 0 : presetOpenerWindow(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, const JSJitMethodCallArgs& args)
8097 : {
8098 0 : if (MOZ_UNLIKELY(args.length() < 1)) {
8099 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "XULElement.presetOpenerWindow");
8100 : }
8101 : nsPIDOMWindowOuter* arg0;
8102 0 : RefPtr<nsPIDOMWindowOuter> arg0_holder;
8103 0 : if (args[0].isObject()) {
8104 0 : JS::Rooted<JSObject*> source(cx, &args[0].toObject());
8105 0 : if (NS_FAILED(UnwrapArg<nsPIDOMWindowOuter>(cx, source, getter_AddRefs(arg0_holder)))) {
8106 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of XULElement.presetOpenerWindow", "WindowProxy");
8107 0 : return false;
8108 : }
8109 0 : MOZ_ASSERT(arg0_holder);
8110 0 : arg0 = arg0_holder;
8111 0 : } else if (args[0].isNullOrUndefined()) {
8112 0 : arg0 = nullptr;
8113 : } else {
8114 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of XULElement.presetOpenerWindow");
8115 0 : return false;
8116 : }
8117 0 : binding_detail::FastErrorResult rv;
8118 0 : self->PresetOpenerWindow(Constify(arg0), rv);
8119 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
8120 0 : return false;
8121 : }
8122 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
8123 0 : args.rval().setUndefined();
8124 0 : return true;
8125 : }
8126 :
8127 : static const JSJitInfo presetOpenerWindow_methodinfo = {
8128 : { (JSJitGetterOp)presetOpenerWindow },
8129 : { prototypes::id::XULElement },
8130 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
8131 : JSJitInfo::Method,
8132 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
8133 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
8134 : false, /* isInfallible. False in setters. */
8135 : false, /* isMovable. Not relevant for setters. */
8136 : false, /* isEliminatable. Not relevant for setters. */
8137 : false, /* isAlwaysInSlot. Only relevant for getters. */
8138 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
8139 : false, /* isTypedMethod. Only relevant for methods. */
8140 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
8141 : };
8142 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
8143 : static_assert(0 < 1, "There is no slot for us");
8144 :
8145 : static bool
8146 0 : swapFrameLoaders(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, const JSJitMethodCallArgs& args)
8147 : {
8148 0 : unsigned argcount = std::min(args.length(), 1u);
8149 0 : switch (argcount) {
8150 : case 1: {
8151 0 : if (args[0].isObject()) {
8152 : do {
8153 0 : NonNull<nsXULElement> arg0;
8154 : {
8155 0 : nsresult rv = UnwrapObject<prototypes::id::XULElement, nsXULElement>(args[0], arg0);
8156 0 : if (NS_FAILED(rv)) {
8157 0 : break;
8158 : }
8159 : }
8160 0 : binding_detail::FastErrorResult rv;
8161 0 : self->SwapFrameLoaders(NonNullHelper(arg0), rv);
8162 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
8163 0 : return false;
8164 : }
8165 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
8166 0 : args.rval().setUndefined();
8167 0 : return true;
8168 : } while (0);
8169 : do {
8170 0 : NonNull<mozilla::dom::HTMLIFrameElement> arg0;
8171 : {
8172 0 : nsresult rv = UnwrapObject<prototypes::id::HTMLIFrameElement, mozilla::dom::HTMLIFrameElement>(args[0], arg0);
8173 0 : if (NS_FAILED(rv)) {
8174 0 : break;
8175 : }
8176 : }
8177 0 : binding_detail::FastErrorResult rv;
8178 0 : self->SwapFrameLoaders(NonNullHelper(arg0), rv);
8179 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
8180 0 : return false;
8181 : }
8182 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
8183 0 : args.rval().setUndefined();
8184 0 : return true;
8185 : } while (0);
8186 : }
8187 0 : return ThrowErrorMessage(cx, MSG_OVERLOAD_RESOLUTION_FAILED, "1", "1", "XULElement.swapFrameLoaders");
8188 : break;
8189 : }
8190 : default: {
8191 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "XULElement.swapFrameLoaders");
8192 : break;
8193 : }
8194 : }
8195 : MOZ_CRASH("We have an always-returning default case");
8196 : return false;
8197 : }
8198 :
8199 : static const JSJitInfo swapFrameLoaders_methodinfo = {
8200 : { (JSJitGetterOp)swapFrameLoaders },
8201 : { prototypes::id::XULElement },
8202 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
8203 : JSJitInfo::Method,
8204 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
8205 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
8206 : false, /* isInfallible. False in setters. */
8207 : false, /* isMovable. Not relevant for setters. */
8208 : false, /* isEliminatable. Not relevant for setters. */
8209 : false, /* isAlwaysInSlot. Only relevant for getters. */
8210 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
8211 : false, /* isTypedMethod. Only relevant for methods. */
8212 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
8213 : };
8214 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
8215 : static_assert(0 < 1, "There is no slot for us");
8216 :
8217 : static bool
8218 0 : get_onerror(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
8219 : {
8220 0 : RefPtr<EventHandlerNonNull> result(self->GetOnerror());
8221 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
8222 0 : if (result) {
8223 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
8224 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
8225 0 : return false;
8226 : }
8227 0 : return true;
8228 : } else {
8229 0 : args.rval().setNull();
8230 0 : return true;
8231 : }
8232 : }
8233 :
8234 : static bool
8235 0 : set_onerror(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
8236 : {
8237 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
8238 0 : if (args[0].isObject()) {
8239 : { // scope for tempRoot
8240 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
8241 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
8242 : }
8243 : } else {
8244 0 : arg0 = nullptr;
8245 : }
8246 0 : self->SetOnerror(Constify(arg0));
8247 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
8248 :
8249 0 : return true;
8250 : }
8251 :
8252 : static const JSJitInfo onerror_getterinfo = {
8253 : { (JSJitGetterOp)get_onerror },
8254 : { prototypes::id::XULElement },
8255 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
8256 : JSJitInfo::Getter,
8257 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
8258 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
8259 : false, /* isInfallible. False in setters. */
8260 : false, /* isMovable. Not relevant for setters. */
8261 : false, /* isEliminatable. Not relevant for setters. */
8262 : false, /* isAlwaysInSlot. Only relevant for getters. */
8263 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
8264 : false, /* isTypedMethod. Only relevant for methods. */
8265 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
8266 : };
8267 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
8268 : static_assert(0 < 1, "There is no slot for us");
8269 : static const JSJitInfo onerror_setterinfo = {
8270 : { (JSJitGetterOp)set_onerror },
8271 : { prototypes::id::XULElement },
8272 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
8273 : JSJitInfo::Setter,
8274 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
8275 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
8276 : false, /* isInfallible. False in setters. */
8277 : false, /* isMovable. Not relevant for setters. */
8278 : false, /* isEliminatable. Not relevant for setters. */
8279 : false, /* isAlwaysInSlot. Only relevant for getters. */
8280 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
8281 : false, /* isTypedMethod. Only relevant for methods. */
8282 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
8283 : };
8284 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
8285 : static_assert(0 < 1, "There is no slot for us");
8286 :
8287 : static bool
8288 0 : get_ontouchstart(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
8289 : {
8290 0 : RefPtr<EventHandlerNonNull> result(self->GetOntouchstart());
8291 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
8292 0 : if (result) {
8293 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
8294 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
8295 0 : return false;
8296 : }
8297 0 : return true;
8298 : } else {
8299 0 : args.rval().setNull();
8300 0 : return true;
8301 : }
8302 : }
8303 :
8304 : static bool
8305 0 : set_ontouchstart(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
8306 : {
8307 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
8308 0 : if (args[0].isObject()) {
8309 : { // scope for tempRoot
8310 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
8311 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
8312 : }
8313 : } else {
8314 0 : arg0 = nullptr;
8315 : }
8316 0 : self->SetOntouchstart(Constify(arg0));
8317 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
8318 :
8319 0 : return true;
8320 : }
8321 :
8322 : static const JSJitInfo ontouchstart_getterinfo = {
8323 : { (JSJitGetterOp)get_ontouchstart },
8324 : { prototypes::id::XULElement },
8325 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
8326 : JSJitInfo::Getter,
8327 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
8328 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
8329 : false, /* isInfallible. False in setters. */
8330 : false, /* isMovable. Not relevant for setters. */
8331 : false, /* isEliminatable. Not relevant for setters. */
8332 : false, /* isAlwaysInSlot. Only relevant for getters. */
8333 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
8334 : false, /* isTypedMethod. Only relevant for methods. */
8335 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
8336 : };
8337 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
8338 : static_assert(0 < 1, "There is no slot for us");
8339 : static const JSJitInfo ontouchstart_setterinfo = {
8340 : { (JSJitGetterOp)set_ontouchstart },
8341 : { prototypes::id::XULElement },
8342 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
8343 : JSJitInfo::Setter,
8344 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
8345 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
8346 : false, /* isInfallible. False in setters. */
8347 : false, /* isMovable. Not relevant for setters. */
8348 : false, /* isEliminatable. Not relevant for setters. */
8349 : false, /* isAlwaysInSlot. Only relevant for getters. */
8350 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
8351 : false, /* isTypedMethod. Only relevant for methods. */
8352 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
8353 : };
8354 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
8355 : static_assert(0 < 1, "There is no slot for us");
8356 :
8357 : static bool
8358 0 : get_ontouchend(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
8359 : {
8360 0 : RefPtr<EventHandlerNonNull> result(self->GetOntouchend());
8361 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
8362 0 : if (result) {
8363 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
8364 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
8365 0 : return false;
8366 : }
8367 0 : return true;
8368 : } else {
8369 0 : args.rval().setNull();
8370 0 : return true;
8371 : }
8372 : }
8373 :
8374 : static bool
8375 0 : set_ontouchend(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
8376 : {
8377 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
8378 0 : if (args[0].isObject()) {
8379 : { // scope for tempRoot
8380 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
8381 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
8382 : }
8383 : } else {
8384 0 : arg0 = nullptr;
8385 : }
8386 0 : self->SetOntouchend(Constify(arg0));
8387 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
8388 :
8389 0 : return true;
8390 : }
8391 :
8392 : static const JSJitInfo ontouchend_getterinfo = {
8393 : { (JSJitGetterOp)get_ontouchend },
8394 : { prototypes::id::XULElement },
8395 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
8396 : JSJitInfo::Getter,
8397 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
8398 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
8399 : false, /* isInfallible. False in setters. */
8400 : false, /* isMovable. Not relevant for setters. */
8401 : false, /* isEliminatable. Not relevant for setters. */
8402 : false, /* isAlwaysInSlot. Only relevant for getters. */
8403 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
8404 : false, /* isTypedMethod. Only relevant for methods. */
8405 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
8406 : };
8407 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
8408 : static_assert(0 < 1, "There is no slot for us");
8409 : static const JSJitInfo ontouchend_setterinfo = {
8410 : { (JSJitGetterOp)set_ontouchend },
8411 : { prototypes::id::XULElement },
8412 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
8413 : JSJitInfo::Setter,
8414 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
8415 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
8416 : false, /* isInfallible. False in setters. */
8417 : false, /* isMovable. Not relevant for setters. */
8418 : false, /* isEliminatable. Not relevant for setters. */
8419 : false, /* isAlwaysInSlot. Only relevant for getters. */
8420 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
8421 : false, /* isTypedMethod. Only relevant for methods. */
8422 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
8423 : };
8424 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
8425 : static_assert(0 < 1, "There is no slot for us");
8426 :
8427 : static bool
8428 0 : get_ontouchmove(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
8429 : {
8430 0 : RefPtr<EventHandlerNonNull> result(self->GetOntouchmove());
8431 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
8432 0 : if (result) {
8433 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
8434 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
8435 0 : return false;
8436 : }
8437 0 : return true;
8438 : } else {
8439 0 : args.rval().setNull();
8440 0 : return true;
8441 : }
8442 : }
8443 :
8444 : static bool
8445 0 : set_ontouchmove(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
8446 : {
8447 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
8448 0 : if (args[0].isObject()) {
8449 : { // scope for tempRoot
8450 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
8451 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
8452 : }
8453 : } else {
8454 0 : arg0 = nullptr;
8455 : }
8456 0 : self->SetOntouchmove(Constify(arg0));
8457 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
8458 :
8459 0 : return true;
8460 : }
8461 :
8462 : static const JSJitInfo ontouchmove_getterinfo = {
8463 : { (JSJitGetterOp)get_ontouchmove },
8464 : { prototypes::id::XULElement },
8465 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
8466 : JSJitInfo::Getter,
8467 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
8468 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
8469 : false, /* isInfallible. False in setters. */
8470 : false, /* isMovable. Not relevant for setters. */
8471 : false, /* isEliminatable. Not relevant for setters. */
8472 : false, /* isAlwaysInSlot. Only relevant for getters. */
8473 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
8474 : false, /* isTypedMethod. Only relevant for methods. */
8475 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
8476 : };
8477 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
8478 : static_assert(0 < 1, "There is no slot for us");
8479 : static const JSJitInfo ontouchmove_setterinfo = {
8480 : { (JSJitGetterOp)set_ontouchmove },
8481 : { prototypes::id::XULElement },
8482 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
8483 : JSJitInfo::Setter,
8484 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
8485 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
8486 : false, /* isInfallible. False in setters. */
8487 : false, /* isMovable. Not relevant for setters. */
8488 : false, /* isEliminatable. Not relevant for setters. */
8489 : false, /* isAlwaysInSlot. Only relevant for getters. */
8490 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
8491 : false, /* isTypedMethod. Only relevant for methods. */
8492 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
8493 : };
8494 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
8495 : static_assert(0 < 1, "There is no slot for us");
8496 :
8497 : static bool
8498 0 : get_ontouchcancel(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitGetterCallArgs args)
8499 : {
8500 0 : RefPtr<EventHandlerNonNull> result(self->GetOntouchcancel());
8501 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
8502 0 : if (result) {
8503 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
8504 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
8505 0 : return false;
8506 : }
8507 0 : return true;
8508 : } else {
8509 0 : args.rval().setNull();
8510 0 : return true;
8511 : }
8512 : }
8513 :
8514 : static bool
8515 0 : set_ontouchcancel(JSContext* cx, JS::Handle<JSObject*> obj, nsXULElement* self, JSJitSetterCallArgs args)
8516 : {
8517 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
8518 0 : if (args[0].isObject()) {
8519 : { // scope for tempRoot
8520 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
8521 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
8522 : }
8523 : } else {
8524 0 : arg0 = nullptr;
8525 : }
8526 0 : self->SetOntouchcancel(Constify(arg0));
8527 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
8528 :
8529 0 : return true;
8530 : }
8531 :
8532 : static const JSJitInfo ontouchcancel_getterinfo = {
8533 : { (JSJitGetterOp)get_ontouchcancel },
8534 : { prototypes::id::XULElement },
8535 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
8536 : JSJitInfo::Getter,
8537 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
8538 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
8539 : false, /* isInfallible. False in setters. */
8540 : false, /* isMovable. Not relevant for setters. */
8541 : false, /* isEliminatable. Not relevant for setters. */
8542 : false, /* isAlwaysInSlot. Only relevant for getters. */
8543 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
8544 : false, /* isTypedMethod. Only relevant for methods. */
8545 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
8546 : };
8547 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
8548 : static_assert(0 < 1, "There is no slot for us");
8549 : static const JSJitInfo ontouchcancel_setterinfo = {
8550 : { (JSJitGetterOp)set_ontouchcancel },
8551 : { prototypes::id::XULElement },
8552 : { PrototypeTraits<prototypes::id::XULElement>::Depth },
8553 : JSJitInfo::Setter,
8554 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
8555 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
8556 : false, /* isInfallible. False in setters. */
8557 : false, /* isMovable. Not relevant for setters. */
8558 : false, /* isEliminatable. Not relevant for setters. */
8559 : false, /* isAlwaysInSlot. Only relevant for getters. */
8560 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
8561 : false, /* isTypedMethod. Only relevant for methods. */
8562 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
8563 : };
8564 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
8565 : static_assert(0 < 1, "There is no slot for us");
8566 :
8567 : static bool
8568 0 : genericLenientGetter(JSContext* cx, unsigned argc, JS::Value* vp)
8569 : {
8570 0 : JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
8571 0 : if (!args.thisv().isObject()) {
8572 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
8573 0 : if (!ReportLenientThisUnwrappingFailure(cx, &args.callee())) {
8574 0 : return false;
8575 : }
8576 0 : args.rval().set(JS::UndefinedValue());
8577 0 : return true;
8578 : }
8579 0 : JS::Rooted<JSObject*> obj(cx, &args.thisv().toObject());
8580 :
8581 : nsXULElement* self;
8582 0 : JS::Rooted<JS::Value> rootSelf(cx, JS::ObjectValue(*obj));
8583 : {
8584 0 : nsresult rv = UnwrapObject<prototypes::id::XULElement, nsXULElement>(&rootSelf, self);
8585 0 : if (NS_FAILED(rv)) {
8586 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
8587 0 : if (!ReportLenientThisUnwrappingFailure(cx, &args.callee())) {
8588 0 : return false;
8589 : }
8590 0 : args.rval().set(JS::UndefinedValue());
8591 0 : return true;
8592 : }
8593 : }
8594 0 : const JSJitInfo *info = FUNCTION_VALUE_TO_JITINFO(args.calleev());
8595 0 : MOZ_ASSERT(info->type() == JSJitInfo::Getter);
8596 0 : JSJitGetterOp getter = info->getter;
8597 0 : bool ok = getter(cx, obj, self, JSJitGetterCallArgs(args));
8598 : #ifdef DEBUG
8599 0 : if (ok) {
8600 0 : AssertReturnTypeMatchesJitinfo(info, args.rval());
8601 : }
8602 : #endif
8603 0 : return ok;
8604 : }
8605 :
8606 : static bool
8607 0 : genericLenientSetter(JSContext* cx, unsigned argc, JS::Value* vp)
8608 : {
8609 0 : JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
8610 0 : if (!args.thisv().isObject()) {
8611 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
8612 0 : if (!ReportLenientThisUnwrappingFailure(cx, &args.callee())) {
8613 0 : return false;
8614 : }
8615 0 : args.rval().set(JS::UndefinedValue());
8616 0 : return true;
8617 : }
8618 0 : JS::Rooted<JSObject*> obj(cx, &args.thisv().toObject());
8619 :
8620 : nsXULElement* self;
8621 0 : JS::Rooted<JS::Value> rootSelf(cx, JS::ObjectValue(*obj));
8622 : {
8623 0 : nsresult rv = UnwrapObject<prototypes::id::XULElement, nsXULElement>(&rootSelf, self);
8624 0 : if (NS_FAILED(rv)) {
8625 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
8626 0 : if (!ReportLenientThisUnwrappingFailure(cx, &args.callee())) {
8627 0 : return false;
8628 : }
8629 0 : args.rval().set(JS::UndefinedValue());
8630 0 : return true;
8631 : }
8632 : }
8633 0 : if (args.length() == 0) {
8634 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "XULElement attribute setter");
8635 : }
8636 0 : const JSJitInfo *info = FUNCTION_VALUE_TO_JITINFO(args.calleev());
8637 0 : MOZ_ASSERT(info->type() == JSJitInfo::Setter);
8638 0 : JSJitSetterOp setter = info->setter;
8639 0 : if (!setter(cx, obj, self, JSJitSetterCallArgs(args))) {
8640 0 : return false;
8641 : }
8642 0 : args.rval().setUndefined();
8643 : #ifdef DEBUG
8644 0 : AssertReturnTypeMatchesJitinfo(info, args.rval());
8645 : #endif
8646 0 : return true;
8647 : }
8648 :
8649 : static bool
8650 161 : _addProperty(JSContext* cx, JS::Handle<JSObject*> obj, JS::Handle<jsid> id, JS::Handle<JS::Value> val)
8651 : {
8652 161 : nsXULElement* self = UnwrapPossiblyNotInitializedDOMObject<nsXULElement>(obj);
8653 : // We don't want to preserve if we don't have a wrapper, and we
8654 : // obviously can't preserve if we're not initialized.
8655 161 : if (self && self->GetWrapperPreserveColor()) {
8656 161 : PreserveWrapper(self);
8657 : }
8658 161 : return true;
8659 : }
8660 :
8661 : static void
8662 0 : _finalize(js::FreeOp* fop, JSObject* obj)
8663 : {
8664 0 : nsXULElement* self = UnwrapPossiblyNotInitializedDOMObject<nsXULElement>(obj);
8665 0 : if (self) {
8666 0 : ClearWrapper(self, self, obj);
8667 0 : AddForDeferredFinalization<nsXULElement>(self);
8668 : }
8669 0 : }
8670 :
8671 : static void
8672 0 : _objectMoved(JSObject* obj, const JSObject* old)
8673 : {
8674 0 : nsXULElement* self = UnwrapPossiblyNotInitializedDOMObject<nsXULElement>(obj);
8675 0 : if (self) {
8676 0 : UpdateWrapper(self, self, obj, old);
8677 : }
8678 0 : }
8679 :
8680 : // We deliberately use brace-elision to make Visual Studio produce better initalization code.
8681 : #if defined(__clang__)
8682 : #pragma clang diagnostic push
8683 : #pragma clang diagnostic ignored "-Wmissing-braces"
8684 : #endif
8685 : static const JSFunctionSpec sMethods_specs[] = {
8686 : JS_FNSPEC("focus", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&focus_methodinfo), 0, JSPROP_ENUMERATE, nullptr),
8687 : JS_FNSPEC("blur", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&blur_methodinfo), 0, JSPROP_ENUMERATE, nullptr),
8688 : JS_FNSPEC("click", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&click_methodinfo), 0, JSPROP_ENUMERATE, nullptr),
8689 : JS_FNSPEC("doCommand", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&doCommand_methodinfo), 0, JSPROP_ENUMERATE, nullptr),
8690 : JS_FNSPEC("getElementsByAttribute", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&getElementsByAttribute_methodinfo), 2, JSPROP_ENUMERATE, nullptr),
8691 : JS_FNSPEC("getElementsByAttributeNS", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&getElementsByAttributeNS_methodinfo), 3, JSPROP_ENUMERATE, nullptr),
8692 : JS_FS_END
8693 : };
8694 : #if defined(__clang__)
8695 : #pragma clang diagnostic pop
8696 : #endif
8697 :
8698 :
8699 : // Can't be const because the pref-enabled boolean needs to be writable
8700 : static Prefable<const JSFunctionSpec> sMethods[] = {
8701 : { nullptr, &sMethods_specs[0] },
8702 : { nullptr, nullptr }
8703 : };
8704 :
8705 : static_assert(1 <= 1ull << NUM_BITS_PROPERTY_INFO_PREF_INDEX,
8706 : "We have a prefable index that is >= (1 << NUM_BITS_PROPERTY_INFO_PREF_INDEX)");
8707 : static_assert(6 <= 1ull << NUM_BITS_PROPERTY_INFO_SPEC_INDEX,
8708 : "We have a spec index that is >= (1 << NUM_BITS_PROPERTY_INFO_SPEC_INDEX)");
8709 :
8710 : // We deliberately use brace-elision to make Visual Studio produce better initalization code.
8711 : #if defined(__clang__)
8712 : #pragma clang diagnostic push
8713 : #pragma clang diagnostic ignored "-Wmissing-braces"
8714 : #endif
8715 : static const JSFunctionSpec sChromeMethods_specs[] = {
8716 : JS_FNSPEC("setIsPrerendered", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&setIsPrerendered_methodinfo), 0, JSPROP_ENUMERATE, nullptr),
8717 : JS_FNSPEC("presetOpenerWindow", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&presetOpenerWindow_methodinfo), 1, JSPROP_ENUMERATE, nullptr),
8718 : JS_FNSPEC("swapFrameLoaders", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&swapFrameLoaders_methodinfo), 1, JSPROP_ENUMERATE, nullptr),
8719 : JS_FS_END
8720 : };
8721 : #if defined(__clang__)
8722 : #pragma clang diagnostic pop
8723 : #endif
8724 :
8725 :
8726 : // Can't be const because the pref-enabled boolean needs to be writable
8727 : static Prefable<const JSFunctionSpec> sChromeMethods[] = {
8728 : { nullptr, &sChromeMethods_specs[0] },
8729 : { nullptr, nullptr }
8730 : };
8731 :
8732 : static_assert(1 <= 1ull << NUM_BITS_PROPERTY_INFO_PREF_INDEX,
8733 : "We have a prefable index that is >= (1 << NUM_BITS_PROPERTY_INFO_PREF_INDEX)");
8734 : static_assert(3 <= 1ull << NUM_BITS_PROPERTY_INFO_SPEC_INDEX,
8735 : "We have a spec index that is >= (1 << NUM_BITS_PROPERTY_INFO_SPEC_INDEX)");
8736 :
8737 : // We deliberately use brace-elision to make Visual Studio produce better initalization code.
8738 : #if defined(__clang__)
8739 : #pragma clang diagnostic push
8740 : #pragma clang diagnostic ignored "-Wmissing-braces"
8741 : #endif
8742 : static const JSPropertySpec sAttributes_specs[] = {
8743 : { "align", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &align_getterinfo, GenericBindingSetter, &align_setterinfo },
8744 : { "dir", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &dir_getterinfo, GenericBindingSetter, &dir_setterinfo },
8745 : { "flex", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &flex_getterinfo, GenericBindingSetter, &flex_setterinfo },
8746 : { "flexGroup", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &flexGroup_getterinfo, GenericBindingSetter, &flexGroup_setterinfo },
8747 : { "ordinal", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &ordinal_getterinfo, GenericBindingSetter, &ordinal_setterinfo },
8748 : { "orient", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &orient_getterinfo, GenericBindingSetter, &orient_setterinfo },
8749 : { "pack", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &pack_getterinfo, GenericBindingSetter, &pack_setterinfo },
8750 : { "hidden", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &hidden_getterinfo, GenericBindingSetter, &hidden_setterinfo },
8751 : { "collapsed", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &collapsed_getterinfo, GenericBindingSetter, &collapsed_setterinfo },
8752 : { "observes", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &observes_getterinfo, GenericBindingSetter, &observes_setterinfo },
8753 : { "menu", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &menu_getterinfo, GenericBindingSetter, &menu_setterinfo },
8754 : { "contextMenu", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &contextMenu_getterinfo, GenericBindingSetter, &contextMenu_setterinfo },
8755 : { "tooltip", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &tooltip_getterinfo, GenericBindingSetter, &tooltip_setterinfo },
8756 : { "width", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &width_getterinfo, GenericBindingSetter, &width_setterinfo },
8757 : { "height", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &height_getterinfo, GenericBindingSetter, &height_setterinfo },
8758 : { "minWidth", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &minWidth_getterinfo, GenericBindingSetter, &minWidth_setterinfo },
8759 : { "minHeight", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &minHeight_getterinfo, GenericBindingSetter, &minHeight_setterinfo },
8760 : { "maxWidth", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &maxWidth_getterinfo, GenericBindingSetter, &maxWidth_setterinfo },
8761 : { "maxHeight", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &maxHeight_getterinfo, GenericBindingSetter, &maxHeight_setterinfo },
8762 : { "persist", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &persist_getterinfo, GenericBindingSetter, &persist_setterinfo },
8763 : { "left", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &left_getterinfo, GenericBindingSetter, &left_setterinfo },
8764 : { "top", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &top_getterinfo, GenericBindingSetter, &top_setterinfo },
8765 : { "datasources", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &datasources_getterinfo, GenericBindingSetter, &datasources_setterinfo },
8766 : { "ref", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &ref_getterinfo, GenericBindingSetter, &ref_setterinfo },
8767 : { "tooltipText", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &tooltipText_getterinfo, GenericBindingSetter, &tooltipText_setterinfo },
8768 : { "statusText", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &statusText_getterinfo, GenericBindingSetter, &statusText_setterinfo },
8769 : { "allowEvents", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &allowEvents_getterinfo, GenericBindingSetter, &allowEvents_setterinfo },
8770 : { "database", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &database_getterinfo, nullptr, nullptr },
8771 : { "builder", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &builder_getterinfo, nullptr, nullptr },
8772 : { "resource", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &resource_getterinfo, nullptr, nullptr },
8773 : { "boxObject", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &boxObject_getterinfo, nullptr, nullptr },
8774 : { "style", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &style_getterinfo, nullptr, nullptr },
8775 : { "onabort", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onabort_getterinfo, GenericBindingSetter, &onabort_setterinfo },
8776 : { "onblur", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onblur_getterinfo, GenericBindingSetter, &onblur_setterinfo },
8777 : { "onfocus", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onfocus_getterinfo, GenericBindingSetter, &onfocus_setterinfo },
8778 : { "onauxclick", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onauxclick_getterinfo, GenericBindingSetter, &onauxclick_setterinfo },
8779 : { "oncanplay", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &oncanplay_getterinfo, GenericBindingSetter, &oncanplay_setterinfo },
8780 : { "oncanplaythrough", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &oncanplaythrough_getterinfo, GenericBindingSetter, &oncanplaythrough_setterinfo },
8781 : { "onchange", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onchange_getterinfo, GenericBindingSetter, &onchange_setterinfo },
8782 : { "onclick", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onclick_getterinfo, GenericBindingSetter, &onclick_setterinfo },
8783 : { "onclose", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onclose_getterinfo, GenericBindingSetter, &onclose_setterinfo },
8784 : { "oncontextmenu", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &oncontextmenu_getterinfo, GenericBindingSetter, &oncontextmenu_setterinfo },
8785 : { "ondblclick", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &ondblclick_getterinfo, GenericBindingSetter, &ondblclick_setterinfo },
8786 : { "ondrag", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &ondrag_getterinfo, GenericBindingSetter, &ondrag_setterinfo },
8787 : { "ondragend", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &ondragend_getterinfo, GenericBindingSetter, &ondragend_setterinfo },
8788 : { "ondragenter", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &ondragenter_getterinfo, GenericBindingSetter, &ondragenter_setterinfo },
8789 : { "ondragexit", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &ondragexit_getterinfo, GenericBindingSetter, &ondragexit_setterinfo },
8790 : { "ondragleave", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &ondragleave_getterinfo, GenericBindingSetter, &ondragleave_setterinfo },
8791 : { "ondragover", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &ondragover_getterinfo, GenericBindingSetter, &ondragover_setterinfo },
8792 : { "ondragstart", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &ondragstart_getterinfo, GenericBindingSetter, &ondragstart_setterinfo },
8793 : { "ondrop", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &ondrop_getterinfo, GenericBindingSetter, &ondrop_setterinfo },
8794 : { "ondurationchange", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &ondurationchange_getterinfo, GenericBindingSetter, &ondurationchange_setterinfo },
8795 : { "onemptied", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onemptied_getterinfo, GenericBindingSetter, &onemptied_setterinfo },
8796 : { "onended", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onended_getterinfo, GenericBindingSetter, &onended_setterinfo },
8797 : { "oninput", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &oninput_getterinfo, GenericBindingSetter, &oninput_setterinfo },
8798 : { "oninvalid", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &oninvalid_getterinfo, GenericBindingSetter, &oninvalid_setterinfo },
8799 : { "onkeydown", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onkeydown_getterinfo, GenericBindingSetter, &onkeydown_setterinfo },
8800 : { "onkeypress", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onkeypress_getterinfo, GenericBindingSetter, &onkeypress_setterinfo },
8801 : { "onkeyup", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onkeyup_getterinfo, GenericBindingSetter, &onkeyup_setterinfo },
8802 : { "onload", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onload_getterinfo, GenericBindingSetter, &onload_setterinfo },
8803 : { "onloadeddata", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onloadeddata_getterinfo, GenericBindingSetter, &onloadeddata_setterinfo },
8804 : { "onloadedmetadata", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onloadedmetadata_getterinfo, GenericBindingSetter, &onloadedmetadata_setterinfo },
8805 : { "onloadend", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onloadend_getterinfo, GenericBindingSetter, &onloadend_setterinfo },
8806 : { "onloadstart", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onloadstart_getterinfo, GenericBindingSetter, &onloadstart_setterinfo },
8807 : { "onmousedown", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onmousedown_getterinfo, GenericBindingSetter, &onmousedown_setterinfo },
8808 : { "onmouseenter", JSPROP_SHARED | JSPROP_ENUMERATE, genericLenientGetter, &onmouseenter_getterinfo, genericLenientSetter, &onmouseenter_setterinfo },
8809 : { "onmouseleave", JSPROP_SHARED | JSPROP_ENUMERATE, genericLenientGetter, &onmouseleave_getterinfo, genericLenientSetter, &onmouseleave_setterinfo },
8810 : { "onmousemove", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onmousemove_getterinfo, GenericBindingSetter, &onmousemove_setterinfo },
8811 : { "onmouseout", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onmouseout_getterinfo, GenericBindingSetter, &onmouseout_setterinfo },
8812 : { "onmouseover", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onmouseover_getterinfo, GenericBindingSetter, &onmouseover_setterinfo },
8813 : { "onmouseup", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onmouseup_getterinfo, GenericBindingSetter, &onmouseup_setterinfo },
8814 : { "onwheel", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onwheel_getterinfo, GenericBindingSetter, &onwheel_setterinfo },
8815 : { "onpause", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onpause_getterinfo, GenericBindingSetter, &onpause_setterinfo },
8816 : { "onplay", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onplay_getterinfo, GenericBindingSetter, &onplay_setterinfo },
8817 : { "onplaying", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onplaying_getterinfo, GenericBindingSetter, &onplaying_setterinfo },
8818 : { "onprogress", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onprogress_getterinfo, GenericBindingSetter, &onprogress_setterinfo },
8819 : { "onratechange", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onratechange_getterinfo, GenericBindingSetter, &onratechange_setterinfo },
8820 : { "onreset", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onreset_getterinfo, GenericBindingSetter, &onreset_setterinfo },
8821 : { "onresize", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onresize_getterinfo, GenericBindingSetter, &onresize_setterinfo },
8822 : { "onscroll", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onscroll_getterinfo, GenericBindingSetter, &onscroll_setterinfo },
8823 : { "onseeked", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onseeked_getterinfo, GenericBindingSetter, &onseeked_setterinfo },
8824 : { "onseeking", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onseeking_getterinfo, GenericBindingSetter, &onseeking_setterinfo },
8825 : { "onselect", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onselect_getterinfo, GenericBindingSetter, &onselect_setterinfo },
8826 : { "onshow", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onshow_getterinfo, GenericBindingSetter, &onshow_setterinfo },
8827 : { "onstalled", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onstalled_getterinfo, GenericBindingSetter, &onstalled_setterinfo },
8828 : { "onsubmit", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onsubmit_getterinfo, GenericBindingSetter, &onsubmit_setterinfo },
8829 : { "onsuspend", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onsuspend_getterinfo, GenericBindingSetter, &onsuspend_setterinfo },
8830 : { "ontimeupdate", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &ontimeupdate_getterinfo, GenericBindingSetter, &ontimeupdate_setterinfo },
8831 : { "onvolumechange", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onvolumechange_getterinfo, GenericBindingSetter, &onvolumechange_setterinfo },
8832 : { "onwaiting", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onwaiting_getterinfo, GenericBindingSetter, &onwaiting_setterinfo },
8833 : { nullptr, 0, nullptr, nullptr, nullptr, nullptr },
8834 : { "onselectstart", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onselectstart_getterinfo, GenericBindingSetter, &onselectstart_setterinfo },
8835 : { nullptr, 0, nullptr, nullptr, nullptr, nullptr },
8836 : { "ontoggle", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &ontoggle_getterinfo, GenericBindingSetter, &ontoggle_setterinfo },
8837 : { nullptr, 0, nullptr, nullptr, nullptr, nullptr },
8838 : { "onpointercancel", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onpointercancel_getterinfo, GenericBindingSetter, &onpointercancel_setterinfo },
8839 : { "onpointerdown", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onpointerdown_getterinfo, GenericBindingSetter, &onpointerdown_setterinfo },
8840 : { "onpointerup", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onpointerup_getterinfo, GenericBindingSetter, &onpointerup_setterinfo },
8841 : { "onpointermove", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onpointermove_getterinfo, GenericBindingSetter, &onpointermove_setterinfo },
8842 : { "onpointerout", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onpointerout_getterinfo, GenericBindingSetter, &onpointerout_setterinfo },
8843 : { "onpointerover", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onpointerover_getterinfo, GenericBindingSetter, &onpointerover_setterinfo },
8844 : { "onpointerenter", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onpointerenter_getterinfo, GenericBindingSetter, &onpointerenter_setterinfo },
8845 : { "onpointerleave", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onpointerleave_getterinfo, GenericBindingSetter, &onpointerleave_setterinfo },
8846 : { "ongotpointercapture", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &ongotpointercapture_getterinfo, GenericBindingSetter, &ongotpointercapture_setterinfo },
8847 : { "onlostpointercapture", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onlostpointercapture_getterinfo, GenericBindingSetter, &onlostpointercapture_setterinfo },
8848 : { nullptr, 0, nullptr, nullptr, nullptr, nullptr },
8849 : { "onmozfullscreenchange", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onmozfullscreenchange_getterinfo, GenericBindingSetter, &onmozfullscreenchange_setterinfo },
8850 : { "onmozfullscreenerror", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onmozfullscreenerror_getterinfo, GenericBindingSetter, &onmozfullscreenerror_setterinfo },
8851 : { "onanimationcancel", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onanimationcancel_getterinfo, GenericBindingSetter, &onanimationcancel_setterinfo },
8852 : { "onanimationend", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onanimationend_getterinfo, GenericBindingSetter, &onanimationend_setterinfo },
8853 : { "onanimationiteration", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onanimationiteration_getterinfo, GenericBindingSetter, &onanimationiteration_setterinfo },
8854 : { "onanimationstart", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onanimationstart_getterinfo, GenericBindingSetter, &onanimationstart_setterinfo },
8855 : { "ontransitioncancel", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &ontransitioncancel_getterinfo, GenericBindingSetter, &ontransitioncancel_setterinfo },
8856 : { "ontransitionend", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &ontransitionend_getterinfo, GenericBindingSetter, &ontransitionend_setterinfo },
8857 : { "ontransitionrun", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &ontransitionrun_getterinfo, GenericBindingSetter, &ontransitionrun_setterinfo },
8858 : { "ontransitionstart", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &ontransitionstart_getterinfo, GenericBindingSetter, &ontransitionstart_setterinfo },
8859 : { "onwebkitanimationend", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onwebkitanimationend_getterinfo, GenericBindingSetter, &onwebkitanimationend_setterinfo },
8860 : { "onwebkitanimationiteration", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onwebkitanimationiteration_getterinfo, GenericBindingSetter, &onwebkitanimationiteration_setterinfo },
8861 : { "onwebkitanimationstart", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onwebkitanimationstart_getterinfo, GenericBindingSetter, &onwebkitanimationstart_setterinfo },
8862 : { "onwebkittransitionend", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onwebkittransitionend_getterinfo, GenericBindingSetter, &onwebkittransitionend_setterinfo },
8863 : { "onerror", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onerror_getterinfo, GenericBindingSetter, &onerror_setterinfo },
8864 : { nullptr, 0, nullptr, nullptr, nullptr, nullptr },
8865 : { "ontouchstart", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &ontouchstart_getterinfo, GenericBindingSetter, &ontouchstart_setterinfo },
8866 : { "ontouchend", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &ontouchend_getterinfo, GenericBindingSetter, &ontouchend_setterinfo },
8867 : { "ontouchmove", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &ontouchmove_getterinfo, GenericBindingSetter, &ontouchmove_setterinfo },
8868 : { "ontouchcancel", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &ontouchcancel_getterinfo, GenericBindingSetter, &ontouchcancel_setterinfo },
8869 : { nullptr, 0, nullptr, nullptr, nullptr, nullptr }
8870 : };
8871 : #if defined(__clang__)
8872 : #pragma clang diagnostic pop
8873 : #endif
8874 :
8875 : static PrefableDisablers sAttributes_disablers91 = {
8876 : true, false, 0, nullptr
8877 : };
8878 :
8879 : static PrefableDisablers sAttributes_disablers95 = {
8880 : true, false, 0, nullptr
8881 : };
8882 :
8883 : static PrefableDisablers sAttributes_disablers122 = {
8884 : true, false, 0, &nsGenericHTMLElement::TouchEventsEnabled
8885 : };
8886 :
8887 : // Can't be const because the pref-enabled boolean needs to be writable
8888 : static Prefable<const JSPropertySpec> sAttributes[] = {
8889 : { nullptr, &sAttributes_specs[0] },
8890 : { &sAttributes_disablers91, &sAttributes_specs[91] },
8891 : { nullptr, &sAttributes_specs[93] },
8892 : { &sAttributes_disablers95, &sAttributes_specs[95] },
8893 : { nullptr, &sAttributes_specs[106] },
8894 : { &sAttributes_disablers122, &sAttributes_specs[122] },
8895 : { nullptr, nullptr }
8896 : };
8897 :
8898 : static_assert(6 <= 1ull << NUM_BITS_PROPERTY_INFO_PREF_INDEX,
8899 : "We have a prefable index that is >= (1 << NUM_BITS_PROPERTY_INFO_PREF_INDEX)");
8900 : static_assert(90 <= 1ull << NUM_BITS_PROPERTY_INFO_SPEC_INDEX,
8901 : "We have a spec index that is >= (1 << NUM_BITS_PROPERTY_INFO_SPEC_INDEX)");
8902 :
8903 : // We deliberately use brace-elision to make Visual Studio produce better initalization code.
8904 : #if defined(__clang__)
8905 : #pragma clang diagnostic push
8906 : #pragma clang diagnostic ignored "-Wmissing-braces"
8907 : #endif
8908 : static const JSPropertySpec sChromeAttributes_specs[] = {
8909 : { "controllers", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &controllers_getterinfo, nullptr, nullptr },
8910 : { "frameLoader", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &frameLoader_getterinfo, nullptr, nullptr },
8911 : { nullptr, 0, nullptr, nullptr, nullptr, nullptr }
8912 : };
8913 : #if defined(__clang__)
8914 : #pragma clang diagnostic pop
8915 : #endif
8916 :
8917 :
8918 : // Can't be const because the pref-enabled boolean needs to be writable
8919 : static Prefable<const JSPropertySpec> sChromeAttributes[] = {
8920 : { nullptr, &sChromeAttributes_specs[0] },
8921 : { nullptr, nullptr }
8922 : };
8923 :
8924 : static_assert(1 <= 1ull << NUM_BITS_PROPERTY_INFO_PREF_INDEX,
8925 : "We have a prefable index that is >= (1 << NUM_BITS_PROPERTY_INFO_PREF_INDEX)");
8926 : static_assert(2 <= 1ull << NUM_BITS_PROPERTY_INFO_SPEC_INDEX,
8927 : "We have a spec index that is >= (1 << NUM_BITS_PROPERTY_INFO_SPEC_INDEX)");
8928 :
8929 :
8930 : static uint16_t sNativeProperties_sortedPropertyIndices[127];
8931 : static PropertyInfo sNativeProperties_propertyInfos[127];
8932 :
8933 : static const NativePropertiesN<2> sNativeProperties = {
8934 : false, 0,
8935 : false, 0,
8936 : true, 0 /* sMethods */,
8937 : true, 1 /* sAttributes */,
8938 : false, 0,
8939 : false, 0,
8940 : false, 0,
8941 : -1,
8942 : 127,
8943 : sNativeProperties_sortedPropertyIndices,
8944 : {
8945 : { sMethods, &sNativeProperties_propertyInfos[0] },
8946 : { sAttributes, &sNativeProperties_propertyInfos[6] }
8947 : }
8948 : };
8949 : static_assert(127 < 1ull << CHAR_BIT * sizeof(sNativeProperties.propertyInfoCount),
8950 : "We have a property info count that is oversized");
8951 :
8952 : static uint16_t sChromeOnlyNativeProperties_sortedPropertyIndices[5];
8953 : static PropertyInfo sChromeOnlyNativeProperties_propertyInfos[5];
8954 :
8955 : static const NativePropertiesN<2> sChromeOnlyNativeProperties = {
8956 : false, 0,
8957 : false, 0,
8958 : true, 0 /* sChromeMethods */,
8959 : true, 1 /* sChromeAttributes */,
8960 : false, 0,
8961 : false, 0,
8962 : false, 0,
8963 : -1,
8964 : 5,
8965 : sChromeOnlyNativeProperties_sortedPropertyIndices,
8966 : {
8967 : { sChromeMethods, &sChromeOnlyNativeProperties_propertyInfos[0] },
8968 : { sChromeAttributes, &sChromeOnlyNativeProperties_propertyInfos[3] }
8969 : }
8970 : };
8971 : static_assert(5 < 1ull << CHAR_BIT * sizeof(sChromeOnlyNativeProperties.propertyInfoCount),
8972 : "We have a property info count that is oversized");
8973 :
8974 : static const DOMIfaceAndProtoJSClass sInterfaceObjectClass = {
8975 : {
8976 : "Function",
8977 : JSCLASS_IS_DOMIFACEANDPROTOJSCLASS | JSCLASS_HAS_RESERVED_SLOTS(DOM_INTERFACE_SLOTS_BASE),
8978 : &sBoringInterfaceObjectClassClassOps,
8979 : JS_NULL_CLASS_SPEC,
8980 : JS_NULL_CLASS_EXT,
8981 : &sInterfaceObjectClassObjectOps
8982 : },
8983 : eInterface,
8984 : true,
8985 : prototypes::id::XULElement,
8986 : PrototypeTraits<prototypes::id::XULElement>::Depth,
8987 : sNativePropertyHooks,
8988 : "function XULElement() {\n [native code]\n}",
8989 : ElementBinding::GetConstructorObject
8990 : };
8991 :
8992 : static const DOMIfaceAndProtoJSClass sPrototypeClass = {
8993 : {
8994 : "XULElementPrototype",
8995 : JSCLASS_IS_DOMIFACEANDPROTOJSCLASS | JSCLASS_HAS_RESERVED_SLOTS(DOM_INTERFACE_PROTO_SLOTS_BASE),
8996 : JS_NULL_CLASS_OPS,
8997 : JS_NULL_CLASS_SPEC,
8998 : JS_NULL_CLASS_EXT,
8999 : JS_NULL_OBJECT_OPS
9000 : },
9001 : eInterfacePrototype,
9002 : false,
9003 : prototypes::id::XULElement,
9004 : PrototypeTraits<prototypes::id::XULElement>::Depth,
9005 : sNativePropertyHooks,
9006 : "[object XULElementPrototype]",
9007 : ElementBinding::GetProtoObject
9008 : };
9009 :
9010 : bool
9011 523 : ConstructorEnabled(JSContext* aCx, JS::Handle<JSObject*> aObj)
9012 : {
9013 523 : return IsChromeOrXBL(aCx, aObj);
9014 : }
9015 :
9016 : JSObject*
9017 0 : DefineDOMInterface(JSContext* aCx, JS::Handle<JSObject*> aGlobal, JS::Handle<jsid> id, bool aDefineOnGlobal)
9018 : {
9019 0 : return GetConstructorObjectHandle(aCx, aDefineOnGlobal);
9020 : }
9021 :
9022 : static const js::ClassOps sClassOps = {
9023 : _addProperty, /* addProperty */
9024 : nullptr, /* delProperty */
9025 : nullptr, /* getProperty */
9026 : nullptr, /* setProperty */
9027 : nullptr, /* enumerate */
9028 : nullptr, /* newEnumerate */
9029 : nullptr, /* resolve */
9030 : nullptr, /* mayResolve */
9031 : _finalize, /* finalize */
9032 : nullptr, /* call */
9033 : nullptr, /* hasInstance */
9034 : nullptr, /* construct */
9035 : nullptr, /* trace */
9036 : };
9037 :
9038 : static const js::ClassExtension sClassExtension = {
9039 : nullptr, /* weakmapKeyDelegateOp */
9040 : _objectMoved /* objectMovedOp */
9041 : };
9042 :
9043 : static const DOMJSClass sClass = {
9044 : { "XULElement",
9045 : JSCLASS_IS_DOMJSCLASS | JSCLASS_FOREGROUND_FINALIZE | JSCLASS_HAS_RESERVED_SLOTS(1),
9046 : &sClassOps,
9047 : JS_NULL_CLASS_SPEC,
9048 : &sClassExtension,
9049 : JS_NULL_OBJECT_OPS
9050 : },
9051 : { prototypes::id::EventTarget, prototypes::id::Node, prototypes::id::Element, prototypes::id::XULElement, prototypes::id::_ID_Count, prototypes::id::_ID_Count, prototypes::id::_ID_Count, prototypes::id::_ID_Count },
9052 : IsBaseOf<nsISupports, nsXULElement >::value,
9053 : sNativePropertyHooks,
9054 : FindAssociatedGlobalForNative<nsXULElement>::Get,
9055 : GetProtoObjectHandle,
9056 : GetCCParticipant<nsXULElement>::Get()
9057 : };
9058 : static_assert(1 == DOM_INSTANCE_RESERVED_SLOTS,
9059 : "Must have the right minimal number of reserved slots.");
9060 : static_assert(1 >= 1,
9061 : "Must have enough reserved slots.");
9062 :
9063 : const JSClass*
9064 0 : GetJSClass()
9065 : {
9066 0 : return sClass.ToJSClass();
9067 : }
9068 :
9069 : bool
9070 384 : Wrap(JSContext* aCx, nsXULElement* aObject, nsWrapperCache* aCache, JS::Handle<JSObject*> aGivenProto, JS::MutableHandle<JSObject*> aReflector)
9071 : {
9072 : MOZ_ASSERT(static_cast<nsXULElement*>(aObject) ==
9073 : reinterpret_cast<nsXULElement*>(aObject),
9074 : "Multiple inheritance for nsXULElement is broken.");
9075 : MOZ_ASSERT(static_cast<mozilla::dom::Element*>(aObject) ==
9076 : reinterpret_cast<mozilla::dom::Element*>(aObject),
9077 : "Multiple inheritance for mozilla::dom::Element is broken.");
9078 : MOZ_ASSERT(static_cast<nsINode*>(aObject) ==
9079 : reinterpret_cast<nsINode*>(aObject),
9080 : "Multiple inheritance for nsINode is broken.");
9081 : MOZ_ASSERT(static_cast<mozilla::dom::EventTarget*>(aObject) ==
9082 : reinterpret_cast<mozilla::dom::EventTarget*>(aObject),
9083 : "Multiple inheritance for mozilla::dom::EventTarget is broken.");
9084 384 : MOZ_ASSERT(ToSupportsIsCorrect(aObject));
9085 384 : MOZ_ASSERT_IF(aGivenProto, js::IsObjectInContextCompartment(aGivenProto, aCx));
9086 384 : MOZ_ASSERT(!aCache->GetWrapper(),
9087 : "You should probably not be using Wrap() directly; use "
9088 : "GetOrCreateDOMReflector instead");
9089 :
9090 384 : MOZ_ASSERT(ToSupportsIsOnPrimaryInheritanceChain(aObject, aCache),
9091 : "nsISupports must be on our primary inheritance chain");
9092 :
9093 768 : JS::Rooted<JSObject*> global(aCx, FindAssociatedGlobal(aCx, aObject->GetParentObject()));
9094 384 : if (!global) {
9095 0 : return false;
9096 : }
9097 384 : MOZ_ASSERT(JS_IsGlobalObject(global));
9098 384 : MOZ_ASSERT(JS::ObjectIsNotGray(global));
9099 :
9100 : // That might have ended up wrapping us already, due to the wonders
9101 : // of XBL. Check for that, and bail out as needed.
9102 384 : aReflector.set(aCache->GetWrapper());
9103 384 : if (aReflector) {
9104 : #ifdef DEBUG
9105 0 : binding_detail::AssertReflectorHasGivenProto(aCx, aReflector, aGivenProto);
9106 : #endif // DEBUG
9107 0 : return true;
9108 : }
9109 :
9110 768 : JSAutoCompartment ac(aCx, global);
9111 384 : JS::Handle<JSObject*> canonicalProto = GetProtoObjectHandle(aCx);
9112 384 : if (!canonicalProto) {
9113 0 : return false;
9114 : }
9115 768 : JS::Rooted<JSObject*> proto(aCx);
9116 384 : if (aGivenProto) {
9117 0 : proto = aGivenProto;
9118 : // Unfortunately, while aGivenProto was in the compartment of aCx
9119 : // coming in, we changed compartments to that of "parent" so may need
9120 : // to wrap the proto here.
9121 0 : if (js::GetContextCompartment(aCx) != js::GetObjectCompartment(proto)) {
9122 0 : if (!JS_WrapObject(aCx, &proto)) {
9123 0 : return false;
9124 : }
9125 : }
9126 : } else {
9127 384 : proto = canonicalProto;
9128 : }
9129 :
9130 768 : BindingJSObjectCreator<nsXULElement> creator(aCx);
9131 384 : creator.CreateObject(aCx, sClass.ToJSClass(), proto, aObject, aReflector);
9132 384 : if (!aReflector) {
9133 0 : return false;
9134 : }
9135 :
9136 384 : aCache->SetWrapper(aReflector);
9137 384 : creator.InitializationSucceeded();
9138 :
9139 384 : MOZ_ASSERT(aCache->GetWrapperPreserveColor() &&
9140 : aCache->GetWrapperPreserveColor() == aReflector);
9141 : // If proto != canonicalProto, we have to preserve our wrapper;
9142 : // otherwise we won't be able to properly recreate it later, since
9143 : // we won't know what proto to use. Note that we don't check
9144 : // aGivenProto here, since it's entirely possible (and even
9145 : // somewhat common) to have a non-null aGivenProto which is the
9146 : // same as canonicalProto.
9147 384 : if (proto != canonicalProto) {
9148 0 : PreserveWrapper(aObject);
9149 : }
9150 :
9151 384 : return true;
9152 : }
9153 :
9154 : const NativePropertyHooks sNativePropertyHooks[] = { {
9155 : nullptr,
9156 : nullptr,
9157 : nullptr,
9158 : { sNativeProperties.Upcast(), sChromeOnlyNativeProperties.Upcast() },
9159 : prototypes::id::XULElement,
9160 : constructors::id::XULElement,
9161 : ElementBinding::sNativePropertyHooks,
9162 : &DefaultXrayExpandoObjectClass
9163 : } };
9164 :
9165 : void
9166 1 : CreateInterfaceObjects(JSContext* aCx, JS::Handle<JSObject*> aGlobal, ProtoAndIfaceCache& aProtoAndIfaceCache, bool aDefineOnGlobal)
9167 : {
9168 1 : JS::Handle<JSObject*> parentProto(ElementBinding::GetProtoObjectHandle(aCx));
9169 1 : if (!parentProto) {
9170 0 : return;
9171 : }
9172 :
9173 1 : JS::Handle<JSObject*> constructorProto(ElementBinding::GetConstructorObjectHandle(aCx));
9174 1 : if (!constructorProto) {
9175 0 : return;
9176 : }
9177 :
9178 : static bool sIdsInited = false;
9179 1 : if (!sIdsInited && NS_IsMainThread()) {
9180 1 : if (!InitIds(aCx, sNativeProperties.Upcast())) {
9181 0 : return;
9182 : }
9183 1 : if (!InitIds(aCx, sChromeOnlyNativeProperties.Upcast())) {
9184 0 : return;
9185 : }
9186 1 : sIdsInited = true;
9187 : }
9188 :
9189 : static bool sPrefCachesInited = false;
9190 1 : if (!sPrefCachesInited && NS_IsMainThread()) {
9191 1 : sPrefCachesInited = true;
9192 1 : Preferences::AddBoolVarCache(&sAttributes[1].disablers->enabled, "dom.select_events.enabled");
9193 1 : Preferences::AddBoolVarCache(&sAttributes[3].disablers->enabled, "dom.w3c_pointer_events.enabled");
9194 : }
9195 :
9196 1 : JS::Heap<JSObject*>* protoCache = &aProtoAndIfaceCache.EntrySlotOrCreate(prototypes::id::XULElement);
9197 1 : JS::Heap<JSObject*>* interfaceCache = &aProtoAndIfaceCache.EntrySlotOrCreate(constructors::id::XULElement);
9198 2 : dom::CreateInterfaceObjects(aCx, aGlobal, parentProto,
9199 : &sPrototypeClass.mBase, protoCache,
9200 : constructorProto, &sInterfaceObjectClass.mBase, 0, nullptr,
9201 : interfaceCache,
9202 : sNativeProperties.Upcast(),
9203 1 : nsContentUtils::ThreadsafeIsSystemCaller(aCx) ? sChromeOnlyNativeProperties.Upcast() : nullptr,
9204 : "XULElement", aDefineOnGlobal,
9205 : nullptr,
9206 1 : false);
9207 : }
9208 :
9209 : JS::Handle<JSObject*>
9210 384 : GetProtoObjectHandle(JSContext* aCx)
9211 : {
9212 : /* Get the interface prototype object for this class. This will create the
9213 : object as needed. */
9214 384 : bool aDefineOnGlobal = true;
9215 :
9216 : /* Make sure our global is sane. Hopefully we can remove this sometime */
9217 384 : JSObject* global = JS::CurrentGlobalOrNull(aCx);
9218 384 : if (!(js::GetObjectClass(global)->flags & JSCLASS_DOM_GLOBAL)) {
9219 0 : return nullptr;
9220 : }
9221 :
9222 : /* Check to see whether the interface objects are already installed */
9223 384 : ProtoAndIfaceCache& protoAndIfaceCache = *GetProtoAndIfaceCache(global);
9224 384 : if (!protoAndIfaceCache.HasEntryInSlot(prototypes::id::XULElement)) {
9225 2 : JS::Rooted<JSObject*> rootedGlobal(aCx, global);
9226 1 : CreateInterfaceObjects(aCx, rootedGlobal, protoAndIfaceCache, aDefineOnGlobal);
9227 : }
9228 :
9229 : /*
9230 : * The object might _still_ be null, but that's OK.
9231 : *
9232 : * Calling fromMarkedLocation() is safe because protoAndIfaceCache is
9233 : * traced by TraceProtoAndIfaceCache() and its contents are never
9234 : * changed after they have been set.
9235 : *
9236 : * Calling address() avoids the read read barrier that does gray
9237 : * unmarking, but it's not possible for the object to be gray here.
9238 : */
9239 :
9240 384 : const JS::Heap<JSObject*>& entrySlot = protoAndIfaceCache.EntrySlotMustExist(prototypes::id::XULElement);
9241 384 : MOZ_ASSERT(JS::ObjectIsNotGray(entrySlot));
9242 384 : return JS::Handle<JSObject*>::fromMarkedLocation(entrySlot.address());
9243 : }
9244 :
9245 : JS::Handle<JSObject*>
9246 523 : GetConstructorObjectHandle(JSContext* aCx, bool aDefineOnGlobal)
9247 : {
9248 : /* Get the interface object for this class. This will create the object as
9249 : needed. */
9250 :
9251 : /* Make sure our global is sane. Hopefully we can remove this sometime */
9252 523 : JSObject* global = JS::CurrentGlobalOrNull(aCx);
9253 523 : if (!(js::GetObjectClass(global)->flags & JSCLASS_DOM_GLOBAL)) {
9254 0 : return nullptr;
9255 : }
9256 :
9257 : /* Check to see whether the interface objects are already installed */
9258 523 : ProtoAndIfaceCache& protoAndIfaceCache = *GetProtoAndIfaceCache(global);
9259 523 : if (!protoAndIfaceCache.HasEntryInSlot(constructors::id::XULElement)) {
9260 0 : JS::Rooted<JSObject*> rootedGlobal(aCx, global);
9261 0 : CreateInterfaceObjects(aCx, rootedGlobal, protoAndIfaceCache, aDefineOnGlobal);
9262 : }
9263 :
9264 : /*
9265 : * The object might _still_ be null, but that's OK.
9266 : *
9267 : * Calling fromMarkedLocation() is safe because protoAndIfaceCache is
9268 : * traced by TraceProtoAndIfaceCache() and its contents are never
9269 : * changed after they have been set.
9270 : *
9271 : * Calling address() avoids the read read barrier that does gray
9272 : * unmarking, but it's not possible for the object to be gray here.
9273 : */
9274 :
9275 523 : const JS::Heap<JSObject*>& entrySlot = protoAndIfaceCache.EntrySlotMustExist(constructors::id::XULElement);
9276 523 : MOZ_ASSERT(JS::ObjectIsNotGray(entrySlot));
9277 523 : return JS::Handle<JSObject*>::fromMarkedLocation(entrySlot.address());
9278 : }
9279 :
9280 : JSObject*
9281 0 : GetConstructorObject(JSContext* aCx)
9282 : {
9283 0 : return GetConstructorObjectHandle(aCx);
9284 : }
9285 :
9286 : } // namespace XULElementBinding
9287 :
9288 :
9289 :
9290 : } // namespace dom
9291 : } // namespace mozilla
|