Merge "Remove location-permission check from VcnStatusCallbacks."
This commit is contained in:
@@ -172,9 +172,6 @@ public class VcnManagementService extends IVcnManagementService.Stub {
|
|||||||
@NonNull
|
@NonNull
|
||||||
private final TrackingNetworkCallback mTrackingNetworkCallback = new TrackingNetworkCallback();
|
private final TrackingNetworkCallback mTrackingNetworkCallback = new TrackingNetworkCallback();
|
||||||
|
|
||||||
/** Can only be assigned when {@link #systemReady()} is called, since it uses AppOpsManager. */
|
|
||||||
@Nullable private LocationPermissionChecker mLocationPermissionChecker;
|
|
||||||
|
|
||||||
@GuardedBy("mLock")
|
@GuardedBy("mLock")
|
||||||
@NonNull
|
@NonNull
|
||||||
private final Map<ParcelUuid, VcnConfig> mConfigs = new ArrayMap<>();
|
private final Map<ParcelUuid, VcnConfig> mConfigs = new ArrayMap<>();
|
||||||
@@ -373,7 +370,6 @@ public class VcnManagementService extends IVcnManagementService.Stub {
|
|||||||
new NetworkRequest.Builder().clearCapabilities().build(),
|
new NetworkRequest.Builder().clearCapabilities().build(),
|
||||||
mTrackingNetworkCallback);
|
mTrackingNetworkCallback);
|
||||||
mTelephonySubscriptionTracker.register();
|
mTelephonySubscriptionTracker.register();
|
||||||
mLocationPermissionChecker = mDeps.newLocationPermissionChecker(mVcnContext.getContext());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void enforcePrimaryUser() {
|
private void enforcePrimaryUser() {
|
||||||
@@ -840,13 +836,6 @@ public class VcnManagementService extends IVcnManagementService.Stub {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!mLocationPermissionChecker.checkLocationPermission(
|
|
||||||
cbInfo.mPkgName,
|
|
||||||
"VcnStatusCallback" /* featureId */,
|
|
||||||
cbInfo.mUid,
|
|
||||||
null /* message */)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -81,7 +81,6 @@ import android.telephony.TelephonyManager;
|
|||||||
import androidx.test.filters.SmallTest;
|
import androidx.test.filters.SmallTest;
|
||||||
import androidx.test.runner.AndroidJUnit4;
|
import androidx.test.runner.AndroidJUnit4;
|
||||||
|
|
||||||
import com.android.net.module.util.LocationPermissionChecker;
|
|
||||||
import com.android.server.VcnManagementService.VcnCallback;
|
import com.android.server.VcnManagementService.VcnCallback;
|
||||||
import com.android.server.VcnManagementService.VcnStatusCallbackInfo;
|
import com.android.server.VcnManagementService.VcnStatusCallbackInfo;
|
||||||
import com.android.server.vcn.TelephonySubscriptionTracker;
|
import com.android.server.vcn.TelephonySubscriptionTracker;
|
||||||
@@ -162,8 +161,6 @@ public class VcnManagementServiceTest {
|
|||||||
mock(PersistableBundleUtils.LockingReadWriteHelper.class);
|
mock(PersistableBundleUtils.LockingReadWriteHelper.class);
|
||||||
private final TelephonySubscriptionTracker mSubscriptionTracker =
|
private final TelephonySubscriptionTracker mSubscriptionTracker =
|
||||||
mock(TelephonySubscriptionTracker.class);
|
mock(TelephonySubscriptionTracker.class);
|
||||||
private final LocationPermissionChecker mLocationPermissionChecker =
|
|
||||||
mock(LocationPermissionChecker.class);
|
|
||||||
|
|
||||||
private final ArgumentCaptor<VcnCallback> mVcnCallbackCaptor =
|
private final ArgumentCaptor<VcnCallback> mVcnCallbackCaptor =
|
||||||
ArgumentCaptor.forClass(VcnCallback.class);
|
ArgumentCaptor.forClass(VcnCallback.class);
|
||||||
@@ -207,9 +204,6 @@ public class VcnManagementServiceTest {
|
|||||||
doReturn(mConfigReadWriteHelper)
|
doReturn(mConfigReadWriteHelper)
|
||||||
.when(mMockDeps)
|
.when(mMockDeps)
|
||||||
.newPersistableBundleLockingReadWriteHelper(any());
|
.newPersistableBundleLockingReadWriteHelper(any());
|
||||||
doReturn(mLocationPermissionChecker)
|
|
||||||
.when(mMockDeps)
|
|
||||||
.newLocationPermissionChecker(eq(mMockContext));
|
|
||||||
|
|
||||||
// Setup VCN instance generation
|
// Setup VCN instance generation
|
||||||
doAnswer((invocation) -> {
|
doAnswer((invocation) -> {
|
||||||
@@ -521,10 +515,6 @@ public class VcnManagementServiceTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testSetVcnConfigNotifiesStatusCallback() throws Exception {
|
public void testSetVcnConfigNotifiesStatusCallback() throws Exception {
|
||||||
mVcnMgmtSvc.systemReady();
|
|
||||||
doReturn(true)
|
|
||||||
.when(mLocationPermissionChecker)
|
|
||||||
.checkLocationPermission(eq(TEST_PACKAGE_NAME), any(), eq(TEST_UID), any());
|
|
||||||
triggerSubscriptionTrackerCbAndGetSnapshot(Collections.singleton(TEST_UUID_2));
|
triggerSubscriptionTrackerCbAndGetSnapshot(Collections.singleton(TEST_UUID_2));
|
||||||
|
|
||||||
mVcnMgmtSvc.registerVcnStatusCallback(TEST_UUID_2, mMockStatusCallback, TEST_PACKAGE_NAME);
|
mVcnMgmtSvc.registerVcnStatusCallback(TEST_UUID_2, mMockStatusCallback, TEST_PACKAGE_NAME);
|
||||||
@@ -697,10 +687,6 @@ public class VcnManagementServiceTest {
|
|||||||
doReturn(isVcnActive ? VCN_STATUS_CODE_ACTIVE : VCN_STATUS_CODE_SAFE_MODE)
|
doReturn(isVcnActive ? VCN_STATUS_CODE_ACTIVE : VCN_STATUS_CODE_SAFE_MODE)
|
||||||
.when(vcn)
|
.when(vcn)
|
||||||
.getStatus();
|
.getStatus();
|
||||||
|
|
||||||
doReturn(true)
|
|
||||||
.when(mLocationPermissionChecker)
|
|
||||||
.checkLocationPermission(eq(TEST_PACKAGE_NAME), any(), eq(TEST_UID), any());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private NetworkCapabilities.Builder getNetworkCapabilitiesBuilderForTransport(
|
private NetworkCapabilities.Builder getNetworkCapabilitiesBuilderForTransport(
|
||||||
@@ -933,8 +919,7 @@ public class VcnManagementServiceTest {
|
|||||||
@NonNull ParcelUuid subGroup,
|
@NonNull ParcelUuid subGroup,
|
||||||
@NonNull String pkgName,
|
@NonNull String pkgName,
|
||||||
int uid,
|
int uid,
|
||||||
boolean hasPermissionsforSubGroup,
|
boolean hasPermissionsforSubGroup)
|
||||||
boolean hasLocationPermission)
|
|
||||||
throws Exception {
|
throws Exception {
|
||||||
TelephonySubscriptionSnapshot snapshot =
|
TelephonySubscriptionSnapshot snapshot =
|
||||||
triggerSubscriptionTrackerCbAndGetSnapshot(Collections.singleton(subGroup));
|
triggerSubscriptionTrackerCbAndGetSnapshot(Collections.singleton(subGroup));
|
||||||
@@ -946,10 +931,6 @@ public class VcnManagementServiceTest {
|
|||||||
.when(snapshot)
|
.when(snapshot)
|
||||||
.packageHasPermissionsForSubscriptionGroup(eq(subGroup), eq(pkgName));
|
.packageHasPermissionsForSubscriptionGroup(eq(subGroup), eq(pkgName));
|
||||||
|
|
||||||
doReturn(hasLocationPermission)
|
|
||||||
.when(mLocationPermissionChecker)
|
|
||||||
.checkLocationPermission(eq(pkgName), any(), eq(uid), any());
|
|
||||||
|
|
||||||
mVcnMgmtSvc.registerVcnStatusCallback(subGroup, mMockStatusCallback, pkgName);
|
mVcnMgmtSvc.registerVcnStatusCallback(subGroup, mMockStatusCallback, pkgName);
|
||||||
|
|
||||||
triggerVcnSafeMode(subGroup, snapshot, true /* enterSafeMode */);
|
triggerVcnSafeMode(subGroup, snapshot, true /* enterSafeMode */);
|
||||||
@@ -959,11 +940,7 @@ public class VcnManagementServiceTest {
|
|||||||
public void testVcnStatusCallbackOnSafeModeStatusChangedWithCarrierPrivileges()
|
public void testVcnStatusCallbackOnSafeModeStatusChangedWithCarrierPrivileges()
|
||||||
throws Exception {
|
throws Exception {
|
||||||
triggerVcnStatusCallbackOnSafeModeStatusChanged(
|
triggerVcnStatusCallbackOnSafeModeStatusChanged(
|
||||||
TEST_UUID_1,
|
TEST_UUID_1, TEST_PACKAGE_NAME, TEST_UID, true /* hasPermissionsforSubGroup */);
|
||||||
TEST_PACKAGE_NAME,
|
|
||||||
TEST_UID,
|
|
||||||
true /* hasPermissionsforSubGroup */,
|
|
||||||
true /* hasLocationPermission */);
|
|
||||||
|
|
||||||
verify(mMockStatusCallback).onVcnStatusChanged(VcnManager.VCN_STATUS_CODE_SAFE_MODE);
|
verify(mMockStatusCallback).onVcnStatusChanged(VcnManager.VCN_STATUS_CODE_SAFE_MODE);
|
||||||
}
|
}
|
||||||
@@ -972,25 +949,7 @@ public class VcnManagementServiceTest {
|
|||||||
public void testVcnStatusCallbackOnSafeModeStatusChangedWithoutCarrierPrivileges()
|
public void testVcnStatusCallbackOnSafeModeStatusChangedWithoutCarrierPrivileges()
|
||||||
throws Exception {
|
throws Exception {
|
||||||
triggerVcnStatusCallbackOnSafeModeStatusChanged(
|
triggerVcnStatusCallbackOnSafeModeStatusChanged(
|
||||||
TEST_UUID_1,
|
TEST_UUID_1, TEST_PACKAGE_NAME, TEST_UID, false /* hasPermissionsforSubGroup */);
|
||||||
TEST_PACKAGE_NAME,
|
|
||||||
TEST_UID,
|
|
||||||
false /* hasPermissionsforSubGroup */,
|
|
||||||
true /* hasLocationPermission */);
|
|
||||||
|
|
||||||
verify(mMockStatusCallback, never())
|
|
||||||
.onVcnStatusChanged(VcnManager.VCN_STATUS_CODE_SAFE_MODE);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testVcnStatusCallbackOnSafeModeStatusChangedWithoutLocationPermission()
|
|
||||||
throws Exception {
|
|
||||||
triggerVcnStatusCallbackOnSafeModeStatusChanged(
|
|
||||||
TEST_UUID_1,
|
|
||||||
TEST_PACKAGE_NAME,
|
|
||||||
TEST_UID,
|
|
||||||
true /* hasPermissionsforSubGroup */,
|
|
||||||
false /* hasLocationPermission */);
|
|
||||||
|
|
||||||
verify(mMockStatusCallback, never())
|
verify(mMockStatusCallback, never())
|
||||||
.onVcnStatusChanged(VcnManager.VCN_STATUS_CODE_SAFE_MODE);
|
.onVcnStatusChanged(VcnManager.VCN_STATUS_CODE_SAFE_MODE);
|
||||||
@@ -1052,9 +1011,6 @@ public class VcnManagementServiceTest {
|
|||||||
.when(snapshot)
|
.when(snapshot)
|
||||||
.packageHasPermissionsForSubscriptionGroup(
|
.packageHasPermissionsForSubscriptionGroup(
|
||||||
eq(TEST_UUID_1), eq(TEST_CB_PACKAGE_NAME));
|
eq(TEST_UUID_1), eq(TEST_CB_PACKAGE_NAME));
|
||||||
doReturn(true)
|
|
||||||
.when(mLocationPermissionChecker)
|
|
||||||
.checkLocationPermission(eq(TEST_CB_PACKAGE_NAME), any(), eq(TEST_UID), any());
|
|
||||||
|
|
||||||
mVcnMgmtSvc.registerVcnStatusCallback(
|
mVcnMgmtSvc.registerVcnStatusCallback(
|
||||||
TEST_UUID_1, mMockStatusCallback, TEST_CB_PACKAGE_NAME);
|
TEST_UUID_1, mMockStatusCallback, TEST_CB_PACKAGE_NAME);
|
||||||
|
|||||||
Reference in New Issue
Block a user