Loading services/core/java/com/android/server/app/GameManagerService.java +6 −13 Original line number Diff line number Diff line Loading @@ -1276,20 +1276,12 @@ 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)) { final Message msg = mHandler.obtainMessage(REMOVE_SETTINGS); msg.obj = fromUserId; mHandler.sendMessage(msg); } } } // 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. final Message msg = mHandler.obtainMessage(POPULATE_GAME_MODE_SETTINGS); msg.obj = toUserId; mHandler.sendMessage(msg); if (mGameServiceController != null) { mGameServiceController.notifyNewForegroundUser(to); } Loading Loading @@ -1429,9 +1421,10 @@ public final class GameManagerService extends IGameManagerService.Stub { Slog.v(TAG, "Package configuration not found for " + packageName); return; } } updateCompatModeDownscale(packageConfig, packageName, gameMode); } else { updateFps(packageConfig, packageName, gameMode, userId); updateCompatModeDownscale(packageConfig, packageName, gameMode); } updateUseAngle(packageName, gameMode); } Loading services/tests/mockingservicestests/src/com/android/server/app/GameManagerServiceTests.java +32 −0 Original line number Diff line number Diff line Loading @@ -1490,6 +1490,38 @@ 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); } public void testResetInterventions_onDeviceConfigReset() throws Exception { mockModifyGameModeGranted(); String configStringBefore = Loading Loading
services/core/java/com/android/server/app/GameManagerService.java +6 −13 Original line number Diff line number Diff line Loading @@ -1276,20 +1276,12 @@ 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)) { final Message msg = mHandler.obtainMessage(REMOVE_SETTINGS); msg.obj = fromUserId; mHandler.sendMessage(msg); } } } // 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. final Message msg = mHandler.obtainMessage(POPULATE_GAME_MODE_SETTINGS); msg.obj = toUserId; mHandler.sendMessage(msg); if (mGameServiceController != null) { mGameServiceController.notifyNewForegroundUser(to); } Loading Loading @@ -1429,9 +1421,10 @@ public final class GameManagerService extends IGameManagerService.Stub { Slog.v(TAG, "Package configuration not found for " + packageName); return; } } updateCompatModeDownscale(packageConfig, packageName, gameMode); } else { updateFps(packageConfig, packageName, gameMode, userId); updateCompatModeDownscale(packageConfig, packageName, gameMode); } updateUseAngle(packageName, gameMode); } Loading
services/tests/mockingservicestests/src/com/android/server/app/GameManagerServiceTests.java +32 −0 Original line number Diff line number Diff line Loading @@ -1490,6 +1490,38 @@ 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); } public void testResetInterventions_onDeviceConfigReset() throws Exception { mockModifyGameModeGranted(); String configStringBefore = Loading