Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 607e7c2f authored by Andy Yu's avatar Andy Yu
Browse files

Refactor getNewGameMode()

Refactoring duplicate code segment to function
getNewGameMode

Fixed a bug when getting GamePackageConfiguration
in resetGameModeConfigOverride

Bug: 199327916
Test: atest GameManagerServiceTests
Change-Id: I67b167525e186d29ddc91f55239534dbd43ffa49
parent c83524ee
Loading
Loading
Loading
Loading
+16 −30
Original line number Diff line number Diff line
@@ -1307,15 +1307,26 @@ public final class GameManagerService extends IGameManagerService.Stub {
        // Make sure after resetting the game mode is still supported.
        // If not, set the game mode to standard
        int gameMode = getGameMode(packageName, userId);
        int newGameMode = gameMode;

        GamePackageConfiguration config = null;
        synchronized (mOverrideConfigLock) {
            config = mOverrideConfigs.get(packageName);
        }
        if (config == null) {
            synchronized (mDeviceConfigLock) {
                config = mConfigs.get(packageName);
            }
        }
        final int newGameMode = getNewGameMode(gameMode, config);
        if (gameMode != newGameMode) {
            setGameMode(packageName, GameManager.GAME_MODE_STANDARD, userId);
            return;
        }
        setGameMode(packageName, gameMode, userId);
    }

    private int getNewGameMode(int gameMode, GamePackageConfiguration config) {
        int newGameMode = gameMode;
        if (config != null) {
            int modesBitfield = config.getAvailableGameModesBitfield();
            // Remove UNSUPPORTED to simplify the logic here, since we really just
@@ -1337,11 +1348,7 @@ public final class GameManagerService extends IGameManagerService.Stub {
            // UNSUPPORTED, then set to UNSUPPORTED
            newGameMode = GameManager.GAME_MODE_UNSUPPORTED;
        }
        if (gameMode != newGameMode) {
            setGameMode(packageName, GameManager.GAME_MODE_STANDARD, userId);
            return;
        }
        setGameMode(packageName, gameMode, userId);
        return newGameMode;
    }

    /**
@@ -1399,7 +1406,6 @@ public final class GameManagerService extends IGameManagerService.Stub {
            }
            for (final String packageName : packageNames) {
                int gameMode = getGameMode(packageName, userId);
                int newGameMode = gameMode;
                // Make sure the user settings and package configs don't conflict.
                // I.e. the user setting is set to a mode that no longer available due to
                // config/manifest changes.
@@ -1408,27 +1414,7 @@ public final class GameManagerService extends IGameManagerService.Stub {
                synchronized (mDeviceConfigLock) {
                    config = mConfigs.get(packageName);
                }
                if (config != null) {
                    int modesBitfield = config.getAvailableGameModesBitfield();
                    // Remove UNSUPPORTED to simplify the logic here, since we really just
                    // want to check if we support selectable game modes
                    modesBitfield &= ~modeToBitmask(GameManager.GAME_MODE_UNSUPPORTED);
                    if (!bitFieldContainsModeBitmask(modesBitfield, gameMode)) {
                        if (bitFieldContainsModeBitmask(modesBitfield,
                                GameManager.GAME_MODE_STANDARD)) {
                            // If the current set mode isn't supported,
                            // but we support STANDARD, then set the mode to STANDARD.
                            newGameMode = GameManager.GAME_MODE_STANDARD;
                        } else {
                            // If we don't support any game modes, then set to UNSUPPORTED
                            newGameMode = GameManager.GAME_MODE_UNSUPPORTED;
                        }
                    }
                } else if (gameMode != GameManager.GAME_MODE_UNSUPPORTED) {
                    // If we have no config for the package, but the configured mode is not
                    // UNSUPPORTED, then set to UNSUPPORTED
                    newGameMode = GameManager.GAME_MODE_UNSUPPORTED;
                }
                final int newGameMode = getNewGameMode(gameMode, config);
                if (newGameMode != gameMode) {
                    setGameMode(packageName, newGameMode, userId);
                }