Revert "Revert "AndroidInputEvent: Migrate from TracePacket to W..."
Re-land "AndroidInputEvent: Migrate from TracePacket to WinscopeE..."
Reason for revert: Second attempt. Topic was split in the first
attempt, causing build failures.
Reverted changes: /q/submissionid:27769399-revert-27683745-migrate-input-trace-winscope-OTCESQVQHW
Bug: 332714237
Change-Id: Ia5b8ec30023462806bcc67421c8257e436c8e8c4
diff --git a/services/inputflinger/tests/InputTraceSession.cpp b/services/inputflinger/tests/InputTraceSession.cpp
index 32acb5f..a9d370a 100644
--- a/services/inputflinger/tests/InputTraceSession.cpp
+++ b/services/inputflinger/tests/InputTraceSession.cpp
@@ -20,6 +20,9 @@
#include <android-base/logging.h>
#include <gtest/gtest.h>
#include <input/PrintTools.h>
+#include <perfetto/trace/android/android_input_event.pbzero.h>
+#include <perfetto/trace/android/winscope_extensions.pbzero.h>
+#include <perfetto/trace/android/winscope_extensions_impl.pbzero.h>
#include <utility>
@@ -30,6 +33,8 @@
using perfetto::protos::pbzero::AndroidKeyEvent;
using perfetto::protos::pbzero::AndroidMotionEvent;
using perfetto::protos::pbzero::AndroidWindowInputDispatchEvent;
+using perfetto::protos::pbzero::WinscopeExtensions;
+using perfetto::protos::pbzero::WinscopeExtensionsImpl;
// These operator<< definitions must be in the global namespace for them to be accessible to the
// GTEST library. They cannot be in the anonymous namespace.
@@ -85,38 +90,45 @@
Trace::Decoder trace{rawTrace};
if (trace.has_packet()) {
- auto it = trace.packet();
- while (it) {
+ for (auto it = trace.packet(); it; it++) {
TracePacket::Decoder packet{it->as_bytes()};
- if (packet.has_android_input_event()) {
- AndroidInputEvent::Decoder event{packet.android_input_event()};
- if (event.has_dispatcher_motion_event()) {
- tracedMotions.emplace_back(event.dispatcher_motion_event(),
- /*redacted=*/false);
- }
- if (event.has_dispatcher_motion_event_redacted()) {
- tracedMotions.emplace_back(event.dispatcher_motion_event_redacted(),
- /*redacted=*/true);
- }
- if (event.has_dispatcher_key_event()) {
- tracedKeys.emplace_back(event.dispatcher_key_event(),
- /*redacted=*/false);
- }
- if (event.has_dispatcher_key_event_redacted()) {
- tracedKeys.emplace_back(event.dispatcher_key_event_redacted(),
- /*redacted=*/true);
- }
- if (event.has_dispatcher_window_dispatch_event()) {
- tracedWindowDispatches.emplace_back(event.dispatcher_window_dispatch_event(),
- /*redacted=*/false);
- }
- if (event.has_dispatcher_window_dispatch_event_redacted()) {
- tracedWindowDispatches
- .emplace_back(event.dispatcher_window_dispatch_event_redacted(),
- /*redacted=*/true);
- }
+ if (!packet.has_winscope_extensions()) {
+ continue;
}
- it++;
+
+ WinscopeExtensions::Decoder extensions{packet.winscope_extensions()};
+ const auto& field =
+ extensions.Get(WinscopeExtensionsImpl::kAndroidInputEventFieldNumber);
+ if (!field.valid()) {
+ continue;
+ }
+
+ AndroidInputEvent::Decoder event{field.as_bytes()};
+ if (event.has_dispatcher_motion_event()) {
+ tracedMotions.emplace_back(event.dispatcher_motion_event(),
+ /*redacted=*/false);
+ }
+ if (event.has_dispatcher_motion_event_redacted()) {
+ tracedMotions.emplace_back(event.dispatcher_motion_event_redacted(),
+ /*redacted=*/true);
+ }
+ if (event.has_dispatcher_key_event()) {
+ tracedKeys.emplace_back(event.dispatcher_key_event(),
+ /*redacted=*/false);
+ }
+ if (event.has_dispatcher_key_event_redacted()) {
+ tracedKeys.emplace_back(event.dispatcher_key_event_redacted(),
+ /*redacted=*/true);
+ }
+ if (event.has_dispatcher_window_dispatch_event()) {
+ tracedWindowDispatches.emplace_back(event.dispatcher_window_dispatch_event(),
+ /*redacted=*/false);
+ }
+ if (event.has_dispatcher_window_dispatch_event_redacted()) {
+ tracedWindowDispatches
+ .emplace_back(event.dispatcher_window_dispatch_event_redacted(),
+ /*redacted=*/true);
+ }
}
}
return std::tuple{std::move(tracedMotions), std::move(tracedKeys),