From ad1cebe58e5c3449c16ebd5659efa2b88c22e2ab Mon Sep 17 00:00:00 2001 From: Jeff Sharkey Date: Fri, 2 Jun 2017 17:36:26 -0600 Subject: [PATCH] Annotate @SystemApi with required permissions. Most @SystemApi methods should be protected with system (or higher) permissions, so annotate common methods with @RequiresPermission to make automatic verification easier. Verification is really only relevant when calling into system services (where permissions checking can happen on the other side of a Binder call), so annotate managers with the new @SystemService annotation, which is now automatically documented. This is purely a docs change; no logic changes are being made. Test: make -j32 update-api && make -j32 offline-sdk-docs Bug: 62263906 Change-Id: I2554227202d84465676aa4ab0dd336b5c45fc651 --- core/java/android/app/usage/NetworkStatsManager.java | 2 ++ core/java/android/net/EthernetManager.java | 2 ++ core/java/android/net/IpSecManager.java | 7 +++---- core/java/android/net/TrafficStats.java | 3 +++ core/java/android/net/nsd/NsdManager.java | 5 ++--- 5 files changed, 12 insertions(+), 7 deletions(-) diff --git a/core/java/android/app/usage/NetworkStatsManager.java b/core/java/android/app/usage/NetworkStatsManager.java index 6cd4e92383..ef262e0460 100644 --- a/core/java/android/app/usage/NetworkStatsManager.java +++ b/core/java/android/app/usage/NetworkStatsManager.java @@ -19,6 +19,7 @@ package android.app.usage; import static com.android.internal.util.Preconditions.checkNotNull; import android.annotation.Nullable; +import android.annotation.SystemService; import android.app.usage.NetworkStats.Bucket; import android.content.Context; import android.net.ConnectivityManager; @@ -82,6 +83,7 @@ import android.util.Log; * the above permission, even to access an app's own data usage, and carrier-privileged apps were * not included. */ +@SystemService(Context.NETWORK_STATS_SERVICE) public class NetworkStatsManager { private static final String TAG = "NetworkStatsManager"; private static final boolean DBG = false; diff --git a/core/java/android/net/EthernetManager.java b/core/java/android/net/EthernetManager.java index 664b7b4089..31a30968cb 100644 --- a/core/java/android/net/EthernetManager.java +++ b/core/java/android/net/EthernetManager.java @@ -16,6 +16,7 @@ package android.net; +import android.annotation.SystemService; import android.content.Context; import android.net.IEthernetManager; import android.net.IEthernetServiceListener; @@ -31,6 +32,7 @@ import java.util.ArrayList; * * @hide */ +@SystemService(Context.ETHERNET_SERVICE) public class EthernetManager { private static final String TAG = "EthernetManager"; private static final int MSG_AVAILABILITY_CHANGED = 1000; diff --git a/core/java/android/net/IpSecManager.java b/core/java/android/net/IpSecManager.java index 114e46e54f..e3cda5e7d8 100644 --- a/core/java/android/net/IpSecManager.java +++ b/core/java/android/net/IpSecManager.java @@ -18,6 +18,8 @@ package android.net; import static com.android.internal.util.Preconditions.checkNotNull; import android.annotation.NonNull; +import android.annotation.SystemService; +import android.content.Context; import android.os.Binder; import android.os.Bundle; import android.os.ParcelFileDescriptor; @@ -34,12 +36,9 @@ import java.net.Socket; * This class contains methods for managing IPsec sessions, which will perform kernel-space * encryption and decryption of socket or Network traffic. * - *

An IpSecManager may be obtained by calling {@link - * android.content.Context#getSystemService(String) Context#getSystemService(String)} with {@link - * android.content.Context#IPSEC_SERVICE Context#IPSEC_SERVICE} - * * @hide */ +@SystemService(Context.IPSEC_SERVICE) public final class IpSecManager { private static final String TAG = "IpSecManager"; diff --git a/core/java/android/net/TrafficStats.java b/core/java/android/net/TrafficStats.java index fc66395bcd..f9346165df 100644 --- a/core/java/android/net/TrafficStats.java +++ b/core/java/android/net/TrafficStats.java @@ -16,6 +16,7 @@ package android.net; +import android.annotation.RequiresPermission; import android.annotation.SystemApi; import android.app.DownloadManager; import android.app.backup.BackupManager; @@ -243,6 +244,7 @@ public class TrafficStats { * @hide */ @SystemApi + @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public static void setThreadStatsUid(int uid) { NetworkManagementSocketTagger.setThreadSocketStatsUid(uid); } @@ -255,6 +257,7 @@ public class TrafficStats { * @hide */ @SystemApi + @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public static void clearThreadStatsUid() { NetworkManagementSocketTagger.setThreadSocketStatsUid(-1); } diff --git a/core/java/android/net/nsd/NsdManager.java b/core/java/android/net/nsd/NsdManager.java index 1dde3cad23..2d480a18d5 100644 --- a/core/java/android/net/nsd/NsdManager.java +++ b/core/java/android/net/nsd/NsdManager.java @@ -17,6 +17,7 @@ package android.net.nsd; import android.annotation.SdkConstant; +import android.annotation.SystemService; import android.annotation.SdkConstant.SdkConstantType; import android.content.Context; import android.os.Handler; @@ -113,11 +114,9 @@ import com.android.internal.util.Protocol; * http://www.iana.org/form/ports-service. Existing services can be found at * http://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xml * - * Get an instance of this class by calling {@link android.content.Context#getSystemService(String) - * Context.getSystemService(Context.NSD_SERVICE)}. - * * {@see NsdServiceInfo} */ +@SystemService(Context.NSD_SERVICE) public final class NsdManager { private static final String TAG = NsdManager.class.getSimpleName(); private static final boolean DBG = false;