Merge changes from topic "sp20-stats-provider-permission" am: 0fa3b9e2e4 am: 344ecb4200 am: f500cec98a

Change-Id: I871191f97745bc5535f906cda4726ab57292aeac
This commit is contained in:
Automerger Merge Worker
2020-03-12 09:06:05 +00:00
5 changed files with 14 additions and 3 deletions

View File

@@ -148,6 +148,7 @@ package android {
field public static final String NETWORK_SETUP_WIZARD = "android.permission.NETWORK_SETUP_WIZARD"; field public static final String NETWORK_SETUP_WIZARD = "android.permission.NETWORK_SETUP_WIZARD";
field public static final String NETWORK_SIGNAL_STRENGTH_WAKEUP = "android.permission.NETWORK_SIGNAL_STRENGTH_WAKEUP"; field public static final String NETWORK_SIGNAL_STRENGTH_WAKEUP = "android.permission.NETWORK_SIGNAL_STRENGTH_WAKEUP";
field public static final String NETWORK_STACK = "android.permission.NETWORK_STACK"; field public static final String NETWORK_STACK = "android.permission.NETWORK_STACK";
field public static final String NETWORK_STATS_PROVIDER = "android.permission.NETWORK_STATS_PROVIDER";
field public static final String NOTIFICATION_DURING_SETUP = "android.permission.NOTIFICATION_DURING_SETUP"; field public static final String NOTIFICATION_DURING_SETUP = "android.permission.NOTIFICATION_DURING_SETUP";
field public static final String NOTIFY_TV_INPUTS = "android.permission.NOTIFY_TV_INPUTS"; field public static final String NOTIFY_TV_INPUTS = "android.permission.NOTIFY_TV_INPUTS";
field public static final String OBSERVE_APP_USAGE = "android.permission.OBSERVE_APP_USAGE"; field public static final String OBSERVE_APP_USAGE = "android.permission.OBSERVE_APP_USAGE";
@@ -1416,7 +1417,7 @@ package android.app.usage {
} }
public class NetworkStatsManager { public class NetworkStatsManager {
method @NonNull @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public android.net.netstats.provider.NetworkStatsProviderCallback registerNetworkStatsProvider(@NonNull String, @NonNull android.net.netstats.provider.AbstractNetworkStatsProvider); method @NonNull @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_STATS_PROVIDER, android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK}) public android.net.netstats.provider.NetworkStatsProviderCallback registerNetworkStatsProvider(@NonNull String, @NonNull android.net.netstats.provider.AbstractNetworkStatsProvider);
} }
public static final class UsageEvents.Event { public static final class UsageEvents.Event {

View File

@@ -29,6 +29,7 @@ import android.net.ConnectivityManager;
import android.net.DataUsageRequest; import android.net.DataUsageRequest;
import android.net.INetworkStatsService; import android.net.INetworkStatsService;
import android.net.NetworkIdentity; import android.net.NetworkIdentity;
import android.net.NetworkStack;
import android.net.NetworkTemplate; import android.net.NetworkTemplate;
import android.net.netstats.provider.AbstractNetworkStatsProvider; import android.net.netstats.provider.AbstractNetworkStatsProvider;
import android.net.netstats.provider.NetworkStatsProviderCallback; import android.net.netstats.provider.NetworkStatsProviderCallback;
@@ -540,7 +541,9 @@ public class NetworkStatsManager {
* @hide * @hide
*/ */
@SystemApi @SystemApi
@RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) @RequiresPermission(anyOf = {
android.Manifest.permission.NETWORK_STATS_PROVIDER,
NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK})
@NonNull public NetworkStatsProviderCallback registerNetworkStatsProvider( @NonNull public NetworkStatsProviderCallback registerNetworkStatsProvider(
@NonNull String tag, @NonNull String tag,
@NonNull AbstractNetworkStatsProvider provider) { @NonNull AbstractNetworkStatsProvider provider) {

View File

@@ -1689,6 +1689,10 @@
<permission android:name="android.permission.NETWORK_FACTORY" <permission android:name="android.permission.NETWORK_FACTORY"
android:protectionLevel="signature" /> android:protectionLevel="signature" />
<!-- @SystemApi @hide Allows applications to access network stats provider -->
<permission android:name="android.permission.NETWORK_STATS_PROVIDER"
android:protectionLevel="signature" />
<!-- Allows Settings and SystemUI to call methods in Networking services <!-- Allows Settings and SystemUI to call methods in Networking services
<p>Not for use by third-party or privileged applications. <p>Not for use by third-party or privileged applications.
@SystemApi @TestApi @SystemApi @TestApi

View File

@@ -17,6 +17,7 @@
package com.android.server.net; package com.android.server.net;
import static android.Manifest.permission.ACCESS_NETWORK_STATE; import static android.Manifest.permission.ACCESS_NETWORK_STATE;
import static android.Manifest.permission.NETWORK_STATS_PROVIDER;
import static android.Manifest.permission.READ_NETWORK_USAGE_HISTORY; import static android.Manifest.permission.READ_NETWORK_USAGE_HISTORY;
import static android.Manifest.permission.UPDATE_DEVICE_STATS; import static android.Manifest.permission.UPDATE_DEVICE_STATS;
import static android.content.Intent.ACTION_SHUTDOWN; import static android.content.Intent.ACTION_SHUTDOWN;
@@ -1828,7 +1829,8 @@ public class NetworkStatsService extends INetworkStatsService.Stub {
*/ */
public @NonNull INetworkStatsProviderCallback registerNetworkStatsProvider( public @NonNull INetworkStatsProviderCallback registerNetworkStatsProvider(
@NonNull String tag, @NonNull INetworkStatsProvider provider) { @NonNull String tag, @NonNull INetworkStatsProvider provider) {
mContext.enforceCallingOrSelfPermission(UPDATE_DEVICE_STATS, TAG); enforceAnyPermissionOf(NETWORK_STATS_PROVIDER,
NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK);
Objects.requireNonNull(provider, "provider is null"); Objects.requireNonNull(provider, "provider is null");
Objects.requireNonNull(tag, "tag is null"); Objects.requireNonNull(tag, "tag is null");
try { try {

View File

@@ -47,6 +47,7 @@
<uses-permission android:name="android.permission.NETWORK_STACK" /> <uses-permission android:name="android.permission.NETWORK_STACK" />
<uses-permission android:name="android.permission.OBSERVE_NETWORK_POLICY" /> <uses-permission android:name="android.permission.OBSERVE_NETWORK_POLICY" />
<uses-permission android:name="android.permission.NETWORK_FACTORY" /> <uses-permission android:name="android.permission.NETWORK_FACTORY" />
<uses-permission android:name="android.permission.NETWORK_STATS_PROVIDER" />
<application> <application>
<uses-library android:name="android.test.runner" /> <uses-library android:name="android.test.runner" />