1// Copyright 2014 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5module mojo.test;
6
7import "mojo/public/interfaces/bindings/tests/sample_import.mojom";
8
9enum AnEnum {
10  FIRST, SECOND
11};
12
13[Extensible]
14enum AnExtensibleEnum {
15  FIRST, SECOND, THIRD
16};
17
18union PodUnion {
19  int8   f_int8;
20  int8   f_int8_other;
21  uint8  f_uint8;
22  int16  f_int16;
23  uint16 f_uint16;
24  int32  f_int32;
25  uint32 f_uint32;
26  int64  f_int64;
27  uint64 f_uint64;
28  float  f_float;
29  double f_double;
30  bool   f_bool;
31  AnEnum f_enum;
32  AnExtensibleEnum f_extensible_enum;
33};
34
35union ObjectUnion {
36  int8   f_int8;
37  string f_string;
38  DummyStruct f_dummy;
39  DummyStruct? f_nullable;
40  array<int8> f_array_int8;
41  map<string, int8> f_map_int8;
42  PodUnion f_pod_union;
43  // Test that Clone() is defined after SmallStruct is declared.
44  array<SmallStruct> f_small_structs;
45};
46
47union HandleUnion {
48  handle f_handle;
49  handle<message_pipe> f_message_pipe;
50  handle<data_pipe_consumer> f_data_pipe_consumer;
51  handle<data_pipe_producer> f_data_pipe_producer;
52  handle<shared_buffer> f_shared_buffer;
53  SmallCache f_small_cache;
54  SmallCache& f_small_cache_request;
55};
56
57struct WrapperStruct {
58  ObjectUnion? object_union;
59  PodUnion? pod_union;
60  HandleUnion? handle_union;
61};
62
63struct DummyStruct {
64  int8 f_int8;
65};
66
67struct SmallStruct {
68  DummyStruct? dummy_struct;
69  PodUnion? pod_union;
70  array<PodUnion>? pod_union_array;
71  array<PodUnion?>? nullable_pod_union_array;
72  array<DummyStruct>? s_array;
73  map<string, PodUnion>? pod_union_map;
74  map<string, PodUnion?>? nullable_pod_union_map;
75};
76
77struct SmallStructNonNullableUnion {
78  PodUnion pod_union;
79};
80
81struct SmallObjStruct {
82  ObjectUnion obj_union;
83  int8 f_int8;
84};
85
86interface SmallCache {
87  SetIntValue(int64 int_value);
88  GetIntValue() => (int64 int_value);
89};
90
91interface UnionInterface {
92  Echo(PodUnion in_val) => (PodUnion out_val);
93};
94
95struct TryNonNullStruct {
96  DummyStruct? nullable;
97  DummyStruct non_nullable;
98};
99
100union OldUnion {
101  int8 f_int8;
102};
103
104union NewUnion {
105  int8 f_int8;
106  int16 f_int16;
107};
108
109struct ImportedUnionStruct {
110  imported.PointOrShape point_or_shape;
111};
112
113union ImportedUnionUnion {
114  imported.PointOrShape point_or_shape;
115};
116