summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/core/java/com/android/server/am/ActivityManagerService.java74
-rw-r--r--services/tests/mockingservicestests/src/com/android/server/am/BaseBroadcastQueueTest.java11
-rw-r--r--services/tests/mockingservicestests/src/com/android/server/am/BroadcastQueueModernImplTest.java1
-rw-r--r--services/tests/mockingservicestests/src/com/android/server/am/BroadcastQueueTest.java1
4 files changed, 54 insertions, 33 deletions
diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java
index b87d02d86c22..10b9e70545bc 100644
--- a/services/core/java/com/android/server/am/ActivityManagerService.java
+++ b/services/core/java/com/android/server/am/ActivityManagerService.java
@@ -2486,7 +2486,7 @@ public class ActivityManagerService extends IActivityManager.Stub
mUseFifoUiScheduling = false;
mEnableOffloadQueue = false;
mEnableModernQueue = false;
- mBroadcastQueues = new BroadcastQueue[0];
+ mBroadcastQueues = injector.getBroadcastQueues(this);
mComponentAliasResolver = new ComponentAliasResolver(this);
}
@@ -2527,40 +2527,12 @@ public class ActivityManagerService extends IActivityManager.Stub
? new OomAdjusterModernImpl(this, mProcessList, activeUids)
: new OomAdjuster(this, mProcessList, activeUids);
- // Broadcast policy parameters
- final BroadcastConstants foreConstants = new BroadcastConstants(
- Settings.Global.BROADCAST_FG_CONSTANTS);
- foreConstants.TIMEOUT = BROADCAST_FG_TIMEOUT;
-
- final BroadcastConstants backConstants = new BroadcastConstants(
- Settings.Global.BROADCAST_BG_CONSTANTS);
- backConstants.TIMEOUT = BROADCAST_BG_TIMEOUT;
-
- final BroadcastConstants offloadConstants = new BroadcastConstants(
- Settings.Global.BROADCAST_OFFLOAD_CONSTANTS);
- offloadConstants.TIMEOUT = BROADCAST_BG_TIMEOUT;
- // by default, no "slow" policy in this queue
- offloadConstants.SLOW_TIME = Integer.MAX_VALUE;
-
mEnableOffloadQueue = SystemProperties.getBoolean(
"persist.device_config.activity_manager_native_boot.offload_queue_enabled", true);
- mEnableModernQueue = foreConstants.MODERN_QUEUE_ENABLED;
+ mEnableModernQueue = new BroadcastConstants(
+ Settings.Global.BROADCAST_FG_CONSTANTS).MODERN_QUEUE_ENABLED;
- if (mEnableModernQueue) {
- mBroadcastQueues = new BroadcastQueue[1];
- mBroadcastQueues[0] = new BroadcastQueueModernImpl(this, mHandler,
- foreConstants, backConstants);
- } else {
- mBroadcastQueues = new BroadcastQueue[4];
- mBroadcastQueues[BROADCAST_QUEUE_FG] = new BroadcastQueueImpl(this, mHandler,
- "foreground", foreConstants, false, ProcessList.SCHED_GROUP_DEFAULT);
- mBroadcastQueues[BROADCAST_QUEUE_BG] = new BroadcastQueueImpl(this, mHandler,
- "background", backConstants, true, ProcessList.SCHED_GROUP_BACKGROUND);
- mBroadcastQueues[BROADCAST_QUEUE_BG_OFFLOAD] = new BroadcastQueueImpl(this, mHandler,
- "offload_bg", offloadConstants, true, ProcessList.SCHED_GROUP_BACKGROUND);
- mBroadcastQueues[BROADCAST_QUEUE_FG_OFFLOAD] = new BroadcastQueueImpl(this, mHandler,
- "offload_fg", foreConstants, true, ProcessList.SCHED_GROUP_BACKGROUND);
- }
+ mBroadcastQueues = mInjector.getBroadcastQueues(this);
mServices = new ActiveServices(this);
mCpHelper = new ContentProviderHelper(this, true);
@@ -20060,6 +20032,44 @@ public class ActivityManagerService extends IActivityManager.Stub
}
return mNmi != null;
}
+
+ public BroadcastQueue[] getBroadcastQueues(ActivityManagerService service) {
+ // Broadcast policy parameters
+ final BroadcastConstants foreConstants = new BroadcastConstants(
+ Settings.Global.BROADCAST_FG_CONSTANTS);
+ foreConstants.TIMEOUT = BROADCAST_FG_TIMEOUT;
+
+ final BroadcastConstants backConstants = new BroadcastConstants(
+ Settings.Global.BROADCAST_BG_CONSTANTS);
+ backConstants.TIMEOUT = BROADCAST_BG_TIMEOUT;
+
+ final BroadcastConstants offloadConstants = new BroadcastConstants(
+ Settings.Global.BROADCAST_OFFLOAD_CONSTANTS);
+ offloadConstants.TIMEOUT = BROADCAST_BG_TIMEOUT;
+ // by default, no "slow" policy in this queue
+ offloadConstants.SLOW_TIME = Integer.MAX_VALUE;
+
+ final BroadcastQueue[] broadcastQueues;
+ final Handler handler = service.mHandler;
+ if (service.mEnableModernQueue) {
+ broadcastQueues = new BroadcastQueue[1];
+ broadcastQueues[0] = new BroadcastQueueModernImpl(service, handler,
+ foreConstants, backConstants);
+ } else {
+ broadcastQueues = new BroadcastQueue[4];
+ broadcastQueues[BROADCAST_QUEUE_FG] = new BroadcastQueueImpl(service, handler,
+ "foreground", foreConstants, false, ProcessList.SCHED_GROUP_DEFAULT);
+ broadcastQueues[BROADCAST_QUEUE_BG] = new BroadcastQueueImpl(service, handler,
+ "background", backConstants, true, ProcessList.SCHED_GROUP_BACKGROUND);
+ broadcastQueues[BROADCAST_QUEUE_BG_OFFLOAD] = new BroadcastQueueImpl(service,
+ handler, "offload_bg", offloadConstants, true,
+ ProcessList.SCHED_GROUP_BACKGROUND);
+ broadcastQueues[BROADCAST_QUEUE_FG_OFFLOAD] = new BroadcastQueueImpl(service,
+ handler, "offload_fg", foreConstants, true,
+ ProcessList.SCHED_GROUP_BACKGROUND);
+ }
+ return broadcastQueues;
+ }
}
@Override
diff --git a/services/tests/mockingservicestests/src/com/android/server/am/BaseBroadcastQueueTest.java b/services/tests/mockingservicestests/src/com/android/server/am/BaseBroadcastQueueTest.java
index 4ba9d60a5abf..f875f6519267 100644
--- a/services/tests/mockingservicestests/src/com/android/server/am/BaseBroadcastQueueTest.java
+++ b/services/tests/mockingservicestests/src/com/android/server/am/BaseBroadcastQueueTest.java
@@ -93,6 +93,8 @@ public abstract class BaseBroadcastQueueTest {
.spyStatic(ProcessList.class)
.build();
+ final BroadcastQueue[] mBroadcastQueues = new BroadcastQueue[1];
+
@Mock
AppOpsService mAppOpsService;
@Mock
@@ -162,7 +164,9 @@ public abstract class BaseBroadcastQueueTest {
}
public void tearDown() throws Exception {
- mHandlerThread.quit();
+ if (mHandlerThread != null) {
+ mHandlerThread.quit();
+ }
}
static int getUidForPackage(@NonNull String packageName) {
@@ -202,6 +206,11 @@ public abstract class BaseBroadcastQueueTest {
public ProcessList getProcessList(ActivityManagerService service) {
return mProcessList;
}
+
+ @Override
+ public BroadcastQueue[] getBroadcastQueues(ActivityManagerService service) {
+ return mBroadcastQueues;
+ }
}
abstract String getTag();
diff --git a/services/tests/mockingservicestests/src/com/android/server/am/BroadcastQueueModernImplTest.java b/services/tests/mockingservicestests/src/com/android/server/am/BroadcastQueueModernImplTest.java
index c03799d8b41f..e4da2b673efa 100644
--- a/services/tests/mockingservicestests/src/com/android/server/am/BroadcastQueueModernImplTest.java
+++ b/services/tests/mockingservicestests/src/com/android/server/am/BroadcastQueueModernImplTest.java
@@ -126,6 +126,7 @@ public final class BroadcastQueueModernImplTest extends BaseBroadcastQueueTest {
mImpl = new BroadcastQueueModernImpl(mAms, mHandlerThread.getThreadHandler(),
mConstants, mConstants, mSkipPolicy, emptyHistory);
+ mBroadcastQueues[0] = mImpl;
doReturn(1L).when(mQueue1).getRunnableAt();
doReturn(2L).when(mQueue2).getRunnableAt();
diff --git a/services/tests/mockingservicestests/src/com/android/server/am/BroadcastQueueTest.java b/services/tests/mockingservicestests/src/com/android/server/am/BroadcastQueueTest.java
index 918bc5d27d67..820e44fd2ff7 100644
--- a/services/tests/mockingservicestests/src/com/android/server/am/BroadcastQueueTest.java
+++ b/services/tests/mockingservicestests/src/com/android/server/am/BroadcastQueueTest.java
@@ -255,6 +255,7 @@ public class BroadcastQueueTest extends BaseBroadcastQueueTest {
} else {
throw new UnsupportedOperationException();
}
+ mBroadcastQueues[0] = mQueue;
mQueue.start(mContext.getContentResolver());
}