| Index: mojo/shell/public/interfaces/connector.mojom
|
| diff --git a/mojo/shell/public/interfaces/connector.mojom b/mojo/shell/public/interfaces/connector.mojom
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..ede52e30c99baaa22a9e08e2c77127f95302ea77
|
| --- /dev/null
|
| +++ b/mojo/shell/public/interfaces/connector.mojom
|
| @@ -0,0 +1,77 @@
|
| +// Copyright 2014 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 mojo.shell.mojom;
|
| +
|
| +import "mojo/shell/public/interfaces/interface_provider.mojom";
|
| +
|
| +// Encapsulates establishing connections with other Mojo applications.
|
| +interface Connector {
|
| + const uint32 kInvalidApplicationID = 0;
|
| + const uint32 kUserRoot = 0;
|
| + const uint32 kUserInherit = 1;
|
| +
|
| + // Requests a connection with another application. The application originating
|
| + // the request is referred to as the "source" and the one receiving the
|
| + // "target".
|
| + //
|
| + // The connection is embodied by a pair of message pipes binding the
|
| + // InterfaceProvider interface, which allows both the source and target
|
| + // applications to export interfaces to one another. The interfaces bound via
|
| + // these InterfaceProviders are brokered by the shell according to the
|
| + // security policy defined by each application in its manifest .
|
| + //
|
| + // If the target application is not running, the shell will run it, calling
|
| + // its Initialize() method before completing the connection.
|
| + //
|
| + // Parameters:
|
| + //
|
| + // name
|
| + // A mojo: or exe: name identifying the target application.
|
| + //
|
| + // user_id
|
| + // The user id of the target application instance to connect to. If no such
|
| + // instance exists, the shell may start one. This user id will be passed
|
| + // to the new instance via Initialize(). Applications must generally set
|
| + // this to kUserInherit, and the shell will either connect to an existing
|
| + // instance matching the caller's user id, create a new instance matching
|
| + // the caller's user id, or connect to an existing instance running as
|
| + // kUserRoot. By default, applications do not have the ability to pass
|
| + // arbitrary values to this method, and doing so will result in a
|
| + // connection error on the remote service provider. An application with
|
| + // the ability to launch applications with arbitrary user ids (e.g. a login
|
| + // app) may set this value to something meaningful to it.
|
| + //
|
| + // remote_interfaces
|
| + // Allows the source application access to interface implementations
|
| + // exposed by the target application. The interfaces accessible via this
|
| + // InterfaceParameter are filtered by the security policy described by the
|
| + // source and target application manifests.
|
| + //
|
| + // local_interfaces
|
| + // Allows the remote application access to interface implementations
|
| + // exposed by the source application. The interfaces accessible via this
|
| + // InterfaceProvider are filtered by the security policy described by the
|
| + // source and target application manifests.
|
| + //
|
| + // Response parameters:
|
| + //
|
| + // application_id
|
| + // A unique identifier for the instance that was connected to.
|
| + //
|
| + // user_id
|
| + // The user id the shell ran the target application as. Typically a client
|
| + // passes kUserInherit to Connect(), which is an invalid user id, so this
|
| + // value in the response is guaranteed to be a valid user id, either the
|
| + // id connected to, or kUserRoot if no user-specific instance was located.
|
| + //
|
| + Connect(string name,
|
| + uint32 user_id,
|
| + InterfaceProvider&? remote_interfaces,
|
| + InterfaceProvider? local_interfaces) => (uint32 application_id,
|
| + uint32 user_id);
|
| +
|
| + // Clones this Connector so it can be passed to another thread.
|
| + Clone(Connector& request);
|
| +};
|
|
|