/* -*- 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", Exposed=Window] interface TestInterfaceJS : EventTarget { [Throws] constructor(optional any anyArg, optional object objectArg, optional TestInterfaceJSDictionary dictionaryArg = {}); readonly attribute any anyArg; readonly attribute object objectArg; TestInterfaceJSDictionary getDictionaryArg(); attribute any anyAttr; attribute object objectAttr; TestInterfaceJSDictionary getDictionaryAttr(); void setDictionaryAttr(optional TestInterfaceJSDictionary dict = {}); 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 pingPongRecord(record rec); 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(); // 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; };