1
    2
    3
    4
    5
    6
    7
    8
    9
   10
   11
   12
   13
   14
   15
   16
   17
   18
   19
   20
   21
   22
   23
   24
   25
   26
   27
   28
   29
   30
   31
   32
   33
   34
   35
   36
   37
   38
   39
   40
   41
   42
   43
   44
   45
   46
   47
   48
   49
   50
   51
   52
   53
   54
   55
   56
   57
   58
   59
   60
   61
   62
   63
   64
   65
   66
   67
   68
   69
   70
   71
   72
   73
   74
   75
   76
   77
   78
   79
   80
   81
   82
   83
   84
   85
   86
   87
   88
   89
   90
   91
   92
   93
   94
   95
   96
   97
   98
   99
  100
  101
  102
  103
  104
  105
  106
  107
  108
  109
  110
  111
  112
  113

content / web_test / common / mojo_echo.mojom [blame]

// Copyright 2018 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

module content.mojom;

// Interfaces used to test that encoding/decoding between JS and C++ works
// correctly.

union TestUnion {
  bool bool_value;
  int32 int32_value;
  string string_value;
};

union NestedUnion {
  int8 int8_value;
  TestUnion union_value;
};

// Interface that echos the arguments by extracting them from structs, unions,
// etc. or by adding them to structs, unions, etc.
interface MojoEcho {
  // The following methods help test that JS can correctly encode unions. They
  // CHECK if the union has not the expected type.
  //
  // Runs callback with |test_union.bool_value|.
  EchoBoolFromUnion(TestUnion test_union) => (bool value);
  // Runs callback with |test_union.int32_value|.
  EchoInt32FromUnion(TestUnion test_union) => (int32 value);
  // Runs callback with |test_union.string_value|.
  EchoStringFromUnion(TestUnion test_union) => (string value);

  // The following methods help test that JS can correctly decode unions.
  //
  // Runs callback with |value| as the TestUnion's value.
  EchoBoolAsUnion(bool value) => (TestUnion test_union);
  // Runs callback with |value| as the TestUnion's value.
  EchoInt32AsUnion(int32 value) => (TestUnion test_union);
  // Runs callback with |value| as the TestUnion's value.
  EchoStringAsUnion(string value) => (TestUnion test_union);

  // The following methods help test that JS can correctly encode optional
  // unions. They CHECK if the union has not the expected type.
  //
  // Runs the empty callback.
  EchoNullFromOptionalUnion(TestUnion? test_union) => ();
  // Runs callback with |test_union.bool_value|.
  EchoBoolFromOptionalUnion(TestUnion? test_union) => (bool value);
  // Runs callback with |test_union.int32_value|.
  EchoInt32FromOptionalUnion(TestUnion? test_union) => (int32 value);
  // Runs callback with |test_union.string_value|.
  EchoStringFromOptionalUnion(TestUnion? test_union) => (string value);

  // The following methods help test that JS can correctly decode optional
  // unions.
  //
  // Runs callback with a null TestUnion.
  EchoNullAsOptionalUnion() => (TestUnion? test_union);
  // Runs callback with |value| as the TestUnion's value.
  EchoBoolAsOptionalUnion(bool value) => (TestUnion? test_union);
  // Runs callback with |value| as the TestUnion's value.
  EchoInt32AsOptionalUnion(int32 value) => (TestUnion? test_union);
  // Runs callback with |value| as the TestUnion's value.
  EchoStringAsOptionalUnion(string value) => (TestUnion? test_union);

  // The following methods help test that JS can correctly encode nested unions.
  // They CHECK if the union has not the expected type.
  //
  // Runs callback with |test_union.int8_value|.
  EchoInt8FromNestedUnion(NestedUnion test_union) => (int8 value);
  // Runs callback with |test_union.union_value.bool_value|.
  EchoBoolFromNestedUnion(NestedUnion test_union) => (bool value);
  // Runs callback with |test_union.union_value.string_value|.
  EchoStringFromNestedUnion(NestedUnion test_union) => (string value);

  // The following methods help test that JS can correctly decode nested unions.
  //
  // Runs callback with |value| as the NestedUnion's value.
  EchoInt8AsNestedUnion(int8 value) => (NestedUnion test_union);
  // Runs callback with |value| as the NestedUnion.TestUnion's value.
  EchoBoolAsNestedUnion(bool value) => (NestedUnion test_union);
  // Runs callback with |value| as the NestedUnion.TestUnion's value.
  EchoStringAsNestedUnion(string value) => (NestedUnion test_union);

  // The following methods help test that JS can correctly encode optional
  // nested unions. They CHECK if the union has not the expected type.
  //
  // Runs the empty callback.
  EchoNullFromOptionalNestedUnion(NestedUnion? test_union) => ();
  // Runs callback with |test_union.int8_value|.
  EchoInt8FromOptionalNestedUnion(NestedUnion? test_union) => (int8 value);
  // Runs callback with |test_union.union_value.bool_value|.
  EchoBoolFromOptionalNestedUnion(NestedUnion? test_union) => (bool value);
  // Runs callback with |test_union.union_value.string_value|.
  EchoStringFromOptionalNestedUnion(NestedUnion? test_union) => (string value);

  // The following methods help test that JS can correctly decode optional
  // nested unions.
  //
  // Runs the empty callback.
  EchoNullAsOptionalNestedUnion() => (NestedUnion? test_union);
  // Runs callback with |test_union.int8_value|.
  EchoInt8AsOptionalNestedUnion(int8 value) => (NestedUnion? test_union);
  // Runs callback with |test_union.union_value.bool_value|.
  EchoBoolAsOptionalNestedUnion(bool value) => (NestedUnion? test_union);
  // Runs callback with |test_union.union_value.string_value|.
  EchoStringAsOptionalNestedUnion(string value) => (NestedUnion? test_union);

  // The following methods help test that JS can correctly encode array of
  // bools.
  EchoBoolArray(array<bool> values) => (array<bool> values);
};