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

module lite_js_test.mojom;

struct TestStruct {
  int32 x;
};

union TestUnion {
  int32 x;
  TestStruct s;
};

// An interface whose definition covers various types of message signatures in
// order to exercise the lite JS mojom bindings.
interface TestMessageTarget {
  // Zero arguments, no reply.
  Poke();

  // Zero-argument request, zero-argument reply.
  Ping() => ();

  // Request and reply both with arguments.
  Repeat(string? message, array<int32>? numbers)
      => (string? message, array<int32>? numbers);

  Flatten(array<TestStruct> values) => (array<int32> values);
  FlattenUnions(array<TestUnion> unions) => (array<int32> x, array<int32> s);

  RequestSubinterface(Subinterface& request, SubinterfaceClient client);
};

interface Subinterface {
  Push(int32 value);
  Flush();
};

interface SubinterfaceClient {
  DidFlush(array<int32> values);
};

