summaryrefslogtreecommitdiffstats
path: root/dom/webidl/TestFunctions.webidl
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--dom/webidl/TestFunctions.webidl154
1 files changed, 154 insertions, 0 deletions
diff --git a/dom/webidl/TestFunctions.webidl b/dom/webidl/TestFunctions.webidl
new file mode 100644
index 0000000000..fcc52016a1
--- /dev/null
+++ b/dom/webidl/TestFunctions.webidl
@@ -0,0 +1,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;
+};