Loading include/input/Input.h +25 −0 Original line number Diff line number Diff line Loading @@ -220,6 +220,27 @@ enum { POLICY_FLAG_PASS_TO_USER = 0x40000000, }; /** * Classifications of the current gesture, if available. * * The following values must be kept in sync with MotionEvent.java */ enum class MotionClassification : uint8_t { /** * No classification is available. */ NONE = 0, /** * Too early to classify the current gesture. Need more events. Look for changes in the * upcoming motion events. */ AMBIGUOUS_GESTURE = 1, /** * The current gesture likely represents a user intentionally exerting force on the touchscreen. */ DEEP_PRESS = 2, }; /* * Pointer coordinate data. */ Loading Loading @@ -419,6 +440,8 @@ public: inline void setButtonState(int32_t buttonState) { mButtonState = buttonState; } inline MotionClassification getClassification() const { return mClassification; } inline int32_t getActionButton() const { return mActionButton; } inline void setActionButton(int32_t button) { mActionButton = button; } Loading Loading @@ -582,6 +605,7 @@ public: int32_t edgeFlags, int32_t metaState, int32_t buttonState, MotionClassification classification, float xOffset, float yOffset, float xPrecision, Loading Loading @@ -635,6 +659,7 @@ protected: int32_t mEdgeFlags; int32_t mMetaState; int32_t mButtonState; MotionClassification mClassification; float mXOffset; float mYOffset; float mXPrecision; Loading libs/input/Input.cpp +5 −0 Original line number Diff line number Diff line Loading @@ -234,6 +234,7 @@ void MotionEvent::initialize( int32_t edgeFlags, int32_t metaState, int32_t buttonState, MotionClassification classification, float xOffset, float yOffset, float xPrecision, Loading @@ -250,6 +251,7 @@ void MotionEvent::initialize( mEdgeFlags = edgeFlags; mMetaState = metaState; mButtonState = buttonState; mClassification = classification; mXOffset = xOffset; mYOffset = yOffset; mXPrecision = xPrecision; Loading @@ -270,6 +272,7 @@ void MotionEvent::copyFrom(const MotionEvent* other, bool keepHistory) { mEdgeFlags = other->mEdgeFlags; mMetaState = other->mMetaState; mButtonState = other->mButtonState; mClassification = other->mClassification; mXOffset = other->mXOffset; mYOffset = other->mYOffset; mXPrecision = other->mXPrecision; Loading Loading @@ -451,6 +454,7 @@ status_t MotionEvent::readFromParcel(Parcel* parcel) { mEdgeFlags = parcel->readInt32(); mMetaState = parcel->readInt32(); mButtonState = parcel->readInt32(); mClassification = static_cast<MotionClassification>(parcel->readByte()); mXOffset = parcel->readFloat(); mYOffset = parcel->readFloat(); mXPrecision = parcel->readFloat(); Loading Loading @@ -501,6 +505,7 @@ status_t MotionEvent::writeToParcel(Parcel* parcel) const { parcel->writeInt32(mEdgeFlags); parcel->writeInt32(mMetaState); parcel->writeInt32(mButtonState); parcel->writeByte(static_cast<int8_t>(mClassification)); parcel->writeFloat(mXOffset); parcel->writeFloat(mYOffset); parcel->writeFloat(mXPrecision); Loading libs/input/InputTransport.cpp +1 −0 Original line number Diff line number Diff line Loading @@ -1112,6 +1112,7 @@ void InputConsumer::initializeMotionEvent(MotionEvent* event, const InputMessage msg->body.motion.edgeFlags, msg->body.motion.metaState, msg->body.motion.buttonState, MotionClassification::NONE, msg->body.motion.xOffset, msg->body.motion.yOffset, msg->body.motion.xPrecision, Loading libs/input/tests/InputEvent_test.cpp +6 −3 Original line number Diff line number Diff line Loading @@ -260,7 +260,7 @@ void MotionEventTest::initializeEventWithHistory(MotionEvent* event) { event->initialize(2, AINPUT_SOURCE_TOUCHSCREEN, DISPLAY_ID, AMOTION_EVENT_ACTION_MOVE, 0, AMOTION_EVENT_FLAG_WINDOW_IS_OBSCURED, AMOTION_EVENT_EDGE_FLAG_TOP, AMETA_ALT_ON, AMOTION_EVENT_BUTTON_PRIMARY, X_OFFSET, Y_OFFSET, 2.0f, 2.1f, MotionClassification::NONE, X_OFFSET, Y_OFFSET, 2.0f, 2.1f, ARBITRARY_DOWN_TIME, ARBITRARY_EVENT_TIME, 2, pointerProperties, pointerCoords); Loading Loading @@ -572,8 +572,11 @@ TEST_F(MotionEventTest, Transform) { pointerCoords[i].setAxisValue(AMOTION_EVENT_AXIS_ORIENTATION, angle); } MotionEvent event; event.initialize(0, 0, DISPLAY_ID, AMOTION_EVENT_ACTION_MOVE, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, pointerCount, pointerProperties, pointerCoords); event.initialize(0 /*deviceId*/, AINPUT_SOURCE_UNKNOWN, DISPLAY_ID, AMOTION_EVENT_ACTION_MOVE, 0 /*actionButton*/, 0 /*flags*/, AMOTION_EVENT_EDGE_FLAG_NONE, AMETA_NONE, 0 /*buttonState*/, MotionClassification::NONE, 0 /*xOffset*/, 0 /*yOffset*/, 0 /*xPrecision*/, 0 /*yPrecision*/, 0 /*downTime*/, 0 /*eventTime*/, pointerCount, pointerProperties, pointerCoords); float originalRawX = 0 + 3; float originalRawY = -RADIUS + 2; Loading libs/input/tests/VelocityTracker_test.cpp +7 −3 Original line number Diff line number Diff line Loading @@ -90,7 +90,8 @@ MotionEvent* createSimpleMotionEvent(const Position* positions, size_t numSample MotionEvent* event = new MotionEvent(); PointerCoords coords; PointerProperties properties[1]; constexpr size_t pointerCount = 1; PointerProperties properties[pointerCount]; properties[0].id = DEFAULT_POINTER_ID; properties[0].toolType = AMOTION_EVENT_TOOL_TYPE_FINGER; Loading @@ -98,8 +99,11 @@ MotionEvent* createSimpleMotionEvent(const Position* positions, size_t numSample // First sample added separately with initialize coords.setAxisValue(AMOTION_EVENT_AXIS_X, positions[0].x); coords.setAxisValue(AMOTION_EVENT_AXIS_Y, positions[0].y); event->initialize(0, AINPUT_SOURCE_TOUCHSCREEN, DISPLAY_ID, AMOTION_EVENT_ACTION_MOVE, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, positions[0].time, 1, properties, &coords); event->initialize(0 /*deviceId*/, AINPUT_SOURCE_TOUCHSCREEN, DISPLAY_ID, AMOTION_EVENT_ACTION_MOVE, 0 /*actionButton*/, 0 /*flags*/, AMOTION_EVENT_EDGE_FLAG_NONE, AMETA_NONE, 0 /*buttonState*/, MotionClassification::NONE, 0 /*xOffset*/, 0 /*yOffset*/, 0 /*xPrecision*/, 0 /*yPrecision*/, 0 /*downTime*/, positions[0].time, pointerCount, properties, &coords); for (size_t i = 1; i < numSamples; i++) { coords.setAxisValue(AMOTION_EVENT_AXIS_X, positions[i].x); Loading Loading
include/input/Input.h +25 −0 Original line number Diff line number Diff line Loading @@ -220,6 +220,27 @@ enum { POLICY_FLAG_PASS_TO_USER = 0x40000000, }; /** * Classifications of the current gesture, if available. * * The following values must be kept in sync with MotionEvent.java */ enum class MotionClassification : uint8_t { /** * No classification is available. */ NONE = 0, /** * Too early to classify the current gesture. Need more events. Look for changes in the * upcoming motion events. */ AMBIGUOUS_GESTURE = 1, /** * The current gesture likely represents a user intentionally exerting force on the touchscreen. */ DEEP_PRESS = 2, }; /* * Pointer coordinate data. */ Loading Loading @@ -419,6 +440,8 @@ public: inline void setButtonState(int32_t buttonState) { mButtonState = buttonState; } inline MotionClassification getClassification() const { return mClassification; } inline int32_t getActionButton() const { return mActionButton; } inline void setActionButton(int32_t button) { mActionButton = button; } Loading Loading @@ -582,6 +605,7 @@ public: int32_t edgeFlags, int32_t metaState, int32_t buttonState, MotionClassification classification, float xOffset, float yOffset, float xPrecision, Loading Loading @@ -635,6 +659,7 @@ protected: int32_t mEdgeFlags; int32_t mMetaState; int32_t mButtonState; MotionClassification mClassification; float mXOffset; float mYOffset; float mXPrecision; Loading
libs/input/Input.cpp +5 −0 Original line number Diff line number Diff line Loading @@ -234,6 +234,7 @@ void MotionEvent::initialize( int32_t edgeFlags, int32_t metaState, int32_t buttonState, MotionClassification classification, float xOffset, float yOffset, float xPrecision, Loading @@ -250,6 +251,7 @@ void MotionEvent::initialize( mEdgeFlags = edgeFlags; mMetaState = metaState; mButtonState = buttonState; mClassification = classification; mXOffset = xOffset; mYOffset = yOffset; mXPrecision = xPrecision; Loading @@ -270,6 +272,7 @@ void MotionEvent::copyFrom(const MotionEvent* other, bool keepHistory) { mEdgeFlags = other->mEdgeFlags; mMetaState = other->mMetaState; mButtonState = other->mButtonState; mClassification = other->mClassification; mXOffset = other->mXOffset; mYOffset = other->mYOffset; mXPrecision = other->mXPrecision; Loading Loading @@ -451,6 +454,7 @@ status_t MotionEvent::readFromParcel(Parcel* parcel) { mEdgeFlags = parcel->readInt32(); mMetaState = parcel->readInt32(); mButtonState = parcel->readInt32(); mClassification = static_cast<MotionClassification>(parcel->readByte()); mXOffset = parcel->readFloat(); mYOffset = parcel->readFloat(); mXPrecision = parcel->readFloat(); Loading Loading @@ -501,6 +505,7 @@ status_t MotionEvent::writeToParcel(Parcel* parcel) const { parcel->writeInt32(mEdgeFlags); parcel->writeInt32(mMetaState); parcel->writeInt32(mButtonState); parcel->writeByte(static_cast<int8_t>(mClassification)); parcel->writeFloat(mXOffset); parcel->writeFloat(mYOffset); parcel->writeFloat(mXPrecision); Loading
libs/input/InputTransport.cpp +1 −0 Original line number Diff line number Diff line Loading @@ -1112,6 +1112,7 @@ void InputConsumer::initializeMotionEvent(MotionEvent* event, const InputMessage msg->body.motion.edgeFlags, msg->body.motion.metaState, msg->body.motion.buttonState, MotionClassification::NONE, msg->body.motion.xOffset, msg->body.motion.yOffset, msg->body.motion.xPrecision, Loading
libs/input/tests/InputEvent_test.cpp +6 −3 Original line number Diff line number Diff line Loading @@ -260,7 +260,7 @@ void MotionEventTest::initializeEventWithHistory(MotionEvent* event) { event->initialize(2, AINPUT_SOURCE_TOUCHSCREEN, DISPLAY_ID, AMOTION_EVENT_ACTION_MOVE, 0, AMOTION_EVENT_FLAG_WINDOW_IS_OBSCURED, AMOTION_EVENT_EDGE_FLAG_TOP, AMETA_ALT_ON, AMOTION_EVENT_BUTTON_PRIMARY, X_OFFSET, Y_OFFSET, 2.0f, 2.1f, MotionClassification::NONE, X_OFFSET, Y_OFFSET, 2.0f, 2.1f, ARBITRARY_DOWN_TIME, ARBITRARY_EVENT_TIME, 2, pointerProperties, pointerCoords); Loading Loading @@ -572,8 +572,11 @@ TEST_F(MotionEventTest, Transform) { pointerCoords[i].setAxisValue(AMOTION_EVENT_AXIS_ORIENTATION, angle); } MotionEvent event; event.initialize(0, 0, DISPLAY_ID, AMOTION_EVENT_ACTION_MOVE, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, pointerCount, pointerProperties, pointerCoords); event.initialize(0 /*deviceId*/, AINPUT_SOURCE_UNKNOWN, DISPLAY_ID, AMOTION_EVENT_ACTION_MOVE, 0 /*actionButton*/, 0 /*flags*/, AMOTION_EVENT_EDGE_FLAG_NONE, AMETA_NONE, 0 /*buttonState*/, MotionClassification::NONE, 0 /*xOffset*/, 0 /*yOffset*/, 0 /*xPrecision*/, 0 /*yPrecision*/, 0 /*downTime*/, 0 /*eventTime*/, pointerCount, pointerProperties, pointerCoords); float originalRawX = 0 + 3; float originalRawY = -RADIUS + 2; Loading
libs/input/tests/VelocityTracker_test.cpp +7 −3 Original line number Diff line number Diff line Loading @@ -90,7 +90,8 @@ MotionEvent* createSimpleMotionEvent(const Position* positions, size_t numSample MotionEvent* event = new MotionEvent(); PointerCoords coords; PointerProperties properties[1]; constexpr size_t pointerCount = 1; PointerProperties properties[pointerCount]; properties[0].id = DEFAULT_POINTER_ID; properties[0].toolType = AMOTION_EVENT_TOOL_TYPE_FINGER; Loading @@ -98,8 +99,11 @@ MotionEvent* createSimpleMotionEvent(const Position* positions, size_t numSample // First sample added separately with initialize coords.setAxisValue(AMOTION_EVENT_AXIS_X, positions[0].x); coords.setAxisValue(AMOTION_EVENT_AXIS_Y, positions[0].y); event->initialize(0, AINPUT_SOURCE_TOUCHSCREEN, DISPLAY_ID, AMOTION_EVENT_ACTION_MOVE, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, positions[0].time, 1, properties, &coords); event->initialize(0 /*deviceId*/, AINPUT_SOURCE_TOUCHSCREEN, DISPLAY_ID, AMOTION_EVENT_ACTION_MOVE, 0 /*actionButton*/, 0 /*flags*/, AMOTION_EVENT_EDGE_FLAG_NONE, AMETA_NONE, 0 /*buttonState*/, MotionClassification::NONE, 0 /*xOffset*/, 0 /*yOffset*/, 0 /*xPrecision*/, 0 /*yPrecision*/, 0 /*downTime*/, positions[0].time, pointerCount, properties, &coords); for (size_t i = 1; i < numSamples; i++) { coords.setAxisValue(AMOTION_EVENT_AXIS_X, positions[i].x); Loading