test: Allow textproto outputs for chrome metrics

Also:
- Reduce some code duplication in serialize_textproto_trace
- Change the frame_times metric to use the textproto output
Change-Id: Iecb8e84a675fea93e338786efbb6193ed286b682
diff --git a/tools/diff_test_trace_processor.py b/tools/diff_test_trace_processor.py
index 2565ca3..8f84a85 100755
--- a/tools/diff_test_trace_processor.py
+++ b/tools/diff_test_trace_processor.py
@@ -83,8 +83,8 @@
     self.exit_code = exit_code
 
 
-def create_metrics_message_factory(metrics_descriptor_path):
-  return create_message_factory(metrics_descriptor_path,
+def create_metrics_message_factory(metrics_descriptor_paths):
+  return create_message_factory(metrics_descriptor_paths,
                                 'perfetto.protos.TraceMetrics')
 
 
@@ -391,13 +391,17 @@
       trace_descriptor_path = find_trace_descriptor(
           os.path.join(out_path, 'gcc_like_host'))
 
+
   if args.metrics_descriptor:
-    metrics_descriptor_path = args.metrics_descriptor
+    metrics_descriptor_paths = [args.metrics_descriptor]
   else:
     metrics_protos_path = os.path.join(out_path, 'gen', 'protos', 'perfetto',
                                        'metrics')
-    metrics_descriptor_path = os.path.join(metrics_protos_path,
-                                           'metrics.descriptor')
+    metrics_descriptor_paths = [
+        os.path.join(metrics_protos_path, 'metrics.descriptor'),
+        os.path.join(metrics_protos_path, 'chrome',
+                     'all_chrome_metrics.descriptor')
+    ]
 
   chrome_extensions = os.path.join(out_path, 'gen', 'protos', 'third_party',
                                    'chromium', 'chrome_track_event.descriptor')
@@ -405,7 +409,7 @@
                                  'test_extensions.descriptor')
 
   metrics_message_factory = create_metrics_message_factory(
-      metrics_descriptor_path)
+      metrics_descriptor_paths)
 
   test_run_start = datetime.datetime.now()
   test_failure, perf_data, rebased = run_all_tests(