Coverage Report

Created: 2018-09-25 14:53

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