summaryrefslogtreecommitdiffstats
path: root/dom/webidl/TestFunctions.webidl
blob: fcc52016a1543372352c1fc2ea73690fbf6ba0f4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this file,
 * You can obtain one at http://mozilla.org/MPL/2.0/.
 */

// A dumping ground for random testing functions

callback PromiseReturner = Promise<any>();
callback PromiseReturner2 = Promise<any>(any arg, DOMString arg2);

[Pref="dom.expose_test_interfaces",
 Exposed=Window]
interface WrapperCachedNonISupportsTestInterface {
  [Pref="dom.webidl.test1"] constructor();
};

[Trial="TestTrial", Exposed=*]
interface TestTrialInterface {
  constructor();
};

[Pref="dom.expose_test_interfaces",
 Exposed=Window]
interface TestInterfaceLength {
  [ChromeOnly]
  constructor(boolean arg);
};

// The type of string C++ sees.
enum StringType {
  "literal",      // A string with the LITERAL flag.
  "stringbuffer", // A string with the REFCOUNTED flag.
  "inline",       // A string with the INLINE flag.
  "other",        // Anything else.
};

[Pref="dom.expose_test_interfaces",
 Exposed=Window]
interface TestFunctions {
  constructor();

  [Throws]
  static undefined throwUncatchableException();

  // Simply returns its argument.  Can be used to test Promise
  // argument processing behavior.
  static Promise<any> passThroughPromise(Promise<any> arg);

  // Returns whatever Promise the given PromiseReturner returned.
  [Throws]
  static Promise<any> passThroughCallbackPromise(PromiseReturner callback);

  // Some basic tests for string binding round-tripping behavior.
  undefined setStringData(DOMString arg);

  // Get the string data, using an nsAString argument on the C++ side.
  // This will just use Assign/operator=, whatever that does.
  DOMString getStringDataAsAString();

  // Get the string data, but only "length" chars of it, using an
  // nsAString argument on the C++ side.  This will always copy on the
  // C++ side.
  DOMString getStringDataAsAString(unsigned long length);

  // Get the string data, but only "length" chars of it, using a
  // DOMString argument on the C++ side and trying to hand it
  // stringbuffers.  If length not passed, use our full length.
  DOMString getStringDataAsDOMString(optional unsigned long length);

  // Get a short (short enough to fit in a JS inline string) literal string.
  DOMString getShortLiteralString();

  // Get a medium (long enough to not be a JS inline, but short enough
  // to fit in a FakeString inline buffer) literal string.
  DOMString getMediumLiteralString();

  // Get a long (long enough to not fit in any inline buffers) literal string.
  DOMString getLongLiteralString();

  // Get a stringbuffer string for whatever string is passed in.
  DOMString getStringbufferString(DOMString input);

  // Get the type of string that the C++ sees after going through bindings.
  StringType getStringType(DOMString str);

  // Returns true if both the incoming string and the stored (via setStringData())
  // string have stringbuffers and they're the same stringbuffer.
  boolean stringbufferMatchesStored(DOMString str);

  // Functions that just punch through to mozITestInterfaceJS.idl
  [Throws]
  undefined testThrowNsresult();
  [Throws]
  undefined testThrowNsresultFromNative();

  // Throws an InvalidStateError to auto-create a rejected promise.
  [Throws]
  static Promise<any> throwToRejectPromise();

  // Some attributes for the toJSON to work with.
  readonly attribute long one;
  [Func="mozilla::dom::TestFunctions::ObjectFromAboutBlank"]
  readonly attribute long two;

  // Testing for how default toJSON behaves.
  [Default] object toJSON();

  // This returns a wrappercached non-ISupports object. While this will always
  // return the same object, no optimization attributes like [Pure] should be
  // used here because the object should not be held alive from JS by the
  // bindings. This is needed to test wrapper preservation for weak map keys.
  // See bug 1351501.
  readonly attribute WrapperCachedNonISupportsTestInterface wrapperCachedNonISupportsObject;

  attribute [Clamp] octet? clampedNullableOctet;
  attribute [EnforceRange] octet? enforcedNullableOctet;

  // Testing for [AllowShared]
  [GetterThrows]
  attribute ArrayBufferView arrayBufferView;
  [GetterThrows]
  attribute [AllowShared] ArrayBufferView allowSharedArrayBufferView;
  [Cached, Pure, GetterThrows]
  attribute sequence<ArrayBufferView> sequenceOfArrayBufferView;
  [Cached, Pure, GetterThrows]
  attribute sequence<[AllowShared] ArrayBufferView> sequenceOfAllowSharedArrayBufferView;
  [GetterThrows]
  attribute ArrayBuffer arrayBuffer;
  [GetterThrows]
  attribute [AllowShared] ArrayBuffer allowSharedArrayBuffer;
  [Cached, Pure, GetterThrows]
  attribute sequence<ArrayBuffer> sequenceOfArrayBuffer;
  [Cached, Pure, GetterThrows]
  attribute sequence<[AllowShared] ArrayBuffer> sequenceOfAllowSharedArrayBuffer;
  undefined testNotAllowShared(ArrayBufferView buffer);
  undefined testNotAllowShared(ArrayBuffer buffer);
  undefined testNotAllowShared(DOMString buffer);
  undefined testAllowShared([AllowShared] ArrayBufferView buffer);
  undefined testAllowShared([AllowShared] ArrayBuffer buffer);
  undefined testDictWithAllowShared(optional DictWithAllowSharedBufferSource buffer = {});
  undefined testUnionOfBuffferSource((ArrayBuffer or ArrayBufferView or DOMString) foo);
  undefined testUnionOfAllowSharedBuffferSource(([AllowShared] ArrayBuffer or [AllowShared] ArrayBufferView) foo);

  boolean staticAndNonStaticOverload();
  static boolean staticAndNonStaticOverload(optional unsigned long foo);
};

dictionary DictWithAllowSharedBufferSource {
  ArrayBuffer arrayBuffer;
  ArrayBufferView arrayBufferView;
  [AllowShared] ArrayBuffer allowSharedArrayBuffer;
  [AllowShared] ArrayBufferView allowSharedArrayBufferView;
};