Merge "Definition of GenericAtom"
diff --git a/cmds/statsd/Android.bp b/cmds/statsd/Android.bp
index b566099..14af5b9 100644
--- a/cmds/statsd/Android.bp
+++ b/cmds/statsd/Android.bp
@@ -25,6 +25,7 @@
     ],
 
     shared_libs: [
+        "libmetricprotos",
         "libplatformprotos",
     ],
 
@@ -37,6 +38,7 @@
     },
 
     export_shared_lib_headers: [
+        "libmetricprotos",
         "libplatformprotos",
     ]
 
diff --git a/cmds/statsd/Android.mk b/cmds/statsd/Android.mk
index 1c20bff..e182ad1 100644
--- a/cmds/statsd/Android.mk
+++ b/cmds/statsd/Android.mk
@@ -84,8 +84,7 @@
     $(LOCAL_PATH)/../../core/java
 
 statsd_common_static_libraries := \
-    libhealthhalutils \
-    libplatformprotos \
+    libhealthhalutils
 
 statsd_common_shared_libraries := \
     libbase \
@@ -234,7 +233,9 @@
 
 LOCAL_STATIC_LIBRARIES := \
     $(statsd_common_static_libraries) \
-    libgmock
+    libgmock \
+    libmetricprotos \
+    libplatformprotos
 
 LOCAL_PROTOC_OPTIMIZE_TYPE := full
 
@@ -254,6 +255,7 @@
 LOCAL_MODULE := statsdprotolite
 
 LOCAL_SRC_FILES := \
+    src/metrics_constants/metrics_constants.proto \
     src/stats_log.proto \
     src/statsd_config.proto \
     src/perfetto/perfetto_config.proto \
@@ -301,7 +303,6 @@
 LOCAL_SHARED_LIBRARIES := $(statsd_common_shared_libraries) \
                         libprotobuf-cpp-full
 
-
 LOCAL_STATIC_JAVA_LIBRARIES := \
     platformprotoslite
 
@@ -319,7 +320,9 @@
 LOCAL_AIDL_INCLUDES := $(statsd_common_aidl_includes)
 
 LOCAL_STATIC_LIBRARIES := \
-    $(statsd_common_static_libraries)
+    $(statsd_common_static_libraries) \
+    libmetricprotos \
+    libplatformprotos
 
 LOCAL_SHARED_LIBRARIES := $(statsd_common_shared_libraries) \
     libgtest_prod \
diff --git a/cmds/statsd/src/atoms.proto b/cmds/statsd/src/atoms.proto
index e23676f..279ed02 100644
--- a/cmds/statsd/src/atoms.proto
+++ b/cmds/statsd/src/atoms.proto
@@ -29,6 +29,7 @@
 import "frameworks/base/core/proto/android/telecomm/enums.proto";
 import "frameworks/base/core/proto/android/telephony/enums.proto";
 import "frameworks/base/core/proto/android/view/enums.proto";
+import "frameworks/base/proto/src/metrics_constants.proto";
 
 /**
  * The master atom class. This message defines all of the available
@@ -121,8 +122,7 @@
         ANROccurred anr_occurred = 79;
         WTFOccurred wtf_occurred = 80;
         LowMemReported low_mem_reported = 81;
-
-
+        GenericAtom generic_atom = 82;
     }
 
     // Pulled events will start at field 10000.
@@ -2012,3 +2012,14 @@
    // Maximum parcel request size of one API call.
    optional int64 max_request_size_bytes = 11;
 }
+
+/**
+ * An atom for generic metrics logging. Available from Android Q.
+ * One has to add an enum to frameworks/base/proto/src/metrics_constants.proto
+ * to extend another metric.
+ */
+message GenericAtom {
+  // Type of event. Previously it only indicated visual elements but now it
+  // is expanded to describe any type of event.
+  optional com_android_internal_logging.MetricsEvent.View view = 1;
+}
diff --git a/cmds/statsd/src/metrics_constants/metrics_constants.proto b/cmds/statsd/src/metrics_constants/metrics_constants.proto
new file mode 120000
index 0000000..8366db7
--- /dev/null
+++ b/cmds/statsd/src/metrics_constants/metrics_constants.proto
@@ -0,0 +1 @@
+../../../../proto/src/metrics_constants.proto
\ No newline at end of file
diff --git a/proto/Android.bp b/proto/Android.bp
index f3811bd..5fd2885 100644
--- a/proto/Android.bp
+++ b/proto/Android.bp
@@ -17,3 +17,33 @@
         },
     },
 }
+
+cc_library {
+    name: "libmetricprotos",
+    host_supported: true,
+    proto: {
+        export_proto_headers: true,
+        include_dirs: ["external/protobuf/src"],
+    },
+    cflags: [
+        "-Wall",
+        "-Werror",
+        "-Wno-unused-parameter",
+    ],
+    srcs: ["src/metrics_constants.proto"],
+    target: {
+        host: {
+            proto: {
+                type: "full",
+            },
+        },
+        android: {
+            proto: {
+                type: "lite",
+            },
+            shared: {
+                enabled: false,
+            },
+        },
+    },
+}