Atom - IkeLivenessCheckSessionValidated atom to log liveness stats

This atom is called when the liveness check of the IKE library is
completed and records various statistical information at that time.

Eldar: eldar/504706225
Bug: 305683616
Test: Verified creating atoms from the IKE library
Merged-In: I2fbc3cde002de640f404fef07f76529243ea1fbd
Change-Id: I2fbc3cde002de640f404fef07f76529243ea1fbd
diff --git a/stats/atoms.proto b/stats/atoms.proto
index f015d74..d920b85 100644
--- a/stats/atoms.proto
+++ b/stats/atoms.proto
@@ -1046,7 +1046,7 @@
     extensions 739; // ThreadnetworkTopoEntryRepeated threadnetwork_topo_entry_repeated
     extensions 740; // ThreadnetworkDeviceInfoReported threadnetwork_device_info_reported
     extensions 752; // StatsSocketLossReported stats_socket_loss_reported
-
+    extensions 760; // IkeLivenessCheckSessionValidated ike_liveness_check_session_validated
     extensions 9999; // Atom9999 atom_9999
     // StatsdStats tracks platform atoms with ids up to 900.
     // Update StatsdStats::kMaxPushedAtomId when atom ids here approach that value.
diff --git a/stats/atoms/ike/ike_extension_atoms.proto b/stats/atoms/ike/ike_extension_atoms.proto
index 3964167..2661276 100644
--- a/stats/atoms/ike/ike_extension_atoms.proto
+++ b/stats/atoms/ike/ike_extension_atoms.proto
@@ -27,6 +27,8 @@
 
 extend Atom {
     optional IkeSessionTerminated ike_session_terminated = 678 [(module) = "ike"];
+    optional IkeLivenessCheckSessionValidated ike_liveness_check_session_validated =
+            760 [(module) = "ike"];
 }
 
 /**
@@ -48,3 +50,26 @@
     // no error has occurred
     optional android.stats.ike.IkeError ike_error = 4;
 }
+
+message IkeLivenessCheckSessionValidated {
+
+    // Identity of system callers.
+    optional android.stats.ike.IkeCaller ike_caller = 1;
+
+    // To determine task at which liveness check was initiated.
+    optional android.stats.ike.IkeTask ike_task = 2;
+
+    // Underlying network type that checked the Liveness.
+    optional android.stats.ike.IkeUnderlyingNetworkType ike_underlying_network_type = 3;
+
+    // Elapsed time in milliseconds from Started to end of liveness check
+    // (From Started to Success or Failure)
+    optional int32 elapsed_time_in_millis = 4;
+
+    // Number of times client invoked liveness check api during ongoing task.
+    optional int32 number_of_on_going_status = 5;
+
+    // True if the Liveness check is successful. False if the Liveness check is failed.
+    optional bool result_success = 6;
+}
+
diff --git a/stats/enums/stats/ike/ike.proto b/stats/enums/stats/ike/ike.proto
index 761d2b8..69273fc 100644
--- a/stats/enums/stats/ike/ike.proto
+++ b/stats/enums/stats/ike/ike.proto
@@ -101,4 +101,21 @@
     ERROR_PROTOCOL_INVALID_SELECTORS= 0x00040027;
     ERROR_PROTOCOL_TEMPORARY_FAILURE= 0x0004002B;
     ERROR_PROTOCOL_CHILD_SA_NOT_FOUND= 0x0004002C;
-}
\ No newline at end of file
+}
+
+enum IkeTask {
+    IKE_TASK_UNSPECIFIED = 0;
+    IKE_TASK_ON_DEMAND_DPD = 1;
+    IKE_TASK_UNKNOWN_BUSY = 2;
+    IKE_TASK_PERIODIC_DPD = 3;
+    IKE_TASK_REKEY_IKE = 4;
+    IKE_TASK_REKEY_CHILD = 5;
+    IKE_TASK_MOBIKE = 6;
+}
+
+enum IkeUnderlyingNetworkType {
+    NETWORK_UNSPECIFIED = 0;
+    NETWORK_WIFI = 1;
+    NETWORK_CELLULAR = 2;
+}
+