DeviceFlag change is not detected when phenotype updates.

Bug: 151025334
Test: adb shell device_config put launcher FOLDER_NAME_SUGGEST false

Change-Id: I5e478aebfea5847cf7cbe7c0cb6cb0c6f81481cb
diff --git a/quickstep/src/com/android/launcher3/uioverrides/DeviceFlag.java b/quickstep/src/com/android/launcher3/uioverrides/DeviceFlag.java
index 3c3f397..5836ebd 100644
--- a/quickstep/src/com/android/launcher3/uioverrides/DeviceFlag.java
+++ b/quickstep/src/com/android/launcher3/uioverrides/DeviceFlag.java
@@ -23,12 +23,15 @@
 
 import com.android.launcher3.config.FeatureFlags.DebugFlag;
 
+import java.util.ArrayList;
+
 @TargetApi(Build.VERSION_CODES.P)
 public class DeviceFlag extends DebugFlag {
 
     public static final String NAMESPACE_LAUNCHER = "launcher";
 
     private final boolean mDefaultValueInCode;
+    ArrayList<Runnable> mListeners;
 
     public DeviceFlag(String key, boolean defaultValue, String description) {
         super(key, getDeviceValue(key, defaultValue), description);
@@ -41,17 +44,33 @@
     }
 
     @Override
+    public void initialize(Context context) {
+        super.initialize(context);
+        if (mListeners == null) {
+            mListeners = new ArrayList<>();
+            registerDeviceConfigChangedListener(context);
+        }
+    }
+
+    @Override
     public void addChangeListener(Context context, Runnable r) {
+        mListeners.add(r);
+    }
+
+    private void registerDeviceConfigChangedListener(Context context) {
         DeviceConfig.addOnPropertiesChangedListener(
                 NAMESPACE_LAUNCHER,
                 context.getMainExecutor(),
                 properties -> {
-                    if (!NAMESPACE_LAUNCHER.equals(properties.getNamespace())) {
+                    if (!NAMESPACE_LAUNCHER.equals(properties.getNamespace())
+                            || !properties.getKeyset().contains(key)) {
                         return;
                     }
                     defaultValue = getDeviceValue(key, mDefaultValueInCode);
                     initialize(context);
-                    r.run();
+                    for (Runnable r: mListeners) {
+                        r.run();
+                    }
                 });
     }
 
diff --git a/src/com/android/launcher3/config/FeatureFlags.java b/src/com/android/launcher3/config/FeatureFlags.java
index ed28df0..a6f9e6b 100644
--- a/src/com/android/launcher3/config/FeatureFlags.java
+++ b/src/com/android/launcher3/config/FeatureFlags.java
@@ -93,8 +93,9 @@
     public static final BooleanFlag FAKE_LANDSCAPE_UI = getDebugFlag(
             "FAKE_LANDSCAPE_UI", false, "Rotate launcher UI instead of using transposed layout");
 
-    public static final BooleanFlag FOLDER_NAME_SUGGEST = getDebugFlag(
-            "FOLDER_NAME_SUGGEST", true, "Suggests folder names instead of blank text.");
+    public static final BooleanFlag FOLDER_NAME_SUGGEST = new DeviceFlag(
+            "FOLDER_NAME_SUGGEST", true,
+            "Suggests folder names instead of blank text.");
 
     public static final BooleanFlag APP_SEARCH_IMPROVEMENTS = new DeviceFlag(
             "APP_SEARCH_IMPROVEMENTS", false,