/* -*- 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(); callback PromiseReturner2 = Promise(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 passThroughPromise(Promise arg); // Returns whatever Promise the given PromiseReturner returned. [Throws] static Promise 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 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 sequenceOfArrayBufferView; [Cached, Pure, GetterThrows] attribute sequence<[AllowShared] ArrayBufferView> sequenceOfAllowSharedArrayBufferView; [GetterThrows] attribute ArrayBuffer arrayBuffer; [GetterThrows] attribute [AllowShared] ArrayBuffer allowSharedArrayBuffer; [Cached, Pure, GetterThrows] attribute sequence 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; };