| // Copyright 2015 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| library fuchsia.ui.input; |
| |
| // TODO(jeffbrown): Redesign input event representation later. |
| |
| // 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 |ViewTree| 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. |
| [Discoverable] |
| 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. |
| 1: DispatchEvent(InputEvent event); |
| }; |