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

Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Launcher3/+/20482424

Change-Id: I29567df68709d3c2353200bfaf8768a0e8a0bf0f
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Jon Miranda
2022-11-16 02:35:21 +00:00
committed by Automerger Merge Worker
2 changed files with 23 additions and 6 deletions
@@ -17,6 +17,7 @@
package com.android.launcher3.config; package com.android.launcher3.config;
import android.content.Context; import android.content.Context;
import android.content.SharedPreferences;
import com.android.launcher3.BuildConfig; import com.android.launcher3.BuildConfig;
import com.android.launcher3.Utilities; import com.android.launcher3.Utilities;
@@ -343,7 +344,15 @@ public final class FeatureFlags {
for (DebugFlag flag : sDebugFlags) { for (DebugFlag flag : sDebugFlags) {
flag.initialize(context); 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 static class DebugFlag extends BooleanFlag {
public final String description; public final String description;
protected boolean mHasBeenChangedAtLeastOnce;
protected boolean mCurrentValue; protected boolean mCurrentValue;
public DebugFlag(String key, boolean defaultValue, String description) { public DebugFlag(String key, boolean defaultValue, String description) {
@@ -416,8 +426,10 @@ public final class FeatureFlags {
} }
public void initialize(Context context) { public void initialize(Context context) {
mCurrentValue = context.getSharedPreferences(FLAGS_PREF_NAME, Context.MODE_PRIVATE) SharedPreferences prefs =
.getBoolean(key, defaultValue); context.getSharedPreferences(FLAGS_PREF_NAME, Context.MODE_PRIVATE);
mHasBeenChangedAtLeastOnce = prefs.contains(key);
mCurrentValue = prefs.getBoolean(key, defaultValue);
} }
@Override @Override
@@ -52,12 +52,17 @@ public final class FlagTogglerPrefUi {
public void putBoolean(String key, boolean value) { public void putBoolean(String key, boolean value) {
for (DebugFlag flag : FeatureFlags.getDebugFlags()) { for (DebugFlag flag : FeatureFlags.getDebugFlags()) {
if (flag.key.equals(key)) { if (flag.key.equals(key)) {
SharedPreferences.Editor editor = mContext.getSharedPreferences( SharedPreferences prefs = mContext.getSharedPreferences(
FLAGS_PREF_NAME, Context.MODE_PRIVATE).edit(); FLAGS_PREF_NAME, Context.MODE_PRIVATE);
if (value == flag.defaultValue) { 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(); editor.remove(key).apply();
flag.mHasBeenChangedAtLeastOnce = false;
} else { } else {
editor.putBoolean(key, value).apply(); editor.putBoolean(key, value).apply();
flag.mHasBeenChangedAtLeastOnce = true;
} }
updateMenu(); updateMenu();
} }