// 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); };