Loading libs/gui/Android.bp +1 −0 Original line number Diff line number Diff line Loading @@ -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", Loading libs/gui/include/gui/WindowInfo.h +17 −7 Original line number Diff line number Diff line Loading @@ -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> Loading Loading @@ -131,14 +132,23 @@ 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 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 Loading libs/input/android/os/IInputConstants.aidl +49 −0 Original line number Diff line number Diff line Loading @@ -53,4 +53,53 @@ 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 { /** * 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, } } Loading
libs/gui/Android.bp +1 −0 Original line number Diff line number Diff line Loading @@ -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", Loading
libs/gui/include/gui/WindowInfo.h +17 −7 Original line number Diff line number Diff line Loading @@ -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> Loading Loading @@ -131,14 +132,23 @@ 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 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 Loading
libs/input/android/os/IInputConstants.aidl +49 −0 Original line number Diff line number Diff line Loading @@ -53,4 +53,53 @@ 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 { /** * 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, } }