diff options
author | 2024-03-15 15:31:02 +0000 | |
---|---|---|
committer | 2024-03-19 18:43:17 +0000 | |
commit | c7edaaa0352992ca2d542752e3c37493a4ece953 (patch) | |
tree | de12ee58550f2e78b0815b9233ddc6ae8b01cb92 | |
parent | bf3c8322208df04f04eca76e193760760e26e7e6 (diff) |
InputTracer: s/TracedEventArgs/TracedEventMetadata
Bug: 210460522
Test: atest inputflinger_tests
Change-Id: Ibd4f17fd47adf0e2af3a6910a9d81cc7f83043fe
8 files changed, 52 insertions, 50 deletions
diff --git a/services/inputflinger/dispatcher/trace/InputTracer.cpp b/services/inputflinger/dispatcher/trace/InputTracer.cpp index 55ed5c635c..019283f133 100644 --- a/services/inputflinger/dispatcher/trace/InputTracer.cpp +++ b/services/inputflinger/dispatcher/trace/InputTracer.cpp @@ -61,10 +61,10 @@ TracedEvent createTracedEvent(const KeyEntry& e, EventType type) { e.downTime, e.flags, e.repeatCount, type}; } -void writeEventToBackend(const TracedEvent& event, const TracedEventArgs args, +void writeEventToBackend(const TracedEvent& event, const TracedEventMetadata metadata, InputTracingBackendInterface& backend) { - std::visit(Visitor{[&](const TracedMotionEvent& e) { backend.traceMotionEvent(e, args); }, - [&](const TracedKeyEvent& e) { backend.traceKeyEvent(e, args); }}, + std::visit(Visitor{[&](const TracedMotionEvent& e) { backend.traceMotionEvent(e, metadata); }, + [&](const TracedKeyEvent& e) { backend.traceKeyEvent(e, metadata); }}, event); } @@ -177,9 +177,9 @@ std::unique_ptr<EventTrackerInterface> InputTracer::traceDerivedEvent( // is dispatched, such as in the case of key fallback events. To account for these cases, // derived events can be traced after the processing is complete for the original event. const auto& event = eventState->events.back(); - const TracedEventArgs traceArgs{.isSecure = eventState->isSecure, - .targets = eventState->targets}; - writeEventToBackend(event, std::move(traceArgs), *mBackend); + const TracedEventMetadata metadata{.isSecure = eventState->isSecure, + .targets = eventState->targets}; + writeEventToBackend(event, std::move(metadata), *mBackend); } return std::make_unique<EventTrackerImpl>(std::move(eventState), /*isDerived=*/true); } @@ -226,9 +226,9 @@ void InputTracer::traceEventDispatch(const DispatchEntry& dispatchEntry, /*hmac=*/{}, resolvedKeyRepeatCount}; if (eventState->isEventProcessingComplete) { - const TracedEventArgs traceArgs{.isSecure = eventState->isSecure, - .targets = eventState->targets}; - mBackend->traceWindowDispatch(std::move(windowDispatchArgs), std::move(traceArgs)); + const TracedEventMetadata metadata{.isSecure = eventState->isSecure, + .targets = eventState->targets}; + mBackend->traceWindowDispatch(std::move(windowDispatchArgs), std::move(metadata)); } else { eventState->pendingDispatchArgs.emplace_back(std::move(windowDispatchArgs)); } @@ -248,8 +248,8 @@ bool InputTracer::isDerivedCookie(const EventTrackerInterface& cookie) { void InputTracer::EventState::onEventProcessingComplete() { // Write all of the events known so far to the trace. for (const auto& event : events) { - const TracedEventArgs traceArgs{.isSecure = isSecure, .targets = targets}; - writeEventToBackend(event, traceArgs, *tracer.mBackend); + const TracedEventMetadata metadata{.isSecure = isSecure, .targets = targets}; + writeEventToBackend(event, std::move(metadata), *tracer.mBackend); } // Write all pending dispatch args to the trace. for (const auto& windowDispatchArgs : pendingDispatchArgs) { @@ -263,8 +263,8 @@ void InputTracer::EventState::onEventProcessingComplete() { << ": Failed to find a previously traced event that matches the dispatched " "event"; } - const TracedEventArgs traceArgs{.isSecure = isSecure, .targets = targets}; - tracer.mBackend->traceWindowDispatch(windowDispatchArgs, std::move(traceArgs)); + const TracedEventMetadata metadata{.isSecure = isSecure, .targets = targets}; + tracer.mBackend->traceWindowDispatch(windowDispatchArgs, std::move(metadata)); } pendingDispatchArgs.clear(); diff --git a/services/inputflinger/dispatcher/trace/InputTracingBackendInterface.h b/services/inputflinger/dispatcher/trace/InputTracingBackendInterface.h index 3ff7fab91f..bc037b39e4 100644 --- a/services/inputflinger/dispatcher/trace/InputTracingBackendInterface.h +++ b/services/inputflinger/dispatcher/trace/InputTracingBackendInterface.h @@ -92,7 +92,7 @@ struct TracedMotionEvent { using TracedEvent = std::variant<TracedKeyEvent, TracedMotionEvent>; /** Additional information about an input event being traced. */ -struct TracedEventArgs { +struct TracedEventMetadata { // True if the event is targeting at least one secure window. bool isSecure; // The list of possible UIDs that this event could be targeting. @@ -121,13 +121,13 @@ public: virtual ~InputTracingBackendInterface() = default; /** Trace a KeyEvent. */ - virtual void traceKeyEvent(const TracedKeyEvent&, const TracedEventArgs&) = 0; + virtual void traceKeyEvent(const TracedKeyEvent&, const TracedEventMetadata&) = 0; /** Trace a MotionEvent. */ - virtual void traceMotionEvent(const TracedMotionEvent&, const TracedEventArgs&) = 0; + virtual void traceMotionEvent(const TracedMotionEvent&, const TracedEventMetadata&) = 0; /** Trace an event being sent to a window. */ - virtual void traceWindowDispatch(const WindowDispatchArgs&, const TracedEventArgs&) = 0; + virtual void traceWindowDispatch(const WindowDispatchArgs&, const TracedEventMetadata&) = 0; }; } // namespace android::inputdispatcher::trace diff --git a/services/inputflinger/dispatcher/trace/InputTracingPerfettoBackend.cpp b/services/inputflinger/dispatcher/trace/InputTracingPerfettoBackend.cpp index b76bec31b6..b413def815 100644 --- a/services/inputflinger/dispatcher/trace/InputTracingPerfettoBackend.cpp +++ b/services/inputflinger/dispatcher/trace/InputTracingPerfettoBackend.cpp @@ -98,10 +98,10 @@ bool PerfettoBackend::InputEventDataSource::shouldIgnoreTracedInputEvent( } TraceLevel PerfettoBackend::InputEventDataSource::resolveTraceLevel( - const TracedEventArgs& args) const { + const TracedEventMetadata& metadata) const { // Check for matches with the rules in the order that they are defined. for (const auto& rule : mConfig.rules) { - if (ruleMatches(rule, args)) { + if (ruleMatches(rule, metadata)) { return rule.level; } } @@ -110,17 +110,17 @@ TraceLevel PerfettoBackend::InputEventDataSource::resolveTraceLevel( } bool PerfettoBackend::InputEventDataSource::ruleMatches(const TraceRule& rule, - const TracedEventArgs& args) const { + const TracedEventMetadata& metadata) const { // By default, a rule will match all events. Return early if the rule does not match. // Match the event if it is directed to a secure window. - if (rule.matchSecure.has_value() && *rule.matchSecure != args.isSecure) { + if (rule.matchSecure.has_value() && *rule.matchSecure != metadata.isSecure) { return false; } // Match the event if all of its target packages are explicitly allowed in the "match all" list. if (!rule.matchAllPackages.empty() && - !std::all_of(args.targets.begin(), args.targets.end(), [&](const auto& uid) { + !std::all_of(metadata.targets.begin(), metadata.targets.end(), [&](const auto& uid) { return isPermanentlyAllowed(uid) || std::any_of(rule.matchAllPackages.begin(), rule.matchAllPackages.end(), [&](const auto& pkg) { return uid == mUidMap->at(pkg); }); @@ -130,7 +130,7 @@ bool PerfettoBackend::InputEventDataSource::ruleMatches(const TraceRule& rule, // Match the event if any of its target packages are allowed in the "match any" list. if (!rule.matchAnyPackages.empty() && - !std::any_of(args.targets.begin(), args.targets.end(), [&](const auto& uid) { + !std::any_of(metadata.targets.begin(), metadata.targets.end(), [&](const auto& uid) { return std::any_of(rule.matchAnyPackages.begin(), rule.matchAnyPackages.end(), [&](const auto& pkg) { return uid == mUidMap->at(pkg); }); })) { @@ -166,14 +166,14 @@ PerfettoBackend::PerfettoBackend(GetPackageUid getPackagesForUid) } void PerfettoBackend::traceMotionEvent(const TracedMotionEvent& event, - const TracedEventArgs& args) { + const TracedEventMetadata& metadata) { InputEventDataSource::Trace([&](InputEventDataSource::TraceContext ctx) { auto dataSource = ctx.GetDataSourceLocked(); dataSource->initializeUidMap(mGetPackageUid); if (dataSource->shouldIgnoreTracedInputEvent(event.eventType)) { return; } - const TraceLevel traceLevel = dataSource->resolveTraceLevel(args); + const TraceLevel traceLevel = dataSource->resolveTraceLevel(metadata); if (traceLevel == TraceLevel::TRACE_LEVEL_NONE) { return; } @@ -186,14 +186,15 @@ void PerfettoBackend::traceMotionEvent(const TracedMotionEvent& event, }); } -void PerfettoBackend::traceKeyEvent(const TracedKeyEvent& event, const TracedEventArgs& args) { +void PerfettoBackend::traceKeyEvent(const TracedKeyEvent& event, + const TracedEventMetadata& metadata) { InputEventDataSource::Trace([&](InputEventDataSource::TraceContext ctx) { auto dataSource = ctx.GetDataSourceLocked(); dataSource->initializeUidMap(mGetPackageUid); if (dataSource->shouldIgnoreTracedInputEvent(event.eventType)) { return; } - const TraceLevel traceLevel = dataSource->resolveTraceLevel(args); + const TraceLevel traceLevel = dataSource->resolveTraceLevel(metadata); if (traceLevel == TraceLevel::TRACE_LEVEL_NONE) { return; } @@ -207,14 +208,14 @@ void PerfettoBackend::traceKeyEvent(const TracedKeyEvent& event, const TracedEve } void PerfettoBackend::traceWindowDispatch(const WindowDispatchArgs& dispatchArgs, - const TracedEventArgs& args) { + const TracedEventMetadata& metadata) { InputEventDataSource::Trace([&](InputEventDataSource::TraceContext ctx) { auto dataSource = ctx.GetDataSourceLocked(); dataSource->initializeUidMap(mGetPackageUid); if (!dataSource->getFlags().test(TraceFlag::TRACE_DISPATCHER_WINDOW_DISPATCH)) { return; } - const TraceLevel traceLevel = dataSource->resolveTraceLevel(args); + const TraceLevel traceLevel = dataSource->resolveTraceLevel(metadata); if (traceLevel == TraceLevel::TRACE_LEVEL_NONE) { return; } diff --git a/services/inputflinger/dispatcher/trace/InputTracingPerfettoBackend.h b/services/inputflinger/dispatcher/trace/InputTracingPerfettoBackend.h index af1c6b72e3..e945066dff 100644 --- a/services/inputflinger/dispatcher/trace/InputTracingPerfettoBackend.h +++ b/services/inputflinger/dispatcher/trace/InputTracingPerfettoBackend.h @@ -54,9 +54,9 @@ public: explicit PerfettoBackend(GetPackageUid); ~PerfettoBackend() override = default; - void traceKeyEvent(const TracedKeyEvent&, const TracedEventArgs&) override; - void traceMotionEvent(const TracedMotionEvent&, const TracedEventArgs&) override; - void traceWindowDispatch(const WindowDispatchArgs&, const TracedEventArgs&) override; + void traceKeyEvent(const TracedKeyEvent&, const TracedEventMetadata&) override; + void traceMotionEvent(const TracedMotionEvent&, const TracedEventMetadata&) override; + void traceWindowDispatch(const WindowDispatchArgs&, const TracedEventMetadata&) override; private: // Implementation of the perfetto data source. @@ -72,13 +72,13 @@ private: void initializeUidMap(GetPackageUid); bool shouldIgnoreTracedInputEvent(const EventType&) const; inline ftl::Flags<TraceFlag> getFlags() const { return mConfig.flags; } - TraceLevel resolveTraceLevel(const TracedEventArgs&) const; + TraceLevel resolveTraceLevel(const TracedEventMetadata&) const; private: const int32_t mInstanceId; TraceConfig mConfig; - bool ruleMatches(const TraceRule&, const TracedEventArgs&) const; + bool ruleMatches(const TraceRule&, const TracedEventMetadata&) const; std::optional<std::map<std::string, gui::Uid>> mUidMap; }; diff --git a/services/inputflinger/dispatcher/trace/ThreadedBackend.cpp b/services/inputflinger/dispatcher/trace/ThreadedBackend.cpp index b1791b3268..7e13047b61 100644 --- a/services/inputflinger/dispatcher/trace/ThreadedBackend.cpp +++ b/services/inputflinger/dispatcher/trace/ThreadedBackend.cpp @@ -54,25 +54,25 @@ ThreadedBackend<Backend>::~ThreadedBackend() { template <typename Backend> void ThreadedBackend<Backend>::traceMotionEvent(const TracedMotionEvent& event, - const TracedEventArgs& traceArgs) { + const TracedEventMetadata& metadata) { std::scoped_lock lock(mLock); - mQueue.emplace_back(event, traceArgs); + mQueue.emplace_back(event, metadata); mThreadWakeCondition.notify_all(); } template <typename Backend> void ThreadedBackend<Backend>::traceKeyEvent(const TracedKeyEvent& event, - const TracedEventArgs& traceArgs) { + const TracedEventMetadata& metadata) { std::scoped_lock lock(mLock); - mQueue.emplace_back(event, traceArgs); + mQueue.emplace_back(event, metadata); mThreadWakeCondition.notify_all(); } template <typename Backend> void ThreadedBackend<Backend>::traceWindowDispatch(const WindowDispatchArgs& dispatchArgs, - const TracedEventArgs& traceArgs) { + const TracedEventMetadata& metadata) { std::scoped_lock lock(mLock); - mQueue.emplace_back(dispatchArgs, traceArgs); + mQueue.emplace_back(dispatchArgs, metadata); mThreadWakeCondition.notify_all(); } diff --git a/services/inputflinger/dispatcher/trace/ThreadedBackend.h b/services/inputflinger/dispatcher/trace/ThreadedBackend.h index cab47af1c1..f4659a83a8 100644 --- a/services/inputflinger/dispatcher/trace/ThreadedBackend.h +++ b/services/inputflinger/dispatcher/trace/ThreadedBackend.h @@ -38,9 +38,9 @@ public: ThreadedBackend(Backend&& innerBackend); ~ThreadedBackend() override; - void traceKeyEvent(const TracedKeyEvent&, const TracedEventArgs&) override; - void traceMotionEvent(const TracedMotionEvent&, const TracedEventArgs&) override; - void traceWindowDispatch(const WindowDispatchArgs&, const TracedEventArgs&) override; + void traceKeyEvent(const TracedKeyEvent&, const TracedEventMetadata&) override; + void traceMotionEvent(const TracedMotionEvent&, const TracedEventMetadata&) override; + void traceWindowDispatch(const WindowDispatchArgs&, const TracedEventMetadata&) override; private: std::mutex mLock; @@ -50,7 +50,7 @@ private: Backend mBackend; using TraceEntry = std::pair<std::variant<TracedKeyEvent, TracedMotionEvent, WindowDispatchArgs>, - TracedEventArgs>; + TracedEventMetadata>; std::vector<TraceEntry> mQueue GUARDED_BY(mLock); void threadLoop(); diff --git a/services/inputflinger/tests/FakeInputTracingBackend.cpp b/services/inputflinger/tests/FakeInputTracingBackend.cpp index 069b50d051..b46055ed1c 100644 --- a/services/inputflinger/tests/FakeInputTracingBackend.cpp +++ b/services/inputflinger/tests/FakeInputTracingBackend.cpp @@ -162,7 +162,7 @@ base::Result<void> VerifyingTrace::verifyEventTraced(const Event& expectedEvent, // --- FakeInputTracingBackend --- void FakeInputTracingBackend::traceKeyEvent(const trace::TracedKeyEvent& event, - const trace::TracedEventArgs&) { + const trace::TracedEventMetadata&) { { std::scoped_lock lock(mTrace->mLock); mTrace->mTracedEvents.emplace(event.id, event); @@ -171,7 +171,7 @@ void FakeInputTracingBackend::traceKeyEvent(const trace::TracedKeyEvent& event, } void FakeInputTracingBackend::traceMotionEvent(const trace::TracedMotionEvent& event, - const trace::TracedEventArgs&) { + const trace::TracedEventMetadata&) { { std::scoped_lock lock(mTrace->mLock); mTrace->mTracedEvents.emplace(event.id, event); @@ -180,7 +180,7 @@ void FakeInputTracingBackend::traceMotionEvent(const trace::TracedMotionEvent& e } void FakeInputTracingBackend::traceWindowDispatch(const trace::WindowDispatchArgs& args, - const trace::TracedEventArgs&) { + const trace::TracedEventMetadata&) { { std::scoped_lock lock(mTrace->mLock); mTrace->mTracedWindowDispatches.push_back(args); diff --git a/services/inputflinger/tests/FakeInputTracingBackend.h b/services/inputflinger/tests/FakeInputTracingBackend.h index ab05d6b532..cd4b507384 100644 --- a/services/inputflinger/tests/FakeInputTracingBackend.h +++ b/services/inputflinger/tests/FakeInputTracingBackend.h @@ -82,11 +82,12 @@ public: private: std::shared_ptr<VerifyingTrace> mTrace; - void traceKeyEvent(const trace::TracedKeyEvent& entry, const trace::TracedEventArgs&) override; + void traceKeyEvent(const trace::TracedKeyEvent& entry, + const trace::TracedEventMetadata&) override; void traceMotionEvent(const trace::TracedMotionEvent& entry, - const trace::TracedEventArgs&) override; + const trace::TracedEventMetadata&) override; void traceWindowDispatch(const trace::WindowDispatchArgs& entry, - const trace::TracedEventArgs&) override; + const trace::TracedEventMetadata&) override; }; } // namespace android::inputdispatcher |