Loading services/companion/java/com/android/server/companion/virtual/GenericWindowPolicyController.java +1 −1 Original line number Diff line number Diff line Loading @@ -334,7 +334,7 @@ public class GenericWindowPolicyController extends DisplayWindowPolicyController // The error dialog alerting users that streaming is blocked is always allowed. return true; } if (!mAllowedUsers.contains(activityUser)) { if (!activityUser.isSystem() && !mAllowedUsers.contains(activityUser)) { Slog.d(TAG, "Virtual device launch disallowed from user " + activityUser); return false; } Loading services/tests/servicestests/src/com/android/server/companion/virtual/GenericWindowPolicyControllerTest.java +26 −1 Original line number Diff line number Diff line Loading @@ -123,6 +123,7 @@ public class GenericWindowPolicyControllerTest { @Test public void containsUid() { GenericWindowPolicyController gwpc = createGwpc(); gwpc.setDisplayId(DISPLAY_ID, /* isMirrorDisplay= */ false); assertThat(gwpc.containsUid(TEST_UID)).isFalse(); Loading @@ -136,6 +137,7 @@ public class GenericWindowPolicyControllerTest { @Test public void isEnteringPipAllowed_falseByDefault() { GenericWindowPolicyController gwpc = createGwpc(); gwpc.setDisplayId(DISPLAY_ID, /* isMirrorDisplay= */ false); assertThat(gwpc.isEnteringPipAllowed(TEST_UID)).isFalse(); verify(mPipBlockedCallback, timeout(TIMEOUT_MILLIS)).onEnteringPipBlocked(TEST_UID); Loading @@ -144,6 +146,7 @@ public class GenericWindowPolicyControllerTest { @Test public void isEnteringPipAllowed_dpcSupportsPinned_allowed() { GenericWindowPolicyController gwpc = createGwpc(); gwpc.setDisplayId(DISPLAY_ID, /* isMirrorDisplay= */ false); gwpc.setSupportedWindowingModes(new HashSet<>( Arrays.asList(WindowConfiguration.WINDOWING_MODE_FULLSCREEN, WindowConfiguration.WINDOWING_MODE_PINNED))); Loading @@ -160,10 +163,24 @@ public class GenericWindowPolicyControllerTest { NONBLOCKED_APP_PACKAGE_NAME, NONBLOCKED_APP_PACKAGE_NAME, /* displayOnRemoteDevices */ true, /* targetDisplayCategory */ null); /* targetDisplayCategory */ null, /* uid */ UserHandle.PER_USER_RANGE + 1); assertActivityIsBlocked(gwpc, activityInfo); } @Test public void userNotAllowlisted_systemUser_isNotBlocked() { GenericWindowPolicyController gwpc = createGwpcWithNoAllowedUsers(); gwpc.setDisplayId(DISPLAY_ID, /* isMirrorDisplay= */ false); ActivityInfo activityInfo = getActivityInfo( NONBLOCKED_APP_PACKAGE_NAME, NONBLOCKED_APP_PACKAGE_NAME, /* displayOnRemoteDevices */ true, /* targetDisplayCategory */ null); assertActivityCanBeLaunched(gwpc, activityInfo); } @Test public void userNotAllowlisted_systemUserCanLaunchBlockedAppStreamingActivity() { GenericWindowPolicyController gwpc = createGwpcWithNoAllowedUsers(); Loading Loading @@ -521,6 +538,7 @@ public class GenericWindowPolicyControllerTest { public void registerRunningAppsChangedListener_onRunningAppsChanged_listenersNotified() { ArraySet<Integer> uids = new ArraySet<>(Arrays.asList(TEST_UID)); GenericWindowPolicyController gwpc = createGwpc(); gwpc.setDisplayId(DISPLAY_ID, /* isMirrorDisplay= */ false); gwpc.registerRunningAppsChangedListener(mRunningAppsChangedListener); gwpc.onRunningAppsChanged(uids); Loading @@ -545,6 +563,7 @@ public class GenericWindowPolicyControllerTest { public void noRunningAppsChangedListener_onRunningAppsChanged_doesNotThrowException() { ArraySet<Integer> uids = new ArraySet<>(Arrays.asList(TEST_UID)); GenericWindowPolicyController gwpc = createGwpc(); gwpc.setDisplayId(DISPLAY_ID, /* isMirrorDisplay= */ false); gwpc.onRunningAppsChanged(uids); Loading @@ -557,6 +576,7 @@ public class GenericWindowPolicyControllerTest { public void registerUnregisterRunningAppsChangedListener_onRunningAppsChanged_doesNotThrowException() { ArraySet<Integer> uids = new ArraySet<>(Arrays.asList(TEST_UID)); GenericWindowPolicyController gwpc = createGwpc(); gwpc.setDisplayId(DISPLAY_ID, /* isMirrorDisplay= */ false); gwpc.registerRunningAppsChangedListener(mRunningAppsChangedListener); gwpc.unregisterRunningAppsChangedListener(mRunningAppsChangedListener); Loading @@ -579,6 +599,7 @@ public class GenericWindowPolicyControllerTest { doReturn(interceptor).when(interceptor).queryLocalInterface(anyString()); GenericWindowPolicyController gwpc = createGwpc(); gwpc.setDisplayId(DISPLAY_ID, /* isMirrorDisplay= */ false); ActivityInfo activityInfo = getActivityInfo( NONBLOCKED_APP_PACKAGE_NAME, NONBLOCKED_APP_PACKAGE_NAME, Loading @@ -603,6 +624,7 @@ public class GenericWindowPolicyControllerTest { Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("testing")); GenericWindowPolicyController gwpc = createGwpc(); gwpc.setDisplayId(DISPLAY_ID, /* isMirrorDisplay= */ false); ActivityInfo activityInfo = getActivityInfo( NONBLOCKED_APP_PACKAGE_NAME, NONBLOCKED_APP_PACKAGE_NAME, Loading @@ -621,6 +643,7 @@ public class GenericWindowPolicyControllerTest { @Test public void onTopActivitychanged_null_noCallback() { GenericWindowPolicyController gwpc = createGwpc(); gwpc.setDisplayId(DISPLAY_ID, /* isMirrorDisplay= */ false); gwpc.onTopActivityChanged(null, 0, 0); verify(mActivityListener, after(TIMEOUT_MILLIS).never()) Loading Loading @@ -697,6 +720,7 @@ public class GenericWindowPolicyControllerTest { @Test public void getCustomHomeComponent_noneSet() { GenericWindowPolicyController gwpc = createGwpc(); gwpc.setDisplayId(DISPLAY_ID, /* isMirrorDisplay= */ false); assertThat(gwpc.getCustomHomeComponent()).isNull(); } Loading @@ -705,6 +729,7 @@ public class GenericWindowPolicyControllerTest { public void getCustomHomeComponent_returnsHomeComponent() { GenericWindowPolicyController gwpc = createGwpcWithCustomHomeComponent( NONBLOCKED_COMPONENT); gwpc.setDisplayId(DISPLAY_ID, /* isMirrorDisplay= */ false); assertThat(gwpc.getCustomHomeComponent()).isEqualTo(NONBLOCKED_COMPONENT); } Loading Loading
services/companion/java/com/android/server/companion/virtual/GenericWindowPolicyController.java +1 −1 Original line number Diff line number Diff line Loading @@ -334,7 +334,7 @@ public class GenericWindowPolicyController extends DisplayWindowPolicyController // The error dialog alerting users that streaming is blocked is always allowed. return true; } if (!mAllowedUsers.contains(activityUser)) { if (!activityUser.isSystem() && !mAllowedUsers.contains(activityUser)) { Slog.d(TAG, "Virtual device launch disallowed from user " + activityUser); return false; } Loading
services/tests/servicestests/src/com/android/server/companion/virtual/GenericWindowPolicyControllerTest.java +26 −1 Original line number Diff line number Diff line Loading @@ -123,6 +123,7 @@ public class GenericWindowPolicyControllerTest { @Test public void containsUid() { GenericWindowPolicyController gwpc = createGwpc(); gwpc.setDisplayId(DISPLAY_ID, /* isMirrorDisplay= */ false); assertThat(gwpc.containsUid(TEST_UID)).isFalse(); Loading @@ -136,6 +137,7 @@ public class GenericWindowPolicyControllerTest { @Test public void isEnteringPipAllowed_falseByDefault() { GenericWindowPolicyController gwpc = createGwpc(); gwpc.setDisplayId(DISPLAY_ID, /* isMirrorDisplay= */ false); assertThat(gwpc.isEnteringPipAllowed(TEST_UID)).isFalse(); verify(mPipBlockedCallback, timeout(TIMEOUT_MILLIS)).onEnteringPipBlocked(TEST_UID); Loading @@ -144,6 +146,7 @@ public class GenericWindowPolicyControllerTest { @Test public void isEnteringPipAllowed_dpcSupportsPinned_allowed() { GenericWindowPolicyController gwpc = createGwpc(); gwpc.setDisplayId(DISPLAY_ID, /* isMirrorDisplay= */ false); gwpc.setSupportedWindowingModes(new HashSet<>( Arrays.asList(WindowConfiguration.WINDOWING_MODE_FULLSCREEN, WindowConfiguration.WINDOWING_MODE_PINNED))); Loading @@ -160,10 +163,24 @@ public class GenericWindowPolicyControllerTest { NONBLOCKED_APP_PACKAGE_NAME, NONBLOCKED_APP_PACKAGE_NAME, /* displayOnRemoteDevices */ true, /* targetDisplayCategory */ null); /* targetDisplayCategory */ null, /* uid */ UserHandle.PER_USER_RANGE + 1); assertActivityIsBlocked(gwpc, activityInfo); } @Test public void userNotAllowlisted_systemUser_isNotBlocked() { GenericWindowPolicyController gwpc = createGwpcWithNoAllowedUsers(); gwpc.setDisplayId(DISPLAY_ID, /* isMirrorDisplay= */ false); ActivityInfo activityInfo = getActivityInfo( NONBLOCKED_APP_PACKAGE_NAME, NONBLOCKED_APP_PACKAGE_NAME, /* displayOnRemoteDevices */ true, /* targetDisplayCategory */ null); assertActivityCanBeLaunched(gwpc, activityInfo); } @Test public void userNotAllowlisted_systemUserCanLaunchBlockedAppStreamingActivity() { GenericWindowPolicyController gwpc = createGwpcWithNoAllowedUsers(); Loading Loading @@ -521,6 +538,7 @@ public class GenericWindowPolicyControllerTest { public void registerRunningAppsChangedListener_onRunningAppsChanged_listenersNotified() { ArraySet<Integer> uids = new ArraySet<>(Arrays.asList(TEST_UID)); GenericWindowPolicyController gwpc = createGwpc(); gwpc.setDisplayId(DISPLAY_ID, /* isMirrorDisplay= */ false); gwpc.registerRunningAppsChangedListener(mRunningAppsChangedListener); gwpc.onRunningAppsChanged(uids); Loading @@ -545,6 +563,7 @@ public class GenericWindowPolicyControllerTest { public void noRunningAppsChangedListener_onRunningAppsChanged_doesNotThrowException() { ArraySet<Integer> uids = new ArraySet<>(Arrays.asList(TEST_UID)); GenericWindowPolicyController gwpc = createGwpc(); gwpc.setDisplayId(DISPLAY_ID, /* isMirrorDisplay= */ false); gwpc.onRunningAppsChanged(uids); Loading @@ -557,6 +576,7 @@ public class GenericWindowPolicyControllerTest { public void registerUnregisterRunningAppsChangedListener_onRunningAppsChanged_doesNotThrowException() { ArraySet<Integer> uids = new ArraySet<>(Arrays.asList(TEST_UID)); GenericWindowPolicyController gwpc = createGwpc(); gwpc.setDisplayId(DISPLAY_ID, /* isMirrorDisplay= */ false); gwpc.registerRunningAppsChangedListener(mRunningAppsChangedListener); gwpc.unregisterRunningAppsChangedListener(mRunningAppsChangedListener); Loading @@ -579,6 +599,7 @@ public class GenericWindowPolicyControllerTest { doReturn(interceptor).when(interceptor).queryLocalInterface(anyString()); GenericWindowPolicyController gwpc = createGwpc(); gwpc.setDisplayId(DISPLAY_ID, /* isMirrorDisplay= */ false); ActivityInfo activityInfo = getActivityInfo( NONBLOCKED_APP_PACKAGE_NAME, NONBLOCKED_APP_PACKAGE_NAME, Loading @@ -603,6 +624,7 @@ public class GenericWindowPolicyControllerTest { Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("testing")); GenericWindowPolicyController gwpc = createGwpc(); gwpc.setDisplayId(DISPLAY_ID, /* isMirrorDisplay= */ false); ActivityInfo activityInfo = getActivityInfo( NONBLOCKED_APP_PACKAGE_NAME, NONBLOCKED_APP_PACKAGE_NAME, Loading @@ -621,6 +643,7 @@ public class GenericWindowPolicyControllerTest { @Test public void onTopActivitychanged_null_noCallback() { GenericWindowPolicyController gwpc = createGwpc(); gwpc.setDisplayId(DISPLAY_ID, /* isMirrorDisplay= */ false); gwpc.onTopActivityChanged(null, 0, 0); verify(mActivityListener, after(TIMEOUT_MILLIS).never()) Loading Loading @@ -697,6 +720,7 @@ public class GenericWindowPolicyControllerTest { @Test public void getCustomHomeComponent_noneSet() { GenericWindowPolicyController gwpc = createGwpc(); gwpc.setDisplayId(DISPLAY_ID, /* isMirrorDisplay= */ false); assertThat(gwpc.getCustomHomeComponent()).isNull(); } Loading @@ -705,6 +729,7 @@ public class GenericWindowPolicyControllerTest { public void getCustomHomeComponent_returnsHomeComponent() { GenericWindowPolicyController gwpc = createGwpcWithCustomHomeComponent( NONBLOCKED_COMPONENT); gwpc.setDisplayId(DISPLAY_ID, /* isMirrorDisplay= */ false); assertThat(gwpc.getCustomHomeComponent()).isEqualTo(NONBLOCKED_COMPONENT); } Loading