diff --git a/services/core/java/com/android/server/app/GameManagerService.java b/services/core/java/com/android/server/app/GameManagerService.java index 3003c520254b6..456a75832b161 100644 --- a/services/core/java/com/android/server/app/GameManagerService.java +++ b/services/core/java/com/android/server/app/GameManagerService.java @@ -852,7 +852,7 @@ public final class GameManagerService extends IGameManagerService.Stub { * @hide */ @VisibleForTesting - public void updateConfigsForUser(int userId, String ...packageNames) { + void updateConfigsForUser(int userId, String ...packageNames) { try { synchronized (mDeviceConfigLock) { for (final String packageName : packageNames) { diff --git a/services/tests/mockingservicestests/Android.bp b/services/tests/mockingservicestests/Android.bp index ff7cd75dd7a10..680e6db3be6cd 100644 --- a/services/tests/mockingservicestests/Android.bp +++ b/services/tests/mockingservicestests/Android.bp @@ -37,6 +37,7 @@ android_test { ], static_libs: [ + "frameworks-base-testutils", "services.core", "services.devicepolicy", "services.net", diff --git a/services/tests/mockingservicestests/src/com/android/server/app/GameManagerServiceTests.java b/services/tests/mockingservicestests/src/com/android/server/app/GameManagerServiceTests.java index 85ef8f73534c4..1c21645c16267 100644 --- a/services/tests/mockingservicestests/src/com/android/server/app/GameManagerServiceTests.java +++ b/services/tests/mockingservicestests/src/com/android/server/app/GameManagerServiceTests.java @@ -34,6 +34,7 @@ import android.content.pm.ApplicationInfo; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.os.Bundle; +import android.os.test.TestLooper; import android.platform.test.annotations.Presubmit; import android.provider.DeviceConfig; import android.util.ArraySet; @@ -67,6 +68,7 @@ public class GameManagerServiceTests { private MockitoSession mMockingSession; private String mPackageName; + private TestLooper mTestLooper; @Mock private PackageManager mMockPackageManager; @@ -132,6 +134,7 @@ public class GameManagerServiceTests { @Before public void setUp() throws Exception { + mTestLooper = new TestLooper(); mMockingSession = mockitoSession() .initMocks(this) .mockStatic(DeviceConfig.class) @@ -161,6 +164,11 @@ public class GameManagerServiceTests { } } + private void startUser(GameManagerService gameManagerService, int userId) { + gameManagerService.onUserStarting(userId); + mTestLooper.dispatchAll(); + } + private void mockModifyGameModeGranted() { mMockContext.setPermission(Manifest.permission.MANAGE_GAME_MODE, PackageManager.PERMISSION_GRANTED); @@ -301,9 +309,10 @@ public class GameManagerServiceTests { */ @Test public void testGameModeDefaultValue() { - GameManagerService gameManagerService = new GameManagerService(mMockContext); - gameManagerService.onUserStarting(USER_ID_1); + GameManagerService gameManagerService = + new GameManagerService(mMockContext, mTestLooper.getLooper()); + startUser(gameManagerService, USER_ID_1); mockModifyGameModeGranted(); assertEquals(GameManager.GAME_MODE_UNSUPPORTED, @@ -315,9 +324,10 @@ public class GameManagerServiceTests { */ @Test public void testDefaultValueForNonexistentUser() { - GameManagerService gameManagerService = new GameManagerService(mMockContext); - gameManagerService.onUserStarting(USER_ID_1); + GameManagerService gameManagerService = + new GameManagerService(mMockContext, mTestLooper.getLooper()); + startUser(gameManagerService, USER_ID_1); mockModifyGameModeGranted(); gameManagerService.setGameMode(mPackageName, GameManager.GAME_MODE_STANDARD, USER_ID_2); @@ -330,8 +340,11 @@ public class GameManagerServiceTests { */ @Test public void testGameMode() { - GameManagerService gameManagerService = new GameManagerService(mMockContext); - gameManagerService.onUserStarting(USER_ID_1); + GameManagerService gameManagerService = + new GameManagerService(mMockContext, mTestLooper.getLooper()); + + + startUser(gameManagerService, USER_ID_1); gameManagerService.updateConfigsForUser(USER_ID_1, mPackageName); mockModifyGameModeGranted(); assertEquals(GameManager.GAME_MODE_UNSUPPORTED, @@ -353,8 +366,10 @@ public class GameManagerServiceTests { */ @Test public void testGetGameModeInvalidPackageName() { - GameManagerService gameManagerService = new GameManagerService(mMockContext); - gameManagerService.onUserStarting(USER_ID_1); + GameManagerService gameManagerService = + new GameManagerService(mMockContext, mTestLooper.getLooper()); + + startUser(gameManagerService, USER_ID_1); try { assertEquals(GameManager.GAME_MODE_UNSUPPORTED, gameManagerService.getGameMode(PACKAGE_NAME_INVALID, @@ -375,8 +390,9 @@ public class GameManagerServiceTests { public void testSetGameModePermissionDenied() { mockModifyGameModeGranted(); mockDeviceConfigAll(); - GameManagerService gameManagerService = new GameManagerService(mMockContext); - gameManagerService.onUserStarting(USER_ID_1); + GameManagerService gameManagerService = + new GameManagerService(mMockContext, mTestLooper.getLooper()); + startUser(gameManagerService, USER_ID_1); // Update the game mode so we can read back something valid. gameManagerService.setGameMode(mPackageName, GameManager.GAME_MODE_STANDARD, USER_ID_1); @@ -408,9 +424,11 @@ public class GameManagerServiceTests { public void testGameModeMultipleUsers() { mockModifyGameModeGranted(); mockDeviceConfigAll(); - GameManagerService gameManagerService = new GameManagerService(mMockContext); - gameManagerService.onUserStarting(USER_ID_1); - gameManagerService.onUserStarting(USER_ID_2); + GameManagerService gameManagerService = + new GameManagerService(mMockContext, mTestLooper.getLooper()); + + startUser(gameManagerService, USER_ID_1); + startUser(gameManagerService, USER_ID_2); gameManagerService.updateConfigsForUser(USER_ID_1, mPackageName); gameManagerService.updateConfigsForUser(USER_ID_2, mPackageName); @@ -437,8 +455,10 @@ public class GameManagerServiceTests { } private void checkReportedModes(int ...requiredModes) { - GameManagerService gameManagerService = new GameManagerService(mMockContext); - gameManagerService.onUserStarting(USER_ID_1); + GameManagerService gameManagerService = + new GameManagerService(mMockContext, mTestLooper.getLooper()); + + startUser(gameManagerService, USER_ID_1); gameManagerService.updateConfigsForUser(USER_ID_1, mPackageName); ArraySet reportedModes = new ArraySet<>(); int[] modes = gameManagerService.getAvailableGameModes(mPackageName); @@ -453,8 +473,10 @@ public class GameManagerServiceTests { } private void checkDownscaling(int gameMode, String scaling) { - GameManagerService gameManagerService = new GameManagerService(mMockContext); - gameManagerService.onUserStarting(USER_ID_1); + GameManagerService gameManagerService = + new GameManagerService(mMockContext, mTestLooper.getLooper()); + + startUser(gameManagerService, USER_ID_1); gameManagerService.updateConfigsForUser(USER_ID_1, mPackageName); GameManagerService.GamePackageConfiguration config = gameManagerService.getConfig(mPackageName); @@ -643,8 +665,10 @@ public class GameManagerServiceTests { */ @Test public void testInterventionAllowAngleDefault() throws Exception { - GameManagerService gameManagerService = new GameManagerService(mMockContext); - gameManagerService.onUserStarting(USER_ID_1); + GameManagerService gameManagerService = new GameManagerService( + mMockContext, mTestLooper.getLooper()); + + startUser(gameManagerService, USER_ID_1); mockDeviceConfigPerformance(); mockModifyGameModeGranted(); checkAngleEnabled(gameManagerService, GameManager.GAME_MODE_PERFORMANCE, false); @@ -655,7 +679,8 @@ public class GameManagerServiceTests { */ @Test public void testInterventionAllowAngleFalse() throws Exception { - GameManagerService gameManagerService = new GameManagerService(mMockContext); + GameManagerService gameManagerService = + new GameManagerService(mMockContext, mTestLooper.getLooper()); gameManagerService.onUserStarting(USER_ID_1); mockDeviceConfigPerformanceEnableAngle(); mockInterventionAllowAngleFalse(); @@ -672,8 +697,9 @@ public class GameManagerServiceTests { mockDeviceConfigPerformanceEnableAngle(); mockInterventionAllowAngleTrue(); - GameManagerService gameManagerService = new GameManagerService(mMockContext); - gameManagerService.onUserStarting(USER_ID_1); + GameManagerService gameManagerService = + new GameManagerService(mMockContext, mTestLooper.getLooper()); + startUser(gameManagerService, USER_ID_1); mockModifyGameModeGranted(); gameManagerService.setGameMode(mPackageName, GameManager.GAME_MODE_PERFORMANCE, USER_ID_1); assertEquals(GameManager.GAME_MODE_PERFORMANCE, @@ -691,8 +717,9 @@ public class GameManagerServiceTests { mockDeviceConfigPerformance(); mockGameModeOptInPerformance(); mockModifyGameModeGranted(); - GameManagerService gameManagerService = new GameManagerService(mMockContext); - gameManagerService.onUserStarting(USER_ID_1); + GameManagerService gameManagerService = + new GameManagerService(mMockContext, mTestLooper.getLooper()); + startUser(gameManagerService, USER_ID_1); gameManagerService.updateConfigsForUser(USER_ID_1, mPackageName); GameManagerService.GamePackageConfiguration config = gameManagerService.getConfig(mPackageName); @@ -707,8 +734,9 @@ public class GameManagerServiceTests { public void testUnsetInvalidGameMode() throws Exception { mockDeviceConfigNone(); mockModifyGameModeGranted(); - GameManagerService gameManagerService = new GameManagerService(mMockContext); - gameManagerService.onUserStarting(USER_ID_1); + GameManagerService gameManagerService = + new GameManagerService(mMockContext, mTestLooper.getLooper()); + startUser(gameManagerService, USER_ID_1); gameManagerService.setGameMode(mPackageName, GameManager.GAME_MODE_PERFORMANCE, USER_ID_1); gameManagerService.updateConfigsForUser(USER_ID_1, mPackageName); assertEquals(GameManager.GAME_MODE_UNSUPPORTED, @@ -723,8 +751,9 @@ public class GameManagerServiceTests { public void testResetInvalidGameMode() throws Exception { mockDeviceConfigPerformance(); mockModifyGameModeGranted(); - GameManagerService gameManagerService = new GameManagerService(mMockContext); - gameManagerService.onUserStarting(USER_ID_1); + GameManagerService gameManagerService = + new GameManagerService(mMockContext, mTestLooper.getLooper()); + startUser(gameManagerService, USER_ID_1); gameManagerService.setGameMode(mPackageName, GameManager.GAME_MODE_BATTERY, USER_ID_1); gameManagerService.updateConfigsForUser(USER_ID_1, mPackageName); assertEquals(GameManager.GAME_MODE_STANDARD, @@ -739,8 +768,9 @@ public class GameManagerServiceTests { public void testSetValidGameMode() throws Exception { mockDeviceConfigPerformance(); mockModifyGameModeGranted(); - GameManagerService gameManagerService = new GameManagerService(mMockContext); - gameManagerService.onUserStarting(USER_ID_1); + GameManagerService gameManagerService = + new GameManagerService(mMockContext, mTestLooper.getLooper()); + startUser(gameManagerService, USER_ID_1); gameManagerService.setGameMode(mPackageName, GameManager.GAME_MODE_UNSUPPORTED, USER_ID_1); gameManagerService.updateConfigsForUser(USER_ID_1, mPackageName); assertEquals(GameManager.GAME_MODE_STANDARD,