diff options
author | 2024-06-10 20:00:51 +0000 | |
---|---|---|
committer | 2024-06-10 20:00:55 +0000 | |
commit | 6ef947adb43edb61ae81e7a04b47ae100f3fde1f (patch) | |
tree | a5af1fa3b2a2f744503fdbb0738d7f61ba8fae08 | |
parent | 8779d083464f7d104fbb128c174ef7694aa26c4b (diff) |
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
5 files changed, 59 insertions, 35 deletions
diff --git a/services/inputflinger/dispatcher/Android.bp b/services/inputflinger/dispatcher/Android.bp index 29aa3c3066..1a0ec48525 100644 --- a/services/inputflinger/dispatcher/Android.bp +++ b/services/inputflinger/dispatcher/Android.bp @@ -56,7 +56,9 @@ filegroup { cc_defaults { name: "libinputdispatcher_defaults", - srcs: [":libinputdispatcher_sources"], + srcs: [ + ":libinputdispatcher_sources", + ], shared_libs: [ "libbase", "libbinder", @@ -78,6 +80,7 @@ cc_defaults { "libattestation", "libgui_window_info_static", "libperfetto_client_experimental", + "perfetto_winscope_extensions_zero", ], target: { android: { diff --git a/services/inputflinger/dispatcher/trace/InputTracingPerfettoBackend.cpp b/services/inputflinger/dispatcher/trace/InputTracingPerfettoBackend.cpp index 9b9633a1bd..3d30ad6c7b 100644 --- a/services/inputflinger/dispatcher/trace/InputTracingPerfettoBackend.cpp +++ b/services/inputflinger/dispatcher/trace/InputTracingPerfettoBackend.cpp @@ -23,6 +23,8 @@ #include <android-base/logging.h> #include <binder/IServiceManager.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 <private/android_filesystem_config.h> #include <utils/String16.h> @@ -229,7 +231,9 @@ void PerfettoBackend::traceMotionEvent(const TracedMotionEvent& event, } const bool isRedacted = traceLevel == TraceLevel::TRACE_LEVEL_REDACTED; auto tracePacket = ctx.NewTracePacket(); - auto* inputEvent = tracePacket->set_android_input_event(); + auto* winscopeExtensions = static_cast<perfetto::protos::pbzero::WinscopeExtensionsImpl*>( + tracePacket->set_winscope_extensions()); + auto* inputEvent = winscopeExtensions->set_android_input_event(); auto* dispatchMotion = isRedacted ? inputEvent->set_dispatcher_motion_event_redacted() : inputEvent->set_dispatcher_motion_event(); AndroidInputEventProtoConverter::toProtoMotionEvent(event, *dispatchMotion, isRedacted); @@ -253,7 +257,9 @@ void PerfettoBackend::traceKeyEvent(const TracedKeyEvent& event, } const bool isRedacted = traceLevel == TraceLevel::TRACE_LEVEL_REDACTED; auto tracePacket = ctx.NewTracePacket(); - auto* inputEvent = tracePacket->set_android_input_event(); + auto* winscopeExtensions = static_cast<perfetto::protos::pbzero::WinscopeExtensionsImpl*>( + tracePacket->set_winscope_extensions()); + auto* inputEvent = winscopeExtensions->set_android_input_event(); auto* dispatchKey = isRedacted ? inputEvent->set_dispatcher_key_event_redacted() : inputEvent->set_dispatcher_key_event(); AndroidInputEventProtoConverter::toProtoKeyEvent(event, *dispatchKey, isRedacted); @@ -277,7 +283,9 @@ void PerfettoBackend::traceWindowDispatch(const WindowDispatchArgs& dispatchArgs } const bool isRedacted = traceLevel == TraceLevel::TRACE_LEVEL_REDACTED; auto tracePacket = ctx.NewTracePacket(); - auto* inputEvent = tracePacket->set_android_input_event(); + auto* winscopeExtensions = static_cast<perfetto::protos::pbzero::WinscopeExtensionsImpl*>( + tracePacket->set_winscope_extensions()); + auto* inputEvent = winscopeExtensions->set_android_input_event(); auto* dispatchEvent = isRedacted ? inputEvent->set_dispatcher_window_dispatch_event_redacted() : inputEvent->set_dispatcher_window_dispatch_event(); diff --git a/services/inputflinger/tests/InputTraceSession.cpp b/services/inputflinger/tests/InputTraceSession.cpp index 32acb5f288..a9d370aedd 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::AndroidInputEventConfig; 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 @@ auto decodeTrace(const std::string& rawTrace) { 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; + } + + 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); } - it++; } } return std::tuple{std::move(tracedMotions), std::move(tracedKeys), diff --git a/services/inputflinger/tests/InputTraceSession.h b/services/inputflinger/tests/InputTraceSession.h index ed20bc8343..bda552165e 100644 --- a/services/inputflinger/tests/InputTraceSession.h +++ b/services/inputflinger/tests/InputTraceSession.h @@ -22,7 +22,6 @@ #include <gtest/gtest.h> #include <input/Input.h> #include <perfetto/config/android/android_input_event_config.pbzero.h> -#include <perfetto/trace/android/android_input_event.pbzero.h> #include <perfetto/trace/trace.pbzero.h> #include <perfetto/tracing.h> #include <variant> diff --git a/services/inputflinger/tests/InputTracingTest.cpp b/services/inputflinger/tests/InputTracingTest.cpp index 617d67f34d..2ccd93ec4c 100644 --- a/services/inputflinger/tests/InputTracingTest.cpp +++ b/services/inputflinger/tests/InputTracingTest.cpp @@ -30,6 +30,8 @@ #include <gtest/gtest.h> #include <input/Input.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 <perfetto/trace/trace.pbzero.h> #include <private/android_filesystem_config.h> #include <map> |