Add unit tests for DWPC

Add unit tests for DWPC
- setInterestedWindowFlags/isInterestedWindowFlags
- canContainActivities

Also rename the class name.

Bug: 205811272
Test: atest DisplayWindowPolicyControllerHelperTests
Change-Id: I2adab34ef84d671cc503a5d4f9ed36720a521c5c
This commit is contained in:
Chilun
2022-03-23 16:48:36 +08:00
committed by Chilun Huang
parent a98c7e8479
commit 30be1fbd4d

View File

@@ -16,6 +16,7 @@
package com.android.server.wm;
import static android.app.ActivityManager.START_ABORTED;
import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN;
import static android.app.WindowConfiguration.WINDOWING_MODE_PINNED;
@@ -26,6 +27,7 @@ import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotEquals;
import static org.junit.Assert.assertTrue;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.Mockito.mock;
import android.app.WindowConfiguration;
import android.content.ComponentName;
@@ -45,13 +47,13 @@ import java.util.List;
import java.util.Set;
/**
* Tests for the {@link DisplayWindowPolicyControllerHelper} class.
* Tests for the {@link DisplayWindowPolicyController} class.
*
* Build/Install/Run:
* atest WmTests:DisplayWindowPolicyControllerHelperTests
* atest WmTests:DisplayWindowPolicyControllerTests
*/
@RunWith(WindowTestRunner.class)
public class DisplayWindowPolicyControllerHelperTests extends WindowTestsBase {
public class DisplayWindowPolicyControllerTests extends WindowTestsBase {
private static final int TEST_USER_0_ID = 0;
private static final int TEST_USER_1_ID = 10;
@@ -152,8 +154,51 @@ public class DisplayWindowPolicyControllerHelperTests extends WindowTestsBase {
assertTrue(mSecondaryDisplay.mDwpcHelper.isWindowingModeSupported(WINDOWING_MODE_PINNED));
}
@Test
public void testInterestedWindowFlags() {
final int fakeFlag1 = 0x00000010;
final int fakeFlag2 = 0x00000100;
final int fakeSystemFlag1 = 0x00000010;
final int fakeSystemFlag2 = 0x00000100;
mDwpc.setInterestedWindowFlags(fakeFlag1, fakeSystemFlag1);
assertTrue(mDwpc.isInterestedWindowFlags(fakeFlag1, fakeSystemFlag1));
assertTrue(mDwpc.isInterestedWindowFlags(fakeFlag1, fakeSystemFlag2));
assertTrue(mDwpc.isInterestedWindowFlags(fakeFlag2, fakeSystemFlag1));
assertFalse(mDwpc.isInterestedWindowFlags(fakeFlag2, fakeSystemFlag2));
}
@Test
public void testCanContainActivities() {
ActivityStarter starter = new ActivityStarter(mock(ActivityStartController.class), mAtm,
mSupervisor, mock(ActivityStartInterceptor.class));
final Task task = new TaskBuilder(mSupervisor).setDisplay(mSecondaryDisplay).build();
final ActivityRecord sourceRecord = new ActivityBuilder(mAtm).setTask(task).build();
final ActivityRecord disallowedRecord =
new ActivityBuilder(mAtm).setComponent(mDwpc.DISALLOWED_ACTIVITY).build();
int result = starter.startActivityInner(
disallowedRecord,
sourceRecord,
/* voiceSession */null,
/* voiceInteractor */ null,
/* startFlags */ 0,
/* doResume */true,
/* options */null,
/* inTask */null,
/* inTaskFragment */ null,
/* restrictedBgActivity */false,
/* intentGrants */null);
assertEquals(result, START_ABORTED);
}
private class TestDisplayWindowPolicyController extends DisplayWindowPolicyController {
public ComponentName DISALLOWED_ACTIVITY =
new ComponentName("fake.package", "DisallowedActivity");
ComponentName mTopActivity = null;
int mTopActivityUid = UserHandle.USER_NULL;
ArraySet<Integer> mRunningUids = new ArraySet<>();
@@ -161,7 +206,14 @@ public class DisplayWindowPolicyControllerHelperTests extends WindowTestsBase {
@Override
public boolean canContainActivities(@NonNull List<ActivityInfo> activities,
@WindowConfiguration.WindowingMode int windowingMode) {
return false;
final int activityCount = activities.size();
for (int i = 0; i < activityCount; i++) {
final ActivityInfo aInfo = activities.get(i);
if (aInfo.getComponentName().equals(DISALLOWED_ACTIVITY)) {
return false;
}
}
return true;
}
@Override