ctp: introduce TraceProcessorWrapper class

This class is responsible for wrapping a TraceProcessor instance and
providing an API which makes it easy for CTP workers to call.

Change-Id: I2cba0685c1f5a48a5f1efbfdaad372b8513ecaa6
Bug: 278208757
diff --git a/Android.bp b/Android.bp
index a327364..0bbc7df 100644
--- a/Android.bp
+++ b/Android.bp
@@ -1733,6 +1733,11 @@
     name: "perfetto_include_perfetto_ext_base_version",
 }
 
+// GN: //include/perfetto/ext/cloud_trace_processor:cloud_trace_processor
+filegroup {
+    name: "perfetto_include_perfetto_ext_cloud_trace_processor_cloud_trace_processor",
+}
+
 // GN: //include/perfetto/ext/ipc:ipc
 filegroup {
     name: "perfetto_include_perfetto_ext_ipc_ipc",
@@ -2268,6 +2273,48 @@
     test_config: "PerfettoIntegrationTests.xml",
 }
 
+// GN: //protos/perfetto/cloud_trace_processor:lite
+genrule {
+    name: "perfetto_protos_perfetto_cloud_trace_processor_lite_gen",
+    srcs: [
+        "protos/perfetto/cloud_trace_processor/common.proto",
+        "protos/perfetto/cloud_trace_processor/orchestrator.proto",
+        "protos/perfetto/cloud_trace_processor/worker.proto",
+    ],
+    tools: [
+        "aprotoc",
+    ],
+    cmd: "mkdir -p $(genDir)/external/perfetto/ && $(location aprotoc) --proto_path=external/perfetto --cpp_out=lite=true:$(genDir)/external/perfetto/ $(in)",
+    out: [
+        "external/perfetto/protos/perfetto/cloud_trace_processor/common.pb.cc",
+        "external/perfetto/protos/perfetto/cloud_trace_processor/orchestrator.pb.cc",
+        "external/perfetto/protos/perfetto/cloud_trace_processor/worker.pb.cc",
+    ],
+}
+
+// GN: //protos/perfetto/cloud_trace_processor:lite
+genrule {
+    name: "perfetto_protos_perfetto_cloud_trace_processor_lite_gen_headers",
+    srcs: [
+        "protos/perfetto/cloud_trace_processor/common.proto",
+        "protos/perfetto/cloud_trace_processor/orchestrator.proto",
+        "protos/perfetto/cloud_trace_processor/worker.proto",
+    ],
+    tools: [
+        "aprotoc",
+    ],
+    cmd: "mkdir -p $(genDir)/external/perfetto/ && $(location aprotoc) --proto_path=external/perfetto --cpp_out=lite=true:$(genDir)/external/perfetto/ $(in)",
+    out: [
+        "external/perfetto/protos/perfetto/cloud_trace_processor/common.pb.h",
+        "external/perfetto/protos/perfetto/cloud_trace_processor/orchestrator.pb.h",
+        "external/perfetto/protos/perfetto/cloud_trace_processor/worker.pb.h",
+    ],
+    export_include_dirs: [
+        ".",
+        "protos",
+    ],
+}
+
 // GN: //protos/perfetto/common:cpp
 genrule {
     name: "perfetto_protos_perfetto_common_cpp_gen",
@@ -6848,6 +6895,48 @@
     ],
 }
 
+// GN: //protos/perfetto/trace_processor:lite
+genrule {
+    name: "perfetto_protos_perfetto_trace_processor_lite_gen",
+    srcs: [
+        "protos/perfetto/trace_processor/metatrace_categories.proto",
+        "protos/perfetto/trace_processor/stack.proto",
+        "protos/perfetto/trace_processor/trace_processor.proto",
+    ],
+    tools: [
+        "aprotoc",
+    ],
+    cmd: "mkdir -p $(genDir)/external/perfetto/ && $(location aprotoc) --proto_path=external/perfetto --cpp_out=lite=true:$(genDir)/external/perfetto/ $(in)",
+    out: [
+        "external/perfetto/protos/perfetto/trace_processor/metatrace_categories.pb.cc",
+        "external/perfetto/protos/perfetto/trace_processor/stack.pb.cc",
+        "external/perfetto/protos/perfetto/trace_processor/trace_processor.pb.cc",
+    ],
+}
+
+// GN: //protos/perfetto/trace_processor:lite
+genrule {
+    name: "perfetto_protos_perfetto_trace_processor_lite_gen_headers",
+    srcs: [
+        "protos/perfetto/trace_processor/metatrace_categories.proto",
+        "protos/perfetto/trace_processor/stack.proto",
+        "protos/perfetto/trace_processor/trace_processor.proto",
+    ],
+    tools: [
+        "aprotoc",
+    ],
+    cmd: "mkdir -p $(genDir)/external/perfetto/ && $(location aprotoc) --proto_path=external/perfetto --cpp_out=lite=true:$(genDir)/external/perfetto/ $(in)",
+    out: [
+        "external/perfetto/protos/perfetto/trace_processor/metatrace_categories.pb.h",
+        "external/perfetto/protos/perfetto/trace_processor/stack.pb.h",
+        "external/perfetto/protos/perfetto/trace_processor/trace_processor.pb.h",
+    ],
+    export_include_dirs: [
+        ".",
+        "protos",
+    ],
+}
+
 // GN: //protos/perfetto/trace_processor:metrics_impl_zero
 genrule {
     name: "perfetto_protos_perfetto_trace_processor_metrics_impl_zero_gen",
@@ -8370,6 +8459,22 @@
     ],
 }
 
+// GN: //src/cloud_trace_processor:sources
+filegroup {
+    name: "perfetto_src_cloud_trace_processor_sources",
+    srcs: [
+        "src/cloud_trace_processor/trace_processor_wrapper.cc",
+    ],
+}
+
+// GN: //src/cloud_trace_processor:unittests
+filegroup {
+    name: "perfetto_src_cloud_trace_processor_unittests",
+    srcs: [
+        "src/cloud_trace_processor/trace_processor_wrapper_unittest.cc",
+    ],
+}
+
 // GN: //src/ipc:client
 filegroup {
     name: "perfetto_src_ipc_client",
@@ -10630,6 +10735,14 @@
     ],
 }
 
+// GN: //src/traceconv:unittests
+filegroup {
+    name: "perfetto_src_traceconv_unittests",
+    srcs: [
+        "src/traceconv/trace_to_text_unittest.cc",
+    ],
+}
+
 // GN: //src/traceconv:utils
 filegroup {
     name: "perfetto_src_traceconv_utils",
@@ -11679,6 +11792,7 @@
         ":perfetto_include_perfetto_ext_base_http_http",
         ":perfetto_include_perfetto_ext_base_threading_threading",
         ":perfetto_include_perfetto_ext_base_version",
+        ":perfetto_include_perfetto_ext_cloud_trace_processor_cloud_trace_processor",
         ":perfetto_include_perfetto_ext_ipc_ipc",
         ":perfetto_include_perfetto_ext_trace_processor_demangle",
         ":perfetto_include_perfetto_ext_trace_processor_export_json",
@@ -11687,6 +11801,7 @@
         ":perfetto_include_perfetto_ext_traced_traced",
         ":perfetto_include_perfetto_ext_tracing_core_core",
         ":perfetto_include_perfetto_ext_tracing_ipc_ipc",
+        ":perfetto_include_perfetto_profiling_pprof_builder",
         ":perfetto_include_perfetto_protozero_protozero",
         ":perfetto_include_perfetto_public_abi_base",
         ":perfetto_include_perfetto_public_base",
@@ -11698,6 +11813,7 @@
         ":perfetto_include_perfetto_tracing_core_core",
         ":perfetto_include_perfetto_tracing_core_forward_decls",
         ":perfetto_include_perfetto_tracing_tracing",
+        ":perfetto_protos_perfetto_cloud_trace_processor_lite_gen",
         ":perfetto_protos_perfetto_common_cpp_gen",
         ":perfetto_protos_perfetto_common_lite_gen",
         ":perfetto_protos_perfetto_common_zero_gen",
@@ -11773,6 +11889,7 @@
         ":perfetto_protos_perfetto_trace_power_cpp_gen",
         ":perfetto_protos_perfetto_trace_power_lite_gen",
         ":perfetto_protos_perfetto_trace_power_zero_gen",
+        ":perfetto_protos_perfetto_trace_processor_lite_gen",
         ":perfetto_protos_perfetto_trace_processor_metrics_impl_zero_gen",
         ":perfetto_protos_perfetto_trace_processor_zero_gen",
         ":perfetto_protos_perfetto_trace_profiling_cpp_gen",
@@ -11811,6 +11928,8 @@
         ":perfetto_src_base_unittests",
         ":perfetto_src_base_unix_socket",
         ":perfetto_src_base_version",
+        ":perfetto_src_cloud_trace_processor_sources",
+        ":perfetto_src_cloud_trace_processor_unittests",
         ":perfetto_src_ipc_client",
         ":perfetto_src_ipc_common",
         ":perfetto_src_ipc_host",
@@ -11848,6 +11967,7 @@
         ":perfetto_src_profiling_perf_producer_unittests",
         ":perfetto_src_profiling_perf_regs_parsing",
         ":perfetto_src_profiling_perf_unwinding",
+        ":perfetto_src_profiling_symbolizer_symbolize_database",
         ":perfetto_src_profiling_symbolizer_symbolizer",
         ":perfetto_src_profiling_symbolizer_unittests",
         ":perfetto_src_profiling_unittests",
@@ -11942,6 +12062,10 @@
         ":perfetto_src_trace_processor_util_zip_reader",
         ":perfetto_src_trace_processor_views_unittests",
         ":perfetto_src_trace_processor_views_views",
+        ":perfetto_src_traceconv_lib",
+        ":perfetto_src_traceconv_pprofbuilder",
+        ":perfetto_src_traceconv_unittests",
+        ":perfetto_src_traceconv_utils",
         ":perfetto_src_traced_probes_android_game_intervention_list_android_game_intervention_list",
         ":perfetto_src_traced_probes_android_game_intervention_list_unittests",
         ":perfetto_src_traced_probes_android_log_android_log",
@@ -12022,6 +12146,7 @@
         "perfetto_gtest_logcat_printer",
     ],
     generated_headers: [
+        "perfetto_protos_perfetto_cloud_trace_processor_lite_gen_headers",
         "perfetto_protos_perfetto_common_cpp_gen_headers",
         "perfetto_protos_perfetto_common_lite_gen_headers",
         "perfetto_protos_perfetto_common_zero_gen_headers",
@@ -12097,6 +12222,7 @@
         "perfetto_protos_perfetto_trace_power_cpp_gen_headers",
         "perfetto_protos_perfetto_trace_power_lite_gen_headers",
         "perfetto_protos_perfetto_trace_power_zero_gen_headers",
+        "perfetto_protos_perfetto_trace_processor_lite_gen_headers",
         "perfetto_protos_perfetto_trace_processor_metrics_impl_zero_gen_headers",
         "perfetto_protos_perfetto_trace_processor_zero_gen_headers",
         "perfetto_protos_perfetto_trace_profiling_cpp_gen_headers",
@@ -12147,6 +12273,7 @@
         "perfetto_src_trace_processor_tables_py_tables_unittest",
         "perfetto_src_trace_processor_tables_tables_python",
         "perfetto_src_trace_processor_views_macros_unittest",
+        "perfetto_src_traceconv_gen_cc_trace_descriptor",
         "perfetto_src_traced_probes_ftrace_test_messages_cpp_gen_headers",
         "perfetto_src_traced_probes_ftrace_test_messages_lite_gen_headers",
         "perfetto_src_traced_probes_ftrace_test_messages_zero_gen_headers",