Coverage Report

Created: 2018-09-25 14:53

/work/obj-fuzz/dom/bindings/TestJSImplGenBinding.h
Line
Count
Source (jump to first uncovered line)
1
/* THIS FILE IS AUTOGENERATED FROM TestJSImplGen.webidl BY Codegen.py - DO NOT EDIT */
2
3
#ifndef mozilla_dom_TestJSImplGenBinding_h
4
#define mozilla_dom_TestJSImplGenBinding_h
5
6
#include "GeckoProfiler.h"
7
#include "js/RootingAPI.h"
8
#include "jspubtd.h"
9
#include "mozilla/ErrorResult.h"
10
#include "mozilla/dom/BindingDeclarations.h"
11
#include "mozilla/dom/CallbackFunction.h"
12
#include "mozilla/dom/CallbackInterface.h"
13
#include "mozilla/dom/Date.h"
14
#include "mozilla/dom/Nullable.h"
15
#include "mozilla/dom/PrototypeList.h"
16
#include "mozilla/dom/Record.h"
17
#include "mozilla/dom/ToJSValue.h"
18
#include "mozilla/dom/TypedArray.h"
19
#include "nsWeakReference.h"
20
21
class nsRenamedInterface;
22
23
namespace mozilla {
24
namespace dom {
25
26
class ArrayBufferOrLong;
27
class ByteStringOrLong;
28
class CanvasPatternOrCanvasGradient;
29
class CanvasPatternOrNullOrCanvasGradient;
30
struct Dict;
31
struct DictContainingDict;
32
struct DictContainingSequence;
33
struct DictForConstructor;
34
class DocGroup;
35
class DoubleOrByteString;
36
class DoubleOrString;
37
class DoubleOrSupportedType;
38
class DoubleOrUSVString;
39
class FloatOrString;
40
struct GrandparentDict;
41
class IndirectlyImplementedInterface;
42
class MyTestCallback;
43
struct NativePropertyHooks;
44
class ObjectOrLong;
45
class ObjectOrNullOrLong;
46
class OwningArrayBufferOrLong;
47
class OwningByteStringOrLong;
48
class OwningCanvasPatternOrCanvasGradient;
49
class OwningCanvasPatternOrNullOrCanvasGradient;
50
class OwningDoubleOrByteString;
51
class OwningDoubleOrString;
52
class OwningDoubleOrSupportedType;
53
class OwningDoubleOrUSVString;
54
class OwningFloatOrString;
55
class OwningObjectOrLong;
56
class OwningObjectOrNullOrLong;
57
class OwningStringOrObject;
58
class OwningSupportedTypeOrObject;
59
class OwningUnrestrictedDoubleOrString;
60
class OwningUnrestrictedFloatOrString;
61
class Promise;
62
class ProtoAndIfaceCache;
63
class StringOrObject;
64
class SupportedTypeOrObject;
65
class TestCImplementedInterface;
66
class TestCImplementedInterface2;
67
struct TestCImplementedInterface2Atoms;
68
struct TestCImplementedInterfaceAtoms;
69
class TestCallbackInterface;
70
class TestExternalInterface;
71
class TestInterface;
72
class TestJSImplInterface;
73
struct TestJSImplInterfaceAtoms;
74
class TestJSImplNoInterfaceObject;
75
struct TestJSImplNoInterfaceObjectAtoms;
76
class TestNavigator;
77
struct TestNavigatorAtoms;
78
class TestNavigatorWithConstructor;
79
struct TestNavigatorWithConstructorAtoms;
80
class TestNonWrapperCacheInterface;
81
class TestParentInterface;
82
class TestTreatAsNullCallback;
83
class UnrestrictedDoubleOrString;
84
class UnrestrictedFloatOrString;
85
86
} // namespace dom
87
} // namespace mozilla
88
89
namespace mozilla {
90
namespace dom {
91
92
enum class MyTestEnum : uint8_t {
93
  A,
94
  B,
95
  EndGuard_
96
};
97
98
namespace MyTestEnumValues {
99
extern const EnumEntry strings[3];
100
} // namespace MyTestEnumValues
101
102
bool
103
ToJSValue(JSContext* aCx, MyTestEnum aArgument, JS::MutableHandle<JS::Value> aValue);
104
105
106
class MyTestCallback : public CallbackFunction
107
{
108
public:
109
  explicit inline MyTestCallback(JSContext* aCx, JS::Handle<JSObject*> aCallback, JS::Handle<JSObject*> aCallbackGlobal, nsIGlobalObject* aIncumbentGlobal)
110
    : CallbackFunction(aCx, aCallback, aCallbackGlobal, aIncumbentGlobal)
111
0
  {
112
0
    MOZ_ASSERT(JS::IsCallable(mCallback));
113
0
  }
114
115
  explicit inline MyTestCallback(JSObject* aCallback, JSObject* aCallbackGlobal, const FastCallbackConstructor& )
116
    : CallbackFunction(aCallback, aCallbackGlobal, FastCallbackConstructor())
117
0
  {
118
0
    MOZ_ASSERT(JS::IsCallable(mCallback));
119
0
  }
120
121
  explicit inline MyTestCallback(JSObject* aCallback, JSObject* aCallbackGlobal, JSObject* aAsyncStack, nsIGlobalObject* aIncumbentGlobal)
122
    : CallbackFunction(aCallback, aCallbackGlobal, aAsyncStack, aIncumbentGlobal)
123
0
  {
124
0
    MOZ_ASSERT(JS::IsCallable(mCallback));
125
0
  }
126
127
  explicit inline MyTestCallback(CallbackFunction* aOther)
128
    : CallbackFunction(aOther)
129
0
  {
130
0
  }
131
132
  template <typename T>
133
  inline void
134
  Call(const T& thisVal, ErrorResult& aRv, const char* aExecutionReason = nullptr, ExceptionHandling aExceptionHandling = eReportExceptions, JS::Realm* aRealm = nullptr)
135
  {
136
    MOZ_ASSERT(!aRv.Failed(), "Don't pass an already-failed ErrorResult to a callback!");
137
    if (!aExecutionReason) {
138
      aExecutionReason = "MyTestCallback";
139
    }
140
    CallSetup s(this, aRv, aExecutionReason, aExceptionHandling, aRealm);
141
    if (!s.GetContext()) {
142
      MOZ_ASSERT(aRv.Failed());
143
      return;
144
    }
145
    JS::Rooted<JS::Value> thisValJS(s.GetContext());
146
    if (!ToJSValue(s.GetContext(), thisVal, &thisValJS)) {
147
      aRv.Throw(NS_ERROR_FAILURE);
148
      return;
149
    }
150
    return Call(s.GetContext(), thisValJS, aRv);
151
  }
152
153
  inline void
154
  Call(ErrorResult& aRv, const char* aExecutionReason = nullptr, ExceptionHandling aExceptionHandling = eReportExceptions, JS::Realm* aRealm = nullptr)
155
0
  {
156
0
    MOZ_ASSERT(!aRv.Failed(), "Don't pass an already-failed ErrorResult to a callback!");
157
0
    if (!aExecutionReason) {
158
0
      aExecutionReason = "MyTestCallback";
159
0
    }
160
0
    CallSetup s(this, aRv, aExecutionReason, aExceptionHandling, aRealm);
161
0
    if (!s.GetContext()) {
162
0
      MOZ_ASSERT(aRv.Failed());
163
0
      return;
164
0
    }
165
0
    return Call(s.GetContext(), JS::UndefinedHandleValue, aRv);
166
0
  }
167
168
  template <typename T>
169
  inline void
170
  Call(const T& thisVal, const char* aExecutionReason = nullptr)
171
  {
172
    return Call(thisVal, IgnoreErrors(), aExecutionReason);
173
  }
174
175
  inline void
176
  Call(const char* aExecutionReason = nullptr)
177
0
  {
178
0
    return Call(IgnoreErrors(), aExecutionReason, eReportExceptions, nullptr);
179
0
  }
180
181
  inline bool
182
  operator==(const MyTestCallback& aOther) const
183
0
  {
184
0
    return CallbackFunction::operator==(aOther);
185
0
  }
186
187
private:
188
  void Call(JSContext* cx, JS::Handle<JS::Value> aThisVal, ErrorResult& aRv);
189
};
190
191
192
namespace binding_detail {
193
class FastMyTestCallback : public MyTestCallback
194
{
195
public:
196
  explicit inline FastMyTestCallback(JSObject* aCallback, JSObject* aCallbackGlobal)
197
    : MyTestCallback(aCallback, aCallbackGlobal, FastCallbackConstructor())
198
0
  {
199
0
  }
200
201
  inline void
202
  Trace(JSTracer* aTracer)
203
0
  {
204
0
    MyTestCallback::Trace(aTracer);
205
0
  }
206
207
  inline void
208
  FinishSlowJSInitIfMoreThanOneOwner(JSContext* aCx)
209
0
  {
210
0
    MyTestCallback::FinishSlowJSInitIfMoreThanOneOwner(aCx);
211
0
  }
212
};
213
} // namespace binding_detail
214
215
216
namespace TestCImplementedInterface_Binding {
217
218
  typedef mozilla::dom::TestCImplementedInterface NativeType;
219
220
  const JSClass*
221
  GetJSClass();
222
223
  bool
224
  Wrap(JSContext* aCx, mozilla::dom::TestCImplementedInterface* aObject, nsWrapperCache* aCache, JS::Handle<JSObject*> aGivenProto, JS::MutableHandle<JSObject*> aReflector);
225
226
  template <class T>
227
  inline JSObject* Wrap(JSContext* aCx, T* aObject, JS::Handle<JSObject*> aGivenProto)
228
  {
229
    JS::Rooted<JSObject*> reflector(aCx);
230
    return Wrap(aCx, aObject, aObject, aGivenProto, &reflector) ? reflector.get() : nullptr;
231
  }
232
233
  // We declare this as an array so that retrieving a pointer to this
234
  // binding's property hooks only requires compile/link-time resolvable
235
  // address arithmetic.  Declaring it as a pointer instead would require
236
  // doing a run-time load to fetch a pointer to this binding's property
237
  // hooks.  And then structures which embedded a pointer to this structure
238
  // would require a run-time load for proper initialization, which would
239
  // then induce static constructors.  Lots of static constructors.
240
  extern const NativePropertyHooks sNativePropertyHooks[];
241
242
  void
243
  CreateInterfaceObjects(JSContext* aCx, JS::Handle<JSObject*> aGlobal, ProtoAndIfaceCache& aProtoAndIfaceCache, bool aDefineOnGlobal);
244
245
  inline JS::Handle<JSObject*> GetProtoObjectHandle(JSContext* aCx)
246
0
  {
247
0
    /* Get the interface prototype object for this class.  This will create the
248
0
       object as needed. */
249
0
    return GetPerInterfaceObjectHandle(aCx, prototypes::id::TestCImplementedInterface,
250
0
                                       &CreateInterfaceObjects,
251
0
                                       /* aDefineOnGlobal = */ true);
252
0
253
0
  }
254
255
  JSObject*
256
  GetProtoObject(JSContext* aCx);
257
258
  inline JS::Handle<JSObject*> GetConstructorObjectHandle(JSContext* aCx, bool aDefineOnGlobal = true)
259
0
  {
260
0
    /* Get the interface object for this class.  This will create the object as
261
0
       needed. */
262
0
263
0
    return GetPerInterfaceObjectHandle(aCx, constructors::id::TestCImplementedInterface,
264
0
                                       &CreateInterfaceObjects,
265
0
                                       aDefineOnGlobal);
266
0
  }
267
268
  JSObject*
269
  GetConstructorObject(JSContext* aCx);
270
271
} // namespace TestCImplementedInterface_Binding
272
273
274
275
namespace TestCImplementedInterface2_Binding {
276
277
  typedef mozilla::dom::TestCImplementedInterface2 NativeType;
278
279
  const JSClass*
280
  GetJSClass();
281
282
  bool
283
  Wrap(JSContext* aCx, mozilla::dom::TestCImplementedInterface2* aObject, nsWrapperCache* aCache, JS::Handle<JSObject*> aGivenProto, JS::MutableHandle<JSObject*> aReflector);
284
285
  template <class T>
286
  inline JSObject* Wrap(JSContext* aCx, T* aObject, JS::Handle<JSObject*> aGivenProto)
287
  {
288
    JS::Rooted<JSObject*> reflector(aCx);
289
    return Wrap(aCx, aObject, aObject, aGivenProto, &reflector) ? reflector.get() : nullptr;
290
  }
291
292
  // We declare this as an array so that retrieving a pointer to this
293
  // binding's property hooks only requires compile/link-time resolvable
294
  // address arithmetic.  Declaring it as a pointer instead would require
295
  // doing a run-time load to fetch a pointer to this binding's property
296
  // hooks.  And then structures which embedded a pointer to this structure
297
  // would require a run-time load for proper initialization, which would
298
  // then induce static constructors.  Lots of static constructors.
299
  extern const NativePropertyHooks sNativePropertyHooks[];
300
301
  void
302
  CreateInterfaceObjects(JSContext* aCx, JS::Handle<JSObject*> aGlobal, ProtoAndIfaceCache& aProtoAndIfaceCache, bool aDefineOnGlobal);
303
304
  inline JS::Handle<JSObject*> GetProtoObjectHandle(JSContext* aCx)
305
0
  {
306
0
    /* Get the interface prototype object for this class.  This will create the
307
0
       object as needed. */
308
0
    return GetPerInterfaceObjectHandle(aCx, prototypes::id::TestCImplementedInterface2,
309
0
                                       &CreateInterfaceObjects,
310
0
                                       /* aDefineOnGlobal = */ true);
311
0
312
0
  }
313
314
  JSObject*
315
  GetProtoObject(JSContext* aCx);
316
317
  inline JS::Handle<JSObject*> GetConstructorObjectHandle(JSContext* aCx, bool aDefineOnGlobal = true)
318
0
  {
319
0
    /* Get the interface object for this class.  This will create the object as
320
0
       needed. */
321
0
322
0
    return GetPerInterfaceObjectHandle(aCx, constructors::id::TestCImplementedInterface2,
323
0
                                       &CreateInterfaceObjects,
324
0
                                       aDefineOnGlobal);
325
0
  }
326
327
  JSObject*
328
  GetConstructorObject(JSContext* aCx);
329
330
} // namespace TestCImplementedInterface2_Binding
331
332
333
334
namespace TestJSImplInterface_Binding {
335
336
  typedef mozilla::dom::TestJSImplInterface NativeType;
337
338
  static const int32_t myLongConstant = 5;
339
  static const bool nonEnumerableConst = true;
340
#ifdef XP_WIN
341
#undef NO_ERROR
342
#endif // XP_WIN
343
  static const uint32_t NO_ERROR = 4294967295;
344
345
  MOZ_CAN_RUN_SCRIPT bool
346
  CollectJSONAttributes(JSContext* cx, JS::Handle<JSObject*> obj, mozilla::dom::TestJSImplInterface* self, JS::Rooted<JSObject*>& result);
347
348
  const JSClass*
349
  GetJSClass();
350
351
  bool
352
  Wrap(JSContext* aCx, mozilla::dom::TestJSImplInterface* aObject, nsWrapperCache* aCache, JS::Handle<JSObject*> aGivenProto, JS::MutableHandle<JSObject*> aReflector);
353
354
  template <class T>
355
  inline JSObject* Wrap(JSContext* aCx, T* aObject, JS::Handle<JSObject*> aGivenProto)
356
  {
357
    JS::Rooted<JSObject*> reflector(aCx);
358
    return Wrap(aCx, aObject, aObject, aGivenProto, &reflector) ? reflector.get() : nullptr;
359
  }
360
361
  // We declare this as an array so that retrieving a pointer to this
362
  // binding's property hooks only requires compile/link-time resolvable
363
  // address arithmetic.  Declaring it as a pointer instead would require
364
  // doing a run-time load to fetch a pointer to this binding's property
365
  // hooks.  And then structures which embedded a pointer to this structure
366
  // would require a run-time load for proper initialization, which would
367
  // then induce static constructors.  Lots of static constructors.
368
  extern const NativePropertyHooks sNativePropertyHooks[];
369
370
  void
371
  CreateInterfaceObjects(JSContext* aCx, JS::Handle<JSObject*> aGlobal, ProtoAndIfaceCache& aProtoAndIfaceCache, bool aDefineOnGlobal);
372
373
  inline JS::Handle<JSObject*> GetProtoObjectHandle(JSContext* aCx)
374
0
  {
375
0
    /* Get the interface prototype object for this class.  This will create the
376
0
       object as needed. */
377
0
    return GetPerInterfaceObjectHandle(aCx, prototypes::id::TestJSImplInterface,
378
0
                                       &CreateInterfaceObjects,
379
0
                                       /* aDefineOnGlobal = */ true);
380
0
381
0
  }
382
383
  JSObject*
384
  GetProtoObject(JSContext* aCx);
385
386
  inline JS::Handle<JSObject*> GetConstructorObjectHandle(JSContext* aCx, bool aDefineOnGlobal = true)
387
0
  {
388
0
    /* Get the interface object for this class.  This will create the object as
389
0
       needed. */
390
0
391
0
    return GetPerInterfaceObjectHandle(aCx, constructors::id::TestJSImplInterface,
392
0
                                       &CreateInterfaceObjects,
393
0
                                       aDefineOnGlobal);
394
0
  }
395
396
  JSObject*
397
  GetConstructorObject(JSContext* aCx);
398
399
} // namespace TestJSImplInterface_Binding
400
401
402
403
namespace TestJSImplNoInterfaceObject_Binding {
404
405
  typedef mozilla::dom::TestJSImplNoInterfaceObject NativeType;
406
407
  const JSClass*
408
  GetJSClass();
409
410
  bool
411
  Wrap(JSContext* aCx, mozilla::dom::TestJSImplNoInterfaceObject* aObject, nsWrapperCache* aCache, JS::Handle<JSObject*> aGivenProto, JS::MutableHandle<JSObject*> aReflector);
412
413
  template <class T>
414
  inline JSObject* Wrap(JSContext* aCx, T* aObject, JS::Handle<JSObject*> aGivenProto)
415
  {
416
    JS::Rooted<JSObject*> reflector(aCx);
417
    return Wrap(aCx, aObject, aObject, aGivenProto, &reflector) ? reflector.get() : nullptr;
418
  }
419
420
  // We declare this as an array so that retrieving a pointer to this
421
  // binding's property hooks only requires compile/link-time resolvable
422
  // address arithmetic.  Declaring it as a pointer instead would require
423
  // doing a run-time load to fetch a pointer to this binding's property
424
  // hooks.  And then structures which embedded a pointer to this structure
425
  // would require a run-time load for proper initialization, which would
426
  // then induce static constructors.  Lots of static constructors.
427
  extern const NativePropertyHooks sNativePropertyHooks[];
428
429
  void
430
  CreateInterfaceObjects(JSContext* aCx, JS::Handle<JSObject*> aGlobal, ProtoAndIfaceCache& aProtoAndIfaceCache, bool aDefineOnGlobal);
431
432
  inline JS::Handle<JSObject*> GetProtoObjectHandle(JSContext* aCx)
433
0
  {
434
0
    /* Get the interface prototype object for this class.  This will create the
435
0
       object as needed. */
436
0
    return GetPerInterfaceObjectHandle(aCx, prototypes::id::TestJSImplNoInterfaceObject,
437
0
                                       &CreateInterfaceObjects,
438
0
                                       /* aDefineOnGlobal = */ true);
439
0
440
0
  }
441
442
} // namespace TestJSImplNoInterfaceObject_Binding
443
444
445
446
namespace TestNavigator_Binding {
447
448
  typedef mozilla::dom::TestNavigator NativeType;
449
450
  already_AddRefed<TestNavigator>
451
  ConstructNavigatorObject(JSContext* cx, JS::Handle<JSObject*> obj, ErrorResult& aRv);
452
453
  const JSClass*
454
  GetJSClass();
455
456
  bool
457
  Wrap(JSContext* aCx, mozilla::dom::TestNavigator* aObject, nsWrapperCache* aCache, JS::Handle<JSObject*> aGivenProto, JS::MutableHandle<JSObject*> aReflector);
458
459
  template <class T>
460
  inline JSObject* Wrap(JSContext* aCx, T* aObject, JS::Handle<JSObject*> aGivenProto)
461
  {
462
    JS::Rooted<JSObject*> reflector(aCx);
463
    return Wrap(aCx, aObject, aObject, aGivenProto, &reflector) ? reflector.get() : nullptr;
464
  }
465
466
  // We declare this as an array so that retrieving a pointer to this
467
  // binding's property hooks only requires compile/link-time resolvable
468
  // address arithmetic.  Declaring it as a pointer instead would require
469
  // doing a run-time load to fetch a pointer to this binding's property
470
  // hooks.  And then structures which embedded a pointer to this structure
471
  // would require a run-time load for proper initialization, which would
472
  // then induce static constructors.  Lots of static constructors.
473
  extern const NativePropertyHooks sNativePropertyHooks[];
474
475
  void
476
  CreateInterfaceObjects(JSContext* aCx, JS::Handle<JSObject*> aGlobal, ProtoAndIfaceCache& aProtoAndIfaceCache, bool aDefineOnGlobal);
477
478
  inline JS::Handle<JSObject*> GetProtoObjectHandle(JSContext* aCx)
479
0
  {
480
0
    /* Get the interface prototype object for this class.  This will create the
481
0
       object as needed. */
482
0
    return GetPerInterfaceObjectHandle(aCx, prototypes::id::TestNavigator,
483
0
                                       &CreateInterfaceObjects,
484
0
                                       /* aDefineOnGlobal = */ true);
485
0
486
0
  }
487
488
  inline JS::Handle<JSObject*> GetConstructorObjectHandle(JSContext* aCx, bool aDefineOnGlobal = true)
489
0
  {
490
0
    /* Get the interface object for this class.  This will create the object as
491
0
       needed. */
492
0
493
0
    return GetPerInterfaceObjectHandle(aCx, constructors::id::TestNavigator,
494
0
                                       &CreateInterfaceObjects,
495
0
                                       aDefineOnGlobal);
496
0
  }
497
498
  JSObject*
499
  GetConstructorObject(JSContext* aCx);
500
501
} // namespace TestNavigator_Binding
502
503
504
505
namespace TestNavigatorWithConstructor_Binding {
506
507
  typedef mozilla::dom::TestNavigatorWithConstructor NativeType;
508
509
  already_AddRefed<TestNavigatorWithConstructor>
510
  ConstructNavigatorObject(JSContext* cx, JS::Handle<JSObject*> obj, ErrorResult& aRv);
511
512
  const JSClass*
513
  GetJSClass();
514
515
  bool
516
  Wrap(JSContext* aCx, mozilla::dom::TestNavigatorWithConstructor* aObject, nsWrapperCache* aCache, JS::Handle<JSObject*> aGivenProto, JS::MutableHandle<JSObject*> aReflector);
517
518
  template <class T>
519
  inline JSObject* Wrap(JSContext* aCx, T* aObject, JS::Handle<JSObject*> aGivenProto)
520
  {
521
    JS::Rooted<JSObject*> reflector(aCx);
522
    return Wrap(aCx, aObject, aObject, aGivenProto, &reflector) ? reflector.get() : nullptr;
523
  }
524
525
  // We declare this as an array so that retrieving a pointer to this
526
  // binding's property hooks only requires compile/link-time resolvable
527
  // address arithmetic.  Declaring it as a pointer instead would require
528
  // doing a run-time load to fetch a pointer to this binding's property
529
  // hooks.  And then structures which embedded a pointer to this structure
530
  // would require a run-time load for proper initialization, which would
531
  // then induce static constructors.  Lots of static constructors.
532
  extern const NativePropertyHooks sNativePropertyHooks[];
533
534
  void
535
  CreateInterfaceObjects(JSContext* aCx, JS::Handle<JSObject*> aGlobal, ProtoAndIfaceCache& aProtoAndIfaceCache, bool aDefineOnGlobal);
536
537
  inline JS::Handle<JSObject*> GetProtoObjectHandle(JSContext* aCx)
538
0
  {
539
0
    /* Get the interface prototype object for this class.  This will create the
540
0
       object as needed. */
541
0
    return GetPerInterfaceObjectHandle(aCx, prototypes::id::TestNavigatorWithConstructor,
542
0
                                       &CreateInterfaceObjects,
543
0
                                       /* aDefineOnGlobal = */ true);
544
0
545
0
  }
546
547
  inline JS::Handle<JSObject*> GetConstructorObjectHandle(JSContext* aCx, bool aDefineOnGlobal = true)
548
0
  {
549
0
    /* Get the interface object for this class.  This will create the object as
550
0
       needed. */
551
0
552
0
    return GetPerInterfaceObjectHandle(aCx, constructors::id::TestNavigatorWithConstructor,
553
0
                                       &CreateInterfaceObjects,
554
0
                                       aDefineOnGlobal);
555
0
  }
556
557
  JSObject*
558
  GetConstructorObject(JSContext* aCx);
559
560
} // namespace TestNavigatorWithConstructor_Binding
561
562
563
564
class TestJSImplInterfaceJSImpl : public CallbackInterface
565
{
566
public:
567
  explicit inline TestJSImplInterfaceJSImpl(JSContext* aCx, JS::Handle<JSObject*> aCallback, JS::Handle<JSObject*> aCallbackGlobal, nsIGlobalObject* aIncumbentGlobal)
568
    : CallbackInterface(aCx, aCallback, aCallbackGlobal, aIncumbentGlobal)
569
0
  {
570
0
  }
571
572
  explicit inline TestJSImplInterfaceJSImpl(JSObject* aCallback, JSObject* aCallbackGlobal, const FastCallbackConstructor& )
573
    : CallbackInterface(aCallback, aCallbackGlobal, FastCallbackConstructor())
574
0
  {
575
0
  }
576
577
  explicit inline TestJSImplInterfaceJSImpl(JSObject* aCallback, JSObject* aCallbackGlobal, JSObject* aAsyncStack, nsIGlobalObject* aIncumbentGlobal)
578
    : CallbackInterface(aCallback, aCallbackGlobal, aAsyncStack, aIncumbentGlobal)
579
0
  {
580
0
  }
581
582
  void PassByte(int8_t arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
583
584
  int8_t ReceiveByte(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
585
586
  void PassOptionalByte(const Optional<int8_t>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
587
588
  void PassOptionalByteBeforeRequired(const Optional<int8_t>& arg1, int8_t arg2, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
589
590
  void PassOptionalByteWithDefault(int8_t arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
591
592
  void PassOptionalByteWithDefaultBeforeRequired(int8_t arg1, int8_t arg2, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
593
594
  void PassNullableByte(const Nullable<int8_t>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
595
596
  void PassOptionalNullableByte(const Optional<Nullable<int8_t>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
597
598
  void PassVariadicByte(const nsTArray<int8_t>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
599
600
  int8_t ReturnByteSideEffectFree(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
601
602
  int8_t ReturnDOMDependentByte(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
603
604
  int8_t ReturnConstantByte(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
605
606
  int8_t ReturnDeviceStateDependentByte(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
607
608
  void PassShort(int16_t arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
609
610
  int16_t ReceiveShort(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
611
612
  void PassOptionalShort(const Optional<int16_t>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
613
614
  void PassOptionalShortWithDefault(int16_t arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
615
616
  void PassLong(int32_t arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
617
618
  int32_t ReceiveLong(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
619
620
  void PassOptionalLong(const Optional<int32_t>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
621
622
  void PassOptionalLongWithDefault(int32_t arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
623
624
  void PassLongLong(int64_t arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
625
626
  int64_t ReceiveLongLong(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
627
628
  void PassOptionalLongLong(const Optional<int64_t>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
629
630
  void PassOptionalLongLongWithDefault(int64_t arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
631
632
  void PassOctet(uint8_t arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
633
634
  uint8_t ReceiveOctet(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
635
636
  void PassOptionalOctet(const Optional<uint8_t>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
637
638
  void PassOptionalOctetWithDefault(uint8_t arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
639
640
  void PassUnsignedShort(uint16_t arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
641
642
  uint16_t ReceiveUnsignedShort(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
643
644
  void PassOptionalUnsignedShort(const Optional<uint16_t>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
645
646
  void PassOptionalUnsignedShortWithDefault(uint16_t arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
647
648
  void PassUnsignedLong(uint32_t arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
649
650
  uint32_t ReceiveUnsignedLong(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
651
652
  void PassOptionalUnsignedLong(const Optional<uint32_t>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
653
654
  void PassOptionalUnsignedLongWithDefault(uint32_t arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
655
656
  void PassUnsignedLongLong(uint64_t arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
657
658
  uint64_t ReceiveUnsignedLongLong(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
659
660
  void PassOptionalUnsignedLongLong(const Optional<uint64_t>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
661
662
  void PassOptionalUnsignedLongLongWithDefault(uint64_t arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
663
664
  void PassFloat(float arg1, float arg2, const Nullable<float>& arg3, const Nullable<float>& arg4, double arg5, double arg6, const Nullable<double>& arg7, const Nullable<double>& arg8, const Sequence<float>& arg9, const Sequence<float>& arg10, const Sequence<Nullable<float>>& arg11, const Sequence<Nullable<float>>& arg12, const Sequence<double>& arg13, const Sequence<double>& arg14, const Sequence<Nullable<double>>& arg15, const Sequence<Nullable<double>>& arg16, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
665
666
  void PassLenientFloat(float arg1, float arg2, const Nullable<float>& arg3, const Nullable<float>& arg4, double arg5, double arg6, const Nullable<double>& arg7, const Nullable<double>& arg8, const Sequence<float>& arg9, const Sequence<float>& arg10, const Sequence<Nullable<float>>& arg11, const Sequence<Nullable<float>>& arg12, const Sequence<double>& arg13, const Sequence<double>& arg14, const Sequence<Nullable<double>>& arg15, const Sequence<Nullable<double>>& arg16, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
667
668
  already_AddRefed<TestJSImplInterface> ReceiveSelf(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
669
670
  already_AddRefed<TestJSImplInterface> ReceiveNullableSelf(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
671
672
  already_AddRefed<TestJSImplInterface> ReceiveWeakSelf(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
673
674
  already_AddRefed<TestJSImplInterface> ReceiveWeakNullableSelf(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
675
676
  void PassSelf(TestJSImplInterface& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
677
678
  void PassNullableSelf(TestJSImplInterface* arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
679
680
  void PassOptionalSelf(const Optional<TestJSImplInterface*>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
681
682
  void PassOptionalNonNullSelf(const Optional<NonNull<TestJSImplInterface>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
683
684
  void PassOptionalSelfWithDefault(TestJSImplInterface* arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
685
686
  already_AddRefed<TestNonWrapperCacheInterface> ReceiveNonWrapperCacheInterface(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
687
688
  already_AddRefed<TestNonWrapperCacheInterface> ReceiveNullableNonWrapperCacheInterface(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
689
690
  void ReceiveNonWrapperCacheInterfaceSequence(nsTArray<RefPtr<TestNonWrapperCacheInterface>>& aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
691
692
  void ReceiveNullableNonWrapperCacheInterfaceSequence(nsTArray<RefPtr<TestNonWrapperCacheInterface>>& aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
693
694
  void ReceiveNonWrapperCacheInterfaceNullableSequence(Nullable<nsTArray<RefPtr<TestNonWrapperCacheInterface>>>& aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
695
696
  void ReceiveNullableNonWrapperCacheInterfaceNullableSequence(Nullable<nsTArray<RefPtr<TestNonWrapperCacheInterface>>>& aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
697
698
  already_AddRefed<IndirectlyImplementedInterface> ReceiveOther(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
699
700
  already_AddRefed<IndirectlyImplementedInterface> ReceiveNullableOther(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
701
702
  already_AddRefed<IndirectlyImplementedInterface> ReceiveWeakOther(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
703
704
  already_AddRefed<IndirectlyImplementedInterface> ReceiveWeakNullableOther(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
705
706
  void PassOther(IndirectlyImplementedInterface& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
707
708
  void PassNullableOther(IndirectlyImplementedInterface* arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
709
710
  void PassOptionalOther(const Optional<IndirectlyImplementedInterface*>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
711
712
  void PassOptionalNonNullOther(const Optional<NonNull<IndirectlyImplementedInterface>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
713
714
  void PassOptionalOtherWithDefault(IndirectlyImplementedInterface* arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
715
716
  already_AddRefed<TestExternalInterface> ReceiveExternal(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
717
718
  already_AddRefed<TestExternalInterface> ReceiveNullableExternal(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
719
720
  already_AddRefed<TestExternalInterface> ReceiveWeakExternal(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
721
722
  already_AddRefed<TestExternalInterface> ReceiveWeakNullableExternal(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
723
724
  void PassExternal(TestExternalInterface* arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
725
726
  void PassNullableExternal(TestExternalInterface* arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
727
728
  void PassOptionalExternal(const Optional<TestExternalInterface*>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
729
730
  void PassOptionalNonNullExternal(const Optional<TestExternalInterface*>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
731
732
  void PassOptionalExternalWithDefault(TestExternalInterface* arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
733
734
  already_AddRefed<TestCallbackInterface> ReceiveCallbackInterface(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
735
736
  already_AddRefed<TestCallbackInterface> ReceiveNullableCallbackInterface(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
737
738
  already_AddRefed<TestCallbackInterface> ReceiveWeakCallbackInterface(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
739
740
  already_AddRefed<TestCallbackInterface> ReceiveWeakNullableCallbackInterface(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
741
742
  void PassCallbackInterface(TestCallbackInterface& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
743
744
  void PassNullableCallbackInterface(TestCallbackInterface* arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
745
746
  void PassOptionalCallbackInterface(const Optional<RefPtr<TestCallbackInterface>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
747
748
  void PassOptionalNonNullCallbackInterface(const Optional<OwningNonNull<TestCallbackInterface>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
749
750
  void PassOptionalCallbackInterfaceWithDefault(TestCallbackInterface* arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
751
752
  already_AddRefed<IndirectlyImplementedInterface> ReceiveConsequentialInterface(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
753
754
  void PassConsequentialInterface(IndirectlyImplementedInterface& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
755
756
  void ReceiveSequence(nsTArray<int32_t>& aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
757
758
  void ReceiveNullableSequence(Nullable<nsTArray<int32_t>>& aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
759
760
  void ReceiveSequenceOfNullableInts(nsTArray<Nullable<int32_t>>& aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
761
762
  void ReceiveNullableSequenceOfNullableInts(Nullable<nsTArray<Nullable<int32_t>>>& aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
763
764
  void PassSequence(const Sequence<int32_t>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
765
766
  void PassNullableSequence(const Nullable<Sequence<int32_t>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
767
768
  void PassSequenceOfNullableInts(const Sequence<Nullable<int32_t>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
769
770
  void PassOptionalSequenceOfNullableInts(const Optional<Sequence<Nullable<int32_t>>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
771
772
  void PassOptionalNullableSequenceOfNullableInts(const Optional<Nullable<Sequence<Nullable<int32_t>>>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
773
774
  void ReceiveCastableObjectSequence(nsTArray<RefPtr<TestJSImplInterface>>& aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
775
776
  void ReceiveCallbackObjectSequence(nsTArray<RefPtr<TestCallbackInterface>>& aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
777
778
  void ReceiveNullableCastableObjectSequence(nsTArray<RefPtr<TestJSImplInterface>>& aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
779
780
  void ReceiveNullableCallbackObjectSequence(nsTArray<RefPtr<TestCallbackInterface>>& aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
781
782
  void ReceiveCastableObjectNullableSequence(Nullable<nsTArray<RefPtr<TestJSImplInterface>>>& aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
783
784
  void ReceiveNullableCastableObjectNullableSequence(Nullable<nsTArray<RefPtr<TestJSImplInterface>>>& aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
785
786
  void ReceiveWeakCastableObjectSequence(nsTArray<RefPtr<TestJSImplInterface>>& aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
787
788
  void ReceiveWeakNullableCastableObjectSequence(nsTArray<RefPtr<TestJSImplInterface>>& aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
789
790
  void ReceiveWeakCastableObjectNullableSequence(Nullable<nsTArray<RefPtr<TestJSImplInterface>>>& aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
791
792
  void ReceiveWeakNullableCastableObjectNullableSequence(Nullable<nsTArray<RefPtr<TestJSImplInterface>>>& aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
793
794
  void PassCastableObjectSequence(const Sequence<OwningNonNull<TestJSImplInterface>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
795
796
  void PassNullableCastableObjectSequence(const Sequence<RefPtr<TestJSImplInterface>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
797
798
  void PassCastableObjectNullableSequence(const Nullable<Sequence<OwningNonNull<TestJSImplInterface>>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
799
800
  void PassNullableCastableObjectNullableSequence(const Nullable<Sequence<RefPtr<TestJSImplInterface>>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
801
802
  void PassOptionalSequence(const Optional<Sequence<int32_t>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
803
804
  void PassOptionalSequenceWithDefaultValue(const Sequence<int32_t>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
805
806
  void PassOptionalNullableSequence(const Optional<Nullable<Sequence<int32_t>>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
807
808
  void PassOptionalNullableSequenceWithDefaultValue(const Nullable<Sequence<int32_t>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
809
810
  void PassOptionalNullableSequenceWithDefaultValue2(const Nullable<Sequence<int32_t>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
811
812
  void PassOptionalObjectSequence(const Optional<Sequence<OwningNonNull<TestJSImplInterface>>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
813
814
  void PassExternalInterfaceSequence(const Sequence<RefPtr<TestExternalInterface>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
815
816
  void PassNullableExternalInterfaceSequence(const Sequence<RefPtr<TestExternalInterface>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
817
818
  void ReceiveStringSequence(nsTArray<nsString>& aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
819
820
  void ReceiveByteStringSequence(nsTArray<nsCString>& aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
821
822
  void ReceiveAnySequence(nsTArray<JS::Value>& aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
823
824
  void ReceiveNullableAnySequence(Nullable<nsTArray<JS::Value>>& aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
825
826
  void ReceiveObjectSequence(nsTArray<JSObject*>& aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
827
828
  void ReceiveNullableObjectSequence(nsTArray<JSObject*>& aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
829
830
  void PassSequenceOfSequences(const Sequence<Sequence<int32_t>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
831
832
  void PassSequenceOfSequencesOfSequences(const Sequence<Sequence<Sequence<int32_t>>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
833
834
  void PassRecord(const Record<nsString, int32_t>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
835
836
  void PassNullableRecord(const Nullable<Record<nsString, int32_t>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
837
838
  void PassRecordOfNullableInts(const Record<nsString, Nullable<int32_t>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
839
840
  void PassOptionalRecordOfNullableInts(const Optional<Record<nsString, Nullable<int32_t>>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
841
842
  void PassOptionalNullableRecordOfNullableInts(const Optional<Nullable<Record<nsString, Nullable<int32_t>>>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
843
844
  void PassCastableObjectRecord(const Record<nsString, OwningNonNull<TestInterface>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
845
846
  void PassNullableCastableObjectRecord(const Record<nsString, RefPtr<TestInterface>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
847
848
  void PassCastableObjectNullableRecord(const Nullable<Record<nsString, OwningNonNull<TestInterface>>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
849
850
  void PassNullableCastableObjectNullableRecord(const Nullable<Record<nsString, RefPtr<TestInterface>>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
851
852
  void PassOptionalRecord(const Optional<Record<nsString, int32_t>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
853
854
  void PassOptionalNullableRecord(const Optional<Nullable<Record<nsString, int32_t>>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
855
856
  void PassOptionalNullableRecordWithDefaultValue(const Nullable<Record<nsString, int32_t>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
857
858
  void PassOptionalObjectRecord(const Optional<Record<nsString, OwningNonNull<TestInterface>>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
859
860
  void PassExternalInterfaceRecord(const Record<nsString, RefPtr<TestExternalInterface>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
861
862
  void PassNullableExternalInterfaceRecord(const Record<nsString, RefPtr<TestExternalInterface>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
863
864
  void PassStringRecord(const Record<nsString, nsString>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
865
866
  void PassByteStringRecord(const Record<nsString, nsCString>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
867
868
  void PassRecordOfRecords(const Record<nsString, Record<nsString, int32_t>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
869
870
  void ReceiveRecord(Record<nsString, int32_t>& aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
871
872
  void ReceiveNullableRecord(Nullable<Record<nsString, int32_t>>& aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
873
874
  void ReceiveRecordOfNullableInts(Record<nsString, Nullable<int32_t>>& aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
875
876
  void ReceiveNullableRecordOfNullableInts(Nullable<Record<nsString, Nullable<int32_t>>>& aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
877
878
  void ReceiveAnyRecord(Record<nsString, JS::Value>& aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
879
880
  void PassArrayBuffer(const ArrayBuffer& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
881
882
  void PassNullableArrayBuffer(const Nullable<ArrayBuffer>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
883
884
  void PassOptionalArrayBuffer(const Optional<ArrayBuffer>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
885
886
  void PassOptionalNullableArrayBuffer(const Optional<Nullable<ArrayBuffer>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
887
888
  void PassOptionalNullableArrayBufferWithDefaultValue(const Nullable<ArrayBuffer>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
889
890
  void PassArrayBufferView(const ArrayBufferView& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
891
892
  void PassInt8Array(const Int8Array& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
893
894
  void PassInt16Array(const Int16Array& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
895
896
  void PassInt32Array(const Int32Array& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
897
898
  void PassUint8Array(const Uint8Array& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
899
900
  void PassUint16Array(const Uint16Array& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
901
902
  void PassUint32Array(const Uint32Array& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
903
904
  void PassUint8ClampedArray(const Uint8ClampedArray& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
905
906
  void PassFloat32Array(const Float32Array& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
907
908
  void PassFloat64Array(const Float64Array& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
909
910
  void PassSequenceOfArrayBuffers(const Sequence<ArrayBuffer>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
911
912
  void PassSequenceOfNullableArrayBuffers(const Sequence<Nullable<ArrayBuffer>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
913
914
  void PassRecordOfArrayBuffers(const Record<nsString, ArrayBuffer>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
915
916
  void PassRecordOfNullableArrayBuffers(const Record<nsString, Nullable<ArrayBuffer>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
917
918
  void PassVariadicTypedArray(const nsTArray<Float32Array>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
919
920
  void PassVariadicNullableTypedArray(const nsTArray<Nullable<Float32Array>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
921
922
  void ReceiveUint8Array(JS::MutableHandle<JSObject*> aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
923
924
  void PassString(const nsAString& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
925
926
  void PassNullableString(const nsAString& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
927
928
  void PassOptionalString(const Optional<nsAString>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
929
930
  void PassOptionalStringWithDefaultValue(const nsAString& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
931
932
  void PassOptionalNullableString(const Optional<nsAString>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
933
934
  void PassOptionalNullableStringWithDefaultValue(const nsAString& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
935
936
  void PassVariadicString(const nsTArray<nsString>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
937
938
  void PassByteString(const nsCString& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
939
940
  void PassNullableByteString(const nsCString& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
941
942
  void PassOptionalByteString(const Optional<nsCString>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
943
944
  void PassOptionalByteStringWithDefaultValue(const nsCString& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
945
946
  void PassOptionalNullableByteString(const Optional<nsCString>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
947
948
  void PassOptionalNullableByteStringWithDefaultValue(const nsCString& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
949
950
  void PassVariadicByteString(const nsTArray<nsCString>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
951
952
  void PassUnionByteString(const ByteStringOrLong& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
953
954
  void PassOptionalUnionByteString(const Optional<ByteStringOrLong>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
955
956
  void PassOptionalUnionByteStringWithDefaultValue(const ByteStringOrLong& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
957
958
  void PassSVS(const nsAString& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
959
960
  void PassNullableSVS(const nsAString& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
961
962
  void PassOptionalSVS(const Optional<nsAString>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
963
964
  void PassOptionalSVSWithDefaultValue(const nsAString& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
965
966
  void PassOptionalNullableSVS(const Optional<nsAString>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
967
968
  void PassOptionalNullableSVSWithDefaultValue(const nsAString& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
969
970
  void PassVariadicSVS(const nsTArray<nsString>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
971
972
  void ReceiveSVS(nsString& aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
973
974
  void PassEnum(MyTestEnum arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
975
976
  void PassNullableEnum(const Nullable<MyTestEnum>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
977
978
  void PassOptionalEnum(const Optional<MyTestEnum>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
979
980
  void PassEnumWithDefault(MyTestEnum arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
981
982
  void PassOptionalNullableEnum(const Optional<Nullable<MyTestEnum>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
983
984
  void PassOptionalNullableEnumWithDefaultValue(const Nullable<MyTestEnum>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
985
986
  void PassOptionalNullableEnumWithDefaultValue2(const Nullable<MyTestEnum>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
987
988
  MyTestEnum ReceiveEnum(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
989
990
  Nullable<MyTestEnum> ReceiveNullableEnum(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
991
992
  void PassCallback(MyTestCallback& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
993
994
  void PassNullableCallback(MyTestCallback* arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
995
996
  void PassOptionalCallback(const Optional<OwningNonNull<MyTestCallback>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
997
998
  void PassOptionalNullableCallback(const Optional<RefPtr<MyTestCallback>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
999
1000
  void PassOptionalNullableCallbackWithDefaultValue(MyTestCallback* arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1001
1002
  already_AddRefed<MyTestCallback> ReceiveCallback(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1003
1004
  already_AddRefed<MyTestCallback> ReceiveNullableCallback(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1005
1006
  void PassOptionalNullableTreatAsNullCallbackWithDefaultValue(TestTreatAsNullCallback* arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1007
1008
  void PassAny(JS::Handle<JS::Value> arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1009
1010
  void PassVariadicAny(const nsTArray<JS::Value>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1011
1012
  void PassOptionalAny(JS::Handle<JS::Value> arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1013
1014
  void PassAnyDefaultNull(JS::Handle<JS::Value> arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1015
1016
  void PassSequenceOfAny(const Sequence<JS::Value>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1017
1018
  void PassNullableSequenceOfAny(const Nullable<Sequence<JS::Value>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1019
1020
  void PassOptionalSequenceOfAny(const Optional<Sequence<JS::Value>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1021
1022
  void PassOptionalNullableSequenceOfAny(const Optional<Nullable<Sequence<JS::Value>>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1023
1024
  void PassOptionalSequenceOfAnyWithDefaultValue(const Nullable<Sequence<JS::Value>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1025
1026
  void PassSequenceOfSequenceOfAny(const Sequence<Sequence<JS::Value>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1027
1028
  void PassSequenceOfNullableSequenceOfAny(const Sequence<Nullable<Sequence<JS::Value>>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1029
1030
  void PassNullableSequenceOfNullableSequenceOfAny(const Nullable<Sequence<Nullable<Sequence<JS::Value>>>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1031
1032
  void PassOptionalNullableSequenceOfNullableSequenceOfAny(const Optional<Nullable<Sequence<Nullable<Sequence<JS::Value>>>>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1033
1034
  void PassRecordOfAny(const Record<nsString, JS::Value>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1035
1036
  void PassNullableRecordOfAny(const Nullable<Record<nsString, JS::Value>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1037
1038
  void PassOptionalRecordOfAny(const Optional<Record<nsString, JS::Value>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1039
1040
  void PassOptionalNullableRecordOfAny(const Optional<Nullable<Record<nsString, JS::Value>>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1041
1042
  void PassOptionalRecordOfAnyWithDefaultValue(const Nullable<Record<nsString, JS::Value>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1043
1044
  void PassRecordOfRecordOfAny(const Record<nsString, Record<nsString, JS::Value>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1045
1046
  void PassRecordOfNullableRecordOfAny(const Record<nsString, Nullable<Record<nsString, JS::Value>>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1047
1048
  void PassNullableRecordOfNullableRecordOfAny(const Nullable<Record<nsString, Nullable<Record<nsString, JS::Value>>>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1049
1050
  void PassOptionalNullableRecordOfNullableRecordOfAny(const Optional<Nullable<Record<nsString, Nullable<Record<nsString, JS::Value>>>>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1051
1052
  void PassOptionalNullableRecordOfNullableSequenceOfAny(const Optional<Nullable<Record<nsString, Nullable<Sequence<JS::Value>>>>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1053
1054
  void PassOptionalNullableSequenceOfNullableRecordOfAny(const Optional<Nullable<Sequence<Nullable<Record<nsString, JS::Value>>>>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1055
1056
  void ReceiveAny(JS::MutableHandle<JS::Value> aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1057
1058
  void PassObject(JS::Handle<JSObject*> arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1059
1060
  void PassVariadicObject(const nsTArray<JSObject*>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1061
1062
  void PassNullableObject(JS::Handle<JSObject*> arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1063
1064
  void PassVariadicNullableObject(const nsTArray<JSObject*>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1065
1066
  void PassOptionalObject(const Optional<JS::Handle<JSObject*>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1067
1068
  void PassOptionalNullableObject(const Optional<JS::Handle<JSObject*>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1069
1070
  void PassOptionalNullableObjectWithDefaultValue(JS::Handle<JSObject*> arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1071
1072
  void PassSequenceOfObject(const Sequence<JSObject*>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1073
1074
  void PassSequenceOfNullableObject(const Sequence<JSObject*>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1075
1076
  void PassNullableSequenceOfObject(const Nullable<Sequence<JSObject*>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1077
1078
  void PassOptionalNullableSequenceOfNullableSequenceOfObject(const Optional<Nullable<Sequence<Nullable<Sequence<JSObject*>>>>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1079
1080
  void PassOptionalNullableSequenceOfNullableSequenceOfNullableObject(const Optional<Nullable<Sequence<Nullable<Sequence<JSObject*>>>>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1081
1082
  void PassRecordOfObject(const Record<nsString, JSObject*>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1083
1084
  void ReceiveObject(JS::MutableHandle<JSObject*> aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1085
1086
  void ReceiveNullableObject(JS::MutableHandle<JSObject*> aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1087
1088
  void PassUnion(const ObjectOrLong& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1089
1090
  void PassUnionWithNullable(const ObjectOrNullOrLong& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1091
1092
  void PassNullableUnion(const Nullable<ObjectOrLong>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1093
1094
  void PassOptionalUnion(const Optional<ObjectOrLong>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1095
1096
  void PassOptionalNullableUnion(const Optional<Nullable<ObjectOrLong>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1097
1098
  void PassOptionalNullableUnionWithDefaultValue(const Nullable<ObjectOrLong>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1099
1100
  void PassUnionWithArrayBuffer(const ArrayBufferOrLong& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1101
1102
  void PassUnionWithString(const StringOrObject& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1103
1104
  void PassUnionWithEnum(const SupportedTypeOrObject& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1105
1106
  void PassUnionWithObject(const ObjectOrLong& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1107
1108
  void PassUnionWithDefaultValue1(const DoubleOrString& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1109
1110
  void PassUnionWithDefaultValue2(const DoubleOrString& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1111
1112
  void PassUnionWithDefaultValue3(const DoubleOrString& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1113
1114
  void PassUnionWithDefaultValue4(const FloatOrString& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1115
1116
  void PassUnionWithDefaultValue5(const FloatOrString& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1117
1118
  void PassUnionWithDefaultValue6(const FloatOrString& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1119
1120
  void PassUnionWithDefaultValue7(const UnrestrictedDoubleOrString& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1121
1122
  void PassUnionWithDefaultValue8(const UnrestrictedDoubleOrString& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1123
1124
  void PassUnionWithDefaultValue9(const UnrestrictedDoubleOrString& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1125
1126
  void PassUnionWithDefaultValue10(const UnrestrictedDoubleOrString& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1127
1128
  void PassUnionWithDefaultValue11(const UnrestrictedFloatOrString& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1129
1130
  void PassUnionWithDefaultValue12(const UnrestrictedFloatOrString& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1131
1132
  void PassUnionWithDefaultValue13(const UnrestrictedFloatOrString& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1133
1134
  void PassUnionWithDefaultValue14(const DoubleOrByteString& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1135
1136
  void PassUnionWithDefaultValue15(const DoubleOrByteString& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1137
1138
  void PassUnionWithDefaultValue16(const DoubleOrByteString& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1139
1140
  void PassUnionWithDefaultValue17(const DoubleOrSupportedType& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1141
1142
  void PassUnionWithDefaultValue18(const DoubleOrSupportedType& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1143
1144
  void PassUnionWithDefaultValue19(const DoubleOrSupportedType& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1145
1146
  void PassUnionWithDefaultValue20(const DoubleOrUSVString& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1147
1148
  void PassUnionWithDefaultValue21(const DoubleOrUSVString& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1149
1150
  void PassUnionWithDefaultValue22(const DoubleOrUSVString& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1151
1152
  void PassNullableUnionWithDefaultValue1(const Nullable<DoubleOrString>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1153
1154
  void PassNullableUnionWithDefaultValue2(const Nullable<DoubleOrString>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1155
1156
  void PassNullableUnionWithDefaultValue3(const Nullable<DoubleOrString>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1157
1158
  void PassNullableUnionWithDefaultValue4(const Nullable<FloatOrString>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1159
1160
  void PassNullableUnionWithDefaultValue5(const Nullable<FloatOrString>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1161
1162
  void PassNullableUnionWithDefaultValue6(const Nullable<FloatOrString>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1163
1164
  void PassNullableUnionWithDefaultValue7(const Nullable<UnrestrictedDoubleOrString>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1165
1166
  void PassNullableUnionWithDefaultValue8(const Nullable<UnrestrictedDoubleOrString>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1167
1168
  void PassNullableUnionWithDefaultValue9(const Nullable<UnrestrictedDoubleOrString>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1169
1170
  void PassNullableUnionWithDefaultValue10(const Nullable<UnrestrictedFloatOrString>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1171
1172
  void PassNullableUnionWithDefaultValue11(const Nullable<UnrestrictedFloatOrString>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1173
1174
  void PassNullableUnionWithDefaultValue12(const Nullable<UnrestrictedFloatOrString>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1175
1176
  void PassNullableUnionWithDefaultValue13(const Nullable<DoubleOrByteString>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1177
1178
  void PassNullableUnionWithDefaultValue14(const Nullable<DoubleOrByteString>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1179
1180
  void PassNullableUnionWithDefaultValue15(const Nullable<DoubleOrByteString>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1181
1182
  void PassNullableUnionWithDefaultValue16(const Nullable<DoubleOrByteString>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1183
1184
  void PassNullableUnionWithDefaultValue17(const Nullable<DoubleOrSupportedType>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1185
1186
  void PassNullableUnionWithDefaultValue18(const Nullable<DoubleOrSupportedType>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1187
1188
  void PassNullableUnionWithDefaultValue19(const Nullable<DoubleOrSupportedType>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1189
1190
  void PassNullableUnionWithDefaultValue20(const Nullable<DoubleOrSupportedType>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1191
1192
  void PassNullableUnionWithDefaultValue21(const Nullable<DoubleOrUSVString>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1193
1194
  void PassNullableUnionWithDefaultValue22(const Nullable<DoubleOrUSVString>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1195
1196
  void PassNullableUnionWithDefaultValue23(const Nullable<DoubleOrUSVString>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1197
1198
  void PassNullableUnionWithDefaultValue24(const Nullable<DoubleOrUSVString>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1199
1200
  void PassSequenceOfUnions(const Sequence<OwningCanvasPatternOrCanvasGradient>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1201
1202
  void PassSequenceOfUnions2(const Sequence<OwningObjectOrLong>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1203
1204
  void PassVariadicUnion(const nsTArray<OwningCanvasPatternOrCanvasGradient>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1205
1206
  void PassSequenceOfNullableUnions(const Sequence<Nullable<OwningCanvasPatternOrCanvasGradient>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1207
1208
  void PassVariadicNullableUnion(const nsTArray<Nullable<OwningCanvasPatternOrCanvasGradient>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1209
1210
  void PassRecordOfUnions(const Record<nsString, OwningCanvasPatternOrCanvasGradient>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1211
1212
  void ReceiveUnion(OwningCanvasPatternOrCanvasGradient& aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1213
1214
  void ReceiveUnion2(OwningObjectOrLong& aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1215
1216
  void ReceiveUnionContainingNull(OwningCanvasPatternOrNullOrCanvasGradient& aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1217
1218
  void ReceiveNullableUnion(Nullable<OwningCanvasPatternOrCanvasGradient>& aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1219
1220
  void ReceiveNullableUnion2(Nullable<OwningObjectOrLong>& aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1221
1222
  void PassDate(Date arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1223
1224
  void PassNullableDate(const Nullable<Date>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1225
1226
  void PassOptionalDate(const Optional<Date>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1227
1228
  void PassOptionalNullableDate(const Optional<Nullable<Date>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1229
1230
  void PassOptionalNullableDateWithDefaultValue(const Nullable<Date>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1231
1232
  void PassDateSequence(const Sequence<Date>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1233
1234
  void PassNullableDateSequence(const Sequence<Nullable<Date>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1235
1236
  void PassDateRecord(const Record<nsString, Date>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1237
1238
  Date ReceiveDate(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1239
1240
  Nullable<Date> ReceiveNullableDate(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1241
1242
  void PassPromise(Promise& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1243
1244
  void PassOptionalPromise(const Optional<OwningNonNull<Promise>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1245
1246
  void PassPromiseSequence(const Sequence<OwningNonNull<Promise>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1247
1248
  already_AddRefed<Promise> ReceivePromise(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1249
1250
  already_AddRefed<Promise> ReceiveAddrefedPromise(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1251
1252
  void MethodRenamedTo(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1253
1254
  void MethodRenamedTo(int8_t argument, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1255
1256
  void OtherMethodRenamedTo(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1257
1258
  void PassDictionary(const Dict& x, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1259
1260
  void PassDictionary2(const Dict& x, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1261
1262
  void ReceiveDictionary(Dict& aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1263
1264
  void ReceiveNullableDictionary(Nullable<Dict>& aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1265
1266
  void PassOtherDictionary(const GrandparentDict& x, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1267
1268
  void PassSequenceOfDictionaries(const Sequence<Dict>& x, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1269
1270
  void PassRecordOfDictionaries(const Record<nsString, GrandparentDict>& x, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1271
1272
  void PassDictionaryOrLong(const Dict& x, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1273
1274
  void PassDictionaryOrLong(int32_t x, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1275
1276
  void PassDictContainingDict(const DictContainingDict& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1277
1278
  void PassDictContainingSequence(const DictContainingSequence& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1279
1280
  void ReceiveDictContainingSequence(DictContainingSequence& aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1281
1282
  void PassVariadicDictionary(const nsTArray<Dict>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1283
1284
  void DontEnforceRangeOrClamp(int8_t arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1285
1286
  void DoEnforceRange(int8_t arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1287
1288
  void DoClamp(int8_t arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1289
1290
  void ExerciseTypedefInterfaces1(TestJSImplInterface& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1291
1292
  already_AddRefed<TestJSImplInterface> ExerciseTypedefInterfaces2(TestJSImplInterface* arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1293
1294
  void ExerciseTypedefInterfaces3(TestJSImplInterface& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1295
1296
  int8_t DeprecatedMethod(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1297
1298
  void DeprecatedMethodWithContext(JS::Handle<JS::Value> arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1299
1300
  bool Overload1(TestJSImplInterface& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1301
1302
  already_AddRefed<TestJSImplInterface> Overload1(const nsAString& strs, TestJSImplInterface& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1303
1304
  void Overload2(TestJSImplInterface& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1305
1306
  void Overload2(const Dict& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1307
1308
  void Overload2(bool arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1309
1310
  void Overload2(const nsAString& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1311
1312
  void Overload2(Date arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1313
1314
  void Overload3(TestJSImplInterface& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1315
1316
  void Overload3(MyTestCallback& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1317
1318
  void Overload3(bool arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1319
1320
  void Overload4(TestJSImplInterface& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1321
1322
  void Overload4(TestCallbackInterface& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1323
1324
  void Overload4(const nsAString& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1325
1326
  void Overload5(int32_t arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1327
1328
  void Overload5(MyTestEnum arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1329
1330
  void Overload6(int32_t arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1331
1332
  void Overload6(bool arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1333
1334
  void Overload7(int32_t arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1335
1336
  void Overload7(bool arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1337
1338
  void Overload7(const nsCString& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1339
1340
  void Overload8(int32_t arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1341
1342
  void Overload8(TestJSImplInterface& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1343
1344
  void Overload9(const Nullable<int32_t>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1345
1346
  void Overload9(const nsAString& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1347
1348
  void Overload10(const Nullable<int32_t>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1349
1350
  void Overload10(JS::Handle<JSObject*> arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1351
1352
  void Overload11(int32_t arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1353
1354
  void Overload11(const nsAString& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1355
1356
  void Overload12(int32_t arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1357
1358
  void Overload12(const Nullable<bool>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1359
1360
  void Overload13(const Nullable<int32_t>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1361
1362
  void Overload13(bool arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1363
1364
  void Overload14(const Optional<int32_t>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1365
1366
  void Overload14(TestInterface& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1367
1368
  void Overload15(int32_t arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1369
1370
  void Overload15(const Optional<NonNull<TestInterface>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1371
1372
  void Overload16(int32_t arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1373
1374
  void Overload16(const Optional<TestInterface*>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1375
1376
  void Overload17(const Sequence<int32_t>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1377
1378
  void Overload17(const Record<nsString, int32_t>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1379
1380
  void Overload18(const Record<nsString, nsString>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1381
1382
  void Overload18(const Sequence<nsString>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1383
1384
  void Overload19(const Sequence<int32_t>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1385
1386
  void Overload19(const Dict& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1387
1388
  void Overload20(const Dict& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1389
1390
  void Overload20(const Sequence<int32_t>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1391
1392
  void PassVariadicThirdArg(const nsAString& arg1, int32_t arg2, const nsTArray<OwningNonNull<TestJSImplInterface>>& arg3, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1393
1394
  void Prefable10(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1395
1396
  void Prefable11(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1397
1398
  void Prefable13(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1399
1400
  void Prefable17(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1401
1402
  void Prefable18(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1403
1404
  void Prefable19(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1405
1406
  void Prefable20(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1407
1408
  void ConditionalOnSecureContext5(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1409
1410
  void ConditionalOnSecureContext6(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1411
1412
  void ConditionalOnSecureContext7(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1413
1414
  void ConditionalOnSecureContext8(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1415
1416
  void PassRenamedInterface(nsRenamedInterface& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1417
1418
  void ThrowingMethod(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1419
1420
  void CanOOMMethod(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1421
1422
  void CeReactionsMethod(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1423
1424
  void CeReactionsMethodOverload(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1425
1426
  void CeReactionsMethodOverload(const nsAString& bar, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1427
1428
  void PassArgsWithDefaults(const Optional<int32_t>& arg1, TestInterface* arg2, const Dict& arg3, double arg4, const Optional<float>& arg5, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1429
1430
  void ToJSON(JS::MutableHandle<JSObject*> aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1431
1432
  void Dashed_method(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1433
1434
  void NonEnumerableMethod(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1435
1436
  void __Init(const nsAString& str, uint32_t num, const Nullable<bool>& boolArg, TestInterface* iface, int32_t arg1, const DictForConstructor& dict, JS::Handle<JS::Value> any1, JS::Handle<JSObject*> obj1, JS::Handle<JSObject*> obj2, const Sequence<Dict>& seq, JS::Handle<JS::Value> any2, const Optional<JS::Handle<JSObject*>>& obj3, const Optional<JS::Handle<JSObject*>>& obj4, const Uint8Array& typedArr, const ArrayBuffer& arrayBuf, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1437
1438
  inline bool
1439
  operator==(const TestJSImplInterfaceJSImpl& aOther) const
1440
0
  {
1441
0
    return CallbackInterface::operator==(aOther);
1442
0
  }
1443
1444
  int8_t GetReadonlyByte(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1445
1446
  int8_t GetWritableByte(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1447
1448
  int8_t GetSideEffectFreeByte(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1449
1450
  int8_t GetDomDependentByte(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1451
1452
  int8_t GetConstantByte(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1453
1454
  int8_t GetDeviceStateDependentByte(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1455
1456
  int16_t GetReadonlyShort(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1457
1458
  int16_t GetWritableShort(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1459
1460
  int32_t GetReadonlyLong(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1461
1462
  int32_t GetWritableLong(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1463
1464
  int64_t GetReadonlyLongLong(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1465
1466
  int64_t GetWritableLongLong(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1467
1468
  uint8_t GetReadonlyOctet(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1469
1470
  uint8_t GetWritableOctet(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1471
1472
  uint16_t GetReadonlyUnsignedShort(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1473
1474
  uint16_t GetWritableUnsignedShort(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1475
1476
  uint32_t GetReadonlyUnsignedLong(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1477
1478
  uint32_t GetWritableUnsignedLong(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1479
1480
  uint64_t GetReadonlyUnsignedLongLong(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1481
1482
  uint64_t GetWritableUnsignedLongLong(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1483
1484
  float GetWritableFloat(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1485
1486
  float GetWritableUnrestrictedFloat(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1487
1488
  Nullable<float> GetWritableNullableFloat(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1489
1490
  Nullable<float> GetWritableNullableUnrestrictedFloat(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1491
1492
  double GetWritableDouble(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1493
1494
  double GetWritableUnrestrictedDouble(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1495
1496
  Nullable<double> GetWritableNullableDouble(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1497
1498
  Nullable<double> GetWritableNullableUnrestrictedDouble(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1499
1500
  float GetLenientFloatAttr(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1501
1502
  double GetLenientDoubleAttr(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1503
1504
  already_AddRefed<TestJSImplInterface> GetNonNullSelf(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1505
1506
  already_AddRefed<TestJSImplInterface> GetNullableSelf(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1507
1508
  already_AddRefed<IndirectlyImplementedInterface> GetNonNullOther(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1509
1510
  already_AddRefed<IndirectlyImplementedInterface> GetNullableOther(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1511
1512
  already_AddRefed<TestExternalInterface> GetNonNullExternal(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1513
1514
  already_AddRefed<TestExternalInterface> GetNullableExternal(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1515
1516
  already_AddRefed<TestCallbackInterface> GetNonNullCallbackInterface(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1517
1518
  already_AddRefed<TestCallbackInterface> GetNullableCallbackInterface(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1519
1520
  void GetUint8ArrayAttr(JS::MutableHandle<JSObject*> aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1521
1522
  MyTestEnum GetEnumAttribute(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1523
1524
  MyTestEnum GetReadonlyEnumAttribute(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1525
1526
  void GetWritableUnion(OwningCanvasPatternOrCanvasGradient& aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1527
1528
  void GetWritableUnionContainingNull(OwningCanvasPatternOrNullOrCanvasGradient& aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1529
1530
  void GetWritableNullableUnion(Nullable<OwningCanvasPatternOrCanvasGradient>& aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1531
1532
  int8_t GetAttributeGetterRenamedTo(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1533
1534
  int8_t GetAttributeRenamedTo(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1535
1536
  int8_t GetOtherAttributeRenamedTo(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1537
1538
  int8_t GetEnforcedByte(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1539
1540
  int8_t GetClampedByte(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1541
1542
  int8_t GetDeprecatedAttribute(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1543
1544
  bool GetPrefable1(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1545
1546
  bool GetPrefable2(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1547
1548
  bool GetPrefable3(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1549
1550
  bool GetPrefable4(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1551
1552
  bool GetPrefable5(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1553
1554
  bool GetPrefable6(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1555
1556
  bool GetPrefable7(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1557
1558
  bool GetPrefable8(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1559
1560
  bool GetPrefable9(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1561
1562
  bool GetPrefable12(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1563
1564
  bool GetPrefable14(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1565
1566
  bool GetPrefable15(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1567
1568
  bool GetPrefable16(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1569
1570
  bool GetConditionalOnSecureContext1(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1571
1572
  bool GetConditionalOnSecureContext2(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1573
1574
  bool GetConditionalOnSecureContext3(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1575
1576
  bool GetConditionalOnSecureContext4(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1577
1578
  int32_t GetAttrWithLenientThis(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1579
1580
  already_AddRefed<TestJSImplInterface> GetPutForwardsAttr(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1581
1582
  already_AddRefed<TestJSImplInterface> GetPutForwardsAttr2(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1583
1584
  already_AddRefed<TestJSImplInterface> GetPutForwardsAttr3(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1585
1586
  bool GetThrowingAttr(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1587
1588
  bool GetThrowingGetterAttr(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1589
1590
  bool GetThrowingSetterAttr(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1591
1592
  bool GetCanOOMAttr(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1593
1594
  bool GetCanOOMGetterAttr(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1595
1596
  bool GetCanOOMSetterAttr(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1597
1598
  bool GetCeReactionsAttr(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1599
1600
  void GetToJSONShouldSkipThis(JS::MutableHandle<JS::Value> aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1601
1602
  already_AddRefed<TestParentInterface> GetToJSONShouldSkipThis2(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1603
1604
  already_AddRefed<TestCallbackInterface> GetToJSONShouldSkipThis3(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1605
1606
  int8_t GetDashed_attribute(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1607
1608
  bool GetNonEnumerableAttr(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1609
1610
  void SetWritableByte(int8_t arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1611
1612
  void SetSideEffectFreeByte(int8_t arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1613
1614
  void SetDomDependentByte(int8_t arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1615
1616
  void SetWritableShort(int16_t arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1617
1618
  void SetWritableLong(int32_t arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1619
1620
  void SetWritableLongLong(int64_t arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1621
1622
  void SetWritableOctet(uint8_t arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1623
1624
  void SetWritableUnsignedShort(uint16_t arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1625
1626
  void SetWritableUnsignedLong(uint32_t arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1627
1628
  void SetWritableUnsignedLongLong(uint64_t arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1629
1630
  void SetWritableFloat(float arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1631
1632
  void SetWritableUnrestrictedFloat(float arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1633
1634
  void SetWritableNullableFloat(const Nullable<float>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1635
1636
  void SetWritableNullableUnrestrictedFloat(const Nullable<float>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1637
1638
  void SetWritableDouble(double arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1639
1640
  void SetWritableUnrestrictedDouble(double arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1641
1642
  void SetWritableNullableDouble(const Nullable<double>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1643
1644
  void SetWritableNullableUnrestrictedDouble(const Nullable<double>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1645
1646
  void SetLenientFloatAttr(float arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1647
1648
  void SetLenientDoubleAttr(double arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1649
1650
  void SetNonNullSelf(TestJSImplInterface& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1651
1652
  void SetNullableSelf(TestJSImplInterface* arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1653
1654
  void SetNonNullOther(IndirectlyImplementedInterface& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1655
1656
  void SetNullableOther(IndirectlyImplementedInterface* arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1657
1658
  void SetNonNullExternal(TestExternalInterface* arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1659
1660
  void SetNullableExternal(TestExternalInterface* arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1661
1662
  void SetNonNullCallbackInterface(TestCallbackInterface& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1663
1664
  void SetNullableCallbackInterface(TestCallbackInterface* arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1665
1666
  void SetUint8ArrayAttr(const Uint8Array& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1667
1668
  void SetEnumAttribute(MyTestEnum arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1669
1670
  void SetWritableUnion(const CanvasPatternOrCanvasGradient& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1671
1672
  void SetWritableUnionContainingNull(const CanvasPatternOrNullOrCanvasGradient& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1673
1674
  void SetWritableNullableUnion(const Nullable<CanvasPatternOrCanvasGradient>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1675
1676
  void SetAttributeRenamedTo(int8_t arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1677
1678
  void SetOtherAttributeRenamedTo(int8_t arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1679
1680
  void SetEnforcedByte(int8_t arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1681
1682
  void SetClampedByte(int8_t arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1683
1684
  void SetDeprecatedAttribute(int8_t arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1685
1686
  void SetAttrWithLenientThis(int32_t arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1687
1688
  void SetThrowingAttr(bool arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1689
1690
  void SetThrowingGetterAttr(bool arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1691
1692
  void SetThrowingSetterAttr(bool arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1693
1694
  void SetCanOOMAttr(bool arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1695
1696
  void SetCanOOMGetterAttr(bool arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1697
1698
  void SetCanOOMSetterAttr(bool arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1699
1700
  void SetCeReactionsAttr(bool arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1701
1702
  void SetToJSONShouldSkipThis(JS::Handle<JS::Value> arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1703
1704
  void SetToJSONShouldSkipThis2(TestParentInterface& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1705
1706
  void SetToJSONShouldSkipThis3(TestCallbackInterface& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1707
1708
  void SetDashed_attribute(int8_t arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1709
1710
  void SetNonEnumerableAttr(bool arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1711
1712
private:
1713
  static bool
1714
  InitIds(JSContext* cx, TestJSImplInterfaceAtoms* atomsCache);
1715
};
1716
1717
1718
class TestJSImplInterface : public nsSupportsWeakReference,
1719
                            public nsWrapperCache
1720
{
1721
public:
1722
  NS_DECL_CYCLE_COLLECTING_ISUPPORTS
1723
  NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(TestJSImplInterface)
1724
1725
private:
1726
  RefPtr<TestJSImplInterfaceJSImpl> mImpl;
1727
  nsCOMPtr<nsIGlobalObject> mParent;
1728
1729
public:
1730
  TestJSImplInterface(JS::Handle<JSObject*> aJSImplObject, JS::Handle<JSObject*> aJSImplGlobal, nsIGlobalObject* aParent);
1731
1732
protected:
1733
  virtual ~TestJSImplInterface();
1734
1735
public:
1736
  nsISupports* GetParentObject() const;
1737
1738
  DocGroup* GetDocGroup() const;
1739
1740
  virtual JSObject* WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto) override;
1741
1742
  static already_AddRefed<TestJSImplInterface> Constructor(const GlobalObject& global, JSContext* cx, const nsAString& str, uint32_t num, const Nullable<bool>& boolArg, TestInterface* iface, int32_t arg1, const DictForConstructor& dict, JS::Handle<JS::Value> any1, JS::Handle<JSObject*> obj1, JS::Handle<JSObject*> obj2, const Sequence<Dict>& seq, JS::Handle<JS::Value> any2, const Optional<JS::Handle<JSObject*>>& obj3, const Optional<JS::Handle<JSObject*>>& obj4, const Uint8Array& typedArr, const ArrayBuffer& arrayBuf, ErrorResult& aRv, JS::Handle<JSObject*> aGivenProto = nullptr);
1743
1744
  int8_t GetReadonlyByte(ErrorResult& aRv, JS::Realm* aRealm = nullptr) const;
1745
1746
  int8_t GetWritableByte(ErrorResult& aRv, JS::Realm* aRealm = nullptr) const;
1747
1748
  void SetWritableByte(int8_t arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1749
1750
  void PassByte(int8_t arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1751
1752
  int8_t ReceiveByte(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1753
1754
  void PassOptionalByte(const Optional<int8_t>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1755
1756
  void PassOptionalByteBeforeRequired(const Optional<int8_t>& arg1, int8_t arg2, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1757
1758
  void PassOptionalByteWithDefault(int8_t arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1759
1760
  void PassOptionalByteWithDefaultBeforeRequired(int8_t arg1, int8_t arg2, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1761
1762
  void PassNullableByte(const Nullable<int8_t>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1763
1764
  void PassOptionalNullableByte(const Optional<Nullable<int8_t>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1765
1766
  void PassVariadicByte(const Sequence<int8_t>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1767
1768
  int8_t GetSideEffectFreeByte(ErrorResult& aRv, JS::Realm* aRealm = nullptr) const;
1769
1770
  void SetSideEffectFreeByte(int8_t arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1771
1772
  int8_t GetDomDependentByte(ErrorResult& aRv, JS::Realm* aRealm = nullptr) const;
1773
1774
  void SetDomDependentByte(int8_t arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1775
1776
  int8_t GetConstantByte(ErrorResult& aRv, JS::Realm* aRealm = nullptr) const;
1777
1778
  int8_t GetDeviceStateDependentByte(ErrorResult& aRv, JS::Realm* aRealm = nullptr) const;
1779
1780
  int8_t ReturnByteSideEffectFree(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1781
1782
  int8_t ReturnDOMDependentByte(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1783
1784
  int8_t ReturnConstantByte(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1785
1786
  int8_t ReturnDeviceStateDependentByte(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1787
1788
  int16_t GetReadonlyShort(ErrorResult& aRv, JS::Realm* aRealm = nullptr) const;
1789
1790
  int16_t GetWritableShort(ErrorResult& aRv, JS::Realm* aRealm = nullptr) const;
1791
1792
  void SetWritableShort(int16_t arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1793
1794
  void PassShort(int16_t arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1795
1796
  int16_t ReceiveShort(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1797
1798
  void PassOptionalShort(const Optional<int16_t>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1799
1800
  void PassOptionalShortWithDefault(int16_t arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1801
1802
  int32_t GetReadonlyLong(ErrorResult& aRv, JS::Realm* aRealm = nullptr) const;
1803
1804
  int32_t GetWritableLong(ErrorResult& aRv, JS::Realm* aRealm = nullptr) const;
1805
1806
  void SetWritableLong(int32_t arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1807
1808
  void PassLong(int32_t arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1809
1810
  int32_t ReceiveLong(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1811
1812
  void PassOptionalLong(const Optional<int32_t>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1813
1814
  void PassOptionalLongWithDefault(int32_t arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1815
1816
  int64_t GetReadonlyLongLong(ErrorResult& aRv, JS::Realm* aRealm = nullptr) const;
1817
1818
  int64_t GetWritableLongLong(ErrorResult& aRv, JS::Realm* aRealm = nullptr) const;
1819
1820
  void SetWritableLongLong(int64_t arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1821
1822
  void PassLongLong(int64_t arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1823
1824
  int64_t ReceiveLongLong(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1825
1826
  void PassOptionalLongLong(const Optional<int64_t>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1827
1828
  void PassOptionalLongLongWithDefault(int64_t arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1829
1830
  uint8_t GetReadonlyOctet(ErrorResult& aRv, JS::Realm* aRealm = nullptr) const;
1831
1832
  uint8_t GetWritableOctet(ErrorResult& aRv, JS::Realm* aRealm = nullptr) const;
1833
1834
  void SetWritableOctet(uint8_t arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1835
1836
  void PassOctet(uint8_t arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1837
1838
  uint8_t ReceiveOctet(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1839
1840
  void PassOptionalOctet(const Optional<uint8_t>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1841
1842
  void PassOptionalOctetWithDefault(uint8_t arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1843
1844
  uint16_t GetReadonlyUnsignedShort(ErrorResult& aRv, JS::Realm* aRealm = nullptr) const;
1845
1846
  uint16_t GetWritableUnsignedShort(ErrorResult& aRv, JS::Realm* aRealm = nullptr) const;
1847
1848
  void SetWritableUnsignedShort(uint16_t arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1849
1850
  void PassUnsignedShort(uint16_t arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1851
1852
  uint16_t ReceiveUnsignedShort(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1853
1854
  void PassOptionalUnsignedShort(const Optional<uint16_t>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1855
1856
  void PassOptionalUnsignedShortWithDefault(uint16_t arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1857
1858
  uint32_t GetReadonlyUnsignedLong(ErrorResult& aRv, JS::Realm* aRealm = nullptr) const;
1859
1860
  uint32_t GetWritableUnsignedLong(ErrorResult& aRv, JS::Realm* aRealm = nullptr) const;
1861
1862
  void SetWritableUnsignedLong(uint32_t arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1863
1864
  void PassUnsignedLong(uint32_t arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1865
1866
  uint32_t ReceiveUnsignedLong(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1867
1868
  void PassOptionalUnsignedLong(const Optional<uint32_t>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1869
1870
  void PassOptionalUnsignedLongWithDefault(uint32_t arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1871
1872
  uint64_t GetReadonlyUnsignedLongLong(ErrorResult& aRv, JS::Realm* aRealm = nullptr) const;
1873
1874
  uint64_t GetWritableUnsignedLongLong(ErrorResult& aRv, JS::Realm* aRealm = nullptr) const;
1875
1876
  void SetWritableUnsignedLongLong(uint64_t arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1877
1878
  void PassUnsignedLongLong(uint64_t arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1879
1880
  uint64_t ReceiveUnsignedLongLong(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1881
1882
  void PassOptionalUnsignedLongLong(const Optional<uint64_t>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1883
1884
  void PassOptionalUnsignedLongLongWithDefault(uint64_t arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1885
1886
  float GetWritableFloat(ErrorResult& aRv, JS::Realm* aRealm = nullptr) const;
1887
1888
  void SetWritableFloat(float arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1889
1890
  float GetWritableUnrestrictedFloat(ErrorResult& aRv, JS::Realm* aRealm = nullptr) const;
1891
1892
  void SetWritableUnrestrictedFloat(float arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1893
1894
  Nullable<float> GetWritableNullableFloat(ErrorResult& aRv, JS::Realm* aRealm = nullptr) const;
1895
1896
  void SetWritableNullableFloat(const Nullable<float>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1897
1898
  Nullable<float> GetWritableNullableUnrestrictedFloat(ErrorResult& aRv, JS::Realm* aRealm = nullptr) const;
1899
1900
  void SetWritableNullableUnrestrictedFloat(const Nullable<float>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1901
1902
  double GetWritableDouble(ErrorResult& aRv, JS::Realm* aRealm = nullptr) const;
1903
1904
  void SetWritableDouble(double arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1905
1906
  double GetWritableUnrestrictedDouble(ErrorResult& aRv, JS::Realm* aRealm = nullptr) const;
1907
1908
  void SetWritableUnrestrictedDouble(double arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1909
1910
  Nullable<double> GetWritableNullableDouble(ErrorResult& aRv, JS::Realm* aRealm = nullptr) const;
1911
1912
  void SetWritableNullableDouble(const Nullable<double>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1913
1914
  Nullable<double> GetWritableNullableUnrestrictedDouble(ErrorResult& aRv, JS::Realm* aRealm = nullptr) const;
1915
1916
  void SetWritableNullableUnrestrictedDouble(const Nullable<double>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1917
1918
  void PassFloat(float arg1, float arg2, const Nullable<float>& arg3, const Nullable<float>& arg4, double arg5, double arg6, const Nullable<double>& arg7, const Nullable<double>& arg8, const Sequence<float>& arg9, const Sequence<float>& arg10, const Sequence<Nullable<float>>& arg11, const Sequence<Nullable<float>>& arg12, const Sequence<double>& arg13, const Sequence<double>& arg14, const Sequence<Nullable<double>>& arg15, const Sequence<Nullable<double>>& arg16, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1919
1920
  void PassLenientFloat(float arg1, float arg2, const Nullable<float>& arg3, const Nullable<float>& arg4, double arg5, double arg6, const Nullable<double>& arg7, const Nullable<double>& arg8, const Sequence<float>& arg9, const Sequence<float>& arg10, const Sequence<Nullable<float>>& arg11, const Sequence<Nullable<float>>& arg12, const Sequence<double>& arg13, const Sequence<double>& arg14, const Sequence<Nullable<double>>& arg15, const Sequence<Nullable<double>>& arg16, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1921
1922
  float GetLenientFloatAttr(ErrorResult& aRv, JS::Realm* aRealm = nullptr) const;
1923
1924
  void SetLenientFloatAttr(float arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1925
1926
  double GetLenientDoubleAttr(ErrorResult& aRv, JS::Realm* aRealm = nullptr) const;
1927
1928
  void SetLenientDoubleAttr(double arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1929
1930
  // Return a raw pointer here to avoid refcounting, but make sure it's safe (the object should be kept alive by the callee).
1931
  already_AddRefed<TestJSImplInterface> ReceiveSelf(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1932
1933
  // Return a raw pointer here to avoid refcounting, but make sure it's safe (the object should be kept alive by the callee).
1934
  already_AddRefed<TestJSImplInterface> ReceiveNullableSelf(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1935
1936
  // Return a raw pointer here to avoid refcounting, but make sure it's safe (the object should be kept alive by the callee).
1937
  already_AddRefed<TestJSImplInterface> ReceiveWeakSelf(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1938
1939
  // Return a raw pointer here to avoid refcounting, but make sure it's safe (the object should be kept alive by the callee).
1940
  already_AddRefed<TestJSImplInterface> ReceiveWeakNullableSelf(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1941
1942
  void PassSelf(TestJSImplInterface& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1943
1944
  void PassNullableSelf(TestJSImplInterface* arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1945
1946
  // Return a raw pointer here to avoid refcounting, but make sure it's safe (the object should be kept alive by the callee).
1947
  already_AddRefed<TestJSImplInterface> GetNonNullSelf(ErrorResult& aRv, JS::Realm* aRealm = nullptr) const;
1948
1949
  void SetNonNullSelf(TestJSImplInterface& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1950
1951
  // Return a raw pointer here to avoid refcounting, but make sure it's safe (the object should be kept alive by the callee).
1952
  already_AddRefed<TestJSImplInterface> GetNullableSelf(ErrorResult& aRv, JS::Realm* aRealm = nullptr) const;
1953
1954
  void SetNullableSelf(TestJSImplInterface* arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1955
1956
  void PassOptionalSelf(const Optional<TestJSImplInterface*>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1957
1958
  void PassOptionalNonNullSelf(const Optional<NonNull<TestJSImplInterface>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1959
1960
  void PassOptionalSelfWithDefault(TestJSImplInterface* arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1961
1962
  already_AddRefed<TestNonWrapperCacheInterface> ReceiveNonWrapperCacheInterface(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1963
1964
  already_AddRefed<TestNonWrapperCacheInterface> ReceiveNullableNonWrapperCacheInterface(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1965
1966
  void ReceiveNonWrapperCacheInterfaceSequence(nsTArray<RefPtr<TestNonWrapperCacheInterface>>& aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1967
1968
  void ReceiveNullableNonWrapperCacheInterfaceSequence(nsTArray<RefPtr<TestNonWrapperCacheInterface>>& aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1969
1970
  void ReceiveNonWrapperCacheInterfaceNullableSequence(Nullable<nsTArray<RefPtr<TestNonWrapperCacheInterface>>>& aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1971
1972
  void ReceiveNullableNonWrapperCacheInterfaceNullableSequence(Nullable<nsTArray<RefPtr<TestNonWrapperCacheInterface>>>& aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1973
1974
  // Return a raw pointer here to avoid refcounting, but make sure it's safe (the object should be kept alive by the callee).
1975
  already_AddRefed<IndirectlyImplementedInterface> ReceiveOther(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1976
1977
  // Return a raw pointer here to avoid refcounting, but make sure it's safe (the object should be kept alive by the callee).
1978
  already_AddRefed<IndirectlyImplementedInterface> ReceiveNullableOther(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1979
1980
  // Return a raw pointer here to avoid refcounting, but make sure it's safe (the object should be kept alive by the callee).
1981
  already_AddRefed<IndirectlyImplementedInterface> ReceiveWeakOther(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1982
1983
  // Return a raw pointer here to avoid refcounting, but make sure it's safe (the object should be kept alive by the callee).
1984
  already_AddRefed<IndirectlyImplementedInterface> ReceiveWeakNullableOther(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1985
1986
  void PassOther(IndirectlyImplementedInterface& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1987
1988
  void PassNullableOther(IndirectlyImplementedInterface* arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1989
1990
  // Return a raw pointer here to avoid refcounting, but make sure it's safe (the object should be kept alive by the callee).
1991
  already_AddRefed<IndirectlyImplementedInterface> GetNonNullOther(ErrorResult& aRv, JS::Realm* aRealm = nullptr) const;
1992
1993
  void SetNonNullOther(IndirectlyImplementedInterface& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1994
1995
  // Return a raw pointer here to avoid refcounting, but make sure it's safe (the object should be kept alive by the callee).
1996
  already_AddRefed<IndirectlyImplementedInterface> GetNullableOther(ErrorResult& aRv, JS::Realm* aRealm = nullptr) const;
1997
1998
  void SetNullableOther(IndirectlyImplementedInterface* arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
1999
2000
  void PassOptionalOther(const Optional<IndirectlyImplementedInterface*>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2001
2002
  void PassOptionalNonNullOther(const Optional<NonNull<IndirectlyImplementedInterface>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2003
2004
  void PassOptionalOtherWithDefault(IndirectlyImplementedInterface* arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2005
2006
  // Return a raw pointer here to avoid refcounting, but make sure it's safe (the object should be kept alive by the callee).
2007
  already_AddRefed<TestExternalInterface> ReceiveExternal(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2008
2009
  // Return a raw pointer here to avoid refcounting, but make sure it's safe (the object should be kept alive by the callee).
2010
  already_AddRefed<TestExternalInterface> ReceiveNullableExternal(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2011
2012
  // Return a raw pointer here to avoid refcounting, but make sure it's safe (the object should be kept alive by the callee).
2013
  already_AddRefed<TestExternalInterface> ReceiveWeakExternal(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2014
2015
  // Return a raw pointer here to avoid refcounting, but make sure it's safe (the object should be kept alive by the callee).
2016
  already_AddRefed<TestExternalInterface> ReceiveWeakNullableExternal(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2017
2018
  void PassExternal(TestExternalInterface* arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2019
2020
  void PassNullableExternal(TestExternalInterface* arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2021
2022
  // Return a raw pointer here to avoid refcounting, but make sure it's safe (the object should be kept alive by the callee).
2023
  already_AddRefed<TestExternalInterface> GetNonNullExternal(ErrorResult& aRv, JS::Realm* aRealm = nullptr) const;
2024
2025
  void SetNonNullExternal(TestExternalInterface* arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2026
2027
  // Return a raw pointer here to avoid refcounting, but make sure it's safe (the object should be kept alive by the callee).
2028
  already_AddRefed<TestExternalInterface> GetNullableExternal(ErrorResult& aRv, JS::Realm* aRealm = nullptr) const;
2029
2030
  void SetNullableExternal(TestExternalInterface* arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2031
2032
  void PassOptionalExternal(const Optional<TestExternalInterface*>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2033
2034
  void PassOptionalNonNullExternal(const Optional<TestExternalInterface*>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2035
2036
  void PassOptionalExternalWithDefault(TestExternalInterface* arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2037
2038
  // Return a raw pointer here to avoid refcounting, but make sure it's safe (the object should be kept alive by the callee).
2039
  already_AddRefed<TestCallbackInterface> ReceiveCallbackInterface(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2040
2041
  // Return a raw pointer here to avoid refcounting, but make sure it's safe (the object should be kept alive by the callee).
2042
  already_AddRefed<TestCallbackInterface> ReceiveNullableCallbackInterface(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2043
2044
  // Return a raw pointer here to avoid refcounting, but make sure it's safe (the object should be kept alive by the callee).
2045
  already_AddRefed<TestCallbackInterface> ReceiveWeakCallbackInterface(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2046
2047
  // Return a raw pointer here to avoid refcounting, but make sure it's safe (the object should be kept alive by the callee).
2048
  already_AddRefed<TestCallbackInterface> ReceiveWeakNullableCallbackInterface(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2049
2050
  void PassCallbackInterface(TestCallbackInterface& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2051
2052
  void PassNullableCallbackInterface(TestCallbackInterface* arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2053
2054
  // Return a raw pointer here to avoid refcounting, but make sure it's safe (the object should be kept alive by the callee).
2055
  already_AddRefed<TestCallbackInterface> GetNonNullCallbackInterface(ErrorResult& aRv, JS::Realm* aRealm = nullptr) const;
2056
2057
  void SetNonNullCallbackInterface(TestCallbackInterface& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2058
2059
  // Return a raw pointer here to avoid refcounting, but make sure it's safe (the object should be kept alive by the callee).
2060
  already_AddRefed<TestCallbackInterface> GetNullableCallbackInterface(ErrorResult& aRv, JS::Realm* aRealm = nullptr) const;
2061
2062
  void SetNullableCallbackInterface(TestCallbackInterface* arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2063
2064
  void PassOptionalCallbackInterface(const Optional<RefPtr<TestCallbackInterface>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2065
2066
  void PassOptionalNonNullCallbackInterface(const Optional<OwningNonNull<TestCallbackInterface>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2067
2068
  void PassOptionalCallbackInterfaceWithDefault(TestCallbackInterface* arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2069
2070
  // Return a raw pointer here to avoid refcounting, but make sure it's safe (the object should be kept alive by the callee).
2071
  already_AddRefed<IndirectlyImplementedInterface> ReceiveConsequentialInterface(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2072
2073
  void PassConsequentialInterface(IndirectlyImplementedInterface& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2074
2075
  void ReceiveSequence(nsTArray<int32_t>& aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2076
2077
  void ReceiveNullableSequence(Nullable<nsTArray<int32_t>>& aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2078
2079
  void ReceiveSequenceOfNullableInts(nsTArray<Nullable<int32_t>>& aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2080
2081
  void ReceiveNullableSequenceOfNullableInts(Nullable<nsTArray<Nullable<int32_t>>>& aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2082
2083
  void PassSequence(const Sequence<int32_t>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2084
2085
  void PassNullableSequence(const Nullable<Sequence<int32_t>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2086
2087
  void PassSequenceOfNullableInts(const Sequence<Nullable<int32_t>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2088
2089
  void PassOptionalSequenceOfNullableInts(const Optional<Sequence<Nullable<int32_t>>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2090
2091
  void PassOptionalNullableSequenceOfNullableInts(const Optional<Nullable<Sequence<Nullable<int32_t>>>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2092
2093
  void ReceiveCastableObjectSequence(nsTArray<RefPtr<TestJSImplInterface>>& aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2094
2095
  void ReceiveCallbackObjectSequence(nsTArray<RefPtr<TestCallbackInterface>>& aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2096
2097
  void ReceiveNullableCastableObjectSequence(nsTArray<RefPtr<TestJSImplInterface>>& aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2098
2099
  void ReceiveNullableCallbackObjectSequence(nsTArray<RefPtr<TestCallbackInterface>>& aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2100
2101
  void ReceiveCastableObjectNullableSequence(Nullable<nsTArray<RefPtr<TestJSImplInterface>>>& aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2102
2103
  void ReceiveNullableCastableObjectNullableSequence(Nullable<nsTArray<RefPtr<TestJSImplInterface>>>& aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2104
2105
  void ReceiveWeakCastableObjectSequence(nsTArray<RefPtr<TestJSImplInterface>>& aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2106
2107
  void ReceiveWeakNullableCastableObjectSequence(nsTArray<RefPtr<TestJSImplInterface>>& aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2108
2109
  void ReceiveWeakCastableObjectNullableSequence(Nullable<nsTArray<RefPtr<TestJSImplInterface>>>& aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2110
2111
  void ReceiveWeakNullableCastableObjectNullableSequence(Nullable<nsTArray<RefPtr<TestJSImplInterface>>>& aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2112
2113
  void PassCastableObjectSequence(const Sequence<OwningNonNull<TestJSImplInterface>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2114
2115
  void PassNullableCastableObjectSequence(const Sequence<RefPtr<TestJSImplInterface>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2116
2117
  void PassCastableObjectNullableSequence(const Nullable<Sequence<OwningNonNull<TestJSImplInterface>>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2118
2119
  void PassNullableCastableObjectNullableSequence(const Nullable<Sequence<RefPtr<TestJSImplInterface>>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2120
2121
  void PassOptionalSequence(const Optional<Sequence<int32_t>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2122
2123
  void PassOptionalSequenceWithDefaultValue(const Sequence<int32_t>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2124
2125
  void PassOptionalNullableSequence(const Optional<Nullable<Sequence<int32_t>>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2126
2127
  void PassOptionalNullableSequenceWithDefaultValue(const Nullable<Sequence<int32_t>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2128
2129
  void PassOptionalNullableSequenceWithDefaultValue2(const Nullable<Sequence<int32_t>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2130
2131
  void PassOptionalObjectSequence(const Optional<Sequence<OwningNonNull<TestJSImplInterface>>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2132
2133
  void PassExternalInterfaceSequence(const Sequence<RefPtr<TestExternalInterface>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2134
2135
  void PassNullableExternalInterfaceSequence(const Sequence<RefPtr<TestExternalInterface>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2136
2137
  void ReceiveStringSequence(nsTArray<nsString>& aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2138
2139
  void ReceiveByteStringSequence(nsTArray<nsCString>& aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2140
2141
  void ReceiveAnySequence(nsTArray<JS::Value>& aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2142
2143
  void ReceiveNullableAnySequence(Nullable<nsTArray<JS::Value>>& aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2144
2145
  void ReceiveObjectSequence(nsTArray<JSObject*>& aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2146
2147
  void ReceiveNullableObjectSequence(nsTArray<JSObject*>& aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2148
2149
  void PassSequenceOfSequences(const Sequence<Sequence<int32_t>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2150
2151
  void PassSequenceOfSequencesOfSequences(const Sequence<Sequence<Sequence<int32_t>>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2152
2153
  void PassRecord(const Record<nsString, int32_t>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2154
2155
  void PassNullableRecord(const Nullable<Record<nsString, int32_t>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2156
2157
  void PassRecordOfNullableInts(const Record<nsString, Nullable<int32_t>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2158
2159
  void PassOptionalRecordOfNullableInts(const Optional<Record<nsString, Nullable<int32_t>>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2160
2161
  void PassOptionalNullableRecordOfNullableInts(const Optional<Nullable<Record<nsString, Nullable<int32_t>>>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2162
2163
  void PassCastableObjectRecord(const Record<nsString, OwningNonNull<TestInterface>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2164
2165
  void PassNullableCastableObjectRecord(const Record<nsString, RefPtr<TestInterface>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2166
2167
  void PassCastableObjectNullableRecord(const Nullable<Record<nsString, OwningNonNull<TestInterface>>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2168
2169
  void PassNullableCastableObjectNullableRecord(const Nullable<Record<nsString, RefPtr<TestInterface>>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2170
2171
  void PassOptionalRecord(const Optional<Record<nsString, int32_t>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2172
2173
  void PassOptionalNullableRecord(const Optional<Nullable<Record<nsString, int32_t>>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2174
2175
  void PassOptionalNullableRecordWithDefaultValue(const Nullable<Record<nsString, int32_t>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2176
2177
  void PassOptionalObjectRecord(const Optional<Record<nsString, OwningNonNull<TestInterface>>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2178
2179
  void PassExternalInterfaceRecord(const Record<nsString, RefPtr<TestExternalInterface>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2180
2181
  void PassNullableExternalInterfaceRecord(const Record<nsString, RefPtr<TestExternalInterface>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2182
2183
  void PassStringRecord(const Record<nsString, nsString>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2184
2185
  void PassByteStringRecord(const Record<nsString, nsCString>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2186
2187
  void PassRecordOfRecords(const Record<nsString, Record<nsString, int32_t>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2188
2189
  void ReceiveRecord(Record<nsString, int32_t>& aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2190
2191
  void ReceiveNullableRecord(Nullable<Record<nsString, int32_t>>& aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2192
2193
  void ReceiveRecordOfNullableInts(Record<nsString, Nullable<int32_t>>& aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2194
2195
  void ReceiveNullableRecordOfNullableInts(Nullable<Record<nsString, Nullable<int32_t>>>& aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2196
2197
  void ReceiveAnyRecord(Record<nsString, JS::Value>& aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2198
2199
  void PassArrayBuffer(const ArrayBuffer& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2200
2201
  void PassNullableArrayBuffer(const Nullable<ArrayBuffer>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2202
2203
  void PassOptionalArrayBuffer(const Optional<ArrayBuffer>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2204
2205
  void PassOptionalNullableArrayBuffer(const Optional<Nullable<ArrayBuffer>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2206
2207
  void PassOptionalNullableArrayBufferWithDefaultValue(const Nullable<ArrayBuffer>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2208
2209
  void PassArrayBufferView(const ArrayBufferView& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2210
2211
  void PassInt8Array(const Int8Array& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2212
2213
  void PassInt16Array(const Int16Array& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2214
2215
  void PassInt32Array(const Int32Array& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2216
2217
  void PassUint8Array(const Uint8Array& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2218
2219
  void PassUint16Array(const Uint16Array& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2220
2221
  void PassUint32Array(const Uint32Array& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2222
2223
  void PassUint8ClampedArray(const Uint8ClampedArray& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2224
2225
  void PassFloat32Array(const Float32Array& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2226
2227
  void PassFloat64Array(const Float64Array& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2228
2229
  void PassSequenceOfArrayBuffers(const Sequence<ArrayBuffer>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2230
2231
  void PassSequenceOfNullableArrayBuffers(const Sequence<Nullable<ArrayBuffer>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2232
2233
  void PassRecordOfArrayBuffers(const Record<nsString, ArrayBuffer>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2234
2235
  void PassRecordOfNullableArrayBuffers(const Record<nsString, Nullable<ArrayBuffer>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2236
2237
  void PassVariadicTypedArray(const Sequence<Float32Array>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2238
2239
  void PassVariadicNullableTypedArray(const Sequence<Nullable<Float32Array>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2240
2241
  void ReceiveUint8Array(JS::MutableHandle<JSObject*> aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2242
2243
  void GetUint8ArrayAttr(JS::MutableHandle<JSObject*> aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr) const;
2244
2245
  void SetUint8ArrayAttr(const Uint8Array& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2246
2247
  void PassString(const nsAString& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2248
2249
  void PassNullableString(const nsAString& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2250
2251
  void PassOptionalString(const Optional<nsAString>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2252
2253
  void PassOptionalStringWithDefaultValue(const nsAString& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2254
2255
  void PassOptionalNullableString(const Optional<nsAString>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2256
2257
  void PassOptionalNullableStringWithDefaultValue(const nsAString& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2258
2259
  void PassVariadicString(const Sequence<nsString>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2260
2261
  void PassByteString(const nsCString& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2262
2263
  void PassNullableByteString(const nsCString& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2264
2265
  void PassOptionalByteString(const Optional<nsCString>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2266
2267
  void PassOptionalByteStringWithDefaultValue(const nsCString& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2268
2269
  void PassOptionalNullableByteString(const Optional<nsCString>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2270
2271
  void PassOptionalNullableByteStringWithDefaultValue(const nsCString& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2272
2273
  void PassVariadicByteString(const Sequence<nsCString>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2274
2275
  void PassUnionByteString(const ByteStringOrLong& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2276
2277
  void PassOptionalUnionByteString(const Optional<ByteStringOrLong>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2278
2279
  void PassOptionalUnionByteStringWithDefaultValue(const ByteStringOrLong& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2280
2281
  void PassSVS(const nsAString& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2282
2283
  void PassNullableSVS(const nsAString& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2284
2285
  void PassOptionalSVS(const Optional<nsAString>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2286
2287
  void PassOptionalSVSWithDefaultValue(const nsAString& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2288
2289
  void PassOptionalNullableSVS(const Optional<nsAString>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2290
2291
  void PassOptionalNullableSVSWithDefaultValue(const nsAString& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2292
2293
  void PassVariadicSVS(const Sequence<nsString>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2294
2295
  void ReceiveSVS(nsString& aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2296
2297
  void PassEnum(MyTestEnum arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2298
2299
  void PassNullableEnum(const Nullable<MyTestEnum>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2300
2301
  void PassOptionalEnum(const Optional<MyTestEnum>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2302
2303
  void PassEnumWithDefault(MyTestEnum arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2304
2305
  void PassOptionalNullableEnum(const Optional<Nullable<MyTestEnum>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2306
2307
  void PassOptionalNullableEnumWithDefaultValue(const Nullable<MyTestEnum>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2308
2309
  void PassOptionalNullableEnumWithDefaultValue2(const Nullable<MyTestEnum>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2310
2311
  MyTestEnum ReceiveEnum(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2312
2313
  Nullable<MyTestEnum> ReceiveNullableEnum(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2314
2315
  MyTestEnum GetEnumAttribute(ErrorResult& aRv, JS::Realm* aRealm = nullptr) const;
2316
2317
  void SetEnumAttribute(MyTestEnum arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2318
2319
  MyTestEnum GetReadonlyEnumAttribute(ErrorResult& aRv, JS::Realm* aRealm = nullptr) const;
2320
2321
  void PassCallback(MyTestCallback& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2322
2323
  void PassNullableCallback(MyTestCallback* arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2324
2325
  void PassOptionalCallback(const Optional<OwningNonNull<MyTestCallback>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2326
2327
  void PassOptionalNullableCallback(const Optional<RefPtr<MyTestCallback>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2328
2329
  void PassOptionalNullableCallbackWithDefaultValue(MyTestCallback* arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2330
2331
  already_AddRefed<MyTestCallback> ReceiveCallback(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2332
2333
  already_AddRefed<MyTestCallback> ReceiveNullableCallback(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2334
2335
  void PassOptionalNullableTreatAsNullCallbackWithDefaultValue(TestTreatAsNullCallback* arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2336
2337
  void PassAny(JS::Handle<JS::Value> arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2338
2339
  void PassVariadicAny(const Sequence<JS::Value>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2340
2341
  void PassOptionalAny(JS::Handle<JS::Value> arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2342
2343
  void PassAnyDefaultNull(JS::Handle<JS::Value> arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2344
2345
  void PassSequenceOfAny(const Sequence<JS::Value>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2346
2347
  void PassNullableSequenceOfAny(const Nullable<Sequence<JS::Value>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2348
2349
  void PassOptionalSequenceOfAny(const Optional<Sequence<JS::Value>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2350
2351
  void PassOptionalNullableSequenceOfAny(const Optional<Nullable<Sequence<JS::Value>>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2352
2353
  void PassOptionalSequenceOfAnyWithDefaultValue(const Nullable<Sequence<JS::Value>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2354
2355
  void PassSequenceOfSequenceOfAny(const Sequence<Sequence<JS::Value>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2356
2357
  void PassSequenceOfNullableSequenceOfAny(const Sequence<Nullable<Sequence<JS::Value>>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2358
2359
  void PassNullableSequenceOfNullableSequenceOfAny(const Nullable<Sequence<Nullable<Sequence<JS::Value>>>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2360
2361
  void PassOptionalNullableSequenceOfNullableSequenceOfAny(const Optional<Nullable<Sequence<Nullable<Sequence<JS::Value>>>>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2362
2363
  void PassRecordOfAny(const Record<nsString, JS::Value>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2364
2365
  void PassNullableRecordOfAny(const Nullable<Record<nsString, JS::Value>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2366
2367
  void PassOptionalRecordOfAny(const Optional<Record<nsString, JS::Value>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2368
2369
  void PassOptionalNullableRecordOfAny(const Optional<Nullable<Record<nsString, JS::Value>>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2370
2371
  void PassOptionalRecordOfAnyWithDefaultValue(const Nullable<Record<nsString, JS::Value>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2372
2373
  void PassRecordOfRecordOfAny(const Record<nsString, Record<nsString, JS::Value>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2374
2375
  void PassRecordOfNullableRecordOfAny(const Record<nsString, Nullable<Record<nsString, JS::Value>>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2376
2377
  void PassNullableRecordOfNullableRecordOfAny(const Nullable<Record<nsString, Nullable<Record<nsString, JS::Value>>>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2378
2379
  void PassOptionalNullableRecordOfNullableRecordOfAny(const Optional<Nullable<Record<nsString, Nullable<Record<nsString, JS::Value>>>>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2380
2381
  void PassOptionalNullableRecordOfNullableSequenceOfAny(const Optional<Nullable<Record<nsString, Nullable<Sequence<JS::Value>>>>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2382
2383
  void PassOptionalNullableSequenceOfNullableRecordOfAny(const Optional<Nullable<Sequence<Nullable<Record<nsString, JS::Value>>>>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2384
2385
  void ReceiveAny(JS::MutableHandle<JS::Value> aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2386
2387
  void PassObject(JS::Handle<JSObject*> arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2388
2389
  void PassVariadicObject(const Sequence<JSObject*>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2390
2391
  void PassNullableObject(JS::Handle<JSObject*> arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2392
2393
  void PassVariadicNullableObject(const Sequence<JSObject*>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2394
2395
  void PassOptionalObject(const Optional<JS::Handle<JSObject*>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2396
2397
  void PassOptionalNullableObject(const Optional<JS::Handle<JSObject*>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2398
2399
  void PassOptionalNullableObjectWithDefaultValue(JS::Handle<JSObject*> arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2400
2401
  void PassSequenceOfObject(const Sequence<JSObject*>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2402
2403
  void PassSequenceOfNullableObject(const Sequence<JSObject*>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2404
2405
  void PassNullableSequenceOfObject(const Nullable<Sequence<JSObject*>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2406
2407
  void PassOptionalNullableSequenceOfNullableSequenceOfObject(const Optional<Nullable<Sequence<Nullable<Sequence<JSObject*>>>>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2408
2409
  void PassOptionalNullableSequenceOfNullableSequenceOfNullableObject(const Optional<Nullable<Sequence<Nullable<Sequence<JSObject*>>>>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2410
2411
  void PassRecordOfObject(const Record<nsString, JSObject*>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2412
2413
  void ReceiveObject(JS::MutableHandle<JSObject*> aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2414
2415
  void ReceiveNullableObject(JS::MutableHandle<JSObject*> aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2416
2417
  void PassUnion(const ObjectOrLong& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2418
2419
  void PassUnionWithNullable(const ObjectOrNullOrLong& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2420
2421
  void PassNullableUnion(const Nullable<ObjectOrLong>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2422
2423
  void PassOptionalUnion(const Optional<ObjectOrLong>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2424
2425
  void PassOptionalNullableUnion(const Optional<Nullable<ObjectOrLong>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2426
2427
  void PassOptionalNullableUnionWithDefaultValue(const Nullable<ObjectOrLong>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2428
2429
  void PassUnionWithArrayBuffer(const ArrayBufferOrLong& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2430
2431
  void PassUnionWithString(const StringOrObject& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2432
2433
  void PassUnionWithEnum(const SupportedTypeOrObject& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2434
2435
  void PassUnionWithObject(const ObjectOrLong& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2436
2437
  void PassUnionWithDefaultValue1(const DoubleOrString& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2438
2439
  void PassUnionWithDefaultValue2(const DoubleOrString& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2440
2441
  void PassUnionWithDefaultValue3(const DoubleOrString& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2442
2443
  void PassUnionWithDefaultValue4(const FloatOrString& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2444
2445
  void PassUnionWithDefaultValue5(const FloatOrString& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2446
2447
  void PassUnionWithDefaultValue6(const FloatOrString& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2448
2449
  void PassUnionWithDefaultValue7(const UnrestrictedDoubleOrString& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2450
2451
  void PassUnionWithDefaultValue8(const UnrestrictedDoubleOrString& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2452
2453
  void PassUnionWithDefaultValue9(const UnrestrictedDoubleOrString& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2454
2455
  void PassUnionWithDefaultValue10(const UnrestrictedDoubleOrString& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2456
2457
  void PassUnionWithDefaultValue11(const UnrestrictedFloatOrString& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2458
2459
  void PassUnionWithDefaultValue12(const UnrestrictedFloatOrString& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2460
2461
  void PassUnionWithDefaultValue13(const UnrestrictedFloatOrString& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2462
2463
  void PassUnionWithDefaultValue14(const DoubleOrByteString& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2464
2465
  void PassUnionWithDefaultValue15(const DoubleOrByteString& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2466
2467
  void PassUnionWithDefaultValue16(const DoubleOrByteString& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2468
2469
  void PassUnionWithDefaultValue17(const DoubleOrSupportedType& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2470
2471
  void PassUnionWithDefaultValue18(const DoubleOrSupportedType& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2472
2473
  void PassUnionWithDefaultValue19(const DoubleOrSupportedType& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2474
2475
  void PassUnionWithDefaultValue20(const DoubleOrUSVString& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2476
2477
  void PassUnionWithDefaultValue21(const DoubleOrUSVString& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2478
2479
  void PassUnionWithDefaultValue22(const DoubleOrUSVString& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2480
2481
  void PassNullableUnionWithDefaultValue1(const Nullable<DoubleOrString>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2482
2483
  void PassNullableUnionWithDefaultValue2(const Nullable<DoubleOrString>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2484
2485
  void PassNullableUnionWithDefaultValue3(const Nullable<DoubleOrString>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2486
2487
  void PassNullableUnionWithDefaultValue4(const Nullable<FloatOrString>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2488
2489
  void PassNullableUnionWithDefaultValue5(const Nullable<FloatOrString>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2490
2491
  void PassNullableUnionWithDefaultValue6(const Nullable<FloatOrString>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2492
2493
  void PassNullableUnionWithDefaultValue7(const Nullable<UnrestrictedDoubleOrString>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2494
2495
  void PassNullableUnionWithDefaultValue8(const Nullable<UnrestrictedDoubleOrString>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2496
2497
  void PassNullableUnionWithDefaultValue9(const Nullable<UnrestrictedDoubleOrString>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2498
2499
  void PassNullableUnionWithDefaultValue10(const Nullable<UnrestrictedFloatOrString>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2500
2501
  void PassNullableUnionWithDefaultValue11(const Nullable<UnrestrictedFloatOrString>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2502
2503
  void PassNullableUnionWithDefaultValue12(const Nullable<UnrestrictedFloatOrString>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2504
2505
  void PassNullableUnionWithDefaultValue13(const Nullable<DoubleOrByteString>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2506
2507
  void PassNullableUnionWithDefaultValue14(const Nullable<DoubleOrByteString>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2508
2509
  void PassNullableUnionWithDefaultValue15(const Nullable<DoubleOrByteString>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2510
2511
  void PassNullableUnionWithDefaultValue16(const Nullable<DoubleOrByteString>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2512
2513
  void PassNullableUnionWithDefaultValue17(const Nullable<DoubleOrSupportedType>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2514
2515
  void PassNullableUnionWithDefaultValue18(const Nullable<DoubleOrSupportedType>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2516
2517
  void PassNullableUnionWithDefaultValue19(const Nullable<DoubleOrSupportedType>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2518
2519
  void PassNullableUnionWithDefaultValue20(const Nullable<DoubleOrSupportedType>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2520
2521
  void PassNullableUnionWithDefaultValue21(const Nullable<DoubleOrUSVString>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2522
2523
  void PassNullableUnionWithDefaultValue22(const Nullable<DoubleOrUSVString>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2524
2525
  void PassNullableUnionWithDefaultValue23(const Nullable<DoubleOrUSVString>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2526
2527
  void PassNullableUnionWithDefaultValue24(const Nullable<DoubleOrUSVString>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2528
2529
  void PassSequenceOfUnions(const Sequence<OwningCanvasPatternOrCanvasGradient>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2530
2531
  void PassSequenceOfUnions2(const Sequence<OwningObjectOrLong>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2532
2533
  void PassVariadicUnion(const Sequence<OwningCanvasPatternOrCanvasGradient>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2534
2535
  void PassSequenceOfNullableUnions(const Sequence<Nullable<OwningCanvasPatternOrCanvasGradient>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2536
2537
  void PassVariadicNullableUnion(const Sequence<Nullable<OwningCanvasPatternOrCanvasGradient>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2538
2539
  void PassRecordOfUnions(const Record<nsString, OwningCanvasPatternOrCanvasGradient>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2540
2541
  void ReceiveUnion(OwningCanvasPatternOrCanvasGradient& aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2542
2543
  void ReceiveUnion2(OwningObjectOrLong& aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2544
2545
  void ReceiveUnionContainingNull(OwningCanvasPatternOrNullOrCanvasGradient& aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2546
2547
  void ReceiveNullableUnion(Nullable<OwningCanvasPatternOrCanvasGradient>& aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2548
2549
  void ReceiveNullableUnion2(Nullable<OwningObjectOrLong>& aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2550
2551
  void GetWritableUnion(OwningCanvasPatternOrCanvasGradient& aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr) const;
2552
2553
  void SetWritableUnion(const CanvasPatternOrCanvasGradient& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2554
2555
  void GetWritableUnionContainingNull(OwningCanvasPatternOrNullOrCanvasGradient& aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr) const;
2556
2557
  void SetWritableUnionContainingNull(const CanvasPatternOrNullOrCanvasGradient& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2558
2559
  void GetWritableNullableUnion(Nullable<OwningCanvasPatternOrCanvasGradient>& aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr) const;
2560
2561
  void SetWritableNullableUnion(const Nullable<CanvasPatternOrCanvasGradient>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2562
2563
  void PassDate(Date arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2564
2565
  void PassNullableDate(const Nullable<Date>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2566
2567
  void PassOptionalDate(const Optional<Date>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2568
2569
  void PassOptionalNullableDate(const Optional<Nullable<Date>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2570
2571
  void PassOptionalNullableDateWithDefaultValue(const Nullable<Date>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2572
2573
  void PassDateSequence(const Sequence<Date>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2574
2575
  void PassNullableDateSequence(const Sequence<Nullable<Date>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2576
2577
  void PassDateRecord(const Record<nsString, Date>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2578
2579
  Date ReceiveDate(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2580
2581
  Nullable<Date> ReceiveNullableDate(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2582
2583
  void PassPromise(Promise& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2584
2585
  void PassOptionalPromise(const Optional<OwningNonNull<Promise>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2586
2587
  void PassPromiseSequence(const Sequence<OwningNonNull<Promise>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2588
2589
  // Return a raw pointer here to avoid refcounting, but make sure it's safe (the object should be kept alive by the callee).
2590
  already_AddRefed<Promise> ReceivePromise(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2591
2592
  // Return a raw pointer here to avoid refcounting, but make sure it's safe (the object should be kept alive by the callee).
2593
  already_AddRefed<Promise> ReceiveAddrefedPromise(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2594
2595
  void MethodRenamedTo(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2596
  void MethodRenamedTo(int8_t argument, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2597
2598
  void OtherMethodRenamedTo(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2599
2600
  int8_t GetAttributeGetterRenamedTo(ErrorResult& aRv, JS::Realm* aRealm = nullptr) const;
2601
2602
  int8_t GetAttributeRenamedTo(ErrorResult& aRv, JS::Realm* aRealm = nullptr) const;
2603
2604
  void SetAttributeRenamedTo(int8_t arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2605
2606
  int8_t GetOtherAttributeRenamedTo(ErrorResult& aRv, JS::Realm* aRealm = nullptr) const;
2607
2608
  void SetOtherAttributeRenamedTo(int8_t arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2609
2610
  void PassDictionary(const Dict& x, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2611
2612
  void PassDictionary2(const Dict& x, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2613
2614
  void ReceiveDictionary(Dict& aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2615
2616
  void ReceiveNullableDictionary(Nullable<Dict>& aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2617
2618
  void PassOtherDictionary(const GrandparentDict& x, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2619
2620
  void PassSequenceOfDictionaries(const Sequence<Dict>& x, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2621
2622
  void PassRecordOfDictionaries(const Record<nsString, GrandparentDict>& x, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2623
2624
  void PassDictionaryOrLong(const Dict& x, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2625
  void PassDictionaryOrLong(int32_t x, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2626
2627
  void PassDictContainingDict(const DictContainingDict& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2628
2629
  void PassDictContainingSequence(const DictContainingSequence& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2630
2631
  void ReceiveDictContainingSequence(DictContainingSequence& aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2632
2633
  void PassVariadicDictionary(const Sequence<Dict>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2634
2635
  void DontEnforceRangeOrClamp(int8_t arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2636
2637
  void DoEnforceRange(int8_t arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2638
2639
  void DoClamp(int8_t arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2640
2641
  int8_t GetEnforcedByte(ErrorResult& aRv, JS::Realm* aRealm = nullptr) const;
2642
2643
  void SetEnforcedByte(int8_t arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2644
2645
  int8_t GetClampedByte(ErrorResult& aRv, JS::Realm* aRealm = nullptr) const;
2646
2647
  void SetClampedByte(int8_t arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2648
2649
  void ExerciseTypedefInterfaces1(TestJSImplInterface& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2650
2651
  // Return a raw pointer here to avoid refcounting, but make sure it's safe (the object should be kept alive by the callee).
2652
  already_AddRefed<TestJSImplInterface> ExerciseTypedefInterfaces2(TestJSImplInterface* arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2653
2654
  void ExerciseTypedefInterfaces3(TestJSImplInterface& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2655
2656
  int8_t GetDeprecatedAttribute(ErrorResult& aRv, JS::Realm* aRealm = nullptr) const;
2657
2658
  void SetDeprecatedAttribute(int8_t arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2659
2660
  int8_t DeprecatedMethod(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2661
2662
  void DeprecatedMethodWithContext(JS::Handle<JS::Value> arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2663
2664
  bool Overload1(TestJSImplInterface& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2665
  // Return a raw pointer here to avoid refcounting, but make sure it's safe (the object should be kept alive by the callee).
2666
  already_AddRefed<TestJSImplInterface> Overload1(const nsAString& strs, TestJSImplInterface& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2667
2668
  void Overload2(TestJSImplInterface& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2669
  void Overload2(const Dict& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2670
  void Overload2(bool arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2671
  void Overload2(const nsAString& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2672
  void Overload2(Date arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2673
2674
  void Overload3(TestJSImplInterface& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2675
  void Overload3(MyTestCallback& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2676
  void Overload3(bool arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2677
2678
  void Overload4(TestJSImplInterface& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2679
  void Overload4(TestCallbackInterface& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2680
  void Overload4(const nsAString& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2681
2682
  void Overload5(int32_t arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2683
  void Overload5(MyTestEnum arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2684
2685
  void Overload6(int32_t arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2686
  void Overload6(bool arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2687
2688
  void Overload7(int32_t arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2689
  void Overload7(bool arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2690
  void Overload7(const nsCString& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2691
2692
  void Overload8(int32_t arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2693
  void Overload8(TestJSImplInterface& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2694
2695
  void Overload9(const Nullable<int32_t>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2696
  void Overload9(const nsAString& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2697
2698
  void Overload10(const Nullable<int32_t>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2699
  void Overload10(JS::Handle<JSObject*> arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2700
2701
  void Overload11(int32_t arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2702
  void Overload11(const nsAString& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2703
2704
  void Overload12(int32_t arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2705
  void Overload12(const Nullable<bool>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2706
2707
  void Overload13(const Nullable<int32_t>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2708
  void Overload13(bool arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2709
2710
  void Overload14(const Optional<int32_t>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2711
  void Overload14(TestInterface& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2712
2713
  void Overload15(int32_t arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2714
  void Overload15(const Optional<NonNull<TestInterface>>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2715
2716
  void Overload16(int32_t arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2717
  void Overload16(const Optional<TestInterface*>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2718
2719
  void Overload17(const Sequence<int32_t>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2720
  void Overload17(const Record<nsString, int32_t>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2721
2722
  void Overload18(const Record<nsString, nsString>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2723
  void Overload18(const Sequence<nsString>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2724
2725
  void Overload19(const Sequence<int32_t>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2726
  void Overload19(const Dict& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2727
2728
  void Overload20(const Dict& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2729
  void Overload20(const Sequence<int32_t>& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2730
2731
  void PassVariadicThirdArg(const nsAString& arg1, int32_t arg2, const Sequence<OwningNonNull<TestJSImplInterface>>& arg3, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2732
2733
  bool GetPrefable1(ErrorResult& aRv, JS::Realm* aRealm = nullptr) const;
2734
2735
  bool GetPrefable2(ErrorResult& aRv, JS::Realm* aRealm = nullptr) const;
2736
2737
  bool GetPrefable3(ErrorResult& aRv, JS::Realm* aRealm = nullptr) const;
2738
2739
  bool GetPrefable4(ErrorResult& aRv, JS::Realm* aRealm = nullptr) const;
2740
2741
  bool GetPrefable5(ErrorResult& aRv, JS::Realm* aRealm = nullptr) const;
2742
2743
  bool GetPrefable6(ErrorResult& aRv, JS::Realm* aRealm = nullptr) const;
2744
2745
  bool GetPrefable7(ErrorResult& aRv, JS::Realm* aRealm = nullptr) const;
2746
2747
  bool GetPrefable8(ErrorResult& aRv, JS::Realm* aRealm = nullptr) const;
2748
2749
  bool GetPrefable9(ErrorResult& aRv, JS::Realm* aRealm = nullptr) const;
2750
2751
  void Prefable10(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2752
2753
  void Prefable11(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2754
2755
  bool GetPrefable12(ErrorResult& aRv, JS::Realm* aRealm = nullptr) const;
2756
2757
  void Prefable13(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2758
2759
  bool GetPrefable14(ErrorResult& aRv, JS::Realm* aRealm = nullptr) const;
2760
2761
  bool GetPrefable15(ErrorResult& aRv, JS::Realm* aRealm = nullptr) const;
2762
2763
  bool GetPrefable16(ErrorResult& aRv, JS::Realm* aRealm = nullptr) const;
2764
2765
  void Prefable17(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2766
2767
  void Prefable18(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2768
2769
  void Prefable19(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2770
2771
  void Prefable20(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2772
2773
  bool GetConditionalOnSecureContext1(ErrorResult& aRv, JS::Realm* aRealm = nullptr) const;
2774
2775
  bool GetConditionalOnSecureContext2(ErrorResult& aRv, JS::Realm* aRealm = nullptr) const;
2776
2777
  bool GetConditionalOnSecureContext3(ErrorResult& aRv, JS::Realm* aRealm = nullptr) const;
2778
2779
  bool GetConditionalOnSecureContext4(ErrorResult& aRv, JS::Realm* aRealm = nullptr) const;
2780
2781
  void ConditionalOnSecureContext5(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2782
2783
  void ConditionalOnSecureContext6(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2784
2785
  void ConditionalOnSecureContext7(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2786
2787
  void ConditionalOnSecureContext8(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2788
2789
  int32_t GetAttrWithLenientThis(ErrorResult& aRv, JS::Realm* aRealm = nullptr) const;
2790
2791
  void SetAttrWithLenientThis(int32_t arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2792
2793
  void PassRenamedInterface(nsRenamedInterface& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2794
2795
  // Return a raw pointer here to avoid refcounting, but make sure it's safe (the object should be kept alive by the callee).
2796
  already_AddRefed<TestJSImplInterface> GetPutForwardsAttr(ErrorResult& aRv, JS::Realm* aRealm = nullptr) const;
2797
2798
  // Return a raw pointer here to avoid refcounting, but make sure it's safe (the object should be kept alive by the callee).
2799
  already_AddRefed<TestJSImplInterface> GetPutForwardsAttr2(ErrorResult& aRv, JS::Realm* aRealm = nullptr) const;
2800
2801
  // Return a raw pointer here to avoid refcounting, but make sure it's safe (the object should be kept alive by the callee).
2802
  already_AddRefed<TestJSImplInterface> GetPutForwardsAttr3(ErrorResult& aRv, JS::Realm* aRealm = nullptr) const;
2803
2804
  void ThrowingMethod(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2805
2806
  bool GetThrowingAttr(ErrorResult& aRv, JS::Realm* aRealm = nullptr) const;
2807
2808
  void SetThrowingAttr(bool arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2809
2810
  bool GetThrowingGetterAttr(ErrorResult& aRv, JS::Realm* aRealm = nullptr) const;
2811
2812
  void SetThrowingGetterAttr(bool arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2813
2814
  bool GetThrowingSetterAttr(ErrorResult& aRv, JS::Realm* aRealm = nullptr) const;
2815
2816
  void SetThrowingSetterAttr(bool arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2817
2818
  void CanOOMMethod(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2819
2820
  bool GetCanOOMAttr(ErrorResult& aRv, JS::Realm* aRealm = nullptr) const;
2821
2822
  void SetCanOOMAttr(bool arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2823
2824
  bool GetCanOOMGetterAttr(ErrorResult& aRv, JS::Realm* aRealm = nullptr) const;
2825
2826
  void SetCanOOMGetterAttr(bool arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2827
2828
  bool GetCanOOMSetterAttr(ErrorResult& aRv, JS::Realm* aRealm = nullptr) const;
2829
2830
  void SetCanOOMSetterAttr(bool arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2831
2832
  void CeReactionsMethod(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2833
2834
  void CeReactionsMethodOverload(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2835
  void CeReactionsMethodOverload(const nsAString& bar, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2836
2837
  bool GetCeReactionsAttr(ErrorResult& aRv, JS::Realm* aRealm = nullptr) const;
2838
2839
  void SetCeReactionsAttr(bool arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2840
2841
  void PassArgsWithDefaults(const Optional<int32_t>& arg1, TestInterface* arg2, const Dict& arg3, double arg4, const Optional<float>& arg5, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2842
2843
  void GetToJSONShouldSkipThis(JS::MutableHandle<JS::Value> aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr) const;
2844
2845
  void SetToJSONShouldSkipThis(JS::Handle<JS::Value> arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2846
2847
  // Return a raw pointer here to avoid refcounting, but make sure it's safe (the object should be kept alive by the callee).
2848
  already_AddRefed<TestParentInterface> GetToJSONShouldSkipThis2(ErrorResult& aRv, JS::Realm* aRealm = nullptr) const;
2849
2850
  void SetToJSONShouldSkipThis2(TestParentInterface& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2851
2852
  // Return a raw pointer here to avoid refcounting, but make sure it's safe (the object should be kept alive by the callee).
2853
  already_AddRefed<TestCallbackInterface> GetToJSONShouldSkipThis3(ErrorResult& aRv, JS::Realm* aRealm = nullptr) const;
2854
2855
  void SetToJSONShouldSkipThis3(TestCallbackInterface& arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2856
2857
  void ToJSON(JS::MutableHandle<JSObject*> aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2858
2859
  int8_t GetDashed_attribute(ErrorResult& aRv, JS::Realm* aRealm = nullptr) const;
2860
2861
  void SetDashed_attribute(int8_t arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2862
2863
  void Dashed_method(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2864
2865
  bool GetNonEnumerableAttr(ErrorResult& aRv, JS::Realm* aRealm = nullptr) const;
2866
2867
  void SetNonEnumerableAttr(bool arg, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2868
2869
  void NonEnumerableMethod(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
2870
2871
  static bool
2872
  _Create(JSContext* cx, unsigned argc, JS::Value* vp);
2873
};
2874
2875
2876
class TestJSImplNoInterfaceObjectJSImpl : public CallbackInterface
2877
{
2878
public:
2879
  explicit inline TestJSImplNoInterfaceObjectJSImpl(JSContext* aCx, JS::Handle<JSObject*> aCallback, JS::Handle<JSObject*> aCallbackGlobal, nsIGlobalObject* aIncumbentGlobal)
2880
    : CallbackInterface(aCx, aCallback, aCallbackGlobal, aIncumbentGlobal)
2881
0
  {
2882
0
  }
2883
2884
  explicit inline TestJSImplNoInterfaceObjectJSImpl(JSObject* aCallback, JSObject* aCallbackGlobal, const FastCallbackConstructor& )
2885
    : CallbackInterface(aCallback, aCallbackGlobal, FastCallbackConstructor())
2886
0
  {
2887
0
  }
2888
2889
  explicit inline TestJSImplNoInterfaceObjectJSImpl(JSObject* aCallback, JSObject* aCallbackGlobal, JSObject* aAsyncStack, nsIGlobalObject* aIncumbentGlobal)
2890
    : CallbackInterface(aCallback, aCallbackGlobal, aAsyncStack, aIncumbentGlobal)
2891
0
  {
2892
0
  }
2893
2894
  inline bool
2895
  operator==(const TestJSImplNoInterfaceObjectJSImpl& aOther) const
2896
0
  {
2897
0
    return CallbackInterface::operator==(aOther);
2898
0
  }
2899
};
2900
2901
2902
class TestJSImplNoInterfaceObject final : public nsSupportsWeakReference,
2903
                                          public nsWrapperCache
2904
{
2905
public:
2906
  NS_DECL_CYCLE_COLLECTING_ISUPPORTS
2907
  NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(TestJSImplNoInterfaceObject)
2908
2909
private:
2910
  RefPtr<TestJSImplNoInterfaceObjectJSImpl> mImpl;
2911
  nsCOMPtr<nsIGlobalObject> mParent;
2912
2913
public:
2914
  TestJSImplNoInterfaceObject(JS::Handle<JSObject*> aJSImplObject, JS::Handle<JSObject*> aJSImplGlobal, nsIGlobalObject* aParent);
2915
2916
private:
2917
  ~TestJSImplNoInterfaceObject();
2918
2919
public:
2920
  nsISupports* GetParentObject() const;
2921
2922
  virtual JSObject* WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto) override;
2923
2924
  static bool
2925
  _Create(JSContext* cx, unsigned argc, JS::Value* vp);
2926
};
2927
2928
2929
class TestNavigatorJSImpl : public CallbackInterface
2930
{
2931
public:
2932
  explicit inline TestNavigatorJSImpl(JSContext* aCx, JS::Handle<JSObject*> aCallback, JS::Handle<JSObject*> aCallbackGlobal, nsIGlobalObject* aIncumbentGlobal)
2933
    : CallbackInterface(aCx, aCallback, aCallbackGlobal, aIncumbentGlobal)
2934
0
  {
2935
0
  }
2936
2937
  explicit inline TestNavigatorJSImpl(JSObject* aCallback, JSObject* aCallbackGlobal, const FastCallbackConstructor& )
2938
    : CallbackInterface(aCallback, aCallbackGlobal, FastCallbackConstructor())
2939
0
  {
2940
0
  }
2941
2942
  explicit inline TestNavigatorJSImpl(JSObject* aCallback, JSObject* aCallbackGlobal, JSObject* aAsyncStack, nsIGlobalObject* aIncumbentGlobal)
2943
    : CallbackInterface(aCallback, aCallbackGlobal, aAsyncStack, aIncumbentGlobal)
2944
0
  {
2945
0
  }
2946
2947
  inline bool
2948
  operator==(const TestNavigatorJSImpl& aOther) const
2949
0
  {
2950
0
    return CallbackInterface::operator==(aOther);
2951
0
  }
2952
};
2953
2954
2955
class TestNavigator final : public nsSupportsWeakReference,
2956
                            public nsWrapperCache
2957
{
2958
public:
2959
  NS_DECL_CYCLE_COLLECTING_ISUPPORTS
2960
  NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(TestNavigator)
2961
2962
private:
2963
  RefPtr<TestNavigatorJSImpl> mImpl;
2964
  nsCOMPtr<nsIGlobalObject> mParent;
2965
2966
public:
2967
  TestNavigator(JS::Handle<JSObject*> aJSImplObject, JS::Handle<JSObject*> aJSImplGlobal, nsIGlobalObject* aParent);
2968
2969
private:
2970
  ~TestNavigator();
2971
2972
public:
2973
  nsISupports* GetParentObject() const;
2974
2975
  virtual JSObject* WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto) override;
2976
2977
  static bool
2978
  _Create(JSContext* cx, unsigned argc, JS::Value* vp);
2979
};
2980
2981
2982
class TestNavigatorWithConstructorJSImpl : public CallbackInterface
2983
{
2984
public:
2985
  explicit inline TestNavigatorWithConstructorJSImpl(JSContext* aCx, JS::Handle<JSObject*> aCallback, JS::Handle<JSObject*> aCallbackGlobal, nsIGlobalObject* aIncumbentGlobal)
2986
    : CallbackInterface(aCx, aCallback, aCallbackGlobal, aIncumbentGlobal)
2987
0
  {
2988
0
  }
2989
2990
  explicit inline TestNavigatorWithConstructorJSImpl(JSObject* aCallback, JSObject* aCallbackGlobal, const FastCallbackConstructor& )
2991
    : CallbackInterface(aCallback, aCallbackGlobal, FastCallbackConstructor())
2992
0
  {
2993
0
  }
2994
2995
  explicit inline TestNavigatorWithConstructorJSImpl(JSObject* aCallback, JSObject* aCallbackGlobal, JSObject* aAsyncStack, nsIGlobalObject* aIncumbentGlobal)
2996
    : CallbackInterface(aCallback, aCallbackGlobal, aAsyncStack, aIncumbentGlobal)
2997
0
  {
2998
0
  }
2999
3000
  void __Init(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
3001
3002
  inline bool
3003
  operator==(const TestNavigatorWithConstructorJSImpl& aOther) const
3004
0
  {
3005
0
    return CallbackInterface::operator==(aOther);
3006
0
  }
3007
3008
private:
3009
  static bool
3010
  InitIds(JSContext* cx, TestNavigatorWithConstructorAtoms* atomsCache);
3011
};
3012
3013
3014
class TestNavigatorWithConstructor final : public nsSupportsWeakReference,
3015
                                           public nsWrapperCache
3016
{
3017
public:
3018
  NS_DECL_CYCLE_COLLECTING_ISUPPORTS
3019
  NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(TestNavigatorWithConstructor)
3020
3021
private:
3022
  RefPtr<TestNavigatorWithConstructorJSImpl> mImpl;
3023
  nsCOMPtr<nsIGlobalObject> mParent;
3024
3025
public:
3026
  TestNavigatorWithConstructor(JS::Handle<JSObject*> aJSImplObject, JS::Handle<JSObject*> aJSImplGlobal, nsIGlobalObject* aParent);
3027
3028
private:
3029
  ~TestNavigatorWithConstructor();
3030
3031
public:
3032
  nsISupports* GetParentObject() const;
3033
3034
  virtual JSObject* WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto) override;
3035
3036
  static already_AddRefed<TestNavigatorWithConstructor> Constructor(const GlobalObject& global, JSContext* cx, ErrorResult& aRv, JS::Handle<JSObject*> aGivenProto = nullptr);
3037
3038
  static bool
3039
  _Create(JSContext* cx, unsigned argc, JS::Value* vp);
3040
};
3041
3042
3043
} // namespace dom
3044
} // namespace mozilla
3045
3046
#endif // mozilla_dom_TestJSImplGenBinding_h