1 // Copyright 2013 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 5 import "sample_import.mojom" 6 import "sample_import2.mojom" 7 8 [JavaPackage="org.chromium.mojo.bindings.test.mojom.sample"] 9 module sample { 10 11 const uint8 kTwelve = 12; 12 const uint64 kTooBigForSignedInt64 = 9999999999999999999; 13 14 const double kDoubleInfinity = double.INFINITY; 15 const double kDoubleNegativeInfinity = double.NEGATIVE_INFINITY; 16 const double kDoubleNaN = double.NAN; 17 18 const float kFloatInfinity = float.INFINITY; 19 const float kFloatNegativeInfinity = float.NEGATIVE_INFINITY; 20 const float kFloatNaN = float.NAN; 21 22 struct Bar { 23 enum Type { 24 VERTICAL = 1, 25 HORIZONTAL, 26 BOTH, 27 INVALID 28 }; 29 uint8 alpha@0 = 0xff; 30 uint8 beta@1; 31 uint8 gamma@2; 32 Type type@3 = sample.Bar.Type.VERTICAL; 33 }; 34 35 [RequiredFields=7] 36 struct Foo { 37 const string kFooby = "Fooby"; 38 string name@8 = kFooby; 39 int32 x@0; 40 int32 y@1; 41 bool a@2 = true; 42 bool b@3; 43 bool c@4; 44 Bar? bar@5; 45 Bar[]? extra_bars@7; 46 uint8[]? data@6; 47 handle<message_pipe>? source@9; 48 handle<data_pipe_consumer>[]? input_streams@10; 49 handle<data_pipe_producer>[]? output_streams@11; 50 bool[][]? array_of_array_of_bools@12; 51 string[][][]? multi_array_of_strings@13; 52 bool[]? array_of_bools@14; 53 }; 54 55 struct DefaultsTest { 56 int8 a0@0 = -12; 57 uint8 a1@1 = sample.kTwelve; 58 int16 a2@2 = 1234; 59 uint16 a3@3 = 34567; 60 int32 a4@4 = 123456; 61 uint32 a5@5 = 3456789012; 62 int64 a6@6 = -111111111111; 63 uint64 a7@7 = 9999999999999999999; 64 int32 a8@8 = 0x12345; 65 int32 a9@9 = -0x12345; 66 int32 a10@10 = +1234; 67 bool a11@11 = true; 68 bool a12@12 = false; 69 float a13@13 = 123.25; 70 double a14@14 = 1234567890.123; 71 double a15@15 = 1E10; 72 double a16@16 = -1.2E+20; 73 double a17@17 = +1.23E-20; 74 75 // TODO(vtl): Add tests for default vs null when those are implemented (for 76 // structs, arrays, and strings). 77 uint8[] a18@18; 78 string a19@19; 79 80 Bar.Type a20@20 = BOTH; 81 imported.Point a21@21; 82 imported.Thing a22@22 = default; 83 84 uint64 a23@23 = 0xFFFFFFFFFFFFFFFF; 85 int64 a24@24 = 0x123456789; 86 int64 a25@25 = -0x123456789; 87 88 double a26@26 = double.INFINITY; 89 double a27@27 = double.NEGATIVE_INFINITY; 90 double a28@28 = double.NAN; 91 float a29@29 = float.INFINITY; 92 float a30@30 = float.NEGATIVE_INFINITY; 93 float a31@31 = float.NAN; 94 }; 95 96 struct StructWithHoleV1 { 97 int32 v1 = 1; 98 int64 v2 = 2; 99 }; 100 101 struct StructWithHoleV2 { 102 int32 v1 = 1; 103 int64 v2 = 2; 104 int32 v3 = 3; 105 }; 106 107 [Client=ServiceClient] 108 interface Service { 109 enum BazOptions { 110 REGULAR = 0, 111 EXTRA 112 }; 113 const uint8 kFavoriteBaz = 1; 114 Frobinate@0(Foo? foo@0, BazOptions baz@1, Port? port@2); 115 GetPort@1(Port& port @0); 116 }; 117 118 interface ServiceClient { 119 DidFrobinate@0(int32 result@0); 120 }; 121 122 // This interface is referenced above where it is defined. It also refers to 123 // itself from a method. 124 interface Port { 125 PostMessage@0(string message_text@0, Port port@1); 126 }; 127 128 } 129