Merge changes from topic "statsaccess" am: 9d25241337
Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/2528763 Change-Id: I51c7648002d57bfffd47ae7a174403cd4a38710e Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -17,7 +17,6 @@
|
||||
package android.net;
|
||||
|
||||
import static android.Manifest.permission.READ_NETWORK_USAGE_HISTORY;
|
||||
import static android.content.pm.PackageManager.PERMISSION_GRANTED;
|
||||
import static android.net.NetworkStats.UID_ALL;
|
||||
import static android.net.TrafficStats.UID_REMOVED;
|
||||
import static android.net.TrafficStats.UID_TETHERING;
|
||||
@@ -33,6 +32,8 @@ import android.os.Process;
|
||||
import android.os.UserHandle;
|
||||
import android.telephony.TelephonyManager;
|
||||
|
||||
import com.android.net.module.util.PermissionUtils;
|
||||
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
|
||||
@@ -100,6 +101,7 @@ public final class NetworkStatsAccess {
|
||||
* <li>Device owners.
|
||||
* <li>Carrier-privileged applications.
|
||||
* <li>The system UID.
|
||||
* <li>NetworkStack application.
|
||||
* </ul>
|
||||
*/
|
||||
int DEVICE = 3;
|
||||
@@ -125,9 +127,9 @@ public final class NetworkStatsAccess {
|
||||
|
||||
final int appId = UserHandle.getAppId(callingUid);
|
||||
|
||||
final boolean isNetworkStack = context.checkPermission(
|
||||
android.Manifest.permission.NETWORK_STACK, callingPid, callingUid)
|
||||
== PERMISSION_GRANTED;
|
||||
final boolean isNetworkStack = PermissionUtils.checkAnyPermissionOf(
|
||||
context, callingPid, callingUid, android.Manifest.permission.NETWORK_STACK,
|
||||
NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK);
|
||||
|
||||
if (hasCarrierPrivileges || isDeviceOwner
|
||||
|| appId == Process.SYSTEM_UID || isNetworkStack) {
|
||||
|
||||
@@ -78,6 +78,7 @@ public class NetworkStatsAccessTest {
|
||||
setHasAppOpsPermission(AppOpsManager.MODE_DEFAULT, false);
|
||||
setHasReadHistoryPermission(false);
|
||||
setHasNetworkStackPermission(false);
|
||||
setHasMainlineNetworkStackPermission(false);
|
||||
}
|
||||
|
||||
@After
|
||||
@@ -154,6 +155,10 @@ public class NetworkStatsAccessTest {
|
||||
setHasNetworkStackPermission(false);
|
||||
assertEquals(NetworkStatsAccess.Level.DEFAULT,
|
||||
NetworkStatsAccess.checkAccessLevel(mContext, TEST_PID, TEST_UID, TEST_PKG));
|
||||
|
||||
setHasMainlineNetworkStackPermission(true);
|
||||
assertEquals(NetworkStatsAccess.Level.DEVICE,
|
||||
NetworkStatsAccess.checkAccessLevel(mContext, TEST_PID, TEST_UID, TEST_PKG));
|
||||
}
|
||||
|
||||
private void setHasCarrierPrivileges(boolean hasPrivileges) {
|
||||
@@ -189,4 +194,10 @@ public class NetworkStatsAccessTest {
|
||||
TEST_PID, TEST_UID)).thenReturn(hasPermission ? PackageManager.PERMISSION_GRANTED
|
||||
: PackageManager.PERMISSION_DENIED);
|
||||
}
|
||||
|
||||
private void setHasMainlineNetworkStackPermission(boolean hasPermission) {
|
||||
when(mContext.checkPermission(NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK,
|
||||
TEST_PID, TEST_UID)).thenReturn(hasPermission ? PackageManager.PERMISSION_GRANTED
|
||||
: PackageManager.PERMISSION_DENIED);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user