| // Copyright 2022 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.test.input; |
| |
| /// Indicates the units used to specify spatial event parameters (unless otherwise |
| /// noted). |
| @available(added=11) |
| type CoordinateUnit = flexible enum { |
| /// The physical display is mapped to a coordinate space spanning [-1000, 1000] |
| /// on both the x and y axes, where positive x extends rightward and positive y |
| /// extends downward. |
| /// |
| /// Example: (500, -500) in the default coordinate space maps to the center of |
| /// the top-right quadrant of the physical display. |
| DEFAULT = 0; |
| |
| /// The physical display is mapped to a coordinate space spanning (0, 0) - |
| /// (dispaly width, display height), where positive x extends rightward and |
| /// positive y extends downward. |
| /// |
| /// Test writers should use `fuchsia.ui.display.singleton.Info` to retrieve |
| /// the physical dimensions of the display. |
| /// |
| /// Note that this space matches both the size AND orientation of the physical |
| /// display, so it will NOT mirror any rotations applied to the scene graph. |
| /// |
| /// In general, test writers should NOT assume that a particular view's logical |
| /// coordinate space matches the physical coordinate space. |
| PHYSICAL_PIXELS = 1; |
| }; |
| |
| /// *** This protocol must not be used in production. *** |
| /// |
| /// Enables clients to register fake input devices, which can be used to |
| /// inject input events directly into Input Pipeline. |
| @discoverable |
| protocol Registry { |
| |
| /// Enables the client to inject touch events using the corresponding |
| /// client end to `device`. |
| /// |
| /// Clients are allowed at most one in-flight call at a time. Subsequent |
| /// calls must wait until the acknowledgment returns. Non-compliance |
| /// results in channel closure. |
| /// |
| /// The `fuchsia.ui.test.input.TouchScreen` channel will remain open even |
| /// if the `Registry` connection closes. |
| RegisterTouchScreen(resource table { |
| 1: device server_end:TouchScreen; |
| |
| /// Indicates the coordinate space in which to describe touch events. |
| @available(added=11) |
| 2: coordinate_unit CoordinateUnit; |
| }) -> (); |
| |
| /// Enables the client to inject media buttons events using the |
| /// corresponding client end to `device`. |
| /// |
| /// Clients are allowed at most one in-flight call at a time. Subsequent |
| /// calls must wait until the acknowledgment returns. Non-compliance |
| /// results in channel closure. |
| /// |
| /// The `fuchsia.ui.test.input.MediaButtonsDevice` channel will remain open |
| /// even if the `Registry` connection closes. |
| RegisterMediaButtonsDevice(resource table { |
| 1: device server_end:MediaButtonsDevice; |
| }) -> (); |
| |
| /// Enables the client to inject keyboard events using the corresponding |
| /// client end to `device`. |
| /// |
| /// Clients are allowed at most one in-flight call at a time. Subsequent |
| /// calls must wait until the acknowledgment returns. Non-compliance |
| /// results in channel closure. |
| /// |
| /// The `fuchsia.ui.test.input.Keyboard` channel will remain open even |
| /// if the `Registry` connection closes. |
| RegisterKeyboard(resource table { |
| 1: device server_end:Keyboard; |
| }) -> (); |
| |
| /// Enables the client to inject mouse events using the corresponding |
| /// client end to `device`. |
| /// |
| /// Clients are allowed at most one in-flight call at a time. Subsequent |
| /// calls must wait until the acknowledgment returns. Non-compliance |
| /// results in channel closure. |
| /// |
| /// The `fuchsia.ui.test.input.Mouse` channel will remain open even |
| /// if the `Registry` connection closes. |
| RegisterMouse(resource table { |
| 1: device server_end:Mouse; |
| }) -> (); |
| }; |