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

Side by Side Diff: sky/framework/embedder.dart

Issue 954653002: Make Sky embedder.connection deal with null handles (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: 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 unified diff | Download patch
« no previous file with comments | « mojo/public/dart/src/application_connection.dart ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 "/mojo/public/dart/application.dart"; 5 import "/mojo/public/dart/application.dart";
6 import "dart:mojo_bindings" as bindings; 6 import "dart:mojo_bindings" as bindings;
7 import "dart:mojo_core" as core; 7 import "dart:mojo_core" as core;
8 import "dart:sky.internals" as internals; 8 import "dart:sky.internals" as internals;
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 11
12 final _EmbedderImpl embedder = new _EmbedderImpl(); 12 final _EmbedderImpl embedder = new _EmbedderImpl();
13 13
14 class _EmbedderImpl { 14 class _EmbedderImpl {
15 static final ShellProxy shell = new ShellProxy.fromHandle( 15 ApplicationConnection _connection;
16
17 final ShellProxy shell = new ShellProxy.fromHandle(
16 new core.MojoHandle(internals.takeShellProxyHandle())); 18 new core.MojoHandle(internals.takeShellProxyHandle()));
17 19
18 static final ApplicationConnection connection = new ApplicationConnection( 20 ApplicationConnection get connection {
19 new ServiceProviderStub.fromHandle( 21 if (_connection == null) {
20 new core.MojoHandle(internals.takeServicesProvidedToEmbedder())), 22 var stubHandle = new core.MojoHandle(
21 new ServiceProviderProxy.fromHandle( 23 internals.takeServicesProvidedToEmbedder());
22 new core.MojoHandle(internals.takeServicesProvidedByEmbedder()))); 24 var proxyHandle = new core.MojoHandle(
25 internals.takeServicesProvidedByEmbedder());
26 _connection = new ApplicationConection(
27 stubHandle.isValid ? ServiceProviderStub.fromHandle(stubHandle)
28 : null;
29 proxyHandle.isValid ? ServiceProviderProxy.fromHandle(proxyHandle)
30 : null;
31 );
32 }
33 return _connection;
34 }
23 35
24 ApplicationConnection connectToApplication(String url) { 36 ApplicationConnection connectToApplication(String url) {
25 var proxy = new ServiceProviderProxy.unbound(); 37 var proxy = new ServiceProviderProxy.unbound();
26 var stub = new ServiceProviderStub.unbound(); 38 var stub = new ServiceProviderStub.unbound();
27 shell.connectToApplication(url, proxy, stub); 39 shell.connectToApplication(url, proxy, stub);
28 return new ApplicationConnection(stub, proxy); 40 return new ApplicationConnection(stub, proxy);
29 } 41 }
30 42
31 void connectToService(String url, bindings.Proxy proxy) { 43 void connectToService(String url, bindings.Proxy proxy) {
32 var appSp = new ServiceProviderProxy.unbound(); 44 var appSp = new ServiceProviderProxy.unbound();
33 shell.connectToApplication(url, appSp, null); 45 shell.connectToApplication(url, appSp, null);
34 var pipe = new core.MojoMessagePipe(); 46 var pipe = new core.MojoMessagePipe();
35 proxy.bind(pipe.endpoints[0]); 47 proxy.bind(pipe.endpoints[0]);
36 appSp.connectToService(proxy.name, pipe.endpoints[1]); 48 appSp.connectToService(proxy.name, pipe.endpoints[1]);
37 appSp.close(); 49 appSp.close();
38 } 50 }
39 } 51 }
40 52
OLDNEW
« no previous file with comments | « mojo/public/dart/src/application_connection.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698