/* -*- 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/. */ dictionary TestInterfaceJSUnionableDictionary { object objectMember; any anyMember; }; [JSImplementation="@mozilla.org/dom/test-interface-js;1", Pref="dom.expose_test_interfaces", Constructor(optional any anyArg, optional object objectArg, optional TestInterfaceJSDictionary dictionaryArg)] interface TestInterfaceJS : EventTarget { readonly attribute any anyArg; readonly attribute object objectArg; [Cached, Pure] readonly attribute TestInterfaceJSDictionary dictionaryArg; attribute any anyAttr; attribute object objectAttr; [Cached, Pure] attribute TestInterfaceJSDictionary dictionaryAttr; any pingPongAny(any arg); object pingPongObject(object obj); any pingPongObjectOrString((object or DOMString) objOrString); TestInterfaceJSDictionary pingPongDictionary(optional TestInterfaceJSDictionary dict); long pingPongDictionaryOrLong(optional (TestInterfaceJSUnionableDictionary or long) dictOrLong); DOMString pingPongMap(record map); long objectSequenceLength(sequence seq); long anySequenceLength(sequence seq); // For testing bug 968335. DOMString getCallerPrincipal(); DOMString convertSVS(USVString svs); (TestInterfaceJS or long) pingPongUnion((TestInterfaceJS or long) something); (DOMString or TestInterfaceJS?) pingPongUnionContainingNull((TestInterfaceJS? or DOMString) something); (TestInterfaceJS or long)? pingPongNullableUnion((TestInterfaceJS or long)? something); (Location or TestInterfaceJS) returnBadUnion(); [Cached, Pure] readonly attribute short cachedAttr; void setCachedAttr(short n); void clearCachedAttrCache(); // Test for sequence overloading and union behavior void testSequenceOverload(sequence arg); void testSequenceOverload(DOMString arg); void testSequenceUnion((sequence or DOMString) arg); // Tests for exception-throwing behavior [Throws] void testThrowError(); [Throws] void testThrowDOMException(); [Throws] void testThrowTypeError(); [Throws] void testThrowCallbackError(Function callback); [Throws] void testThrowXraySelfHosted(); [Throws] void testThrowSelfHosted(); // Tests for promise-rejection behavior Promise testPromiseWithThrowingChromePromiseInit(); Promise testPromiseWithThrowingContentPromiseInit(Function func); Promise testPromiseWithDOMExceptionThrowingPromiseInit(); Promise testPromiseWithThrowingChromeThenFunction(); Promise testPromiseWithThrowingContentThenFunction(AnyCallback func); Promise testPromiseWithDOMExceptionThrowingThenFunction(); Promise testPromiseWithThrowingChromeThenable(); Promise testPromiseWithThrowingContentThenable(object thenable); Promise testPromiseWithDOMExceptionThrowingThenable(); // Event handler tests attribute EventHandler onsomething; };