From a9b1f135a7a724751e52ac989c94cef4bf5e7489 Mon Sep 17 00:00:00 2001 From: Andy Yu Date: Mon, 22 Aug 2022 20:05:55 -0700 Subject: [PATCH] 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 --- .../server/app/GameManagerService.java | 35 +++++++++---------- 1 file changed, 17 insertions(+), 18 deletions(-) diff --git a/services/core/java/com/android/server/app/GameManagerService.java b/services/core/java/com/android/server/app/GameManagerService.java index dd73cbed06d90..15c569e246f7c 100644 --- a/services/core/java/com/android/server/app/GameManagerService.java +++ b/services/core/java/com/android/server/app/GameManagerService.java @@ -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 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) { - 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; - } + 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); } } 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); }