If the current device is a watch, fix DeviceOwner/ProfileOwner logic. am: 34fb70ab88

am: 9ee91d8d11

Change-Id: Ibf15871a6d0ca3219ebf32de89a42c9d680c427a
This commit is contained in:
Greg Plesur
2016-11-04 15:56:54 +00:00
committed by android-build-merger

View File

@@ -6144,6 +6144,9 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
return hasUserSetupCompleted(UserHandle.getCallingUserId());
}
// This checks only if the Setup Wizard has run. Since Wear devices pair before
// completing Setup Wizard, and pairing involves transferring user data, calling
// logic may want to check mIsWatch or mPaired in addition to hasUserSetupCompleted().
private boolean hasUserSetupCompleted(int userHandle) {
if (!mHasFeature) {
return true;
@@ -6388,7 +6391,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
}
int callingUid = mInjector.binderGetCallingUid();
if (callingUid == Process.SHELL_UID || callingUid == Process.ROOT_UID) {
if (hasUserSetupCompleted(userHandle)
if ((mIsWatch || hasUserSetupCompleted(userHandle))
&& hasIncompatibleAccountsLocked(userHandle, owner)) {
throw new IllegalStateException("Not allowed to set the profile owner because "
+ "there are already some accounts on the profile");
@@ -6396,7 +6399,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
return;
}
enforceCanManageProfileAndDeviceOwners();
if (hasUserSetupCompleted(userHandle) && !isCallerWithSystemUid()) {
if ((mIsWatch || hasUserSetupCompleted(userHandle)) && !isCallerWithSystemUid()) {
throw new IllegalStateException("Cannot set the profile owner on a user which is "
+ "already set-up");
}
@@ -8633,6 +8636,9 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
if (hasUserSetupCompleted(callingUserId)) {
return false;
}
if (mIsWatch && hasPaired(UserHandle.USER_SYSTEM)) {
return false;
}
return true;
} else if (DevicePolicyManager.ACTION_PROVISION_MANAGED_SHAREABLE_DEVICE.equals(action)) {
if (!mInjector.userManagerIsSplitSystemUser()) {
@@ -8664,7 +8670,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
}
if (isAdb) {
// if shell command runs after user setup completed check device status. Otherwise, OK.
if (hasUserSetupCompleted(UserHandle.USER_SYSTEM)) {
if (mIsWatch || hasUserSetupCompleted(UserHandle.USER_SYSTEM)) {
if (!mInjector.userManagerIsSplitSystemUser()) {
if (mUserManager.getUserCount() > 1) {
return CODE_NONSYSTEM_USER_EXISTS;