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

Commit 8b37b1b3 authored by Arpit Singh's avatar Arpit Singh
Browse files

Move utility functions related to isFromSource to Input.h

Moving following function to a common file to avoid duplication.
1. isStylusHoverEvent
2. isFromMouse
3. isFromTouchpad
4. isFromDrawingTablet
5. isHoverAction
6. isMouseOrTouchpad

Test: atest inputflinger_tests
Bug: 245989146
Flag: EXEMPT refactor
Change-Id: I9538646f126e792897c525e7e698f6acde4aaa22
parent 93816371
Loading
Loading
Loading
Loading
+13 −0
Original line number Diff line number Diff line
@@ -316,6 +316,19 @@ struct PointerProperties;

bool isStylusEvent(uint32_t source, const std::vector<PointerProperties>& properties);

bool isStylusHoverEvent(uint32_t source, const std::vector<PointerProperties>& properties,
                        int32_t action);

bool isFromMouse(uint32_t source, ToolType tooltype);

bool isFromTouchpad(uint32_t source, ToolType tooltype);

bool isFromDrawingTablet(uint32_t source, ToolType tooltype);

bool isHoverAction(int32_t action);

bool isMouseOrTouchpad(uint32_t sources);

/*
 * Flags that flow alongside events in the input dispatch system to help with certain
 * policy decisions such as waking from device sleep.
+30 −0
Original line number Diff line number Diff line
@@ -284,6 +284,36 @@ bool isStylusEvent(uint32_t source, const std::vector<PointerProperties>& proper
    return false;
}

bool isStylusHoverEvent(uint32_t source, const std::vector<PointerProperties>& properties,
                        int32_t action) {
    return isStylusEvent(source, properties) && isHoverAction(action);
}

bool isFromMouse(uint32_t source, ToolType toolType) {
    return isFromSource(source, AINPUT_SOURCE_MOUSE) && toolType == ToolType::MOUSE;
}

bool isFromTouchpad(uint32_t source, ToolType toolType) {
    return isFromSource(source, AINPUT_SOURCE_MOUSE) && toolType == ToolType::FINGER;
}

bool isFromDrawingTablet(uint32_t source, ToolType toolType) {
    return isFromSource(source, AINPUT_SOURCE_MOUSE | AINPUT_SOURCE_STYLUS) &&
            isStylusToolType(toolType);
}

bool isHoverAction(int32_t action) {
    return action == AMOTION_EVENT_ACTION_HOVER_ENTER ||
            action == AMOTION_EVENT_ACTION_HOVER_MOVE || action == AMOTION_EVENT_ACTION_HOVER_EXIT;
}

bool isMouseOrTouchpad(uint32_t sources) {
    // Check if this is a mouse or touchpad, but not a drawing tablet.
    return isFromSource(sources, AINPUT_SOURCE_MOUSE_RELATIVE) ||
            (isFromSource(sources, AINPUT_SOURCE_MOUSE) &&
             !isFromSource(sources, AINPUT_SOURCE_STYLUS));
}

VerifiedKeyEvent verifiedKeyEventFromKeyEvent(const KeyEvent& event) {
    return {{VerifiedInputEvent::Type::KEY, event.getDeviceId(), event.getEventTime(),
             event.getSource(), event.getDisplayId()},
+5 −35
Original line number Diff line number Diff line
@@ -36,37 +36,6 @@ namespace android {

namespace {

bool isFromMouse(const NotifyMotionArgs& args) {
    return isFromSource(args.source, AINPUT_SOURCE_MOUSE) &&
            args.pointerProperties[0].toolType == ToolType::MOUSE;
}

bool isFromTouchpad(const NotifyMotionArgs& args) {
    return isFromSource(args.source, AINPUT_SOURCE_MOUSE) &&
            args.pointerProperties[0].toolType == ToolType::FINGER;
}

bool isFromDrawingTablet(const NotifyMotionArgs& args) {
    return isFromSource(args.source, AINPUT_SOURCE_MOUSE | AINPUT_SOURCE_STYLUS) &&
            isStylusToolType(args.pointerProperties[0].toolType);
}

bool isHoverAction(int32_t action) {
    return action == AMOTION_EVENT_ACTION_HOVER_ENTER ||
            action == AMOTION_EVENT_ACTION_HOVER_MOVE || action == AMOTION_EVENT_ACTION_HOVER_EXIT;
}

bool isStylusHoverEvent(const NotifyMotionArgs& args) {
    return isStylusEvent(args.source, args.pointerProperties) && isHoverAction(args.action);
}

bool isMouseOrTouchpad(uint32_t sources) {
    // Check if this is a mouse or touchpad, but not a drawing tablet.
    return isFromSource(sources, AINPUT_SOURCE_MOUSE_RELATIVE) ||
            (isFromSource(sources, AINPUT_SOURCE_MOUSE) &&
             !isFromSource(sources, AINPUT_SOURCE_STYLUS));
}

inline void notifyPointerDisplayChange(std::optional<std::tuple<ui::LogicalDisplayId, vec2>> change,
                                       PointerChoreographerPolicyInterface& policy) {
    if (!change) {
@@ -239,15 +208,16 @@ NotifyMotionArgs PointerChoreographer::processMotion(const NotifyMotionArgs& arg
    PointerDisplayChange pointerDisplayChange;
    { // acquire lock
        std::scoped_lock _l(getLock());
        if (isFromMouse(args)) {
        if (isFromMouse(args.source, args.pointerProperties[0].toolType)) {
            newArgs = processMouseEventLocked(args);
            pointerDisplayChange = calculatePointerDisplayChangeToNotify();
        } else if (isFromTouchpad(args)) {
        } else if (isFromTouchpad(args.source, args.pointerProperties[0].toolType)) {
            newArgs = processTouchpadEventLocked(args);
            pointerDisplayChange = calculatePointerDisplayChangeToNotify();
        } else if (isFromDrawingTablet(args)) {
        } else if (isFromDrawingTablet(args.source, args.pointerProperties[0].toolType)) {
            processDrawingTabletEventLocked(args);
        } else if (mStylusPointerIconEnabled && isStylusHoverEvent(args)) {
        } else if (mStylusPointerIconEnabled &&
                   isStylusHoverEvent(args.source, args.pointerProperties, args.action)) {
            processStylusHoverEventLocked(args);
        } else if (isFromSource(args.source, AINPUT_SOURCE_TOUCHSCREEN)) {
            processTouchscreenAndStylusEventLocked(args);
+0 −7
Original line number Diff line number Diff line
@@ -920,13 +920,6 @@ std::string dumpWindowForTouchOcclusion(const WindowInfo& info, bool isTouchedWi
                        binderToString(info.applicationInfo.token).c_str());
}

bool isMouseOrTouchpad(uint32_t sources) {
    // Check if this is a mouse or touchpad, but not a drawing tablet.
    return isFromSource(sources, AINPUT_SOURCE_MOUSE_RELATIVE) ||
            (isFromSource(sources, AINPUT_SOURCE_MOUSE) &&
             !isFromSource(sources, AINPUT_SOURCE_STYLUS));
}

} // namespace

// --- InputDispatcher ---
+1 −11
Original line number Diff line number Diff line
@@ -15,6 +15,7 @@
 */

#include "DebugConfig.h"
#include "input/Input.h"
#include "input/InputDevice.h"
#include "input/InputFlags.h"

@@ -25,17 +26,6 @@

namespace android::inputdispatcher {

namespace {

bool isMouseOrTouchpad(uint32_t sources) {
    // Check if this is a mouse or touchpad, but not a drawing tablet.
    return isFromSource(sources, AINPUT_SOURCE_MOUSE_RELATIVE) ||
            (isFromSource(sources, AINPUT_SOURCE_MOUSE) &&
             !isFromSource(sources, AINPUT_SOURCE_STYLUS));
}

} // namespace

InputState::InputState(const IdGenerator& idGenerator) : mIdGenerator(idGenerator) {}

InputState::~InputState() {}