Loading core/java/android/widget/RemoteViewsAdapter.java +5 −0 Original line number Diff line number Diff line Loading @@ -240,6 +240,11 @@ public class RemoteViewsAdapter extends BaseAdapter implements Handler.Callback } } @Override public void onNullBinding(ComponentName name) { enqueueDeferredUnbindServiceMessage(); } @Override public void handleMessage(Message msg) { RemoteViewsAdapter adapter = mAdapter.get(); Loading services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java +10 −0 Original line number Diff line number Diff line Loading @@ -1959,6 +1959,11 @@ class AppWidgetServiceImpl extends IAppWidgetService.Stub implements WidgetBacku mContext.unbindService(this); } @Override public void onNullBinding(ComponentName name) { mContext.unbindService(this); } @Override public void onServiceDisconnected(ComponentName name) { // Do nothing Loading Loading @@ -2104,6 +2109,11 @@ class AppWidgetServiceImpl extends IAppWidgetService.Stub implements WidgetBacku mContext.unbindService(this); } @Override public void onNullBinding(ComponentName name) { mContext.unbindService(this); } @Override public void onServiceDisconnected(android.content.ComponentName name) { // Do nothing Loading services/core/java/com/android/server/pm/PackageManagerService.java +24 −7 Original line number Diff line number Diff line Loading @@ -63,6 +63,7 @@ import android.app.ApplicationExitInfo; import android.app.ApplicationPackageManager; import android.app.BroadcastOptions; import android.app.IActivityManager; import android.app.admin.DevicePolicyManagerInternal; import android.app.admin.IDevicePolicyManager; import android.app.admin.SecurityLog; import android.app.backup.IBackupManager; Loading Loading @@ -3417,8 +3418,10 @@ public class PackageManagerService implements PackageSender, TestUtilityService // TODO(b/261957226): centralise this logic in DPM boolean isPackageDeviceAdmin(String packageName, int userId) { final IDevicePolicyManager dpm = getDevicePolicyManager(); final DevicePolicyManagerInternal dpmi = mInjector.getLocalService(DevicePolicyManagerInternal.class); try { if (dpm != null) { if (dpm != null && dpmi != null) { final ComponentName deviceOwnerComponentName = dpm.getDeviceOwnerComponent( /* callingUserOnly =*/ false); final String deviceOwnerPackageName = deviceOwnerComponentName == null ? null Loading @@ -3431,17 +3434,31 @@ public class PackageManagerService implements PackageSender, TestUtilityService return true; } // Does it contain a device admin for any user? int[] users; int[] allUsers = mUserManager.getUserIds(); int[] targetUsers; if (userId == UserHandle.USER_ALL) { users = mUserManager.getUserIds(); targetUsers = allUsers; } else { users = new int[]{userId}; targetUsers = new int[]{userId}; } for (int i = 0; i < users.length; ++i) { if (dpm.packageHasActiveAdmins(packageName, users[i])) { for (int i = 0; i < targetUsers.length; ++i) { if (dpm.packageHasActiveAdmins(packageName, targetUsers[i])) { return true; } if (isDeviceManagementRoleHolder(packageName, users[i])) { } // If a package is DMRH on a managed user, it should also be treated as an admin on // that user. If that package is also a system package, it should also be protected // on other users otherwise "uninstall updates" on an unmanaged user may break // management on other users because apk version is shared between all users. var packageState = snapshotComputer().getPackageStateInternal(packageName); if (packageState == null) { return false; } for (int user : packageState.isSystem() ? allUsers : targetUsers) { if (isDeviceManagementRoleHolder(packageName, user) && dpmi.isUserOrganizationManaged(user)) { return true; } } Loading Loading
core/java/android/widget/RemoteViewsAdapter.java +5 −0 Original line number Diff line number Diff line Loading @@ -240,6 +240,11 @@ public class RemoteViewsAdapter extends BaseAdapter implements Handler.Callback } } @Override public void onNullBinding(ComponentName name) { enqueueDeferredUnbindServiceMessage(); } @Override public void handleMessage(Message msg) { RemoteViewsAdapter adapter = mAdapter.get(); Loading
services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java +10 −0 Original line number Diff line number Diff line Loading @@ -1959,6 +1959,11 @@ class AppWidgetServiceImpl extends IAppWidgetService.Stub implements WidgetBacku mContext.unbindService(this); } @Override public void onNullBinding(ComponentName name) { mContext.unbindService(this); } @Override public void onServiceDisconnected(ComponentName name) { // Do nothing Loading Loading @@ -2104,6 +2109,11 @@ class AppWidgetServiceImpl extends IAppWidgetService.Stub implements WidgetBacku mContext.unbindService(this); } @Override public void onNullBinding(ComponentName name) { mContext.unbindService(this); } @Override public void onServiceDisconnected(android.content.ComponentName name) { // Do nothing Loading
services/core/java/com/android/server/pm/PackageManagerService.java +24 −7 Original line number Diff line number Diff line Loading @@ -63,6 +63,7 @@ import android.app.ApplicationExitInfo; import android.app.ApplicationPackageManager; import android.app.BroadcastOptions; import android.app.IActivityManager; import android.app.admin.DevicePolicyManagerInternal; import android.app.admin.IDevicePolicyManager; import android.app.admin.SecurityLog; import android.app.backup.IBackupManager; Loading Loading @@ -3417,8 +3418,10 @@ public class PackageManagerService implements PackageSender, TestUtilityService // TODO(b/261957226): centralise this logic in DPM boolean isPackageDeviceAdmin(String packageName, int userId) { final IDevicePolicyManager dpm = getDevicePolicyManager(); final DevicePolicyManagerInternal dpmi = mInjector.getLocalService(DevicePolicyManagerInternal.class); try { if (dpm != null) { if (dpm != null && dpmi != null) { final ComponentName deviceOwnerComponentName = dpm.getDeviceOwnerComponent( /* callingUserOnly =*/ false); final String deviceOwnerPackageName = deviceOwnerComponentName == null ? null Loading @@ -3431,17 +3434,31 @@ public class PackageManagerService implements PackageSender, TestUtilityService return true; } // Does it contain a device admin for any user? int[] users; int[] allUsers = mUserManager.getUserIds(); int[] targetUsers; if (userId == UserHandle.USER_ALL) { users = mUserManager.getUserIds(); targetUsers = allUsers; } else { users = new int[]{userId}; targetUsers = new int[]{userId}; } for (int i = 0; i < users.length; ++i) { if (dpm.packageHasActiveAdmins(packageName, users[i])) { for (int i = 0; i < targetUsers.length; ++i) { if (dpm.packageHasActiveAdmins(packageName, targetUsers[i])) { return true; } if (isDeviceManagementRoleHolder(packageName, users[i])) { } // If a package is DMRH on a managed user, it should also be treated as an admin on // that user. If that package is also a system package, it should also be protected // on other users otherwise "uninstall updates" on an unmanaged user may break // management on other users because apk version is shared between all users. var packageState = snapshotComputer().getPackageStateInternal(packageName); if (packageState == null) { return false; } for (int user : packageState.isSystem() ? allUsers : targetUsers) { if (isDeviceManagementRoleHolder(packageName, user) && dpmi.isUserOrganizationManaged(user)) { return true; } } Loading