Merge "Allow forceUpdateUserSetupComplete for non system users" into sc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
80ed0ced6c
@@ -452,7 +452,7 @@ package android.app.admin {
|
||||
method @RequiresPermission(android.Manifest.permission.FORCE_DEVICE_POLICY_MANAGER_LOGS) public long forceNetworkLogs();
|
||||
method @RequiresPermission("android.permission.MANAGE_PROFILE_AND_DEVICE_OWNERS") public void forceRemoveActiveAdmin(@NonNull android.content.ComponentName, int);
|
||||
method @RequiresPermission(android.Manifest.permission.FORCE_DEVICE_POLICY_MANAGER_LOGS) public long forceSecurityLogs();
|
||||
method public void forceUpdateUserSetupComplete();
|
||||
method public void forceUpdateUserSetupComplete(int);
|
||||
method @NonNull public java.util.Set<java.lang.String> getDefaultCrossProfilePackages();
|
||||
method @NonNull public java.util.Set<java.lang.String> getDisallowedSystemApps(@NonNull android.content.ComponentName, int, @NonNull String);
|
||||
method public long getLastBugReportRequestTime();
|
||||
|
||||
@@ -11974,15 +11974,14 @@ public class DevicePolicyManager {
|
||||
|
||||
/**
|
||||
* @hide
|
||||
* Force update user setup completed status.
|
||||
* Force update user setup completed status for the given {@code userId}.
|
||||
* @throws {@link SecurityException} if the caller has no
|
||||
* {@code android.Manifest.permission.MANAGE_PROFILE_AND_DEVICE_OWNERS} or the caller is
|
||||
* not {@link UserHandle#SYSTEM_USER}
|
||||
* {@code android.Manifest.permission.MANAGE_PROFILE_AND_DEVICE_OWNERS}.
|
||||
*/
|
||||
@TestApi
|
||||
public void forceUpdateUserSetupComplete() {
|
||||
public void forceUpdateUserSetupComplete(@UserIdInt int userId) {
|
||||
try {
|
||||
mService.forceUpdateUserSetupComplete();
|
||||
mService.forceUpdateUserSetupComplete(userId);
|
||||
} catch (RemoteException re) {
|
||||
throw re.rethrowFromSystemServer();
|
||||
}
|
||||
|
||||
@@ -406,7 +406,7 @@ interface IDevicePolicyManager {
|
||||
boolean isDeviceProvisioningConfigApplied();
|
||||
void setDeviceProvisioningConfigApplied();
|
||||
|
||||
void forceUpdateUserSetupComplete();
|
||||
void forceUpdateUserSetupComplete(int userId);
|
||||
|
||||
void setBackupServiceEnabled(in ComponentName admin, boolean enabled);
|
||||
boolean isBackupServiceEnabled(in ComponentName admin);
|
||||
|
||||
@@ -14513,14 +14513,10 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager {
|
||||
* apps.
|
||||
*/
|
||||
@Override
|
||||
public void forceUpdateUserSetupComplete() {
|
||||
final CallerIdentity caller = getCallerIdentity();
|
||||
public void forceUpdateUserSetupComplete(@UserIdInt int userId) {
|
||||
Preconditions.checkCallAuthorization(
|
||||
hasCallingOrSelfPermission(permission.MANAGE_PROFILE_AND_DEVICE_OWNERS));
|
||||
Preconditions.checkCallAuthorization(caller.getUserHandle().isSystem(),
|
||||
"Caller has to be in user 0");
|
||||
|
||||
final int userId = UserHandle.USER_SYSTEM;
|
||||
boolean isUserCompleted = mInjector.settingsSecureGetIntForUser(
|
||||
Settings.Secure.USER_SETUP_COMPLETE, 0, userId) != 0;
|
||||
DevicePolicyData policy = getUserData(userId);
|
||||
|
||||
@@ -3888,37 +3888,28 @@ public class DevicePolicyManagerTest extends DpmTestBase {
|
||||
public void testForceUpdateUserSetupComplete_permission() {
|
||||
// GIVEN the permission MANAGE_PROFILE_AND_DEVICE_OWNERS is not granted
|
||||
assertExpectException(SecurityException.class, /* messageRegex =*/ null,
|
||||
() -> dpm.forceUpdateUserSetupComplete());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testForceUpdateUserSetupComplete_systemUser() {
|
||||
mContext.callerPermissions.add(permission.MANAGE_PROFILE_AND_DEVICE_OWNERS);
|
||||
// GIVEN calling from user 20
|
||||
mContext.binder.callingUid = DpmMockContext.CALLER_UID;
|
||||
assertExpectException(SecurityException.class, /* messageRegex =*/ null,
|
||||
() -> dpm.forceUpdateUserSetupComplete());
|
||||
() -> dpm.forceUpdateUserSetupComplete(UserHandle.USER_SYSTEM));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testForceUpdateUserSetupComplete_forcesUpdate() {
|
||||
mContext.callerPermissions.add(permission.MANAGE_PROFILE_AND_DEVICE_OWNERS);
|
||||
mContext.binder.callingUid = DpmMockContext.CALLER_SYSTEM_USER_UID;
|
||||
final int userId = UserHandle.getUserId(mContext.binder.callingUid);
|
||||
|
||||
final int userId = UserHandle.USER_SYSTEM;
|
||||
// GIVEN userComplete is false in SettingsProvider
|
||||
setUserSetupCompleteForUser(false, userId);
|
||||
|
||||
// GIVEN userComplete is true in DPM
|
||||
DevicePolicyData userData = new DevicePolicyData(userId);
|
||||
userData.mUserSetupComplete = true;
|
||||
dpms.mUserData.put(UserHandle.USER_SYSTEM, userData);
|
||||
dpms.mUserData.put(userId, userData);
|
||||
|
||||
assertThat(dpms.hasUserSetupCompleted()).isTrue();
|
||||
|
||||
dpm.forceUpdateUserSetupComplete();
|
||||
dpm.forceUpdateUserSetupComplete(userId);
|
||||
|
||||
// THEN the state in dpms is not changed
|
||||
// THEN the state in dpms is changed
|
||||
assertThat(dpms.hasUserSetupCompleted()).isFalse();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user