Loading services/tests/mockingservicestests/src/com/android/server/am/BroadcastQueueTest.java +16 −48 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ import static android.os.UserHandle.USER_SYSTEM; import static com.android.server.am.BroadcastProcessQueue.reasonToString; import static com.android.server.am.BroadcastRecord.deliveryStateToString; import static com.android.server.am.BroadcastRecord.isReceiverEquals; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; Loading Loading @@ -76,8 +77,6 @@ import android.os.PowerExemptionManager; import android.os.SystemClock; import android.os.UserHandle; import android.provider.Settings; import android.util.ArrayMap; import android.util.ArraySet; import android.util.Log; import android.util.Pair; import android.util.SparseArray; Loading Loading @@ -160,7 +159,7 @@ public class BroadcastQueueTest { private ActivityManagerService mAms; private BroadcastQueue mQueue; BroadcastConstants mConstants; private TestBroadcastSkipPolicy mSkipPolicy; private BroadcastSkipPolicy mSkipPolicy; /** * Desired behavior of the next Loading Loading @@ -287,7 +286,10 @@ public class BroadcastQueueTest { mConstants = new BroadcastConstants(Settings.Global.BROADCAST_FG_CONSTANTS); mConstants.TIMEOUT = 100; mConstants.ALLOW_BG_ACTIVITY_START_TIMEOUT = 0; mSkipPolicy = new TestBroadcastSkipPolicy(mAms); mSkipPolicy = spy(new BroadcastSkipPolicy(mAms)); doReturn(null).when(mSkipPolicy).shouldSkipMessage(any(), any()); doReturn(false).when(mSkipPolicy).disallowBackgroundStart(any()); final BroadcastHistory emptyHistory = new BroadcastHistory(mConstants) { public void addBroadcastToHistoryLocked(BroadcastRecord original) { Loading Loading @@ -324,48 +326,6 @@ public class BroadcastQueueTest { } } private static class TestBroadcastSkipPolicy extends BroadcastSkipPolicy { private final ArrayMap<String, ArraySet> mReceiversToSkip = new ArrayMap<>(); TestBroadcastSkipPolicy(ActivityManagerService service) { super(service); } public String shouldSkipMessage(BroadcastRecord r, Object o) { if (shouldSkipReceiver(r.intent.getAction(), o)) { return "test skipped receiver"; } return null; } private boolean shouldSkipReceiver(String action, Object o) { final ArraySet<Object> receiversToSkip = mReceiversToSkip.get(action); if (receiversToSkip == null) { return false; } for (int i = 0; i < receiversToSkip.size(); ++i) { if (BroadcastRecord.isReceiverEquals(o, receiversToSkip.valueAt(i))) { return true; } } return false; } public void setSkipReceiver(String action, Object o) { ArraySet<Object> receiversToSkip = mReceiversToSkip.get(action); if (receiversToSkip == null) { receiversToSkip = new ArraySet<>(); mReceiversToSkip.put(action, receiversToSkip); } receiversToSkip.add(o); } public boolean disallowBackgroundStart(BroadcastRecord r) { // Ignored return false; } } private class TestInjector extends Injector { TestInjector(Context context) { super(context); Loading Loading @@ -2039,8 +1999,16 @@ public class BroadcastQueueTest { enqueueBroadcast(makeBroadcastRecord(airplane, callerApp, List.of(greenReceiver, blueReceiver, yellowReceiver, orangeReceiver))); mSkipPolicy.setSkipReceiver(airplane.getAction(), greenReceiver); mSkipPolicy.setSkipReceiver(airplane.getAction(), orangeReceiver); doAnswer(invocation -> { final BroadcastRecord r = invocation.getArgument(0); final Object o = invocation.getArgument(1); if (airplane.getAction().equals(r.intent.getAction()) && (isReceiverEquals(o, greenReceiver) || isReceiverEquals(o, orangeReceiver))) { return "test skipped receiver"; } return null; }).when(mSkipPolicy).shouldSkipMessage(any(BroadcastRecord.class), any()); } waitForIdle(); Loading Loading
services/tests/mockingservicestests/src/com/android/server/am/BroadcastQueueTest.java +16 −48 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ import static android.os.UserHandle.USER_SYSTEM; import static com.android.server.am.BroadcastProcessQueue.reasonToString; import static com.android.server.am.BroadcastRecord.deliveryStateToString; import static com.android.server.am.BroadcastRecord.isReceiverEquals; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; Loading Loading @@ -76,8 +77,6 @@ import android.os.PowerExemptionManager; import android.os.SystemClock; import android.os.UserHandle; import android.provider.Settings; import android.util.ArrayMap; import android.util.ArraySet; import android.util.Log; import android.util.Pair; import android.util.SparseArray; Loading Loading @@ -160,7 +159,7 @@ public class BroadcastQueueTest { private ActivityManagerService mAms; private BroadcastQueue mQueue; BroadcastConstants mConstants; private TestBroadcastSkipPolicy mSkipPolicy; private BroadcastSkipPolicy mSkipPolicy; /** * Desired behavior of the next Loading Loading @@ -287,7 +286,10 @@ public class BroadcastQueueTest { mConstants = new BroadcastConstants(Settings.Global.BROADCAST_FG_CONSTANTS); mConstants.TIMEOUT = 100; mConstants.ALLOW_BG_ACTIVITY_START_TIMEOUT = 0; mSkipPolicy = new TestBroadcastSkipPolicy(mAms); mSkipPolicy = spy(new BroadcastSkipPolicy(mAms)); doReturn(null).when(mSkipPolicy).shouldSkipMessage(any(), any()); doReturn(false).when(mSkipPolicy).disallowBackgroundStart(any()); final BroadcastHistory emptyHistory = new BroadcastHistory(mConstants) { public void addBroadcastToHistoryLocked(BroadcastRecord original) { Loading Loading @@ -324,48 +326,6 @@ public class BroadcastQueueTest { } } private static class TestBroadcastSkipPolicy extends BroadcastSkipPolicy { private final ArrayMap<String, ArraySet> mReceiversToSkip = new ArrayMap<>(); TestBroadcastSkipPolicy(ActivityManagerService service) { super(service); } public String shouldSkipMessage(BroadcastRecord r, Object o) { if (shouldSkipReceiver(r.intent.getAction(), o)) { return "test skipped receiver"; } return null; } private boolean shouldSkipReceiver(String action, Object o) { final ArraySet<Object> receiversToSkip = mReceiversToSkip.get(action); if (receiversToSkip == null) { return false; } for (int i = 0; i < receiversToSkip.size(); ++i) { if (BroadcastRecord.isReceiverEquals(o, receiversToSkip.valueAt(i))) { return true; } } return false; } public void setSkipReceiver(String action, Object o) { ArraySet<Object> receiversToSkip = mReceiversToSkip.get(action); if (receiversToSkip == null) { receiversToSkip = new ArraySet<>(); mReceiversToSkip.put(action, receiversToSkip); } receiversToSkip.add(o); } public boolean disallowBackgroundStart(BroadcastRecord r) { // Ignored return false; } } private class TestInjector extends Injector { TestInjector(Context context) { super(context); Loading Loading @@ -2039,8 +1999,16 @@ public class BroadcastQueueTest { enqueueBroadcast(makeBroadcastRecord(airplane, callerApp, List.of(greenReceiver, blueReceiver, yellowReceiver, orangeReceiver))); mSkipPolicy.setSkipReceiver(airplane.getAction(), greenReceiver); mSkipPolicy.setSkipReceiver(airplane.getAction(), orangeReceiver); doAnswer(invocation -> { final BroadcastRecord r = invocation.getArgument(0); final Object o = invocation.getArgument(1); if (airplane.getAction().equals(r.intent.getAction()) && (isReceiverEquals(o, greenReceiver) || isReceiverEquals(o, orangeReceiver))) { return "test skipped receiver"; } return null; }).when(mSkipPolicy).shouldSkipMessage(any(BroadcastRecord.class), any()); } waitForIdle(); Loading