Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(414)

Unified Diff: third_party/mojo/src/mojo/public/dart/src/application.dart

Issue 917433003: Update mojo sdk to rev 1027d24a1f68c6d10b7539b32114f1272b2cc9f1 (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Add //build/module_args/mojo.gni. Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/mojo/src/mojo/public/dart/src/application.dart
diff --git a/third_party/mojo/src/mojo/public/dart/src/application.dart b/third_party/mojo/src/mojo/public/dart/src/application.dart
index 2819625a30c74782a1ae52e3344e67c08d60674a..e5b9d4b73f3b9e13654aa3f5d5175ff3c66c73c1 100644
--- a/third_party/mojo/src/mojo/public/dart/src/application.dart
+++ b/third_party/mojo/src/mojo/public/dart/src/application.dart
@@ -36,6 +36,24 @@ class _ApplicationImpl extends application_mojom.Application {
void close({bool nodefer: false}) => shell.close();
}
+// ApplicationConnection represents a single outgoing connection to another app.
+class ApplicationConnection {
+ // ServiceProvider used to obtain services from the remote application.
+ service_provider.ServiceProviderProxy serviceProvider;
+
+ ApplicationConnection(this.serviceProvider);
+
+ // Obtains a service from the remote application.
+ void connectToService(bindings.Proxy proxy) {
+ assert(!proxy.isBound);
+ var applicationPipe = new core.MojoMessagePipe();
+ var proxyEndpoint = applicationPipe.endpoints[0];
+ var applicationEndpoint = applicationPipe.endpoints[1];
+ proxy.bind(proxyEndpoint);
+ serviceProvider.connectToService(proxy.name, applicationEndpoint);
+ }
+}
+
// TODO(zra): Better documentation and examples.
// To implement, do the following:
// - Optionally override acceptConnection() if services are to be provided.
@@ -53,27 +71,37 @@ class _ApplicationImpl extends application_mojom.Application {
// Shell.
abstract class Application {
_ApplicationImpl _applicationImpl;
- List<service_provider.ServiceProviderProxy> _proxies;
+ List<ApplicationConnection> _applicationConnections;
List<ServiceProvider> _serviceProviders;
Application(core.MojoMessagePipeEndpoint endpoint) {
- _proxies = [];
+ _applicationConnections = [];
_serviceProviders = [];
_applicationImpl = new _ApplicationImpl(this, endpoint);
}
Application.fromHandle(core.MojoHandle appHandle) {
- _proxies = [];
+ _applicationConnections = [];
_serviceProviders = [];
_applicationImpl = new _ApplicationImpl.fromHandle(this, appHandle);
}
void initialize(List<String> args) {}
+ // Establishes a connection to the app at |url|.
+ ApplicationConnection connectToApplication(String url) {
+ var serviceProviderProxy =
+ new service_provider.ServiceProviderProxy.unbound();
+ // TODO: Need to expose ServiceProvider for local services.
+ _applicationImpl.shell.connectToApplication(
+ url, serviceProviderProxy, null);
+ var applicationConnection = new ApplicationConnection(serviceProviderProxy);
+ _applicationConnections.add(applicationConnection);
+ return applicationConnection;
+ }
+
void connectToService(String url, bindings.Proxy proxy) {
- assert(!proxy.isBound);
- var endpoint = _connectToServiceHelper(url, proxy.name);
- proxy.bind(endpoint);
+ connectToApplication(url).connectToService(proxy);
}
void requestQuit() {}
@@ -87,8 +115,8 @@ abstract class Application {
void close() {
assert(_applicationImpl != null);
- _proxies.forEach((c) => c.close());
- _proxies.clear();
+ _applicationConnections.forEach((c) => c.serviceProvider.close());
+ _applicationConnections.clear();
_serviceProviders.forEach((sp) => sp.close());
_serviceProviders.clear();
_applicationImpl.close();
@@ -104,18 +132,4 @@ abstract class Application {
}
void acceptConnection(String requestorUrl, ServiceProvider serviceProvider) {}
-
- core.MojoMessagePipeEndpoint _connectToServiceHelper(
- String url, String service) {
- var applicationPipe = new core.MojoMessagePipe();
- var proxyEndpoint = applicationPipe.endpoints[0];
- var applicationEndpoint = applicationPipe.endpoints[1];
- var serviceProviderProxy =
- new service_provider.ServiceProviderProxy.unbound();
- _applicationImpl.shell.connectToApplication(
- url, serviceProviderProxy, null);
- serviceProviderProxy.connectToService(service, applicationEndpoint);
- _proxies.add(serviceProviderProxy);
- return proxyEndpoint;
- }
}

Powered by Google App Engine
This is Rietveld 408576698