Revert "Reject inconsistent globally injected events"

This reverts commit f6abbf4b919b121614384ab2286bcaf16bedd344.

Reason for revert: DroidMonitor: Potential culprit for http://b/372964183 - verifying through ABTD before revert submission. This is part of the standard investigation process, and does not mean your CL will be reverted

Change-Id: I9cdb4dfb4ca14a90d7527e5f546380ea6ec1d62f
diff --git a/include/input/InputEventBuilders.h b/include/input/InputEventBuilders.h
index 1696a62..1899a66 100644
--- a/include/input/InputEventBuilders.h
+++ b/include/input/InputEventBuilders.h
@@ -250,9 +250,6 @@
 public:
     MotionEventBuilder(int32_t action, int32_t source) {
         mAction = action;
-        if (mAction == AMOTION_EVENT_ACTION_CANCEL) {
-            mFlags |= AMOTION_EVENT_FLAG_CANCELED;
-        }
         mSource = source;
         mEventTime = systemTime(SYSTEM_TIME_MONOTONIC);
         mDownTime = mEventTime;
diff --git a/services/inputflinger/dispatcher/InputDispatcher.cpp b/services/inputflinger/dispatcher/InputDispatcher.cpp
index f618277..4b43c27 100644
--- a/services/inputflinger/dispatcher/InputDispatcher.cpp
+++ b/services/inputflinger/dispatcher/InputDispatcher.cpp
@@ -4796,39 +4796,6 @@
     }
 }
 
-bool InputDispatcher::shouldRejectInjectedMotionLocked(const MotionEvent& motionEvent,
-                                                       DeviceId deviceId,
-                                                       ui::LogicalDisplayId displayId,
-                                                       std::optional<gui::Uid> targetUid,
-                                                       int32_t flags) {
-    // Don't verify targeted injection, since it will only affect the caller's
-    // window, and the windows are typically destroyed at the end of the test.
-    if (targetUid.has_value()) {
-        return false;
-    }
-
-    // Verify all other injected streams, whether the injection is coming from apps or from
-    // input filter. Print an error if the stream becomes inconsistent with this event.
-    // An inconsistent injected event sent could cause a crash in the later stages of
-    // dispatching pipeline.
-    auto [it, _] = mInputFilterVerifiersByDisplay.try_emplace(displayId,
-                                                              std::string("Injection on ") +
-                                                                      displayId.toString());
-    InputVerifier& verifier = it->second;
-
-    Result<void> result =
-            verifier.processMovement(deviceId, motionEvent.getSource(), motionEvent.getAction(),
-                                     motionEvent.getPointerCount(),
-                                     motionEvent.getPointerProperties(),
-                                     motionEvent.getSamplePointerCoords(), flags);
-    if (!result.ok()) {
-        logDispatchStateLocked();
-        LOG(ERROR) << "Inconsistent event: " << motionEvent << ", reason: " << result.error();
-        return true;
-    }
-    return false;
-}
-
 InputEventInjectionResult InputDispatcher::injectInputEvent(const InputEvent* event,
                                                             std::optional<gui::Uid> targetUid,
                                                             InputEventInjectionSync syncMode,
@@ -4939,10 +4906,32 @@
 
             mLock.lock();
 
-            if (shouldRejectInjectedMotionLocked(motionEvent, resolvedDeviceId, displayId,
-                                                 targetUid, flags)) {
-                mLock.unlock();
-                return InputEventInjectionResult::FAILED;
+            {
+                // Verify all injected streams, whether the injection is coming from apps or from
+                // input filter. Print an error if the stream becomes inconsistent with this event.
+                // An inconsistent injected event sent could cause a crash in the later stages of
+                // dispatching pipeline.
+                auto [it, _] =
+                        mInputFilterVerifiersByDisplay.try_emplace(displayId,
+                                                                   std::string("Injection on ") +
+                                                                           displayId.toString());
+                InputVerifier& verifier = it->second;
+
+                Result<void> result =
+                        verifier.processMovement(resolvedDeviceId, motionEvent.getSource(),
+                                                 motionEvent.getAction(),
+                                                 motionEvent.getPointerCount(),
+                                                 motionEvent.getPointerProperties(),
+                                                 motionEvent.getSamplePointerCoords(), flags);
+                if (!result.ok()) {
+                    logDispatchStateLocked();
+                    LOG(ERROR) << "Inconsistent event: " << motionEvent
+                               << ", reason: " << result.error();
+                    if (policyFlags & POLICY_FLAG_INJECTED_FROM_ACCESSIBILITY) {
+                        mLock.unlock();
+                        return InputEventInjectionResult::FAILED;
+                    }
+                }
             }
 
             const nsecs_t* sampleEventTimes = motionEvent.getSampleEventTimes();
diff --git a/services/inputflinger/dispatcher/InputDispatcher.h b/services/inputflinger/dispatcher/InputDispatcher.h
index a6b7cc7..24e36ae 100644
--- a/services/inputflinger/dispatcher/InputDispatcher.h
+++ b/services/inputflinger/dispatcher/InputDispatcher.h
@@ -299,10 +299,6 @@
 
     // Event injection and synchronization.
     std::condition_variable mInjectionResultAvailable;
-    bool shouldRejectInjectedMotionLocked(const MotionEvent& motion, DeviceId deviceId,
-                                          ui::LogicalDisplayId displayId,
-                                          std::optional<gui::Uid> targetUid, int32_t flags)
-            REQUIRES(mLock);
     void setInjectionResult(const EventEntry& entry,
                             android::os::InputEventInjectionResult injectionResult);
     void transformMotionEntryForInjectionLocked(MotionEntry&,
diff --git a/services/inputflinger/tests/InputDispatcher_test.cpp b/services/inputflinger/tests/InputDispatcher_test.cpp
index df8bb99..c5702e9 100644
--- a/services/inputflinger/tests/InputDispatcher_test.cpp
+++ b/services/inputflinger/tests/InputDispatcher_test.cpp
@@ -12889,22 +12889,6 @@
     // Remove drag window
     mDispatcher->onWindowInfosChanged({{*mWindow->getInfo(), *mSecondWindow->getInfo()}, {}, 0, 0});
 
-    // Complete the first event stream, even though the injection will fail because there aren't any
-    // valid targets to dispatch this event to. This is still needed to make the input stream
-    // consistent
-    ASSERT_EQ(InputEventInjectionResult::FAILED,
-              injectMotionEvent(*mDispatcher,
-                                MotionEventBuilder(ACTION_CANCEL, AINPUT_SOURCE_TOUCHSCREEN)
-                                        .displayId(ui::LogicalDisplayId::DEFAULT)
-                                        .pointer(PointerBuilder(/*id=*/0, ToolType::FINGER)
-                                                         .x(150)
-                                                         .y(50))
-                                        .pointer(PointerBuilder(/*id=*/1, ToolType::FINGER)
-                                                         .x(50)
-                                                         .y(50))
-                                        .build(),
-                                INJECT_EVENT_TIMEOUT, InputEventInjectionSync::WAIT_FOR_RESULT));
-
     // Inject a simple gesture, ensure dispatcher not crashed
     ASSERT_EQ(InputEventInjectionResult::SUCCEEDED,
               injectMotionDown(*mDispatcher, AINPUT_SOURCE_TOUCHSCREEN,