metrics: Allow chrome metric protos to be compiled in

After this CL, we can add chrome metric protos to the metrics/chrome
directory. As an example, console error metric is checked in.

Previously, TraceMetrics and all its imports were being compiled to
protozero because it was part of ComputeMetricResult in
trace_processor.proto. However, we do not use the generated protozero
files anywhere, and it was preventing us from including the chrome
metrics because protozero struggled to process custom options. The
type of ComputeMetricResult.metrics has now been changed from
TraceMetrics to Bytes, so we do not have to generate any protozero code
for metrics. The UI can easily decode those bytes into TraceMetrics
proto if it has a TraceMetrics decoder.

All the chrome metrics will be listed in
metrics/chrome/all_chrome_metrics.proto. This file lists them as
extensions to TraceMetrics. We use metric extensions instead of directly
including them in TraceMetrics because it will make it simpler to copy
the metrics directly from chromium repo to perfetto in the future. To
prevent classes, we reserved extension range 1001 to 2000 for chrome
metrics in metrics.proto so there is no surprise clash.

Since we import custom_options.proto in all_chrome_metrics.proto, we
no longer need to generate binary descriptors for it separately.

Bug: 155480437
Change-Id: I5aba18984e272c0768830e619d158bf9fd11f9cc
diff --git a/Android.bp b/Android.bp
index 835a9af..1210e26 100644
--- a/Android.bp
+++ b/Android.bp
@@ -56,6 +56,7 @@
     "src/trace_processor/metrics/android/unmapped_java_symbols.sql",
     "src/trace_processor/metrics/android/unsymbolized_frames.sql",
     "src/trace_processor/metrics/chrome/chrome_processes.sql",
+    "src/trace_processor/metrics/chrome/console_error_metric.sql",
     "src/trace_processor/metrics/chrome/scroll_flow_event.sql",
     "src/trace_processor/metrics/chrome/scroll_jank.sql",
     "src/trace_processor/metrics/trace_metadata.sql",
@@ -3284,158 +3285,6 @@
   ],
 }
 
-// GN: //protos/perfetto/metrics/android:zero
-genrule {
-  name: "perfetto_protos_perfetto_metrics_android_zero_gen",
-  srcs: [
-    "protos/perfetto/metrics/android/batt_metric.proto",
-    "protos/perfetto/metrics/android/cpu_metric.proto",
-    "protos/perfetto/metrics/android/display_metrics.proto",
-    "protos/perfetto/metrics/android/heap_profile_callsites.proto",
-    "protos/perfetto/metrics/android/hwui_metric.proto",
-    "protos/perfetto/metrics/android/ion_metric.proto",
-    "protos/perfetto/metrics/android/java_heap_histogram.proto",
-    "protos/perfetto/metrics/android/java_heap_stats.proto",
-    "protos/perfetto/metrics/android/lmk_metric.proto",
-    "protos/perfetto/metrics/android/lmk_reason_metric.proto",
-    "protos/perfetto/metrics/android/mem_metric.proto",
-    "protos/perfetto/metrics/android/mem_unagg_metric.proto",
-    "protos/perfetto/metrics/android/package_list.proto",
-    "protos/perfetto/metrics/android/powrails_metric.proto",
-    "protos/perfetto/metrics/android/process_metadata.proto",
-    "protos/perfetto/metrics/android/startup_metric.proto",
-    "protos/perfetto/metrics/android/surfaceflinger.proto",
-    "protos/perfetto/metrics/android/task_names.proto",
-    "protos/perfetto/metrics/android/thread_time_in_state_metric.proto",
-    "protos/perfetto/metrics/android/unmapped_java_symbols.proto",
-    "protos/perfetto/metrics/android/unsymbolized_frames.proto",
-  ],
-  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/ $(in)",
-  out: [
-    "external/perfetto/protos/perfetto/metrics/android/batt_metric.pbzero.cc",
-    "external/perfetto/protos/perfetto/metrics/android/cpu_metric.pbzero.cc",
-    "external/perfetto/protos/perfetto/metrics/android/display_metrics.pbzero.cc",
-    "external/perfetto/protos/perfetto/metrics/android/heap_profile_callsites.pbzero.cc",
-    "external/perfetto/protos/perfetto/metrics/android/hwui_metric.pbzero.cc",
-    "external/perfetto/protos/perfetto/metrics/android/ion_metric.pbzero.cc",
-    "external/perfetto/protos/perfetto/metrics/android/java_heap_histogram.pbzero.cc",
-    "external/perfetto/protos/perfetto/metrics/android/java_heap_stats.pbzero.cc",
-    "external/perfetto/protos/perfetto/metrics/android/lmk_metric.pbzero.cc",
-    "external/perfetto/protos/perfetto/metrics/android/lmk_reason_metric.pbzero.cc",
-    "external/perfetto/protos/perfetto/metrics/android/mem_metric.pbzero.cc",
-    "external/perfetto/protos/perfetto/metrics/android/mem_unagg_metric.pbzero.cc",
-    "external/perfetto/protos/perfetto/metrics/android/package_list.pbzero.cc",
-    "external/perfetto/protos/perfetto/metrics/android/powrails_metric.pbzero.cc",
-    "external/perfetto/protos/perfetto/metrics/android/process_metadata.pbzero.cc",
-    "external/perfetto/protos/perfetto/metrics/android/startup_metric.pbzero.cc",
-    "external/perfetto/protos/perfetto/metrics/android/surfaceflinger.pbzero.cc",
-    "external/perfetto/protos/perfetto/metrics/android/task_names.pbzero.cc",
-    "external/perfetto/protos/perfetto/metrics/android/thread_time_in_state_metric.pbzero.cc",
-    "external/perfetto/protos/perfetto/metrics/android/unmapped_java_symbols.pbzero.cc",
-    "external/perfetto/protos/perfetto/metrics/android/unsymbolized_frames.pbzero.cc",
-  ],
-}
-
-// GN: //protos/perfetto/metrics/android:zero
-genrule {
-  name: "perfetto_protos_perfetto_metrics_android_zero_gen_headers",
-  srcs: [
-    "protos/perfetto/metrics/android/batt_metric.proto",
-    "protos/perfetto/metrics/android/cpu_metric.proto",
-    "protos/perfetto/metrics/android/display_metrics.proto",
-    "protos/perfetto/metrics/android/heap_profile_callsites.proto",
-    "protos/perfetto/metrics/android/hwui_metric.proto",
-    "protos/perfetto/metrics/android/ion_metric.proto",
-    "protos/perfetto/metrics/android/java_heap_histogram.proto",
-    "protos/perfetto/metrics/android/java_heap_stats.proto",
-    "protos/perfetto/metrics/android/lmk_metric.proto",
-    "protos/perfetto/metrics/android/lmk_reason_metric.proto",
-    "protos/perfetto/metrics/android/mem_metric.proto",
-    "protos/perfetto/metrics/android/mem_unagg_metric.proto",
-    "protos/perfetto/metrics/android/package_list.proto",
-    "protos/perfetto/metrics/android/powrails_metric.proto",
-    "protos/perfetto/metrics/android/process_metadata.proto",
-    "protos/perfetto/metrics/android/startup_metric.proto",
-    "protos/perfetto/metrics/android/surfaceflinger.proto",
-    "protos/perfetto/metrics/android/task_names.proto",
-    "protos/perfetto/metrics/android/thread_time_in_state_metric.proto",
-    "protos/perfetto/metrics/android/unmapped_java_symbols.proto",
-    "protos/perfetto/metrics/android/unsymbolized_frames.proto",
-  ],
-  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/ $(in)",
-  out: [
-    "external/perfetto/protos/perfetto/metrics/android/batt_metric.pbzero.h",
-    "external/perfetto/protos/perfetto/metrics/android/cpu_metric.pbzero.h",
-    "external/perfetto/protos/perfetto/metrics/android/display_metrics.pbzero.h",
-    "external/perfetto/protos/perfetto/metrics/android/heap_profile_callsites.pbzero.h",
-    "external/perfetto/protos/perfetto/metrics/android/hwui_metric.pbzero.h",
-    "external/perfetto/protos/perfetto/metrics/android/ion_metric.pbzero.h",
-    "external/perfetto/protos/perfetto/metrics/android/java_heap_histogram.pbzero.h",
-    "external/perfetto/protos/perfetto/metrics/android/java_heap_stats.pbzero.h",
-    "external/perfetto/protos/perfetto/metrics/android/lmk_metric.pbzero.h",
-    "external/perfetto/protos/perfetto/metrics/android/lmk_reason_metric.pbzero.h",
-    "external/perfetto/protos/perfetto/metrics/android/mem_metric.pbzero.h",
-    "external/perfetto/protos/perfetto/metrics/android/mem_unagg_metric.pbzero.h",
-    "external/perfetto/protos/perfetto/metrics/android/package_list.pbzero.h",
-    "external/perfetto/protos/perfetto/metrics/android/powrails_metric.pbzero.h",
-    "external/perfetto/protos/perfetto/metrics/android/process_metadata.pbzero.h",
-    "external/perfetto/protos/perfetto/metrics/android/startup_metric.pbzero.h",
-    "external/perfetto/protos/perfetto/metrics/android/surfaceflinger.pbzero.h",
-    "external/perfetto/protos/perfetto/metrics/android/task_names.pbzero.h",
-    "external/perfetto/protos/perfetto/metrics/android/thread_time_in_state_metric.pbzero.h",
-    "external/perfetto/protos/perfetto/metrics/android/unmapped_java_symbols.pbzero.h",
-    "external/perfetto/protos/perfetto/metrics/android/unsymbolized_frames.pbzero.h",
-  ],
-  export_include_dirs: [
-    ".",
-    "protos",
-  ],
-}
-
-// GN: //protos/perfetto/metrics:zero
-genrule {
-  name: "perfetto_protos_perfetto_metrics_zero_gen",
-  srcs: [
-    "protos/perfetto/metrics/metrics.proto",
-  ],
-  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/ $(in)",
-  out: [
-    "external/perfetto/protos/perfetto/metrics/metrics.pbzero.cc",
-  ],
-}
-
-// GN: //protos/perfetto/metrics:zero
-genrule {
-  name: "perfetto_protos_perfetto_metrics_zero_gen_headers",
-  srcs: [
-    "protos/perfetto/metrics/metrics.proto",
-  ],
-  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/ $(in)",
-  out: [
-    "external/perfetto/protos/perfetto/metrics/metrics.pbzero.h",
-  ],
-  export_include_dirs: [
-    ".",
-    "protos",
-  ],
-}
-
 // GN: //protos/perfetto/trace/android:cpp
 genrule {
   name: "perfetto_protos_perfetto_trace_android_cpp_gen",
@@ -7929,8 +7778,6 @@
     ":perfetto_protos_perfetto_ipc_cpp_gen",
     ":perfetto_protos_perfetto_ipc_ipc_gen",
     ":perfetto_protos_perfetto_ipc_wire_protocol_cpp_gen",
-    ":perfetto_protos_perfetto_metrics_android_zero_gen",
-    ":perfetto_protos_perfetto_metrics_zero_gen",
     ":perfetto_protos_perfetto_trace_android_cpp_gen",
     ":perfetto_protos_perfetto_trace_android_zero_gen",
     ":perfetto_protos_perfetto_trace_chrome_cpp_gen",
@@ -8127,8 +7974,6 @@
     "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_metrics_android_zero_gen_headers",
-    "perfetto_protos_perfetto_metrics_zero_gen_headers",
     "perfetto_protos_perfetto_trace_android_cpp_gen_headers",
     "perfetto_protos_perfetto_trace_android_zero_gen_headers",
     "perfetto_protos_perfetto_trace_chrome_cpp_gen_headers",