diff options
| author | 2018-12-29 03:47:56 +0800 | |
|---|---|---|
| committer | 2019-04-17 00:17:53 -0700 | |
| commit | a35e865b97b0da2f4a63f58b833ad6bf3d863907 (patch) | |
| tree | 0eccc9a96d78d7ddbbd24f26558e7827193be4f5 | |
| parent | a08443c58a9382a6602307ea1d63a3703ca1e68d (diff) | |
GUP: Update global property for the new dev opt
We updated the development opt in mechanism for GUP. Now we have
GUP_DEV_OPT_IN_APPS for applications selected to use GUP and
GUP_DEV_OPT_OUT_APPS for applications selected not to use GUP.
Bug: 119221883
Test: Build, flash and boot, verify with prototype
Change-Id: I52869ecf9e411a8dbdc1146f00c82023ba41bebf
Merged-In: I52869ecf9e411a8dbdc1146f00c82023ba41bebf
7 files changed, 45 insertions, 15 deletions
diff --git a/core/java/android/os/GraphicsEnvironment.java b/core/java/android/os/GraphicsEnvironment.java index 606c8f398563..f09cf3fbec1e 100644 --- a/core/java/android/os/GraphicsEnvironment.java +++ b/core/java/android/os/GraphicsEnvironment.java @@ -33,6 +33,9 @@ import java.io.File; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; /** @hide */ public class GraphicsEnvironment { @@ -136,6 +139,19 @@ public class GraphicsEnvironment { setLayerPaths(mClassLoader, layerPaths); } + private static List<String> getGlobalSettingsString(Bundle bundle, String globalSetting) { + List<String> valueList = null; + String settingsValue = bundle.getString(globalSetting); + + if (settingsValue != null) { + valueList = new ArrayList<>(Arrays.asList(settingsValue.split(","))); + } else { + valueList = new ArrayList<>(); + } + + return valueList; + } + /** * Choose whether the current process should use the builtin or an updated driver. */ @@ -154,14 +170,19 @@ public class GraphicsEnvironment { return; } - String applicationPackageName = context.getPackageName(); - String devOptInApplicationName = coreSettings.getString( - Settings.Global.GUP_DEV_OPT_IN_APPS); - boolean devOptIn = applicationPackageName.equals(devOptInApplicationName); - boolean whitelisted = onWhitelist(context, driverPackageName, ai.packageName); - if (!devOptIn && !whitelisted) { + if (getGlobalSettingsString(coreSettings, Settings.Global.GUP_DEV_OPT_OUT_APPS) + .contains(ai.packageName)) { + if (DEBUG) { + Log.w(TAG, ai.packageName + " opts out from GUP."); + } + return; + } + + if (!getGlobalSettingsString(coreSettings, Settings.Global.GUP_DEV_OPT_IN_APPS) + .contains(ai.packageName) + && !onWhitelist(context, driverPackageName, ai.packageName)) { if (DEBUG) { - Log.w(TAG, applicationPackageName + " is not on the whitelist."); + Log.w(TAG, ai.packageName + " is not on the whitelist."); } return; } diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java index bf33e0619304..9118c91d5ccd 100644 --- a/core/java/android/provider/Settings.java +++ b/core/java/android/provider/Settings.java @@ -11446,12 +11446,18 @@ public final class Settings { public static final String GPU_DEBUG_APP = "gpu_debug_app"; /** - * Apps that are selected to use Game Update Package. + * List of Apps selected to use Game Update Packages. * @hide */ public static final String GUP_DEV_OPT_IN_APPS = "gup_dev_opt_in_apps"; /** + * List of Apps selected not to use Game Update Packages. + * @hide + */ + public static final String GUP_DEV_OPT_OUT_APPS = "gup_dev_opt_out_apps"; + + /** * Apps on the black list that are forbidden to useGame Update Package. * @hide */ diff --git a/core/proto/android/providers/settings/global.proto b/core/proto/android/providers/settings/global.proto index 7c9176aa9eb7..187d5d645dfd 100644 --- a/core/proto/android/providers/settings/global.proto +++ b/core/proto/android/providers/settings/global.proto @@ -384,11 +384,12 @@ message GlobalSettingsProto { // App allowed to load GPU debug layers. optional SettingProto debug_app = 1; optional SettingProto debug_layers = 2 [ (android.privacy).dest = DEST_AUTOMATIC ]; - // Apps opt in to load graphics driver from Game Update Package - // instead of native graphcis driver through developer options. + // GUP - List of Apps selected to use Game Update Packages optional SettingProto gup_dev_opt_in_apps = 8; - // Apps on the black list that are forbidden to useGame Update Package. - optional SettingProto gup_black_list = 9; + // GUP - List of Apps selected not to use Game Update Packages + optional SettingProto gup_dev_opt_out_apps = 9; + // GUP - List of Apps that are forbidden to use Game Update Packages + optional SettingProto gup_black_list = 10; } optional Gpu gpu = 59; diff --git a/core/tests/coretests/src/android/provider/SettingsBackupTest.java b/core/tests/coretests/src/android/provider/SettingsBackupTest.java index 7b729284a063..d17fbd9590bd 100644 --- a/core/tests/coretests/src/android/provider/SettingsBackupTest.java +++ b/core/tests/coretests/src/android/provider/SettingsBackupTest.java @@ -445,6 +445,7 @@ public class SettingsBackupTest { Settings.Global.GPU_DEBUG_APP, Settings.Global.GPU_DEBUG_LAYERS, Settings.Global.GUP_DEV_OPT_IN_APPS, + Settings.Global.GUP_DEV_OPT_OUT_APPS, Settings.Global.GUP_BLACK_LIST, Settings.Global.ENABLE_GNSS_RAW_MEAS_FULL_TRACKING, Settings.Global.INSTALL_CARRIER_APP_NOTIFICATION_PERSISTENT, diff --git a/packages/SettingsLib/res/values/strings.xml b/packages/SettingsLib/res/values/strings.xml index 2c4abaeb9949..d5b121768a66 100644 --- a/packages/SettingsLib/res/values/strings.xml +++ b/packages/SettingsLib/res/values/strings.xml @@ -1131,7 +1131,4 @@ <!-- The notice header of Third-party licenses. not translatable --> <string name="notice_header" translatable="false"></string> - - <!-- UI debug setting: opt in to use updated graphics driver? [CHAR LIMIT=100] --> - <string name="gup_dev_opt_in_app_summary">Opt in app to use Game Update Package in developement</string> </resources> diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java index 759b51c853da..eca009003dd0 100644 --- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java +++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java @@ -651,6 +651,9 @@ class SettingsProtoDumpUtil { Settings.Global.GUP_DEV_OPT_IN_APPS, GlobalSettingsProto.Gpu.GUP_DEV_OPT_IN_APPS); dumpSetting(s, p, + Settings.Global.GUP_DEV_OPT_OUT_APPS, + GlobalSettingsProto.Gpu.GUP_DEV_OPT_OUT_APPS); + dumpSetting(s, p, Settings.Global.GUP_BLACK_LIST, GlobalSettingsProto.Gpu.GUP_BLACK_LIST); p.end(gpuToken); diff --git a/services/core/java/com/android/server/am/CoreSettingsObserver.java b/services/core/java/com/android/server/am/CoreSettingsObserver.java index 63300a1c05cd..0dc80ce05f4a 100644 --- a/services/core/java/com/android/server/am/CoreSettingsObserver.java +++ b/services/core/java/com/android/server/am/CoreSettingsObserver.java @@ -56,6 +56,7 @@ final class CoreSettingsObserver extends ContentObserver { sGlobalSettingToTypeMap.put(Settings.Global.DEBUG_VIEW_ATTRIBUTES, int.class); sGlobalSettingToTypeMap.put(Settings.Global.GUP_DEV_OPT_IN_APPS, String.class); + sGlobalSettingToTypeMap.put(Settings.Global.GUP_DEV_OPT_OUT_APPS, String.class); sGlobalSettingToTypeMap.put(Settings.Global.GUP_BLACK_LIST, String.class); // add other global settings here... } |