Index: mojo/services/ui/input/interfaces/input_dispatcher.mojom |
diff --git a/mojo/services/ui/input/interfaces/input_dispatcher.mojom b/mojo/services/ui/input/interfaces/input_dispatcher.mojom |
new file mode 100644 |
index 0000000000000000000000000000000000000000..75caef51fbfd8162e403be3f6d5978c9380db9d6 |
--- /dev/null |
+++ b/mojo/services/ui/input/interfaces/input_dispatcher.mojom |
@@ -0,0 +1,40 @@ |
+// Copyright 2015 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. |
+ |
+[DartPackage="mojo_services"] |
+module mojo.ui; |
+ |
+// TODO(jeffbrown): Redesign input event representation later. |
+import "mojo/services/input_events/interfaces/input_events.mojom"; |
+ |
+// The input dispatcher service allows the component which owns and controls |
+// a view tree to dispatch input events to the views that it contains. |
+// |
+// This service can be retrieved from the |ViewTreeHost| service provider. |
+// |
+// TODO(jeffbrown): Elaborate how input devices are registered with the |
+// dispatcher so that applications can query their capabilities and distinguish |
+// input coming from multiple sources concurrently. |
+[ServiceName="mojo::ui::InputDispatcher"] |
+interface InputDispatcher { |
+ // Dispatches an event through the view tree. The dispatcher will deliver |
+ // the event to the appropriate views based on the current state of the |
+ // tree, such as focus and the structure of the scene graph. |
+ // |
+ // The dispatcher expects the stream of events that it receives to be |
+ // internally consistent. For example, each pointer down must be matched |
+ // by a corresponding pointer up. |
+ // |
+ // It is an error to supply an inconsistent stream events to the dispatcher; |
+ // the connection will be closed. |
+ // |
+ // TODO(jeffbrown): Is this the right policy? It would certainly help |
+ // diagnose faults earlier. |
+ // TODO(jeffbrown): Decide whether there should be a way to track the |
+ // progress of input events. For testing purposes it is often desirable |
+ // to block the test until a sequence of events have been delivered and |
+ // handled. However these same mechanisms have proven to be brittle in |
+ // the past so it might be better to solve the problem some other way. |
+ DispatchEvent(mojo.Event event); |
abarth
2016/01/10 01:42:54
I guess it's up to the InputDispatcher to decide w
jeffbrown
2016/01/26 05:59:12
Yup. It owns all of the policy, this is just the
|
+}; |