Merge "Fix warning in implicit_segment_forest.h" into main
diff --git a/Android.bp b/Android.bp
index 94b84ff..a89a939 100644
--- a/Android.bp
+++ b/Android.bp
@@ -63,6 +63,8 @@
         ":perfetto_protos_perfetto_ipc_cpp_gen",
         ":perfetto_protos_perfetto_ipc_ipc_gen",
         ":perfetto_protos_perfetto_ipc_wire_protocol_cpp_gen",
+        ":perfetto_protos_perfetto_trace_android_winscope_common_zero_gen",
+        ":perfetto_protos_perfetto_trace_android_winscope_regular_zero_gen",
         ":perfetto_protos_perfetto_trace_android_zero_gen",
         ":perfetto_protos_perfetto_trace_chrome_zero_gen",
         ":perfetto_protos_perfetto_trace_etw_zero_gen",
@@ -150,6 +152,8 @@
         "perfetto_protos_perfetto_ipc_cpp_gen_headers",
         "perfetto_protos_perfetto_ipc_ipc_gen_headers",
         "perfetto_protos_perfetto_ipc_wire_protocol_cpp_gen_headers",
+        "perfetto_protos_perfetto_trace_android_winscope_common_zero_gen_headers",
+        "perfetto_protos_perfetto_trace_android_winscope_regular_zero_gen_headers",
         "perfetto_protos_perfetto_trace_android_zero_gen_headers",
         "perfetto_protos_perfetto_trace_chrome_zero_gen_headers",
         "perfetto_protos_perfetto_trace_etw_zero_gen_headers",
@@ -331,6 +335,8 @@
         ":perfetto_protos_perfetto_ipc_cpp_gen",
         ":perfetto_protos_perfetto_ipc_ipc_gen",
         ":perfetto_protos_perfetto_ipc_wire_protocol_cpp_gen",
+        ":perfetto_protos_perfetto_trace_android_winscope_common_zero_gen",
+        ":perfetto_protos_perfetto_trace_android_winscope_regular_zero_gen",
         ":perfetto_protos_perfetto_trace_android_zero_gen",
         ":perfetto_protos_perfetto_trace_chrome_zero_gen",
         ":perfetto_protos_perfetto_trace_etw_zero_gen",
@@ -427,6 +433,8 @@
         "perfetto_protos_perfetto_ipc_cpp_gen_headers",
         "perfetto_protos_perfetto_ipc_ipc_gen_headers",
         "perfetto_protos_perfetto_ipc_wire_protocol_cpp_gen_headers",
+        "perfetto_protos_perfetto_trace_android_winscope_common_zero_gen_headers",
+        "perfetto_protos_perfetto_trace_android_winscope_regular_zero_gen_headers",
         "perfetto_protos_perfetto_trace_android_zero_gen_headers",
         "perfetto_protos_perfetto_trace_chrome_zero_gen_headers",
         "perfetto_protos_perfetto_trace_etw_zero_gen_headers",
@@ -537,6 +545,8 @@
         ":perfetto_protos_perfetto_ipc_cpp_gen",
         ":perfetto_protos_perfetto_ipc_ipc_gen",
         ":perfetto_protos_perfetto_ipc_wire_protocol_cpp_gen",
+        ":perfetto_protos_perfetto_trace_android_winscope_common_zero_gen",
+        ":perfetto_protos_perfetto_trace_android_winscope_regular_zero_gen",
         ":perfetto_protos_perfetto_trace_android_zero_gen",
         ":perfetto_protos_perfetto_trace_chrome_zero_gen",
         ":perfetto_protos_perfetto_trace_etw_zero_gen",
@@ -643,6 +653,8 @@
         "perfetto_protos_perfetto_ipc_cpp_gen_headers",
         "perfetto_protos_perfetto_ipc_ipc_gen_headers",
         "perfetto_protos_perfetto_ipc_wire_protocol_cpp_gen_headers",
+        "perfetto_protos_perfetto_trace_android_winscope_common_zero_gen_headers",
+        "perfetto_protos_perfetto_trace_android_winscope_regular_zero_gen_headers",
         "perfetto_protos_perfetto_trace_android_zero_gen_headers",
         "perfetto_protos_perfetto_trace_chrome_zero_gen_headers",
         "perfetto_protos_perfetto_trace_etw_zero_gen_headers",
@@ -781,6 +793,8 @@
         ":perfetto_protos_perfetto_ipc_cpp_gen",
         ":perfetto_protos_perfetto_ipc_ipc_gen",
         ":perfetto_protos_perfetto_ipc_wire_protocol_cpp_gen",
+        ":perfetto_protos_perfetto_trace_android_winscope_common_zero_gen",
+        ":perfetto_protos_perfetto_trace_android_winscope_regular_zero_gen",
         ":perfetto_protos_perfetto_trace_android_zero_gen",
         ":perfetto_protos_perfetto_trace_chrome_zero_gen",
         ":perfetto_protos_perfetto_trace_etw_zero_gen",
@@ -866,6 +880,8 @@
         "perfetto_protos_perfetto_ipc_cpp_gen_headers",
         "perfetto_protos_perfetto_ipc_ipc_gen_headers",
         "perfetto_protos_perfetto_ipc_wire_protocol_cpp_gen_headers",
+        "perfetto_protos_perfetto_trace_android_winscope_common_zero_gen_headers",
+        "perfetto_protos_perfetto_trace_android_winscope_regular_zero_gen_headers",
         "perfetto_protos_perfetto_trace_android_zero_gen_headers",
         "perfetto_protos_perfetto_trace_chrome_zero_gen_headers",
         "perfetto_protos_perfetto_trace_etw_zero_gen_headers",
@@ -952,6 +968,8 @@
         ":perfetto_protos_perfetto_ipc_cpp_gen",
         ":perfetto_protos_perfetto_ipc_ipc_gen",
         ":perfetto_protos_perfetto_ipc_wire_protocol_cpp_gen",
+        ":perfetto_protos_perfetto_trace_android_winscope_common_zero_gen",
+        ":perfetto_protos_perfetto_trace_android_winscope_regular_zero_gen",
         ":perfetto_protos_perfetto_trace_android_zero_gen",
         ":perfetto_protos_perfetto_trace_chrome_zero_gen",
         ":perfetto_protos_perfetto_trace_etw_zero_gen",
@@ -1041,6 +1059,8 @@
         "perfetto_protos_perfetto_ipc_cpp_gen_headers",
         "perfetto_protos_perfetto_ipc_ipc_gen_headers",
         "perfetto_protos_perfetto_ipc_wire_protocol_cpp_gen_headers",
+        "perfetto_protos_perfetto_trace_android_winscope_common_zero_gen_headers",
+        "perfetto_protos_perfetto_trace_android_winscope_regular_zero_gen_headers",
         "perfetto_protos_perfetto_trace_android_zero_gen_headers",
         "perfetto_protos_perfetto_trace_chrome_zero_gen_headers",
         "perfetto_protos_perfetto_trace_etw_zero_gen_headers",
@@ -1094,6 +1114,8 @@
         "perfetto_protos_perfetto_ipc_cpp_gen_headers",
         "perfetto_protos_perfetto_ipc_ipc_gen_headers",
         "perfetto_protos_perfetto_ipc_wire_protocol_cpp_gen_headers",
+        "perfetto_protos_perfetto_trace_android_winscope_common_zero_gen_headers",
+        "perfetto_protos_perfetto_trace_android_winscope_regular_zero_gen_headers",
         "perfetto_protos_perfetto_trace_android_zero_gen_headers",
         "perfetto_protos_perfetto_trace_chrome_zero_gen_headers",
         "perfetto_protos_perfetto_trace_etw_zero_gen_headers",
@@ -1175,6 +1197,8 @@
         ":perfetto_protos_perfetto_ipc_cpp_gen",
         ":perfetto_protos_perfetto_ipc_ipc_gen",
         ":perfetto_protos_perfetto_ipc_wire_protocol_cpp_gen",
+        ":perfetto_protos_perfetto_trace_android_winscope_common_zero_gen",
+        ":perfetto_protos_perfetto_trace_android_winscope_regular_zero_gen",
         ":perfetto_protos_perfetto_trace_android_zero_gen",
         ":perfetto_protos_perfetto_trace_chrome_zero_gen",
         ":perfetto_protos_perfetto_trace_etw_zero_gen",
@@ -1252,6 +1276,8 @@
         "perfetto_protos_perfetto_ipc_cpp_gen_headers",
         "perfetto_protos_perfetto_ipc_ipc_gen_headers",
         "perfetto_protos_perfetto_ipc_wire_protocol_cpp_gen_headers",
+        "perfetto_protos_perfetto_trace_android_winscope_common_zero_gen_headers",
+        "perfetto_protos_perfetto_trace_android_winscope_regular_zero_gen_headers",
         "perfetto_protos_perfetto_trace_android_zero_gen_headers",
         "perfetto_protos_perfetto_trace_chrome_zero_gen_headers",
         "perfetto_protos_perfetto_trace_etw_zero_gen_headers",
@@ -1408,6 +1434,10 @@
         ":perfetto_protos_perfetto_ipc_ipc_gen",
         ":perfetto_protos_perfetto_ipc_wire_protocol_cpp_gen",
         ":perfetto_protos_perfetto_trace_android_cpp_gen",
+        ":perfetto_protos_perfetto_trace_android_winscope_common_cpp_gen",
+        ":perfetto_protos_perfetto_trace_android_winscope_common_zero_gen",
+        ":perfetto_protos_perfetto_trace_android_winscope_regular_cpp_gen",
+        ":perfetto_protos_perfetto_trace_android_winscope_regular_zero_gen",
         ":perfetto_protos_perfetto_trace_android_zero_gen",
         ":perfetto_protos_perfetto_trace_chrome_cpp_gen",
         ":perfetto_protos_perfetto_trace_chrome_zero_gen",
@@ -1540,6 +1570,10 @@
         "perfetto_protos_perfetto_ipc_ipc_gen_headers",
         "perfetto_protos_perfetto_ipc_wire_protocol_cpp_gen_headers",
         "perfetto_protos_perfetto_trace_android_cpp_gen_headers",
+        "perfetto_protos_perfetto_trace_android_winscope_common_cpp_gen_headers",
+        "perfetto_protos_perfetto_trace_android_winscope_common_zero_gen_headers",
+        "perfetto_protos_perfetto_trace_android_winscope_regular_cpp_gen_headers",
+        "perfetto_protos_perfetto_trace_android_winscope_regular_zero_gen_headers",
         "perfetto_protos_perfetto_trace_android_zero_gen_headers",
         "perfetto_protos_perfetto_trace_chrome_cpp_gen_headers",
         "perfetto_protos_perfetto_trace_chrome_zero_gen_headers",
@@ -1611,6 +1645,10 @@
         "perfetto_protos_perfetto_ipc_ipc_gen_headers",
         "perfetto_protos_perfetto_ipc_wire_protocol_cpp_gen_headers",
         "perfetto_protos_perfetto_trace_android_cpp_gen_headers",
+        "perfetto_protos_perfetto_trace_android_winscope_common_cpp_gen_headers",
+        "perfetto_protos_perfetto_trace_android_winscope_common_zero_gen_headers",
+        "perfetto_protos_perfetto_trace_android_winscope_regular_cpp_gen_headers",
+        "perfetto_protos_perfetto_trace_android_winscope_regular_zero_gen_headers",
         "perfetto_protos_perfetto_trace_android_zero_gen_headers",
         "perfetto_protos_perfetto_trace_chrome_cpp_gen_headers",
         "perfetto_protos_perfetto_trace_chrome_zero_gen_headers",
@@ -1707,6 +1745,10 @@
         ":perfetto_protos_perfetto_ipc_ipc_gen",
         ":perfetto_protos_perfetto_ipc_wire_protocol_cpp_gen",
         ":perfetto_protos_perfetto_trace_android_cpp_gen",
+        ":perfetto_protos_perfetto_trace_android_winscope_common_cpp_gen",
+        ":perfetto_protos_perfetto_trace_android_winscope_common_zero_gen",
+        ":perfetto_protos_perfetto_trace_android_winscope_regular_cpp_gen",
+        ":perfetto_protos_perfetto_trace_android_winscope_regular_zero_gen",
         ":perfetto_protos_perfetto_trace_android_zero_gen",
         ":perfetto_protos_perfetto_trace_chrome_cpp_gen",
         ":perfetto_protos_perfetto_trace_chrome_zero_gen",
@@ -1832,6 +1874,10 @@
         "perfetto_protos_perfetto_ipc_ipc_gen_headers",
         "perfetto_protos_perfetto_ipc_wire_protocol_cpp_gen_headers",
         "perfetto_protos_perfetto_trace_android_cpp_gen_headers",
+        "perfetto_protos_perfetto_trace_android_winscope_common_cpp_gen_headers",
+        "perfetto_protos_perfetto_trace_android_winscope_common_zero_gen_headers",
+        "perfetto_protos_perfetto_trace_android_winscope_regular_cpp_gen_headers",
+        "perfetto_protos_perfetto_trace_android_winscope_regular_zero_gen_headers",
         "perfetto_protos_perfetto_trace_android_zero_gen_headers",
         "perfetto_protos_perfetto_trace_chrome_cpp_gen_headers",
         "perfetto_protos_perfetto_trace_chrome_zero_gen_headers",
@@ -1903,6 +1949,10 @@
         "perfetto_protos_perfetto_ipc_ipc_gen_headers",
         "perfetto_protos_perfetto_ipc_wire_protocol_cpp_gen_headers",
         "perfetto_protos_perfetto_trace_android_cpp_gen_headers",
+        "perfetto_protos_perfetto_trace_android_winscope_common_cpp_gen_headers",
+        "perfetto_protos_perfetto_trace_android_winscope_common_zero_gen_headers",
+        "perfetto_protos_perfetto_trace_android_winscope_regular_cpp_gen_headers",
+        "perfetto_protos_perfetto_trace_android_winscope_regular_zero_gen_headers",
         "perfetto_protos_perfetto_trace_android_zero_gen_headers",
         "perfetto_protos_perfetto_trace_chrome_cpp_gen_headers",
         "perfetto_protos_perfetto_trace_chrome_zero_gen_headers",
@@ -2238,6 +2288,13 @@
         ":perfetto_protos_perfetto_ipc_wire_protocol_cpp_gen",
         ":perfetto_protos_perfetto_trace_android_cpp_gen",
         ":perfetto_protos_perfetto_trace_android_lite_gen",
+        ":perfetto_protos_perfetto_trace_android_winscope_common_cpp_gen",
+        ":perfetto_protos_perfetto_trace_android_winscope_common_lite_gen",
+        ":perfetto_protos_perfetto_trace_android_winscope_common_zero_gen",
+        ":perfetto_protos_perfetto_trace_android_winscope_extensions_zero_gen",
+        ":perfetto_protos_perfetto_trace_android_winscope_regular_cpp_gen",
+        ":perfetto_protos_perfetto_trace_android_winscope_regular_lite_gen",
+        ":perfetto_protos_perfetto_trace_android_winscope_regular_zero_gen",
         ":perfetto_protos_perfetto_trace_android_zero_gen",
         ":perfetto_protos_perfetto_trace_chrome_cpp_gen",
         ":perfetto_protos_perfetto_trace_chrome_lite_gen",
@@ -2515,6 +2572,13 @@
         "perfetto_protos_perfetto_ipc_wire_protocol_cpp_gen_headers",
         "perfetto_protos_perfetto_trace_android_cpp_gen_headers",
         "perfetto_protos_perfetto_trace_android_lite_gen_headers",
+        "perfetto_protos_perfetto_trace_android_winscope_common_cpp_gen_headers",
+        "perfetto_protos_perfetto_trace_android_winscope_common_lite_gen_headers",
+        "perfetto_protos_perfetto_trace_android_winscope_common_zero_gen_headers",
+        "perfetto_protos_perfetto_trace_android_winscope_extensions_zero_gen_headers",
+        "perfetto_protos_perfetto_trace_android_winscope_regular_cpp_gen_headers",
+        "perfetto_protos_perfetto_trace_android_winscope_regular_lite_gen_headers",
+        "perfetto_protos_perfetto_trace_android_winscope_regular_zero_gen_headers",
         "perfetto_protos_perfetto_trace_android_zero_gen_headers",
         "perfetto_protos_perfetto_trace_chrome_cpp_gen_headers",
         "perfetto_protos_perfetto_trace_chrome_lite_gen_headers",
@@ -5411,11 +5475,6 @@
         "protos/perfetto/trace/android/network_trace.proto",
         "protos/perfetto/trace/android/packages_list.proto",
         "protos/perfetto/trace/android/pixel_modem_events.proto",
-        "protos/perfetto/trace/android/protolog.proto",
-        "protos/perfetto/trace/android/shell_transition.proto",
-        "protos/perfetto/trace/android/surfaceflinger_common.proto",
-        "protos/perfetto/trace/android/surfaceflinger_layers.proto",
-        "protos/perfetto/trace/android/surfaceflinger_transactions.proto",
     ],
 }
 
@@ -5425,6 +5484,8 @@
     srcs: [
         ":perfetto_protos_perfetto_common_cpp",
         ":perfetto_protos_perfetto_trace_android_cpp",
+        ":perfetto_protos_perfetto_trace_android_winscope_common_cpp",
+        ":perfetto_protos_perfetto_trace_android_winscope_regular_cpp",
     ],
     tools: [
         "aprotoc",
@@ -5444,11 +5505,6 @@
         "external/perfetto/protos/perfetto/trace/android/network_trace.gen.cc",
         "external/perfetto/protos/perfetto/trace/android/packages_list.gen.cc",
         "external/perfetto/protos/perfetto/trace/android/pixel_modem_events.gen.cc",
-        "external/perfetto/protos/perfetto/trace/android/protolog.gen.cc",
-        "external/perfetto/protos/perfetto/trace/android/shell_transition.gen.cc",
-        "external/perfetto/protos/perfetto/trace/android/surfaceflinger_common.gen.cc",
-        "external/perfetto/protos/perfetto/trace/android/surfaceflinger_layers.gen.cc",
-        "external/perfetto/protos/perfetto/trace/android/surfaceflinger_transactions.gen.cc",
     ],
 }
 
@@ -5458,6 +5514,8 @@
     srcs: [
         ":perfetto_protos_perfetto_common_cpp",
         ":perfetto_protos_perfetto_trace_android_cpp",
+        ":perfetto_protos_perfetto_trace_android_winscope_common_cpp",
+        ":perfetto_protos_perfetto_trace_android_winscope_regular_cpp",
     ],
     tools: [
         "aprotoc",
@@ -5477,11 +5535,6 @@
         "external/perfetto/protos/perfetto/trace/android/network_trace.gen.h",
         "external/perfetto/protos/perfetto/trace/android/packages_list.gen.h",
         "external/perfetto/protos/perfetto/trace/android/pixel_modem_events.gen.h",
-        "external/perfetto/protos/perfetto/trace/android/protolog.gen.h",
-        "external/perfetto/protos/perfetto/trace/android/shell_transition.gen.h",
-        "external/perfetto/protos/perfetto/trace/android/surfaceflinger_common.gen.h",
-        "external/perfetto/protos/perfetto/trace/android/surfaceflinger_layers.gen.h",
-        "external/perfetto/protos/perfetto/trace/android/surfaceflinger_transactions.gen.h",
     ],
     export_include_dirs: [
         ".",
@@ -5505,11 +5558,6 @@
         "protos/perfetto/trace/android/network_trace.proto",
         "protos/perfetto/trace/android/packages_list.proto",
         "protos/perfetto/trace/android/pixel_modem_events.proto",
-        "protos/perfetto/trace/android/protolog.proto",
-        "protos/perfetto/trace/android/shell_transition.proto",
-        "protos/perfetto/trace/android/surfaceflinger_common.proto",
-        "protos/perfetto/trace/android/surfaceflinger_layers.proto",
-        "protos/perfetto/trace/android/surfaceflinger_transactions.proto",
     ],
 }
 
@@ -5519,6 +5567,8 @@
     srcs: [
         ":perfetto_protos_perfetto_common_lite",
         ":perfetto_protos_perfetto_trace_android_lite",
+        ":perfetto_protos_perfetto_trace_android_winscope_common_lite",
+        ":perfetto_protos_perfetto_trace_android_winscope_regular_lite",
     ],
     tools: [
         "aprotoc",
@@ -5537,11 +5587,6 @@
         "external/perfetto/protos/perfetto/trace/android/network_trace.pb.cc",
         "external/perfetto/protos/perfetto/trace/android/packages_list.pb.cc",
         "external/perfetto/protos/perfetto/trace/android/pixel_modem_events.pb.cc",
-        "external/perfetto/protos/perfetto/trace/android/protolog.pb.cc",
-        "external/perfetto/protos/perfetto/trace/android/shell_transition.pb.cc",
-        "external/perfetto/protos/perfetto/trace/android/surfaceflinger_common.pb.cc",
-        "external/perfetto/protos/perfetto/trace/android/surfaceflinger_layers.pb.cc",
-        "external/perfetto/protos/perfetto/trace/android/surfaceflinger_transactions.pb.cc",
     ],
 }
 
@@ -5551,6 +5596,8 @@
     srcs: [
         ":perfetto_protos_perfetto_common_lite",
         ":perfetto_protos_perfetto_trace_android_lite",
+        ":perfetto_protos_perfetto_trace_android_winscope_common_lite",
+        ":perfetto_protos_perfetto_trace_android_winscope_regular_lite",
     ],
     tools: [
         "aprotoc",
@@ -5569,11 +5616,154 @@
         "external/perfetto/protos/perfetto/trace/android/network_trace.pb.h",
         "external/perfetto/protos/perfetto/trace/android/packages_list.pb.h",
         "external/perfetto/protos/perfetto/trace/android/pixel_modem_events.pb.h",
-        "external/perfetto/protos/perfetto/trace/android/protolog.pb.h",
-        "external/perfetto/protos/perfetto/trace/android/shell_transition.pb.h",
-        "external/perfetto/protos/perfetto/trace/android/surfaceflinger_common.pb.h",
-        "external/perfetto/protos/perfetto/trace/android/surfaceflinger_layers.pb.h",
-        "external/perfetto/protos/perfetto/trace/android/surfaceflinger_transactions.pb.h",
+    ],
+    export_include_dirs: [
+        ".",
+        "protos",
+    ],
+}
+
+// GN: //protos/perfetto/trace/android:winscope_common:cpp
+filegroup {
+    name: "perfetto_protos_perfetto_trace_android_winscope_common_cpp",
+    srcs: [
+        "protos/perfetto/trace/android/graphics/point.proto",
+        "protos/perfetto/trace/android/graphics/rect.proto",
+        "protos/perfetto/trace/android/winscope_extensions.proto",
+    ],
+}
+
+// GN: //protos/perfetto/trace/android:winscope_common:cpp
+genrule {
+    name: "perfetto_protos_perfetto_trace_android_winscope_common_cpp_gen",
+    srcs: [
+        ":perfetto_protos_perfetto_trace_android_winscope_common_cpp",
+    ],
+    tools: [
+        "aprotoc",
+        "perfetto_src_protozero_protoc_plugin_cppgen_plugin",
+    ],
+    cmd: "mkdir -p $(genDir)/external/perfetto/ && $(location aprotoc) --proto_path=external/perfetto --plugin=protoc-gen-plugin=$(location perfetto_src_protozero_protoc_plugin_cppgen_plugin) --plugin_out=wrapper_namespace=gen:$(genDir)/external/perfetto/ $(locations :perfetto_protos_perfetto_trace_android_winscope_common_cpp)",
+    out: [
+        "external/perfetto/protos/perfetto/trace/android/graphics/point.gen.cc",
+        "external/perfetto/protos/perfetto/trace/android/graphics/rect.gen.cc",
+        "external/perfetto/protos/perfetto/trace/android/winscope_extensions.gen.cc",
+    ],
+}
+
+// GN: //protos/perfetto/trace/android:winscope_common:cpp
+genrule {
+    name: "perfetto_protos_perfetto_trace_android_winscope_common_cpp_gen_headers",
+    srcs: [
+        ":perfetto_protos_perfetto_trace_android_winscope_common_cpp",
+    ],
+    tools: [
+        "aprotoc",
+        "perfetto_src_protozero_protoc_plugin_cppgen_plugin",
+    ],
+    cmd: "mkdir -p $(genDir)/external/perfetto/ && $(location aprotoc) --proto_path=external/perfetto --plugin=protoc-gen-plugin=$(location perfetto_src_protozero_protoc_plugin_cppgen_plugin) --plugin_out=wrapper_namespace=gen:$(genDir)/external/perfetto/ $(locations :perfetto_protos_perfetto_trace_android_winscope_common_cpp)",
+    out: [
+        "external/perfetto/protos/perfetto/trace/android/graphics/point.gen.h",
+        "external/perfetto/protos/perfetto/trace/android/graphics/rect.gen.h",
+        "external/perfetto/protos/perfetto/trace/android/winscope_extensions.gen.h",
+    ],
+    export_include_dirs: [
+        ".",
+        "protos",
+    ],
+}
+
+// GN: //protos/perfetto/trace/android:winscope_common:lite
+filegroup {
+    name: "perfetto_protos_perfetto_trace_android_winscope_common_lite",
+    srcs: [
+        "protos/perfetto/trace/android/graphics/point.proto",
+        "protos/perfetto/trace/android/graphics/rect.proto",
+        "protos/perfetto/trace/android/winscope_extensions.proto",
+    ],
+}
+
+// GN: //protos/perfetto/trace/android:winscope_common:lite
+genrule {
+    name: "perfetto_protos_perfetto_trace_android_winscope_common_lite_gen",
+    srcs: [
+        ":perfetto_protos_perfetto_trace_android_winscope_common_lite",
+    ],
+    tools: [
+        "aprotoc",
+    ],
+    cmd: "mkdir -p $(genDir)/external/perfetto/ && $(location aprotoc) --proto_path=external/perfetto --cpp_out=lite=true:$(genDir)/external/perfetto/ $(locations :perfetto_protos_perfetto_trace_android_winscope_common_lite)",
+    out: [
+        "external/perfetto/protos/perfetto/trace/android/graphics/point.pb.cc",
+        "external/perfetto/protos/perfetto/trace/android/graphics/rect.pb.cc",
+        "external/perfetto/protos/perfetto/trace/android/winscope_extensions.pb.cc",
+    ],
+}
+
+// GN: //protos/perfetto/trace/android:winscope_common:lite
+genrule {
+    name: "perfetto_protos_perfetto_trace_android_winscope_common_lite_gen_headers",
+    srcs: [
+        ":perfetto_protos_perfetto_trace_android_winscope_common_lite",
+    ],
+    tools: [
+        "aprotoc",
+    ],
+    cmd: "mkdir -p $(genDir)/external/perfetto/ && $(location aprotoc) --proto_path=external/perfetto --cpp_out=lite=true:$(genDir)/external/perfetto/ $(locations :perfetto_protos_perfetto_trace_android_winscope_common_lite)",
+    out: [
+        "external/perfetto/protos/perfetto/trace/android/graphics/point.pb.h",
+        "external/perfetto/protos/perfetto/trace/android/graphics/rect.pb.h",
+        "external/perfetto/protos/perfetto/trace/android/winscope_extensions.pb.h",
+    ],
+    export_include_dirs: [
+        ".",
+        "protos",
+    ],
+}
+
+// GN: //protos/perfetto/trace/android:winscope_common:zero
+filegroup {
+    name: "perfetto_protos_perfetto_trace_android_winscope_common_zero",
+    srcs: [
+        "protos/perfetto/trace/android/graphics/point.proto",
+        "protos/perfetto/trace/android/graphics/rect.proto",
+        "protos/perfetto/trace/android/winscope_extensions.proto",
+    ],
+}
+
+// GN: //protos/perfetto/trace/android:winscope_common:zero
+genrule {
+    name: "perfetto_protos_perfetto_trace_android_winscope_common_zero_gen",
+    srcs: [
+        ":perfetto_protos_perfetto_trace_android_winscope_common_zero",
+    ],
+    tools: [
+        "aprotoc",
+        "protozero_plugin",
+    ],
+    cmd: "mkdir -p $(genDir)/external/perfetto/ && $(location aprotoc) --proto_path=external/perfetto --plugin=protoc-gen-plugin=$(location protozero_plugin) --plugin_out=wrapper_namespace=pbzero:$(genDir)/external/perfetto/ $(locations :perfetto_protos_perfetto_trace_android_winscope_common_zero)",
+    out: [
+        "external/perfetto/protos/perfetto/trace/android/graphics/point.pbzero.cc",
+        "external/perfetto/protos/perfetto/trace/android/graphics/rect.pbzero.cc",
+        "external/perfetto/protos/perfetto/trace/android/winscope_extensions.pbzero.cc",
+    ],
+}
+
+// GN: //protos/perfetto/trace/android:winscope_common:zero
+genrule {
+    name: "perfetto_protos_perfetto_trace_android_winscope_common_zero_gen_headers",
+    srcs: [
+        ":perfetto_protos_perfetto_trace_android_winscope_common_zero",
+    ],
+    tools: [
+        "aprotoc",
+        "protozero_plugin",
+    ],
+    cmd: "mkdir -p $(genDir)/external/perfetto/ && $(location aprotoc) --proto_path=external/perfetto --plugin=protoc-gen-plugin=$(location protozero_plugin) --plugin_out=wrapper_namespace=pbzero:$(genDir)/external/perfetto/ $(locations :perfetto_protos_perfetto_trace_android_winscope_common_zero)",
+    out: [
+        "external/perfetto/protos/perfetto/trace/android/graphics/point.pbzero.h",
+        "external/perfetto/protos/perfetto/trace/android/graphics/rect.pbzero.h",
+        "external/perfetto/protos/perfetto/trace/android/winscope_extensions.pbzero.h",
     ],
     export_include_dirs: [
         ".",
@@ -5585,6 +5775,7 @@
 genrule {
     name: "perfetto_protos_perfetto_trace_android_winscope_descriptor",
     srcs: [
+        ":libprotobuf-internal-descriptor-proto",
         "protos/perfetto/common/android_energy_consumer_descriptor.proto",
         "protos/perfetto/common/android_log_constants.proto",
         "protos/perfetto/common/builtin_clock.proto",
@@ -5602,19 +5793,337 @@
         "protos/perfetto/common/tracing_service_capabilities.proto",
         "protos/perfetto/common/tracing_service_state.proto",
         "protos/perfetto/common/track_event_descriptor.proto",
+        "protos/perfetto/trace/android/graphics/pixelformat.proto",
+        "protos/perfetto/trace/android/graphics/point.proto",
+        "protos/perfetto/trace/android/graphics/rect.proto",
+        "protos/perfetto/trace/android/inputmethodeditor.proto",
+        "protos/perfetto/trace/android/inputmethodservice/inputmethodservice.proto",
+        "protos/perfetto/trace/android/inputmethodservice/softinputwindow.proto",
+        "protos/perfetto/trace/android/protolog.proto",
+        "protos/perfetto/trace/android/server/inputmethod/inputmethodmanagerservice.proto",
+        "protos/perfetto/trace/android/shell_transition.proto",
+        "protos/perfetto/trace/android/surfaceflinger_common.proto",
+        "protos/perfetto/trace/android/surfaceflinger_layers.proto",
+        "protos/perfetto/trace/android/surfaceflinger_transactions.proto",
+        "protos/perfetto/trace/android/typedef.proto",
+        "protos/perfetto/trace/android/view/display.proto",
+        "protos/perfetto/trace/android/view/displaycutout.proto",
+        "protos/perfetto/trace/android/view/imefocuscontroller.proto",
+        "protos/perfetto/trace/android/view/imeinsetssourceconsumer.proto",
+        "protos/perfetto/trace/android/view/inputmethod/editorinfo.proto",
+        "protos/perfetto/trace/android/view/inputmethod/inputconnection.proto",
+        "protos/perfetto/trace/android/view/inputmethod/inputmethodmanager.proto",
+        "protos/perfetto/trace/android/view/insetsanimationcontrolimpl.proto",
+        "protos/perfetto/trace/android/view/insetscontroller.proto",
+        "protos/perfetto/trace/android/view/insetssource.proto",
+        "protos/perfetto/trace/android/view/insetssourceconsumer.proto",
+        "protos/perfetto/trace/android/view/insetssourcecontrol.proto",
+        "protos/perfetto/trace/android/view/insetsstate.proto",
+        "protos/perfetto/trace/android/view/surfacecontrol.proto",
+        "protos/perfetto/trace/android/view/viewrootimpl.proto",
+        "protos/perfetto/trace/android/view/windowlayoutparams.proto",
+        "protos/perfetto/trace/android/winscope.proto",
+        "protos/perfetto/trace/android/winscope_extensions.proto",
+        "protos/perfetto/trace/android/winscope_extensions_impl.proto",
+    ],
+    tools: [
+        "aprotoc",
+    ],
+    cmd: "mkdir -p $(genDir)/external/perfetto/ && $(location aprotoc) --proto_path=external/perfetto --proto_path=external/protobuf/src --descriptor_set_out=$(out) $(in)",
+    out: [
+        "perfetto_protos_perfetto_trace_android_winscope_descriptor.bin",
+    ],
+}
+
+// GN: //protos/perfetto/trace/android:winscope_extensions:zero
+filegroup {
+    name: "perfetto_protos_perfetto_trace_android_winscope_extensions_zero",
+    srcs: [
+        "protos/perfetto/trace/android/graphics/pixelformat.proto",
+        "protos/perfetto/trace/android/inputmethodeditor.proto",
+        "protos/perfetto/trace/android/inputmethodservice/inputmethodservice.proto",
+        "protos/perfetto/trace/android/inputmethodservice/softinputwindow.proto",
+        "protos/perfetto/trace/android/server/inputmethod/inputmethodmanagerservice.proto",
+        "protos/perfetto/trace/android/typedef.proto",
+        "protos/perfetto/trace/android/view/display.proto",
+        "protos/perfetto/trace/android/view/displaycutout.proto",
+        "protos/perfetto/trace/android/view/imefocuscontroller.proto",
+        "protos/perfetto/trace/android/view/imeinsetssourceconsumer.proto",
+        "protos/perfetto/trace/android/view/inputmethod/editorinfo.proto",
+        "protos/perfetto/trace/android/view/inputmethod/inputconnection.proto",
+        "protos/perfetto/trace/android/view/inputmethod/inputmethodmanager.proto",
+        "protos/perfetto/trace/android/view/insetsanimationcontrolimpl.proto",
+        "protos/perfetto/trace/android/view/insetscontroller.proto",
+        "protos/perfetto/trace/android/view/insetssource.proto",
+        "protos/perfetto/trace/android/view/insetssourceconsumer.proto",
+        "protos/perfetto/trace/android/view/insetssourcecontrol.proto",
+        "protos/perfetto/trace/android/view/insetsstate.proto",
+        "protos/perfetto/trace/android/view/surfacecontrol.proto",
+        "protos/perfetto/trace/android/view/viewrootimpl.proto",
+        "protos/perfetto/trace/android/view/windowlayoutparams.proto",
+        "protos/perfetto/trace/android/winscope_extensions_impl.proto",
+    ],
+}
+
+// GN: //protos/perfetto/trace/android:winscope_extensions:zero
+genrule {
+    name: "perfetto_protos_perfetto_trace_android_winscope_extensions_zero_gen",
+    srcs: [
+        ":libprotobuf-internal-descriptor-proto",
+        ":perfetto_protos_perfetto_trace_android_winscope_common_zero",
+        ":perfetto_protos_perfetto_trace_android_winscope_extensions_zero",
+    ],
+    tools: [
+        "aprotoc",
+        "protozero_plugin",
+    ],
+    cmd: "mkdir -p $(genDir)/external/perfetto/ && $(location aprotoc) --proto_path=external/perfetto --proto_path=external/protobuf/src --plugin=protoc-gen-plugin=$(location protozero_plugin) --plugin_out=wrapper_namespace=pbzero:$(genDir)/external/perfetto/ $(locations :perfetto_protos_perfetto_trace_android_winscope_extensions_zero)",
+    out: [
+        "external/perfetto/protos/perfetto/trace/android/graphics/pixelformat.pbzero.cc",
+        "external/perfetto/protos/perfetto/trace/android/inputmethodeditor.pbzero.cc",
+        "external/perfetto/protos/perfetto/trace/android/inputmethodservice/inputmethodservice.pbzero.cc",
+        "external/perfetto/protos/perfetto/trace/android/inputmethodservice/softinputwindow.pbzero.cc",
+        "external/perfetto/protos/perfetto/trace/android/server/inputmethod/inputmethodmanagerservice.pbzero.cc",
+        "external/perfetto/protos/perfetto/trace/android/typedef.pbzero.cc",
+        "external/perfetto/protos/perfetto/trace/android/view/display.pbzero.cc",
+        "external/perfetto/protos/perfetto/trace/android/view/displaycutout.pbzero.cc",
+        "external/perfetto/protos/perfetto/trace/android/view/imefocuscontroller.pbzero.cc",
+        "external/perfetto/protos/perfetto/trace/android/view/imeinsetssourceconsumer.pbzero.cc",
+        "external/perfetto/protos/perfetto/trace/android/view/inputmethod/editorinfo.pbzero.cc",
+        "external/perfetto/protos/perfetto/trace/android/view/inputmethod/inputconnection.pbzero.cc",
+        "external/perfetto/protos/perfetto/trace/android/view/inputmethod/inputmethodmanager.pbzero.cc",
+        "external/perfetto/protos/perfetto/trace/android/view/insetsanimationcontrolimpl.pbzero.cc",
+        "external/perfetto/protos/perfetto/trace/android/view/insetscontroller.pbzero.cc",
+        "external/perfetto/protos/perfetto/trace/android/view/insetssource.pbzero.cc",
+        "external/perfetto/protos/perfetto/trace/android/view/insetssourceconsumer.pbzero.cc",
+        "external/perfetto/protos/perfetto/trace/android/view/insetssourcecontrol.pbzero.cc",
+        "external/perfetto/protos/perfetto/trace/android/view/insetsstate.pbzero.cc",
+        "external/perfetto/protos/perfetto/trace/android/view/surfacecontrol.pbzero.cc",
+        "external/perfetto/protos/perfetto/trace/android/view/viewrootimpl.pbzero.cc",
+        "external/perfetto/protos/perfetto/trace/android/view/windowlayoutparams.pbzero.cc",
+        "external/perfetto/protos/perfetto/trace/android/winscope_extensions_impl.pbzero.cc",
+    ],
+}
+
+// GN: //protos/perfetto/trace/android:winscope_extensions:zero
+genrule {
+    name: "perfetto_protos_perfetto_trace_android_winscope_extensions_zero_gen_headers",
+    srcs: [
+        ":libprotobuf-internal-descriptor-proto",
+        ":perfetto_protos_perfetto_trace_android_winscope_common_zero",
+        ":perfetto_protos_perfetto_trace_android_winscope_extensions_zero",
+    ],
+    tools: [
+        "aprotoc",
+        "protozero_plugin",
+    ],
+    cmd: "mkdir -p $(genDir)/external/perfetto/ && $(location aprotoc) --proto_path=external/perfetto --proto_path=external/protobuf/src --plugin=protoc-gen-plugin=$(location protozero_plugin) --plugin_out=wrapper_namespace=pbzero:$(genDir)/external/perfetto/ $(locations :perfetto_protos_perfetto_trace_android_winscope_extensions_zero)",
+    out: [
+        "external/perfetto/protos/perfetto/trace/android/graphics/pixelformat.pbzero.h",
+        "external/perfetto/protos/perfetto/trace/android/inputmethodeditor.pbzero.h",
+        "external/perfetto/protos/perfetto/trace/android/inputmethodservice/inputmethodservice.pbzero.h",
+        "external/perfetto/protos/perfetto/trace/android/inputmethodservice/softinputwindow.pbzero.h",
+        "external/perfetto/protos/perfetto/trace/android/server/inputmethod/inputmethodmanagerservice.pbzero.h",
+        "external/perfetto/protos/perfetto/trace/android/typedef.pbzero.h",
+        "external/perfetto/protos/perfetto/trace/android/view/display.pbzero.h",
+        "external/perfetto/protos/perfetto/trace/android/view/displaycutout.pbzero.h",
+        "external/perfetto/protos/perfetto/trace/android/view/imefocuscontroller.pbzero.h",
+        "external/perfetto/protos/perfetto/trace/android/view/imeinsetssourceconsumer.pbzero.h",
+        "external/perfetto/protos/perfetto/trace/android/view/inputmethod/editorinfo.pbzero.h",
+        "external/perfetto/protos/perfetto/trace/android/view/inputmethod/inputconnection.pbzero.h",
+        "external/perfetto/protos/perfetto/trace/android/view/inputmethod/inputmethodmanager.pbzero.h",
+        "external/perfetto/protos/perfetto/trace/android/view/insetsanimationcontrolimpl.pbzero.h",
+        "external/perfetto/protos/perfetto/trace/android/view/insetscontroller.pbzero.h",
+        "external/perfetto/protos/perfetto/trace/android/view/insetssource.pbzero.h",
+        "external/perfetto/protos/perfetto/trace/android/view/insetssourceconsumer.pbzero.h",
+        "external/perfetto/protos/perfetto/trace/android/view/insetssourcecontrol.pbzero.h",
+        "external/perfetto/protos/perfetto/trace/android/view/insetsstate.pbzero.h",
+        "external/perfetto/protos/perfetto/trace/android/view/surfacecontrol.pbzero.h",
+        "external/perfetto/protos/perfetto/trace/android/view/viewrootimpl.pbzero.h",
+        "external/perfetto/protos/perfetto/trace/android/view/windowlayoutparams.pbzero.h",
+        "external/perfetto/protos/perfetto/trace/android/winscope_extensions_impl.pbzero.h",
+    ],
+    export_include_dirs: [
+        ".",
+        "protos",
+    ],
+}
+
+// GN: //protos/perfetto/trace/android:winscope_regular:cpp
+filegroup {
+    name: "perfetto_protos_perfetto_trace_android_winscope_regular_cpp",
+    srcs: [
         "protos/perfetto/trace/android/protolog.proto",
         "protos/perfetto/trace/android/shell_transition.proto",
         "protos/perfetto/trace/android/surfaceflinger_common.proto",
         "protos/perfetto/trace/android/surfaceflinger_layers.proto",
         "protos/perfetto/trace/android/surfaceflinger_transactions.proto",
-        "protos/perfetto/trace/android/winscope.proto",
+    ],
+}
+
+// GN: //protos/perfetto/trace/android:winscope_regular:cpp
+genrule {
+    name: "perfetto_protos_perfetto_trace_android_winscope_regular_cpp_gen",
+    srcs: [
+        ":perfetto_protos_perfetto_common_cpp",
+        ":perfetto_protos_perfetto_trace_android_winscope_common_cpp",
+        ":perfetto_protos_perfetto_trace_android_winscope_regular_cpp",
+    ],
+    tools: [
+        "aprotoc",
+        "perfetto_src_protozero_protoc_plugin_cppgen_plugin",
+    ],
+    cmd: "mkdir -p $(genDir)/external/perfetto/ && $(location aprotoc) --proto_path=external/perfetto --plugin=protoc-gen-plugin=$(location perfetto_src_protozero_protoc_plugin_cppgen_plugin) --plugin_out=wrapper_namespace=gen:$(genDir)/external/perfetto/ $(locations :perfetto_protos_perfetto_trace_android_winscope_regular_cpp)",
+    out: [
+        "external/perfetto/protos/perfetto/trace/android/protolog.gen.cc",
+        "external/perfetto/protos/perfetto/trace/android/shell_transition.gen.cc",
+        "external/perfetto/protos/perfetto/trace/android/surfaceflinger_common.gen.cc",
+        "external/perfetto/protos/perfetto/trace/android/surfaceflinger_layers.gen.cc",
+        "external/perfetto/protos/perfetto/trace/android/surfaceflinger_transactions.gen.cc",
+    ],
+}
+
+// GN: //protos/perfetto/trace/android:winscope_regular:cpp
+genrule {
+    name: "perfetto_protos_perfetto_trace_android_winscope_regular_cpp_gen_headers",
+    srcs: [
+        ":perfetto_protos_perfetto_common_cpp",
+        ":perfetto_protos_perfetto_trace_android_winscope_common_cpp",
+        ":perfetto_protos_perfetto_trace_android_winscope_regular_cpp",
+    ],
+    tools: [
+        "aprotoc",
+        "perfetto_src_protozero_protoc_plugin_cppgen_plugin",
+    ],
+    cmd: "mkdir -p $(genDir)/external/perfetto/ && $(location aprotoc) --proto_path=external/perfetto --plugin=protoc-gen-plugin=$(location perfetto_src_protozero_protoc_plugin_cppgen_plugin) --plugin_out=wrapper_namespace=gen:$(genDir)/external/perfetto/ $(locations :perfetto_protos_perfetto_trace_android_winscope_regular_cpp)",
+    out: [
+        "external/perfetto/protos/perfetto/trace/android/protolog.gen.h",
+        "external/perfetto/protos/perfetto/trace/android/shell_transition.gen.h",
+        "external/perfetto/protos/perfetto/trace/android/surfaceflinger_common.gen.h",
+        "external/perfetto/protos/perfetto/trace/android/surfaceflinger_layers.gen.h",
+        "external/perfetto/protos/perfetto/trace/android/surfaceflinger_transactions.gen.h",
+    ],
+    export_include_dirs: [
+        ".",
+        "protos",
+    ],
+}
+
+// GN: //protos/perfetto/trace/android:winscope_regular:lite
+filegroup {
+    name: "perfetto_protos_perfetto_trace_android_winscope_regular_lite",
+    srcs: [
+        "protos/perfetto/trace/android/protolog.proto",
+        "protos/perfetto/trace/android/shell_transition.proto",
+        "protos/perfetto/trace/android/surfaceflinger_common.proto",
+        "protos/perfetto/trace/android/surfaceflinger_layers.proto",
+        "protos/perfetto/trace/android/surfaceflinger_transactions.proto",
+    ],
+}
+
+// GN: //protos/perfetto/trace/android:winscope_regular:lite
+genrule {
+    name: "perfetto_protos_perfetto_trace_android_winscope_regular_lite_gen",
+    srcs: [
+        ":perfetto_protos_perfetto_common_lite",
+        ":perfetto_protos_perfetto_trace_android_winscope_common_lite",
+        ":perfetto_protos_perfetto_trace_android_winscope_regular_lite",
     ],
     tools: [
         "aprotoc",
     ],
-    cmd: "mkdir -p $(genDir)/external/perfetto/ && $(location aprotoc) --proto_path=external/perfetto --descriptor_set_out=$(out) $(in)",
+    cmd: "mkdir -p $(genDir)/external/perfetto/ && $(location aprotoc) --proto_path=external/perfetto --cpp_out=lite=true:$(genDir)/external/perfetto/ $(locations :perfetto_protos_perfetto_trace_android_winscope_regular_lite)",
     out: [
-        "perfetto_protos_perfetto_trace_android_winscope_descriptor.bin",
+        "external/perfetto/protos/perfetto/trace/android/protolog.pb.cc",
+        "external/perfetto/protos/perfetto/trace/android/shell_transition.pb.cc",
+        "external/perfetto/protos/perfetto/trace/android/surfaceflinger_common.pb.cc",
+        "external/perfetto/protos/perfetto/trace/android/surfaceflinger_layers.pb.cc",
+        "external/perfetto/protos/perfetto/trace/android/surfaceflinger_transactions.pb.cc",
+    ],
+}
+
+// GN: //protos/perfetto/trace/android:winscope_regular:lite
+genrule {
+    name: "perfetto_protos_perfetto_trace_android_winscope_regular_lite_gen_headers",
+    srcs: [
+        ":perfetto_protos_perfetto_common_lite",
+        ":perfetto_protos_perfetto_trace_android_winscope_common_lite",
+        ":perfetto_protos_perfetto_trace_android_winscope_regular_lite",
+    ],
+    tools: [
+        "aprotoc",
+    ],
+    cmd: "mkdir -p $(genDir)/external/perfetto/ && $(location aprotoc) --proto_path=external/perfetto --cpp_out=lite=true:$(genDir)/external/perfetto/ $(locations :perfetto_protos_perfetto_trace_android_winscope_regular_lite)",
+    out: [
+        "external/perfetto/protos/perfetto/trace/android/protolog.pb.h",
+        "external/perfetto/protos/perfetto/trace/android/shell_transition.pb.h",
+        "external/perfetto/protos/perfetto/trace/android/surfaceflinger_common.pb.h",
+        "external/perfetto/protos/perfetto/trace/android/surfaceflinger_layers.pb.h",
+        "external/perfetto/protos/perfetto/trace/android/surfaceflinger_transactions.pb.h",
+    ],
+    export_include_dirs: [
+        ".",
+        "protos",
+    ],
+}
+
+// GN: //protos/perfetto/trace/android:winscope_regular:zero
+filegroup {
+    name: "perfetto_protos_perfetto_trace_android_winscope_regular_zero",
+    srcs: [
+        "protos/perfetto/trace/android/protolog.proto",
+        "protos/perfetto/trace/android/shell_transition.proto",
+        "protos/perfetto/trace/android/surfaceflinger_common.proto",
+        "protos/perfetto/trace/android/surfaceflinger_layers.proto",
+        "protos/perfetto/trace/android/surfaceflinger_transactions.proto",
+    ],
+}
+
+// GN: //protos/perfetto/trace/android:winscope_regular:zero
+genrule {
+    name: "perfetto_protos_perfetto_trace_android_winscope_regular_zero_gen",
+    srcs: [
+        ":perfetto_protos_perfetto_common_zero",
+        ":perfetto_protos_perfetto_trace_android_winscope_common_zero",
+        ":perfetto_protos_perfetto_trace_android_winscope_regular_zero",
+    ],
+    tools: [
+        "aprotoc",
+        "protozero_plugin",
+    ],
+    cmd: "mkdir -p $(genDir)/external/perfetto/ && $(location aprotoc) --proto_path=external/perfetto --plugin=protoc-gen-plugin=$(location protozero_plugin) --plugin_out=wrapper_namespace=pbzero:$(genDir)/external/perfetto/ $(locations :perfetto_protos_perfetto_trace_android_winscope_regular_zero)",
+    out: [
+        "external/perfetto/protos/perfetto/trace/android/protolog.pbzero.cc",
+        "external/perfetto/protos/perfetto/trace/android/shell_transition.pbzero.cc",
+        "external/perfetto/protos/perfetto/trace/android/surfaceflinger_common.pbzero.cc",
+        "external/perfetto/protos/perfetto/trace/android/surfaceflinger_layers.pbzero.cc",
+        "external/perfetto/protos/perfetto/trace/android/surfaceflinger_transactions.pbzero.cc",
+    ],
+}
+
+// GN: //protos/perfetto/trace/android:winscope_regular:zero
+genrule {
+    name: "perfetto_protos_perfetto_trace_android_winscope_regular_zero_gen_headers",
+    srcs: [
+        ":perfetto_protos_perfetto_common_zero",
+        ":perfetto_protos_perfetto_trace_android_winscope_common_zero",
+        ":perfetto_protos_perfetto_trace_android_winscope_regular_zero",
+    ],
+    tools: [
+        "aprotoc",
+        "protozero_plugin",
+    ],
+    cmd: "mkdir -p $(genDir)/external/perfetto/ && $(location aprotoc) --proto_path=external/perfetto --plugin=protoc-gen-plugin=$(location protozero_plugin) --plugin_out=wrapper_namespace=pbzero:$(genDir)/external/perfetto/ $(locations :perfetto_protos_perfetto_trace_android_winscope_regular_zero)",
+    out: [
+        "external/perfetto/protos/perfetto/trace/android/protolog.pbzero.h",
+        "external/perfetto/protos/perfetto/trace/android/shell_transition.pbzero.h",
+        "external/perfetto/protos/perfetto/trace/android/surfaceflinger_common.pbzero.h",
+        "external/perfetto/protos/perfetto/trace/android/surfaceflinger_layers.pbzero.h",
+        "external/perfetto/protos/perfetto/trace/android/surfaceflinger_transactions.pbzero.h",
+    ],
+    export_include_dirs: [
+        ".",
+        "protos",
     ],
 }
 
@@ -5634,11 +6143,6 @@
         "protos/perfetto/trace/android/network_trace.proto",
         "protos/perfetto/trace/android/packages_list.proto",
         "protos/perfetto/trace/android/pixel_modem_events.proto",
-        "protos/perfetto/trace/android/protolog.proto",
-        "protos/perfetto/trace/android/shell_transition.proto",
-        "protos/perfetto/trace/android/surfaceflinger_common.proto",
-        "protos/perfetto/trace/android/surfaceflinger_layers.proto",
-        "protos/perfetto/trace/android/surfaceflinger_transactions.proto",
     ],
 }
 
@@ -5647,6 +6151,8 @@
     name: "perfetto_protos_perfetto_trace_android_zero_gen",
     srcs: [
         ":perfetto_protos_perfetto_common_zero",
+        ":perfetto_protos_perfetto_trace_android_winscope_common_zero",
+        ":perfetto_protos_perfetto_trace_android_winscope_regular_zero",
         ":perfetto_protos_perfetto_trace_android_zero",
     ],
     tools: [
@@ -5667,11 +6173,6 @@
         "external/perfetto/protos/perfetto/trace/android/network_trace.pbzero.cc",
         "external/perfetto/protos/perfetto/trace/android/packages_list.pbzero.cc",
         "external/perfetto/protos/perfetto/trace/android/pixel_modem_events.pbzero.cc",
-        "external/perfetto/protos/perfetto/trace/android/protolog.pbzero.cc",
-        "external/perfetto/protos/perfetto/trace/android/shell_transition.pbzero.cc",
-        "external/perfetto/protos/perfetto/trace/android/surfaceflinger_common.pbzero.cc",
-        "external/perfetto/protos/perfetto/trace/android/surfaceflinger_layers.pbzero.cc",
-        "external/perfetto/protos/perfetto/trace/android/surfaceflinger_transactions.pbzero.cc",
     ],
 }
 
@@ -5680,6 +6181,8 @@
     name: "perfetto_protos_perfetto_trace_android_zero_gen_headers",
     srcs: [
         ":perfetto_protos_perfetto_common_zero",
+        ":perfetto_protos_perfetto_trace_android_winscope_common_zero",
+        ":perfetto_protos_perfetto_trace_android_winscope_regular_zero",
         ":perfetto_protos_perfetto_trace_android_zero",
     ],
     tools: [
@@ -5700,11 +6203,6 @@
         "external/perfetto/protos/perfetto/trace/android/network_trace.pbzero.h",
         "external/perfetto/protos/perfetto/trace/android/packages_list.pbzero.h",
         "external/perfetto/protos/perfetto/trace/android/pixel_modem_events.pbzero.h",
-        "external/perfetto/protos/perfetto/trace/android/protolog.pbzero.h",
-        "external/perfetto/protos/perfetto/trace/android/shell_transition.pbzero.h",
-        "external/perfetto/protos/perfetto/trace/android/surfaceflinger_common.pbzero.h",
-        "external/perfetto/protos/perfetto/trace/android/surfaceflinger_layers.pbzero.h",
-        "external/perfetto/protos/perfetto/trace/android/surfaceflinger_transactions.pbzero.h",
     ],
     export_include_dirs: [
         ".",
@@ -5942,6 +6440,8 @@
         "protos/perfetto/trace/android/camera_event.proto",
         "protos/perfetto/trace/android/frame_timeline_event.proto",
         "protos/perfetto/trace/android/gpu_mem_event.proto",
+        "protos/perfetto/trace/android/graphics/point.proto",
+        "protos/perfetto/trace/android/graphics/rect.proto",
         "protos/perfetto/trace/android/graphics_frame_event.proto",
         "protos/perfetto/trace/android/initial_display_state.proto",
         "protos/perfetto/trace/android/network_trace.proto",
@@ -5952,6 +6452,7 @@
         "protos/perfetto/trace/android/surfaceflinger_common.proto",
         "protos/perfetto/trace/android/surfaceflinger_layers.proto",
         "protos/perfetto/trace/android/surfaceflinger_transactions.proto",
+        "protos/perfetto/trace/android/winscope_extensions.proto",
         "protos/perfetto/trace/chrome/chrome_benchmark_metadata.proto",
         "protos/perfetto/trace/chrome/chrome_metadata.proto",
         "protos/perfetto/trace/chrome/chrome_trace_event.proto",
@@ -7300,6 +7801,8 @@
     srcs: [
         ":perfetto_protos_perfetto_common_cpp",
         ":perfetto_protos_perfetto_trace_android_cpp",
+        ":perfetto_protos_perfetto_trace_android_winscope_common_cpp",
+        ":perfetto_protos_perfetto_trace_android_winscope_regular_cpp",
         ":perfetto_protos_perfetto_trace_chrome_cpp",
         ":perfetto_protos_perfetto_trace_gpu_cpp",
         ":perfetto_protos_perfetto_trace_interned_data_cpp",
@@ -7322,6 +7825,8 @@
     srcs: [
         ":perfetto_protos_perfetto_common_cpp",
         ":perfetto_protos_perfetto_trace_android_cpp",
+        ":perfetto_protos_perfetto_trace_android_winscope_common_cpp",
+        ":perfetto_protos_perfetto_trace_android_winscope_regular_cpp",
         ":perfetto_protos_perfetto_trace_chrome_cpp",
         ":perfetto_protos_perfetto_trace_gpu_cpp",
         ":perfetto_protos_perfetto_trace_interned_data_cpp",
@@ -7356,6 +7861,8 @@
     srcs: [
         ":perfetto_protos_perfetto_common_lite",
         ":perfetto_protos_perfetto_trace_android_lite",
+        ":perfetto_protos_perfetto_trace_android_winscope_common_lite",
+        ":perfetto_protos_perfetto_trace_android_winscope_regular_lite",
         ":perfetto_protos_perfetto_trace_chrome_lite",
         ":perfetto_protos_perfetto_trace_gpu_lite",
         ":perfetto_protos_perfetto_trace_interned_data_lite",
@@ -7377,6 +7884,8 @@
     srcs: [
         ":perfetto_protos_perfetto_common_lite",
         ":perfetto_protos_perfetto_trace_android_lite",
+        ":perfetto_protos_perfetto_trace_android_winscope_common_lite",
+        ":perfetto_protos_perfetto_trace_android_winscope_regular_lite",
         ":perfetto_protos_perfetto_trace_chrome_lite",
         ":perfetto_protos_perfetto_trace_gpu_lite",
         ":perfetto_protos_perfetto_trace_interned_data_lite",
@@ -7409,6 +7918,8 @@
     name: "perfetto_protos_perfetto_trace_interned_data_zero_gen",
     srcs: [
         ":perfetto_protos_perfetto_common_zero",
+        ":perfetto_protos_perfetto_trace_android_winscope_common_zero",
+        ":perfetto_protos_perfetto_trace_android_winscope_regular_zero",
         ":perfetto_protos_perfetto_trace_android_zero",
         ":perfetto_protos_perfetto_trace_chrome_zero",
         ":perfetto_protos_perfetto_trace_gpu_zero",
@@ -7431,6 +7942,8 @@
     name: "perfetto_protos_perfetto_trace_interned_data_zero_gen_headers",
     srcs: [
         ":perfetto_protos_perfetto_common_zero",
+        ":perfetto_protos_perfetto_trace_android_winscope_common_zero",
+        ":perfetto_protos_perfetto_trace_android_winscope_regular_zero",
         ":perfetto_protos_perfetto_trace_android_zero",
         ":perfetto_protos_perfetto_trace_chrome_zero",
         ":perfetto_protos_perfetto_trace_gpu_zero",
@@ -7728,6 +8241,8 @@
         ":perfetto_protos_perfetto_config_system_info_cpp",
         ":perfetto_protos_perfetto_config_track_event_cpp",
         ":perfetto_protos_perfetto_trace_android_cpp",
+        ":perfetto_protos_perfetto_trace_android_winscope_common_cpp",
+        ":perfetto_protos_perfetto_trace_android_winscope_regular_cpp",
         ":perfetto_protos_perfetto_trace_chrome_cpp",
         ":perfetto_protos_perfetto_trace_etw_cpp",
         ":perfetto_protos_perfetto_trace_filesystem_cpp",
@@ -7783,6 +8298,8 @@
         ":perfetto_protos_perfetto_config_system_info_cpp",
         ":perfetto_protos_perfetto_config_track_event_cpp",
         ":perfetto_protos_perfetto_trace_android_cpp",
+        ":perfetto_protos_perfetto_trace_android_winscope_common_cpp",
+        ":perfetto_protos_perfetto_trace_android_winscope_regular_cpp",
         ":perfetto_protos_perfetto_trace_chrome_cpp",
         ":perfetto_protos_perfetto_trace_etw_cpp",
         ":perfetto_protos_perfetto_trace_filesystem_cpp",
@@ -7858,6 +8375,8 @@
         ":perfetto_protos_perfetto_config_system_info_lite",
         ":perfetto_protos_perfetto_config_track_event_lite",
         ":perfetto_protos_perfetto_trace_android_lite",
+        ":perfetto_protos_perfetto_trace_android_winscope_common_lite",
+        ":perfetto_protos_perfetto_trace_android_winscope_regular_lite",
         ":perfetto_protos_perfetto_trace_chrome_lite",
         ":perfetto_protos_perfetto_trace_etw_lite",
         ":perfetto_protos_perfetto_trace_filesystem_lite",
@@ -7912,6 +8431,8 @@
         ":perfetto_protos_perfetto_config_system_info_lite",
         ":perfetto_protos_perfetto_config_track_event_lite",
         ":perfetto_protos_perfetto_trace_android_lite",
+        ":perfetto_protos_perfetto_trace_android_winscope_common_lite",
+        ":perfetto_protos_perfetto_trace_android_winscope_regular_lite",
         ":perfetto_protos_perfetto_trace_chrome_lite",
         ":perfetto_protos_perfetto_trace_etw_lite",
         ":perfetto_protos_perfetto_trace_filesystem_lite",
@@ -7985,6 +8506,8 @@
         ":perfetto_protos_perfetto_config_system_info_zero",
         ":perfetto_protos_perfetto_config_track_event_zero",
         ":perfetto_protos_perfetto_config_zero",
+        ":perfetto_protos_perfetto_trace_android_winscope_common_zero",
+        ":perfetto_protos_perfetto_trace_android_winscope_regular_zero",
         ":perfetto_protos_perfetto_trace_android_zero",
         ":perfetto_protos_perfetto_trace_chrome_zero",
         ":perfetto_protos_perfetto_trace_etw_zero",
@@ -8040,6 +8563,8 @@
         ":perfetto_protos_perfetto_config_system_info_zero",
         ":perfetto_protos_perfetto_config_track_event_zero",
         ":perfetto_protos_perfetto_config_zero",
+        ":perfetto_protos_perfetto_trace_android_winscope_common_zero",
+        ":perfetto_protos_perfetto_trace_android_winscope_regular_zero",
         ":perfetto_protos_perfetto_trace_android_zero",
         ":perfetto_protos_perfetto_trace_chrome_zero",
         ":perfetto_protos_perfetto_trace_etw_zero",
@@ -13796,224 +14321,6 @@
 }
 
 // GN: [//protos/perfetto/trace:non_minimal_source_set, //protos/perfetto/trace:minimal_source_set]
-filegroup {
-    name: "perfetto_trace_filegroup_proto",
-    srcs: [
-        "protos/perfetto/common/android_energy_consumer_descriptor.proto",
-        "protos/perfetto/common/android_log_constants.proto",
-        "protos/perfetto/common/builtin_clock.proto",
-        "protos/perfetto/common/commit_data_request.proto",
-        "protos/perfetto/common/data_source_descriptor.proto",
-        "protos/perfetto/common/descriptor.proto",
-        "protos/perfetto/common/ftrace_descriptor.proto",
-        "protos/perfetto/common/gpu_counter_descriptor.proto",
-        "protos/perfetto/common/interceptor_descriptor.proto",
-        "protos/perfetto/common/observable_events.proto",
-        "protos/perfetto/common/perf_events.proto",
-        "protos/perfetto/common/protolog_common.proto",
-        "protos/perfetto/common/sys_stats_counters.proto",
-        "protos/perfetto/common/trace_stats.proto",
-        "protos/perfetto/common/tracing_service_capabilities.proto",
-        "protos/perfetto/common/tracing_service_state.proto",
-        "protos/perfetto/common/track_event_descriptor.proto",
-        "protos/perfetto/config/android/android_game_intervention_list_config.proto",
-        "protos/perfetto/config/android/android_input_event_config.proto",
-        "protos/perfetto/config/android/android_log_config.proto",
-        "protos/perfetto/config/android/android_polled_state_config.proto",
-        "protos/perfetto/config/android/android_sdk_sysprop_guard_config.proto",
-        "protos/perfetto/config/android/android_system_property_config.proto",
-        "protos/perfetto/config/android/network_trace_config.proto",
-        "protos/perfetto/config/android/packages_list_config.proto",
-        "protos/perfetto/config/android/pixel_modem_config.proto",
-        "protos/perfetto/config/android/protolog_config.proto",
-        "protos/perfetto/config/android/surfaceflinger_layers_config.proto",
-        "protos/perfetto/config/android/surfaceflinger_transactions_config.proto",
-        "protos/perfetto/config/chrome/chrome_config.proto",
-        "protos/perfetto/config/chrome/scenario_config.proto",
-        "protos/perfetto/config/chrome/v8_config.proto",
-        "protos/perfetto/config/data_source_config.proto",
-        "protos/perfetto/config/etw/etw_config.proto",
-        "protos/perfetto/config/ftrace/ftrace_config.proto",
-        "protos/perfetto/config/gpu/gpu_counter_config.proto",
-        "protos/perfetto/config/gpu/vulkan_memory_config.proto",
-        "protos/perfetto/config/inode_file/inode_file_config.proto",
-        "protos/perfetto/config/interceptor_config.proto",
-        "protos/perfetto/config/interceptors/console_config.proto",
-        "protos/perfetto/config/power/android_power_config.proto",
-        "protos/perfetto/config/process_stats/process_stats_config.proto",
-        "protos/perfetto/config/profiling/heapprofd_config.proto",
-        "protos/perfetto/config/profiling/java_hprof_config.proto",
-        "protos/perfetto/config/profiling/perf_event_config.proto",
-        "protos/perfetto/config/statsd/atom_ids.proto",
-        "protos/perfetto/config/statsd/statsd_tracing_config.proto",
-        "protos/perfetto/config/stress_test_config.proto",
-        "protos/perfetto/config/sys_stats/sys_stats_config.proto",
-        "protos/perfetto/config/system_info/system_info.proto",
-        "protos/perfetto/config/test_config.proto",
-        "protos/perfetto/config/trace_config.proto",
-        "protos/perfetto/config/track_event/track_event_config.proto",
-        "protos/perfetto/trace/android/android_game_intervention_list.proto",
-        "protos/perfetto/trace/android/android_input_event.proto",
-        "protos/perfetto/trace/android/android_log.proto",
-        "protos/perfetto/trace/android/android_system_property.proto",
-        "protos/perfetto/trace/android/camera_event.proto",
-        "protos/perfetto/trace/android/frame_timeline_event.proto",
-        "protos/perfetto/trace/android/gpu_mem_event.proto",
-        "protos/perfetto/trace/android/graphics_frame_event.proto",
-        "protos/perfetto/trace/android/initial_display_state.proto",
-        "protos/perfetto/trace/android/network_trace.proto",
-        "protos/perfetto/trace/android/packages_list.proto",
-        "protos/perfetto/trace/android/pixel_modem_events.proto",
-        "protos/perfetto/trace/android/protolog.proto",
-        "protos/perfetto/trace/android/shell_transition.proto",
-        "protos/perfetto/trace/android/surfaceflinger_common.proto",
-        "protos/perfetto/trace/android/surfaceflinger_layers.proto",
-        "protos/perfetto/trace/android/surfaceflinger_transactions.proto",
-        "protos/perfetto/trace/chrome/chrome_benchmark_metadata.proto",
-        "protos/perfetto/trace/chrome/chrome_metadata.proto",
-        "protos/perfetto/trace/chrome/chrome_trace_event.proto",
-        "protos/perfetto/trace/chrome/chrome_trigger.proto",
-        "protos/perfetto/trace/chrome/v8.proto",
-        "protos/perfetto/trace/clock_snapshot.proto",
-        "protos/perfetto/trace/etw/etw.proto",
-        "protos/perfetto/trace/etw/etw_event.proto",
-        "protos/perfetto/trace/etw/etw_event_bundle.proto",
-        "protos/perfetto/trace/extension_descriptor.proto",
-        "protos/perfetto/trace/filesystem/inode_file_map.proto",
-        "protos/perfetto/trace/ftrace/android_fs.proto",
-        "protos/perfetto/trace/ftrace/binder.proto",
-        "protos/perfetto/trace/ftrace/block.proto",
-        "protos/perfetto/trace/ftrace/cgroup.proto",
-        "protos/perfetto/trace/ftrace/clk.proto",
-        "protos/perfetto/trace/ftrace/cma.proto",
-        "protos/perfetto/trace/ftrace/compaction.proto",
-        "protos/perfetto/trace/ftrace/cpuhp.proto",
-        "protos/perfetto/trace/ftrace/cros_ec.proto",
-        "protos/perfetto/trace/ftrace/dma_fence.proto",
-        "protos/perfetto/trace/ftrace/dmabuf_heap.proto",
-        "protos/perfetto/trace/ftrace/dpu.proto",
-        "protos/perfetto/trace/ftrace/drm.proto",
-        "protos/perfetto/trace/ftrace/ext4.proto",
-        "protos/perfetto/trace/ftrace/f2fs.proto",
-        "protos/perfetto/trace/ftrace/fastrpc.proto",
-        "protos/perfetto/trace/ftrace/fence.proto",
-        "protos/perfetto/trace/ftrace/filemap.proto",
-        "protos/perfetto/trace/ftrace/ftrace.proto",
-        "protos/perfetto/trace/ftrace/ftrace_event.proto",
-        "protos/perfetto/trace/ftrace/ftrace_event_bundle.proto",
-        "protos/perfetto/trace/ftrace/ftrace_stats.proto",
-        "protos/perfetto/trace/ftrace/g2d.proto",
-        "protos/perfetto/trace/ftrace/generic.proto",
-        "protos/perfetto/trace/ftrace/gpu_mem.proto",
-        "protos/perfetto/trace/ftrace/gpu_scheduler.proto",
-        "protos/perfetto/trace/ftrace/hyp.proto",
-        "protos/perfetto/trace/ftrace/i2c.proto",
-        "protos/perfetto/trace/ftrace/ion.proto",
-        "protos/perfetto/trace/ftrace/ipi.proto",
-        "protos/perfetto/trace/ftrace/irq.proto",
-        "protos/perfetto/trace/ftrace/kmem.proto",
-        "protos/perfetto/trace/ftrace/kvm.proto",
-        "protos/perfetto/trace/ftrace/lowmemorykiller.proto",
-        "protos/perfetto/trace/ftrace/lwis.proto",
-        "protos/perfetto/trace/ftrace/mali.proto",
-        "protos/perfetto/trace/ftrace/mdss.proto",
-        "protos/perfetto/trace/ftrace/mm_event.proto",
-        "protos/perfetto/trace/ftrace/net.proto",
-        "protos/perfetto/trace/ftrace/oom.proto",
-        "protos/perfetto/trace/ftrace/panel.proto",
-        "protos/perfetto/trace/ftrace/perf_trace_counters.proto",
-        "protos/perfetto/trace/ftrace/power.proto",
-        "protos/perfetto/trace/ftrace/printk.proto",
-        "protos/perfetto/trace/ftrace/raw_syscalls.proto",
-        "protos/perfetto/trace/ftrace/regulator.proto",
-        "protos/perfetto/trace/ftrace/rpm.proto",
-        "protos/perfetto/trace/ftrace/samsung.proto",
-        "protos/perfetto/trace/ftrace/sched.proto",
-        "protos/perfetto/trace/ftrace/scm.proto",
-        "protos/perfetto/trace/ftrace/sde.proto",
-        "protos/perfetto/trace/ftrace/signal.proto",
-        "protos/perfetto/trace/ftrace/skb.proto",
-        "protos/perfetto/trace/ftrace/sock.proto",
-        "protos/perfetto/trace/ftrace/sync.proto",
-        "protos/perfetto/trace/ftrace/synthetic.proto",
-        "protos/perfetto/trace/ftrace/systrace.proto",
-        "protos/perfetto/trace/ftrace/task.proto",
-        "protos/perfetto/trace/ftrace/tcp.proto",
-        "protos/perfetto/trace/ftrace/test_bundle_wrapper.proto",
-        "protos/perfetto/trace/ftrace/thermal.proto",
-        "protos/perfetto/trace/ftrace/trusty.proto",
-        "protos/perfetto/trace/ftrace/ufs.proto",
-        "protos/perfetto/trace/ftrace/v4l2.proto",
-        "protos/perfetto/trace/ftrace/virtio_gpu.proto",
-        "protos/perfetto/trace/ftrace/virtio_video.proto",
-        "protos/perfetto/trace/ftrace/vmscan.proto",
-        "protos/perfetto/trace/ftrace/workqueue.proto",
-        "protos/perfetto/trace/gpu/gpu_counter_event.proto",
-        "protos/perfetto/trace/gpu/gpu_log.proto",
-        "protos/perfetto/trace/gpu/gpu_render_stage_event.proto",
-        "protos/perfetto/trace/gpu/vulkan_api_event.proto",
-        "protos/perfetto/trace/gpu/vulkan_memory_event.proto",
-        "protos/perfetto/trace/interned_data/interned_data.proto",
-        "protos/perfetto/trace/memory_graph.proto",
-        "protos/perfetto/trace/perfetto/perfetto_metatrace.proto",
-        "protos/perfetto/trace/perfetto/tracing_service_event.proto",
-        "protos/perfetto/trace/power/android_energy_estimation_breakdown.proto",
-        "protos/perfetto/trace/power/android_entity_state_residency.proto",
-        "protos/perfetto/trace/power/battery_counters.proto",
-        "protos/perfetto/trace/power/power_rails.proto",
-        "protos/perfetto/trace/profiling/deobfuscation.proto",
-        "protos/perfetto/trace/profiling/heap_graph.proto",
-        "protos/perfetto/trace/profiling/profile_common.proto",
-        "protos/perfetto/trace/profiling/profile_packet.proto",
-        "protos/perfetto/trace/profiling/smaps.proto",
-        "protos/perfetto/trace/ps/process_stats.proto",
-        "protos/perfetto/trace/ps/process_tree.proto",
-        "protos/perfetto/trace/remote_clock_sync.proto",
-        "protos/perfetto/trace/statsd/statsd_atom.proto",
-        "protos/perfetto/trace/sys_stats/sys_stats.proto",
-        "protos/perfetto/trace/system_info.proto",
-        "protos/perfetto/trace/system_info/cpu_info.proto",
-        "protos/perfetto/trace/test_event.proto",
-        "protos/perfetto/trace/test_extensions.proto",
-        "protos/perfetto/trace/trace.proto",
-        "protos/perfetto/trace/trace_packet.proto",
-        "protos/perfetto/trace/trace_packet_defaults.proto",
-        "protos/perfetto/trace/trace_uuid.proto",
-        "protos/perfetto/trace/track_event/chrome_active_processes.proto",
-        "protos/perfetto/trace/track_event/chrome_application_state_info.proto",
-        "protos/perfetto/trace/track_event/chrome_compositor_scheduler_state.proto",
-        "protos/perfetto/trace/track_event/chrome_content_settings_event_info.proto",
-        "protos/perfetto/trace/track_event/chrome_frame_reporter.proto",
-        "protos/perfetto/trace/track_event/chrome_histogram_sample.proto",
-        "protos/perfetto/trace/track_event/chrome_keyed_service.proto",
-        "protos/perfetto/trace/track_event/chrome_latency_info.proto",
-        "protos/perfetto/trace/track_event/chrome_legacy_ipc.proto",
-        "protos/perfetto/trace/track_event/chrome_message_pump.proto",
-        "protos/perfetto/trace/track_event/chrome_mojo_event_info.proto",
-        "protos/perfetto/trace/track_event/chrome_process_descriptor.proto",
-        "protos/perfetto/trace/track_event/chrome_renderer_scheduler_state.proto",
-        "protos/perfetto/trace/track_event/chrome_thread_descriptor.proto",
-        "protos/perfetto/trace/track_event/chrome_user_event.proto",
-        "protos/perfetto/trace/track_event/chrome_window_handle_event_info.proto",
-        "protos/perfetto/trace/track_event/counter_descriptor.proto",
-        "protos/perfetto/trace/track_event/debug_annotation.proto",
-        "protos/perfetto/trace/track_event/log_message.proto",
-        "protos/perfetto/trace/track_event/pixel_modem.proto",
-        "protos/perfetto/trace/track_event/process_descriptor.proto",
-        "protos/perfetto/trace/track_event/range_of_interest.proto",
-        "protos/perfetto/trace/track_event/screenshot.proto",
-        "protos/perfetto/trace/track_event/source_location.proto",
-        "protos/perfetto/trace/track_event/task_execution.proto",
-        "protos/perfetto/trace/track_event/thread_descriptor.proto",
-        "protos/perfetto/trace/track_event/track_descriptor.proto",
-        "protos/perfetto/trace/track_event/track_event.proto",
-        "protos/perfetto/trace/translation/translation_table.proto",
-        "protos/perfetto/trace/trigger.proto",
-        "protos/perfetto/trace/ui_state.proto",
-    ],
-}
-
-// GN: [//protos/perfetto/trace:non_minimal_source_set, //protos/perfetto/trace:minimal_source_set]
 java_library {
     name: "perfetto_trace_java_protos",
     srcs: [
@@ -14077,6 +14384,8 @@
         "protos/perfetto/trace/android/camera_event.proto",
         "protos/perfetto/trace/android/frame_timeline_event.proto",
         "protos/perfetto/trace/android/gpu_mem_event.proto",
+        "protos/perfetto/trace/android/graphics/point.proto",
+        "protos/perfetto/trace/android/graphics/rect.proto",
         "protos/perfetto/trace/android/graphics_frame_event.proto",
         "protos/perfetto/trace/android/initial_display_state.proto",
         "protos/perfetto/trace/android/network_trace.proto",
@@ -14087,6 +14396,7 @@
         "protos/perfetto/trace/android/surfaceflinger_common.proto",
         "protos/perfetto/trace/android/surfaceflinger_layers.proto",
         "protos/perfetto/trace/android/surfaceflinger_transactions.proto",
+        "protos/perfetto/trace/android/winscope_extensions.proto",
         "protos/perfetto/trace/chrome/chrome_benchmark_metadata.proto",
         "protos/perfetto/trace/chrome/chrome_metadata.proto",
         "protos/perfetto/trace/chrome/chrome_trace_event.proto",
@@ -14254,6 +14564,8 @@
         ":perfetto_protos_perfetto_config_system_info_lite_gen",
         ":perfetto_protos_perfetto_config_track_event_lite_gen",
         ":perfetto_protos_perfetto_trace_android_lite_gen",
+        ":perfetto_protos_perfetto_trace_android_winscope_common_lite_gen",
+        ":perfetto_protos_perfetto_trace_android_winscope_regular_lite_gen",
         ":perfetto_protos_perfetto_trace_chrome_lite_gen",
         ":perfetto_protos_perfetto_trace_etw_lite_gen",
         ":perfetto_protos_perfetto_trace_filesystem_lite_gen",
@@ -14292,6 +14604,8 @@
         "perfetto_protos_perfetto_config_system_info_lite_gen_headers",
         "perfetto_protos_perfetto_config_track_event_lite_gen_headers",
         "perfetto_protos_perfetto_trace_android_lite_gen_headers",
+        "perfetto_protos_perfetto_trace_android_winscope_common_lite_gen_headers",
+        "perfetto_protos_perfetto_trace_android_winscope_regular_lite_gen_headers",
         "perfetto_protos_perfetto_trace_chrome_lite_gen_headers",
         "perfetto_protos_perfetto_trace_etw_lite_gen_headers",
         "perfetto_protos_perfetto_trace_filesystem_lite_gen_headers",
@@ -14326,6 +14640,8 @@
         "perfetto_protos_perfetto_config_system_info_lite_gen_headers",
         "perfetto_protos_perfetto_config_track_event_lite_gen_headers",
         "perfetto_protos_perfetto_trace_android_lite_gen_headers",
+        "perfetto_protos_perfetto_trace_android_winscope_common_lite_gen_headers",
+        "perfetto_protos_perfetto_trace_android_winscope_regular_lite_gen_headers",
         "perfetto_protos_perfetto_trace_chrome_lite_gen_headers",
         "perfetto_protos_perfetto_trace_etw_lite_gen_headers",
         "perfetto_protos_perfetto_trace_filesystem_lite_gen_headers",
@@ -14441,6 +14757,13 @@
         ":perfetto_protos_perfetto_ipc_wire_protocol_cpp_gen",
         ":perfetto_protos_perfetto_trace_android_cpp_gen",
         ":perfetto_protos_perfetto_trace_android_lite_gen",
+        ":perfetto_protos_perfetto_trace_android_winscope_common_cpp_gen",
+        ":perfetto_protos_perfetto_trace_android_winscope_common_lite_gen",
+        ":perfetto_protos_perfetto_trace_android_winscope_common_zero_gen",
+        ":perfetto_protos_perfetto_trace_android_winscope_extensions_zero_gen",
+        ":perfetto_protos_perfetto_trace_android_winscope_regular_cpp_gen",
+        ":perfetto_protos_perfetto_trace_android_winscope_regular_lite_gen",
+        ":perfetto_protos_perfetto_trace_android_winscope_regular_zero_gen",
         ":perfetto_protos_perfetto_trace_android_zero_gen",
         ":perfetto_protos_perfetto_trace_chrome_cpp_gen",
         ":perfetto_protos_perfetto_trace_chrome_lite_gen",
@@ -14807,6 +15130,13 @@
         "perfetto_protos_perfetto_ipc_wire_protocol_cpp_gen_headers",
         "perfetto_protos_perfetto_trace_android_cpp_gen_headers",
         "perfetto_protos_perfetto_trace_android_lite_gen_headers",
+        "perfetto_protos_perfetto_trace_android_winscope_common_cpp_gen_headers",
+        "perfetto_protos_perfetto_trace_android_winscope_common_lite_gen_headers",
+        "perfetto_protos_perfetto_trace_android_winscope_common_zero_gen_headers",
+        "perfetto_protos_perfetto_trace_android_winscope_extensions_zero_gen_headers",
+        "perfetto_protos_perfetto_trace_android_winscope_regular_cpp_gen_headers",
+        "perfetto_protos_perfetto_trace_android_winscope_regular_lite_gen_headers",
+        "perfetto_protos_perfetto_trace_android_winscope_regular_zero_gen_headers",
         "perfetto_protos_perfetto_trace_android_zero_gen_headers",
         "perfetto_protos_perfetto_trace_chrome_cpp_gen_headers",
         "perfetto_protos_perfetto_trace_chrome_lite_gen_headers",
@@ -14980,6 +15310,10 @@
         ":perfetto_protos_perfetto_ipc_ipc_gen",
         ":perfetto_protos_perfetto_ipc_wire_protocol_cpp_gen",
         ":perfetto_protos_perfetto_trace_android_cpp_gen",
+        ":perfetto_protos_perfetto_trace_android_winscope_common_cpp_gen",
+        ":perfetto_protos_perfetto_trace_android_winscope_common_zero_gen",
+        ":perfetto_protos_perfetto_trace_android_winscope_regular_cpp_gen",
+        ":perfetto_protos_perfetto_trace_android_winscope_regular_zero_gen",
         ":perfetto_protos_perfetto_trace_android_zero_gen",
         ":perfetto_protos_perfetto_trace_chrome_cpp_gen",
         ":perfetto_protos_perfetto_trace_chrome_zero_gen",
@@ -15105,6 +15439,10 @@
         "perfetto_protos_perfetto_ipc_ipc_gen_headers",
         "perfetto_protos_perfetto_ipc_wire_protocol_cpp_gen_headers",
         "perfetto_protos_perfetto_trace_android_cpp_gen_headers",
+        "perfetto_protos_perfetto_trace_android_winscope_common_cpp_gen_headers",
+        "perfetto_protos_perfetto_trace_android_winscope_common_zero_gen_headers",
+        "perfetto_protos_perfetto_trace_android_winscope_regular_cpp_gen_headers",
+        "perfetto_protos_perfetto_trace_android_winscope_regular_zero_gen_headers",
         "perfetto_protos_perfetto_trace_android_zero_gen_headers",
         "perfetto_protos_perfetto_trace_chrome_cpp_gen_headers",
         "perfetto_protos_perfetto_trace_chrome_zero_gen_headers",
@@ -15176,6 +15514,10 @@
         "perfetto_protos_perfetto_ipc_ipc_gen_headers",
         "perfetto_protos_perfetto_ipc_wire_protocol_cpp_gen_headers",
         "perfetto_protos_perfetto_trace_android_cpp_gen_headers",
+        "perfetto_protos_perfetto_trace_android_winscope_common_cpp_gen_headers",
+        "perfetto_protos_perfetto_trace_android_winscope_common_zero_gen_headers",
+        "perfetto_protos_perfetto_trace_android_winscope_regular_cpp_gen_headers",
+        "perfetto_protos_perfetto_trace_android_winscope_regular_zero_gen_headers",
         "perfetto_protos_perfetto_trace_android_zero_gen_headers",
         "perfetto_protos_perfetto_trace_chrome_cpp_gen_headers",
         "perfetto_protos_perfetto_trace_chrome_zero_gen_headers",
@@ -15219,6 +15561,250 @@
     ],
 }
 
+// GN: [//protos/perfetto/trace:non_minimal_source_set, //protos/perfetto/trace/android:winscope_extensions:source_set]
+filegroup {
+    name: "perfetto_winscope_filegroup_proto",
+    srcs: [
+        "protos/perfetto/common/android_energy_consumer_descriptor.proto",
+        "protos/perfetto/common/android_log_constants.proto",
+        "protos/perfetto/common/builtin_clock.proto",
+        "protos/perfetto/common/commit_data_request.proto",
+        "protos/perfetto/common/data_source_descriptor.proto",
+        "protos/perfetto/common/descriptor.proto",
+        "protos/perfetto/common/ftrace_descriptor.proto",
+        "protos/perfetto/common/gpu_counter_descriptor.proto",
+        "protos/perfetto/common/interceptor_descriptor.proto",
+        "protos/perfetto/common/observable_events.proto",
+        "protos/perfetto/common/perf_events.proto",
+        "protos/perfetto/common/protolog_common.proto",
+        "protos/perfetto/common/sys_stats_counters.proto",
+        "protos/perfetto/common/trace_stats.proto",
+        "protos/perfetto/common/tracing_service_capabilities.proto",
+        "protos/perfetto/common/tracing_service_state.proto",
+        "protos/perfetto/common/track_event_descriptor.proto",
+        "protos/perfetto/config/android/android_game_intervention_list_config.proto",
+        "protos/perfetto/config/android/android_input_event_config.proto",
+        "protos/perfetto/config/android/android_log_config.proto",
+        "protos/perfetto/config/android/android_polled_state_config.proto",
+        "protos/perfetto/config/android/android_sdk_sysprop_guard_config.proto",
+        "protos/perfetto/config/android/android_system_property_config.proto",
+        "protos/perfetto/config/android/network_trace_config.proto",
+        "protos/perfetto/config/android/packages_list_config.proto",
+        "protos/perfetto/config/android/pixel_modem_config.proto",
+        "protos/perfetto/config/android/protolog_config.proto",
+        "protos/perfetto/config/android/surfaceflinger_layers_config.proto",
+        "protos/perfetto/config/android/surfaceflinger_transactions_config.proto",
+        "protos/perfetto/config/chrome/chrome_config.proto",
+        "protos/perfetto/config/chrome/scenario_config.proto",
+        "protos/perfetto/config/chrome/v8_config.proto",
+        "protos/perfetto/config/data_source_config.proto",
+        "protos/perfetto/config/etw/etw_config.proto",
+        "protos/perfetto/config/ftrace/ftrace_config.proto",
+        "protos/perfetto/config/gpu/gpu_counter_config.proto",
+        "protos/perfetto/config/gpu/vulkan_memory_config.proto",
+        "protos/perfetto/config/inode_file/inode_file_config.proto",
+        "protos/perfetto/config/interceptor_config.proto",
+        "protos/perfetto/config/interceptors/console_config.proto",
+        "protos/perfetto/config/power/android_power_config.proto",
+        "protos/perfetto/config/process_stats/process_stats_config.proto",
+        "protos/perfetto/config/profiling/heapprofd_config.proto",
+        "protos/perfetto/config/profiling/java_hprof_config.proto",
+        "protos/perfetto/config/profiling/perf_event_config.proto",
+        "protos/perfetto/config/statsd/atom_ids.proto",
+        "protos/perfetto/config/statsd/statsd_tracing_config.proto",
+        "protos/perfetto/config/stress_test_config.proto",
+        "protos/perfetto/config/sys_stats/sys_stats_config.proto",
+        "protos/perfetto/config/system_info/system_info.proto",
+        "protos/perfetto/config/test_config.proto",
+        "protos/perfetto/config/trace_config.proto",
+        "protos/perfetto/config/track_event/track_event_config.proto",
+        "protos/perfetto/trace/android/android_game_intervention_list.proto",
+        "protos/perfetto/trace/android/android_input_event.proto",
+        "protos/perfetto/trace/android/android_log.proto",
+        "protos/perfetto/trace/android/android_system_property.proto",
+        "protos/perfetto/trace/android/camera_event.proto",
+        "protos/perfetto/trace/android/frame_timeline_event.proto",
+        "protos/perfetto/trace/android/gpu_mem_event.proto",
+        "protos/perfetto/trace/android/graphics/pixelformat.proto",
+        "protos/perfetto/trace/android/graphics/point.proto",
+        "protos/perfetto/trace/android/graphics/rect.proto",
+        "protos/perfetto/trace/android/graphics_frame_event.proto",
+        "protos/perfetto/trace/android/initial_display_state.proto",
+        "protos/perfetto/trace/android/inputmethodeditor.proto",
+        "protos/perfetto/trace/android/inputmethodservice/inputmethodservice.proto",
+        "protos/perfetto/trace/android/inputmethodservice/softinputwindow.proto",
+        "protos/perfetto/trace/android/network_trace.proto",
+        "protos/perfetto/trace/android/packages_list.proto",
+        "protos/perfetto/trace/android/pixel_modem_events.proto",
+        "protos/perfetto/trace/android/protolog.proto",
+        "protos/perfetto/trace/android/server/inputmethod/inputmethodmanagerservice.proto",
+        "protos/perfetto/trace/android/shell_transition.proto",
+        "protos/perfetto/trace/android/surfaceflinger_common.proto",
+        "protos/perfetto/trace/android/surfaceflinger_layers.proto",
+        "protos/perfetto/trace/android/surfaceflinger_transactions.proto",
+        "protos/perfetto/trace/android/typedef.proto",
+        "protos/perfetto/trace/android/view/display.proto",
+        "protos/perfetto/trace/android/view/displaycutout.proto",
+        "protos/perfetto/trace/android/view/imefocuscontroller.proto",
+        "protos/perfetto/trace/android/view/imeinsetssourceconsumer.proto",
+        "protos/perfetto/trace/android/view/inputmethod/editorinfo.proto",
+        "protos/perfetto/trace/android/view/inputmethod/inputconnection.proto",
+        "protos/perfetto/trace/android/view/inputmethod/inputmethodmanager.proto",
+        "protos/perfetto/trace/android/view/insetsanimationcontrolimpl.proto",
+        "protos/perfetto/trace/android/view/insetscontroller.proto",
+        "protos/perfetto/trace/android/view/insetssource.proto",
+        "protos/perfetto/trace/android/view/insetssourceconsumer.proto",
+        "protos/perfetto/trace/android/view/insetssourcecontrol.proto",
+        "protos/perfetto/trace/android/view/insetsstate.proto",
+        "protos/perfetto/trace/android/view/surfacecontrol.proto",
+        "protos/perfetto/trace/android/view/viewrootimpl.proto",
+        "protos/perfetto/trace/android/view/windowlayoutparams.proto",
+        "protos/perfetto/trace/android/winscope_extensions.proto",
+        "protos/perfetto/trace/android/winscope_extensions_impl.proto",
+        "protos/perfetto/trace/chrome/chrome_benchmark_metadata.proto",
+        "protos/perfetto/trace/chrome/chrome_metadata.proto",
+        "protos/perfetto/trace/chrome/chrome_trace_event.proto",
+        "protos/perfetto/trace/chrome/chrome_trigger.proto",
+        "protos/perfetto/trace/chrome/v8.proto",
+        "protos/perfetto/trace/clock_snapshot.proto",
+        "protos/perfetto/trace/etw/etw.proto",
+        "protos/perfetto/trace/etw/etw_event.proto",
+        "protos/perfetto/trace/etw/etw_event_bundle.proto",
+        "protos/perfetto/trace/extension_descriptor.proto",
+        "protos/perfetto/trace/filesystem/inode_file_map.proto",
+        "protos/perfetto/trace/ftrace/android_fs.proto",
+        "protos/perfetto/trace/ftrace/binder.proto",
+        "protos/perfetto/trace/ftrace/block.proto",
+        "protos/perfetto/trace/ftrace/cgroup.proto",
+        "protos/perfetto/trace/ftrace/clk.proto",
+        "protos/perfetto/trace/ftrace/cma.proto",
+        "protos/perfetto/trace/ftrace/compaction.proto",
+        "protos/perfetto/trace/ftrace/cpuhp.proto",
+        "protos/perfetto/trace/ftrace/cros_ec.proto",
+        "protos/perfetto/trace/ftrace/dma_fence.proto",
+        "protos/perfetto/trace/ftrace/dmabuf_heap.proto",
+        "protos/perfetto/trace/ftrace/dpu.proto",
+        "protos/perfetto/trace/ftrace/drm.proto",
+        "protos/perfetto/trace/ftrace/ext4.proto",
+        "protos/perfetto/trace/ftrace/f2fs.proto",
+        "protos/perfetto/trace/ftrace/fastrpc.proto",
+        "protos/perfetto/trace/ftrace/fence.proto",
+        "protos/perfetto/trace/ftrace/filemap.proto",
+        "protos/perfetto/trace/ftrace/ftrace.proto",
+        "protos/perfetto/trace/ftrace/ftrace_event.proto",
+        "protos/perfetto/trace/ftrace/ftrace_event_bundle.proto",
+        "protos/perfetto/trace/ftrace/ftrace_stats.proto",
+        "protos/perfetto/trace/ftrace/g2d.proto",
+        "protos/perfetto/trace/ftrace/generic.proto",
+        "protos/perfetto/trace/ftrace/gpu_mem.proto",
+        "protos/perfetto/trace/ftrace/gpu_scheduler.proto",
+        "protos/perfetto/trace/ftrace/hyp.proto",
+        "protos/perfetto/trace/ftrace/i2c.proto",
+        "protos/perfetto/trace/ftrace/ion.proto",
+        "protos/perfetto/trace/ftrace/ipi.proto",
+        "protos/perfetto/trace/ftrace/irq.proto",
+        "protos/perfetto/trace/ftrace/kmem.proto",
+        "protos/perfetto/trace/ftrace/kvm.proto",
+        "protos/perfetto/trace/ftrace/lowmemorykiller.proto",
+        "protos/perfetto/trace/ftrace/lwis.proto",
+        "protos/perfetto/trace/ftrace/mali.proto",
+        "protos/perfetto/trace/ftrace/mdss.proto",
+        "protos/perfetto/trace/ftrace/mm_event.proto",
+        "protos/perfetto/trace/ftrace/net.proto",
+        "protos/perfetto/trace/ftrace/oom.proto",
+        "protos/perfetto/trace/ftrace/panel.proto",
+        "protos/perfetto/trace/ftrace/perf_trace_counters.proto",
+        "protos/perfetto/trace/ftrace/power.proto",
+        "protos/perfetto/trace/ftrace/printk.proto",
+        "protos/perfetto/trace/ftrace/raw_syscalls.proto",
+        "protos/perfetto/trace/ftrace/regulator.proto",
+        "protos/perfetto/trace/ftrace/rpm.proto",
+        "protos/perfetto/trace/ftrace/samsung.proto",
+        "protos/perfetto/trace/ftrace/sched.proto",
+        "protos/perfetto/trace/ftrace/scm.proto",
+        "protos/perfetto/trace/ftrace/sde.proto",
+        "protos/perfetto/trace/ftrace/signal.proto",
+        "protos/perfetto/trace/ftrace/skb.proto",
+        "protos/perfetto/trace/ftrace/sock.proto",
+        "protos/perfetto/trace/ftrace/sync.proto",
+        "protos/perfetto/trace/ftrace/synthetic.proto",
+        "protos/perfetto/trace/ftrace/systrace.proto",
+        "protos/perfetto/trace/ftrace/task.proto",
+        "protos/perfetto/trace/ftrace/tcp.proto",
+        "protos/perfetto/trace/ftrace/test_bundle_wrapper.proto",
+        "protos/perfetto/trace/ftrace/thermal.proto",
+        "protos/perfetto/trace/ftrace/trusty.proto",
+        "protos/perfetto/trace/ftrace/ufs.proto",
+        "protos/perfetto/trace/ftrace/v4l2.proto",
+        "protos/perfetto/trace/ftrace/virtio_gpu.proto",
+        "protos/perfetto/trace/ftrace/virtio_video.proto",
+        "protos/perfetto/trace/ftrace/vmscan.proto",
+        "protos/perfetto/trace/ftrace/workqueue.proto",
+        "protos/perfetto/trace/gpu/gpu_counter_event.proto",
+        "protos/perfetto/trace/gpu/gpu_log.proto",
+        "protos/perfetto/trace/gpu/gpu_render_stage_event.proto",
+        "protos/perfetto/trace/gpu/vulkan_api_event.proto",
+        "protos/perfetto/trace/gpu/vulkan_memory_event.proto",
+        "protos/perfetto/trace/interned_data/interned_data.proto",
+        "protos/perfetto/trace/memory_graph.proto",
+        "protos/perfetto/trace/perfetto/perfetto_metatrace.proto",
+        "protos/perfetto/trace/perfetto/tracing_service_event.proto",
+        "protos/perfetto/trace/power/android_energy_estimation_breakdown.proto",
+        "protos/perfetto/trace/power/android_entity_state_residency.proto",
+        "protos/perfetto/trace/power/battery_counters.proto",
+        "protos/perfetto/trace/power/power_rails.proto",
+        "protos/perfetto/trace/profiling/deobfuscation.proto",
+        "protos/perfetto/trace/profiling/heap_graph.proto",
+        "protos/perfetto/trace/profiling/profile_common.proto",
+        "protos/perfetto/trace/profiling/profile_packet.proto",
+        "protos/perfetto/trace/profiling/smaps.proto",
+        "protos/perfetto/trace/ps/process_stats.proto",
+        "protos/perfetto/trace/ps/process_tree.proto",
+        "protos/perfetto/trace/remote_clock_sync.proto",
+        "protos/perfetto/trace/statsd/statsd_atom.proto",
+        "protos/perfetto/trace/sys_stats/sys_stats.proto",
+        "protos/perfetto/trace/system_info.proto",
+        "protos/perfetto/trace/system_info/cpu_info.proto",
+        "protos/perfetto/trace/test_event.proto",
+        "protos/perfetto/trace/test_extensions.proto",
+        "protos/perfetto/trace/trace.proto",
+        "protos/perfetto/trace/trace_packet.proto",
+        "protos/perfetto/trace/trace_packet_defaults.proto",
+        "protos/perfetto/trace/trace_uuid.proto",
+        "protos/perfetto/trace/track_event/chrome_active_processes.proto",
+        "protos/perfetto/trace/track_event/chrome_application_state_info.proto",
+        "protos/perfetto/trace/track_event/chrome_compositor_scheduler_state.proto",
+        "protos/perfetto/trace/track_event/chrome_content_settings_event_info.proto",
+        "protos/perfetto/trace/track_event/chrome_frame_reporter.proto",
+        "protos/perfetto/trace/track_event/chrome_histogram_sample.proto",
+        "protos/perfetto/trace/track_event/chrome_keyed_service.proto",
+        "protos/perfetto/trace/track_event/chrome_latency_info.proto",
+        "protos/perfetto/trace/track_event/chrome_legacy_ipc.proto",
+        "protos/perfetto/trace/track_event/chrome_message_pump.proto",
+        "protos/perfetto/trace/track_event/chrome_mojo_event_info.proto",
+        "protos/perfetto/trace/track_event/chrome_process_descriptor.proto",
+        "protos/perfetto/trace/track_event/chrome_renderer_scheduler_state.proto",
+        "protos/perfetto/trace/track_event/chrome_thread_descriptor.proto",
+        "protos/perfetto/trace/track_event/chrome_user_event.proto",
+        "protos/perfetto/trace/track_event/chrome_window_handle_event_info.proto",
+        "protos/perfetto/trace/track_event/counter_descriptor.proto",
+        "protos/perfetto/trace/track_event/debug_annotation.proto",
+        "protos/perfetto/trace/track_event/log_message.proto",
+        "protos/perfetto/trace/track_event/pixel_modem.proto",
+        "protos/perfetto/trace/track_event/process_descriptor.proto",
+        "protos/perfetto/trace/track_event/range_of_interest.proto",
+        "protos/perfetto/trace/track_event/screenshot.proto",
+        "protos/perfetto/trace/track_event/source_location.proto",
+        "protos/perfetto/trace/track_event/task_execution.proto",
+        "protos/perfetto/trace/track_event/thread_descriptor.proto",
+        "protos/perfetto/trace/track_event/track_descriptor.proto",
+        "protos/perfetto/trace/track_event/track_event.proto",
+        "protos/perfetto/trace/translation/translation_table.proto",
+        "protos/perfetto/trace/trigger.proto",
+        "protos/perfetto/trace/ui_state.proto",
+    ],
+}
+
 // GN: //src/protozero/protoc_plugin:protozero_plugin
 cc_binary_host {
     name: "protozero_plugin",
@@ -15279,6 +15865,9 @@
         ":perfetto_protos_perfetto_config_system_info_zero_gen",
         ":perfetto_protos_perfetto_config_track_event_zero_gen",
         ":perfetto_protos_perfetto_config_zero_gen",
+        ":perfetto_protos_perfetto_trace_android_winscope_common_zero_gen",
+        ":perfetto_protos_perfetto_trace_android_winscope_extensions_zero_gen",
+        ":perfetto_protos_perfetto_trace_android_winscope_regular_zero_gen",
         ":perfetto_protos_perfetto_trace_android_zero_gen",
         ":perfetto_protos_perfetto_trace_chrome_zero_gen",
         ":perfetto_protos_perfetto_trace_etw_zero_gen",
@@ -15400,6 +15989,9 @@
         "perfetto_protos_perfetto_config_system_info_zero_gen_headers",
         "perfetto_protos_perfetto_config_track_event_zero_gen_headers",
         "perfetto_protos_perfetto_config_zero_gen_headers",
+        "perfetto_protos_perfetto_trace_android_winscope_common_zero_gen_headers",
+        "perfetto_protos_perfetto_trace_android_winscope_extensions_zero_gen_headers",
+        "perfetto_protos_perfetto_trace_android_winscope_regular_zero_gen_headers",
         "perfetto_protos_perfetto_trace_android_zero_gen_headers",
         "perfetto_protos_perfetto_trace_chrome_zero_gen_headers",
         "perfetto_protos_perfetto_trace_etw_zero_gen_headers",
@@ -15514,6 +16106,8 @@
         ":perfetto_protos_perfetto_config_system_info_zero_gen",
         ":perfetto_protos_perfetto_config_track_event_zero_gen",
         ":perfetto_protos_perfetto_config_zero_gen",
+        ":perfetto_protos_perfetto_trace_android_winscope_common_zero_gen",
+        ":perfetto_protos_perfetto_trace_android_winscope_regular_zero_gen",
         ":perfetto_protos_perfetto_trace_android_zero_gen",
         ":perfetto_protos_perfetto_trace_chrome_zero_gen",
         ":perfetto_protos_perfetto_trace_etw_zero_gen",
@@ -15589,6 +16183,8 @@
         "perfetto_protos_perfetto_config_system_info_zero_gen_headers",
         "perfetto_protos_perfetto_config_track_event_zero_gen_headers",
         "perfetto_protos_perfetto_config_zero_gen_headers",
+        "perfetto_protos_perfetto_trace_android_winscope_common_zero_gen_headers",
+        "perfetto_protos_perfetto_trace_android_winscope_regular_zero_gen_headers",
         "perfetto_protos_perfetto_trace_android_zero_gen_headers",
         "perfetto_protos_perfetto_trace_chrome_zero_gen_headers",
         "perfetto_protos_perfetto_trace_etw_zero_gen_headers",
@@ -15655,6 +16251,9 @@
         ":perfetto_protos_perfetto_config_system_info_zero_gen",
         ":perfetto_protos_perfetto_config_track_event_zero_gen",
         ":perfetto_protos_perfetto_config_zero_gen",
+        ":perfetto_protos_perfetto_trace_android_winscope_common_zero_gen",
+        ":perfetto_protos_perfetto_trace_android_winscope_extensions_zero_gen",
+        ":perfetto_protos_perfetto_trace_android_winscope_regular_zero_gen",
         ":perfetto_protos_perfetto_trace_android_zero_gen",
         ":perfetto_protos_perfetto_trace_chrome_zero_gen",
         ":perfetto_protos_perfetto_trace_etw_zero_gen",
@@ -15776,6 +16375,9 @@
         "perfetto_protos_perfetto_config_system_info_zero_gen_headers",
         "perfetto_protos_perfetto_config_track_event_zero_gen_headers",
         "perfetto_protos_perfetto_config_zero_gen_headers",
+        "perfetto_protos_perfetto_trace_android_winscope_common_zero_gen_headers",
+        "perfetto_protos_perfetto_trace_android_winscope_extensions_zero_gen_headers",
+        "perfetto_protos_perfetto_trace_android_winscope_regular_zero_gen_headers",
         "perfetto_protos_perfetto_trace_android_zero_gen_headers",
         "perfetto_protos_perfetto_trace_chrome_zero_gen_headers",
         "perfetto_protos_perfetto_trace_etw_zero_gen_headers",
@@ -15905,6 +16507,8 @@
         ":perfetto_protos_perfetto_ipc_cpp_gen",
         ":perfetto_protos_perfetto_ipc_ipc_gen",
         ":perfetto_protos_perfetto_ipc_wire_protocol_cpp_gen",
+        ":perfetto_protos_perfetto_trace_android_winscope_common_zero_gen",
+        ":perfetto_protos_perfetto_trace_android_winscope_regular_zero_gen",
         ":perfetto_protos_perfetto_trace_android_zero_gen",
         ":perfetto_protos_perfetto_trace_chrome_zero_gen",
         ":perfetto_protos_perfetto_trace_etw_zero_gen",
@@ -16004,6 +16608,8 @@
         "perfetto_protos_perfetto_ipc_cpp_gen_headers",
         "perfetto_protos_perfetto_ipc_ipc_gen_headers",
         "perfetto_protos_perfetto_ipc_wire_protocol_cpp_gen_headers",
+        "perfetto_protos_perfetto_trace_android_winscope_common_zero_gen_headers",
+        "perfetto_protos_perfetto_trace_android_winscope_regular_zero_gen_headers",
         "perfetto_protos_perfetto_trace_android_zero_gen_headers",
         "perfetto_protos_perfetto_trace_chrome_zero_gen_headers",
         "perfetto_protos_perfetto_trace_etw_zero_gen_headers",
@@ -16106,6 +16712,8 @@
         ":perfetto_protos_perfetto_ipc_cpp_gen",
         ":perfetto_protos_perfetto_ipc_ipc_gen",
         ":perfetto_protos_perfetto_ipc_wire_protocol_cpp_gen",
+        ":perfetto_protos_perfetto_trace_android_winscope_common_zero_gen",
+        ":perfetto_protos_perfetto_trace_android_winscope_regular_zero_gen",
         ":perfetto_protos_perfetto_trace_android_zero_gen",
         ":perfetto_protos_perfetto_trace_chrome_zero_gen",
         ":perfetto_protos_perfetto_trace_etw_zero_gen",
@@ -16180,6 +16788,8 @@
         "perfetto_protos_perfetto_ipc_cpp_gen_headers",
         "perfetto_protos_perfetto_ipc_ipc_gen_headers",
         "perfetto_protos_perfetto_ipc_wire_protocol_cpp_gen_headers",
+        "perfetto_protos_perfetto_trace_android_winscope_common_zero_gen_headers",
+        "perfetto_protos_perfetto_trace_android_winscope_regular_zero_gen_headers",
         "perfetto_protos_perfetto_trace_android_zero_gen_headers",
         "perfetto_protos_perfetto_trace_chrome_zero_gen_headers",
         "perfetto_protos_perfetto_trace_etw_zero_gen_headers",
@@ -16384,7 +16994,7 @@
 gensrcs {
     name: "perfetto_trace_javastream_protos",
     srcs: [
-        ":perfetto_trace_filegroup_proto",
+        ":perfetto_winscope_filegroup_proto",
     ],
     tools: [
         "aprotoc",
@@ -16394,7 +17004,7 @@
     cmd: "mkdir -p $(genDir)/$(in) " +
         "&& $(location aprotoc) " +
         "--plugin=$(location protoc-gen-javastream) " +
-        "--javastream_opt=include_filter:perfetto.protos.TracePacket,perfetto.protos.ShellTransition,perfetto.protos.ShellHandlerMappings,perfetto.protos.ProtoLogMessage,perfetto.protos.ProtoLogViewerConfig,perfetto.protos.ShellHandlerMapping,perfetto.protos.ShellHandlerMappings,perfetto.protos.ProtoLogGroup,perfetto.protos.ProtoLogConfig,perfetto.protos.DataSourceConfig,perfetto.protos.InternedString,perfetto.protos.InternedData,perfetto.protos.ProtoLogLevel,perfetto.protos.TestEvent,perfetto.protos.TestEvent.TestPayload,perfetto.protos.TestConfig,perfetto.protos.TestConfig.DummyFields " +
+        "--javastream_opt=include_filter:perfetto.protos.TracePacket,perfetto.protos.ShellTransition,perfetto.protos.ShellHandlerMappings,perfetto.protos.ProtoLogMessage,perfetto.protos.ProtoLogViewerConfig,perfetto.protos.ShellHandlerMapping,perfetto.protos.ShellHandlerMappings,perfetto.protos.ProtoLogGroup,perfetto.protos.ProtoLogConfig,perfetto.protos.DataSourceConfig,perfetto.protos.InternedString,perfetto.protos.InternedData,perfetto.protos.ProtoLogLevel,perfetto.protos.TestEvent,perfetto.protos.TestEvent.TestPayload,perfetto.protos.TestConfig,perfetto.protos.TestConfig.DummyFields,perfetto.protos.WinscopeExtensionsImpl,perfetto.protos.InputMethodClientsTraceProto,perfetto.protos.InputMethodManagerServiceTraceProto,perfetto.protos.InputMethodServiceTraceProto " +
         "--javastream_out=$(genDir)/$(in) " +
         "-Iexternal/protobuf/src " +
         "-Iexternal/perfetto " +
diff --git a/Android.bp.extras b/Android.bp.extras
index 3ebf51e..75d3a81 100644
--- a/Android.bp.extras
+++ b/Android.bp.extras
@@ -175,7 +175,7 @@
 gensrcs {
     name: "perfetto_trace_javastream_protos",
     srcs: [
-        ":perfetto_trace_filegroup_proto",
+        ":perfetto_winscope_filegroup_proto",
     ],
     tools: [
         "aprotoc",
@@ -185,7 +185,7 @@
     cmd: "mkdir -p $(genDir)/$(in) " +
         "&& $(location aprotoc) " +
         "--plugin=$(location protoc-gen-javastream) " +
-        "--javastream_opt=include_filter:perfetto.protos.TracePacket,perfetto.protos.ShellTransition,perfetto.protos.ShellHandlerMappings,perfetto.protos.ProtoLogMessage,perfetto.protos.ProtoLogViewerConfig,perfetto.protos.ShellHandlerMapping,perfetto.protos.ShellHandlerMappings,perfetto.protos.ProtoLogGroup,perfetto.protos.ProtoLogConfig,perfetto.protos.DataSourceConfig,perfetto.protos.InternedString,perfetto.protos.InternedData,perfetto.protos.ProtoLogLevel,perfetto.protos.TestEvent,perfetto.protos.TestEvent.TestPayload,perfetto.protos.TestConfig,perfetto.protos.TestConfig.DummyFields " +
+        "--javastream_opt=include_filter:perfetto.protos.TracePacket,perfetto.protos.ShellTransition,perfetto.protos.ShellHandlerMappings,perfetto.protos.ProtoLogMessage,perfetto.protos.ProtoLogViewerConfig,perfetto.protos.ShellHandlerMapping,perfetto.protos.ShellHandlerMappings,perfetto.protos.ProtoLogGroup,perfetto.protos.ProtoLogConfig,perfetto.protos.DataSourceConfig,perfetto.protos.InternedString,perfetto.protos.InternedData,perfetto.protos.ProtoLogLevel,perfetto.protos.TestEvent,perfetto.protos.TestEvent.TestPayload,perfetto.protos.TestConfig,perfetto.protos.TestConfig.DummyFields,perfetto.protos.WinscopeExtensionsImpl,perfetto.protos.InputMethodClientsTraceProto,perfetto.protos.InputMethodManagerServiceTraceProto,perfetto.protos.InputMethodServiceTraceProto " +
         "--javastream_out=$(genDir)/$(in) " +
         "-Iexternal/protobuf/src " +
         "-Iexternal/perfetto " +
diff --git a/BUILD b/BUILD
index c6408f1..0b3a582 100644
--- a/BUILD
+++ b/BUILD
@@ -318,6 +318,9 @@
                ":protos_perfetto_config_system_info_zero",
                ":protos_perfetto_config_track_event_zero",
                ":protos_perfetto_config_zero",
+               ":protos_perfetto_trace_android_winscope_common_zero",
+               ":protos_perfetto_trace_android_winscope_extensions_zero",
+               ":protos_perfetto_trace_android_winscope_regular_zero",
                ":protos_perfetto_trace_android_zero",
                ":protos_perfetto_trace_chrome_zero",
                ":protos_perfetto_trace_etw_zero",
@@ -406,6 +409,8 @@
         ":protos_perfetto_config_track_event_cpp",
         ":protos_perfetto_config_track_event_zero",
         ":protos_perfetto_config_zero",
+        ":protos_perfetto_trace_android_winscope_common_zero",
+        ":protos_perfetto_trace_android_winscope_regular_zero",
         ":protos_perfetto_trace_android_zero",
         ":protos_perfetto_trace_chrome_zero",
         ":protos_perfetto_trace_etw_zero",
@@ -522,6 +527,8 @@
         ":protos_perfetto_config_zero",
         ":protos_perfetto_ipc_cpp",
         ":protos_perfetto_ipc_ipc",
+        ":protos_perfetto_trace_android_winscope_common_zero",
+        ":protos_perfetto_trace_android_winscope_regular_zero",
         ":protos_perfetto_trace_android_zero",
         ":protos_perfetto_trace_chrome_zero",
         ":protos_perfetto_trace_etw_zero",
@@ -3601,6 +3608,8 @@
         ":protos_perfetto_config_system_info_protos",
         ":protos_perfetto_config_track_event_protos",
         ":protos_perfetto_trace_android_protos",
+        ":protos_perfetto_trace_android_winscope_common_protos",
+        ":protos_perfetto_trace_android_winscope_regular_protos",
         ":protos_perfetto_trace_chrome_protos",
         ":protos_perfetto_trace_etw_protos",
         ":protos_perfetto_trace_filesystem_protos",
@@ -4626,23 +4635,98 @@
         "protos/perfetto/trace/android/network_trace.proto",
         "protos/perfetto/trace/android/packages_list.proto",
         "protos/perfetto/trace/android/pixel_modem_events.proto",
-        "protos/perfetto/trace/android/protolog.proto",
-        "protos/perfetto/trace/android/shell_transition.proto",
-        "protos/perfetto/trace/android/surfaceflinger_common.proto",
-        "protos/perfetto/trace/android/surfaceflinger_layers.proto",
-        "protos/perfetto/trace/android/surfaceflinger_transactions.proto",
     ],
     visibility = [
         PERFETTO_CONFIG.proto_library_visibility,
     ],
     deps = [
         ":protos_perfetto_common_protos",
+        ":protos_perfetto_trace_android_winscope_common_protos",
+        ":protos_perfetto_trace_android_winscope_regular_protos",
     ],
 )
 
-# GN target: //protos/perfetto/trace/android:winscope_deps
+# GN target: //protos/perfetto/trace/android:winscope_common:source_set
 perfetto_proto_library(
-    name = "protos_perfetto_trace_android_winscope_deps_protos",
+    name = "protos_perfetto_trace_android_winscope_common_protos",
+    srcs = [
+        "protos/perfetto/trace/android/graphics/point.proto",
+        "protos/perfetto/trace/android/graphics/rect.proto",
+        "protos/perfetto/trace/android/winscope_extensions.proto",
+    ],
+    visibility = [
+        PERFETTO_CONFIG.proto_library_visibility,
+    ],
+)
+
+# GN target: //protos/perfetto/trace/android:winscope_common:zero
+perfetto_cc_protozero_library(
+    name = "protos_perfetto_trace_android_winscope_common_zero",
+    deps = [
+        ":protos_perfetto_trace_android_winscope_common_protos",
+    ],
+)
+
+# GN target: //protos/perfetto/trace/android:winscope_descriptor
+perfetto_proto_descriptor(
+    name = "protos_perfetto_trace_android_winscope_descriptor",
+    deps = [
+        ":protos_perfetto_trace_android_winscope_extensions_protos",
+        ":protos_perfetto_trace_android_winscope_regular_protos",
+    ],
+    outs = [
+        "protos_perfetto_trace_android_winscope_descriptor.bin",
+    ],
+)
+
+# GN target: //protos/perfetto/trace/android:winscope_extensions:source_set
+perfetto_proto_library(
+    name = "protos_perfetto_trace_android_winscope_extensions_protos",
+    srcs = [
+        "protos/perfetto/trace/android/graphics/pixelformat.proto",
+        "protos/perfetto/trace/android/inputmethodeditor.proto",
+        "protos/perfetto/trace/android/inputmethodservice/inputmethodservice.proto",
+        "protos/perfetto/trace/android/inputmethodservice/softinputwindow.proto",
+        "protos/perfetto/trace/android/server/inputmethod/inputmethodmanagerservice.proto",
+        "protos/perfetto/trace/android/typedef.proto",
+        "protos/perfetto/trace/android/view/display.proto",
+        "protos/perfetto/trace/android/view/displaycutout.proto",
+        "protos/perfetto/trace/android/view/imefocuscontroller.proto",
+        "protos/perfetto/trace/android/view/imeinsetssourceconsumer.proto",
+        "protos/perfetto/trace/android/view/inputmethod/editorinfo.proto",
+        "protos/perfetto/trace/android/view/inputmethod/inputconnection.proto",
+        "protos/perfetto/trace/android/view/inputmethod/inputmethodmanager.proto",
+        "protos/perfetto/trace/android/view/insetsanimationcontrolimpl.proto",
+        "protos/perfetto/trace/android/view/insetscontroller.proto",
+        "protos/perfetto/trace/android/view/insetssource.proto",
+        "protos/perfetto/trace/android/view/insetssourceconsumer.proto",
+        "protos/perfetto/trace/android/view/insetssourcecontrol.proto",
+        "protos/perfetto/trace/android/view/insetsstate.proto",
+        "protos/perfetto/trace/android/view/surfacecontrol.proto",
+        "protos/perfetto/trace/android/view/viewrootimpl.proto",
+        "protos/perfetto/trace/android/view/windowlayoutparams.proto",
+        "protos/perfetto/trace/android/winscope_extensions_impl.proto",
+    ],
+    visibility = [
+        PERFETTO_CONFIG.proto_library_visibility,
+    ],
+    deps = [
+        ":protos_perfetto_trace_android_winscope_common_protos",
+    ] + PERFETTO_CONFIG.deps.protobuf_descriptor_proto,
+)
+
+# GN target: //protos/perfetto/trace/android:winscope_extensions:zero
+perfetto_cc_protozero_library(
+    name = "protos_perfetto_trace_android_winscope_extensions_zero",
+    deps = [
+        ":protos_perfetto_trace_android_winscope_common_zero",
+        ":protos_perfetto_trace_android_winscope_extensions_protos",
+    ],
+)
+
+# GN target: //protos/perfetto/trace/android:winscope_regular:source_set
+perfetto_proto_library(
+    name = "protos_perfetto_trace_android_winscope_regular_protos",
     srcs = [
         "protos/perfetto/trace/android/protolog.proto",
         "protos/perfetto/trace/android/shell_transition.proto",
@@ -4655,17 +4739,17 @@
     ],
     deps = [
         ":protos_perfetto_common_protos",
+        ":protos_perfetto_trace_android_winscope_common_protos",
     ],
 )
 
-# GN target: //protos/perfetto/trace/android:winscope_descriptor
-perfetto_proto_descriptor(
-    name = "protos_perfetto_trace_android_winscope_descriptor",
+# GN target: //protos/perfetto/trace/android:winscope_regular:zero
+perfetto_cc_protozero_library(
+    name = "protos_perfetto_trace_android_winscope_regular_zero",
     deps = [
-        ":protos_perfetto_trace_android_winscope_deps_protos",
-    ],
-    outs = [
-        "protos_perfetto_trace_android_winscope_descriptor.bin",
+        ":protos_perfetto_common_zero",
+        ":protos_perfetto_trace_android_winscope_common_zero",
+        ":protos_perfetto_trace_android_winscope_regular_protos",
     ],
 )
 
@@ -4675,6 +4759,8 @@
     deps = [
         ":protos_perfetto_common_zero",
         ":protos_perfetto_trace_android_protos",
+        ":protos_perfetto_trace_android_winscope_common_zero",
+        ":protos_perfetto_trace_android_winscope_regular_zero",
     ],
 )
 
@@ -4877,6 +4963,8 @@
     deps = [
         ":protos_perfetto_common_protos",
         ":protos_perfetto_trace_android_protos",
+        ":protos_perfetto_trace_android_winscope_common_protos",
+        ":protos_perfetto_trace_android_winscope_regular_protos",
         ":protos_perfetto_trace_chrome_protos",
         ":protos_perfetto_trace_gpu_protos",
         ":protos_perfetto_trace_profiling_protos",
@@ -4889,6 +4977,8 @@
     name = "protos_perfetto_trace_interned_data_zero",
     deps = [
         ":protos_perfetto_common_zero",
+        ":protos_perfetto_trace_android_winscope_common_zero",
+        ":protos_perfetto_trace_android_winscope_regular_zero",
         ":protos_perfetto_trace_android_zero",
         ":protos_perfetto_trace_chrome_zero",
         ":protos_perfetto_trace_gpu_zero",
@@ -4983,6 +5073,8 @@
         ":protos_perfetto_config_system_info_protos",
         ":protos_perfetto_config_track_event_protos",
         ":protos_perfetto_trace_android_protos",
+        ":protos_perfetto_trace_android_winscope_common_protos",
+        ":protos_perfetto_trace_android_winscope_regular_protos",
         ":protos_perfetto_trace_chrome_protos",
         ":protos_perfetto_trace_etw_protos",
         ":protos_perfetto_trace_filesystem_protos",
@@ -5023,6 +5115,8 @@
         ":protos_perfetto_config_system_info_zero",
         ":protos_perfetto_config_track_event_zero",
         ":protos_perfetto_config_zero",
+        ":protos_perfetto_trace_android_winscope_common_zero",
+        ":protos_perfetto_trace_android_winscope_regular_zero",
         ":protos_perfetto_trace_android_zero",
         ":protos_perfetto_trace_chrome_zero",
         ":protos_perfetto_trace_etw_zero",
@@ -5503,6 +5597,8 @@
         ":protos_perfetto_config_zero",
         ":protos_perfetto_ipc_cpp",
         ":protos_perfetto_ipc_ipc",
+        ":protos_perfetto_trace_android_winscope_common_zero",
+        ":protos_perfetto_trace_android_winscope_regular_zero",
         ":protos_perfetto_trace_android_zero",
         ":protos_perfetto_trace_chrome_zero",
         ":protos_perfetto_trace_etw_zero",
@@ -5595,6 +5691,8 @@
         ":protos_perfetto_config_zero",
         ":protos_perfetto_ipc_cpp",
         ":protos_perfetto_ipc_ipc",
+        ":protos_perfetto_trace_android_winscope_common_zero",
+        ":protos_perfetto_trace_android_winscope_regular_zero",
         ":protos_perfetto_trace_android_zero",
         ":protos_perfetto_trace_chrome_zero",
         ":protos_perfetto_trace_etw_zero",
@@ -5702,6 +5800,8 @@
         ":protos_perfetto_config_zero",
         ":protos_perfetto_ipc_cpp",
         ":protos_perfetto_ipc_ipc",
+        ":protos_perfetto_trace_android_winscope_common_zero",
+        ":protos_perfetto_trace_android_winscope_regular_zero",
         ":protos_perfetto_trace_android_zero",
         ":protos_perfetto_trace_chrome_zero",
         ":protos_perfetto_trace_etw_zero",
@@ -5835,6 +5935,9 @@
                ":protos_perfetto_config_system_info_zero",
                ":protos_perfetto_config_track_event_zero",
                ":protos_perfetto_config_zero",
+               ":protos_perfetto_trace_android_winscope_common_zero",
+               ":protos_perfetto_trace_android_winscope_extensions_zero",
+               ":protos_perfetto_trace_android_winscope_regular_zero",
                ":protos_perfetto_trace_android_zero",
                ":protos_perfetto_trace_chrome_zero",
                ":protos_perfetto_trace_etw_zero",
@@ -5994,6 +6097,9 @@
                ":protos_perfetto_config_system_info_zero",
                ":protos_perfetto_config_track_event_zero",
                ":protos_perfetto_config_zero",
+               ":protos_perfetto_trace_android_winscope_common_zero",
+               ":protos_perfetto_trace_android_winscope_extensions_zero",
+               ":protos_perfetto_trace_android_winscope_regular_zero",
                ":protos_perfetto_trace_android_zero",
                ":protos_perfetto_trace_chrome_zero",
                ":protos_perfetto_trace_etw_zero",
@@ -6082,6 +6188,8 @@
         ":protos_perfetto_config_system_info_zero",
         ":protos_perfetto_config_track_event_zero",
         ":protos_perfetto_config_zero",
+        ":protos_perfetto_trace_android_winscope_common_zero",
+        ":protos_perfetto_trace_android_winscope_regular_zero",
         ":protos_perfetto_trace_android_zero",
         ":protos_perfetto_trace_chrome_zero",
         ":protos_perfetto_trace_etw_zero",
@@ -6222,6 +6330,9 @@
                ":protos_perfetto_config_system_info_zero",
                ":protos_perfetto_config_track_event_zero",
                ":protos_perfetto_config_zero",
+               ":protos_perfetto_trace_android_winscope_common_zero",
+               ":protos_perfetto_trace_android_winscope_extensions_zero",
+               ":protos_perfetto_trace_android_winscope_regular_zero",
                ":protos_perfetto_trace_android_zero",
                ":protos_perfetto_trace_chrome_zero",
                ":protos_perfetto_trace_etw_zero",
diff --git a/protos/perfetto/trace/android/BUILD.gn b/protos/perfetto/trace/android/BUILD.gn
index 1910078..ae9ccfe 100644
--- a/protos/perfetto/trace/android/BUILD.gn
+++ b/protos/perfetto/trace/android/BUILD.gn
@@ -15,7 +15,7 @@
 import("../../../../gn/proto_library.gni")
 
 perfetto_proto_library("@TYPE@") {
-  deps = [ "../../common:@TYPE@" ]
+  deps = [ "../../common:@TYPE@", ":winscope_regular:@TYPE@" ]
 
   sources = [
     "android_game_intervention_list.proto",
@@ -30,17 +30,23 @@
     "network_trace.proto",
     "packages_list.proto",
     "pixel_modem_events.proto",
-    "protolog.proto",
-    "shell_transition.proto",
-    "surfaceflinger_common.proto",
-    "surfaceflinger_layers.proto",
-    "surfaceflinger_transactions.proto",
   ]
 }
 
-perfetto_proto_library("winscope_deps") {
-  proto_generators = [ "source_set" ]
-  deps = [ "../../common:@TYPE@" ]
+perfetto_proto_library("winscope_common:@TYPE@") {
+  sources = [
+    "graphics/point.proto",
+    "graphics/rect.proto",
+    "winscope_extensions.proto",
+  ]
+}
+
+# Winscope messages added to TracePacket directly
+perfetto_proto_library("winscope_regular:@TYPE@") {
+  deps = [
+    "../../common:@TYPE@",
+    ":winscope_common:@TYPE@",
+  ]
   sources = [
     "protolog.proto",
     "shell_transition.proto",
@@ -50,9 +56,44 @@
   ]
 }
 
+# Winscope messages added to TracePacket as extensions
+perfetto_proto_library("winscope_extensions:@TYPE@") {
+  deps = [ ":winscope_common:@TYPE@" ]
+  sources = [
+    "inputmethodeditor.proto",
+    "graphics/pixelformat.proto",
+    "inputmethodservice/inputmethodservice.proto",
+    "inputmethodservice/softinputwindow.proto",
+    "server/inputmethod/inputmethodmanagerservice.proto",
+    "typedef.proto",
+    "view/inputmethod/editorinfo.proto",
+    "view/inputmethod/inputconnection.proto",
+    "view/inputmethod/inputmethodmanager.proto",
+    "view/display.proto",
+    "view/displaycutout.proto",
+    "view/imefocuscontroller.proto",
+    "view/imeinsetssourceconsumer.proto",
+    "view/insetsanimationcontrolimpl.proto",
+    "view/insetscontroller.proto",
+    "view/insetssource.proto",
+    "view/insetssourceconsumer.proto",
+    "view/insetssourcecontrol.proto",
+    "view/insetsstate.proto",
+    "view/surfacecontrol.proto",
+    "view/viewrootimpl.proto",
+    "view/windowlayoutparams.proto",
+    "winscope_extensions_impl.proto",
+  ]
+  import_dirs = [ "${perfetto_protobuf_src_dir}" ]
+}
+
 perfetto_proto_library("winscope_descriptor") {
   proto_generators = [ "descriptor" ]
   generate_descriptor = "winscope.descriptor"
-  deps = [ ":winscope_deps" ]
+  deps = [
+    ":winscope_regular:source_set",
+    ":winscope_extensions:source_set",
+  ]
   sources = [ "winscope.proto" ]
+  import_dirs = [ "${perfetto_protobuf_src_dir}" ]
 }
diff --git a/protos/perfetto/trace/android/graphics/pixelformat.proto b/protos/perfetto/trace/android/graphics/pixelformat.proto
new file mode 100644
index 0000000..71dd948
--- /dev/null
+++ b/protos/perfetto/trace/android/graphics/pixelformat.proto
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+syntax = "proto2";
+
+package perfetto.protos;
+
+message PixelFormatProto {
+  enum Format {
+    UNKNOWN = 0;
+    TRANSLUCENT = -3;
+    TRANSPARENT = -2;
+    OPAQUE = -1;
+    RGBA_8888 = 1;
+    RGBX_8888 = 2;
+    RGB_888 = 3;
+    RGB_565 = 4;
+    RGBA_F16 = 0x16;
+    RGBA_1010102 = 0x2B;
+  }
+}
diff --git a/protos/perfetto/trace/android/graphics/point.proto b/protos/perfetto/trace/android/graphics/point.proto
new file mode 100644
index 0000000..cd25fa3
--- /dev/null
+++ b/protos/perfetto/trace/android/graphics/point.proto
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+syntax = "proto2";
+
+package perfetto.protos;
+
+message PointProto {
+  optional int32 x = 1;
+  optional int32 y = 2;
+}
diff --git a/protos/perfetto/trace/android/graphics/rect.proto b/protos/perfetto/trace/android/graphics/rect.proto
new file mode 100644
index 0000000..337a4f1
--- /dev/null
+++ b/protos/perfetto/trace/android/graphics/rect.proto
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+syntax = "proto2";
+
+package perfetto.protos;
+
+message RectProto {
+  optional int32 left = 1;
+  optional int32 top = 2;
+  optional int32 right = 3;
+  optional int32 bottom = 4;
+}
diff --git a/protos/perfetto/trace/android/inputmethodeditor.proto b/protos/perfetto/trace/android/inputmethodeditor.proto
new file mode 100644
index 0000000..29aeef1
--- /dev/null
+++ b/protos/perfetto/trace/android/inputmethodeditor.proto
@@ -0,0 +1,75 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+syntax = "proto2";
+
+package perfetto.protos;
+
+import "protos/perfetto/trace/android/inputmethodservice/inputmethodservice.proto";
+import "protos/perfetto/trace/android/server/inputmethod/inputmethodmanagerservice.proto";
+import "protos/perfetto/trace/android/view/inputmethod/inputmethodmanager.proto";
+import "protos/perfetto/trace/android/view/viewrootimpl.proto";
+import "protos/perfetto/trace/android/view/insetscontroller.proto";
+import "protos/perfetto/trace/android/view/imeinsetssourceconsumer.proto";
+import "protos/perfetto/trace/android/view/inputmethod/editorinfo.proto";
+import "protos/perfetto/trace/android/view/inputmethod/inputconnection.proto";
+import "protos/perfetto/trace/android/view/imefocuscontroller.proto";
+
+// One dump entry for clients that use InputMethod
+message InputMethodClientsTraceProto {
+  // elapsed realtime in nanos since boot of when this entry was logged
+  optional fixed64 elapsed_realtime_nanos = 1;
+
+  // where the trace originated
+  optional string where = 2;
+
+  optional ClientSideProto client = 3;
+
+  // groups together the dump from ime related client side classes
+  message ClientSideProto {
+    optional int32 display_id = 1;
+    optional InputMethodManagerProto input_method_manager = 2;
+    optional ViewRootImplProto view_root_impl = 3;
+    optional InsetsControllerProto insets_controller = 4;
+    optional ImeInsetsSourceConsumerProto ime_insets_source_consumer = 5;
+    optional EditorInfoProto editor_info = 6;
+    optional ImeFocusControllerProto ime_focus_controller = 7;
+    optional InputConnectionProto input_connection = 8;
+    optional InputConnectionCallProto input_connection_call = 9;
+  }
+}
+
+// One dump entry for InputMethodService
+message InputMethodServiceTraceProto {
+  // elapsed realtime in nanos since boot of when this entry was logged
+  optional fixed64 elapsed_realtime_nanos = 1;
+
+  // where the trace originated
+  optional string where = 2;
+
+  optional InputMethodServiceProto input_method_service = 3;
+}
+
+// One dump entry for InputMethodManagerService
+message InputMethodManagerServiceTraceProto {
+  // elapsed realtime in nanos since boot of when this entry was logged
+  optional fixed64 elapsed_realtime_nanos = 1;
+
+  // where the trace originated
+  optional string where = 2;
+
+  optional InputMethodManagerServiceProto input_method_manager_service = 3;
+}
\ No newline at end of file
diff --git a/protos/perfetto/trace/android/inputmethodservice/inputmethodservice.proto b/protos/perfetto/trace/android/inputmethodservice/inputmethodservice.proto
new file mode 100644
index 0000000..982dedb
--- /dev/null
+++ b/protos/perfetto/trace/android/inputmethodservice/inputmethodservice.proto
@@ -0,0 +1,63 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+syntax = "proto2";
+
+import "protos/perfetto/trace/android/inputmethodservice/softinputwindow.proto";
+import "protos/perfetto/trace/android/view/inputmethod/editorinfo.proto";
+import "protos/perfetto/trace/android/view/inputmethod/inputconnection.proto";
+
+package perfetto.protos;
+
+message InputMethodServiceProto {
+  optional SoftInputWindowProto soft_input_window = 1;
+  optional bool views_created = 2;
+  optional bool decor_view_visible = 3;
+  optional bool decor_view_was_visible = 4;
+  optional bool window_visible = 5;
+  optional bool in_show_window = 6;
+  optional string configuration = 7;
+  optional string token = 8;
+  optional string input_binding = 9;
+  optional bool input_started = 10;
+  optional bool input_view_started = 11;
+  optional bool candidates_view_started = 12;
+  optional EditorInfoProto input_editor_info = 13;
+  optional bool show_input_requested = 14;
+  optional bool last_show_input_requested = 15;
+  // can_pre_render
+  reserved 16;
+  // is_pre_rendered
+  reserved 17;
+  optional int32 show_input_flags = 18;
+  optional int32 candidates_visibility = 19;
+  optional bool fullscreen_applied = 20;
+  optional bool is_fullscreen = 21;
+  optional bool extract_view_hidden = 22;
+  optional int32 extracted_token = 23;
+  optional bool is_input_view_shown = 24;
+  optional int32 status_icon = 25;
+  optional InsetsProto last_computed_insets = 26;
+  optional string settings_observer = 27;
+  optional InputConnectionCallProto input_connection_call = 28;
+
+  message InsetsProto {
+    optional int32 content_top_insets = 1;
+    optional int32 visible_top_insets = 2;
+    optional int32 touchable_insets = 3;
+    optional string touchable_region = 4;
+  }
+}
\ No newline at end of file
diff --git a/protos/perfetto/trace/android/inputmethodservice/softinputwindow.proto b/protos/perfetto/trace/android/inputmethodservice/softinputwindow.proto
new file mode 100644
index 0000000..1066ea3
--- /dev/null
+++ b/protos/perfetto/trace/android/inputmethodservice/softinputwindow.proto
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+syntax = "proto2";
+
+package perfetto.protos;
+
+message SoftInputWindowProto {
+  // name
+  reserved 1;
+  // window_type
+  reserved 2;
+  // gravity
+  reserved 3;
+  // takes_focus
+  reserved 4;
+  // bounds
+  reserved 5;
+  optional int32 window_state = 6;
+}
\ No newline at end of file
diff --git a/protos/perfetto/trace/android/server/inputmethod/inputmethodmanagerservice.proto b/protos/perfetto/trace/android/server/inputmethod/inputmethodmanagerservice.proto
new file mode 100644
index 0000000..a9a0d9a
--- /dev/null
+++ b/protos/perfetto/trace/android/server/inputmethod/inputmethodmanagerservice.proto
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+syntax = "proto2";
+
+import "protos/perfetto/trace/android/view/inputmethod/editorinfo.proto";
+
+package perfetto.protos;
+
+message InputMethodManagerServiceProto {
+  optional string cur_method_id = 1;
+  optional int32 cur_seq = 2;
+  optional string cur_client = 3;
+  optional string cur_focused_window_name = 4;
+  optional string last_ime_target_window_name = 5;
+  optional string cur_focused_window_soft_input_mode = 6;
+  optional EditorInfoProto cur_attribute = 7;
+  optional string cur_id = 8;
+  // deprecated show_requested
+  reserved 9;
+  optional bool show_explicitly_requested = 10;
+  optional bool show_forced = 11;
+  optional bool input_shown = 12;
+  optional bool in_fullscreen_mode = 13;
+  optional string cur_token = 14;
+  optional int32 cur_token_display_id = 15;
+  optional bool system_ready = 16;
+  optional int32 last_switch_user_id = 17;
+  optional bool have_connection = 18;
+  optional bool bound_to_method = 19;
+  optional bool is_interactive = 20;
+  optional int32 back_disposition = 21;
+  optional int32 ime_window_visibility = 22;
+  optional bool show_ime_with_hard_keyboard = 23;
+  optional bool accessibility_requesting_no_soft_keyboard = 24;
+}
\ No newline at end of file
diff --git a/protos/perfetto/trace/android/surfaceflinger_common.proto b/protos/perfetto/trace/android/surfaceflinger_common.proto
index ef27e11..72f8159 100644
--- a/protos/perfetto/trace/android/surfaceflinger_common.proto
+++ b/protos/perfetto/trace/android/surfaceflinger_common.proto
@@ -16,6 +16,8 @@
 
 syntax = "proto2";
 
+import "protos/perfetto/trace/android/graphics/rect.proto";
+
 package perfetto.protos;
 
 message RegionProto {
@@ -24,13 +26,6 @@
   repeated RectProto rect = 2;
 }
 
-message RectProto {
-  optional int32 left = 1;
-  optional int32 top = 2;
-  optional int32 right = 3;
-  optional int32 bottom = 4;
-}
-
 message SizeProto {
   optional int32 w = 1;
   optional int32 h = 2;
diff --git a/protos/perfetto/trace/android/surfaceflinger_layers.proto b/protos/perfetto/trace/android/surfaceflinger_layers.proto
index 6640fa7..bdc40d8 100644
--- a/protos/perfetto/trace/android/surfaceflinger_layers.proto
+++ b/protos/perfetto/trace/android/surfaceflinger_layers.proto
@@ -19,6 +19,7 @@
 package perfetto.protos;
 
 import "protos/perfetto/trace/android/surfaceflinger_common.proto";
+import "protos/perfetto/trace/android/graphics/rect.proto";
 
 // Message used by Winscope to process legacy trace files.
 // Represents a file full of surface flinger trace entries.
diff --git a/protos/perfetto/trace/android/surfaceflinger_transactions.proto b/protos/perfetto/trace/android/surfaceflinger_transactions.proto
index efc709c..bd128d8 100644
--- a/protos/perfetto/trace/android/surfaceflinger_transactions.proto
+++ b/protos/perfetto/trace/android/surfaceflinger_transactions.proto
@@ -19,6 +19,7 @@
 package perfetto.protos;
 
 import "protos/perfetto/trace/android/surfaceflinger_common.proto";
+import "protos/perfetto/trace/android/graphics/rect.proto";
 
 // Message used by Winscope to process legacy trace files.
 // Represents a file full of surface flinger transactions.
diff --git a/protos/perfetto/trace/android/typedef.proto b/protos/perfetto/trace/android/typedef.proto
new file mode 100644
index 0000000..495c648
--- /dev/null
+++ b/protos/perfetto/trace/android/typedef.proto
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+syntax = "proto2";
+
+package perfetto.protos;
+
+import "google/protobuf/descriptor.proto";
+
+extend google.protobuf.FieldOptions {
+  // Used to specify the IntDef annotation type so that ints
+  // can be associated with their string representation
+
+  // 60001 is a random field numbers assigned to the custom options
+  // numbers between 50000 and 99999 are reserved for internal use within
+  // individual organizations
+  optional string typedef = 60001;
+}
diff --git a/protos/perfetto/trace/android/view/display.proto b/protos/perfetto/trace/android/view/display.proto
new file mode 100644
index 0000000..43844c8
--- /dev/null
+++ b/protos/perfetto/trace/android/view/display.proto
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+syntax = "proto2";
+package perfetto.protos;
+
+message ViewDisplayProto {
+  enum ColorMode {
+    COLOR_MODE_INVALID = -1;
+    // The default or native gamut of the display.
+    COLOR_MODE_DEFAULT = 0;
+    COLOR_MODE_BT601_625 = 1;
+    COLOR_MODE_BT601_625_UNADJUSTED = 2;
+    COLOR_MODE_BT601_525 = 3;
+    COLOR_MODE_BT601_525_UNADJUSTED = 4;
+    COLOR_MODE_BT709 = 5;
+    COLOR_MODE_DCI_P3 = 6;
+    COLOR_MODE_SRGB = 7;
+    COLOR_MODE_ADOBE_RGB = 8;
+    COLOR_MODE_DISPLAY_P3 = 9;
+  }
+}
diff --git a/protos/perfetto/trace/android/view/displaycutout.proto b/protos/perfetto/trace/android/view/displaycutout.proto
new file mode 100644
index 0000000..a7e5c94
--- /dev/null
+++ b/protos/perfetto/trace/android/view/displaycutout.proto
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+syntax = "proto2";
+
+import "protos/perfetto/trace/android/graphics/rect.proto";
+
+package perfetto.protos;
+
+message DisplayCutoutProto {
+  optional RectProto insets = 1;
+  // RectProto bounds
+  reserved 2;
+  optional RectProto bound_left = 3;
+  optional RectProto bound_top = 4;
+  optional RectProto bound_right = 5;
+  optional RectProto bound_bottom = 6;
+  optional RectProto waterfall_insets = 7;
+  repeated int32 side_overrides = 8;
+}
diff --git a/protos/perfetto/trace/android/view/imefocuscontroller.proto b/protos/perfetto/trace/android/view/imefocuscontroller.proto
new file mode 100644
index 0000000..3e86304
--- /dev/null
+++ b/protos/perfetto/trace/android/view/imefocuscontroller.proto
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+syntax = "proto2";
+
+package perfetto.protos;
+
+// Represents a {@link android.view.ImeFocusController} object
+message ImeFocusControllerProto {
+  optional bool has_ime_focus = 1;
+  optional string served_view = 2 [deprecated = true];
+  optional string next_served_view = 3 [deprecated = true];
+}
\ No newline at end of file
diff --git a/protos/perfetto/trace/android/view/imeinsetssourceconsumer.proto b/protos/perfetto/trace/android/view/imeinsetssourceconsumer.proto
new file mode 100644
index 0000000..280c2fd
--- /dev/null
+++ b/protos/perfetto/trace/android/view/imeinsetssourceconsumer.proto
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+syntax = "proto2";
+
+import "protos/perfetto/trace/android/view/insetssourceconsumer.proto";
+
+package perfetto.protos;
+
+// Represents a {@link android.view.ImeInsetsSourceConsumer} object
+message ImeInsetsSourceConsumerProto {
+  optional InsetsSourceConsumerProto insets_source_consumer = 1;
+  // focused_editor = 2
+  reserved 2;
+  optional bool is_requested_visible_awaiting_control = 3;
+  optional bool is_hide_animation_running = 4 [deprecated = true];
+  optional bool is_show_requested_during_hide_animation = 5 [deprecated = true];
+  optional bool has_pending_request = 6;
+}
\ No newline at end of file
diff --git a/protos/perfetto/trace/android/view/inputmethod/editorinfo.proto b/protos/perfetto/trace/android/view/inputmethod/editorinfo.proto
new file mode 100644
index 0000000..bc2847f
--- /dev/null
+++ b/protos/perfetto/trace/android/view/inputmethod/editorinfo.proto
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+syntax = "proto2";
+
+package perfetto.protos;
+
+// Represents a {@link android.view.inputmethod.EditorInfo} object
+message EditorInfoProto {
+  optional int32 input_type = 1;
+  optional int32 ime_options = 2;
+  optional string private_ime_options = 3;
+  optional string package_name = 4;
+  optional int32 field_id = 5;
+  optional int32 target_input_method_user_id = 6;
+}
\ No newline at end of file
diff --git a/protos/perfetto/trace/android/view/inputmethod/inputconnection.proto b/protos/perfetto/trace/android/view/inputmethod/inputconnection.proto
new file mode 100644
index 0000000..5a5f177
--- /dev/null
+++ b/protos/perfetto/trace/android/view/inputmethod/inputconnection.proto
@@ -0,0 +1,97 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+syntax = "proto2";
+
+package perfetto.protos;
+
+// Represents a {@link android.view.inputmethod.InputConnection} object
+message InputConnectionProto {
+  // string editable_text
+  reserved 1;
+  // string selected_text
+  reserved 2;
+  optional int32 selected_text_start = 3;
+  optional int32 selected_text_end = 4;
+  optional int32 cursor_caps_mode = 5;
+}
+
+// Shows information about parameters and result for method calls to
+// {@link android.view.inputmethod.InputConnection}
+message InputConnectionCallProto {
+  oneof method_call {
+    GetTextBeforeCursor get_text_before_cursor = 1;
+    GetTextAfterCursor get_text_after_cursor = 2;
+    GetSelectedText get_selected_text = 3;
+    GetSurroundingText get_surrounding_text = 4;
+    GetCursorCapsMode get_cursor_caps_mode = 5;
+    GetExtractedText get_extracted_text = 6;
+  }
+
+  message GetTextBeforeCursor {
+    optional int32 length = 1;
+    optional int32 flags = 2;
+    // string result
+    reserved 3;
+  }
+
+  message GetTextAfterCursor {
+    optional int32 length = 1;
+    optional int32 flags = 2;
+    // string result
+    reserved 3;
+  }
+
+  message GetSelectedText {
+    optional int32 flags = 1;
+    // string result
+    reserved 2;
+  }
+
+  message GetSurroundingText {
+    optional int32 before_length = 1;
+    optional int32 after_length = 2;
+    optional int32 flags = 3;
+    optional SurroundingText result = 4;
+
+    message SurroundingText {
+      // string text
+      reserved 1;
+      optional int32 selection_start = 2;
+      optional int32 selection_end = 3;
+      optional int32 offset = 4;
+    }
+  }
+
+  message GetCursorCapsMode {
+    optional int32 req_modes = 1;
+    optional int32 result = 2;
+  }
+
+  message GetExtractedText {
+    optional ExtractedTextRequest request = 1;
+    optional int32 flags = 2;
+    // string result
+    reserved 3;
+
+    message ExtractedTextRequest {
+      optional int32 token = 1;
+      optional int32 flags = 2;
+      optional int32 hint_max_lines = 3;
+      optional int32 hint_max_chars = 4;
+    }
+  }
+}
\ No newline at end of file
diff --git a/protos/perfetto/trace/android/view/inputmethod/inputmethodmanager.proto b/protos/perfetto/trace/android/view/inputmethod/inputmethodmanager.proto
new file mode 100644
index 0000000..e93be02
--- /dev/null
+++ b/protos/perfetto/trace/android/view/inputmethod/inputmethodmanager.proto
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+syntax = "proto2";
+
+package perfetto.protos;
+
+// Represents a {@link android.view.inputmethod.InputMethodManager} object
+message InputMethodManagerProto {
+  optional string cur_id = 1;
+  optional bool fullscreen_mode = 2;
+  optional int32 display_id = 3;
+  optional bool active = 4;
+  optional bool served_connecting = 5;
+  optional string served_view = 6;
+  optional string next_served_view = 7;
+}
\ No newline at end of file
diff --git a/protos/perfetto/trace/android/view/insetsanimationcontrolimpl.proto b/protos/perfetto/trace/android/view/insetsanimationcontrolimpl.proto
new file mode 100644
index 0000000..9cd871d
--- /dev/null
+++ b/protos/perfetto/trace/android/view/insetsanimationcontrolimpl.proto
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+syntax = "proto2";
+
+package perfetto.protos;
+
+// Represents a {@link android.view.InsetsAnimationControlImpl} object
+message InsetsAnimationControlImplProto {
+  optional bool is_cancelled = 1;
+  optional bool is_finished = 2;
+  optional string tmp_matrix = 3;
+  optional string pending_insets = 4;
+  optional float pending_fraction = 5;
+  optional bool shown_on_finish = 6;
+  optional float current_alpha = 7;
+  optional float pending_alpha = 8;
+}
\ No newline at end of file
diff --git a/protos/perfetto/trace/android/view/insetscontroller.proto b/protos/perfetto/trace/android/view/insetscontroller.proto
new file mode 100644
index 0000000..e5728ee
--- /dev/null
+++ b/protos/perfetto/trace/android/view/insetscontroller.proto
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+syntax = "proto2";
+
+import "protos/perfetto/trace/android/view/insetsstate.proto";
+import "protos/perfetto/trace/android/view/insetsanimationcontrolimpl.proto";
+
+package perfetto.protos;
+
+// Represents a {@link android.view.InsetsController} object
+message InsetsControllerProto {
+  optional InsetsStateProto state = 1;
+  repeated InsetsAnimationControlImplProto control = 2;
+}
\ No newline at end of file
diff --git a/protos/perfetto/trace/android/view/insetssource.proto b/protos/perfetto/trace/android/view/insetssource.proto
new file mode 100644
index 0000000..b09d81d
--- /dev/null
+++ b/protos/perfetto/trace/android/view/insetssource.proto
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+syntax = "proto2";
+
+import "protos/perfetto/trace/android/graphics/rect.proto";
+
+package perfetto.protos;
+
+// Represents a {@link android.view.InsetsSource} object
+message InsetsSourceProto {
+  optional string type = 1 [deprecated = true];
+  optional RectProto frame = 2;
+  optional RectProto visible_frame = 3;
+  optional bool visible = 4;
+  optional int32 type_number = 5;
+}
\ No newline at end of file
diff --git a/protos/perfetto/trace/android/view/insetssourceconsumer.proto b/protos/perfetto/trace/android/view/insetssourceconsumer.proto
new file mode 100644
index 0000000..1d0a860
--- /dev/null
+++ b/protos/perfetto/trace/android/view/insetssourceconsumer.proto
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+syntax = "proto2";
+
+import "protos/perfetto/trace/android/view/insetssourcecontrol.proto";
+import "protos/perfetto/trace/android/graphics/rect.proto";
+
+package perfetto.protos;
+
+// Represents a {@link android.view.InsetsSourceConsumer} object
+message InsetsSourceConsumerProto {
+  optional string internal_insets_type = 1 [deprecated = true];
+  optional bool has_window_focus = 2;
+  optional bool is_requested_visible = 3;
+  optional InsetsSourceControlProto source_control = 4;
+  optional RectProto pending_frame = 5;
+  optional RectProto pending_visible_frame = 6;
+  optional int32 animation_state = 7;
+  optional int32 type_number = 8;
+}
\ No newline at end of file
diff --git a/protos/perfetto/trace/android/view/insetssourcecontrol.proto b/protos/perfetto/trace/android/view/insetssourcecontrol.proto
new file mode 100644
index 0000000..5507f8b
--- /dev/null
+++ b/protos/perfetto/trace/android/view/insetssourcecontrol.proto
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+syntax = "proto2";
+
+import "protos/perfetto/trace/android/graphics/point.proto";
+import "protos/perfetto/trace/android/view/surfacecontrol.proto";
+
+package perfetto.protos;
+
+// Represents a {@link android.view.InsetsSourceControl} object
+message InsetsSourceControlProto {
+  optional string type = 1 [deprecated = true];
+  optional PointProto position = 2;
+  optional SurfaceControlProto leash = 3;
+  optional int32 type_number = 4;
+}
\ No newline at end of file
diff --git a/protos/perfetto/trace/android/view/insetsstate.proto b/protos/perfetto/trace/android/view/insetsstate.proto
new file mode 100644
index 0000000..89ac016
--- /dev/null
+++ b/protos/perfetto/trace/android/view/insetsstate.proto
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+syntax = "proto2";
+
+import "protos/perfetto/trace/android/graphics/rect.proto";
+import "protos/perfetto/trace/android/view/displaycutout.proto";
+import "protos/perfetto/trace/android/view/insetssource.proto";
+
+package perfetto.protos;
+
+// Represents a {@link android.view.InsetsState} object
+message InsetsStateProto {
+  repeated InsetsSourceProto sources = 1;
+  optional RectProto display_frame = 2;
+  optional DisplayCutoutProto display_cutout = 3;
+}
diff --git a/protos/perfetto/trace/android/view/surfacecontrol.proto b/protos/perfetto/trace/android/view/surfacecontrol.proto
new file mode 100644
index 0000000..5b6a0c8
--- /dev/null
+++ b/protos/perfetto/trace/android/view/surfacecontrol.proto
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+syntax = "proto2";
+
+package perfetto.protos;
+
+// Represents a {@link android.view.SurfaceControl} object
+message SurfaceControlProto {
+  optional int32 hash_code = 1;
+  optional string name = 2;
+  optional int32 layerId = 3;
+}
diff --git a/protos/perfetto/trace/android/view/viewrootimpl.proto b/protos/perfetto/trace/android/view/viewrootimpl.proto
new file mode 100644
index 0000000..aab3ea1
--- /dev/null
+++ b/protos/perfetto/trace/android/view/viewrootimpl.proto
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+syntax = "proto2";
+
+import "protos/perfetto/trace/android/graphics/rect.proto";
+import "protos/perfetto/trace/android/view/displaycutout.proto";
+import "protos/perfetto/trace/android/view/windowlayoutparams.proto";
+
+package perfetto.protos;
+
+// Represents a {@link android.view.ViewRootImpl} object
+message ViewRootImplProto {
+  optional string view = 1;
+  optional int32 display_id = 2;
+  optional bool app_visible = 3;
+  optional int32 width = 4;
+  optional int32 height = 5;
+  optional bool is_animating = 6;
+  optional RectProto visible_rect = 7;
+  optional bool is_drawing = 8;
+  optional bool added = 9;
+  optional RectProto win_frame = 10;
+  optional DisplayCutoutProto pending_display_cutout = 11 [deprecated = true];
+  optional string last_window_insets = 12;
+  optional string soft_input_mode = 13;
+  optional int32 scroll_y = 14;
+  optional int32 cur_scroll_y = 15;
+  optional bool removed = 16;
+  optional WindowLayoutParamsProto window_attributes = 17;
+}
\ No newline at end of file
diff --git a/protos/perfetto/trace/android/view/windowlayoutparams.proto b/protos/perfetto/trace/android/view/windowlayoutparams.proto
new file mode 100644
index 0000000..ec60e94
--- /dev/null
+++ b/protos/perfetto/trace/android/view/windowlayoutparams.proto
@@ -0,0 +1,89 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+syntax = "proto2";
+
+import "protos/perfetto/trace/android/graphics/pixelformat.proto";
+import "protos/perfetto/trace/android/view/display.proto";
+import "protos/perfetto/trace/android/typedef.proto";
+
+package perfetto.protos;
+
+// represents WindowManager.LayoutParams
+message WindowLayoutParamsProto {
+  optional int32 type = 1
+      [(.perfetto.protos.typedef) =
+           "android.view.WindowManager.LayoutParams.WindowType"];
+  optional int32 x = 2;
+  optional int32 y = 3;
+  optional int32 width = 4;
+  optional int32 height = 5;
+  optional float horizontal_margin = 6;
+  optional float vertical_margin = 7;
+  optional int32 gravity = 8
+      [(.perfetto.protos.typedef) = "android.view.Gravity.GravityFlags"];
+  optional int32 soft_input_mode = 9
+      [(.perfetto.protos.typedef) =
+           "android.view.WindowManager.LayoutParams.SoftInputModeFlags"];
+  optional PixelFormatProto.Format format = 10;
+  optional int32 window_animations = 11;
+  optional float alpha = 12;
+  optional float screen_brightness = 13;
+  optional float button_brightness = 14;
+
+  enum RotationAnimation {
+    ROTATION_ANIMATION_UNSPECIFIED = -1;
+    ROTATION_ANIMATION_CROSSFADE = 1;
+    ROTATION_ANIMATION_JUMPCUT = 2;
+    ROTATION_ANIMATION_SEAMLESS = 3;
+  }
+  optional RotationAnimation rotation_animation = 15;
+
+  optional float preferred_refresh_rate = 16;
+  optional int32 preferred_display_mode_id = 17;
+  optional bool has_system_ui_listeners = 18;
+  optional uint32 input_feature_flags = 19
+      [(.perfetto.protos.typedef) =
+           "android.view.WindowManager.LayoutParams.InputFeatureFlags"];
+  optional int64 user_activity_timeout = 20;
+
+  optional ViewDisplayProto.ColorMode color_mode = 23;
+  optional uint32 flags = 24
+      [(.perfetto.protos.typedef) =
+           "android.view.WindowManager.LayoutParams.Flags"];
+  optional uint32 private_flags = 26
+      [(.perfetto.protos.typedef) =
+           "android.view.WindowManager.LayoutParams.PrivateFlags"];
+  optional uint32 system_ui_visibility_flags = 27
+      [(.perfetto.protos.typedef) =
+           "android.view.WindowManager.LayoutParams.SystemUiVisibilityFlags"];
+  optional uint32 subtree_system_ui_visibility_flags = 28
+      [(.perfetto.protos.typedef) =
+           "android.view.WindowManager.LayoutParams.SystemUiVisibilityFlags"];
+  optional uint32 appearance = 29
+      [(.perfetto.protos.typedef) =
+           "android.view.WindowInsetsController.Appearance"];
+  optional uint32 behavior = 30
+      [(.perfetto.protos.typedef) =
+           "android.view.WindowInsetsController.Behavior"];
+  optional uint32 fit_insets_types = 31
+      [(.perfetto.protos.typedef) =
+           "android.view.WindowInsets.Type.InsetsType"];
+  optional uint32 fit_insets_sides = 32
+      [(.perfetto.protos.typedef) =
+           "android.view.WindowInsets.Side.InsetsSide"];
+  optional bool fit_ignore_visibility = 33;
+}
diff --git a/protos/perfetto/trace/android/winscope.proto b/protos/perfetto/trace/android/winscope.proto
index a0c61f7..d7927d8 100644
--- a/protos/perfetto/trace/android/winscope.proto
+++ b/protos/perfetto/trace/android/winscope.proto
@@ -22,6 +22,7 @@
 import "protos/perfetto/trace/android/shell_transition.proto";
 import "protos/perfetto/trace/android/surfaceflinger_layers.proto";
 import "protos/perfetto/trace/android/surfaceflinger_transactions.proto";
+import "protos/perfetto/trace/android/winscope_extensions_impl.proto";
 
 // This file is used to generated descriptors for all the winscope protos.
 // List all the winscope top-level trace messages here:
@@ -30,4 +31,5 @@
   optional TransactionTraceEntry transactions = 2;
   optional ShellTransition shell_transition = 3;
   optional ProtoLogMessage protolog_message = 4;
+  optional WinscopeExtensionsImpl winscope_extensions = 5;
 }
diff --git a/protos/perfetto/trace/android/winscope_extensions.proto b/protos/perfetto/trace/android/winscope_extensions.proto
new file mode 100644
index 0000000..76e6c9e
--- /dev/null
+++ b/protos/perfetto/trace/android/winscope_extensions.proto
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+syntax = "proto2";
+
+package perfetto.protos;
+
+message WinscopeExtensions {
+  extensions 1 to 3;
+}
diff --git a/protos/perfetto/trace/android/winscope_extensions_impl.proto b/protos/perfetto/trace/android/winscope_extensions_impl.proto
new file mode 100644
index 0000000..9af35a1
--- /dev/null
+++ b/protos/perfetto/trace/android/winscope_extensions_impl.proto
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+syntax = "proto2";
+
+package perfetto.protos;
+
+import "protos/perfetto/trace/android/inputmethodeditor.proto";
+import "protos/perfetto/trace/android/winscope_extensions.proto";
+
+message WinscopeExtensionsImpl {
+  extend WinscopeExtensions {
+    optional InputMethodClientsTraceProto inputmethod_clients = 1;
+    optional InputMethodServiceTraceProto inputmethod_service = 2;
+    optional InputMethodManagerServiceTraceProto inputmethod_manager_service =
+        3;
+  }
+}
diff --git a/protos/perfetto/trace/perfetto_trace.proto b/protos/perfetto/trace/perfetto_trace.proto
index 81977bf..e6c7816 100644
--- a/protos/perfetto/trace/perfetto_trace.proto
+++ b/protos/perfetto/trace/perfetto_trace.proto
@@ -5189,13 +5189,7 @@
 
 // End of protos/perfetto/trace/android/shell_transition.proto
 
-// Begin of protos/perfetto/trace/android/surfaceflinger_common.proto
-
-message RegionProto {
-  // Previously: uint64 id
-  reserved 1;
-  repeated RectProto rect = 2;
-}
+// Begin of protos/perfetto/trace/android/graphics/rect.proto
 
 message RectProto {
   optional int32 left = 1;
@@ -5204,6 +5198,16 @@
   optional int32 bottom = 4;
 }
 
+// End of protos/perfetto/trace/android/graphics/rect.proto
+
+// Begin of protos/perfetto/trace/android/surfaceflinger_common.proto
+
+message RegionProto {
+  // Previously: uint64 id
+  reserved 1;
+  repeated RectProto rect = 2;
+}
+
 message SizeProto {
   optional int32 w = 1;
   optional int32 h = 2;
@@ -5812,6 +5816,14 @@
 
 // End of protos/perfetto/trace/android/surfaceflinger_transactions.proto
 
+// Begin of protos/perfetto/trace/android/winscope_extensions.proto
+
+message WinscopeExtensions {
+  extensions 1 to 3;
+}
+
+// End of protos/perfetto/trace/android/winscope_extensions.proto
+
 // Begin of protos/perfetto/trace/chrome/chrome_benchmark_metadata.proto
 
 // This message is not intended to be written by the chrome on the device.
@@ -14771,7 +14783,7 @@
 // See the [Buffers and Dataflow](/docs/concepts/buffers.md) doc for details.
 //
 // Next reserved id: 14 (up to 15).
-// Next id: 112.
+// Next id: 113.
 message TracePacket {
   // The timestamp of the TracePacket.
   // By default this timestamps refers to the trace clock (CLOCK_BOOTTIME on
@@ -14923,6 +14935,8 @@
     TestEvent for_testing = 900;
   }
 
+  optional WinscopeExtensions winscope_extensions = 112;
+
   // Trusted user id of the producer which generated this packet. Keep in sync
   // with TrustedPacket.trusted_uid.
   //
diff --git a/protos/perfetto/trace/trace_packet.proto b/protos/perfetto/trace/trace_packet.proto
index 62d7e6f..974f6d3 100644
--- a/protos/perfetto/trace/trace_packet.proto
+++ b/protos/perfetto/trace/trace_packet.proto
@@ -35,6 +35,7 @@
 import "protos/perfetto/trace/android/shell_transition.proto";
 import "protos/perfetto/trace/android/surfaceflinger_layers.proto";
 import "protos/perfetto/trace/android/surfaceflinger_transactions.proto";
+import "protos/perfetto/trace/android/winscope_extensions.proto";
 import "protos/perfetto/trace/chrome/chrome_benchmark_metadata.proto";
 import "protos/perfetto/trace/chrome/chrome_metadata.proto";
 import "protos/perfetto/trace/chrome/chrome_trace_event.proto";
@@ -104,7 +105,7 @@
 // See the [Buffers and Dataflow](/docs/concepts/buffers.md) doc for details.
 //
 // Next reserved id: 14 (up to 15).
-// Next id: 112.
+// Next id: 113.
 message TracePacket {
   // The timestamp of the TracePacket.
   // By default this timestamps refers to the trace clock (CLOCK_BOOTTIME on
@@ -256,6 +257,8 @@
     TestEvent for_testing = 900;
   }
 
+  optional WinscopeExtensions winscope_extensions = 112;
+
   // Trusted user id of the producer which generated this packet. Keep in sync
   // with TrustedPacket.trusted_uid.
   //
diff --git a/src/trace_processor/importers/proto/winscope/BUILD.gn b/src/trace_processor/importers/proto/winscope/BUILD.gn
index 93f9d1b..c5a6316 100644
--- a/src/trace_processor/importers/proto/winscope/BUILD.gn
+++ b/src/trace_processor/importers/proto/winscope/BUILD.gn
@@ -39,6 +39,8 @@
     "../../../../../gn:default_deps",
     "../../../../../protos/perfetto/trace:zero",
     "../../../../../protos/perfetto/trace/android:zero",
+    "../../../../../protos/perfetto/trace/android:winscope_regular:zero",
+    "../../../../../protos/perfetto/trace/android:winscope_extensions:zero",
     "../../../../../protos/perfetto/trace/interned_data:zero",
     "../../../../../protos/perfetto/trace/profiling:zero",
     "../../../../protozero",
diff --git a/test/data/chrome_input_with_frame_view.pftrace.sha256 b/test/data/chrome_input_with_frame_view.pftrace.sha256
index ea5a606..d0943a8 100644
--- a/test/data/chrome_input_with_frame_view.pftrace.sha256
+++ b/test/data/chrome_input_with_frame_view.pftrace.sha256
@@ -1 +1 @@
-1e4e1b7098c3c1b900d31fa6d6791e7b022e85ecebbb560123ce7139b3f82231
\ No newline at end of file
+a93548822e481508c728ccc5da3ad34afcd0aec02ca7a7a4dad84ff340ee5975
\ No newline at end of file
diff --git a/test/trace_processor/diff_tests/metrics/chrome/tests_scroll_jank.py b/test/trace_processor/diff_tests/metrics/chrome/tests_scroll_jank.py
index 70dec5c..fa52426 100644
--- a/test/trace_processor/diff_tests/metrics/chrome/tests_scroll_jank.py
+++ b/test/trace_processor/diff_tests/metrics/chrome/tests_scroll_jank.py
@@ -429,32 +429,18 @@
         query=Metric('chrome_scroll_jank_v3'),
         out=TextProto(r"""
         [perfetto.protos.chrome_scroll_jank_v3] {
-          trace_num_frames: 291
-          trace_num_janky_frames: 3
-          trace_scroll_jank_percentage: 1.0309278350515463
-          vsync_interval_ms: 16.368
+          trace_num_frames: 354
+          trace_num_janky_frames: 1
+          trace_scroll_jank_percentage: 0.2824858757062147
+          vsync_interval_ms: 10.483
           scrolls {
-            num_frames: 105
-            num_janky_frames: 2
-            scroll_jank_percentage: 1.9047619047619047
-            max_delay_since_last_frame: 6.126221896383187
-            scroll_jank_causes {
-              cause: "RendererCompositorQueueingDelay"
-              delay_since_last_frame: 2.044354838709678
-            }
-            scroll_jank_causes {
-              cause: "RendererCompositorFinishedToBeginImplFrame"
-              delay_since_last_frame: 6.126221896383187
-            }
-          }
-          scrolls {
-            num_frames: 84
+            num_frames: 122
             num_janky_frames: 1
-            scroll_jank_percentage: 1.1904761904761905
-            max_delay_since_last_frame: 2.040811339198436
+            scroll_jank_percentage: 0.819672131147541
+            max_delay_since_last_frame: 2.13021081751407
             scroll_jank_causes {
               cause: "RendererCompositorQueueingDelay"
-              delay_since_last_frame: 2.040811339198436
+              delay_since_last_frame: 2.13021081751407
             }
           }
         }
@@ -469,8 +455,8 @@
         INCLUDE PERFETTO MODULE chrome.scroll_jank.scroll_jank_v3;
 
         SELECT
-          _HAS_DESCENDANT_SLICE_WITH_NAME(
-            (SELECT id from slice where dur = 46046000),
+          HAS_DESCENDANT_SLICE_WITH_NAME(
+            (SELECT id from slice where dur = 60156000),
             'SwapEndToPresentationCompositorFrame') AS has_descendant;
         """,
         out=Csv("""
@@ -487,8 +473,8 @@
         INCLUDE PERFETTO MODULE chrome.scroll_jank.scroll_jank_v3;
 
         SELECT
-          _HAS_DESCENDANT_SLICE_WITH_NAME(
-            (SELECT id from slice where dur = 11666000),
+          HAS_DESCENDANT_SLICE_WITH_NAME(
+            (SELECT id from slice where dur = 77247000),
             'SwapEndToPresentationCompositorFrame') AS has_descendant;
         """,
         out=Csv("""
@@ -506,7 +492,7 @@
 
         SELECT
           _DESCENDANT_SLICE_END(
-            (SELECT id from slice where dur = 11666000),
+            (SELECT id from slice where dur = 77247000),
             'SwapEndToPresentationCompositorFrame') AS end_ts;
         """,
         out=Csv("""
@@ -524,10 +510,10 @@
 
         SELECT
           _DESCENDANT_SLICE_END(
-            (SELECT id from slice where dur = 46046000),
+            (SELECT id from slice where dur = 60156000),
             'SwapEndToPresentationCompositorFrame') AS end_ts;
         """,
         out=Csv("""
         "end_ts"
-        174797566610797
+        1035869424631926
         """))
\ No newline at end of file
diff --git a/test/trace_processor/diff_tests/stdlib/slices/tests.py b/test/trace_processor/diff_tests/stdlib/slices/tests.py
index 053dabf..747ffb2 100644
--- a/test/trace_processor/diff_tests/stdlib/slices/tests.py
+++ b/test/trace_processor/diff_tests/stdlib/slices/tests.py
@@ -76,21 +76,23 @@
 
         SELECT e.name, e.ts, e.dur, e.depth
         FROM _slice_flattened e
-        JOIN thread_track ON e.track_id = thread_track.id
-        JOIN thread USING(utid)
-        WHERE thread.tid = 30944;
+          JOIN thread_track ON e.track_id = thread_track.id
+          JOIN thread USING(utid)
+        WHERE thread.tid = 30196
+        LIMIT 10;
       """,
         out=Csv("""
         "name","ts","dur","depth"
-        "ThreadControllerImpl::RunTask",174793737042797,3937000,0
-        "ThreadControllerImpl::RunTask",174793741016797,5930000,0
-        "ThreadControllerImpl::RunTask",174793747000797,47000,0
-        "Receive mojo message",174793747047797,136000,1
-        "ThreadControllerImpl::RunTask",174793747183797,17000,0
-        "Looper.dispatch: android.os.Handler(Kx3@57873a8)",174793747546797,119000,0
-        "ThreadControllerImpl::RunTask",174796099970797,186000,0
-        "Looper.dispatch: jy3(null)",174800056530797,1368000,0
-        "ThreadControllerImpl::RunTask",174800107962797,132000,0
+        "EventForwarder::OnTouchEvent",1035865509936036,211000,0
+        "EventForwarder::OnTouchEvent",1035865510234036,48000,0
+        "EventForwarder::OnTouchEvent",1035865510673036,10000,0
+        "GestureProvider::OnTouchEvent",1035865510147036,87000,1
+        "RenderWidgetHostImpl::ForwardTouchEvent",1035865510282036,41000,1
+        "RenderWidgetHostImpl::ForwardTouchEvent",1035865510331036,16000,1
+        "RenderWidgetHostImpl::ForwardTouchEvent",1035865510670036,3000,1
+        "LatencyInfo.Flow",1035865510323036,8000,2
+        "PassthroughTouchEventQueue::QueueEvent",1035865510347036,30000,2
+        "PassthroughTouchEventQueue::QueueEvent",1035865510666036,4000,2
       """))
 
   def test_thread_slice_cpu_time(self):
diff --git a/tools/gen_android_bp b/tools/gen_android_bp
index c8a2b1a..82c2d76 100755
--- a/tools/gen_android_bp
+++ b/tools/gen_android_bp
@@ -122,12 +122,19 @@
 # Proto target groups which will be made public.
 proto_groups = {
     'trace': {
-        'types': ['filegroup', 'lite'],
+        'types': ['lite'],
         'targets': [
             '//protos/perfetto/trace:non_minimal_source_set',
             '//protos/perfetto/trace:minimal_source_set',
         ]
     },
+    'winscope': {
+        'types': ['filegroup'],
+        'targets': [
+            '//protos/perfetto/trace:non_minimal_source_set',
+            '//protos/perfetto/trace/android:winscope_extensions:source_set',
+        ]
+    },
     'config': {
         'types': ['lite'],
         'targets': [
diff --git a/ui/src/plugins/dev.perfetto.AndroidCujs/index.ts b/ui/src/plugins/dev.perfetto.AndroidCujs/index.ts
index 166a007..aaef484 100644
--- a/ui/src/plugins/dev.perfetto.AndroidCujs/index.ts
+++ b/ui/src/plugins/dev.perfetto.AndroidCujs/index.ts
@@ -19,6 +19,7 @@
 const JANK_CUJ_QUERY_PRECONDITIONS = `
   SELECT RUN_METRIC('android/android_jank_cuj.sql');
   SELECT RUN_METRIC('android/jank/internal/counters.sql');
+  INCLUDE PERFETTO MODULE android.critical_blocking_calls;
 `;
 
 const JANK_CUJ_QUERY = `
@@ -127,6 +128,42 @@
 `;
 
 const LATENCY_COLUMNS = ['name', 'dur_ms', 'ts', 'dur', 'track_id', 'slice_id'];
+
+const BLOCKING_CALLS_DURING_CUJS_QUERY = `
+    SELECT
+      s.id AS slice_id,
+      s.name,
+      max(s.ts, cuj.ts) AS ts,
+      min(s.ts + s.dur, cuj.ts_end) as ts_end,
+      min(s.ts + s.dur, cuj.ts_end) - max(s.ts, cuj.ts) AS dur,
+      cuj.cuj_id,
+      cuj.cuj_name,
+      s.process_name,
+      s.upid,
+      s.utid,
+      'slice' AS table_name
+    FROM _android_critical_blocking_calls s
+      JOIN  android_jank_cuj cuj
+      -- only when there is an overlap
+      ON s.ts + s.dur > cuj.ts AND s.ts < cuj.ts_end
+          -- and are from the same process
+          AND s.upid = cuj.upid
+`;
+
+const BLOCKING_CALLS_DURING_CUJS_COLUMNS = [
+  'slice_id',
+  'name',
+  'ts',
+  'cuj_ts',
+  'dur',
+  'cuj_id',
+  'cuj_name',
+  'process_name',
+  'upid',
+  'utid',
+  'table_name',
+];
+
 class AndroidCujs implements Plugin {
   async onTraceLoad(ctx: PluginContextTrace): Promise<void> {
     ctx.registerCommand({
@@ -181,6 +218,25 @@
       callback: () =>
         ctx.tabs.openQuery(LATENCY_CUJ_QUERY, 'Android Latency CUJs'),
     });
+
+    ctx.registerCommand({
+      id: 'dev.perfetto.AndroidCujs#PinBlockingCalls',
+      name: 'Add track: Android Blocking calls during CUJs',
+      callback: () => {
+        runQuery(JANK_CUJ_QUERY_PRECONDITIONS, ctx.engine).then(() =>
+          addDebugSliceTrack(
+            ctx.engine,
+            {
+              sqlSource: BLOCKING_CALLS_DURING_CUJS_QUERY,
+              columns: BLOCKING_CALLS_DURING_CUJS_COLUMNS,
+            },
+            'Blocking calls during CUJs',
+            {ts: 'ts', dur: 'dur', name: 'name'},
+            BLOCKING_CALLS_DURING_CUJS_COLUMNS,
+          ),
+        );
+      },
+    });
   }
 }