Add BatteryHistoricalLogUtil class

 - Impl optimize mode log mechanism to record optimize setup flow
 - Log optimize action with MANUAL, APPLY, RESET and RESTORE
 - Use proto file to serialize logs
 sample result: https://screenshot.googleplex.com/5KPrHVGb4pMvS7V.png

Bug: 241735485
Test: make SettingsRoboTests
Change-Id: I879663de4cf45d0cfb9cd7eee957eeb65addfbe1
diff --git a/protos/Android.bp b/protos/Android.bp
index fbcf645..d546e2d 100644
--- a/protos/Android.bp
+++ b/protos/Android.bp
@@ -33,3 +33,11 @@
     },
     srcs: ["network_mode_choices.proto"],
 }
+
+java_library {
+    name: "fuelgauge-log-protos-lite",
+    proto: {
+        type: "lite",
+    },
+    srcs: ["fuelgauge_log.proto"],
+}
diff --git a/protos/fuelgauge_log.proto b/protos/fuelgauge_log.proto
new file mode 100644
index 0000000..6358951
--- /dev/null
+++ b/protos/fuelgauge_log.proto
@@ -0,0 +1,27 @@
+syntax = "proto2";
+
+package com.android.settings.intelligence;
+option java_multiple_files = true;
+option java_package = "com.android.settings.fuelgauge";
+option java_outer_classname = "FuelgaugeLogProto";
+
+// Stores history of setting optimize mode
+message BatteryOptimizeHistoricalLog {
+  repeated BatteryOptimizeHistoricalLogEntry log_entry = 1;
+}
+
+message BatteryOptimizeHistoricalLogEntry {
+
+  // The action to set optimize mode
+  enum Action {
+    UNKNOWN = 0;
+    MANUAL = 1;
+    APPLY = 2;
+    RESET = 3;
+    RESTORE = 4;
+  }
+
+  optional string package_name = 1;
+  optional Action action = 2;
+  optional string action_description = 3;
+}
\ No newline at end of file