Coverage Report

Created: 2018-09-25 14:53

/work/obj-fuzz/dom/bindings/HTMLFrameSetElementBinding.cpp
Line
Count
Source (jump to first uncovered line)
1
/* THIS FILE IS AUTOGENERATED FROM HTMLFrameSetElement.webidl BY Codegen.py - DO NOT EDIT */
2
3
#include "EventHandlerBinding.h"
4
#include "HTMLElementBinding.h"
5
#include "HTMLFrameSetElementBinding.h"
6
#include "WrapperFactory.h"
7
#include "mozilla/OwningNonNull.h"
8
#include "mozilla/dom/BindingUtils.h"
9
#include "mozilla/dom/CustomElementRegistry.h"
10
#include "mozilla/dom/DOMJSClass.h"
11
#include "mozilla/dom/DocGroup.h"
12
#include "mozilla/dom/HTMLFrameSetElement.h"
13
#include "mozilla/dom/NonRefcountedDOMObject.h"
14
#include "mozilla/dom/Nullable.h"
15
#include "mozilla/dom/XrayExpandoClass.h"
16
17
namespace mozilla {
18
namespace dom {
19
20
namespace binding_detail {}; // Just to make sure it's known as a namespace
21
using namespace mozilla::dom::binding_detail;
22
23
24
namespace HTMLFrameSetElement_Binding {
25
26
static_assert(IsRefcounted<NativeType>::value == IsRefcounted<HTMLElement_Binding::NativeType>::value,
27
              "Can't inherit from an interface with a different ownership model.");
28
29
MOZ_CAN_RUN_SCRIPT static bool
30
get_cols(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::HTMLFrameSetElement* self, JSJitGetterCallArgs args)
31
0
{
32
0
  AUTO_PROFILER_LABEL_FAST("get HTMLFrameSetElement.cols", DOM, cx);
33
0
34
0
  DOMString result;
35
0
  self->GetCols(result);
36
0
  MOZ_ASSERT(!JS_IsExceptionPending(cx));
37
0
  if (!xpc::NonVoidStringToJsval(cx, result, args.rval())) {
38
0
    return false;
39
0
  }
40
0
  return true;
41
0
}
42
43
MOZ_CAN_RUN_SCRIPT static bool
44
set_cols(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::HTMLFrameSetElement* self, JSJitSetterCallArgs args)
45
0
{
46
0
  AUTO_PROFILER_LABEL_FAST("set HTMLFrameSetElement.cols", DOM, cx);
47
0
48
0
  binding_detail::FakeString arg0;
49
0
  if (!ConvertJSValueToString(cx, args[0], eStringify, eStringify, arg0)) {
50
0
    return false;
51
0
  }
52
0
  Maybe<AutoCEReaction> ceReaction;
53
0
  if (CustomElementRegistry::IsCustomElementEnabled(cx, obj)) {
54
0
    DocGroup* docGroup = self->GetDocGroup();
55
0
    if (docGroup) {
56
0
      ceReaction.emplace(docGroup->CustomElementReactionsStack(), cx);
57
0
    }
58
0
  }
59
0
  FastErrorResult rv;
60
0
  self->SetCols(NonNullHelper(Constify(arg0)), rv);
61
0
  if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
62
0
    return false;
63
0
  }
64
0
  MOZ_ASSERT(!JS_IsExceptionPending(cx));
65
0
66
0
  return true;
67
0
}
68
69
static const JSJitInfo cols_getterinfo = {
70
  { (JSJitGetterOp)get_cols },
71
  { prototypes::id::HTMLFrameSetElement },
72
  { PrototypeTraits<prototypes::id::HTMLFrameSetElement>::Depth },
73
  JSJitInfo::Getter,
74
  JSJitInfo::AliasEverything, /* aliasSet.  Not relevant for setters. */
75
  JSVAL_TYPE_STRING,  /* returnType.  Not relevant for setters. */
76
  false,  /* isInfallible. False in setters. */
77
  false,  /* isMovable.  Not relevant for setters. */
78
  false, /* isEliminatable.  Not relevant for setters. */
79
  false, /* isAlwaysInSlot.  Only relevant for getters. */
80
  false, /* isLazilyCachedInSlot.  Only relevant for getters. */
81
  false,  /* isTypedMethod.  Only relevant for methods. */
82
  0   /* Reserved slot index, if we're stored in a slot, else 0. */
83
};
84
static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
85
static_assert(0 < 1, "There is no slot for us");
86
static const JSJitInfo cols_setterinfo = {
87
  { (JSJitGetterOp)set_cols },
88
  { prototypes::id::HTMLFrameSetElement },
89
  { PrototypeTraits<prototypes::id::HTMLFrameSetElement>::Depth },
90
  JSJitInfo::Setter,
91
  JSJitInfo::AliasEverything, /* aliasSet.  Not relevant for setters. */
92
  JSVAL_TYPE_UNDEFINED,  /* returnType.  Not relevant for setters. */
93
  false,  /* isInfallible. False in setters. */
94
  false,  /* isMovable.  Not relevant for setters. */
95
  false, /* isEliminatable.  Not relevant for setters. */
96
  false, /* isAlwaysInSlot.  Only relevant for getters. */
97
  false, /* isLazilyCachedInSlot.  Only relevant for getters. */
98
  false,  /* isTypedMethod.  Only relevant for methods. */
99
  0   /* Reserved slot index, if we're stored in a slot, else 0. */
100
};
101
static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
102
static_assert(0 < 1, "There is no slot for us");
103
104
MOZ_CAN_RUN_SCRIPT static bool
105
get_rows(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::HTMLFrameSetElement* self, JSJitGetterCallArgs args)
106
0
{
107
0
  AUTO_PROFILER_LABEL_FAST("get HTMLFrameSetElement.rows", DOM, cx);
108
0
109
0
  DOMString result;
110
0
  self->GetRows(result);
111
0
  MOZ_ASSERT(!JS_IsExceptionPending(cx));
112
0
  if (!xpc::NonVoidStringToJsval(cx, result, args.rval())) {
113
0
    return false;
114
0
  }
115
0
  return true;
116
0
}
117
118
MOZ_CAN_RUN_SCRIPT static bool
119
set_rows(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::HTMLFrameSetElement* self, JSJitSetterCallArgs args)
120
0
{
121
0
  AUTO_PROFILER_LABEL_FAST("set HTMLFrameSetElement.rows", DOM, cx);
122
0
123
0
  binding_detail::FakeString arg0;
124
0
  if (!ConvertJSValueToString(cx, args[0], eStringify, eStringify, arg0)) {
125
0
    return false;
126
0
  }
127
0
  Maybe<AutoCEReaction> ceReaction;
128
0
  if (CustomElementRegistry::IsCustomElementEnabled(cx, obj)) {
129
0
    DocGroup* docGroup = self->GetDocGroup();
130
0
    if (docGroup) {
131
0
      ceReaction.emplace(docGroup->CustomElementReactionsStack(), cx);
132
0
    }
133
0
  }
134
0
  FastErrorResult rv;
135
0
  self->SetRows(NonNullHelper(Constify(arg0)), rv);
136
0
  if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
137
0
    return false;
138
0
  }
139
0
  MOZ_ASSERT(!JS_IsExceptionPending(cx));
140
0
141
0
  return true;
142
0
}
143
144
static const JSJitInfo rows_getterinfo = {
145
  { (JSJitGetterOp)get_rows },
146
  { prototypes::id::HTMLFrameSetElement },
147
  { PrototypeTraits<prototypes::id::HTMLFrameSetElement>::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 rows_setterinfo = {
162
  { (JSJitGetterOp)set_rows },
163
  { prototypes::id::HTMLFrameSetElement },
164
  { PrototypeTraits<prototypes::id::HTMLFrameSetElement>::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_onafterprint(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::HTMLFrameSetElement* self, JSJitGetterCallArgs args)
181
0
{
182
0
  AUTO_PROFILER_LABEL_FAST("get HTMLFrameSetElement.onafterprint", DOM, cx);
183
0
184
0
  RefPtr<EventHandlerNonNull> result(self->GetOnafterprint());
185
0
  MOZ_ASSERT(!JS_IsExceptionPending(cx));
186
0
  if (result) {
187
0
    args.rval().setObjectOrNull(GetCallbackFromCallbackObject(cx, result));
188
0
    if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
189
0
      return false;
190
0
    }
191
0
    return true;
192
0
  } else {
193
0
    args.rval().setNull();
194
0
    return true;
195
0
  }
196
0
}
197
198
MOZ_CAN_RUN_SCRIPT static bool
199
set_onafterprint(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::HTMLFrameSetElement* self, JSJitSetterCallArgs args)
200
0
{
201
0
  AUTO_PROFILER_LABEL_FAST("set HTMLFrameSetElement.onafterprint", DOM, cx);
202
0
203
0
  RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
204
0
  if (args[0].isObject()) {
205
0
    { // scope for tempRoot and tempGlobalRoot if needed
206
0
      arg0 = new binding_detail::FastEventHandlerNonNull(&args[0].toObject(), JS::CurrentGlobalOrNull(cx));
207
0
    }
208
0
  } else {
209
0
    arg0 = nullptr;
210
0
  }
211
0
  self->SetOnafterprint(Constify(arg0));
212
0
  MOZ_ASSERT(!JS_IsExceptionPending(cx));
213
0
214
0
  return true;
215
0
}
216
217
static const JSJitInfo onafterprint_getterinfo = {
218
  { (JSJitGetterOp)get_onafterprint },
219
  { prototypes::id::HTMLFrameSetElement },
220
  { PrototypeTraits<prototypes::id::HTMLFrameSetElement>::Depth },
221
  JSJitInfo::Getter,
222
  JSJitInfo::AliasEverything, /* aliasSet.  Not relevant for setters. */
223
  JSVAL_TYPE_UNKNOWN,  /* returnType.  Not relevant for setters. */
224
  false,  /* isInfallible. False in setters. */
225
  false,  /* isMovable.  Not relevant for setters. */
226
  false, /* isEliminatable.  Not relevant for setters. */
227
  false, /* isAlwaysInSlot.  Only relevant for getters. */
228
  false, /* isLazilyCachedInSlot.  Only relevant for getters. */
229
  false,  /* isTypedMethod.  Only relevant for methods. */
230
  0   /* Reserved slot index, if we're stored in a slot, else 0. */
231
};
232
static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
233
static_assert(0 < 1, "There is no slot for us");
234
static const JSJitInfo onafterprint_setterinfo = {
235
  { (JSJitGetterOp)set_onafterprint },
236
  { prototypes::id::HTMLFrameSetElement },
237
  { PrototypeTraits<prototypes::id::HTMLFrameSetElement>::Depth },
238
  JSJitInfo::Setter,
239
  JSJitInfo::AliasEverything, /* aliasSet.  Not relevant for setters. */
240
  JSVAL_TYPE_UNDEFINED,  /* returnType.  Not relevant for setters. */
241
  false,  /* isInfallible. False in setters. */
242
  false,  /* isMovable.  Not relevant for setters. */
243
  false, /* isEliminatable.  Not relevant for setters. */
244
  false, /* isAlwaysInSlot.  Only relevant for getters. */
245
  false, /* isLazilyCachedInSlot.  Only relevant for getters. */
246
  false,  /* isTypedMethod.  Only relevant for methods. */
247
  0   /* Reserved slot index, if we're stored in a slot, else 0. */
248
};
249
static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
250
static_assert(0 < 1, "There is no slot for us");
251
252
MOZ_CAN_RUN_SCRIPT static bool
253
get_onbeforeprint(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::HTMLFrameSetElement* self, JSJitGetterCallArgs args)
254
0
{
255
0
  AUTO_PROFILER_LABEL_FAST("get HTMLFrameSetElement.onbeforeprint", DOM, cx);
256
0
257
0
  RefPtr<EventHandlerNonNull> result(self->GetOnbeforeprint());
258
0
  MOZ_ASSERT(!JS_IsExceptionPending(cx));
259
0
  if (result) {
260
0
    args.rval().setObjectOrNull(GetCallbackFromCallbackObject(cx, result));
261
0
    if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
262
0
      return false;
263
0
    }
264
0
    return true;
265
0
  } else {
266
0
    args.rval().setNull();
267
0
    return true;
268
0
  }
269
0
}
270
271
MOZ_CAN_RUN_SCRIPT static bool
272
set_onbeforeprint(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::HTMLFrameSetElement* self, JSJitSetterCallArgs args)
273
0
{
274
0
  AUTO_PROFILER_LABEL_FAST("set HTMLFrameSetElement.onbeforeprint", DOM, cx);
275
0
276
0
  RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
277
0
  if (args[0].isObject()) {
278
0
    { // scope for tempRoot and tempGlobalRoot if needed
279
0
      arg0 = new binding_detail::FastEventHandlerNonNull(&args[0].toObject(), JS::CurrentGlobalOrNull(cx));
280
0
    }
281
0
  } else {
282
0
    arg0 = nullptr;
283
0
  }
284
0
  self->SetOnbeforeprint(Constify(arg0));
285
0
  MOZ_ASSERT(!JS_IsExceptionPending(cx));
286
0
287
0
  return true;
288
0
}
289
290
static const JSJitInfo onbeforeprint_getterinfo = {
291
  { (JSJitGetterOp)get_onbeforeprint },
292
  { prototypes::id::HTMLFrameSetElement },
293
  { PrototypeTraits<prototypes::id::HTMLFrameSetElement>::Depth },
294
  JSJitInfo::Getter,
295
  JSJitInfo::AliasEverything, /* aliasSet.  Not relevant for setters. */
296
  JSVAL_TYPE_UNKNOWN,  /* returnType.  Not relevant for setters. */
297
  false,  /* isInfallible. False in setters. */
298
  false,  /* isMovable.  Not relevant for setters. */
299
  false, /* isEliminatable.  Not relevant for setters. */
300
  false, /* isAlwaysInSlot.  Only relevant for getters. */
301
  false, /* isLazilyCachedInSlot.  Only relevant for getters. */
302
  false,  /* isTypedMethod.  Only relevant for methods. */
303
  0   /* Reserved slot index, if we're stored in a slot, else 0. */
304
};
305
static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
306
static_assert(0 < 1, "There is no slot for us");
307
static const JSJitInfo onbeforeprint_setterinfo = {
308
  { (JSJitGetterOp)set_onbeforeprint },
309
  { prototypes::id::HTMLFrameSetElement },
310
  { PrototypeTraits<prototypes::id::HTMLFrameSetElement>::Depth },
311
  JSJitInfo::Setter,
312
  JSJitInfo::AliasEverything, /* aliasSet.  Not relevant for setters. */
313
  JSVAL_TYPE_UNDEFINED,  /* returnType.  Not relevant for setters. */
314
  false,  /* isInfallible. False in setters. */
315
  false,  /* isMovable.  Not relevant for setters. */
316
  false, /* isEliminatable.  Not relevant for setters. */
317
  false, /* isAlwaysInSlot.  Only relevant for getters. */
318
  false, /* isLazilyCachedInSlot.  Only relevant for getters. */
319
  false,  /* isTypedMethod.  Only relevant for methods. */
320
  0   /* Reserved slot index, if we're stored in a slot, else 0. */
321
};
322
static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
323
static_assert(0 < 1, "There is no slot for us");
324
325
MOZ_CAN_RUN_SCRIPT static bool
326
get_onbeforeunload(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::HTMLFrameSetElement* self, JSJitGetterCallArgs args)
327
0
{
328
0
  AUTO_PROFILER_LABEL_FAST("get HTMLFrameSetElement.onbeforeunload", DOM, cx);
329
0
330
0
  RefPtr<OnBeforeUnloadEventHandlerNonNull> result(self->GetOnbeforeunload());
331
0
  MOZ_ASSERT(!JS_IsExceptionPending(cx));
332
0
  if (result) {
333
0
    args.rval().setObjectOrNull(GetCallbackFromCallbackObject(cx, result));
334
0
    if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
335
0
      return false;
336
0
    }
337
0
    return true;
338
0
  } else {
339
0
    args.rval().setNull();
340
0
    return true;
341
0
  }
342
0
}
343
344
MOZ_CAN_RUN_SCRIPT static bool
345
set_onbeforeunload(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::HTMLFrameSetElement* self, JSJitSetterCallArgs args)
346
0
{
347
0
  AUTO_PROFILER_LABEL_FAST("set HTMLFrameSetElement.onbeforeunload", DOM, cx);
348
0
349
0
  RootedCallback<RefPtr<binding_detail::FastOnBeforeUnloadEventHandlerNonNull>> arg0(cx);
350
0
  if (args[0].isObject()) {
351
0
    { // scope for tempRoot and tempGlobalRoot if needed
352
0
      arg0 = new binding_detail::FastOnBeforeUnloadEventHandlerNonNull(&args[0].toObject(), JS::CurrentGlobalOrNull(cx));
353
0
    }
354
0
  } else {
355
0
    arg0 = nullptr;
356
0
  }
357
0
  self->SetOnbeforeunload(Constify(arg0));
358
0
  MOZ_ASSERT(!JS_IsExceptionPending(cx));
359
0
360
0
  return true;
361
0
}
362
363
static const JSJitInfo onbeforeunload_getterinfo = {
364
  { (JSJitGetterOp)get_onbeforeunload },
365
  { prototypes::id::HTMLFrameSetElement },
366
  { PrototypeTraits<prototypes::id::HTMLFrameSetElement>::Depth },
367
  JSJitInfo::Getter,
368
  JSJitInfo::AliasEverything, /* aliasSet.  Not relevant for setters. */
369
  JSVAL_TYPE_UNKNOWN,  /* returnType.  Not relevant for setters. */
370
  false,  /* isInfallible. False in setters. */
371
  false,  /* isMovable.  Not relevant for setters. */
372
  false, /* isEliminatable.  Not relevant for setters. */
373
  false, /* isAlwaysInSlot.  Only relevant for getters. */
374
  false, /* isLazilyCachedInSlot.  Only relevant for getters. */
375
  false,  /* isTypedMethod.  Only relevant for methods. */
376
  0   /* Reserved slot index, if we're stored in a slot, else 0. */
377
};
378
static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
379
static_assert(0 < 1, "There is no slot for us");
380
static const JSJitInfo onbeforeunload_setterinfo = {
381
  { (JSJitGetterOp)set_onbeforeunload },
382
  { prototypes::id::HTMLFrameSetElement },
383
  { PrototypeTraits<prototypes::id::HTMLFrameSetElement>::Depth },
384
  JSJitInfo::Setter,
385
  JSJitInfo::AliasEverything, /* aliasSet.  Not relevant for setters. */
386
  JSVAL_TYPE_UNDEFINED,  /* returnType.  Not relevant for setters. */
387
  false,  /* isInfallible. False in setters. */
388
  false,  /* isMovable.  Not relevant for setters. */
389
  false, /* isEliminatable.  Not relevant for setters. */
390
  false, /* isAlwaysInSlot.  Only relevant for getters. */
391
  false, /* isLazilyCachedInSlot.  Only relevant for getters. */
392
  false,  /* isTypedMethod.  Only relevant for methods. */
393
  0   /* Reserved slot index, if we're stored in a slot, else 0. */
394
};
395
static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
396
static_assert(0 < 1, "There is no slot for us");
397
398
MOZ_CAN_RUN_SCRIPT static bool
399
get_onhashchange(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::HTMLFrameSetElement* self, JSJitGetterCallArgs args)
400
0
{
401
0
  AUTO_PROFILER_LABEL_FAST("get HTMLFrameSetElement.onhashchange", DOM, cx);
402
0
403
0
  RefPtr<EventHandlerNonNull> result(self->GetOnhashchange());
404
0
  MOZ_ASSERT(!JS_IsExceptionPending(cx));
405
0
  if (result) {
406
0
    args.rval().setObjectOrNull(GetCallbackFromCallbackObject(cx, result));
407
0
    if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
408
0
      return false;
409
0
    }
410
0
    return true;
411
0
  } else {
412
0
    args.rval().setNull();
413
0
    return true;
414
0
  }
415
0
}
416
417
MOZ_CAN_RUN_SCRIPT static bool
418
set_onhashchange(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::HTMLFrameSetElement* self, JSJitSetterCallArgs args)
419
0
{
420
0
  AUTO_PROFILER_LABEL_FAST("set HTMLFrameSetElement.onhashchange", DOM, cx);
421
0
422
0
  RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
423
0
  if (args[0].isObject()) {
424
0
    { // scope for tempRoot and tempGlobalRoot if needed
425
0
      arg0 = new binding_detail::FastEventHandlerNonNull(&args[0].toObject(), JS::CurrentGlobalOrNull(cx));
426
0
    }
427
0
  } else {
428
0
    arg0 = nullptr;
429
0
  }
430
0
  self->SetOnhashchange(Constify(arg0));
431
0
  MOZ_ASSERT(!JS_IsExceptionPending(cx));
432
0
433
0
  return true;
434
0
}
435
436
static const JSJitInfo onhashchange_getterinfo = {
437
  { (JSJitGetterOp)get_onhashchange },
438
  { prototypes::id::HTMLFrameSetElement },
439
  { PrototypeTraits<prototypes::id::HTMLFrameSetElement>::Depth },
440
  JSJitInfo::Getter,
441
  JSJitInfo::AliasEverything, /* aliasSet.  Not relevant for setters. */
442
  JSVAL_TYPE_UNKNOWN,  /* returnType.  Not relevant for setters. */
443
  false,  /* isInfallible. False in setters. */
444
  false,  /* isMovable.  Not relevant for setters. */
445
  false, /* isEliminatable.  Not relevant for setters. */
446
  false, /* isAlwaysInSlot.  Only relevant for getters. */
447
  false, /* isLazilyCachedInSlot.  Only relevant for getters. */
448
  false,  /* isTypedMethod.  Only relevant for methods. */
449
  0   /* Reserved slot index, if we're stored in a slot, else 0. */
450
};
451
static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
452
static_assert(0 < 1, "There is no slot for us");
453
static const JSJitInfo onhashchange_setterinfo = {
454
  { (JSJitGetterOp)set_onhashchange },
455
  { prototypes::id::HTMLFrameSetElement },
456
  { PrototypeTraits<prototypes::id::HTMLFrameSetElement>::Depth },
457
  JSJitInfo::Setter,
458
  JSJitInfo::AliasEverything, /* aliasSet.  Not relevant for setters. */
459
  JSVAL_TYPE_UNDEFINED,  /* returnType.  Not relevant for setters. */
460
  false,  /* isInfallible. False in setters. */
461
  false,  /* isMovable.  Not relevant for setters. */
462
  false, /* isEliminatable.  Not relevant for setters. */
463
  false, /* isAlwaysInSlot.  Only relevant for getters. */
464
  false, /* isLazilyCachedInSlot.  Only relevant for getters. */
465
  false,  /* isTypedMethod.  Only relevant for methods. */
466
  0   /* Reserved slot index, if we're stored in a slot, else 0. */
467
};
468
static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
469
static_assert(0 < 1, "There is no slot for us");
470
471
MOZ_CAN_RUN_SCRIPT static bool
472
get_onlanguagechange(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::HTMLFrameSetElement* self, JSJitGetterCallArgs args)
473
0
{
474
0
  AUTO_PROFILER_LABEL_FAST("get HTMLFrameSetElement.onlanguagechange", DOM, cx);
475
0
476
0
  RefPtr<EventHandlerNonNull> result(self->GetOnlanguagechange());
477
0
  MOZ_ASSERT(!JS_IsExceptionPending(cx));
478
0
  if (result) {
479
0
    args.rval().setObjectOrNull(GetCallbackFromCallbackObject(cx, result));
480
0
    if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
481
0
      return false;
482
0
    }
483
0
    return true;
484
0
  } else {
485
0
    args.rval().setNull();
486
0
    return true;
487
0
  }
488
0
}
489
490
MOZ_CAN_RUN_SCRIPT static bool
491
set_onlanguagechange(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::HTMLFrameSetElement* self, JSJitSetterCallArgs args)
492
0
{
493
0
  AUTO_PROFILER_LABEL_FAST("set HTMLFrameSetElement.onlanguagechange", DOM, cx);
494
0
495
0
  RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
496
0
  if (args[0].isObject()) {
497
0
    { // scope for tempRoot and tempGlobalRoot if needed
498
0
      arg0 = new binding_detail::FastEventHandlerNonNull(&args[0].toObject(), JS::CurrentGlobalOrNull(cx));
499
0
    }
500
0
  } else {
501
0
    arg0 = nullptr;
502
0
  }
503
0
  self->SetOnlanguagechange(Constify(arg0));
504
0
  MOZ_ASSERT(!JS_IsExceptionPending(cx));
505
0
506
0
  return true;
507
0
}
508
509
static const JSJitInfo onlanguagechange_getterinfo = {
510
  { (JSJitGetterOp)get_onlanguagechange },
511
  { prototypes::id::HTMLFrameSetElement },
512
  { PrototypeTraits<prototypes::id::HTMLFrameSetElement>::Depth },
513
  JSJitInfo::Getter,
514
  JSJitInfo::AliasEverything, /* aliasSet.  Not relevant for setters. */
515
  JSVAL_TYPE_UNKNOWN,  /* returnType.  Not relevant for setters. */
516
  false,  /* isInfallible. False in setters. */
517
  false,  /* isMovable.  Not relevant for setters. */
518
  false, /* isEliminatable.  Not relevant for setters. */
519
  false, /* isAlwaysInSlot.  Only relevant for getters. */
520
  false, /* isLazilyCachedInSlot.  Only relevant for getters. */
521
  false,  /* isTypedMethod.  Only relevant for methods. */
522
  0   /* Reserved slot index, if we're stored in a slot, else 0. */
523
};
524
static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
525
static_assert(0 < 1, "There is no slot for us");
526
static const JSJitInfo onlanguagechange_setterinfo = {
527
  { (JSJitGetterOp)set_onlanguagechange },
528
  { prototypes::id::HTMLFrameSetElement },
529
  { PrototypeTraits<prototypes::id::HTMLFrameSetElement>::Depth },
530
  JSJitInfo::Setter,
531
  JSJitInfo::AliasEverything, /* aliasSet.  Not relevant for setters. */
532
  JSVAL_TYPE_UNDEFINED,  /* returnType.  Not relevant for setters. */
533
  false,  /* isInfallible. False in setters. */
534
  false,  /* isMovable.  Not relevant for setters. */
535
  false, /* isEliminatable.  Not relevant for setters. */
536
  false, /* isAlwaysInSlot.  Only relevant for getters. */
537
  false, /* isLazilyCachedInSlot.  Only relevant for getters. */
538
  false,  /* isTypedMethod.  Only relevant for methods. */
539
  0   /* Reserved slot index, if we're stored in a slot, else 0. */
540
};
541
static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
542
static_assert(0 < 1, "There is no slot for us");
543
544
MOZ_CAN_RUN_SCRIPT static bool
545
get_onmessage(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::HTMLFrameSetElement* self, JSJitGetterCallArgs args)
546
0
{
547
0
  AUTO_PROFILER_LABEL_FAST("get HTMLFrameSetElement.onmessage", DOM, cx);
548
0
549
0
  RefPtr<EventHandlerNonNull> result(self->GetOnmessage());
550
0
  MOZ_ASSERT(!JS_IsExceptionPending(cx));
551
0
  if (result) {
552
0
    args.rval().setObjectOrNull(GetCallbackFromCallbackObject(cx, result));
553
0
    if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
554
0
      return false;
555
0
    }
556
0
    return true;
557
0
  } else {
558
0
    args.rval().setNull();
559
0
    return true;
560
0
  }
561
0
}
562
563
MOZ_CAN_RUN_SCRIPT static bool
564
set_onmessage(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::HTMLFrameSetElement* self, JSJitSetterCallArgs args)
565
0
{
566
0
  AUTO_PROFILER_LABEL_FAST("set HTMLFrameSetElement.onmessage", DOM, cx);
567
0
568
0
  RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
569
0
  if (args[0].isObject()) {
570
0
    { // scope for tempRoot and tempGlobalRoot if needed
571
0
      arg0 = new binding_detail::FastEventHandlerNonNull(&args[0].toObject(), JS::CurrentGlobalOrNull(cx));
572
0
    }
573
0
  } else {
574
0
    arg0 = nullptr;
575
0
  }
576
0
  self->SetOnmessage(Constify(arg0));
577
0
  MOZ_ASSERT(!JS_IsExceptionPending(cx));
578
0
579
0
  return true;
580
0
}
581
582
static const JSJitInfo onmessage_getterinfo = {
583
  { (JSJitGetterOp)get_onmessage },
584
  { prototypes::id::HTMLFrameSetElement },
585
  { PrototypeTraits<prototypes::id::HTMLFrameSetElement>::Depth },
586
  JSJitInfo::Getter,
587
  JSJitInfo::AliasEverything, /* aliasSet.  Not relevant for setters. */
588
  JSVAL_TYPE_UNKNOWN,  /* 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
static const JSJitInfo onmessage_setterinfo = {
600
  { (JSJitGetterOp)set_onmessage },
601
  { prototypes::id::HTMLFrameSetElement },
602
  { PrototypeTraits<prototypes::id::HTMLFrameSetElement>::Depth },
603
  JSJitInfo::Setter,
604
  JSJitInfo::AliasEverything, /* aliasSet.  Not relevant for setters. */
605
  JSVAL_TYPE_UNDEFINED,  /* returnType.  Not relevant for setters. */
606
  false,  /* isInfallible. False in setters. */
607
  false,  /* isMovable.  Not relevant for setters. */
608
  false, /* isEliminatable.  Not relevant for setters. */
609
  false, /* isAlwaysInSlot.  Only relevant for getters. */
610
  false, /* isLazilyCachedInSlot.  Only relevant for getters. */
611
  false,  /* isTypedMethod.  Only relevant for methods. */
612
  0   /* Reserved slot index, if we're stored in a slot, else 0. */
613
};
614
static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
615
static_assert(0 < 1, "There is no slot for us");
616
617
MOZ_CAN_RUN_SCRIPT static bool
618
get_onmessageerror(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::HTMLFrameSetElement* self, JSJitGetterCallArgs args)
619
0
{
620
0
  AUTO_PROFILER_LABEL_FAST("get HTMLFrameSetElement.onmessageerror", DOM, cx);
621
0
622
0
  RefPtr<EventHandlerNonNull> result(self->GetOnmessageerror());
623
0
  MOZ_ASSERT(!JS_IsExceptionPending(cx));
624
0
  if (result) {
625
0
    args.rval().setObjectOrNull(GetCallbackFromCallbackObject(cx, result));
626
0
    if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
627
0
      return false;
628
0
    }
629
0
    return true;
630
0
  } else {
631
0
    args.rval().setNull();
632
0
    return true;
633
0
  }
634
0
}
635
636
MOZ_CAN_RUN_SCRIPT static bool
637
set_onmessageerror(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::HTMLFrameSetElement* self, JSJitSetterCallArgs args)
638
0
{
639
0
  AUTO_PROFILER_LABEL_FAST("set HTMLFrameSetElement.onmessageerror", DOM, cx);
640
0
641
0
  RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
642
0
  if (args[0].isObject()) {
643
0
    { // scope for tempRoot and tempGlobalRoot if needed
644
0
      arg0 = new binding_detail::FastEventHandlerNonNull(&args[0].toObject(), JS::CurrentGlobalOrNull(cx));
645
0
    }
646
0
  } else {
647
0
    arg0 = nullptr;
648
0
  }
649
0
  self->SetOnmessageerror(Constify(arg0));
650
0
  MOZ_ASSERT(!JS_IsExceptionPending(cx));
651
0
652
0
  return true;
653
0
}
654
655
static const JSJitInfo onmessageerror_getterinfo = {
656
  { (JSJitGetterOp)get_onmessageerror },
657
  { prototypes::id::HTMLFrameSetElement },
658
  { PrototypeTraits<prototypes::id::HTMLFrameSetElement>::Depth },
659
  JSJitInfo::Getter,
660
  JSJitInfo::AliasEverything, /* aliasSet.  Not relevant for setters. */
661
  JSVAL_TYPE_UNKNOWN,  /* returnType.  Not relevant for setters. */
662
  false,  /* isInfallible. False in setters. */
663
  false,  /* isMovable.  Not relevant for setters. */
664
  false, /* isEliminatable.  Not relevant for setters. */
665
  false, /* isAlwaysInSlot.  Only relevant for getters. */
666
  false, /* isLazilyCachedInSlot.  Only relevant for getters. */
667
  false,  /* isTypedMethod.  Only relevant for methods. */
668
  0   /* Reserved slot index, if we're stored in a slot, else 0. */
669
};
670
static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
671
static_assert(0 < 1, "There is no slot for us");
672
static const JSJitInfo onmessageerror_setterinfo = {
673
  { (JSJitGetterOp)set_onmessageerror },
674
  { prototypes::id::HTMLFrameSetElement },
675
  { PrototypeTraits<prototypes::id::HTMLFrameSetElement>::Depth },
676
  JSJitInfo::Setter,
677
  JSJitInfo::AliasEverything, /* aliasSet.  Not relevant for setters. */
678
  JSVAL_TYPE_UNDEFINED,  /* returnType.  Not relevant for setters. */
679
  false,  /* isInfallible. False in setters. */
680
  false,  /* isMovable.  Not relevant for setters. */
681
  false, /* isEliminatable.  Not relevant for setters. */
682
  false, /* isAlwaysInSlot.  Only relevant for getters. */
683
  false, /* isLazilyCachedInSlot.  Only relevant for getters. */
684
  false,  /* isTypedMethod.  Only relevant for methods. */
685
  0   /* Reserved slot index, if we're stored in a slot, else 0. */
686
};
687
static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
688
static_assert(0 < 1, "There is no slot for us");
689
690
MOZ_CAN_RUN_SCRIPT static bool
691
get_onoffline(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::HTMLFrameSetElement* self, JSJitGetterCallArgs args)
692
0
{
693
0
  AUTO_PROFILER_LABEL_FAST("get HTMLFrameSetElement.onoffline", DOM, cx);
694
0
695
0
  RefPtr<EventHandlerNonNull> result(self->GetOnoffline());
696
0
  MOZ_ASSERT(!JS_IsExceptionPending(cx));
697
0
  if (result) {
698
0
    args.rval().setObjectOrNull(GetCallbackFromCallbackObject(cx, result));
699
0
    if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
700
0
      return false;
701
0
    }
702
0
    return true;
703
0
  } else {
704
0
    args.rval().setNull();
705
0
    return true;
706
0
  }
707
0
}
708
709
MOZ_CAN_RUN_SCRIPT static bool
710
set_onoffline(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::HTMLFrameSetElement* self, JSJitSetterCallArgs args)
711
0
{
712
0
  AUTO_PROFILER_LABEL_FAST("set HTMLFrameSetElement.onoffline", DOM, cx);
713
0
714
0
  RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
715
0
  if (args[0].isObject()) {
716
0
    { // scope for tempRoot and tempGlobalRoot if needed
717
0
      arg0 = new binding_detail::FastEventHandlerNonNull(&args[0].toObject(), JS::CurrentGlobalOrNull(cx));
718
0
    }
719
0
  } else {
720
0
    arg0 = nullptr;
721
0
  }
722
0
  self->SetOnoffline(Constify(arg0));
723
0
  MOZ_ASSERT(!JS_IsExceptionPending(cx));
724
0
725
0
  return true;
726
0
}
727
728
static const JSJitInfo onoffline_getterinfo = {
729
  { (JSJitGetterOp)get_onoffline },
730
  { prototypes::id::HTMLFrameSetElement },
731
  { PrototypeTraits<prototypes::id::HTMLFrameSetElement>::Depth },
732
  JSJitInfo::Getter,
733
  JSJitInfo::AliasEverything, /* aliasSet.  Not relevant for setters. */
734
  JSVAL_TYPE_UNKNOWN,  /* returnType.  Not relevant for setters. */
735
  false,  /* isInfallible. False in setters. */
736
  false,  /* isMovable.  Not relevant for setters. */
737
  false, /* isEliminatable.  Not relevant for setters. */
738
  false, /* isAlwaysInSlot.  Only relevant for getters. */
739
  false, /* isLazilyCachedInSlot.  Only relevant for getters. */
740
  false,  /* isTypedMethod.  Only relevant for methods. */
741
  0   /* Reserved slot index, if we're stored in a slot, else 0. */
742
};
743
static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
744
static_assert(0 < 1, "There is no slot for us");
745
static const JSJitInfo onoffline_setterinfo = {
746
  { (JSJitGetterOp)set_onoffline },
747
  { prototypes::id::HTMLFrameSetElement },
748
  { PrototypeTraits<prototypes::id::HTMLFrameSetElement>::Depth },
749
  JSJitInfo::Setter,
750
  JSJitInfo::AliasEverything, /* aliasSet.  Not relevant for setters. */
751
  JSVAL_TYPE_UNDEFINED,  /* returnType.  Not relevant for setters. */
752
  false,  /* isInfallible. False in setters. */
753
  false,  /* isMovable.  Not relevant for setters. */
754
  false, /* isEliminatable.  Not relevant for setters. */
755
  false, /* isAlwaysInSlot.  Only relevant for getters. */
756
  false, /* isLazilyCachedInSlot.  Only relevant for getters. */
757
  false,  /* isTypedMethod.  Only relevant for methods. */
758
  0   /* Reserved slot index, if we're stored in a slot, else 0. */
759
};
760
static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
761
static_assert(0 < 1, "There is no slot for us");
762
763
MOZ_CAN_RUN_SCRIPT static bool
764
get_ononline(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::HTMLFrameSetElement* self, JSJitGetterCallArgs args)
765
0
{
766
0
  AUTO_PROFILER_LABEL_FAST("get HTMLFrameSetElement.ononline", DOM, cx);
767
0
768
0
  RefPtr<EventHandlerNonNull> result(self->GetOnonline());
769
0
  MOZ_ASSERT(!JS_IsExceptionPending(cx));
770
0
  if (result) {
771
0
    args.rval().setObjectOrNull(GetCallbackFromCallbackObject(cx, result));
772
0
    if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
773
0
      return false;
774
0
    }
775
0
    return true;
776
0
  } else {
777
0
    args.rval().setNull();
778
0
    return true;
779
0
  }
780
0
}
781
782
MOZ_CAN_RUN_SCRIPT static bool
783
set_ononline(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::HTMLFrameSetElement* self, JSJitSetterCallArgs args)
784
0
{
785
0
  AUTO_PROFILER_LABEL_FAST("set HTMLFrameSetElement.ononline", DOM, cx);
786
0
787
0
  RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
788
0
  if (args[0].isObject()) {
789
0
    { // scope for tempRoot and tempGlobalRoot if needed
790
0
      arg0 = new binding_detail::FastEventHandlerNonNull(&args[0].toObject(), JS::CurrentGlobalOrNull(cx));
791
0
    }
792
0
  } else {
793
0
    arg0 = nullptr;
794
0
  }
795
0
  self->SetOnonline(Constify(arg0));
796
0
  MOZ_ASSERT(!JS_IsExceptionPending(cx));
797
0
798
0
  return true;
799
0
}
800
801
static const JSJitInfo ononline_getterinfo = {
802
  { (JSJitGetterOp)get_ononline },
803
  { prototypes::id::HTMLFrameSetElement },
804
  { PrototypeTraits<prototypes::id::HTMLFrameSetElement>::Depth },
805
  JSJitInfo::Getter,
806
  JSJitInfo::AliasEverything, /* aliasSet.  Not relevant for setters. */
807
  JSVAL_TYPE_UNKNOWN,  /* returnType.  Not relevant for setters. */
808
  false,  /* isInfallible. False in setters. */
809
  false,  /* isMovable.  Not relevant for setters. */
810
  false, /* isEliminatable.  Not relevant for setters. */
811
  false, /* isAlwaysInSlot.  Only relevant for getters. */
812
  false, /* isLazilyCachedInSlot.  Only relevant for getters. */
813
  false,  /* isTypedMethod.  Only relevant for methods. */
814
  0   /* Reserved slot index, if we're stored in a slot, else 0. */
815
};
816
static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
817
static_assert(0 < 1, "There is no slot for us");
818
static const JSJitInfo ononline_setterinfo = {
819
  { (JSJitGetterOp)set_ononline },
820
  { prototypes::id::HTMLFrameSetElement },
821
  { PrototypeTraits<prototypes::id::HTMLFrameSetElement>::Depth },
822
  JSJitInfo::Setter,
823
  JSJitInfo::AliasEverything, /* aliasSet.  Not relevant for setters. */
824
  JSVAL_TYPE_UNDEFINED,  /* returnType.  Not relevant for setters. */
825
  false,  /* isInfallible. False in setters. */
826
  false,  /* isMovable.  Not relevant for setters. */
827
  false, /* isEliminatable.  Not relevant for setters. */
828
  false, /* isAlwaysInSlot.  Only relevant for getters. */
829
  false, /* isLazilyCachedInSlot.  Only relevant for getters. */
830
  false,  /* isTypedMethod.  Only relevant for methods. */
831
  0   /* Reserved slot index, if we're stored in a slot, else 0. */
832
};
833
static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
834
static_assert(0 < 1, "There is no slot for us");
835
836
MOZ_CAN_RUN_SCRIPT static bool
837
get_onpagehide(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::HTMLFrameSetElement* self, JSJitGetterCallArgs args)
838
0
{
839
0
  AUTO_PROFILER_LABEL_FAST("get HTMLFrameSetElement.onpagehide", DOM, cx);
840
0
841
0
  RefPtr<EventHandlerNonNull> result(self->GetOnpagehide());
842
0
  MOZ_ASSERT(!JS_IsExceptionPending(cx));
843
0
  if (result) {
844
0
    args.rval().setObjectOrNull(GetCallbackFromCallbackObject(cx, result));
845
0
    if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
846
0
      return false;
847
0
    }
848
0
    return true;
849
0
  } else {
850
0
    args.rval().setNull();
851
0
    return true;
852
0
  }
853
0
}
854
855
MOZ_CAN_RUN_SCRIPT static bool
856
set_onpagehide(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::HTMLFrameSetElement* self, JSJitSetterCallArgs args)
857
0
{
858
0
  AUTO_PROFILER_LABEL_FAST("set HTMLFrameSetElement.onpagehide", DOM, cx);
859
0
860
0
  RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
861
0
  if (args[0].isObject()) {
862
0
    { // scope for tempRoot and tempGlobalRoot if needed
863
0
      arg0 = new binding_detail::FastEventHandlerNonNull(&args[0].toObject(), JS::CurrentGlobalOrNull(cx));
864
0
    }
865
0
  } else {
866
0
    arg0 = nullptr;
867
0
  }
868
0
  self->SetOnpagehide(Constify(arg0));
869
0
  MOZ_ASSERT(!JS_IsExceptionPending(cx));
870
0
871
0
  return true;
872
0
}
873
874
static const JSJitInfo onpagehide_getterinfo = {
875
  { (JSJitGetterOp)get_onpagehide },
876
  { prototypes::id::HTMLFrameSetElement },
877
  { PrototypeTraits<prototypes::id::HTMLFrameSetElement>::Depth },
878
  JSJitInfo::Getter,
879
  JSJitInfo::AliasEverything, /* aliasSet.  Not relevant for setters. */
880
  JSVAL_TYPE_UNKNOWN,  /* returnType.  Not relevant for setters. */
881
  false,  /* isInfallible. False in setters. */
882
  false,  /* isMovable.  Not relevant for setters. */
883
  false, /* isEliminatable.  Not relevant for setters. */
884
  false, /* isAlwaysInSlot.  Only relevant for getters. */
885
  false, /* isLazilyCachedInSlot.  Only relevant for getters. */
886
  false,  /* isTypedMethod.  Only relevant for methods. */
887
  0   /* Reserved slot index, if we're stored in a slot, else 0. */
888
};
889
static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
890
static_assert(0 < 1, "There is no slot for us");
891
static const JSJitInfo onpagehide_setterinfo = {
892
  { (JSJitGetterOp)set_onpagehide },
893
  { prototypes::id::HTMLFrameSetElement },
894
  { PrototypeTraits<prototypes::id::HTMLFrameSetElement>::Depth },
895
  JSJitInfo::Setter,
896
  JSJitInfo::AliasEverything, /* aliasSet.  Not relevant for setters. */
897
  JSVAL_TYPE_UNDEFINED,  /* returnType.  Not relevant for setters. */
898
  false,  /* isInfallible. False in setters. */
899
  false,  /* isMovable.  Not relevant for setters. */
900
  false, /* isEliminatable.  Not relevant for setters. */
901
  false, /* isAlwaysInSlot.  Only relevant for getters. */
902
  false, /* isLazilyCachedInSlot.  Only relevant for getters. */
903
  false,  /* isTypedMethod.  Only relevant for methods. */
904
  0   /* Reserved slot index, if we're stored in a slot, else 0. */
905
};
906
static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
907
static_assert(0 < 1, "There is no slot for us");
908
909
MOZ_CAN_RUN_SCRIPT static bool
910
get_onpageshow(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::HTMLFrameSetElement* self, JSJitGetterCallArgs args)
911
0
{
912
0
  AUTO_PROFILER_LABEL_FAST("get HTMLFrameSetElement.onpageshow", DOM, cx);
913
0
914
0
  RefPtr<EventHandlerNonNull> result(self->GetOnpageshow());
915
0
  MOZ_ASSERT(!JS_IsExceptionPending(cx));
916
0
  if (result) {
917
0
    args.rval().setObjectOrNull(GetCallbackFromCallbackObject(cx, result));
918
0
    if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
919
0
      return false;
920
0
    }
921
0
    return true;
922
0
  } else {
923
0
    args.rval().setNull();
924
0
    return true;
925
0
  }
926
0
}
927
928
MOZ_CAN_RUN_SCRIPT static bool
929
set_onpageshow(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::HTMLFrameSetElement* self, JSJitSetterCallArgs args)
930
0
{
931
0
  AUTO_PROFILER_LABEL_FAST("set HTMLFrameSetElement.onpageshow", DOM, cx);
932
0
933
0
  RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
934
0
  if (args[0].isObject()) {
935
0
    { // scope for tempRoot and tempGlobalRoot if needed
936
0
      arg0 = new binding_detail::FastEventHandlerNonNull(&args[0].toObject(), JS::CurrentGlobalOrNull(cx));
937
0
    }
938
0
  } else {
939
0
    arg0 = nullptr;
940
0
  }
941
0
  self->SetOnpageshow(Constify(arg0));
942
0
  MOZ_ASSERT(!JS_IsExceptionPending(cx));
943
0
944
0
  return true;
945
0
}
946
947
static const JSJitInfo onpageshow_getterinfo = {
948
  { (JSJitGetterOp)get_onpageshow },
949
  { prototypes::id::HTMLFrameSetElement },
950
  { PrototypeTraits<prototypes::id::HTMLFrameSetElement>::Depth },
951
  JSJitInfo::Getter,
952
  JSJitInfo::AliasEverything, /* aliasSet.  Not relevant for setters. */
953
  JSVAL_TYPE_UNKNOWN,  /* returnType.  Not relevant for setters. */
954
  false,  /* isInfallible. False in setters. */
955
  false,  /* isMovable.  Not relevant for setters. */
956
  false, /* isEliminatable.  Not relevant for setters. */
957
  false, /* isAlwaysInSlot.  Only relevant for getters. */
958
  false, /* isLazilyCachedInSlot.  Only relevant for getters. */
959
  false,  /* isTypedMethod.  Only relevant for methods. */
960
  0   /* Reserved slot index, if we're stored in a slot, else 0. */
961
};
962
static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
963
static_assert(0 < 1, "There is no slot for us");
964
static const JSJitInfo onpageshow_setterinfo = {
965
  { (JSJitGetterOp)set_onpageshow },
966
  { prototypes::id::HTMLFrameSetElement },
967
  { PrototypeTraits<prototypes::id::HTMLFrameSetElement>::Depth },
968
  JSJitInfo::Setter,
969
  JSJitInfo::AliasEverything, /* aliasSet.  Not relevant for setters. */
970
  JSVAL_TYPE_UNDEFINED,  /* returnType.  Not relevant for setters. */
971
  false,  /* isInfallible. False in setters. */
972
  false,  /* isMovable.  Not relevant for setters. */
973
  false, /* isEliminatable.  Not relevant for setters. */
974
  false, /* isAlwaysInSlot.  Only relevant for getters. */
975
  false, /* isLazilyCachedInSlot.  Only relevant for getters. */
976
  false,  /* isTypedMethod.  Only relevant for methods. */
977
  0   /* Reserved slot index, if we're stored in a slot, else 0. */
978
};
979
static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
980
static_assert(0 < 1, "There is no slot for us");
981
982
MOZ_CAN_RUN_SCRIPT static bool
983
get_onpopstate(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::HTMLFrameSetElement* self, JSJitGetterCallArgs args)
984
0
{
985
0
  AUTO_PROFILER_LABEL_FAST("get HTMLFrameSetElement.onpopstate", DOM, cx);
986
0
987
0
  RefPtr<EventHandlerNonNull> result(self->GetOnpopstate());
988
0
  MOZ_ASSERT(!JS_IsExceptionPending(cx));
989
0
  if (result) {
990
0
    args.rval().setObjectOrNull(GetCallbackFromCallbackObject(cx, result));
991
0
    if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
992
0
      return false;
993
0
    }
994
0
    return true;
995
0
  } else {
996
0
    args.rval().setNull();
997
0
    return true;
998
0
  }
999
0
}
1000
1001
MOZ_CAN_RUN_SCRIPT static bool
1002
set_onpopstate(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::HTMLFrameSetElement* self, JSJitSetterCallArgs args)
1003
0
{
1004
0
  AUTO_PROFILER_LABEL_FAST("set HTMLFrameSetElement.onpopstate", DOM, cx);
1005
0
1006
0
  RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
1007
0
  if (args[0].isObject()) {
1008
0
    { // scope for tempRoot and tempGlobalRoot if needed
1009
0
      arg0 = new binding_detail::FastEventHandlerNonNull(&args[0].toObject(), JS::CurrentGlobalOrNull(cx));
1010
0
    }
1011
0
  } else {
1012
0
    arg0 = nullptr;
1013
0
  }
1014
0
  self->SetOnpopstate(Constify(arg0));
1015
0
  MOZ_ASSERT(!JS_IsExceptionPending(cx));
1016
0
1017
0
  return true;
1018
0
}
1019
1020
static const JSJitInfo onpopstate_getterinfo = {
1021
  { (JSJitGetterOp)get_onpopstate },
1022
  { prototypes::id::HTMLFrameSetElement },
1023
  { PrototypeTraits<prototypes::id::HTMLFrameSetElement>::Depth },
1024
  JSJitInfo::Getter,
1025
  JSJitInfo::AliasEverything, /* aliasSet.  Not relevant for setters. */
1026
  JSVAL_TYPE_UNKNOWN,  /* returnType.  Not relevant for setters. */
1027
  false,  /* isInfallible. False in setters. */
1028
  false,  /* isMovable.  Not relevant for setters. */
1029
  false, /* isEliminatable.  Not relevant for setters. */
1030
  false, /* isAlwaysInSlot.  Only relevant for getters. */
1031
  false, /* isLazilyCachedInSlot.  Only relevant for getters. */
1032
  false,  /* isTypedMethod.  Only relevant for methods. */
1033
  0   /* Reserved slot index, if we're stored in a slot, else 0. */
1034
};
1035
static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1036
static_assert(0 < 1, "There is no slot for us");
1037
static const JSJitInfo onpopstate_setterinfo = {
1038
  { (JSJitGetterOp)set_onpopstate },
1039
  { prototypes::id::HTMLFrameSetElement },
1040
  { PrototypeTraits<prototypes::id::HTMLFrameSetElement>::Depth },
1041
  JSJitInfo::Setter,
1042
  JSJitInfo::AliasEverything, /* aliasSet.  Not relevant for setters. */
1043
  JSVAL_TYPE_UNDEFINED,  /* returnType.  Not relevant for setters. */
1044
  false,  /* isInfallible. False in setters. */
1045
  false,  /* isMovable.  Not relevant for setters. */
1046
  false, /* isEliminatable.  Not relevant for setters. */
1047
  false, /* isAlwaysInSlot.  Only relevant for getters. */
1048
  false, /* isLazilyCachedInSlot.  Only relevant for getters. */
1049
  false,  /* isTypedMethod.  Only relevant for methods. */
1050
  0   /* Reserved slot index, if we're stored in a slot, else 0. */
1051
};
1052
static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1053
static_assert(0 < 1, "There is no slot for us");
1054
1055
MOZ_CAN_RUN_SCRIPT static bool
1056
get_onstorage(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::HTMLFrameSetElement* self, JSJitGetterCallArgs args)
1057
0
{
1058
0
  AUTO_PROFILER_LABEL_FAST("get HTMLFrameSetElement.onstorage", DOM, cx);
1059
0
1060
0
  RefPtr<EventHandlerNonNull> result(self->GetOnstorage());
1061
0
  MOZ_ASSERT(!JS_IsExceptionPending(cx));
1062
0
  if (result) {
1063
0
    args.rval().setObjectOrNull(GetCallbackFromCallbackObject(cx, result));
1064
0
    if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
1065
0
      return false;
1066
0
    }
1067
0
    return true;
1068
0
  } else {
1069
0
    args.rval().setNull();
1070
0
    return true;
1071
0
  }
1072
0
}
1073
1074
MOZ_CAN_RUN_SCRIPT static bool
1075
set_onstorage(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::HTMLFrameSetElement* self, JSJitSetterCallArgs args)
1076
0
{
1077
0
  AUTO_PROFILER_LABEL_FAST("set HTMLFrameSetElement.onstorage", DOM, cx);
1078
0
1079
0
  RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
1080
0
  if (args[0].isObject()) {
1081
0
    { // scope for tempRoot and tempGlobalRoot if needed
1082
0
      arg0 = new binding_detail::FastEventHandlerNonNull(&args[0].toObject(), JS::CurrentGlobalOrNull(cx));
1083
0
    }
1084
0
  } else {
1085
0
    arg0 = nullptr;
1086
0
  }
1087
0
  self->SetOnstorage(Constify(arg0));
1088
0
  MOZ_ASSERT(!JS_IsExceptionPending(cx));
1089
0
1090
0
  return true;
1091
0
}
1092
1093
static const JSJitInfo onstorage_getterinfo = {
1094
  { (JSJitGetterOp)get_onstorage },
1095
  { prototypes::id::HTMLFrameSetElement },
1096
  { PrototypeTraits<prototypes::id::HTMLFrameSetElement>::Depth },
1097
  JSJitInfo::Getter,
1098
  JSJitInfo::AliasEverything, /* aliasSet.  Not relevant for setters. */
1099
  JSVAL_TYPE_UNKNOWN,  /* returnType.  Not relevant for setters. */
1100
  false,  /* isInfallible. False in setters. */
1101
  false,  /* isMovable.  Not relevant for setters. */
1102
  false, /* isEliminatable.  Not relevant for setters. */
1103
  false, /* isAlwaysInSlot.  Only relevant for getters. */
1104
  false, /* isLazilyCachedInSlot.  Only relevant for getters. */
1105
  false,  /* isTypedMethod.  Only relevant for methods. */
1106
  0   /* Reserved slot index, if we're stored in a slot, else 0. */
1107
};
1108
static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1109
static_assert(0 < 1, "There is no slot for us");
1110
static const JSJitInfo onstorage_setterinfo = {
1111
  { (JSJitGetterOp)set_onstorage },
1112
  { prototypes::id::HTMLFrameSetElement },
1113
  { PrototypeTraits<prototypes::id::HTMLFrameSetElement>::Depth },
1114
  JSJitInfo::Setter,
1115
  JSJitInfo::AliasEverything, /* aliasSet.  Not relevant for setters. */
1116
  JSVAL_TYPE_UNDEFINED,  /* returnType.  Not relevant for setters. */
1117
  false,  /* isInfallible. False in setters. */
1118
  false,  /* isMovable.  Not relevant for setters. */
1119
  false, /* isEliminatable.  Not relevant for setters. */
1120
  false, /* isAlwaysInSlot.  Only relevant for getters. */
1121
  false, /* isLazilyCachedInSlot.  Only relevant for getters. */
1122
  false,  /* isTypedMethod.  Only relevant for methods. */
1123
  0   /* Reserved slot index, if we're stored in a slot, else 0. */
1124
};
1125
static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1126
static_assert(0 < 1, "There is no slot for us");
1127
1128
MOZ_CAN_RUN_SCRIPT static bool
1129
get_onunload(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::HTMLFrameSetElement* self, JSJitGetterCallArgs args)
1130
0
{
1131
0
  AUTO_PROFILER_LABEL_FAST("get HTMLFrameSetElement.onunload", DOM, cx);
1132
0
1133
0
  RefPtr<EventHandlerNonNull> result(self->GetOnunload());
1134
0
  MOZ_ASSERT(!JS_IsExceptionPending(cx));
1135
0
  if (result) {
1136
0
    args.rval().setObjectOrNull(GetCallbackFromCallbackObject(cx, result));
1137
0
    if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
1138
0
      return false;
1139
0
    }
1140
0
    return true;
1141
0
  } else {
1142
0
    args.rval().setNull();
1143
0
    return true;
1144
0
  }
1145
0
}
1146
1147
MOZ_CAN_RUN_SCRIPT static bool
1148
set_onunload(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::HTMLFrameSetElement* self, JSJitSetterCallArgs args)
1149
0
{
1150
0
  AUTO_PROFILER_LABEL_FAST("set HTMLFrameSetElement.onunload", DOM, cx);
1151
0
1152
0
  RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
1153
0
  if (args[0].isObject()) {
1154
0
    { // scope for tempRoot and tempGlobalRoot if needed
1155
0
      arg0 = new binding_detail::FastEventHandlerNonNull(&args[0].toObject(), JS::CurrentGlobalOrNull(cx));
1156
0
    }
1157
0
  } else {
1158
0
    arg0 = nullptr;
1159
0
  }
1160
0
  self->SetOnunload(Constify(arg0));
1161
0
  MOZ_ASSERT(!JS_IsExceptionPending(cx));
1162
0
1163
0
  return true;
1164
0
}
1165
1166
static const JSJitInfo onunload_getterinfo = {
1167
  { (JSJitGetterOp)get_onunload },
1168
  { prototypes::id::HTMLFrameSetElement },
1169
  { PrototypeTraits<prototypes::id::HTMLFrameSetElement>::Depth },
1170
  JSJitInfo::Getter,
1171
  JSJitInfo::AliasEverything, /* aliasSet.  Not relevant for setters. */
1172
  JSVAL_TYPE_UNKNOWN,  /* returnType.  Not relevant for setters. */
1173
  false,  /* isInfallible. False in setters. */
1174
  false,  /* isMovable.  Not relevant for setters. */
1175
  false, /* isEliminatable.  Not relevant for setters. */
1176
  false, /* isAlwaysInSlot.  Only relevant for getters. */
1177
  false, /* isLazilyCachedInSlot.  Only relevant for getters. */
1178
  false,  /* isTypedMethod.  Only relevant for methods. */
1179
  0   /* Reserved slot index, if we're stored in a slot, else 0. */
1180
};
1181
static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1182
static_assert(0 < 1, "There is no slot for us");
1183
static const JSJitInfo onunload_setterinfo = {
1184
  { (JSJitGetterOp)set_onunload },
1185
  { prototypes::id::HTMLFrameSetElement },
1186
  { PrototypeTraits<prototypes::id::HTMLFrameSetElement>::Depth },
1187
  JSJitInfo::Setter,
1188
  JSJitInfo::AliasEverything, /* aliasSet.  Not relevant for setters. */
1189
  JSVAL_TYPE_UNDEFINED,  /* returnType.  Not relevant for setters. */
1190
  false,  /* isInfallible. False in setters. */
1191
  false,  /* isMovable.  Not relevant for setters. */
1192
  false, /* isEliminatable.  Not relevant for setters. */
1193
  false, /* isAlwaysInSlot.  Only relevant for getters. */
1194
  false, /* isLazilyCachedInSlot.  Only relevant for getters. */
1195
  false,  /* isTypedMethod.  Only relevant for methods. */
1196
  0   /* Reserved slot index, if we're stored in a slot, else 0. */
1197
};
1198
static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1199
static_assert(0 < 1, "There is no slot for us");
1200
1201
static bool
1202
_addProperty(JSContext* cx, JS::Handle<JSObject*> obj, JS::Handle<jsid> id, JS::Handle<JS::Value> val)
1203
0
{
1204
0
  mozilla::dom::HTMLFrameSetElement* self = UnwrapPossiblyNotInitializedDOMObject<mozilla::dom::HTMLFrameSetElement>(obj);
1205
0
  // We don't want to preserve if we don't have a wrapper, and we
1206
0
  // obviously can't preserve if we're not initialized.
1207
0
  if (self && self->GetWrapperPreserveColor()) {
1208
0
    PreserveWrapper(self);
1209
0
  }
1210
0
  return true;
1211
0
}
1212
1213
static void
1214
_finalize(js::FreeOp* fop, JSObject* obj)
1215
0
{
1216
0
  mozilla::dom::HTMLFrameSetElement* self = UnwrapPossiblyNotInitializedDOMObject<mozilla::dom::HTMLFrameSetElement>(obj);
1217
0
  if (self) {
1218
0
    ClearWrapper(self, self, obj);
1219
0
    AddForDeferredFinalization<mozilla::dom::HTMLFrameSetElement>(self);
1220
0
  }
1221
0
}
1222
1223
static size_t
1224
_objectMoved(JSObject* obj, JSObject* old)
1225
0
{
1226
0
  mozilla::dom::HTMLFrameSetElement* self = UnwrapPossiblyNotInitializedDOMObject<mozilla::dom::HTMLFrameSetElement>(obj);
1227
0
  if (self) {
1228
0
    UpdateWrapper(self, self, obj, old);
1229
0
  }
1230
0
1231
0
  return 0;
1232
0
}
1233
1234
// We deliberately use brace-elision to make Visual Studio produce better initalization code.
1235
#if defined(__clang__)
1236
#pragma clang diagnostic push
1237
#pragma clang diagnostic ignored "-Wmissing-braces"
1238
#endif
1239
static const JSPropertySpec sAttributes_specs[] = {
1240
  { "cols", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &cols_getterinfo, GenericSetter<NormalThisPolicy>, &cols_setterinfo },
1241
  { "rows", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &rows_getterinfo, GenericSetter<NormalThisPolicy>, &rows_setterinfo },
1242
  { "onafterprint", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &onafterprint_getterinfo, GenericSetter<NormalThisPolicy>, &onafterprint_setterinfo },
1243
  { "onbeforeprint", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &onbeforeprint_getterinfo, GenericSetter<NormalThisPolicy>, &onbeforeprint_setterinfo },
1244
  { "onbeforeunload", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &onbeforeunload_getterinfo, GenericSetter<NormalThisPolicy>, &onbeforeunload_setterinfo },
1245
  { "onhashchange", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &onhashchange_getterinfo, GenericSetter<NormalThisPolicy>, &onhashchange_setterinfo },
1246
  { "onlanguagechange", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &onlanguagechange_getterinfo, GenericSetter<NormalThisPolicy>, &onlanguagechange_setterinfo },
1247
  { "onmessage", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &onmessage_getterinfo, GenericSetter<NormalThisPolicy>, &onmessage_setterinfo },
1248
  { "onmessageerror", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &onmessageerror_getterinfo, GenericSetter<NormalThisPolicy>, &onmessageerror_setterinfo },
1249
  { "onoffline", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &onoffline_getterinfo, GenericSetter<NormalThisPolicy>, &onoffline_setterinfo },
1250
  { "ononline", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &ononline_getterinfo, GenericSetter<NormalThisPolicy>, &ononline_setterinfo },
1251
  { "onpagehide", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &onpagehide_getterinfo, GenericSetter<NormalThisPolicy>, &onpagehide_setterinfo },
1252
  { "onpageshow", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &onpageshow_getterinfo, GenericSetter<NormalThisPolicy>, &onpageshow_setterinfo },
1253
  { "onpopstate", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &onpopstate_getterinfo, GenericSetter<NormalThisPolicy>, &onpopstate_setterinfo },
1254
  { "onstorage", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &onstorage_getterinfo, GenericSetter<NormalThisPolicy>, &onstorage_setterinfo },
1255
  { "onunload", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &onunload_getterinfo, GenericSetter<NormalThisPolicy>, &onunload_setterinfo },
1256
  { nullptr, 0, nullptr, nullptr, nullptr, nullptr }
1257
};
1258
#if defined(__clang__)
1259
#pragma clang diagnostic pop
1260
#endif
1261
1262
1263
static const Prefable<const JSPropertySpec> sAttributes[] = {
1264
  { nullptr, &sAttributes_specs[0] },
1265
  { nullptr, nullptr }
1266
};
1267
1268
static_assert(1 <= 1ull << NUM_BITS_PROPERTY_INFO_PREF_INDEX,
1269
    "We have a prefable index that is >= (1 << NUM_BITS_PROPERTY_INFO_PREF_INDEX)");
1270
static_assert(16 <= 1ull << NUM_BITS_PROPERTY_INFO_SPEC_INDEX,
1271
    "We have a spec index that is >= (1 << NUM_BITS_PROPERTY_INFO_SPEC_INDEX)");
1272
1273
1274
static uint16_t sNativeProperties_sortedPropertyIndices[16];
1275
static PropertyInfo sNativeProperties_propertyInfos[16];
1276
1277
static const NativePropertiesN<1> sNativeProperties = {
1278
  false, 0,
1279
  false, 0,
1280
  false, 0,
1281
  true,  0 /* sAttributes */,
1282
  false, 0,
1283
  false, 0,
1284
  false, 0,
1285
  -1,
1286
  16,
1287
  sNativeProperties_sortedPropertyIndices,
1288
  {
1289
    { sAttributes, &sNativeProperties_propertyInfos[0] }
1290
  }
1291
};
1292
static_assert(16 < 1ull << CHAR_BIT * sizeof(sNativeProperties.propertyInfoCount),
1293
    "We have a property info count that is oversized");
1294
1295
static bool
1296
_constructor(JSContext* cx, unsigned argc, JS::Value* vp)
1297
0
{
1298
0
  AUTO_PROFILER_LABEL_FAST("HTMLFrameSetElement constructor", DOM, cx);
1299
0
1300
0
  return HTMLConstructor(cx, argc, vp,
1301
0
                         constructors::id::HTMLFrameSetElement,
1302
0
                         prototypes::id::HTMLFrameSetElement,
1303
0
                         CreateInterfaceObjects);
1304
0
}
1305
1306
static const js::ClassOps sInterfaceObjectClassOps = {
1307
    nullptr,               /* addProperty */
1308
    nullptr,               /* delProperty */
1309
    nullptr,               /* enumerate */
1310
    nullptr,               /* newEnumerate */
1311
    nullptr,               /* resolve */
1312
    nullptr,               /* mayResolve */
1313
    nullptr,               /* finalize */
1314
    _constructor, /* call */
1315
    nullptr,               /* hasInstance */
1316
    _constructor, /* construct */
1317
    nullptr,               /* trace */
1318
};
1319
1320
static const DOMIfaceAndProtoJSClass sInterfaceObjectClass = {
1321
  {
1322
    "Function",
1323
    JSCLASS_IS_DOMIFACEANDPROTOJSCLASS | JSCLASS_HAS_RESERVED_SLOTS(DOM_INTERFACE_SLOTS_BASE),
1324
    &sInterfaceObjectClassOps,
1325
    JS_NULL_CLASS_SPEC,
1326
    JS_NULL_CLASS_EXT,
1327
    &sInterfaceObjectClassObjectOps
1328
  },
1329
  eInterface,
1330
  true,
1331
  prototypes::id::HTMLFrameSetElement,
1332
  PrototypeTraits<prototypes::id::HTMLFrameSetElement>::Depth,
1333
  sNativePropertyHooks,
1334
  "function HTMLFrameSetElement() {\n    [native code]\n}",
1335
  HTMLElement_Binding::GetConstructorObject
1336
};
1337
1338
static const DOMIfaceAndProtoJSClass sPrototypeClass = {
1339
  {
1340
    "HTMLFrameSetElementPrototype",
1341
    JSCLASS_IS_DOMIFACEANDPROTOJSCLASS | JSCLASS_HAS_RESERVED_SLOTS(DOM_INTERFACE_PROTO_SLOTS_BASE),
1342
    JS_NULL_CLASS_OPS,
1343
    JS_NULL_CLASS_SPEC,
1344
    JS_NULL_CLASS_EXT,
1345
    JS_NULL_OBJECT_OPS
1346
  },
1347
  eInterfacePrototype,
1348
  false,
1349
  prototypes::id::HTMLFrameSetElement,
1350
  PrototypeTraits<prototypes::id::HTMLFrameSetElement>::Depth,
1351
  sNativePropertyHooks,
1352
  "[object HTMLFrameSetElementPrototype]",
1353
  HTMLElement_Binding::GetProtoObject
1354
};
1355
1356
static const js::ClassOps sClassOps = {
1357
  _addProperty, /* addProperty */
1358
  nullptr,               /* delProperty */
1359
  nullptr,               /* enumerate */
1360
  nullptr, /* newEnumerate */
1361
  nullptr, /* resolve */
1362
  nullptr, /* mayResolve */
1363
  _finalize, /* finalize */
1364
  nullptr, /* call */
1365
  nullptr,               /* hasInstance */
1366
  nullptr,               /* construct */
1367
  nullptr, /* trace */
1368
};
1369
1370
static const js::ClassExtension sClassExtension = {
1371
  nullptr, /* weakmapKeyDelegateOp */
1372
  _objectMoved /* objectMovedOp */
1373
};
1374
1375
static const DOMJSClass sClass = {
1376
  { "HTMLFrameSetElement",
1377
    JSCLASS_IS_DOMJSCLASS | JSCLASS_FOREGROUND_FINALIZE | JSCLASS_HAS_RESERVED_SLOTS(1),
1378
    &sClassOps,
1379
    JS_NULL_CLASS_SPEC,
1380
    &sClassExtension,
1381
    JS_NULL_OBJECT_OPS
1382
  },
1383
  { prototypes::id::EventTarget, prototypes::id::Node, prototypes::id::Element, prototypes::id::HTMLElement, prototypes::id::HTMLFrameSetElement, prototypes::id::_ID_Count, prototypes::id::_ID_Count, prototypes::id::_ID_Count },
1384
  IsBaseOf<nsISupports, mozilla::dom::HTMLFrameSetElement >::value,
1385
  sNativePropertyHooks,
1386
  FindAssociatedGlobalForNative<mozilla::dom::HTMLFrameSetElement>::Get,
1387
  GetProtoObjectHandle,
1388
  GetCCParticipant<mozilla::dom::HTMLFrameSetElement>::Get()
1389
};
1390
static_assert(1 == DOM_INSTANCE_RESERVED_SLOTS,
1391
              "Must have the right minimal number of reserved slots.");
1392
static_assert(1 >= 1,
1393
              "Must have enough reserved slots.");
1394
1395
const JSClass*
1396
GetJSClass()
1397
0
{
1398
0
  return sClass.ToJSClass();
1399
0
}
1400
1401
bool
1402
Wrap(JSContext* aCx, mozilla::dom::HTMLFrameSetElement* aObject, nsWrapperCache* aCache, JS::Handle<JSObject*> aGivenProto, JS::MutableHandle<JSObject*> aReflector)
1403
0
{
1404
0
  static_assert(!IsBaseOf<NonRefcountedDOMObject, mozilla::dom::HTMLFrameSetElement>::value,
1405
0
                "Shouldn't have wrappercached things that are not refcounted.");
1406
0
  MOZ_ASSERT(static_cast<mozilla::dom::HTMLFrameSetElement*>(aObject) ==
1407
0
             reinterpret_cast<mozilla::dom::HTMLFrameSetElement*>(aObject),
1408
0
             "Multiple inheritance for mozilla::dom::HTMLFrameSetElement is broken.");
1409
0
  MOZ_ASSERT(static_cast<nsGenericHTMLElement*>(aObject) ==
1410
0
             reinterpret_cast<nsGenericHTMLElement*>(aObject),
1411
0
             "Multiple inheritance for nsGenericHTMLElement is broken.");
1412
0
  MOZ_ASSERT(static_cast<mozilla::dom::Element*>(aObject) ==
1413
0
             reinterpret_cast<mozilla::dom::Element*>(aObject),
1414
0
             "Multiple inheritance for mozilla::dom::Element is broken.");
1415
0
  MOZ_ASSERT(static_cast<nsINode*>(aObject) ==
1416
0
             reinterpret_cast<nsINode*>(aObject),
1417
0
             "Multiple inheritance for nsINode is broken.");
1418
0
  MOZ_ASSERT(static_cast<mozilla::dom::EventTarget*>(aObject) ==
1419
0
             reinterpret_cast<mozilla::dom::EventTarget*>(aObject),
1420
0
             "Multiple inheritance for mozilla::dom::EventTarget is broken.");
1421
0
  MOZ_ASSERT(ToSupportsIsCorrect(aObject));
1422
0
  MOZ_ASSERT_IF(aGivenProto, js::IsObjectInContextCompartment(aGivenProto, aCx));
1423
0
  MOZ_ASSERT(!aCache->GetWrapper(),
1424
0
             "You should probably not be using Wrap() directly; use "
1425
0
             "GetOrCreateDOMReflector instead");
1426
0
1427
0
  MOZ_ASSERT(ToSupportsIsOnPrimaryInheritanceChain(aObject, aCache),
1428
0
             "nsISupports must be on our primary inheritance chain");
1429
0
1430
0
  JS::Rooted<JSObject*> global(aCx, FindAssociatedGlobal(aCx, aObject->GetParentObject()));
1431
0
  if (!global) {
1432
0
    return false;
1433
0
  }
1434
0
  MOZ_ASSERT(JS_IsGlobalObject(global));
1435
0
  MOZ_ASSERT(JS::ObjectIsNotGray(global));
1436
0
1437
0
  // That might have ended up wrapping us already, due to the wonders
1438
0
  // of XBL.  Check for that, and bail out as needed.
1439
0
  aReflector.set(aCache->GetWrapper());
1440
0
  if (aReflector) {
1441
#ifdef DEBUG
1442
    AssertReflectorHasGivenProto(aCx, aReflector, aGivenProto);
1443
#endif // DEBUG
1444
    return true;
1445
0
  }
1446
0
1447
0
  JSAutoRealm ar(aCx, global);
1448
0
  JS::Handle<JSObject*> canonicalProto = GetProtoObjectHandle(aCx);
1449
0
  if (!canonicalProto) {
1450
0
    return false;
1451
0
  }
1452
0
  JS::Rooted<JSObject*> proto(aCx);
1453
0
  if (aGivenProto) {
1454
0
    proto = aGivenProto;
1455
0
    // Unfortunately, while aGivenProto was in the compartment of aCx
1456
0
    // coming in, we changed compartments to that of "parent" so may need
1457
0
    // to wrap the proto here.
1458
0
    if (js::GetContextCompartment(aCx) != js::GetObjectCompartment(proto)) {
1459
0
      if (!JS_WrapObject(aCx, &proto)) {
1460
0
        return false;
1461
0
      }
1462
0
    }
1463
0
  } else {
1464
0
    proto = canonicalProto;
1465
0
  }
1466
0
1467
0
  BindingJSObjectCreator<mozilla::dom::HTMLFrameSetElement> creator(aCx);
1468
0
  creator.CreateObject(aCx, sClass.ToJSClass(), proto, aObject, aReflector);
1469
0
  if (!aReflector) {
1470
0
    return false;
1471
0
  }
1472
0
1473
0
  aCache->SetWrapper(aReflector);
1474
0
  creator.InitializationSucceeded();
1475
0
1476
0
  MOZ_ASSERT(aCache->GetWrapperPreserveColor() &&
1477
0
             aCache->GetWrapperPreserveColor() == aReflector);
1478
0
  // If proto != canonicalProto, we have to preserve our wrapper;
1479
0
  // otherwise we won't be able to properly recreate it later, since
1480
0
  // we won't know what proto to use.  Note that we don't check
1481
0
  // aGivenProto here, since it's entirely possible (and even
1482
0
  // somewhat common) to have a non-null aGivenProto which is the
1483
0
  // same as canonicalProto.
1484
0
  if (proto != canonicalProto) {
1485
0
    PreserveWrapper(aObject);
1486
0
  }
1487
0
1488
0
  return true;
1489
0
}
1490
1491
const NativePropertyHooks sNativePropertyHooks[] = { {
1492
  nullptr,
1493
  nullptr,
1494
  nullptr,
1495
  { sNativeProperties.Upcast(), nullptr },
1496
  prototypes::id::HTMLFrameSetElement,
1497
  constructors::id::HTMLFrameSetElement,
1498
  HTMLElement_Binding::sNativePropertyHooks,
1499
  &DefaultXrayExpandoObjectClass
1500
} };
1501
1502
void
1503
CreateInterfaceObjects(JSContext* aCx, JS::Handle<JSObject*> aGlobal, ProtoAndIfaceCache& aProtoAndIfaceCache, bool aDefineOnGlobal)
1504
0
{
1505
0
  JS::Handle<JSObject*> parentProto(HTMLElement_Binding::GetProtoObjectHandle(aCx));
1506
0
  if (!parentProto) {
1507
0
    return;
1508
0
  }
1509
0
1510
0
  JS::Handle<JSObject*> constructorProto(HTMLElement_Binding::GetConstructorObjectHandle(aCx));
1511
0
  if (!constructorProto) {
1512
0
    return;
1513
0
  }
1514
0
1515
0
  static bool sIdsInited = false;
1516
0
  if (!sIdsInited && NS_IsMainThread()) {
1517
0
    if (!InitIds(aCx, sNativeProperties.Upcast())) {
1518
0
      return;
1519
0
    }
1520
0
    sIdsInited = true;
1521
0
  }
1522
0
1523
0
  JS::Heap<JSObject*>* protoCache = &aProtoAndIfaceCache.EntrySlotOrCreate(prototypes::id::HTMLFrameSetElement);
1524
0
  JS::Heap<JSObject*>* interfaceCache = &aProtoAndIfaceCache.EntrySlotOrCreate(constructors::id::HTMLFrameSetElement);
1525
0
  dom::CreateInterfaceObjects(aCx, aGlobal, parentProto,
1526
0
                              &sPrototypeClass.mBase, protoCache,
1527
0
                              nullptr,
1528
0
                              constructorProto, &sInterfaceObjectClass.mBase, 0, nullptr,
1529
0
                              interfaceCache,
1530
0
                              sNativeProperties.Upcast(),
1531
0
                              nullptr,
1532
0
                              "HTMLFrameSetElement", aDefineOnGlobal,
1533
0
                              nullptr,
1534
0
                              false);
1535
0
}
1536
1537
JSObject*
1538
GetConstructorObject(JSContext* aCx)
1539
0
{
1540
0
  return GetConstructorObjectHandle(aCx);
1541
0
}
1542
1543
} // namespace HTMLFrameSetElement_Binding
1544
1545
1546
1547
} // namespace dom
1548
} // namespace mozilla