Coverage Report

Created: 2018-09-25 14:53

/work/obj-fuzz/dom/bindings/CSSCounterStyleRuleBinding.cpp
Line
Count
Source (jump to first uncovered line)
1
/* THIS FILE IS AUTOGENERATED FROM CSSCounterStyleRule.webidl BY Codegen.py - DO NOT EDIT */
2
3
#include "CSSCounterStyleRuleBinding.h"
4
#include "CSSRuleBinding.h"
5
#include "WrapperFactory.h"
6
#include "mozilla/OwningNonNull.h"
7
#include "mozilla/dom/BindingUtils.h"
8
#include "mozilla/dom/CSSCounterStyleRule.h"
9
#include "mozilla/dom/DOMJSClass.h"
10
#include "mozilla/dom/NonRefcountedDOMObject.h"
11
#include "mozilla/dom/XrayExpandoClass.h"
12
13
namespace mozilla {
14
namespace dom {
15
16
namespace binding_detail {}; // Just to make sure it's known as a namespace
17
using namespace mozilla::dom::binding_detail;
18
19
20
namespace CSSCounterStyleRule_Binding {
21
22
static_assert(IsRefcounted<NativeType>::value == IsRefcounted<CSSRule_Binding::NativeType>::value,
23
              "Can't inherit from an interface with a different ownership model.");
24
25
MOZ_CAN_RUN_SCRIPT static bool
26
get_name(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::CSSCounterStyleRule* self, JSJitGetterCallArgs args)
27
0
{
28
0
  AUTO_PROFILER_LABEL_FAST("get CSSCounterStyleRule.name", DOM, cx);
29
0
30
0
  DOMString result;
31
0
  self->GetName(result);
32
0
  MOZ_ASSERT(!JS_IsExceptionPending(cx));
33
0
  if (!xpc::NonVoidStringToJsval(cx, result, args.rval())) {
34
0
    return false;
35
0
  }
36
0
  return true;
37
0
}
38
39
MOZ_CAN_RUN_SCRIPT static bool
40
set_name(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::CSSCounterStyleRule* self, JSJitSetterCallArgs args)
41
0
{
42
0
  AUTO_PROFILER_LABEL_FAST("set CSSCounterStyleRule.name", DOM, cx);
43
0
44
0
  binding_detail::FakeString arg0;
45
0
  if (!ConvertJSValueToString(cx, args[0], eStringify, eStringify, arg0)) {
46
0
    return false;
47
0
  }
48
0
  self->SetName(NonNullHelper(Constify(arg0)));
49
0
  MOZ_ASSERT(!JS_IsExceptionPending(cx));
50
0
51
0
  return true;
52
0
}
53
54
static const JSJitInfo name_getterinfo = {
55
  { (JSJitGetterOp)get_name },
56
  { prototypes::id::CSSCounterStyleRule },
57
  { PrototypeTraits<prototypes::id::CSSCounterStyleRule>::Depth },
58
  JSJitInfo::Getter,
59
  JSJitInfo::AliasEverything, /* aliasSet.  Not relevant for setters. */
60
  JSVAL_TYPE_STRING,  /* returnType.  Not relevant for setters. */
61
  false,  /* isInfallible. False in setters. */
62
  false,  /* isMovable.  Not relevant for setters. */
63
  false, /* isEliminatable.  Not relevant for setters. */
64
  false, /* isAlwaysInSlot.  Only relevant for getters. */
65
  false, /* isLazilyCachedInSlot.  Only relevant for getters. */
66
  false,  /* isTypedMethod.  Only relevant for methods. */
67
  0   /* Reserved slot index, if we're stored in a slot, else 0. */
68
};
69
static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
70
static_assert(0 < 1, "There is no slot for us");
71
static const JSJitInfo name_setterinfo = {
72
  { (JSJitGetterOp)set_name },
73
  { prototypes::id::CSSCounterStyleRule },
74
  { PrototypeTraits<prototypes::id::CSSCounterStyleRule>::Depth },
75
  JSJitInfo::Setter,
76
  JSJitInfo::AliasEverything, /* aliasSet.  Not relevant for setters. */
77
  JSVAL_TYPE_UNDEFINED,  /* returnType.  Not relevant for setters. */
78
  false,  /* isInfallible. False in setters. */
79
  false,  /* isMovable.  Not relevant for setters. */
80
  false, /* isEliminatable.  Not relevant for setters. */
81
  false, /* isAlwaysInSlot.  Only relevant for getters. */
82
  false, /* isLazilyCachedInSlot.  Only relevant for getters. */
83
  false,  /* isTypedMethod.  Only relevant for methods. */
84
  0   /* Reserved slot index, if we're stored in a slot, else 0. */
85
};
86
static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
87
static_assert(0 < 1, "There is no slot for us");
88
89
MOZ_CAN_RUN_SCRIPT static bool
90
get_system(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::CSSCounterStyleRule* self, JSJitGetterCallArgs args)
91
0
{
92
0
  AUTO_PROFILER_LABEL_FAST("get CSSCounterStyleRule.system", DOM, cx);
93
0
94
0
  DOMString result;
95
0
  self->GetSystem(result);
96
0
  MOZ_ASSERT(!JS_IsExceptionPending(cx));
97
0
  if (!xpc::NonVoidStringToJsval(cx, result, args.rval())) {
98
0
    return false;
99
0
  }
100
0
  return true;
101
0
}
102
103
MOZ_CAN_RUN_SCRIPT static bool
104
set_system(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::CSSCounterStyleRule* self, JSJitSetterCallArgs args)
105
0
{
106
0
  AUTO_PROFILER_LABEL_FAST("set CSSCounterStyleRule.system", DOM, cx);
107
0
108
0
  binding_detail::FakeString arg0;
109
0
  if (!ConvertJSValueToString(cx, args[0], eStringify, eStringify, arg0)) {
110
0
    return false;
111
0
  }
112
0
  self->SetSystem(NonNullHelper(Constify(arg0)));
113
0
  MOZ_ASSERT(!JS_IsExceptionPending(cx));
114
0
115
0
  return true;
116
0
}
117
118
static const JSJitInfo system_getterinfo = {
119
  { (JSJitGetterOp)get_system },
120
  { prototypes::id::CSSCounterStyleRule },
121
  { PrototypeTraits<prototypes::id::CSSCounterStyleRule>::Depth },
122
  JSJitInfo::Getter,
123
  JSJitInfo::AliasEverything, /* aliasSet.  Not relevant for setters. */
124
  JSVAL_TYPE_STRING,  /* returnType.  Not relevant for setters. */
125
  false,  /* isInfallible. False in setters. */
126
  false,  /* isMovable.  Not relevant for setters. */
127
  false, /* isEliminatable.  Not relevant for setters. */
128
  false, /* isAlwaysInSlot.  Only relevant for getters. */
129
  false, /* isLazilyCachedInSlot.  Only relevant for getters. */
130
  false,  /* isTypedMethod.  Only relevant for methods. */
131
  0   /* Reserved slot index, if we're stored in a slot, else 0. */
132
};
133
static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
134
static_assert(0 < 1, "There is no slot for us");
135
static const JSJitInfo system_setterinfo = {
136
  { (JSJitGetterOp)set_system },
137
  { prototypes::id::CSSCounterStyleRule },
138
  { PrototypeTraits<prototypes::id::CSSCounterStyleRule>::Depth },
139
  JSJitInfo::Setter,
140
  JSJitInfo::AliasEverything, /* aliasSet.  Not relevant for setters. */
141
  JSVAL_TYPE_UNDEFINED,  /* returnType.  Not relevant for setters. */
142
  false,  /* isInfallible. False in setters. */
143
  false,  /* isMovable.  Not relevant for setters. */
144
  false, /* isEliminatable.  Not relevant for setters. */
145
  false, /* isAlwaysInSlot.  Only relevant for getters. */
146
  false, /* isLazilyCachedInSlot.  Only relevant for getters. */
147
  false,  /* isTypedMethod.  Only relevant for methods. */
148
  0   /* Reserved slot index, if we're stored in a slot, else 0. */
149
};
150
static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
151
static_assert(0 < 1, "There is no slot for us");
152
153
MOZ_CAN_RUN_SCRIPT static bool
154
get_symbols(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::CSSCounterStyleRule* self, JSJitGetterCallArgs args)
155
0
{
156
0
  AUTO_PROFILER_LABEL_FAST("get CSSCounterStyleRule.symbols", DOM, cx);
157
0
158
0
  DOMString result;
159
0
  self->GetSymbols(result);
160
0
  MOZ_ASSERT(!JS_IsExceptionPending(cx));
161
0
  if (!xpc::NonVoidStringToJsval(cx, result, args.rval())) {
162
0
    return false;
163
0
  }
164
0
  return true;
165
0
}
166
167
MOZ_CAN_RUN_SCRIPT static bool
168
set_symbols(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::CSSCounterStyleRule* self, JSJitSetterCallArgs args)
169
0
{
170
0
  AUTO_PROFILER_LABEL_FAST("set CSSCounterStyleRule.symbols", DOM, cx);
171
0
172
0
  binding_detail::FakeString arg0;
173
0
  if (!ConvertJSValueToString(cx, args[0], eStringify, eStringify, arg0)) {
174
0
    return false;
175
0
  }
176
0
  self->SetSymbols(NonNullHelper(Constify(arg0)));
177
0
  MOZ_ASSERT(!JS_IsExceptionPending(cx));
178
0
179
0
  return true;
180
0
}
181
182
static const JSJitInfo symbols_getterinfo = {
183
  { (JSJitGetterOp)get_symbols },
184
  { prototypes::id::CSSCounterStyleRule },
185
  { PrototypeTraits<prototypes::id::CSSCounterStyleRule>::Depth },
186
  JSJitInfo::Getter,
187
  JSJitInfo::AliasEverything, /* aliasSet.  Not relevant for setters. */
188
  JSVAL_TYPE_STRING,  /* returnType.  Not relevant for setters. */
189
  false,  /* isInfallible. False in setters. */
190
  false,  /* isMovable.  Not relevant for setters. */
191
  false, /* isEliminatable.  Not relevant for setters. */
192
  false, /* isAlwaysInSlot.  Only relevant for getters. */
193
  false, /* isLazilyCachedInSlot.  Only relevant for getters. */
194
  false,  /* isTypedMethod.  Only relevant for methods. */
195
  0   /* Reserved slot index, if we're stored in a slot, else 0. */
196
};
197
static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
198
static_assert(0 < 1, "There is no slot for us");
199
static const JSJitInfo symbols_setterinfo = {
200
  { (JSJitGetterOp)set_symbols },
201
  { prototypes::id::CSSCounterStyleRule },
202
  { PrototypeTraits<prototypes::id::CSSCounterStyleRule>::Depth },
203
  JSJitInfo::Setter,
204
  JSJitInfo::AliasEverything, /* aliasSet.  Not relevant for setters. */
205
  JSVAL_TYPE_UNDEFINED,  /* returnType.  Not relevant for setters. */
206
  false,  /* isInfallible. False in setters. */
207
  false,  /* isMovable.  Not relevant for setters. */
208
  false, /* isEliminatable.  Not relevant for setters. */
209
  false, /* isAlwaysInSlot.  Only relevant for getters. */
210
  false, /* isLazilyCachedInSlot.  Only relevant for getters. */
211
  false,  /* isTypedMethod.  Only relevant for methods. */
212
  0   /* Reserved slot index, if we're stored in a slot, else 0. */
213
};
214
static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
215
static_assert(0 < 1, "There is no slot for us");
216
217
MOZ_CAN_RUN_SCRIPT static bool
218
get_additiveSymbols(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::CSSCounterStyleRule* self, JSJitGetterCallArgs args)
219
0
{
220
0
  AUTO_PROFILER_LABEL_FAST("get CSSCounterStyleRule.additiveSymbols", DOM, cx);
221
0
222
0
  DOMString result;
223
0
  self->GetAdditiveSymbols(result);
224
0
  MOZ_ASSERT(!JS_IsExceptionPending(cx));
225
0
  if (!xpc::NonVoidStringToJsval(cx, result, args.rval())) {
226
0
    return false;
227
0
  }
228
0
  return true;
229
0
}
230
231
MOZ_CAN_RUN_SCRIPT static bool
232
set_additiveSymbols(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::CSSCounterStyleRule* self, JSJitSetterCallArgs args)
233
0
{
234
0
  AUTO_PROFILER_LABEL_FAST("set CSSCounterStyleRule.additiveSymbols", DOM, cx);
235
0
236
0
  binding_detail::FakeString arg0;
237
0
  if (!ConvertJSValueToString(cx, args[0], eStringify, eStringify, arg0)) {
238
0
    return false;
239
0
  }
240
0
  self->SetAdditiveSymbols(NonNullHelper(Constify(arg0)));
241
0
  MOZ_ASSERT(!JS_IsExceptionPending(cx));
242
0
243
0
  return true;
244
0
}
245
246
static const JSJitInfo additiveSymbols_getterinfo = {
247
  { (JSJitGetterOp)get_additiveSymbols },
248
  { prototypes::id::CSSCounterStyleRule },
249
  { PrototypeTraits<prototypes::id::CSSCounterStyleRule>::Depth },
250
  JSJitInfo::Getter,
251
  JSJitInfo::AliasEverything, /* aliasSet.  Not relevant for setters. */
252
  JSVAL_TYPE_STRING,  /* returnType.  Not relevant for setters. */
253
  false,  /* isInfallible. False in setters. */
254
  false,  /* isMovable.  Not relevant for setters. */
255
  false, /* isEliminatable.  Not relevant for setters. */
256
  false, /* isAlwaysInSlot.  Only relevant for getters. */
257
  false, /* isLazilyCachedInSlot.  Only relevant for getters. */
258
  false,  /* isTypedMethod.  Only relevant for methods. */
259
  0   /* Reserved slot index, if we're stored in a slot, else 0. */
260
};
261
static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
262
static_assert(0 < 1, "There is no slot for us");
263
static const JSJitInfo additiveSymbols_setterinfo = {
264
  { (JSJitGetterOp)set_additiveSymbols },
265
  { prototypes::id::CSSCounterStyleRule },
266
  { PrototypeTraits<prototypes::id::CSSCounterStyleRule>::Depth },
267
  JSJitInfo::Setter,
268
  JSJitInfo::AliasEverything, /* aliasSet.  Not relevant for setters. */
269
  JSVAL_TYPE_UNDEFINED,  /* returnType.  Not relevant for setters. */
270
  false,  /* isInfallible. False in setters. */
271
  false,  /* isMovable.  Not relevant for setters. */
272
  false, /* isEliminatable.  Not relevant for setters. */
273
  false, /* isAlwaysInSlot.  Only relevant for getters. */
274
  false, /* isLazilyCachedInSlot.  Only relevant for getters. */
275
  false,  /* isTypedMethod.  Only relevant for methods. */
276
  0   /* Reserved slot index, if we're stored in a slot, else 0. */
277
};
278
static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
279
static_assert(0 < 1, "There is no slot for us");
280
281
MOZ_CAN_RUN_SCRIPT static bool
282
get_negative(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::CSSCounterStyleRule* self, JSJitGetterCallArgs args)
283
0
{
284
0
  AUTO_PROFILER_LABEL_FAST("get CSSCounterStyleRule.negative", DOM, cx);
285
0
286
0
  DOMString result;
287
0
  self->GetNegative(result);
288
0
  MOZ_ASSERT(!JS_IsExceptionPending(cx));
289
0
  if (!xpc::NonVoidStringToJsval(cx, result, args.rval())) {
290
0
    return false;
291
0
  }
292
0
  return true;
293
0
}
294
295
MOZ_CAN_RUN_SCRIPT static bool
296
set_negative(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::CSSCounterStyleRule* self, JSJitSetterCallArgs args)
297
0
{
298
0
  AUTO_PROFILER_LABEL_FAST("set CSSCounterStyleRule.negative", DOM, cx);
299
0
300
0
  binding_detail::FakeString arg0;
301
0
  if (!ConvertJSValueToString(cx, args[0], eStringify, eStringify, arg0)) {
302
0
    return false;
303
0
  }
304
0
  self->SetNegative(NonNullHelper(Constify(arg0)));
305
0
  MOZ_ASSERT(!JS_IsExceptionPending(cx));
306
0
307
0
  return true;
308
0
}
309
310
static const JSJitInfo negative_getterinfo = {
311
  { (JSJitGetterOp)get_negative },
312
  { prototypes::id::CSSCounterStyleRule },
313
  { PrototypeTraits<prototypes::id::CSSCounterStyleRule>::Depth },
314
  JSJitInfo::Getter,
315
  JSJitInfo::AliasEverything, /* aliasSet.  Not relevant for setters. */
316
  JSVAL_TYPE_STRING,  /* returnType.  Not relevant for setters. */
317
  false,  /* isInfallible. False in setters. */
318
  false,  /* isMovable.  Not relevant for setters. */
319
  false, /* isEliminatable.  Not relevant for setters. */
320
  false, /* isAlwaysInSlot.  Only relevant for getters. */
321
  false, /* isLazilyCachedInSlot.  Only relevant for getters. */
322
  false,  /* isTypedMethod.  Only relevant for methods. */
323
  0   /* Reserved slot index, if we're stored in a slot, else 0. */
324
};
325
static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
326
static_assert(0 < 1, "There is no slot for us");
327
static const JSJitInfo negative_setterinfo = {
328
  { (JSJitGetterOp)set_negative },
329
  { prototypes::id::CSSCounterStyleRule },
330
  { PrototypeTraits<prototypes::id::CSSCounterStyleRule>::Depth },
331
  JSJitInfo::Setter,
332
  JSJitInfo::AliasEverything, /* aliasSet.  Not relevant for setters. */
333
  JSVAL_TYPE_UNDEFINED,  /* returnType.  Not relevant for setters. */
334
  false,  /* isInfallible. False in setters. */
335
  false,  /* isMovable.  Not relevant for setters. */
336
  false, /* isEliminatable.  Not relevant for setters. */
337
  false, /* isAlwaysInSlot.  Only relevant for getters. */
338
  false, /* isLazilyCachedInSlot.  Only relevant for getters. */
339
  false,  /* isTypedMethod.  Only relevant for methods. */
340
  0   /* Reserved slot index, if we're stored in a slot, else 0. */
341
};
342
static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
343
static_assert(0 < 1, "There is no slot for us");
344
345
MOZ_CAN_RUN_SCRIPT static bool
346
get_prefix(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::CSSCounterStyleRule* self, JSJitGetterCallArgs args)
347
0
{
348
0
  AUTO_PROFILER_LABEL_FAST("get CSSCounterStyleRule.prefix", DOM, cx);
349
0
350
0
  DOMString result;
351
0
  self->GetPrefix(result);
352
0
  MOZ_ASSERT(!JS_IsExceptionPending(cx));
353
0
  if (!xpc::NonVoidStringToJsval(cx, result, args.rval())) {
354
0
    return false;
355
0
  }
356
0
  return true;
357
0
}
358
359
MOZ_CAN_RUN_SCRIPT static bool
360
set_prefix(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::CSSCounterStyleRule* self, JSJitSetterCallArgs args)
361
0
{
362
0
  AUTO_PROFILER_LABEL_FAST("set CSSCounterStyleRule.prefix", DOM, cx);
363
0
364
0
  binding_detail::FakeString arg0;
365
0
  if (!ConvertJSValueToString(cx, args[0], eStringify, eStringify, arg0)) {
366
0
    return false;
367
0
  }
368
0
  self->SetPrefix(NonNullHelper(Constify(arg0)));
369
0
  MOZ_ASSERT(!JS_IsExceptionPending(cx));
370
0
371
0
  return true;
372
0
}
373
374
static const JSJitInfo prefix_getterinfo = {
375
  { (JSJitGetterOp)get_prefix },
376
  { prototypes::id::CSSCounterStyleRule },
377
  { PrototypeTraits<prototypes::id::CSSCounterStyleRule>::Depth },
378
  JSJitInfo::Getter,
379
  JSJitInfo::AliasEverything, /* aliasSet.  Not relevant for setters. */
380
  JSVAL_TYPE_STRING,  /* returnType.  Not relevant for setters. */
381
  false,  /* isInfallible. False in setters. */
382
  false,  /* isMovable.  Not relevant for setters. */
383
  false, /* isEliminatable.  Not relevant for setters. */
384
  false, /* isAlwaysInSlot.  Only relevant for getters. */
385
  false, /* isLazilyCachedInSlot.  Only relevant for getters. */
386
  false,  /* isTypedMethod.  Only relevant for methods. */
387
  0   /* Reserved slot index, if we're stored in a slot, else 0. */
388
};
389
static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
390
static_assert(0 < 1, "There is no slot for us");
391
static const JSJitInfo prefix_setterinfo = {
392
  { (JSJitGetterOp)set_prefix },
393
  { prototypes::id::CSSCounterStyleRule },
394
  { PrototypeTraits<prototypes::id::CSSCounterStyleRule>::Depth },
395
  JSJitInfo::Setter,
396
  JSJitInfo::AliasEverything, /* aliasSet.  Not relevant for setters. */
397
  JSVAL_TYPE_UNDEFINED,  /* returnType.  Not relevant for setters. */
398
  false,  /* isInfallible. False in setters. */
399
  false,  /* isMovable.  Not relevant for setters. */
400
  false, /* isEliminatable.  Not relevant for setters. */
401
  false, /* isAlwaysInSlot.  Only relevant for getters. */
402
  false, /* isLazilyCachedInSlot.  Only relevant for getters. */
403
  false,  /* isTypedMethod.  Only relevant for methods. */
404
  0   /* Reserved slot index, if we're stored in a slot, else 0. */
405
};
406
static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
407
static_assert(0 < 1, "There is no slot for us");
408
409
MOZ_CAN_RUN_SCRIPT static bool
410
get_suffix(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::CSSCounterStyleRule* self, JSJitGetterCallArgs args)
411
0
{
412
0
  AUTO_PROFILER_LABEL_FAST("get CSSCounterStyleRule.suffix", DOM, cx);
413
0
414
0
  DOMString result;
415
0
  self->GetSuffix(result);
416
0
  MOZ_ASSERT(!JS_IsExceptionPending(cx));
417
0
  if (!xpc::NonVoidStringToJsval(cx, result, args.rval())) {
418
0
    return false;
419
0
  }
420
0
  return true;
421
0
}
422
423
MOZ_CAN_RUN_SCRIPT static bool
424
set_suffix(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::CSSCounterStyleRule* self, JSJitSetterCallArgs args)
425
0
{
426
0
  AUTO_PROFILER_LABEL_FAST("set CSSCounterStyleRule.suffix", DOM, cx);
427
0
428
0
  binding_detail::FakeString arg0;
429
0
  if (!ConvertJSValueToString(cx, args[0], eStringify, eStringify, arg0)) {
430
0
    return false;
431
0
  }
432
0
  self->SetSuffix(NonNullHelper(Constify(arg0)));
433
0
  MOZ_ASSERT(!JS_IsExceptionPending(cx));
434
0
435
0
  return true;
436
0
}
437
438
static const JSJitInfo suffix_getterinfo = {
439
  { (JSJitGetterOp)get_suffix },
440
  { prototypes::id::CSSCounterStyleRule },
441
  { PrototypeTraits<prototypes::id::CSSCounterStyleRule>::Depth },
442
  JSJitInfo::Getter,
443
  JSJitInfo::AliasEverything, /* aliasSet.  Not relevant for setters. */
444
  JSVAL_TYPE_STRING,  /* returnType.  Not relevant for setters. */
445
  false,  /* isInfallible. False in setters. */
446
  false,  /* isMovable.  Not relevant for setters. */
447
  false, /* isEliminatable.  Not relevant for setters. */
448
  false, /* isAlwaysInSlot.  Only relevant for getters. */
449
  false, /* isLazilyCachedInSlot.  Only relevant for getters. */
450
  false,  /* isTypedMethod.  Only relevant for methods. */
451
  0   /* Reserved slot index, if we're stored in a slot, else 0. */
452
};
453
static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
454
static_assert(0 < 1, "There is no slot for us");
455
static const JSJitInfo suffix_setterinfo = {
456
  { (JSJitGetterOp)set_suffix },
457
  { prototypes::id::CSSCounterStyleRule },
458
  { PrototypeTraits<prototypes::id::CSSCounterStyleRule>::Depth },
459
  JSJitInfo::Setter,
460
  JSJitInfo::AliasEverything, /* aliasSet.  Not relevant for setters. */
461
  JSVAL_TYPE_UNDEFINED,  /* returnType.  Not relevant for setters. */
462
  false,  /* isInfallible. False in setters. */
463
  false,  /* isMovable.  Not relevant for setters. */
464
  false, /* isEliminatable.  Not relevant for setters. */
465
  false, /* isAlwaysInSlot.  Only relevant for getters. */
466
  false, /* isLazilyCachedInSlot.  Only relevant for getters. */
467
  false,  /* isTypedMethod.  Only relevant for methods. */
468
  0   /* Reserved slot index, if we're stored in a slot, else 0. */
469
};
470
static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
471
static_assert(0 < 1, "There is no slot for us");
472
473
MOZ_CAN_RUN_SCRIPT static bool
474
get_range(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::CSSCounterStyleRule* self, JSJitGetterCallArgs args)
475
0
{
476
0
  AUTO_PROFILER_LABEL_FAST("get CSSCounterStyleRule.range", DOM, cx);
477
0
478
0
  DOMString result;
479
0
  self->GetRange(result);
480
0
  MOZ_ASSERT(!JS_IsExceptionPending(cx));
481
0
  if (!xpc::NonVoidStringToJsval(cx, result, args.rval())) {
482
0
    return false;
483
0
  }
484
0
  return true;
485
0
}
486
487
MOZ_CAN_RUN_SCRIPT static bool
488
set_range(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::CSSCounterStyleRule* self, JSJitSetterCallArgs args)
489
0
{
490
0
  AUTO_PROFILER_LABEL_FAST("set CSSCounterStyleRule.range", DOM, cx);
491
0
492
0
  binding_detail::FakeString arg0;
493
0
  if (!ConvertJSValueToString(cx, args[0], eStringify, eStringify, arg0)) {
494
0
    return false;
495
0
  }
496
0
  self->SetRange(NonNullHelper(Constify(arg0)));
497
0
  MOZ_ASSERT(!JS_IsExceptionPending(cx));
498
0
499
0
  return true;
500
0
}
501
502
static const JSJitInfo range_getterinfo = {
503
  { (JSJitGetterOp)get_range },
504
  { prototypes::id::CSSCounterStyleRule },
505
  { PrototypeTraits<prototypes::id::CSSCounterStyleRule>::Depth },
506
  JSJitInfo::Getter,
507
  JSJitInfo::AliasEverything, /* aliasSet.  Not relevant for setters. */
508
  JSVAL_TYPE_STRING,  /* returnType.  Not relevant for setters. */
509
  false,  /* isInfallible. False in setters. */
510
  false,  /* isMovable.  Not relevant for setters. */
511
  false, /* isEliminatable.  Not relevant for setters. */
512
  false, /* isAlwaysInSlot.  Only relevant for getters. */
513
  false, /* isLazilyCachedInSlot.  Only relevant for getters. */
514
  false,  /* isTypedMethod.  Only relevant for methods. */
515
  0   /* Reserved slot index, if we're stored in a slot, else 0. */
516
};
517
static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
518
static_assert(0 < 1, "There is no slot for us");
519
static const JSJitInfo range_setterinfo = {
520
  { (JSJitGetterOp)set_range },
521
  { prototypes::id::CSSCounterStyleRule },
522
  { PrototypeTraits<prototypes::id::CSSCounterStyleRule>::Depth },
523
  JSJitInfo::Setter,
524
  JSJitInfo::AliasEverything, /* aliasSet.  Not relevant for setters. */
525
  JSVAL_TYPE_UNDEFINED,  /* returnType.  Not relevant for setters. */
526
  false,  /* isInfallible. False in setters. */
527
  false,  /* isMovable.  Not relevant for setters. */
528
  false, /* isEliminatable.  Not relevant for setters. */
529
  false, /* isAlwaysInSlot.  Only relevant for getters. */
530
  false, /* isLazilyCachedInSlot.  Only relevant for getters. */
531
  false,  /* isTypedMethod.  Only relevant for methods. */
532
  0   /* Reserved slot index, if we're stored in a slot, else 0. */
533
};
534
static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
535
static_assert(0 < 1, "There is no slot for us");
536
537
MOZ_CAN_RUN_SCRIPT static bool
538
get_pad(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::CSSCounterStyleRule* self, JSJitGetterCallArgs args)
539
0
{
540
0
  AUTO_PROFILER_LABEL_FAST("get CSSCounterStyleRule.pad", DOM, cx);
541
0
542
0
  DOMString result;
543
0
  self->GetPad(result);
544
0
  MOZ_ASSERT(!JS_IsExceptionPending(cx));
545
0
  if (!xpc::NonVoidStringToJsval(cx, result, args.rval())) {
546
0
    return false;
547
0
  }
548
0
  return true;
549
0
}
550
551
MOZ_CAN_RUN_SCRIPT static bool
552
set_pad(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::CSSCounterStyleRule* self, JSJitSetterCallArgs args)
553
0
{
554
0
  AUTO_PROFILER_LABEL_FAST("set CSSCounterStyleRule.pad", DOM, cx);
555
0
556
0
  binding_detail::FakeString arg0;
557
0
  if (!ConvertJSValueToString(cx, args[0], eStringify, eStringify, arg0)) {
558
0
    return false;
559
0
  }
560
0
  self->SetPad(NonNullHelper(Constify(arg0)));
561
0
  MOZ_ASSERT(!JS_IsExceptionPending(cx));
562
0
563
0
  return true;
564
0
}
565
566
static const JSJitInfo pad_getterinfo = {
567
  { (JSJitGetterOp)get_pad },
568
  { prototypes::id::CSSCounterStyleRule },
569
  { PrototypeTraits<prototypes::id::CSSCounterStyleRule>::Depth },
570
  JSJitInfo::Getter,
571
  JSJitInfo::AliasEverything, /* aliasSet.  Not relevant for setters. */
572
  JSVAL_TYPE_STRING,  /* returnType.  Not relevant for setters. */
573
  false,  /* isInfallible. False in setters. */
574
  false,  /* isMovable.  Not relevant for setters. */
575
  false, /* isEliminatable.  Not relevant for setters. */
576
  false, /* isAlwaysInSlot.  Only relevant for getters. */
577
  false, /* isLazilyCachedInSlot.  Only relevant for getters. */
578
  false,  /* isTypedMethod.  Only relevant for methods. */
579
  0   /* Reserved slot index, if we're stored in a slot, else 0. */
580
};
581
static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
582
static_assert(0 < 1, "There is no slot for us");
583
static const JSJitInfo pad_setterinfo = {
584
  { (JSJitGetterOp)set_pad },
585
  { prototypes::id::CSSCounterStyleRule },
586
  { PrototypeTraits<prototypes::id::CSSCounterStyleRule>::Depth },
587
  JSJitInfo::Setter,
588
  JSJitInfo::AliasEverything, /* aliasSet.  Not relevant for setters. */
589
  JSVAL_TYPE_UNDEFINED,  /* returnType.  Not relevant for setters. */
590
  false,  /* isInfallible. False in setters. */
591
  false,  /* isMovable.  Not relevant for setters. */
592
  false, /* isEliminatable.  Not relevant for setters. */
593
  false, /* isAlwaysInSlot.  Only relevant for getters. */
594
  false, /* isLazilyCachedInSlot.  Only relevant for getters. */
595
  false,  /* isTypedMethod.  Only relevant for methods. */
596
  0   /* Reserved slot index, if we're stored in a slot, else 0. */
597
};
598
static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
599
static_assert(0 < 1, "There is no slot for us");
600
601
MOZ_CAN_RUN_SCRIPT static bool
602
get_speakAs(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::CSSCounterStyleRule* self, JSJitGetterCallArgs args)
603
0
{
604
0
  AUTO_PROFILER_LABEL_FAST("get CSSCounterStyleRule.speakAs", DOM, cx);
605
0
606
0
  DOMString result;
607
0
  self->GetSpeakAs(result);
608
0
  MOZ_ASSERT(!JS_IsExceptionPending(cx));
609
0
  if (!xpc::NonVoidStringToJsval(cx, result, args.rval())) {
610
0
    return false;
611
0
  }
612
0
  return true;
613
0
}
614
615
MOZ_CAN_RUN_SCRIPT static bool
616
set_speakAs(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::CSSCounterStyleRule* self, JSJitSetterCallArgs args)
617
0
{
618
0
  AUTO_PROFILER_LABEL_FAST("set CSSCounterStyleRule.speakAs", DOM, cx);
619
0
620
0
  binding_detail::FakeString arg0;
621
0
  if (!ConvertJSValueToString(cx, args[0], eStringify, eStringify, arg0)) {
622
0
    return false;
623
0
  }
624
0
  self->SetSpeakAs(NonNullHelper(Constify(arg0)));
625
0
  MOZ_ASSERT(!JS_IsExceptionPending(cx));
626
0
627
0
  return true;
628
0
}
629
630
static const JSJitInfo speakAs_getterinfo = {
631
  { (JSJitGetterOp)get_speakAs },
632
  { prototypes::id::CSSCounterStyleRule },
633
  { PrototypeTraits<prototypes::id::CSSCounterStyleRule>::Depth },
634
  JSJitInfo::Getter,
635
  JSJitInfo::AliasEverything, /* aliasSet.  Not relevant for setters. */
636
  JSVAL_TYPE_STRING,  /* returnType.  Not relevant for setters. */
637
  false,  /* isInfallible. False in setters. */
638
  false,  /* isMovable.  Not relevant for setters. */
639
  false, /* isEliminatable.  Not relevant for setters. */
640
  false, /* isAlwaysInSlot.  Only relevant for getters. */
641
  false, /* isLazilyCachedInSlot.  Only relevant for getters. */
642
  false,  /* isTypedMethod.  Only relevant for methods. */
643
  0   /* Reserved slot index, if we're stored in a slot, else 0. */
644
};
645
static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
646
static_assert(0 < 1, "There is no slot for us");
647
static const JSJitInfo speakAs_setterinfo = {
648
  { (JSJitGetterOp)set_speakAs },
649
  { prototypes::id::CSSCounterStyleRule },
650
  { PrototypeTraits<prototypes::id::CSSCounterStyleRule>::Depth },
651
  JSJitInfo::Setter,
652
  JSJitInfo::AliasEverything, /* aliasSet.  Not relevant for setters. */
653
  JSVAL_TYPE_UNDEFINED,  /* returnType.  Not relevant for setters. */
654
  false,  /* isInfallible. False in setters. */
655
  false,  /* isMovable.  Not relevant for setters. */
656
  false, /* isEliminatable.  Not relevant for setters. */
657
  false, /* isAlwaysInSlot.  Only relevant for getters. */
658
  false, /* isLazilyCachedInSlot.  Only relevant for getters. */
659
  false,  /* isTypedMethod.  Only relevant for methods. */
660
  0   /* Reserved slot index, if we're stored in a slot, else 0. */
661
};
662
static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
663
static_assert(0 < 1, "There is no slot for us");
664
665
MOZ_CAN_RUN_SCRIPT static bool
666
get_fallback(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::CSSCounterStyleRule* self, JSJitGetterCallArgs args)
667
0
{
668
0
  AUTO_PROFILER_LABEL_FAST("get CSSCounterStyleRule.fallback", DOM, cx);
669
0
670
0
  DOMString result;
671
0
  self->GetFallback(result);
672
0
  MOZ_ASSERT(!JS_IsExceptionPending(cx));
673
0
  if (!xpc::NonVoidStringToJsval(cx, result, args.rval())) {
674
0
    return false;
675
0
  }
676
0
  return true;
677
0
}
678
679
MOZ_CAN_RUN_SCRIPT static bool
680
set_fallback(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::CSSCounterStyleRule* self, JSJitSetterCallArgs args)
681
0
{
682
0
  AUTO_PROFILER_LABEL_FAST("set CSSCounterStyleRule.fallback", DOM, cx);
683
0
684
0
  binding_detail::FakeString arg0;
685
0
  if (!ConvertJSValueToString(cx, args[0], eStringify, eStringify, arg0)) {
686
0
    return false;
687
0
  }
688
0
  self->SetFallback(NonNullHelper(Constify(arg0)));
689
0
  MOZ_ASSERT(!JS_IsExceptionPending(cx));
690
0
691
0
  return true;
692
0
}
693
694
static const JSJitInfo fallback_getterinfo = {
695
  { (JSJitGetterOp)get_fallback },
696
  { prototypes::id::CSSCounterStyleRule },
697
  { PrototypeTraits<prototypes::id::CSSCounterStyleRule>::Depth },
698
  JSJitInfo::Getter,
699
  JSJitInfo::AliasEverything, /* aliasSet.  Not relevant for setters. */
700
  JSVAL_TYPE_STRING,  /* returnType.  Not relevant for setters. */
701
  false,  /* isInfallible. False in setters. */
702
  false,  /* isMovable.  Not relevant for setters. */
703
  false, /* isEliminatable.  Not relevant for setters. */
704
  false, /* isAlwaysInSlot.  Only relevant for getters. */
705
  false, /* isLazilyCachedInSlot.  Only relevant for getters. */
706
  false,  /* isTypedMethod.  Only relevant for methods. */
707
  0   /* Reserved slot index, if we're stored in a slot, else 0. */
708
};
709
static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
710
static_assert(0 < 1, "There is no slot for us");
711
static const JSJitInfo fallback_setterinfo = {
712
  { (JSJitGetterOp)set_fallback },
713
  { prototypes::id::CSSCounterStyleRule },
714
  { PrototypeTraits<prototypes::id::CSSCounterStyleRule>::Depth },
715
  JSJitInfo::Setter,
716
  JSJitInfo::AliasEverything, /* aliasSet.  Not relevant for setters. */
717
  JSVAL_TYPE_UNDEFINED,  /* returnType.  Not relevant for setters. */
718
  false,  /* isInfallible. False in setters. */
719
  false,  /* isMovable.  Not relevant for setters. */
720
  false, /* isEliminatable.  Not relevant for setters. */
721
  false, /* isAlwaysInSlot.  Only relevant for getters. */
722
  false, /* isLazilyCachedInSlot.  Only relevant for getters. */
723
  false,  /* isTypedMethod.  Only relevant for methods. */
724
  0   /* Reserved slot index, if we're stored in a slot, else 0. */
725
};
726
static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
727
static_assert(0 < 1, "There is no slot for us");
728
729
static bool
730
_addProperty(JSContext* cx, JS::Handle<JSObject*> obj, JS::Handle<jsid> id, JS::Handle<JS::Value> val)
731
0
{
732
0
  mozilla::dom::CSSCounterStyleRule* self = UnwrapPossiblyNotInitializedDOMObject<mozilla::dom::CSSCounterStyleRule>(obj);
733
0
  // We don't want to preserve if we don't have a wrapper, and we
734
0
  // obviously can't preserve if we're not initialized.
735
0
  if (self && self->GetWrapperPreserveColor()) {
736
0
    PreserveWrapper(self);
737
0
  }
738
0
  return true;
739
0
}
740
741
static void
742
_finalize(js::FreeOp* fop, JSObject* obj)
743
0
{
744
0
  mozilla::dom::CSSCounterStyleRule* self = UnwrapPossiblyNotInitializedDOMObject<mozilla::dom::CSSCounterStyleRule>(obj);
745
0
  if (self) {
746
0
    ClearWrapper(self, self, obj);
747
0
    AddForDeferredFinalization<mozilla::dom::CSSCounterStyleRule>(self);
748
0
  }
749
0
}
750
751
static size_t
752
_objectMoved(JSObject* obj, JSObject* old)
753
0
{
754
0
  mozilla::dom::CSSCounterStyleRule* self = UnwrapPossiblyNotInitializedDOMObject<mozilla::dom::CSSCounterStyleRule>(obj);
755
0
  if (self) {
756
0
    UpdateWrapper(self, self, obj, old);
757
0
  }
758
0
759
0
  return 0;
760
0
}
761
762
// We deliberately use brace-elision to make Visual Studio produce better initalization code.
763
#if defined(__clang__)
764
#pragma clang diagnostic push
765
#pragma clang diagnostic ignored "-Wmissing-braces"
766
#endif
767
static const JSPropertySpec sAttributes_specs[] = {
768
  { "name", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &name_getterinfo, GenericSetter<NormalThisPolicy>, &name_setterinfo },
769
  { "system", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &system_getterinfo, GenericSetter<NormalThisPolicy>, &system_setterinfo },
770
  { "symbols", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &symbols_getterinfo, GenericSetter<NormalThisPolicy>, &symbols_setterinfo },
771
  { "additiveSymbols", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &additiveSymbols_getterinfo, GenericSetter<NormalThisPolicy>, &additiveSymbols_setterinfo },
772
  { "negative", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &negative_getterinfo, GenericSetter<NormalThisPolicy>, &negative_setterinfo },
773
  { "prefix", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &prefix_getterinfo, GenericSetter<NormalThisPolicy>, &prefix_setterinfo },
774
  { "suffix", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &suffix_getterinfo, GenericSetter<NormalThisPolicy>, &suffix_setterinfo },
775
  { "range", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &range_getterinfo, GenericSetter<NormalThisPolicy>, &range_setterinfo },
776
  { "pad", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &pad_getterinfo, GenericSetter<NormalThisPolicy>, &pad_setterinfo },
777
  { "speakAs", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &speakAs_getterinfo, GenericSetter<NormalThisPolicy>, &speakAs_setterinfo },
778
  { "fallback", JSPROP_ENUMERATE, GenericGetter<NormalThisPolicy, ThrowExceptions>, &fallback_getterinfo, GenericSetter<NormalThisPolicy>, &fallback_setterinfo },
779
  { nullptr, 0, nullptr, nullptr, nullptr, nullptr }
780
};
781
#if defined(__clang__)
782
#pragma clang diagnostic pop
783
#endif
784
785
786
static const Prefable<const JSPropertySpec> sAttributes[] = {
787
  { nullptr, &sAttributes_specs[0] },
788
  { nullptr, nullptr }
789
};
790
791
static_assert(1 <= 1ull << NUM_BITS_PROPERTY_INFO_PREF_INDEX,
792
    "We have a prefable index that is >= (1 << NUM_BITS_PROPERTY_INFO_PREF_INDEX)");
793
static_assert(11 <= 1ull << NUM_BITS_PROPERTY_INFO_SPEC_INDEX,
794
    "We have a spec index that is >= (1 << NUM_BITS_PROPERTY_INFO_SPEC_INDEX)");
795
796
797
static uint16_t sNativeProperties_sortedPropertyIndices[11];
798
static PropertyInfo sNativeProperties_propertyInfos[11];
799
800
static const NativePropertiesN<1> sNativeProperties = {
801
  false, 0,
802
  false, 0,
803
  false, 0,
804
  true,  0 /* sAttributes */,
805
  false, 0,
806
  false, 0,
807
  false, 0,
808
  -1,
809
  11,
810
  sNativeProperties_sortedPropertyIndices,
811
  {
812
    { sAttributes, &sNativeProperties_propertyInfos[0] }
813
  }
814
};
815
static_assert(11 < 1ull << CHAR_BIT * sizeof(sNativeProperties.propertyInfoCount),
816
    "We have a property info count that is oversized");
817
818
static const DOMIfaceAndProtoJSClass sInterfaceObjectClass = {
819
  {
820
    "Function",
821
    JSCLASS_IS_DOMIFACEANDPROTOJSCLASS | JSCLASS_HAS_RESERVED_SLOTS(DOM_INTERFACE_SLOTS_BASE),
822
    &sBoringInterfaceObjectClassClassOps,
823
    JS_NULL_CLASS_SPEC,
824
    JS_NULL_CLASS_EXT,
825
    &sInterfaceObjectClassObjectOps
826
  },
827
  eInterface,
828
  true,
829
  prototypes::id::CSSCounterStyleRule,
830
  PrototypeTraits<prototypes::id::CSSCounterStyleRule>::Depth,
831
  sNativePropertyHooks,
832
  "function CSSCounterStyleRule() {\n    [native code]\n}",
833
  CSSRule_Binding::GetConstructorObject
834
};
835
836
static const DOMIfaceAndProtoJSClass sPrototypeClass = {
837
  {
838
    "CSSCounterStyleRulePrototype",
839
    JSCLASS_IS_DOMIFACEANDPROTOJSCLASS | JSCLASS_HAS_RESERVED_SLOTS(DOM_INTERFACE_PROTO_SLOTS_BASE),
840
    JS_NULL_CLASS_OPS,
841
    JS_NULL_CLASS_SPEC,
842
    JS_NULL_CLASS_EXT,
843
    JS_NULL_OBJECT_OPS
844
  },
845
  eInterfacePrototype,
846
  false,
847
  prototypes::id::CSSCounterStyleRule,
848
  PrototypeTraits<prototypes::id::CSSCounterStyleRule>::Depth,
849
  sNativePropertyHooks,
850
  "[object CSSCounterStyleRulePrototype]",
851
  CSSRule_Binding::GetProtoObject
852
};
853
854
static const js::ClassOps sClassOps = {
855
  _addProperty, /* addProperty */
856
  nullptr,               /* delProperty */
857
  nullptr,               /* enumerate */
858
  nullptr, /* newEnumerate */
859
  nullptr, /* resolve */
860
  nullptr, /* mayResolve */
861
  _finalize, /* finalize */
862
  nullptr, /* call */
863
  nullptr,               /* hasInstance */
864
  nullptr,               /* construct */
865
  nullptr, /* trace */
866
};
867
868
static const js::ClassExtension sClassExtension = {
869
  nullptr, /* weakmapKeyDelegateOp */
870
  _objectMoved /* objectMovedOp */
871
};
872
873
static const DOMJSClass sClass = {
874
  { "CSSCounterStyleRule",
875
    JSCLASS_IS_DOMJSCLASS | JSCLASS_FOREGROUND_FINALIZE | JSCLASS_HAS_RESERVED_SLOTS(1),
876
    &sClassOps,
877
    JS_NULL_CLASS_SPEC,
878
    &sClassExtension,
879
    JS_NULL_OBJECT_OPS
880
  },
881
  { prototypes::id::CSSRule, prototypes::id::CSSCounterStyleRule, prototypes::id::_ID_Count, prototypes::id::_ID_Count, prototypes::id::_ID_Count, prototypes::id::_ID_Count, prototypes::id::_ID_Count, prototypes::id::_ID_Count },
882
  IsBaseOf<nsISupports, mozilla::dom::CSSCounterStyleRule >::value,
883
  sNativePropertyHooks,
884
  FindAssociatedGlobalForNative<mozilla::dom::CSSCounterStyleRule>::Get,
885
  GetProtoObjectHandle,
886
  GetCCParticipant<mozilla::dom::CSSCounterStyleRule>::Get()
887
};
888
static_assert(1 == DOM_INSTANCE_RESERVED_SLOTS,
889
              "Must have the right minimal number of reserved slots.");
890
static_assert(1 >= 1,
891
              "Must have enough reserved slots.");
892
893
const JSClass*
894
GetJSClass()
895
0
{
896
0
  return sClass.ToJSClass();
897
0
}
898
899
bool
900
Wrap(JSContext* aCx, mozilla::dom::CSSCounterStyleRule* aObject, nsWrapperCache* aCache, JS::Handle<JSObject*> aGivenProto, JS::MutableHandle<JSObject*> aReflector)
901
0
{
902
0
  static_assert(!IsBaseOf<NonRefcountedDOMObject, mozilla::dom::CSSCounterStyleRule>::value,
903
0
                "Shouldn't have wrappercached things that are not refcounted.");
904
0
  MOZ_ASSERT(static_cast<mozilla::dom::CSSCounterStyleRule*>(aObject) ==
905
0
             reinterpret_cast<mozilla::dom::CSSCounterStyleRule*>(aObject),
906
0
             "Multiple inheritance for mozilla::dom::CSSCounterStyleRule is broken.");
907
0
  MOZ_ASSERT(static_cast<mozilla::css::Rule*>(aObject) ==
908
0
             reinterpret_cast<mozilla::css::Rule*>(aObject),
909
0
             "Multiple inheritance for mozilla::css::Rule is broken.");
910
0
  MOZ_ASSERT(ToSupportsIsCorrect(aObject));
911
0
  MOZ_ASSERT_IF(aGivenProto, js::IsObjectInContextCompartment(aGivenProto, aCx));
912
0
  MOZ_ASSERT(!aCache->GetWrapper(),
913
0
             "You should probably not be using Wrap() directly; use "
914
0
             "GetOrCreateDOMReflector instead");
915
0
916
0
  MOZ_ASSERT(ToSupportsIsOnPrimaryInheritanceChain(aObject, aCache),
917
0
             "nsISupports must be on our primary inheritance chain");
918
0
919
0
  JS::Rooted<JSObject*> global(aCx, FindAssociatedGlobal(aCx, aObject->GetParentObject()));
920
0
  if (!global) {
921
0
    return false;
922
0
  }
923
0
  MOZ_ASSERT(JS_IsGlobalObject(global));
924
0
  MOZ_ASSERT(JS::ObjectIsNotGray(global));
925
0
926
0
  // That might have ended up wrapping us already, due to the wonders
927
0
  // of XBL.  Check for that, and bail out as needed.
928
0
  aReflector.set(aCache->GetWrapper());
929
0
  if (aReflector) {
930
#ifdef DEBUG
931
    AssertReflectorHasGivenProto(aCx, aReflector, aGivenProto);
932
#endif // DEBUG
933
    return true;
934
0
  }
935
0
936
0
  JSAutoRealm ar(aCx, global);
937
0
  JS::Handle<JSObject*> canonicalProto = GetProtoObjectHandle(aCx);
938
0
  if (!canonicalProto) {
939
0
    return false;
940
0
  }
941
0
  JS::Rooted<JSObject*> proto(aCx);
942
0
  if (aGivenProto) {
943
0
    proto = aGivenProto;
944
0
    // Unfortunately, while aGivenProto was in the compartment of aCx
945
0
    // coming in, we changed compartments to that of "parent" so may need
946
0
    // to wrap the proto here.
947
0
    if (js::GetContextCompartment(aCx) != js::GetObjectCompartment(proto)) {
948
0
      if (!JS_WrapObject(aCx, &proto)) {
949
0
        return false;
950
0
      }
951
0
    }
952
0
  } else {
953
0
    proto = canonicalProto;
954
0
  }
955
0
956
0
  BindingJSObjectCreator<mozilla::dom::CSSCounterStyleRule> creator(aCx);
957
0
  creator.CreateObject(aCx, sClass.ToJSClass(), proto, aObject, aReflector);
958
0
  if (!aReflector) {
959
0
    return false;
960
0
  }
961
0
962
0
  aCache->SetWrapper(aReflector);
963
0
  creator.InitializationSucceeded();
964
0
965
0
  MOZ_ASSERT(aCache->GetWrapperPreserveColor() &&
966
0
             aCache->GetWrapperPreserveColor() == aReflector);
967
0
  // If proto != canonicalProto, we have to preserve our wrapper;
968
0
  // otherwise we won't be able to properly recreate it later, since
969
0
  // we won't know what proto to use.  Note that we don't check
970
0
  // aGivenProto here, since it's entirely possible (and even
971
0
  // somewhat common) to have a non-null aGivenProto which is the
972
0
  // same as canonicalProto.
973
0
  if (proto != canonicalProto) {
974
0
    PreserveWrapper(aObject);
975
0
  }
976
0
977
0
  return true;
978
0
}
979
980
const NativePropertyHooks sNativePropertyHooks[] = { {
981
  nullptr,
982
  nullptr,
983
  nullptr,
984
  { sNativeProperties.Upcast(), nullptr },
985
  prototypes::id::CSSCounterStyleRule,
986
  constructors::id::CSSCounterStyleRule,
987
  CSSRule_Binding::sNativePropertyHooks,
988
  &DefaultXrayExpandoObjectClass
989
} };
990
991
void
992
CreateInterfaceObjects(JSContext* aCx, JS::Handle<JSObject*> aGlobal, ProtoAndIfaceCache& aProtoAndIfaceCache, bool aDefineOnGlobal)
993
0
{
994
0
  JS::Handle<JSObject*> parentProto(CSSRule_Binding::GetProtoObjectHandle(aCx));
995
0
  if (!parentProto) {
996
0
    return;
997
0
  }
998
0
999
0
  JS::Handle<JSObject*> constructorProto(CSSRule_Binding::GetConstructorObjectHandle(aCx));
1000
0
  if (!constructorProto) {
1001
0
    return;
1002
0
  }
1003
0
1004
0
  static bool sIdsInited = false;
1005
0
  if (!sIdsInited && NS_IsMainThread()) {
1006
0
    if (!InitIds(aCx, sNativeProperties.Upcast())) {
1007
0
      return;
1008
0
    }
1009
0
    sIdsInited = true;
1010
0
  }
1011
0
1012
0
  JS::Heap<JSObject*>* protoCache = &aProtoAndIfaceCache.EntrySlotOrCreate(prototypes::id::CSSCounterStyleRule);
1013
0
  JS::Heap<JSObject*>* interfaceCache = &aProtoAndIfaceCache.EntrySlotOrCreate(constructors::id::CSSCounterStyleRule);
1014
0
  dom::CreateInterfaceObjects(aCx, aGlobal, parentProto,
1015
0
                              &sPrototypeClass.mBase, protoCache,
1016
0
                              nullptr,
1017
0
                              constructorProto, &sInterfaceObjectClass.mBase, 0, nullptr,
1018
0
                              interfaceCache,
1019
0
                              sNativeProperties.Upcast(),
1020
0
                              nullptr,
1021
0
                              "CSSCounterStyleRule", aDefineOnGlobal,
1022
0
                              nullptr,
1023
0
                              false);
1024
0
}
1025
1026
JSObject*
1027
GetConstructorObject(JSContext* aCx)
1028
0
{
1029
0
  return GetConstructorObjectHandle(aCx);
1030
0
}
1031
1032
} // namespace CSSCounterStyleRule_Binding
1033
1034
1035
1036
} // namespace dom
1037
} // namespace mozilla