Merge "Fix the bug that user setting is removed when switching" into tm-qpr-dev
This commit is contained in:
@@ -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);
|
||||
}
|
||||
@@ -1429,9 +1421,10 @@ public final class GameManagerService extends IGameManagerService.Stub {
|
||||
Slog.v(TAG, "Package configuration not found for " + packageName);
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
updateFps(packageConfig, packageName, gameMode, userId);
|
||||
updateCompatModeDownscale(packageConfig, packageName, gameMode);
|
||||
}
|
||||
updateCompatModeDownscale(packageConfig, packageName, gameMode);
|
||||
updateFps(packageConfig, packageName, gameMode, userId);
|
||||
updateUseAngle(packageName, gameMode);
|
||||
}
|
||||
|
||||
|
||||
@@ -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 =
|
||||
|
||||
Reference in New Issue
Block a user