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

Commit 68600718 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
parent 77ee161d
Loading
Loading
Loading
Loading
+18 −18
Original line number Diff line number Diff line
@@ -490,11 +490,11 @@ public final class GameManagerService extends IGameManagerService.Stub {
        private final Object mModeConfigLock = new Object();
        @GuardedBy("mModeConfigLock")
        private final ArrayMap<Integer, GameModeConfiguration> mModeConfigs = new ArrayMap<>();
        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) {
            mPackageName = packageName;
@@ -502,22 +502,16 @@ public final class GameManagerService extends IGameManagerService.Stub {

        GamePackageConfiguration(PackageManager packageManager, String packageName, int userId) {
            mPackageName = packageName;

            try {
                final ApplicationInfo ai = packageManager.getApplicationInfoAsUser(packageName,
                        PackageManager.GET_META_DATA, userId);
                if (!parseInterventionFromXml(packageManager, ai, packageName)) {
                    if (ai.metaData != null) {
                if (!parseInterventionFromXml(packageManager, 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.
@@ -581,6 +575,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);
            }