MotionEvent: Guard getRawX/Y compatibility logic using feature flag
The getRawX/Y API contains compatibility logic that should only be used
when the per-window-input-rotation feature is enabled.
The compatibility logic was previously unguarded because it was assumed
that the logic was a no-op when the flag was not enabled. However, this
turned out to be untrue, resulting in the bug.
Bug: 187686656
Test: manual: using repro steps listed in the bug.
Change-Id: I6603694f9872e7df4b6f72c7fb2555b3249687a6
diff --git a/libs/input/tests/InputEvent_test.cpp b/libs/input/tests/InputEvent_test.cpp
index 32b72ba..3b76ddb 100644
--- a/libs/input/tests/InputEvent_test.cpp
+++ b/libs/input/tests/InputEvent_test.cpp
@@ -17,6 +17,7 @@
#include <array>
#include <math.h>
+#include <android-base/properties.h>
#include <attestation/HmacKeyManager.h>
#include <binder/Parcel.h>
#include <gtest/gtest.h>
@@ -225,13 +226,34 @@
static constexpr float X_OFFSET = 1;
static constexpr float Y_OFFSET = 1.1;
+ static const std::optional<bool> INITIAL_PER_WINDOW_INPUT_ROTATION_FLAG_VALUE;
+
int32_t mId;
ui::Transform mTransform;
+ void SetUp() override;
+ void TearDown() override;
+
void initializeEventWithHistory(MotionEvent* event);
void assertEqualsEventWithHistory(const MotionEvent* event);
};
+const std::optional<bool> MotionEventTest::INITIAL_PER_WINDOW_INPUT_ROTATION_FLAG_VALUE =
+ !base::GetProperty("persist.debug.per_window_input_rotation", "").empty()
+ ? std::optional(base::GetBoolProperty("persist.debug.per_window_input_rotation", false))
+ : std::nullopt;
+
+void MotionEventTest::SetUp() {
+ // Ensure per_window_input_rotation is enabled.
+ base::SetProperty("persist.debug.per_window_input_rotation", "true");
+}
+
+void MotionEventTest::TearDown() {
+ const auto val = INITIAL_PER_WINDOW_INPUT_ROTATION_FLAG_VALUE.has_value()
+ ? (*INITIAL_PER_WINDOW_INPUT_ROTATION_FLAG_VALUE ? "true" : "false")
+ : "";
+ base::SetProperty("persist.debug.per_window_input_rotation", val);
+}
void MotionEventTest::initializeEventWithHistory(MotionEvent* event) {
mId = InputEvent::nextId();