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

Commit a9b1f135 authored by Andy Yu's avatar Andy Yu
Browse files

Set default metadata/XML/attribute set value before parsing

Make sure all game mode and game intervention allow flags
are set properly before parsing from metadata, xml file and
attribute set.

Bug: 243455130
Test: atest GameManagerServiceTests
Change-Id: I0e9c484fe73141521da42e57c60e6bf722d9744a
Merged-In: I0e9c484fe73141521da42e57c60e6bf722d9744a
parent fea416b8
Loading
Loading
Loading
Loading
+17 −18
Original line number Diff line number Diff line
@@ -554,31 +554,24 @@ public final class GameManagerService extends IGameManagerService.Stub {
        private static final String GAME_MODE_CONFIG_NODE_NAME = "game-mode-config";
        private final String mPackageName;
        private final ArrayMap<Integer, GameModeConfiguration> mModeConfigs;
        private boolean mPerfModeOptedIn;
        private boolean mBatteryModeOptedIn;
        private boolean mAllowDownscale;
        private boolean mAllowAngle;
        private boolean mAllowFpsOverride;
        private boolean mPerfModeOptedIn = false;
        private boolean mBatteryModeOptedIn = false;
        private boolean mAllowDownscale = true;
        private boolean mAllowAngle = true;
        private boolean mAllowFpsOverride = true;

        GamePackageConfiguration(String packageName, int userId) {
            mPackageName = packageName;
            mModeConfigs = new ArrayMap<>();

            try {
                final ApplicationInfo ai = mPackageManager.getApplicationInfoAsUser(packageName,
                        PackageManager.GET_META_DATA, userId);
                if (!parseInterventionFromXml(ai, packageName)) {
                    if (ai.metaData != null) {
                if (!parseInterventionFromXml(ai, packageName) && ai.metaData != null) {
                    mPerfModeOptedIn = ai.metaData.getBoolean(METADATA_PERFORMANCE_MODE_ENABLE);
                    mBatteryModeOptedIn = ai.metaData.getBoolean(METADATA_BATTERY_MODE_ENABLE);
                    mAllowDownscale = ai.metaData.getBoolean(METADATA_WM_ALLOW_DOWNSCALE, true);
                    mAllowAngle = ai.metaData.getBoolean(METADATA_ANGLE_ALLOW_ANGLE, true);
                    } else {
                        mPerfModeOptedIn = false;
                        mBatteryModeOptedIn = false;
                        mAllowDownscale = true;
                        mAllowAngle = true;
                        mAllowFpsOverride = true;
                    }
                }
            } catch (NameNotFoundException e) {
                // Not all packages are installed, hence ignore those that are not installed yet.
@@ -641,6 +634,12 @@ public final class GameManagerService extends IGameManagerService.Stub {
                    }
                }
            } catch (NameNotFoundException | XmlPullParserException | IOException ex) {
                // set flag back to default values when parsing fails
                mPerfModeOptedIn = false;
                mBatteryModeOptedIn = false;
                mAllowDownscale = true;
                mAllowAngle = true;
                mAllowFpsOverride = true;
                Slog.e(TAG, "Error while parsing XML meta-data for "
                        + METADATA_GAME_MODE_CONFIG);
            }