Loading services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java +27 −12 Original line number Diff line number Diff line Loading @@ -16328,8 +16328,10 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { setTimeAndTimezone(provisioningParams.getTimeZone(), provisioningParams.getLocalTime()); setLocale(provisioningParams.getLocale()); final int deviceOwnerUserId = mInjector.userManagerIsHeadlessSystemUserMode() ? UserHandle.USER_SYSTEM : caller.getUserId(); if (!removeNonRequiredAppsForManagedDevice( caller.getUserId(), deviceOwnerUserId, provisioningParams.isLeaveAllSystemAppsEnabled(), deviceAdmin)) { throw new ServiceSpecificException( Loading @@ -16337,15 +16339,16 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { "PackageManager failed to remove non required apps."); } if (!setActiveAdminAndDeviceOwner( caller.getUserId(), deviceAdmin, provisioningParams.getOwnerName())) { deviceOwnerUserId, deviceAdmin, provisioningParams.getOwnerName())) { throw new ServiceSpecificException( PROVISIONING_RESULT_SET_DEVICE_OWNER_FAILED, "Failed to set device owner."); } disallowAddUser(); setAdminCanGrantSensorsPermissionForUserUnchecked(caller.getUserId(), setAdminCanGrantSensorsPermissionForUserUnchecked(deviceOwnerUserId, provisioningParams.canDeviceOwnerGrantSensorsPermissions()); } catch (Exception e) { DevicePolicyEventLogger Loading Loading @@ -16388,18 +16391,21 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { } private boolean removeNonRequiredAppsForManagedDevice( int userId, boolean leaveAllSystemAppsEnabled, ComponentName admin) { @UserIdInt int userId, boolean leaveAllSystemAppsEnabled, ComponentName admin) { Set<String> packagesToDelete = leaveAllSystemAppsEnabled ? Collections.emptySet() : mOverlayPackagesProvider.getNonRequiredApps( admin, userId, ACTION_PROVISION_MANAGED_DEVICE); removeNonInstalledPackages(packagesToDelete, userId); if (packagesToDelete.isEmpty()) { Slog.i(LOG_TAG, "No packages to delete on user " + userId); return true; } NonRequiredPackageDeleteObserver packageDeleteObserver = new NonRequiredPackageDeleteObserver(packagesToDelete.size()); for (String packageName : packagesToDelete) { if (isPackageInstalledForUser(packageName, userId)) { Slog.i(LOG_TAG, "Deleting package [" + packageName + "] as user " + userId); mContext.getPackageManager().deletePackageAsUser( packageName, Loading @@ -16407,11 +16413,20 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { PackageManager.DELETE_SYSTEM_APP, userId); } } Slog.i(LOG_TAG, "Waiting for non required apps to be deleted"); return packageDeleteObserver.awaitPackagesDeletion(); } private void removeNonInstalledPackages(Set<String> packages, @UserIdInt int userId) { final Set<String> toBeRemoved = new HashSet<>(); for (String packageName : packages) { if (!isPackageInstalledForUser(packageName, userId)) { toBeRemoved.add(packageName); } } packages.removeAll(toBeRemoved); } private void disallowAddUser() { if (mInjector.userManagerIsHeadlessSystemUserMode()) { Slog.i(LOG_TAG, "Not setting DISALLOW_ADD_USER on headless system user mode."); Loading
services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java +27 −12 Original line number Diff line number Diff line Loading @@ -16328,8 +16328,10 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { setTimeAndTimezone(provisioningParams.getTimeZone(), provisioningParams.getLocalTime()); setLocale(provisioningParams.getLocale()); final int deviceOwnerUserId = mInjector.userManagerIsHeadlessSystemUserMode() ? UserHandle.USER_SYSTEM : caller.getUserId(); if (!removeNonRequiredAppsForManagedDevice( caller.getUserId(), deviceOwnerUserId, provisioningParams.isLeaveAllSystemAppsEnabled(), deviceAdmin)) { throw new ServiceSpecificException( Loading @@ -16337,15 +16339,16 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { "PackageManager failed to remove non required apps."); } if (!setActiveAdminAndDeviceOwner( caller.getUserId(), deviceAdmin, provisioningParams.getOwnerName())) { deviceOwnerUserId, deviceAdmin, provisioningParams.getOwnerName())) { throw new ServiceSpecificException( PROVISIONING_RESULT_SET_DEVICE_OWNER_FAILED, "Failed to set device owner."); } disallowAddUser(); setAdminCanGrantSensorsPermissionForUserUnchecked(caller.getUserId(), setAdminCanGrantSensorsPermissionForUserUnchecked(deviceOwnerUserId, provisioningParams.canDeviceOwnerGrantSensorsPermissions()); } catch (Exception e) { DevicePolicyEventLogger Loading Loading @@ -16388,18 +16391,21 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { } private boolean removeNonRequiredAppsForManagedDevice( int userId, boolean leaveAllSystemAppsEnabled, ComponentName admin) { @UserIdInt int userId, boolean leaveAllSystemAppsEnabled, ComponentName admin) { Set<String> packagesToDelete = leaveAllSystemAppsEnabled ? Collections.emptySet() : mOverlayPackagesProvider.getNonRequiredApps( admin, userId, ACTION_PROVISION_MANAGED_DEVICE); removeNonInstalledPackages(packagesToDelete, userId); if (packagesToDelete.isEmpty()) { Slog.i(LOG_TAG, "No packages to delete on user " + userId); return true; } NonRequiredPackageDeleteObserver packageDeleteObserver = new NonRequiredPackageDeleteObserver(packagesToDelete.size()); for (String packageName : packagesToDelete) { if (isPackageInstalledForUser(packageName, userId)) { Slog.i(LOG_TAG, "Deleting package [" + packageName + "] as user " + userId); mContext.getPackageManager().deletePackageAsUser( packageName, Loading @@ -16407,11 +16413,20 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { PackageManager.DELETE_SYSTEM_APP, userId); } } Slog.i(LOG_TAG, "Waiting for non required apps to be deleted"); return packageDeleteObserver.awaitPackagesDeletion(); } private void removeNonInstalledPackages(Set<String> packages, @UserIdInt int userId) { final Set<String> toBeRemoved = new HashSet<>(); for (String packageName : packages) { if (!isPackageInstalledForUser(packageName, userId)) { toBeRemoved.add(packageName); } } packages.removeAll(toBeRemoved); } private void disallowAddUser() { if (mInjector.userManagerIsHeadlessSystemUserMode()) { Slog.i(LOG_TAG, "Not setting DISALLOW_ADD_USER on headless system user mode.");