Merge "Move feature flags that have been changed to the top of the list." into tm-qpr-dev

This commit is contained in:
Jon Miranda
2022-11-16 02:18:50 +00:00
committed by Android (Google) Code Review
2 changed files with 23 additions and 6 deletions

View File

@@ -17,6 +17,7 @@
package com.android.launcher3.config;
import android.content.Context;
import android.content.SharedPreferences;
import com.android.launcher3.BuildConfig;
import com.android.launcher3.Utilities;
@@ -343,7 +344,15 @@ public final class FeatureFlags {
for (DebugFlag flag : sDebugFlags) {
flag.initialize(context);
}
sDebugFlags.sort((f1, f2) -> f1.key.compareToIgnoreCase(f2.key));
sDebugFlags.sort((f1, f2) -> {
// Sort first by any prefs that the user has changed, then alphabetically.
int changeComparison = Boolean.compare(f2.mHasBeenChangedAtLeastOnce,
f1.mHasBeenChangedAtLeastOnce);
return changeComparison != 0
? changeComparison
: f1.key.compareToIgnoreCase(f2.key);
});
}
}
@@ -399,6 +408,7 @@ public final class FeatureFlags {
public static class DebugFlag extends BooleanFlag {
public final String description;
protected boolean mHasBeenChangedAtLeastOnce;
protected boolean mCurrentValue;
public DebugFlag(String key, boolean defaultValue, String description) {
@@ -416,8 +426,10 @@ public final class FeatureFlags {
}
public void initialize(Context context) {
mCurrentValue = context.getSharedPreferences(FLAGS_PREF_NAME, Context.MODE_PRIVATE)
.getBoolean(key, defaultValue);
SharedPreferences prefs =
context.getSharedPreferences(FLAGS_PREF_NAME, Context.MODE_PRIVATE);
mHasBeenChangedAtLeastOnce = prefs.contains(key);
mCurrentValue = prefs.getBoolean(key, defaultValue);
}
@Override

View File

@@ -52,12 +52,17 @@ public final class FlagTogglerPrefUi {
public void putBoolean(String key, boolean value) {
for (DebugFlag flag : FeatureFlags.getDebugFlags()) {
if (flag.key.equals(key)) {
SharedPreferences.Editor editor = mContext.getSharedPreferences(
FLAGS_PREF_NAME, Context.MODE_PRIVATE).edit();
if (value == flag.defaultValue) {
SharedPreferences prefs = mContext.getSharedPreferences(
FLAGS_PREF_NAME, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
// We keep the key in the prefs even if it has the default value, because it's a
// signal that it has been changed at one point.
if (!prefs.contains(key) && value == flag.defaultValue) {
editor.remove(key).apply();
flag.mHasBeenChangedAtLeastOnce = false;
} else {
editor.putBoolean(key, value).apply();
flag.mHasBeenChangedAtLeastOnce = true;
}
updateMenu();
}