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
This commit is contained in:
Jeff Sharkey
2017-06-02 17:36:26 -06:00
parent b15ed2c488
commit ad1cebe58e
5 changed files with 12 additions and 7 deletions

View File

@@ -19,6 +19,7 @@ package android.app.usage;
import static com.android.internal.util.Preconditions.checkNotNull; import static com.android.internal.util.Preconditions.checkNotNull;
import android.annotation.Nullable; import android.annotation.Nullable;
import android.annotation.SystemService;
import android.app.usage.NetworkStats.Bucket; import android.app.usage.NetworkStats.Bucket;
import android.content.Context; import android.content.Context;
import android.net.ConnectivityManager; 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 * the above permission, even to access an app's own data usage, and carrier-privileged apps were
* not included. * not included.
*/ */
@SystemService(Context.NETWORK_STATS_SERVICE)
public class NetworkStatsManager { public class NetworkStatsManager {
private static final String TAG = "NetworkStatsManager"; private static final String TAG = "NetworkStatsManager";
private static final boolean DBG = false; private static final boolean DBG = false;

View File

@@ -16,6 +16,7 @@
package android.net; package android.net;
import android.annotation.SystemService;
import android.content.Context; import android.content.Context;
import android.net.IEthernetManager; import android.net.IEthernetManager;
import android.net.IEthernetServiceListener; import android.net.IEthernetServiceListener;
@@ -31,6 +32,7 @@ import java.util.ArrayList;
* *
* @hide * @hide
*/ */
@SystemService(Context.ETHERNET_SERVICE)
public class EthernetManager { public class EthernetManager {
private static final String TAG = "EthernetManager"; private static final String TAG = "EthernetManager";
private static final int MSG_AVAILABILITY_CHANGED = 1000; private static final int MSG_AVAILABILITY_CHANGED = 1000;

View File

@@ -18,6 +18,8 @@ package android.net;
import static com.android.internal.util.Preconditions.checkNotNull; import static com.android.internal.util.Preconditions.checkNotNull;
import android.annotation.NonNull; import android.annotation.NonNull;
import android.annotation.SystemService;
import android.content.Context;
import android.os.Binder; import android.os.Binder;
import android.os.Bundle; import android.os.Bundle;
import android.os.ParcelFileDescriptor; 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 * This class contains methods for managing IPsec sessions, which will perform kernel-space
* encryption and decryption of socket or Network traffic. * encryption and decryption of socket or Network traffic.
* *
* <p>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 * @hide
*/ */
@SystemService(Context.IPSEC_SERVICE)
public final class IpSecManager { public final class IpSecManager {
private static final String TAG = "IpSecManager"; private static final String TAG = "IpSecManager";

View File

@@ -16,6 +16,7 @@
package android.net; package android.net;
import android.annotation.RequiresPermission;
import android.annotation.SystemApi; import android.annotation.SystemApi;
import android.app.DownloadManager; import android.app.DownloadManager;
import android.app.backup.BackupManager; import android.app.backup.BackupManager;
@@ -243,6 +244,7 @@ public class TrafficStats {
* @hide * @hide
*/ */
@SystemApi @SystemApi
@RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS)
public static void setThreadStatsUid(int uid) { public static void setThreadStatsUid(int uid) {
NetworkManagementSocketTagger.setThreadSocketStatsUid(uid); NetworkManagementSocketTagger.setThreadSocketStatsUid(uid);
} }
@@ -255,6 +257,7 @@ public class TrafficStats {
* @hide * @hide
*/ */
@SystemApi @SystemApi
@RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS)
public static void clearThreadStatsUid() { public static void clearThreadStatsUid() {
NetworkManagementSocketTagger.setThreadSocketStatsUid(-1); NetworkManagementSocketTagger.setThreadSocketStatsUid(-1);
} }

View File

@@ -17,6 +17,7 @@
package android.net.nsd; package android.net.nsd;
import android.annotation.SdkConstant; import android.annotation.SdkConstant;
import android.annotation.SystemService;
import android.annotation.SdkConstant.SdkConstantType; import android.annotation.SdkConstant.SdkConstantType;
import android.content.Context; import android.content.Context;
import android.os.Handler; 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/form/ports-service. Existing services can be found at
* http://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xml * 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} * {@see NsdServiceInfo}
*/ */
@SystemService(Context.NSD_SERVICE)
public final class NsdManager { public final class NsdManager {
private static final String TAG = NsdManager.class.getSimpleName(); private static final String TAG = NsdManager.class.getSimpleName();
private static final boolean DBG = false; private static final boolean DBG = false;