From 8cbefe20867fe64562cf248c11f9f4855badcdd9 Mon Sep 17 00:00:00 2001 From: Sunny Goyal Date: Thu, 15 Jul 2021 15:07:04 -0700 Subject: [PATCH] Removing support for change listeners from feature flags FeatureFlags are supposed to work as static values and change listeners can cause leaks if not handled properly at every place. Bug: 193825269 Test: Manual Change-Id: I54f9113bc01025da781a420154829d80ffa6a084 --- .../launcher3/uioverrides/DeviceFlag.java | 46 ------------------- .../launcher3/config/FeatureFlags.java | 8 +--- 2 files changed, 2 insertions(+), 52 deletions(-) diff --git a/quickstep/src/com/android/launcher3/uioverrides/DeviceFlag.java b/quickstep/src/com/android/launcher3/uioverrides/DeviceFlag.java index c115bbb9fb..c46809afc6 100644 --- a/quickstep/src/com/android/launcher3/uioverrides/DeviceFlag.java +++ b/quickstep/src/com/android/launcher3/uioverrides/DeviceFlag.java @@ -17,21 +17,17 @@ package com.android.launcher3.uioverrides; import android.annotation.TargetApi; -import android.content.Context; import android.os.Build; import android.provider.DeviceConfig; 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 mListeners; public DeviceFlag(String key, boolean defaultValue, String description) { super(key, getDeviceValue(key, defaultValue), description); @@ -43,54 +39,12 @@ public class DeviceFlag extends DebugFlag { return super.appendProps(src).append(", mDefaultValueInCode=").append(mDefaultValueInCode); } - @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) { - if (mListeners == null) { - initialize(context); - } - mListeners.add(r); - } - - @Override - public void removeChangeListener(Runnable r) { - if (mListeners == null) { - return; - } - mListeners.remove(r); - } - @Override public boolean get() { // Override this method in order to let Robolectric ShadowDeviceFlag to stub it. return super.get(); } - private void registerDeviceConfigChangedListener(Context context) { - DeviceConfig.addOnPropertiesChangedListener( - NAMESPACE_LAUNCHER, - context.getMainExecutor(), - properties -> { - if (!NAMESPACE_LAUNCHER.equals(properties.getNamespace()) - || !properties.getKeyset().contains(key)) { - return; - } - defaultValue = getDeviceValue(key, mDefaultValueInCode); - initialize(context); - for (Runnable r: mListeners) { - r.run(); - } - }); - } - protected static boolean getDeviceValue(String key, boolean defaultValue) { return DeviceConfig.getBoolean(NAMESPACE_LAUNCHER, key, defaultValue); } diff --git a/src/com/android/launcher3/config/FeatureFlags.java b/src/com/android/launcher3/config/FeatureFlags.java index 1fe50f8981..1779ddb10c 100644 --- a/src/com/android/launcher3/config/FeatureFlags.java +++ b/src/com/android/launcher3/config/FeatureFlags.java @@ -295,7 +295,7 @@ public final class FeatureFlags { public static class BooleanFlag { public final String key; - public boolean defaultValue; + public final boolean defaultValue; public BooleanFlag(String key, boolean defaultValue) { this.key = key; @@ -314,16 +314,12 @@ public final class FeatureFlags { protected StringBuilder appendProps(StringBuilder src) { return src.append(key).append(", defaultValue=").append(defaultValue); } - - public void addChangeListener(Context context, Runnable r) { } - - public void removeChangeListener(Runnable r) {} } public static class DebugFlag extends BooleanFlag { public final String description; - private boolean mCurrentValue; + protected boolean mCurrentValue; public DebugFlag(String key, boolean defaultValue, String description) { super(key, defaultValue);