From 17a3875fb6223ca5e4bd7153ceff4dc217ee0058 Mon Sep 17 00:00:00 2001 From: Jeff Sharkey Date: Mon, 26 Mar 2018 13:11:33 -0600 Subject: [PATCH] API council requested tweaks to TrafficStats. Test: atest android.appsecurity.cts.AppSecurityTests#testAppFailAccessPrivateData Bug: 71584606 Change-Id: I4be8a47d54a04f17cbaac735d543ff7d6370376d --- core/java/android/net/TrafficStats.java | 32 ++++++++++++++++++------- 1 file changed, 24 insertions(+), 8 deletions(-) diff --git a/core/java/android/net/TrafficStats.java b/core/java/android/net/TrafficStats.java index 7922276edb..40d53b741d 100644 --- a/core/java/android/net/TrafficStats.java +++ b/core/java/android/net/TrafficStats.java @@ -16,7 +16,6 @@ package android.net; -import android.annotation.RequiresPermission; import android.annotation.SuppressLint; import android.annotation.SystemApi; import android.annotation.TestApi; @@ -259,22 +258,35 @@ public class TrafficStats { /** * Set specific UID to use when accounting {@link Socket} traffic * originating from the current thread. Designed for use when performing an - * operation on behalf of another application. + * operation on behalf of another application, or when another application + * is performing operations on your behalf. + *

+ * Any app can accept blame for traffic performed on a socket + * originally created by another app by calling this method with the + * {@link android.system.Os#getuid()} value. However, only apps holding the + * {@code android.Manifest.permission#UPDATE_DEVICE_STATS} permission may + * assign blame to another UIDs. *

* Changes only take effect during subsequent calls to * {@link #tagSocket(Socket)}. - *

- * To take effect, caller must hold - * {@link android.Manifest.permission#UPDATE_DEVICE_STATS} permission. - * - * @hide */ @SystemApi - @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) + @SuppressLint("Doclava125") public static void setThreadStatsUid(int uid) { NetworkManagementSocketTagger.setThreadSocketStatsUid(uid); } + /** + * Get the active UID used when accounting {@link Socket} traffic originating + * from the current thread. Only one active tag per thread is supported. + * {@link #tagSocket(Socket)}. + * + * @see #setThreadStatsUid(int) + */ + public static int getThreadStatsUid() { + return NetworkManagementSocketTagger.getThreadSocketStatsUid(); + } + /** * Set specific UID to use when accounting {@link Socket} traffic * originating from the current thread as the calling UID. Designed for use @@ -282,7 +294,11 @@ public class TrafficStats { *

* Changes only take effect during subsequent calls to * {@link #tagSocket(Socket)}. + * + * @removed + * @deprecated use {@link #setThreadStatsUid(int)} instead. */ + @Deprecated public static void setThreadStatsUidSelf() { setThreadStatsUid(android.os.Process.myUid()); }