// Copyright 2014 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
[JavaPackage="org.chromium.mojo.bindings.test.mojom.mojo"]
module mojo.test;
struct StructA {
uint64 i;
};
struct StructB {
StructA struct_a;
};
struct StructC {
array<uint8> data;
};
struct StructD {
array<handle<message_pipe>> message_pipes;
};
struct StructE {
StructD struct_d;
handle<data_pipe_consumer> data_pipe_consumer;
};
struct StructF {
array<uint8, 3> fixed_size_array;
};
struct StructG {
int32 i;
[MinVersion=1]
StructA? struct_a;
[MinVersion=3]
string? str;
[MinVersion=3]
bool b;
};
interface InterfaceA {
};
enum EnumA {
ENUM_A_0,
ENUM_A_1
};
[Extensible]
enum EnumB {
ENUM_B_0,
ENUM_B_1,
ENUM_B_2
};
// A non-extensible enum with no values is valid, but about as useless as
// you would expect: it will fail validation for all values.
enum EmptyEnum {};
[Extensible]
enum ExtensibleEmptyEnum {};
union UnionA {
StructA struct_a;
bool b;
};
// This interface is used for testing bounds-checking in the mojom
// binding code. If you add a method please update the files
// ./data/validation/boundscheck_*. If you add a response please update
// ./data/validation/resp_boundscheck_*.
interface BoundsCheckTestInterface {
Method0(uint8 param0) => (uint8 param0);
Method1(uint8 param0);
};
interface ConformanceTestInterface {
Method0(float param0);
Method1(StructA param0);
Method2(StructB param0, StructA param1);
Method3(array<bool> param0);
Method4(StructC param0, array<uint8> param1);
Method5(StructE param0, handle<data_pipe_producer> param1);
Method6(array<array<uint8>> param0);
Method7(StructF param0, array<array<uint8, 3>?, 2> param1);
Method8(array<array<string>?> param0);
Method9(array<array<handle?>>? param0);
Method10(map<string, uint8> param0);
Method11(StructG param0);
Method12(float param0) => (float param0);
Method13(pending_remote<InterfaceA>? param0, uint32 param1,
pending_remote<InterfaceA>? param2);
Method14(EnumA param0, EnumB param1);
Method15(array<EnumA>? param0, array<EnumB>? param1);
Method16(map<EnumA, EnumA>? param0);
Method17(array<pending_remote<InterfaceA>> param0);
Method18(UnionA? param0);
Method19(Recursive recursive);
Method20(map<StructB, uint8> param0);
Method21(ExtensibleEmptyEnum param0);
Method22(EmptyEnum param0);
Method23(array<bool?> param0, array<uint32?> param1);
Method24(map<uint32, bool?> param0, map<uint32, uint64?> param1);
};
struct BasicStruct {
int32 a;
};
interface IntegrationTestInterface {
Method0(BasicStruct param0) => (array<uint8> param0);
};
// An enum generates a enum-value validation function, so we want to test it.
// E.g., valid enum values for this enum should be: -3, 0, 1, 10
enum BasicEnum {
A,
B,
C = A,
D = -3,
E = 0xA
};
// The enum validation function should be generated within the scope of this
// struct.
struct StructWithEnum {
enum EnumWithin {
A, B, C, D
};
};
// This is used to test that deeply recursive structures don't blow the stack.
struct Recursive {
Recursive? recursive;
};