Loading services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java +26 −14 Original line number Diff line number Diff line Loading @@ -154,7 +154,6 @@ import android.provider.ContactsContract.QuickContact; import android.provider.ContactsInternal; import android.provider.Settings; import android.provider.Settings.Global; import android.security.Credentials; import android.security.IKeyChainAliasCallback; import android.security.IKeyChainService; import android.security.KeyChain; Loading @@ -163,7 +162,6 @@ import android.security.keymaster.KeymasterCertificateChain; import android.security.keystore.KeyGenParameterSpec; import android.security.keystore.ParcelableKeyGenParameterSpec; import android.security.KeyStore; import android.security.keystore.AttestationUtils; import android.service.persistentdata.PersistentDataBlockManager; import android.telephony.TelephonyManager; import android.text.TextUtils; Loading Loading @@ -11876,10 +11874,14 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { final long id = mInjector.binderClearCallingIdentity(); try { //STOPSHIP add support for COMP, DO, edge cases when device is rebooted/work mode off, //STOPSHIP add support for COMP, edge cases when device is rebooted/work mode off, //transfer callbacks and broadcast synchronized (this) { if (isProfileOwner(admin, callingUserId)) { transferProfileOwner(admin, target, callingUserId); transferProfileOwnerLocked(admin, target, callingUserId); } else if (isDeviceOwner(admin, callingUserId)) { transferDeviceOwnerLocked(admin, target, callingUserId); } } } finally { mInjector.binderRestoreCallingIdentity(id); Loading @@ -11889,9 +11891,8 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { /** * Transfers the profile owner for user with id profileOwnerUserId from admin to target. */ private void transferProfileOwner(ComponentName admin, ComponentName target, private void transferProfileOwnerLocked(ComponentName admin, ComponentName target, int profileOwnerUserId) { synchronized (this) { transferActiveAdminUncheckedLocked(target, admin, profileOwnerUserId); mOwners.transferProfileOwner(target, profileOwnerUserId); Slog.i(LOG_TAG, "Profile owner set: " + target + " on user " + profileOwnerUserId); Loading @@ -11899,5 +11900,16 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { mDeviceAdminServiceController.startServiceForOwner( target.getPackageName(), profileOwnerUserId, "transfer-profile-owner"); } /** * Transfers the device owner for user with id userId from admin to target. */ private void transferDeviceOwnerLocked(ComponentName admin, ComponentName target, int userId) { transferActiveAdminUncheckedLocked(target, admin, userId); mOwners.transferDeviceOwner(target); Slog.i(LOG_TAG, "Device owner set: " + target + " on user " + userId); mOwners.writeDeviceOwner(); mDeviceAdminServiceController.startServiceForOwner( target.getPackageName(), userId, "transfer-device-owner"); } } services/devicepolicy/java/com/android/server/devicepolicy/Owners.java +11 −0 Original line number Diff line number Diff line Loading @@ -288,6 +288,17 @@ class Owners { } } void transferDeviceOwner(ComponentName target) { synchronized (mLock) { // We don't set a name because it's not used anyway. // See DevicePolicyManagerService#getDeviceOwnerName mDeviceOwner = new OwnerInfo(null, target, mDeviceOwner.userRestrictionsMigrated, mDeviceOwner.remoteBugreportUri, mDeviceOwner.remoteBugreportHash); pushToPackageManagerLocked(); } } ComponentName getProfileOwnerComponent(int userId) { synchronized (mLock) { OwnerInfo profileOwner = mProfileOwners.get(userId); Loading Loading
services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java +26 −14 Original line number Diff line number Diff line Loading @@ -154,7 +154,6 @@ import android.provider.ContactsContract.QuickContact; import android.provider.ContactsInternal; import android.provider.Settings; import android.provider.Settings.Global; import android.security.Credentials; import android.security.IKeyChainAliasCallback; import android.security.IKeyChainService; import android.security.KeyChain; Loading @@ -163,7 +162,6 @@ import android.security.keymaster.KeymasterCertificateChain; import android.security.keystore.KeyGenParameterSpec; import android.security.keystore.ParcelableKeyGenParameterSpec; import android.security.KeyStore; import android.security.keystore.AttestationUtils; import android.service.persistentdata.PersistentDataBlockManager; import android.telephony.TelephonyManager; import android.text.TextUtils; Loading Loading @@ -11876,10 +11874,14 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { final long id = mInjector.binderClearCallingIdentity(); try { //STOPSHIP add support for COMP, DO, edge cases when device is rebooted/work mode off, //STOPSHIP add support for COMP, edge cases when device is rebooted/work mode off, //transfer callbacks and broadcast synchronized (this) { if (isProfileOwner(admin, callingUserId)) { transferProfileOwner(admin, target, callingUserId); transferProfileOwnerLocked(admin, target, callingUserId); } else if (isDeviceOwner(admin, callingUserId)) { transferDeviceOwnerLocked(admin, target, callingUserId); } } } finally { mInjector.binderRestoreCallingIdentity(id); Loading @@ -11889,9 +11891,8 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { /** * Transfers the profile owner for user with id profileOwnerUserId from admin to target. */ private void transferProfileOwner(ComponentName admin, ComponentName target, private void transferProfileOwnerLocked(ComponentName admin, ComponentName target, int profileOwnerUserId) { synchronized (this) { transferActiveAdminUncheckedLocked(target, admin, profileOwnerUserId); mOwners.transferProfileOwner(target, profileOwnerUserId); Slog.i(LOG_TAG, "Profile owner set: " + target + " on user " + profileOwnerUserId); Loading @@ -11899,5 +11900,16 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { mDeviceAdminServiceController.startServiceForOwner( target.getPackageName(), profileOwnerUserId, "transfer-profile-owner"); } /** * Transfers the device owner for user with id userId from admin to target. */ private void transferDeviceOwnerLocked(ComponentName admin, ComponentName target, int userId) { transferActiveAdminUncheckedLocked(target, admin, userId); mOwners.transferDeviceOwner(target); Slog.i(LOG_TAG, "Device owner set: " + target + " on user " + userId); mOwners.writeDeviceOwner(); mDeviceAdminServiceController.startServiceForOwner( target.getPackageName(), userId, "transfer-device-owner"); } }
services/devicepolicy/java/com/android/server/devicepolicy/Owners.java +11 −0 Original line number Diff line number Diff line Loading @@ -288,6 +288,17 @@ class Owners { } } void transferDeviceOwner(ComponentName target) { synchronized (mLock) { // We don't set a name because it's not used anyway. // See DevicePolicyManagerService#getDeviceOwnerName mDeviceOwner = new OwnerInfo(null, target, mDeviceOwner.userRestrictionsMigrated, mDeviceOwner.remoteBugreportUri, mDeviceOwner.remoteBugreportHash); pushToPackageManagerLocked(); } } ComponentName getProfileOwnerComponent(int userId) { synchronized (mLock) { OwnerInfo profileOwner = mProfileOwners.get(userId); Loading