Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e60ff1b6 authored by Prabir Pradhan's avatar Prabir Pradhan Committed by Android (Google) Code Review
Browse files

Merge "AndroidInputEvent: Migrate from TracePacket to WinscopeExtenstions" into main

parents 6de2f11c ff517071
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -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: {
+11 −3
Original line number Diff line number Diff line
@@ -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();
+42 −30
Original line number Diff line number Diff line
@@ -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,11 +90,20 @@ 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 (!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);
@@ -116,8 +130,6 @@ auto decodeTrace(const std::string& rawTrace) {
                                      /*redacted=*/true);
            }
        }
            it++;
        }
    }
    return std::tuple{std::move(tracedMotions), std::move(tracedKeys),
                      std::move(tracedWindowDispatches)};
+0 −1
Original line number Diff line number Diff line
@@ -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>
+2 −0
Original line number Diff line number Diff line
@@ -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>