test: log gtest onto logcat

This fixes the long-standing un-debuggability of tests running on the
Android test infrastructure. Because gtest are ran as host-side tests
the gtest log goes into another file (!= logcat) which is not time-synced
with logcat and makes impossible to reason about test failures.
This CL registers an extra gtest listener that injects a copy of the
markers into logcat.

Bug: now will be better logged
Test: manual
Change-Id: I56a7b284873ca1b59ae640df2820cb2ecf77777d
diff --git a/Android.bp b/Android.bp
index 3143365..f89a890 100644
--- a/Android.bp
+++ b/Android.bp
@@ -836,6 +836,9 @@
     "libgtest",
     "libperfetto_client_experimental",
   ],
+  whole_static_libs: [
+    "perfetto_gtest_logcat_printer",
+  ],
   export_include_dirs: [
     "include",
     "include/perfetto/base/build_configs/android_tree",
@@ -1210,6 +1213,25 @@
   },
 }
 
+// GN: //test:perfetto_gtest_logcat_printer
+cc_library_static {
+  name: "perfetto_gtest_logcat_printer",
+  srcs: [
+    "test/gtest_logcat_printer.cc",
+  ],
+  static_libs: [
+    "libgmock",
+    "libgtest",
+  ],
+  export_include_dirs: [
+    "include",
+    "include/perfetto/base/build_configs/android_tree",
+  ],
+  defaults: [
+    "perfetto_defaults",
+  ],
+}
+
 // GN: //include/perfetto/base:base
 filegroup {
   name: "perfetto_include_perfetto_base_base",
@@ -1430,6 +1452,9 @@
     "libgtest",
     "libperfetto_client_experimental",
   ],
+  whole_static_libs: [
+    "perfetto_gtest_logcat_printer",
+  ],
   generated_headers: [
     "perfetto_protos_perfetto_common_cpp_gen_headers",
     "perfetto_protos_perfetto_common_zero_gen_headers",
@@ -7258,6 +7283,9 @@
     "libgmock",
     "libgtest",
   ],
+  whole_static_libs: [
+    "perfetto_gtest_logcat_printer",
+  ],
   generated_headers: [
     "gen_merged_sql_metrics",
     "perfetto_protos_perfetto_common_cpp_gen_headers",