From 3fa7e2c74ff73d366b855f143c4fa0739cb362ca Mon Sep 17 00:00:00 2001 From: Kurt Dresner Date: Fri, 11 Feb 2022 23:06:04 +0000 Subject: [PATCH] Add tests to make sure that we don't allow setting/clearing of car mode for other packages. Bug:194402848 Change-Id: I7a027acaafc80eefd125fc197c51845dceba4c9a --- .../server/UiModeManagerServiceTest.java | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/services/tests/uiservicestests/src/com/android/server/UiModeManagerServiceTest.java b/services/tests/uiservicestests/src/com/android/server/UiModeManagerServiceTest.java index a12bc3b4c59ff..169e3f68c2fb5 100644 --- a/services/tests/uiservicestests/src/com/android/server/UiModeManagerServiceTest.java +++ b/services/tests/uiservicestests/src/com/android/server/UiModeManagerServiceTest.java @@ -1220,6 +1220,35 @@ public class UiModeManagerServiceTest extends UiServiceTestCase { verify(listener, never()).onProjectionStateChanged(anyInt(), any()); } + @Test + public void enableCarMode_failsForBogusPackageName() throws Exception { + when(mPackageManager.getPackageUidAsUser(eq(PACKAGE_NAME), anyInt())) + .thenReturn(TestInjector.CALLING_UID + 1); + + assertThrows(SecurityException.class, () -> mService.enableCarMode(0, 0, PACKAGE_NAME)); + assertThat(mService.getCurrentModeType()).isNotEqualTo(Configuration.UI_MODE_TYPE_CAR); + } + + @Test + public void disableCarMode_failsForBogusPackageName() throws Exception { + when(mPackageManager.getPackageUidAsUser(eq(PACKAGE_NAME), anyInt())) + .thenReturn(TestInjector.CALLING_UID); + mService.enableCarMode(0, 0, PACKAGE_NAME); + assertThat(mService.getCurrentModeType()).isEqualTo(Configuration.UI_MODE_TYPE_CAR); + when(mPackageManager.getPackageUidAsUser(eq(PACKAGE_NAME), anyInt())) + .thenReturn(TestInjector.CALLING_UID + 1); + + assertThrows(SecurityException.class, + () -> mService.disableCarModeByCallingPackage(0, PACKAGE_NAME)); + assertThat(mService.getCurrentModeType()).isEqualTo(Configuration.UI_MODE_TYPE_CAR); + + // Clean up + when(mPackageManager.getPackageUidAsUser(eq(PACKAGE_NAME), anyInt())) + .thenReturn(TestInjector.CALLING_UID); + mService.disableCarModeByCallingPackage(0, PACKAGE_NAME); + assertThat(mService.getCurrentModeType()).isNotEqualTo(Configuration.UI_MODE_TYPE_CAR); + } + private void requestAllPossibleProjectionTypes() throws RemoteException { for (int i = 0; i < Integer.SIZE; ++i) { mService.requestProjection(mBinder, 1 << i, PACKAGE_NAME);