Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit de788507 authored by Prabir Pradhan's avatar Prabir Pradhan
Browse files

Move InputFeature flag definitions to AIDL (1/2)

We convert the InputFeatures flags into AIDL enums that will have values
generated in both native and java code so that the value only has to be
defined once.

Bug: 162194035
Test: build, presubmit
Change-Id: I28bd51a4affe705155c08c273a902d86665c63b9
parent 5c85e059
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -66,6 +66,7 @@ cc_library_static {
    host_supported: true,
    srcs: [
        ":guiconstants_aidl",
        ":inputconstants_aidl",
        "android/gui/DisplayInfo.aidl",
        "android/gui/FocusRequest.aidl",
        "android/gui/InputApplicationInfo.aidl",
+19 −7
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@
#pragma once

#include <android/gui/TouchOcclusionMode.h>
#include <android/os/IInputConstants.h>
#include <binder/Parcel.h>
#include <binder/Parcelable.h>
#include <ftl/Flags.h>
@@ -131,14 +132,25 @@ struct WindowInfo : public Parcelable {
        ftl_last = FIRST_SYSTEM_WINDOW + 15
    };

    // This is a conversion of os::IInputConstants::InputFeature to an enum backed by an unsigned
    // type. This indicates that they are flags, so it can be used with ftl/enum.h.
    enum class Feature : uint32_t {
        DISABLE_TOUCH_PAD_GESTURES = 1u << 0,
        NO_INPUT_CHANNEL = 1u << 1,
        DISABLE_USER_ACTIVITY = 1u << 2,
        DROP_INPUT = 1u << 3,
        DROP_INPUT_IF_OBSCURED = 1u << 4,
        SPY = 1u << 5,
        INTERCEPTS_STYLUS = 1u << 6,
        // clang-format off
        DISABLE_TOUCH_PAD_GESTURES =
                static_cast<uint32_t>(os::IInputConstants::InputFeature::DISABLE_POINTER_GESTURES),
        NO_INPUT_CHANNEL =
                static_cast<uint32_t>(os::IInputConstants::InputFeature::NO_INPUT_CHANNEL),
        DISABLE_USER_ACTIVITY =
                static_cast<uint32_t>(os::IInputConstants::InputFeature::DISABLE_USER_ACTIVITY),
        DROP_INPUT =
                static_cast<uint32_t>(os::IInputConstants::InputFeature::DROP_INPUT),
        DROP_INPUT_IF_OBSCURED =
                static_cast<uint32_t>(os::IInputConstants::InputFeature::DROP_INPUT_IF_OBSCURED),
        SPY =
                static_cast<uint32_t>(os::IInputConstants::InputFeature::SPY),
        INTERCEPTS_STYLUS =
                static_cast<uint32_t>(os::IInputConstants::InputFeature::INTERCEPTS_STYLUS),
        // clang-format on
    };

    /* These values are filled in by the WM and passed through SurfaceFlinger
+56 −0
Original line number Diff line number Diff line
@@ -53,4 +53,60 @@ interface IInputConstants
     * set of flags, including in input/Input.h and in android/input.h.
     */
    const int INPUT_EVENT_FLAG_IS_ACCESSIBILITY_EVENT = 0x800;

    @Backing(type="int")
    enum InputFeature {
        /**
         * When this window has focus, disable touch pad pointer gesture processing.
         * The window will receive raw position updates from the touch pad instead
         * of pointer movements and synthetic touch events.
         */
        DISABLE_POINTER_GESTURES = 0x00000001,

        /**
         * Does not construct an input channel for this window.  The channel will therefore
         * be incapable of receiving input.
         */
        NO_INPUT_CHANNEL = 0x00000002,

        /**
         * When this window has focus, does not call user activity for all input events so
         * the application will have to do it itself.  Should only be used by
         * the keyguard and phone app.
         *
         * Should only be used by the keyguard and phone app.
         */
        DISABLE_USER_ACTIVITY = 0x00000004,

        /**
         * Internal flag used to indicate that input should be dropped on this window.
         */
        DROP_INPUT = 0x00000008,

        /**
         * Internal flag used to indicate that input should be dropped on this window if this window
         * is obscured.
         */
        DROP_INPUT_IF_OBSCURED = 0x00000010,

        /**
         * An input spy window. This window will receive all pointer events within its touchable
         * area, but will will not stop events from being sent to other windows below it in z-order.
         * An input event will be dispatched to all spy windows above the top non-spy window at the
         * event's coordinates.
         */
        SPY = 0x00000020,

        /**
         * When used with the window flag {@link #FLAG_NOT_TOUCHABLE}, this window will continue
         * to receive events from a stylus device within its touchable region. All other pointer
         * events, such as from a mouse or touchscreen, will be dispatched to the windows behind it.
         *
         * This input feature has no effect when the window flag {@link #FLAG_NOT_TOUCHABLE} is
         * not set.
         *
         * The window must be a trusted overlay to use this input feature.
         */
        INTERCEPTS_STYLUS = 0x00000040,
    }
}