OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 import "package:mojo/public/dart/application.dart"; | 5 import "package:mojo/public/dart/application.dart"; |
6 import "dart:sky.internals" as internals; | 6 import "dart:sky.internals" as internals; |
7 import "dart:mojo.bindings" as bindings; | 7 import "package:mojo/public/dart/bindings.dart" as bindings; |
8 import "dart:mojo.core" as core; | 8 import "package:mojo/public/dart/core.dart" as core; |
9 import "package:mojo/public/interfaces/application/service_provider.mojom.dart"; | 9 import "package:mojo/public/interfaces/application/service_provider.mojom.dart"; |
10 import "package:mojo/public/interfaces/application/shell.mojom.dart"; | 10 import "package:mojo/public/interfaces/application/shell.mojom.dart"; |
11 import "package:mojo/services/service_registry/public/interfaces/service_registr
y.mojom.dart"; | 11 import "package:mojo/services/service_registry/public/interfaces/service_registr
y.mojom.dart"; |
12 | 12 |
13 final _EmbedderImpl embedder = new _EmbedderImpl(); | 13 final _EmbedderImpl embedder = new _EmbedderImpl(); |
14 | 14 |
15 class _EmbedderImpl { | 15 class _EmbedderImpl { |
16 ApplicationConnection _connection; | 16 ApplicationConnection _connection; |
17 ServiceRegistry _serviceRegistry; | 17 ServiceRegistry _serviceRegistry; |
18 | 18 |
19 final ShellProxy shell = new ShellProxy.fromHandle( | 19 final ShellProxy shell = new ShellProxy.fromHandle( |
20 new core.MojoHandle(internals.takeShellProxyHandle())); | 20 new core.MojoHandle(internals.takeShellProxyHandle())); |
21 | 21 |
22 ApplicationConnection get connection { | 22 ApplicationConnection get connection { |
23 if (_connection == null) { | 23 if (_connection == null) { |
24 var stubHandle = | 24 var stubHandle = |
25 new core.MojoHandle(internals.takeServicesProvidedToEmbedder()); | 25 new core.MojoHandle(internals.takeServicesProvidedToEmbedder()); |
26 var proxyHandle = | 26 var proxyHandle = |
27 new core.MojoHandle(internals.takeServicesProvidedByEmbedder()); | 27 new core.MojoHandle(internals.takeServicesProvidedByEmbedder()); |
28 _connection = new ApplicationConection( | 28 _connection = new ApplicationConection(stubHandle.isValid |
29 stubHandle.isValid ? new ServiceProviderStub.fromHandle(stubHandle) :
null, | 29 ? new ServiceProviderStub.fromHandle(stubHandle) |
30 proxyHandle.isValid ? new ServiceProviderProxy.fromHandle(proxyHandle)
: null); | 30 : null, proxyHandle.isValid |
| 31 ? new ServiceProviderProxy.fromHandle(proxyHandle) |
| 32 : null); |
31 } | 33 } |
32 return _connection; | 34 return _connection; |
33 } | 35 } |
34 | 36 |
35 ApplicationConnection connectToApplication(String url) { | 37 ApplicationConnection connectToApplication(String url) { |
36 var proxy = new ServiceProviderProxy.unbound(); | 38 var proxy = new ServiceProviderProxy.unbound(); |
37 var stub = new ServiceProviderStub.unbound(); | 39 var stub = new ServiceProviderStub.unbound(); |
38 shell.ptr.connectToApplication(url, proxy, stub); | 40 shell.ptr.connectToApplication(url, proxy, stub); |
39 return new ApplicationConnection(stub, proxy); | 41 return new ApplicationConnection(stub, proxy); |
40 } | 42 } |
41 | 43 |
42 void connectToService(String url, bindings.ProxyBase proxy) { | 44 void connectToService(String url, bindings.ProxyBase proxy) { |
43 var appSp = new ServiceProviderProxy.unbound(); | 45 var appSp = new ServiceProviderProxy.unbound(); |
44 shell.ptr.connectToApplication(url, appSp, null); | 46 shell.ptr.connectToApplication(url, appSp, null); |
45 var pipe = new core.MojoMessagePipe(); | 47 var pipe = new core.MojoMessagePipe(); |
46 proxy.impl.bind(pipe.endpoints[0]); | 48 proxy.impl.bind(pipe.endpoints[0]); |
47 appSp.ptr.connectToService(proxy.name, pipe.endpoints[1]); | 49 appSp.ptr.connectToService(proxy.name, pipe.endpoints[1]); |
48 appSp.close(); | 50 appSp.close(); |
49 } | 51 } |
50 | 52 |
51 ServiceRegistryProxy get serviceRegistry { | 53 ServiceRegistryProxy get serviceRegistry { |
52 if (_serviceRegistry == null) { | 54 if (_serviceRegistry == null) { |
53 _serviceRegistry = new ServiceRegistryProxy.fromHandle( | 55 _serviceRegistry = new ServiceRegistryProxy.fromHandle( |
54 new core.MojoHandle(internals.takeServiceRegistry())); | 56 new core.MojoHandle(internals.takeServiceRegistry())); |
55 } | 57 } |
56 return _serviceRegistry; | 58 return _serviceRegistry; |
57 } | 59 } |
58 } | 60 } |
OLD | NEW |