Make all debug feature flags boot aware.

Bug: 276090194
Test: FeatureFlags worked on device.
Change-Id: I710801d63e6f4283bf15daea2b5be5874de21cc8
diff --git a/quickstep/src/com/android/launcher3/uioverrides/flags/FlagTogglerPrefUi.java b/quickstep/src/com/android/launcher3/uioverrides/flags/FlagTogglerPrefUi.java
index 9c59361..87c836b 100644
--- a/quickstep/src/com/android/launcher3/uioverrides/flags/FlagTogglerPrefUi.java
+++ b/quickstep/src/com/android/launcher3/uioverrides/flags/FlagTogglerPrefUi.java
@@ -16,12 +16,10 @@
 
 package com.android.launcher3.uioverrides.flags;
 
-import static com.android.launcher3.config.FeatureFlags.FLAGS_PREF_NAME;
 import static com.android.launcher3.config.FeatureFlags.FlagState.TEAMFOOD;
 import static com.android.launcher3.uioverrides.flags.FlagsFactory.TEAMFOOD_FLAG;
 
 import android.content.Context;
-import android.content.SharedPreferences;
 import android.os.Handler;
 import android.os.Process;
 import android.text.Html;
@@ -52,31 +50,27 @@
 
     private final PreferenceFragmentCompat mFragment;
     private final Context mContext;
-    private final SharedPreferences mSharedPreferences;
-
     private final PreferenceDataStore mDataStore = new PreferenceDataStore() {
 
         @Override
         public void putBoolean(String key, boolean value) {
-            mSharedPreferences.edit().putBoolean(key, value).apply();
+            FlagsFactory.getSharedPreferences().edit().putBoolean(key, value).apply();
             updateMenu();
         }
 
         @Override
         public boolean getBoolean(String key, boolean defaultValue) {
-            return mSharedPreferences.getBoolean(key, defaultValue);
+            return FlagsFactory.getSharedPreferences().getBoolean(key, defaultValue);
         }
     };
 
     public FlagTogglerPrefUi(PreferenceFragmentCompat fragment) {
         mFragment = fragment;
         mContext = fragment.getActivity();
-        mSharedPreferences = mContext.getSharedPreferences(
-                FLAGS_PREF_NAME, Context.MODE_PRIVATE);
     }
 
     public void applyTo(PreferenceGroup parent) {
-        Set<String> modifiedPrefs = mSharedPreferences.getAll().keySet();
+        Set<String> modifiedPrefs = FlagsFactory.getSharedPreferences().getAll().keySet();
         List<DebugFlag> flags = FlagsFactory.getDebugFlags();
         flags.sort((f1, f2) -> {
             // Sort first by any prefs that the user has changed, then alphabetically.
@@ -102,7 +96,7 @@
                 public void onBindViewHolder(PreferenceViewHolder holder) {
                     super.onBindViewHolder(holder);
                     holder.itemView.setOnLongClickListener(v -> {
-                        mSharedPreferences.edit().remove(flag.key).apply();
+                        FlagsFactory.getSharedPreferences().edit().remove(flag.key).apply();
                         setChecked(getFlagStateFromSharedPrefs(flag));
                         updateSummary(this, flag);
                         updateMenu();
@@ -133,7 +127,7 @@
     private void updateSummary(SwitchPreference switchPreference, DebugFlag flag) {
         String summary = flag.defaultValue == TEAMFOOD
                 ? "<font color='blue'><b>[TEAMFOOD]</b> </font>" : "";
-        if (mSharedPreferences.contains(flag.key)) {
+        if (FlagsFactory.getSharedPreferences().contains(flag.key)) {
             summary += "<font color='red'><b>[OVERRIDDEN]</b> </font>";
         }
         if (!TextUtils.isEmpty(summary)) {
@@ -156,7 +150,7 @@
 
     public void onOptionsItemSelected(MenuItem item) {
         if (item.getItemId() == R.id.menu_apply_flags) {
-            mSharedPreferences.edit().commit();
+            FlagsFactory.getSharedPreferences().edit().commit();
             Log.e(TAG,
                     "Killing launcher process " + Process.myPid() + " to apply new flag values");
             System.exit(0);
diff --git a/quickstep/src/com/android/launcher3/uioverrides/flags/FlagsFactory.java b/quickstep/src/com/android/launcher3/uioverrides/flags/FlagsFactory.java
index d066abe..a68e753 100644
--- a/quickstep/src/com/android/launcher3/uioverrides/flags/FlagsFactory.java
+++ b/quickstep/src/com/android/launcher3/uioverrides/flags/FlagsFactory.java
@@ -21,7 +21,6 @@
 import static com.android.launcher3.BuildConfig.IS_DEBUG_DEVICE;
 import static com.android.launcher3.config.FeatureFlags.FlagState.DISABLED;
 import static com.android.launcher3.config.FeatureFlags.FlagState.ENABLED;
-import static com.android.launcher3.config.FeatureFlags.FlagState.TEAMFOOD;
 import static com.android.launcher3.util.Executors.UI_HELPER_EXECUTOR;
 
 import android.content.Context;
@@ -30,6 +29,8 @@
 import android.provider.DeviceConfig.Properties;
 import android.util.Log;
 
+import androidx.annotation.NonNull;
+
 import com.android.launcher3.config.FeatureFlags.BooleanFlag;
 import com.android.launcher3.config.FeatureFlags.FlagState;
 import com.android.launcher3.config.FeatureFlags.IntFlag;
@@ -52,10 +53,11 @@
     private static final FlagsFactory INSTANCE = new FlagsFactory();
     private static final boolean FLAG_AUTO_APPLY_ENABLED = true;
 
-    public static final String FLAGS_PREF_NAME = "featureFlags";
+    private static final String FLAGS_PREF_NAME = "featureFlags";
     public static final String NAMESPACE_LAUNCHER = "launcher";
 
     private static final List<DebugFlag> sDebugFlags = new ArrayList<>();
+    private static SharedPreferences sSharedPreferences;
 
     static final BooleanFlag TEAMFOOD_FLAG = getReleaseFlag(
             0, "LAUNCHER_TEAMFOOD", DISABLED, "Enable this flag to opt-in all team food flags");
@@ -93,10 +95,8 @@
     public static BooleanFlag getDebugFlag(
             int bugId, String key, FlagState flagState, String description) {
         if (IS_DEBUG_DEVICE) {
-            SharedPreferences prefs = currentApplication()
-                    .getSharedPreferences(FLAGS_PREF_NAME, Context.MODE_PRIVATE);
             boolean defaultValue = getEnabledValue(flagState);
-            boolean currentValue = prefs.getBoolean(key, defaultValue);
+            boolean currentValue = getSharedPreferences().getBoolean(key, defaultValue);
             DebugFlag flag = new DebugFlag(key, description, flagState, currentValue);
             sDebugFlags.add(flag);
             return flag;
@@ -115,9 +115,7 @@
         boolean defaultValueInCode = getEnabledValue(flagState);
         boolean defaultValue = DeviceConfig.getBoolean(NAMESPACE_LAUNCHER, key, defaultValueInCode);
         if (IS_DEBUG_DEVICE) {
-            SharedPreferences prefs = currentApplication()
-                    .getSharedPreferences(FLAGS_PREF_NAME, Context.MODE_PRIVATE);
-            boolean currentValue = prefs.getBoolean(key, defaultValue);
+            boolean currentValue = getSharedPreferences().getBoolean(key, defaultValue);
             DebugFlag flag = new DeviceFlag(key, description, flagState, currentValue,
                     defaultValueInCode);
             sDebugFlags.add(flag);
@@ -145,6 +143,17 @@
         }
     }
 
+    /** Returns the SharedPreferences instance backing Debug FeatureFlags. */
+    @NonNull
+    static SharedPreferences getSharedPreferences() {
+        if (sSharedPreferences == null) {
+            sSharedPreferences = currentApplication()
+                    .createDeviceProtectedStorageContext()
+                    .getSharedPreferences(FLAGS_PREF_NAME, Context.MODE_PRIVATE);
+        }
+        return sSharedPreferences;
+    }
+
     /**
      * Dumps the current flags state to the print writer
      */
diff --git a/src/com/android/launcher3/config/FeatureFlags.java b/src/com/android/launcher3/config/FeatureFlags.java
index 14cd964..bcc9ccf 100644
--- a/src/com/android/launcher3/config/FeatureFlags.java
+++ b/src/com/android/launcher3/config/FeatureFlags.java
@@ -39,8 +39,6 @@
  */
 public final class FeatureFlags {
 
-    public static final String FLAGS_PREF_NAME = "featureFlags";
-
     @VisibleForTesting
     public static Predicate<BooleanFlag> sBooleanReader = f -> f.mCurrentValue;
     @VisibleForTesting