chromium/services/service_manager/tests/connect/connect.test-mojom

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

module service_manager.test.mojom;

import "mojo/public/mojom/base/token.mojom";
import "services/service_manager/public/mojom/connector.mojom";
import "services/service_manager/public/mojom/service_filter.mojom";

interface ConnectTestService {
  GetTitle() => (string title);
  GetInstanceId() => (mojo_base.mojom.Token instance_id);
};

interface ClassInterface {
  Ping() => (string response);
};

// Interface implemented by a standalone (non-package) app,
// mojo:connect_test_app.
interface StandaloneApp {
  // Attempts to connect to an application whose name is explicitly allowed by
  // the standalone app's CapabilitySpec, but whose enclosing package is not.
  // The connection should succeed anyway.
  ConnectToAllowedAppInBlockedPackage() => (string title);

  // Connects to mojo:connect_test_class_app & requests ClassInterface from it.
  // This should be permitted because mojo:connect_test_app requests class
  // "class" from mojo:connect_test_class_app, which mojo:connect_test_class_app
  // defines as including ClassInterface.
  // The response contains the response from ClassInterface::Ping() and
  // ConnectTestService::GetTitle().
  ConnectToClassInterface() => (string class_interface_response, string title);
};

interface IdentityTest {
  // Attempts to connect to mojo:connect_test_class_app as |target|.
  // The callback takes the connection response result, and the identity
  // mojo:connect_test_class_app was run as, which should match |filter| or be
  // null on error.
  ConnectToClassAppWithFilter(service_manager.mojom.ServiceFilter filter) =>
      (int32 connection_result, service_manager.mojom.Identity? identity);
};

struct ConnectionState {
  string connection_remote_name;
  mojo_base.mojom.Token? connection_remote_instance_group;
  string initialize_local_name;
  mojo_base.mojom.Token? initialize_local_instance_group;
};

interface ExposedInterface {
  ConnectionAccepted(ConnectionState state);
};

interface BlockedInterface {
  GetTitleBlocked() => (string blocked_title);
};

interface AlwaysAllowedInterface {
  GetTitleAlwaysAllowed() => (string title);
};