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

Commit 9e3f3e8e authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Convert motion flags to MotionEventFlags" into main

parents cb0a75d1 4cca7b53
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -152,7 +152,7 @@ status_t NativeInputEventSender::sendMotionEvent(uint32_t seq, const MotionEvent
                                                   event->getDeviceId(), event->getSource(),
                                                   event->getDisplayId(), event->getHmac(),
                                                   event->getAction(), event->getActionButton(),
                                                   event->getFlags(), event->getEdgeFlags(),
                                                   event->getFlags().get(), event->getEdgeFlags(),
                                                   event->getMetaState(), event->getButtonState(),
                                                   event->getClassification(),
                                                   event->getTransform(), event->getXPrecision(),
+11 −7
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@
#include <android_runtime/AndroidRuntime.h>
#include <android_runtime/Log.h>
#include <attestation/HmacKeyManager.h>
#include <ftl/flags.h>
#include <input/Input.h>
#include <log/log.h>
#include <nativehelper/JNIHelp.h>
@@ -322,7 +323,7 @@ static void pointerPropertiesFromNative(JNIEnv* env, const PointerProperties* po

static jlong android_view_MotionEvent_nativeInitialize(
        JNIEnv* env, jclass clazz, jlong nativePtr, jint deviceId, jint source, jint displayId,
        jint action, jint flags, jint edgeFlags, jint metaState, jint buttonState,
        jint action, jint jFlags, jint edgeFlags, jint metaState, jint buttonState,
        jint classification, jfloat xOffset, jfloat yOffset, jfloat xPrecision, jfloat yPrecision,
        jlong downTimeNanos, jlong eventTimeNanos, jint pointerCount,
        jobjectArray pointerPropertiesObjArray, jobjectArray pointerCoordsObjArray) {
@@ -339,6 +340,8 @@ static jlong android_view_MotionEvent_nativeInitialize(
        event = std::make_unique<MotionEvent>();
    }

    ftl::Flags<MotionFlag> flags(jFlags);

    ui::Transform transform;
    transform.set(xOffset, yOffset);
    const ui::Transform inverseTransform = transform.inverse();
@@ -364,8 +367,8 @@ static jlong android_view_MotionEvent_nativeInitialize(
        rawPointerCoords.emplace_back(pointerCoordsToNative(env, pointerCoordsObj));
        PointerCoords& coords = rawPointerCoords.back();
        if (coords.getAxisValue(AMOTION_EVENT_AXIS_ORIENTATION) != 0.f) {
            flags |= AMOTION_EVENT_PRIVATE_FLAG_SUPPORTS_ORIENTATION |
                    AMOTION_EVENT_PRIVATE_FLAG_SUPPORTS_DIRECTIONAL_ORIENTATION;
            flags |= MotionFlag::SUPPORTS_ORIENTATION;
            flags |= MotionFlag::SUPPORTS_DIRECTIONAL_ORIENTATION;
        }
        MotionEvent::calculateTransformedCoordsInPlace(coords, source, flags, inverseTransform);
        env->DeleteLocalRef(pointerCoordsObj);
@@ -697,15 +700,16 @@ static jboolean android_view_MotionEvent_nativeIsTouchEvent(
static jint android_view_MotionEvent_nativeGetFlags(CRITICAL_JNI_PARAMS_COMMA jlong nativePtr) {
    MotionEvent* event = reinterpret_cast<MotionEvent*>(nativePtr);
    // Prevent private flags from being used in Java.
    return event->getFlags() & ~AMOTION_EVENT_PRIVATE_FLAG_MASK;
    return event->getFlags().get() & ~AMOTION_EVENT_PRIVATE_FLAG_MASK;
}

static void android_view_MotionEvent_nativeSetFlags(CRITICAL_JNI_PARAMS_COMMA jlong nativePtr,
                                                    jint flags) {
                                                    jint jFlags) {
    MotionEvent* event = reinterpret_cast<MotionEvent*>(nativePtr);
    // Prevent private flags from being used from Java.
    const int32_t privateFlags = event->getFlags() & AMOTION_EVENT_PRIVATE_FLAG_MASK;
    event->setFlags((flags & ~AMOTION_EVENT_PRIVATE_FLAG_MASK) | privateFlags);
    const int32_t privateFlags = event->getFlags().get() & AMOTION_EVENT_PRIVATE_FLAG_MASK;
    uint32_t flags = (jFlags & ~AMOTION_EVENT_PRIVATE_FLAG_MASK) | privateFlags;
    event->setFlags(ftl::Flags<MotionFlag>(flags));
}

static jint android_view_MotionEvent_nativeGetEdgeFlags(CRITICAL_JNI_PARAMS_COMMA jlong nativePtr) {
+1 −1
Original line number Diff line number Diff line
@@ -34,7 +34,7 @@ jobject android_view_VerifiedMotionEvent(JNIEnv* env, const VerifiedMotionEvent&
    return env->NewObject(gVerifiedMotionEventClassInfo.clazz,
                          gVerifiedMotionEventClassInfo.constructor, event.deviceId,
                          event.eventTimeNanos, event.source, event.displayId, event.rawX,
                          event.rawY, event.actionMasked, event.downTimeNanos, event.flags,
                          event.rawY, event.actionMasked, event.downTimeNanos, event.flags.get(),
                          event.metaState, event.buttonState);
}

+1 −1
Original line number Diff line number Diff line
@@ -100,7 +100,7 @@ int32_t AMotionEvent_getAction(const AInputEvent* motion_event) {
}

int32_t AMotionEvent_getFlags(const AInputEvent* motion_event) {
    return static_cast<const MotionEvent*>(motion_event)->getFlags() &
    return static_cast<const MotionEvent*>(motion_event)->getFlags().get() &
            ~AMOTION_EVENT_PRIVATE_FLAG_MASK;
}