summaryrefslogtreecommitdiff
path: root/core/java/android
diff options
context:
space:
mode:
authorTreeHugger Robot <treehugger-gerrit@google.com>2017-11-17 22:20:11 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2017-11-17 22:20:11 +0000
commit344072e2f678cf02b597e16a078c05ef270a4b5d (patch)
treedb0622ff3044879a6bc9c1842b146f8989ef22ec /core/java/android
parente8f0660c0bd178677551ffdb5612215523cc9d5d (diff)
parentaa1387c6dec6e9d2941afca293abf667c7476274 (diff)
Merge "Check Settings.Global before sysprop in FeatureFlagUtils."
Diffstat (limited to 'core/java/android')
-rw-r--r--core/java/android/util/FeatureFlagUtils.java22
1 files changed, 17 insertions, 5 deletions
diff --git a/core/java/android/util/FeatureFlagUtils.java b/core/java/android/util/FeatureFlagUtils.java
index 2a2722082a7d..29baea17da33 100644
--- a/core/java/android/util/FeatureFlagUtils.java
+++ b/core/java/android/util/FeatureFlagUtils.java
@@ -18,6 +18,7 @@ package android.util;
import android.content.Context;
import android.os.SystemProperties;
+import android.provider.Settings;
import android.text.TextUtils;
import java.util.Map;
@@ -39,13 +40,24 @@ public class FeatureFlagUtils {
* @return true if the flag is enabled (either by default in system, or override by user)
*/
public static boolean isEnabled(Context context, String feature) {
- // Tries to get feature flag from system property.
- // Step 1: check if feature flag has any override. Flag name: sys.fflag.override.<feature>
- String value = SystemProperties.get(FFLAG_OVERRIDE_PREFIX + feature);
+ // Override precedence:
+ // Settings.Global -> sys.fflag.override.* -> sys.fflag.*
+
+ // Step 1: check if feature flag is set in Settings.Global.
+ String value;
+ if (context != null) {
+ value = Settings.Global.getString(context.getContentResolver(), feature);
+ if (!TextUtils.isEmpty(value)) {
+ return Boolean.parseBoolean(value);
+ }
+ }
+
+ // Step 2: check if feature flag has any override. Flag name: sys.fflag.override.<feature>
+ value = SystemProperties.get(FFLAG_OVERRIDE_PREFIX + feature);
if (!TextUtils.isEmpty(value)) {
return Boolean.parseBoolean(value);
}
- // Step 2: check if feature flag has any default value. Flag name: sys.fflag.<feature>
+ // Step 3: check if feature flag has any default value. Flag name: sys.fflag.<feature>
value = SystemProperties.get(FFLAG_PREFIX + feature);
return Boolean.parseBoolean(value);
}
@@ -53,7 +65,7 @@ public class FeatureFlagUtils {
/**
* Override feature flag to new state.
*/
- public static void setEnabled(String feature, boolean enabled) {
+ public static void setEnabled(Context context, String feature, boolean enabled) {
SystemProperties.set(FFLAG_OVERRIDE_PREFIX + feature, enabled ? "true" : "false");
}