InputTracer: Use PackageManagerNative to get package UID
... instead of plumbing the call through InputManagerService via JNI.
Bug: 330360505
Test: manual
Test: atest inputflinger_tests
Change-Id: Ie763733d8dba442afcaea7560e6d997c06ca3877
diff --git a/services/inputflinger/tests/InputTracingTest.cpp b/services/inputflinger/tests/InputTracingTest.cpp
index 23fa045..ef0eeae 100644
--- a/services/inputflinger/tests/InputTracingTest.cpp
+++ b/services/inputflinger/tests/InputTracingTest.cpp
@@ -26,6 +26,7 @@
#include <NotifyArgsBuilders.h>
#include <android-base/logging.h>
+#include <android/content/pm/IPackageManagerNative.h>
#include <gtest/gtest.h>
#include <input/Input.h>
#include <perfetto/trace/android/android_input_event.pbzero.h>
@@ -65,6 +66,26 @@
const std::string DISALLOWED_PKG_1{"disallowed.pkg.1"};
const std::string DISALLOWED_PKG_2{"disallowed.pkg.2"};
+const std::map<std::string, gui::Uid> kPackageUidMap{
+ {ALLOWED_PKG_1, ALLOWED_UID_1},
+ {ALLOWED_PKG_2, ALLOWED_UID_2},
+ {DISALLOWED_PKG_1, DISALLOWED_UID_1},
+ {DISALLOWED_PKG_2, DISALLOWED_UID_2},
+};
+
+class FakePackageManager : public content::pm::IPackageManagerNativeDefault {
+public:
+ binder::Status getPackageUid(const ::std::string& pkg, int64_t flags, int32_t userId,
+ int32_t* outUid) override {
+ auto it = kPackageUidMap.find(pkg);
+ *outUid = it != kPackageUidMap.end() ? static_cast<int32_t>(it->second.val()) : -1;
+ return binder::Status::ok();
+ }
+};
+
+const sp<testing::NiceMock<FakePackageManager>> kPackageManager =
+ sp<testing::NiceMock<FakePackageManager>>::make();
+
const std::shared_ptr<FakeApplicationHandle> APP = std::make_shared<FakeApplicationHandle>();
} // namespace
@@ -78,18 +99,11 @@
void SetUp() override {
impl::PerfettoBackend::sUseInProcessBackendForTest = true;
-
+ impl::PerfettoBackend::sPackageManagerProvider = []() { return kPackageManager; };
mFakePolicy = std::make_unique<FakeInputDispatcherPolicy>();
- mFakePolicy->addPackageUidMapping(ALLOWED_PKG_1, ALLOWED_UID_1);
- mFakePolicy->addPackageUidMapping(ALLOWED_PKG_2, ALLOWED_UID_2);
- mFakePolicy->addPackageUidMapping(DISALLOWED_PKG_1, DISALLOWED_UID_1);
- mFakePolicy->addPackageUidMapping(DISALLOWED_PKG_2, DISALLOWED_UID_2);
auto tracingBackend = std::make_unique<impl::ThreadedBackend<impl::PerfettoBackend>>(
- impl::PerfettoBackend([this](const auto& pkg) {
- return static_cast<InputDispatcherPolicyInterface&>(*mFakePolicy)
- .getPackageUid(pkg);
- }));
+ impl::PerfettoBackend());
mRequestTracerIdle = tracingBackend->getIdleWaiterForTesting();
mDispatcher = std::make_unique<InputDispatcher>(*mFakePolicy, std::move(tracingBackend));