summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java12
-rw-r--r--services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerTest.java29
-rw-r--r--services/tests/servicestests/src/com/android/server/devicepolicy/DpmMockContext.java17
3 files changed, 46 insertions, 12 deletions
diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
index e2e9c420a046..e1aeb33445ed 100644
--- a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
+++ b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
@@ -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;
@@ -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;
}
diff --git a/services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerTest.java b/services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerTest.java
index cbabb0b350d1..9ae9824da3e2 100644
--- a/services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerTest.java
+++ b/services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerTest.java
@@ -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;
@@ -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()),
@@ -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),
@@ -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),
@@ -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));
}
/**
@@ -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));
}
/**
@@ -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.
diff --git a/services/tests/servicestests/src/com/android/server/devicepolicy/DpmMockContext.java b/services/tests/servicestests/src/com/android/server/devicepolicy/DpmMockContext.java
index e411fb5d893f..bd513dc083be 100644
--- a/services/tests/servicestests/src/com/android/server/devicepolicy/DpmMockContext.java
+++ b/services/tests/servicestests/src/com/android/server/devicepolicy/DpmMockContext.java
@@ -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;
@@ -324,6 +326,12 @@ public class DpmMockContext extends MockContext {
}
@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);
}
@@ -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);
}
@@ -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