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

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

module mojo.test;

import "mojo/public/interfaces/bindings/tests/ping_service.mojom";

interface FooInterface {};

struct StructContainsAssociated {
  pending_associated_remote<FooInterface>? foo_remote;
  pending_associated_receiver<FooInterface> foo_receiver;
  array<pending_associated_remote<FooInterface>> foo_remotes;
  array<pending_associated_receiver<FooInterface>> foo_receivers;
};

union UnionContainsAssociated {
  pending_associated_remote<FooInterface>? foo_remote;
  pending_associated_receiver<FooInterface> foo_receiver;
  array<pending_associated_remote<FooInterface>> foo_remotes;
  array<pending_associated_receiver<FooInterface>> foo_receivers;
};

interface InterfacePassesAssociated {
  PassFoo(pending_associated_remote<FooInterface> foo_remote,
          pending_associated_receiver<FooInterface> foo_receiver) =>
         (pending_associated_remote<FooInterface> foo_remote,
          pending_associated_receiver<FooInterface> foo_receiver);

  PassStruct(StructContainsAssociated foo_struct) =>
            (StructContainsAssociated foo_struct);

  PassUnion(UnionContainsAssociated foo_union) =>
           (UnionContainsAssociated foo_union);
};

interface IntegerSender {
  Echo(int32 value) => (int32 value);
  Send(int32 value);
};

interface StringSender {
  Echo(string value) => (string value);
  Send(string value);
};

interface IntegerSenderConnection {
  GetSender(pending_associated_receiver<IntegerSender> receiver);
  AsyncGetSender() => (pending_associated_remote<IntegerSender> sender);
};

interface IntegerSenderConnectionAtBothEnds {
  GetSender(pending_associated_receiver<IntegerSender> receiver);
  SetSender(pending_associated_remote<IntegerSender> sender) => (int32 value);
};

interface SenderConnection {
  GetIntegerSender(pending_associated_receiver<IntegerSender> receiver);
  GetStringSender(pending_associated_receiver<StringSender> receiver);
};

interface AssociatedPingProvider {
  GetPing(pending_associated_receiver<PingService> receiver);
};

interface AssociatedPingProviderProvider {
  GetPingProvider(pending_associated_receiver<AssociatedPingProvider> receiver);
};