Coverage Report

Created: 2018-09-25 14:53

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