Loading services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java +10 −2 Original line number Diff line number Diff line Loading @@ -108,6 +108,8 @@ import android.app.ActivityTaskManager; import android.app.ActivityThread; import android.app.AlarmManager; import android.app.AppGlobals; import android.app.AppOpsManager; import android.app.BroadcastOptions; import android.app.IActivityManager; import android.app.IActivityTaskManager; import android.app.IApplicationThread; Loading Loading @@ -2897,12 +2899,18 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { admin.getUserHandle()).isEmpty()) { return false; } final BroadcastOptions options = BroadcastOptions.makeBasic(); options.setBackgroundActivityStartsAllowed(true); if (result != null) { mContext.sendOrderedBroadcastAsUser(intent, admin.getUserHandle(), null, result, mHandler, Activity.RESULT_OK, null, null); null, AppOpsManager.OP_NONE, options.toBundle(), result, mHandler, Activity.RESULT_OK, null, null); } else { mContext.sendBroadcastAsUser(intent, admin.getUserHandle()); mContext.sendBroadcastAsUser(intent, admin.getUserHandle(), null, options.toBundle()); } return true; } Loading services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerTest.java +23 −6 Original line number Diff line number Diff line Loading @@ -57,6 +57,7 @@ import static org.testng.Assert.assertThrows; import android.Manifest.permission; import android.annotation.RawRes; import android.app.Activity; import android.app.AppOpsManager; import android.app.Notification; import android.app.admin.DeviceAdminReceiver; import android.app.admin.DevicePolicyManager; Loading Loading @@ -379,7 +380,9 @@ public class DevicePolicyManagerTest extends DpmTestBase { verify(mContext.spiedContext).sendBroadcastAsUser( MockUtils.checkIntentAction( DeviceAdminReceiver.ACTION_DEVICE_ADMIN_ENABLED), MockUtils.checkUserHandle(DpmMockContext.CALLER_USER_HANDLE)); MockUtils.checkUserHandle(DpmMockContext.CALLER_USER_HANDLE), eq(null), any(Bundle.class)); verify(getServices().ipackageManager, times(1)).setApplicationEnabledSetting( eq(admin1.getPackageName()), Loading Loading @@ -657,6 +660,8 @@ public class DevicePolicyManagerTest extends DpmTestBase { DeviceAdminReceiver.ACTION_DEVICE_ADMIN_DISABLED), MockUtils.checkUserHandle(DpmMockContext.CALLER_USER_HANDLE), isNull(String.class), eq(AppOpsManager.OP_NONE), any(Bundle.class), any(BroadcastReceiver.class), eq(dpms.mHandler), eq(Activity.RESULT_OK), Loading Loading @@ -707,6 +712,8 @@ public class DevicePolicyManagerTest extends DpmTestBase { DeviceAdminReceiver.ACTION_DEVICE_ADMIN_DISABLED), MockUtils.checkUserHandle(DpmMockContext.CALLER_USER_HANDLE), isNull(String.class), eq(AppOpsManager.OP_NONE), any(Bundle.class), any(BroadcastReceiver.class), eq(dpms.mHandler), eq(Activity.RESULT_OK), Loading Loading @@ -788,10 +795,14 @@ public class DevicePolicyManagerTest extends DpmTestBase { verify(mContext.spiedContext, times(1)).sendBroadcastAsUser( MockUtils.checkIntent(intent), MockUtils.checkUserHandle(UserHandle.USER_SYSTEM)); MockUtils.checkUserHandle(UserHandle.USER_SYSTEM), eq(null), any(Bundle.class)); verify(mContext.spiedContext, times(1)).sendBroadcastAsUser( MockUtils.checkIntent(intent), MockUtils.checkUserHandle(MANAGED_PROFILE_USER_ID)); MockUtils.checkUserHandle(MANAGED_PROFILE_USER_ID), eq(null), any(Bundle.class)); } /** Loading Loading @@ -828,10 +839,14 @@ public class DevicePolicyManagerTest extends DpmTestBase { verify(mContext.spiedContext, never()).sendBroadcastAsUser( MockUtils.checkIntent(intent), MockUtils.checkUserHandle(UserHandle.USER_SYSTEM)); MockUtils.checkUserHandle(UserHandle.USER_SYSTEM), eq(null), any(Bundle.class)); verify(mContext.spiedContext, times(1)).sendBroadcastAsUser( MockUtils.checkIntent(intent), MockUtils.checkUserHandle(MANAGED_PROFILE_USER_ID)); MockUtils.checkUserHandle(MANAGED_PROFILE_USER_ID), eq(null), any(Bundle.class)); } /** Loading Loading @@ -4298,7 +4313,9 @@ public class DevicePolicyManagerTest extends DpmTestBase { verify(mContext.spiedContext, times(1)).sendBroadcastAsUser( MockUtils.checkIntent(intent), MockUtils.checkUserHandle(userHandle)); MockUtils.checkUserHandle(userHandle), eq(null), any()); // CertificateMonitor.updateInstalledCertificates is called on the background thread, // let it finish with system uid, otherwise it will throw and crash. Loading services/tests/servicestests/src/com/android/server/devicepolicy/DpmMockContext.java +13 −4 Original line number Diff line number Diff line Loading @@ -18,6 +18,8 @@ package com.android.server.devicepolicy; import static org.mockito.Mockito.mock; import android.annotation.Nullable; import android.app.AppOpsManager; import android.content.BroadcastReceiver; import android.content.ContentResolver; import android.content.Context; Loading Loading @@ -323,6 +325,12 @@ public class DpmMockContext extends MockContext { spiedContext.sendBroadcastAsUser(intent, user); } @Override public void sendBroadcastAsUser(Intent intent, UserHandle user, @Nullable String receiverPermission, @Nullable Bundle options) { spiedContext.sendBroadcastAsUser(intent, user, receiverPermission, options); } @Override public void sendBroadcastAsUser(Intent intent, UserHandle user, String receiverPermission) { spiedContext.sendBroadcastAsUser(intent, user, receiverPermission); Loading @@ -338,17 +346,17 @@ public class DpmMockContext extends MockContext { public void sendOrderedBroadcastAsUser(Intent intent, UserHandle user, String receiverPermission, BroadcastReceiver resultReceiver, Handler scheduler, int initialCode, String initialData, Bundle initialExtras) { spiedContext.sendOrderedBroadcastAsUser(intent, user, receiverPermission, resultReceiver, sendOrderedBroadcastAsUser( intent, user, receiverPermission, AppOpsManager.OP_NONE, resultReceiver, scheduler, initialCode, initialData, initialExtras); resultReceiver.onReceive(spiedContext, intent); } @Override public void sendOrderedBroadcastAsUser(Intent intent, UserHandle user, String receiverPermission, int appOp, BroadcastReceiver resultReceiver, Handler scheduler, int initialCode, String initialData, Bundle initialExtras) { spiedContext.sendOrderedBroadcastAsUser(intent, user, receiverPermission, appOp, resultReceiver, sendOrderedBroadcastAsUser( intent, user, receiverPermission, appOp, null, resultReceiver, scheduler, initialCode, initialData, initialExtras); } Loading @@ -358,6 +366,7 @@ public class DpmMockContext extends MockContext { Handler scheduler, int initialCode, String initialData, Bundle initialExtras) { spiedContext.sendOrderedBroadcastAsUser(intent, user, receiverPermission, appOp, options, resultReceiver, scheduler, initialCode, initialData, initialExtras); resultReceiver.onReceive(spiedContext, intent); } @Override Loading Loading
services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java +10 −2 Original line number Diff line number Diff line Loading @@ -108,6 +108,8 @@ import android.app.ActivityTaskManager; import android.app.ActivityThread; import android.app.AlarmManager; import android.app.AppGlobals; import android.app.AppOpsManager; import android.app.BroadcastOptions; import android.app.IActivityManager; import android.app.IActivityTaskManager; import android.app.IApplicationThread; Loading Loading @@ -2897,12 +2899,18 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { admin.getUserHandle()).isEmpty()) { return false; } final BroadcastOptions options = BroadcastOptions.makeBasic(); options.setBackgroundActivityStartsAllowed(true); if (result != null) { mContext.sendOrderedBroadcastAsUser(intent, admin.getUserHandle(), null, result, mHandler, Activity.RESULT_OK, null, null); null, AppOpsManager.OP_NONE, options.toBundle(), result, mHandler, Activity.RESULT_OK, null, null); } else { mContext.sendBroadcastAsUser(intent, admin.getUserHandle()); mContext.sendBroadcastAsUser(intent, admin.getUserHandle(), null, options.toBundle()); } return true; } Loading
services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerTest.java +23 −6 Original line number Diff line number Diff line Loading @@ -57,6 +57,7 @@ import static org.testng.Assert.assertThrows; import android.Manifest.permission; import android.annotation.RawRes; import android.app.Activity; import android.app.AppOpsManager; import android.app.Notification; import android.app.admin.DeviceAdminReceiver; import android.app.admin.DevicePolicyManager; Loading Loading @@ -379,7 +380,9 @@ public class DevicePolicyManagerTest extends DpmTestBase { verify(mContext.spiedContext).sendBroadcastAsUser( MockUtils.checkIntentAction( DeviceAdminReceiver.ACTION_DEVICE_ADMIN_ENABLED), MockUtils.checkUserHandle(DpmMockContext.CALLER_USER_HANDLE)); MockUtils.checkUserHandle(DpmMockContext.CALLER_USER_HANDLE), eq(null), any(Bundle.class)); verify(getServices().ipackageManager, times(1)).setApplicationEnabledSetting( eq(admin1.getPackageName()), Loading Loading @@ -657,6 +660,8 @@ public class DevicePolicyManagerTest extends DpmTestBase { DeviceAdminReceiver.ACTION_DEVICE_ADMIN_DISABLED), MockUtils.checkUserHandle(DpmMockContext.CALLER_USER_HANDLE), isNull(String.class), eq(AppOpsManager.OP_NONE), any(Bundle.class), any(BroadcastReceiver.class), eq(dpms.mHandler), eq(Activity.RESULT_OK), Loading Loading @@ -707,6 +712,8 @@ public class DevicePolicyManagerTest extends DpmTestBase { DeviceAdminReceiver.ACTION_DEVICE_ADMIN_DISABLED), MockUtils.checkUserHandle(DpmMockContext.CALLER_USER_HANDLE), isNull(String.class), eq(AppOpsManager.OP_NONE), any(Bundle.class), any(BroadcastReceiver.class), eq(dpms.mHandler), eq(Activity.RESULT_OK), Loading Loading @@ -788,10 +795,14 @@ public class DevicePolicyManagerTest extends DpmTestBase { verify(mContext.spiedContext, times(1)).sendBroadcastAsUser( MockUtils.checkIntent(intent), MockUtils.checkUserHandle(UserHandle.USER_SYSTEM)); MockUtils.checkUserHandle(UserHandle.USER_SYSTEM), eq(null), any(Bundle.class)); verify(mContext.spiedContext, times(1)).sendBroadcastAsUser( MockUtils.checkIntent(intent), MockUtils.checkUserHandle(MANAGED_PROFILE_USER_ID)); MockUtils.checkUserHandle(MANAGED_PROFILE_USER_ID), eq(null), any(Bundle.class)); } /** Loading Loading @@ -828,10 +839,14 @@ public class DevicePolicyManagerTest extends DpmTestBase { verify(mContext.spiedContext, never()).sendBroadcastAsUser( MockUtils.checkIntent(intent), MockUtils.checkUserHandle(UserHandle.USER_SYSTEM)); MockUtils.checkUserHandle(UserHandle.USER_SYSTEM), eq(null), any(Bundle.class)); verify(mContext.spiedContext, times(1)).sendBroadcastAsUser( MockUtils.checkIntent(intent), MockUtils.checkUserHandle(MANAGED_PROFILE_USER_ID)); MockUtils.checkUserHandle(MANAGED_PROFILE_USER_ID), eq(null), any(Bundle.class)); } /** Loading Loading @@ -4298,7 +4313,9 @@ public class DevicePolicyManagerTest extends DpmTestBase { verify(mContext.spiedContext, times(1)).sendBroadcastAsUser( MockUtils.checkIntent(intent), MockUtils.checkUserHandle(userHandle)); MockUtils.checkUserHandle(userHandle), eq(null), any()); // CertificateMonitor.updateInstalledCertificates is called on the background thread, // let it finish with system uid, otherwise it will throw and crash. Loading
services/tests/servicestests/src/com/android/server/devicepolicy/DpmMockContext.java +13 −4 Original line number Diff line number Diff line Loading @@ -18,6 +18,8 @@ package com.android.server.devicepolicy; import static org.mockito.Mockito.mock; import android.annotation.Nullable; import android.app.AppOpsManager; import android.content.BroadcastReceiver; import android.content.ContentResolver; import android.content.Context; Loading Loading @@ -323,6 +325,12 @@ public class DpmMockContext extends MockContext { spiedContext.sendBroadcastAsUser(intent, user); } @Override public void sendBroadcastAsUser(Intent intent, UserHandle user, @Nullable String receiverPermission, @Nullable Bundle options) { spiedContext.sendBroadcastAsUser(intent, user, receiverPermission, options); } @Override public void sendBroadcastAsUser(Intent intent, UserHandle user, String receiverPermission) { spiedContext.sendBroadcastAsUser(intent, user, receiverPermission); Loading @@ -338,17 +346,17 @@ public class DpmMockContext extends MockContext { public void sendOrderedBroadcastAsUser(Intent intent, UserHandle user, String receiverPermission, BroadcastReceiver resultReceiver, Handler scheduler, int initialCode, String initialData, Bundle initialExtras) { spiedContext.sendOrderedBroadcastAsUser(intent, user, receiverPermission, resultReceiver, sendOrderedBroadcastAsUser( intent, user, receiverPermission, AppOpsManager.OP_NONE, resultReceiver, scheduler, initialCode, initialData, initialExtras); resultReceiver.onReceive(spiedContext, intent); } @Override public void sendOrderedBroadcastAsUser(Intent intent, UserHandle user, String receiverPermission, int appOp, BroadcastReceiver resultReceiver, Handler scheduler, int initialCode, String initialData, Bundle initialExtras) { spiedContext.sendOrderedBroadcastAsUser(intent, user, receiverPermission, appOp, resultReceiver, sendOrderedBroadcastAsUser( intent, user, receiverPermission, appOp, null, resultReceiver, scheduler, initialCode, initialData, initialExtras); } Loading @@ -358,6 +366,7 @@ public class DpmMockContext extends MockContext { Handler scheduler, int initialCode, String initialData, Bundle initialExtras) { spiedContext.sendOrderedBroadcastAsUser(intent, user, receiverPermission, appOp, options, resultReceiver, scheduler, initialCode, initialData, initialExtras); resultReceiver.onReceive(spiedContext, intent); } @Override Loading