Commit f2d78aed authored by Adam Barth's avatar Adam Barth

Merge pull request #2784 from abarth/view_services

Look for the keyboard in the view services
parents 5fc9a9cf addc87dc
138fae117a19b6c7a9ae1a098daf35275a3002e7 5114eade633fa9d08355d3e7a67b4c9f983d4357
...@@ -30,7 +30,7 @@ class MojoShell { ...@@ -30,7 +30,7 @@ class MojoShell {
static MojoShell _instance; static MojoShell _instance;
static mojom.ShellProxy _initShellProxy() { static mojom.ShellProxy _initShellProxy() {
core.MojoHandle shellHandle = new core.MojoHandle(ui.takeShellProxyHandle()); core.MojoHandle shellHandle = new core.MojoHandle(ui.MojoServices.takeShell());
if (!shellHandle.isValid) if (!shellHandle.isValid)
return null; return null;
return new mojom.ShellProxy.fromHandle(shellHandle); return new mojom.ShellProxy.fromHandle(shellHandle);
...@@ -38,13 +38,13 @@ class MojoShell { ...@@ -38,13 +38,13 @@ class MojoShell {
final mojom.Shell _shell = _initShellProxy()?.ptr; final mojom.Shell _shell = _initShellProxy()?.ptr;
static ApplicationConnection _initEmbedderConnection() { static ApplicationConnection _initEmbedderConnection() {
core.MojoHandle servicesHandle = new core.MojoHandle(ui.takeServicesProvidedByEmbedder()); core.MojoHandle incomingServicesHandle = new core.MojoHandle(ui.MojoServices.takeIncomingServices());
core.MojoHandle exposedServicesHandle = new core.MojoHandle(ui.takeServicesProvidedToEmbedder()); core.MojoHandle outgoingServicesHandle = new core.MojoHandle(ui.MojoServices.takeOutgoingServices());
if (!servicesHandle.isValid || !exposedServicesHandle.isValid) if (!incomingServicesHandle.isValid || !outgoingServicesHandle.isValid)
return null; return null;
mojom.ServiceProviderProxy services = new mojom.ServiceProviderProxy.fromHandle(servicesHandle); mojom.ServiceProviderProxy incomingServices = new mojom.ServiceProviderProxy.fromHandle(incomingServicesHandle);
mojom.ServiceProviderStub exposedServices = new mojom.ServiceProviderStub.fromHandle(exposedServicesHandle); mojom.ServiceProviderStub outgoingServices = new mojom.ServiceProviderStub.fromHandle(outgoingServicesHandle);
return new ApplicationConnection(exposedServices, services); return new ApplicationConnection(outgoingServices, incomingServices);
} }
final ApplicationConnection _embedderConnection = _initEmbedderConnection(); final ApplicationConnection _embedderConnection = _initEmbedderConnection();
...@@ -92,6 +92,24 @@ class MojoShell { ...@@ -92,6 +92,24 @@ class MojoShell {
services.close(); services.close();
} }
static mojom.ServiceProviderProxy _takeViewServices() {
core.MojoHandle services = new core.MojoHandle(ui.MojoServices.takeViewServices());
if (!services.isValid)
return null;
return new mojom.ServiceProviderProxy.fromHandle(services);
}
final mojom.ServiceProviderProxy _viewServices = _takeViewServices();
void connectToViewAssociatedService(bindings.ProxyBase proxy) {
if (overrideConnectToService != null && overrideConnectToService(null, proxy))
return;
if (_viewServices == null)
return;
core.MojoMessagePipe pipe = new core.MojoMessagePipe();
proxy.impl.bind(pipe.endpoints[0]);
_viewServices.ptr.connectToService(proxy.serviceName, pipe.endpoints[1]);
}
/// Registers a service to expose to the embedder. /// Registers a service to expose to the embedder.
void provideService(String interfaceName, ServiceFactory factory) { void provideService(String interfaceName, ServiceFactory factory) {
_embedderConnection?.provideService(interfaceName, factory); _embedderConnection?.provideService(interfaceName, factory);
......
...@@ -18,7 +18,7 @@ import 'box.dart'; ...@@ -18,7 +18,7 @@ import 'box.dart';
import 'object.dart'; import 'object.dart';
mojom.ViewProxy _initViewProxy() { mojom.ViewProxy _initViewProxy() {
int viewHandle = ui.takeViewHandle(); int viewHandle = ui.MojoServices.takeView();
if (viewHandle == core.MojoHandle.INVALID) if (viewHandle == core.MojoHandle.INVALID)
return null; return null;
return new mojom.ViewProxy.fromHandle(new core.MojoHandle(viewHandle)); return new mojom.ViewProxy.fromHandle(new core.MojoHandle(viewHandle));
......
...@@ -105,7 +105,7 @@ class MojoAssetBundle extends CachingAssetBundle { ...@@ -105,7 +105,7 @@ class MojoAssetBundle extends CachingAssetBundle {
} }
AssetBundle _initRootBundle() { AssetBundle _initRootBundle() {
int h = ui.takeRootBundleHandle(); int h = ui.MojoServices.takeRootBundle();
if (h == core.MojoHandle.INVALID) if (h == core.MojoHandle.INVALID)
return null; return null;
core.MojoHandle handle = new core.MojoHandle(h); core.MojoHandle handle = new core.MojoHandle(h);
......
...@@ -84,7 +84,7 @@ class KeyboardHandle { ...@@ -84,7 +84,7 @@ class KeyboardHandle {
mojom.KeyboardProxy _initKeyboardProxy() { mojom.KeyboardProxy _initKeyboardProxy() {
mojom.KeyboardProxy proxy = new mojom.KeyboardProxy.unbound(); mojom.KeyboardProxy proxy = new mojom.KeyboardProxy.unbound();
shell.connectToService(null, proxy); shell.connectToViewAssociatedService(proxy);
return proxy; return proxy;
} }
......
...@@ -59,7 +59,7 @@ class _RawKeyboardListenerState extends State<RawKeyboardListener> implements mo ...@@ -59,7 +59,7 @@ class _RawKeyboardListenerState extends State<RawKeyboardListener> implements mo
return; return;
_stub = new mojom.RawKeyboardListenerStub.unbound()..impl = this; _stub = new mojom.RawKeyboardListenerStub.unbound()..impl = this;
mojom.RawKeyboardServiceProxy keyboard = new mojom.RawKeyboardServiceProxy.unbound(); mojom.RawKeyboardServiceProxy keyboard = new mojom.RawKeyboardServiceProxy.unbound();
shell.connectToService(null, keyboard); shell.connectToViewAssociatedService(keyboard);
keyboard.ptr.addListener(_stub); keyboard.ptr.addListener(_stub);
keyboard.close(); keyboard.close();
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment