chromium/mojo/public/interfaces/bindings/tests/sample_service.mojom

// Copyright 2013 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.sample"]
module sample;

import "mojo/public/interfaces/bindings/tests/sample_import.mojom";
import "mojo/public/interfaces/bindings/tests/sample_import2.mojom";

const uint8 kTwelve = 12;

struct Bar {
  enum Type {
    VERTICAL = 1,
    HORIZONTAL,
    BOTH,
    INVALID
  };
  uint8 alpha@0 = 0xff;
  uint8 beta@1;
  uint8 gamma@2;
  Type type@3 = sample.Bar.Type.VERTICAL;
};

struct Foo {
  const string kFooby = "Fooby";
  string name@8 = kFooby;
  int32 x@0;
  int32 y@1;
  bool a@2 = true;
  bool b@3;
  bool c@4;
  Bar? bar@5;
  array<Bar>? extra_bars@7;
  array<uint8>? data@6;
  handle<message_pipe>? source@9;
  array<handle<data_pipe_consumer>>? input_streams@10;
  array<handle<data_pipe_producer>>? output_streams@11;
  array<array<bool>>? array_of_array_of_bools@12;
  array<array<array<string>>>? multi_array_of_strings@13;
  array<bool>? array_of_bools@14;
};

struct DefaultsTest {
  int8 a0@0 = -12;
  uint8 a1@1 = sample.kTwelve;
  int16 a2@2 = 1234;
  uint16 a3@3 = 34567;
  int32 a4@4 = 123456;
  uint32 a5@5 = 3456789012;
  int64 a6@6 = -111111111111;
  uint64 a7@7 = 9999999999999999999;
  int32 a8@8 = 0x12345;
  int32 a9@9 = -0x12345;
  int32 a10@10 = +1234;
  bool a11@11 = true;
  bool a12@12 = false;
  float a13@13 = 123.25;
  double a14@14 = 1234567890.123;
  double a15@15 = 1E10;
  double a16@16 = -1.2E+20;
  double a17@17 = +1.23E-20;

  // TODO(vtl): Add tests for default vs null when those are implemented (for
  // structs, arrays, and strings).
  array<uint8> a18@18;
  string a19@19;

  Bar.Type a20@20 = BOTH;
  imported.Point a21@21;
  imported.Thing a22@22 = default;

  uint64 a23@23 = 0xFFFFFFFFFFFFFFFF;
  int64 a24@24 = 0x123456789;
  int64 a25@25 = -0x123456789;

  double a26@26 = double.INFINITY;
  double a27@27 = double.NEGATIVE_INFINITY;
  double a28@28 = double.NAN;
  float a29@29 = float.INFINITY;
  float a30@30 = float.NEGATIVE_INFINITY;
  float a31@31 = float.NAN;
};

struct StructWithHoleV1 {
  int32 v1 = 1;
  int64 v2 = 2;
};

struct StructWithHoleV2 {
  int32 v1 = 1;
  int64 v2 = 2;
  int32 v3 = 3;
};

interface DefaultsSender {
  SendBar(Bar bar);
  SendFoo(Foo foo);
  SendDefaultsTest(DefaultsTest defaults);
};

interface Service {
  enum BazOptions {
    REGULAR = 0,
    EXTRA
  };
  const uint8 kFavoriteBaz = 1;
  Frobinate@0(Foo? foo@0, BazOptions baz@1, pending_remote<Port>? port@2)
      => (int32 result@0);
  GetPort@1(pending_receiver<Port> receiver @0);
};

// This interface is referenced above where it is defined. It also refers to
// itself from a method.
interface Port {
  PostMessageToPort@0(string message_text@0, pending_remote<Port> port@1);
};