Loading services/core/java/com/android/server/app/GameManagerService.java +5 −11 Original line number Diff line number Diff line Loading @@ -1314,16 +1314,9 @@ public final class GameManagerService extends IGameManagerService.Stub { void onUserSwitching(TargetUser from, TargetUser to) { final int toUserId = to.getUserIdentifier(); if (from != null) { synchronized (mLock) { final int fromUserId = from.getUserIdentifier(); if (mSettings.containsKey(fromUserId)) { sendUserMessage(fromUserId, REMOVE_SETTINGS, "ON_USER_SWITCHING", 0 /*delayMillis*/); } } } // we want to re-populate the setting when switching user as the device config may have // changed, which will only update for the previous user, see // DeviceConfigListener#onPropertiesChanged. sendUserMessage(toUserId, POPULATE_GAME_MODE_SETTINGS, "ON_USER_SWITCHING", 0 /*delayMillis*/); Loading Loading @@ -1392,8 +1385,9 @@ public final class GameManagerService extends IGameManagerService.Stub { Slog.v(TAG, "Package configuration not found for " + packageName); return; } } } else { updateFps(packageConfig, packageName, gameMode, userId); } updateUseAngle(packageName, gameMode); } Loading services/tests/mockingservicestests/src/com/android/server/app/GameManagerServiceTests.java +33 −0 Original line number Diff line number Diff line Loading @@ -1506,6 +1506,39 @@ public class GameManagerServiceTests { } @Test public void testSwitchUser() { mockManageUsersGranted(); mockModifyGameModeGranted(); mockDeviceConfigBattery(); final Context context = InstrumentationRegistry.getContext(); GameManagerService gameManagerService = new GameManagerService(mMockContext, mTestLooper.getLooper(), context.getFilesDir()); startUser(gameManagerService, USER_ID_1); startUser(gameManagerService, USER_ID_2); gameManagerService.setGameMode(mPackageName, GameManager.GAME_MODE_BATTERY, USER_ID_1); checkReportedModes(gameManagerService, GameManager.GAME_MODE_STANDARD, GameManager.GAME_MODE_BATTERY); assertEquals(gameManagerService.getGameMode(mPackageName, USER_ID_1), GameManager.GAME_MODE_BATTERY); mockDeviceConfigAll(); switchUser(gameManagerService, USER_ID_1, USER_ID_2); assertEquals(gameManagerService.getGameMode(mPackageName, USER_ID_2), GameManager.GAME_MODE_STANDARD); checkReportedModes(gameManagerService, GameManager.GAME_MODE_STANDARD, GameManager.GAME_MODE_BATTERY, GameManager.GAME_MODE_PERFORMANCE); gameManagerService.setGameMode(mPackageName, GameManager.GAME_MODE_PERFORMANCE, USER_ID_2); gameManagerService.setGameMode(mPackageName, GameManager.GAME_MODE_BATTERY, USER_ID_1); switchUser(gameManagerService, USER_ID_2, USER_ID_1); checkReportedModes(gameManagerService, GameManager.GAME_MODE_STANDARD, GameManager.GAME_MODE_BATTERY, GameManager.GAME_MODE_PERFORMANCE); gameManagerService.setGameMode(mPackageName, GameManager.GAME_MODE_PERFORMANCE, USER_ID_2); gameManagerService.setGameMode(mPackageName, GameManager.GAME_MODE_BATTERY, USER_ID_1); } @Test public void testUpdateResolutionScalingFactor() { mockModifyGameModeGranted(); Loading Loading
services/core/java/com/android/server/app/GameManagerService.java +5 −11 Original line number Diff line number Diff line Loading @@ -1314,16 +1314,9 @@ public final class GameManagerService extends IGameManagerService.Stub { void onUserSwitching(TargetUser from, TargetUser to) { final int toUserId = to.getUserIdentifier(); if (from != null) { synchronized (mLock) { final int fromUserId = from.getUserIdentifier(); if (mSettings.containsKey(fromUserId)) { sendUserMessage(fromUserId, REMOVE_SETTINGS, "ON_USER_SWITCHING", 0 /*delayMillis*/); } } } // we want to re-populate the setting when switching user as the device config may have // changed, which will only update for the previous user, see // DeviceConfigListener#onPropertiesChanged. sendUserMessage(toUserId, POPULATE_GAME_MODE_SETTINGS, "ON_USER_SWITCHING", 0 /*delayMillis*/); Loading Loading @@ -1392,8 +1385,9 @@ public final class GameManagerService extends IGameManagerService.Stub { Slog.v(TAG, "Package configuration not found for " + packageName); return; } } } else { updateFps(packageConfig, packageName, gameMode, userId); } updateUseAngle(packageName, gameMode); } Loading
services/tests/mockingservicestests/src/com/android/server/app/GameManagerServiceTests.java +33 −0 Original line number Diff line number Diff line Loading @@ -1506,6 +1506,39 @@ public class GameManagerServiceTests { } @Test public void testSwitchUser() { mockManageUsersGranted(); mockModifyGameModeGranted(); mockDeviceConfigBattery(); final Context context = InstrumentationRegistry.getContext(); GameManagerService gameManagerService = new GameManagerService(mMockContext, mTestLooper.getLooper(), context.getFilesDir()); startUser(gameManagerService, USER_ID_1); startUser(gameManagerService, USER_ID_2); gameManagerService.setGameMode(mPackageName, GameManager.GAME_MODE_BATTERY, USER_ID_1); checkReportedModes(gameManagerService, GameManager.GAME_MODE_STANDARD, GameManager.GAME_MODE_BATTERY); assertEquals(gameManagerService.getGameMode(mPackageName, USER_ID_1), GameManager.GAME_MODE_BATTERY); mockDeviceConfigAll(); switchUser(gameManagerService, USER_ID_1, USER_ID_2); assertEquals(gameManagerService.getGameMode(mPackageName, USER_ID_2), GameManager.GAME_MODE_STANDARD); checkReportedModes(gameManagerService, GameManager.GAME_MODE_STANDARD, GameManager.GAME_MODE_BATTERY, GameManager.GAME_MODE_PERFORMANCE); gameManagerService.setGameMode(mPackageName, GameManager.GAME_MODE_PERFORMANCE, USER_ID_2); gameManagerService.setGameMode(mPackageName, GameManager.GAME_MODE_BATTERY, USER_ID_1); switchUser(gameManagerService, USER_ID_2, USER_ID_1); checkReportedModes(gameManagerService, GameManager.GAME_MODE_STANDARD, GameManager.GAME_MODE_BATTERY, GameManager.GAME_MODE_PERFORMANCE); gameManagerService.setGameMode(mPackageName, GameManager.GAME_MODE_PERFORMANCE, USER_ID_2); gameManagerService.setGameMode(mPackageName, GameManager.GAME_MODE_BATTERY, USER_ID_1); } @Test public void testUpdateResolutionScalingFactor() { mockModifyGameModeGranted(); Loading