Make ConnectivityMetricsLogger and related classes @SystemApi

Bug: 25691077
Change-Id: Ia98d0a52a9541d9ae773be2b0e962d609f9dd7ee
diff --git a/api/system-current.txt b/api/system-current.txt
index 915ceb2..26ea220 100644
--- a/api/system-current.txt
+++ b/api/system-current.txt
@@ -25315,6 +25315,41 @@
     method public void onTetheringStarted();
   }
 
+  public final class ConnectivityMetricsEvent implements android.os.Parcelable {
+    ctor public ConnectivityMetricsEvent(long, int, int, android.os.Parcelable);
+    method public int describeContents();
+    method public void writeToParcel(android.os.Parcel, int);
+    field public static final android.os.Parcelable.Creator<android.net.ConnectivityMetricsEvent> CREATOR;
+    field public final int componentTag;
+    field public final android.os.Parcelable data;
+    field public final int eventTag;
+    field public final long timestamp;
+  }
+
+  public static final class ConnectivityMetricsEvent.Reference implements android.os.Parcelable {
+    ctor public ConnectivityMetricsEvent.Reference(long);
+    method public int describeContents();
+    method public long getValue();
+    method public void readFromParcel(android.os.Parcel);
+    method public void setValue(long);
+    method public void writeToParcel(android.os.Parcel, int);
+    field public static final android.os.Parcelable.Creator<android.net.ConnectivityMetricsEvent.Reference> CREATOR;
+  }
+
+  public class ConnectivityMetricsLogger {
+    ctor public ConnectivityMetricsLogger();
+    method public void logEvent(long, int, int, android.os.Parcelable);
+    field public static final int COMPONENT_TAG_BLUETOOTH = 1; // 0x1
+    field public static final int COMPONENT_TAG_CONNECTIVITY = 0; // 0x0
+    field public static final int COMPONENT_TAG_TELECOM = 3; // 0x3
+    field public static final int COMPONENT_TAG_TELEPHONY = 4; // 0x4
+    field public static final int COMPONENT_TAG_WIFI = 2; // 0x2
+    field public static final java.lang.String CONNECTIVITY_METRICS_LOGGER_SERVICE = "connectivity_metrics_logger";
+    field public static final java.lang.String DATA_KEY_EVENTS_COUNT = "count";
+    field public static final int NUMBER_OF_COMPONENTS = 5; // 0x5
+    field public static final int TAG_SKIPPED_EVENTS = -1; // 0xffffffff
+  }
+
   public class Credentials {
     ctor public Credentials(int, int, int);
     method public int getGid();
diff --git a/core/java/android/net/ConnectivityMetricsEvent.java b/core/java/android/net/ConnectivityMetricsEvent.java
index b5d67d3..5153ba9 100644
--- a/core/java/android/net/ConnectivityMetricsEvent.java
+++ b/core/java/android/net/ConnectivityMetricsEvent.java
@@ -16,10 +16,12 @@
 
 package android.net;
 
+import android.annotation.SystemApi;
 import android.os.Parcel;
 import android.os.Parcelable;
 
 /** {@hide} */
+@SystemApi
 public final class ConnectivityMetricsEvent implements Parcelable {
 
     /**  The time when this event was collected, as returned by System.currentTimeMillis(). */
@@ -80,12 +82,13 @@
     }
 
     /** {@hide} */
-    public static class Reference implements Parcelable {
+    @SystemApi
+    public final static class Reference implements Parcelable {
 
-        public long value;
+        private long mValue;
 
         public Reference(long ref) {
-            this.value = ref;
+            this.mValue = ref;
         }
 
         /** Implement the Parcelable interface */
@@ -109,11 +112,19 @@
         /** Implement the Parcelable interface */
         @Override
         public void writeToParcel(Parcel dest, int flags) {
-            dest.writeLong(value);
+            dest.writeLong(mValue);
         }
 
         public void readFromParcel(Parcel in) {
-            value = in.readLong();
+            mValue = in.readLong();
+        }
+
+        public long getValue() {
+            return mValue;
+        }
+
+        public void setValue(long val) {
+            mValue = val;
         }
     }
 }
diff --git a/core/java/android/net/ConnectivityMetricsLogger.java b/core/java/android/net/ConnectivityMetricsLogger.java
index eafb8ac..b49cc2b 100644
--- a/core/java/android/net/ConnectivityMetricsLogger.java
+++ b/core/java/android/net/ConnectivityMetricsLogger.java
@@ -15,6 +15,7 @@
  */
 package android.net;
 
+import android.annotation.SystemApi;
 import android.os.Bundle;
 import android.os.Parcelable;
 import android.os.RemoteException;
@@ -22,6 +23,7 @@
 import android.util.Log;
 
 /** {@hide} */
+@SystemApi
 public class ConnectivityMetricsLogger {
     private static String TAG = "ConnectivityMetricsLogger";
     private static final boolean DBG = true;
diff --git a/services/core/java/com/android/server/connectivity/MetricsLoggerService.java b/services/core/java/com/android/server/connectivity/MetricsLoggerService.java
index f91db78..6632765 100644
--- a/services/core/java/com/android/server/connectivity/MetricsLoggerService.java
+++ b/services/core/java/com/android/server/connectivity/MetricsLoggerService.java
@@ -291,14 +291,14 @@
          */
         public ConnectivityMetricsEvent[] getEvents(ConnectivityMetricsEvent.Reference reference) {
             enforceDumpPermission();
-            long ref = reference.value;
+            long ref = reference.getValue();
             if (VDBG) Log.v(TAG, "getEvents(" + ref + ")");
 
             ConnectivityMetricsEvent[] result;
             synchronized (mEvents) {
                 if (ref > mLastEventReference) {
                     Log.e(TAG, "Invalid reference");
-                    reference.value = mLastEventReference;
+                    reference.setValue(mLastEventReference);
                     return null;
                 }
                 if (ref < mLastEventReference - mEvents.size()) {
@@ -320,7 +320,7 @@
                 }
             }
 
-            reference.value = mLastEventReference;
+            reference.setValue(mLastEventReference);
 
             return result;
         }