1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/js/xpconnect/tests/idl/xpctest_params.idl Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,84 @@ 1.4 +/* This Source Code Form is subject to the terms of the Mozilla Public 1.5 + * License, v. 2.0. If a copy of the MPL was not distributed with this 1.6 + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 1.7 + 1.8 +/** 1.9 + * Test pararameter passing and argument conversion. 1.10 + * 1.11 + * Each test method returns the value in 'b', and copies 'a' into 'b'. This lets 1.12 + * us test return values, in params, and inout params (out params should be 1.13 + * covered by the intersection of return values and inout). 1.14 + */ 1.15 + 1.16 +#include "nsISupports.idl" 1.17 + 1.18 +interface nsIXPCTestInterfaceA; 1.19 +interface nsIXPCTestInterfaceB; 1.20 + 1.21 +[scriptable, uuid(fe2b7433-ac3b-49ef-9344-b67228bfdd46)] 1.22 +interface nsIXPCTestParams : nsISupports { 1.23 + 1.24 + // These types correspond to the ones in typelib.py 1.25 + boolean testBoolean(in boolean a, inout boolean b); 1.26 + octet testOctet(in octet a, inout octet b); 1.27 + short testShort(in short a, inout short b); 1.28 + long testLong(in long a, inout long b); 1.29 + long long testLongLong(in long long a, inout long long b); 1.30 + unsigned short testUnsignedShort(in unsigned short a, inout unsigned short b); 1.31 + unsigned long testUnsignedLong(in unsigned long a, inout unsigned long b); 1.32 + unsigned long long testUnsignedLongLong(in unsigned long long a, inout unsigned long long b); 1.33 + float testFloat(in float a, inout float b); 1.34 + double testDouble(in double a, inout float b); 1.35 + char testChar(in char a, inout char b); 1.36 + string testString(in string a, inout string b); 1.37 + wchar testWchar(in wchar a, inout wchar b); 1.38 + wstring testWstring(in wstring a, inout wstring b); 1.39 + DOMString testDOMString(in DOMString a, inout DOMString b); 1.40 + AString testAString(in AString a, inout AString b); 1.41 + AUTF8String testAUTF8String(in AUTF8String a, inout AUTF8String b); 1.42 + ACString testACString(in ACString a, inout ACString b); 1.43 + jsval testJsval(in jsval a, inout jsval b); 1.44 + 1.45 + // 1.46 + // Dependent parameters use the same types as above, but are handled much differently. 1.47 + // 1.48 + 1.49 + // Test arrays. 1.50 + void testShortArray(in unsigned long aLength, [array, size_is(aLength)] in short a, 1.51 + inout unsigned long bLength, [array, size_is(bLength)] inout short b, 1.52 + out unsigned long rvLength, [retval, array, size_is(rvLength)] out short rv); 1.53 + void testDoubleArray(in unsigned long aLength, [array, size_is(aLength)] in double a, 1.54 + inout unsigned long bLength, [array, size_is(bLength)] inout double b, 1.55 + out unsigned long rvLength, [retval, array, size_is(rvLength)] out double rv); 1.56 + void testStringArray(in unsigned long aLength, [array, size_is(aLength)] in string a, 1.57 + inout unsigned long bLength, [array, size_is(bLength)] inout string b, 1.58 + out unsigned long rvLength, [retval, array, size_is(rvLength)] out string rv); 1.59 + void testWstringArray(in unsigned long aLength, [array, size_is(aLength)] in wstring a, 1.60 + inout unsigned long bLength, [array, size_is(bLength)] inout wstring b, 1.61 + out unsigned long rvLength, [retval, array, size_is(rvLength)] out wstring rv); 1.62 + void testInterfaceArray(in unsigned long aLength, [array, size_is(aLength)] in nsIXPCTestInterfaceA a, 1.63 + inout unsigned long bLength, [array, size_is(bLength)] inout nsIXPCTestInterfaceA b, 1.64 + out unsigned long rvLength, [retval, array, size_is(rvLength)] out nsIXPCTestInterfaceA rv); 1.65 + 1.66 + // Test sized strings. 1.67 + void testSizedString(in unsigned long aLength, [size_is(aLength)] in string a, 1.68 + inout unsigned long bLength, [size_is(bLength)] inout string b, 1.69 + out unsigned long rvLength, [retval, size_is(rvLength)] out string rv); 1.70 + void testSizedWstring(in unsigned long aLength, [size_is(aLength)] in wstring a, 1.71 + inout unsigned long bLength, [size_is(bLength)] inout wstring b, 1.72 + out unsigned long rvLength, [retval, size_is(rvLength)] out wstring rv); 1.73 + 1.74 + // Test iid_is. 1.75 + void testInterfaceIs(in nsIIDPtr aIID, [iid_is(aIID)] in nsQIResult a, 1.76 + inout nsIIDPtr bIID, [iid_is(bIID)] inout nsQIResult b, 1.77 + out nsIIDPtr rvIID, [retval, iid_is(rvIID)] out nsQIResult rv); 1.78 + 1.79 + // Test arrays of iid_is. According to khuey we don't use it for anything 1.80 + // in mozilla-central, but calendar stuff depends on it. 1.81 + void testInterfaceIsArray(in unsigned long aLength, in nsIIDPtr aIID, 1.82 + [array, size_is(aLength), iid_is(aIID)] in nsQIResult a, 1.83 + inout unsigned long bLength, inout nsIIDPtr bIID, 1.84 + [array, size_is(bLength), iid_is(bIID)] inout nsQIResult b, 1.85 + out unsigned long rvLength, out nsIIDPtr rvIID, 1.86 + [retval, array, size_is(rvLength), iid_is(rvIID)] out nsQIResult rv); 1.87 +};