Use shell permission to query current user
Use shell permissions to obtain CREATE_USERS to call ActivityManager.getCurrentUser in ConnectivityServiceTest. This is necessary to allow the tests to run in coverage tests without the platform certificate. Bug: 187935317 Test: atest FrameworksNetTests:ConnectivityServiceTest Change-Id: I5a56ffab4820d351dcdb132046698cd0d3b8bdb1
This commit is contained in:
@@ -1247,6 +1247,13 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
||||
public boolean getCellular464XlatEnabled() {
|
||||
return NetworkProperties.isCellular464XlatEnabled().orElse(true);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a {@link LocationPermissionChecker}.
|
||||
*/
|
||||
public LocationPermissionChecker makeLocationPermissionChecker(Context context) {
|
||||
return new LocationPermissionChecker(context);
|
||||
}
|
||||
}
|
||||
|
||||
public ConnectivityService(Context context) {
|
||||
@@ -1314,7 +1321,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
||||
mNetd = netd;
|
||||
mTelephonyManager = (TelephonyManager) mContext.getSystemService(Context.TELEPHONY_SERVICE);
|
||||
mAppOpsManager = (AppOpsManager) mContext.getSystemService(Context.APP_OPS_SERVICE);
|
||||
mLocationPermissionChecker = new LocationPermissionChecker(mContext);
|
||||
mLocationPermissionChecker = mDeps.makeLocationPermissionChecker(mContext);
|
||||
|
||||
// To ensure uid state is synchronized with Network Policy, register for
|
||||
// NetworkPolicyManagerService events must happen prior to NetworkPolicyManagerService
|
||||
|
||||
@@ -19,6 +19,7 @@ package com.android.server;
|
||||
import static android.Manifest.permission.CHANGE_NETWORK_STATE;
|
||||
import static android.Manifest.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS;
|
||||
import static android.Manifest.permission.CONTROL_OEM_PAID_NETWORK_PREFERENCE;
|
||||
import static android.Manifest.permission.CREATE_USERS;
|
||||
import static android.Manifest.permission.DUMP;
|
||||
import static android.Manifest.permission.GET_INTENT_SENDER_INTENT;
|
||||
import static android.Manifest.permission.LOCAL_MAC_ADDRESS;
|
||||
@@ -307,6 +308,7 @@ import com.android.internal.util.test.BroadcastInterceptingContext;
|
||||
import com.android.internal.util.test.FakeSettingsProvider;
|
||||
import com.android.net.module.util.ArrayTrackRecord;
|
||||
import com.android.net.module.util.CollectionUtils;
|
||||
import com.android.net.module.util.LocationPermissionChecker;
|
||||
import com.android.server.ConnectivityService.ConnectivityDiagnosticsCallbackInfo;
|
||||
import com.android.server.ConnectivityService.NetworkRequestInfo;
|
||||
import com.android.server.connectivity.MockableSystemProperties;
|
||||
@@ -1674,6 +1676,13 @@ public class ConnectivityServiceTest {
|
||||
return mPolicyTracker;
|
||||
}).when(deps).makeMultinetworkPolicyTracker(any(), any(), any());
|
||||
doReturn(true).when(deps).getCellular464XlatEnabled();
|
||||
doAnswer(inv ->
|
||||
new LocationPermissionChecker(inv.getArgument(0)) {
|
||||
@Override
|
||||
protected int getCurrentUser() {
|
||||
return runAsShell(CREATE_USERS, super::getCurrentUser);
|
||||
}
|
||||
}).when(deps).makeLocationPermissionChecker(any());
|
||||
|
||||
doReturn(60000).when(mResources).getInteger(R.integer.config_networkTransitionTimeout);
|
||||
doReturn("").when(mResources).getString(R.string.config_networkCaptivePortalServerUrl);
|
||||
|
||||
Reference in New Issue
Block a user