Only show Condtionals when the feature flag is on.
We plan to deprecate Settings Conditionals as it seems
duplicated with quick settings. For now, we set the default
value of this flag to false to disalbe it. OEMs could still
enalbe this feature by setting the flag on.
Bug: 142927361
Test: robotests
Change-Id: Ifaf710caf0045cb185b3a8c3b04f1ce537f67896
diff --git a/src/com/android/settings/homepage/contextualcards/ContextualCardManager.java b/src/com/android/settings/homepage/contextualcards/ContextualCardManager.java
index 60a63ec..d02f103 100644
--- a/src/com/android/settings/homepage/contextualcards/ContextualCardManager.java
+++ b/src/com/android/settings/homepage/contextualcards/ContextualCardManager.java
@@ -28,6 +28,7 @@
import android.provider.Settings;
import android.text.format.DateUtils;
import android.util.ArrayMap;
+import android.util.FeatureFlagUtils;
import android.util.Log;
import android.widget.BaseAdapter;
@@ -38,6 +39,7 @@
import androidx.loader.content.Loader;
import com.android.settings.R;
+import com.android.settings.core.FeatureFlags;
import com.android.settings.homepage.contextualcards.conditional.ConditionalCardController;
import com.android.settings.homepage.contextualcards.logging.ContextualCardLogUtils;
import com.android.settings.homepage.contextualcards.slices.SliceContextualCardRenderer;
@@ -80,10 +82,6 @@
private static final String TAG = "ContextualCardManager";
- //The list for Settings Custom Card
- private static final int[] SETTINGS_CARDS =
- {ContextualCard.CardType.CONDITIONAL, ContextualCard.CardType.LEGACY_SUGGESTION};
-
private final Context mContext;
private final Lifecycle mLifecycle;
private final List<LifecycleObserver> mLifecycleObservers;
@@ -114,7 +112,7 @@
mSavedCards = savedInstanceState.getStringArrayList(KEY_CONTEXTUAL_CARDS);
}
//for data provided by Settings
- for (@ContextualCard.CardType int cardType : SETTINGS_CARDS) {
+ for (@ContextualCard.CardType int cardType : getSettingsCards()) {
setupController(cardType);
}
}
@@ -140,6 +138,15 @@
}
@VisibleForTesting
+ int[] getSettingsCards() {
+ if (!FeatureFlagUtils.isEnabled(mContext, FeatureFlags.CONDITIONAL_CARDS)) {
+ return new int[]{ContextualCard.CardType.LEGACY_SUGGESTION};
+ }
+ return new int[]
+ {ContextualCard.CardType.CONDITIONAL, ContextualCard.CardType.LEGACY_SUGGESTION};
+ }
+
+ @VisibleForTesting
void setupController(@ContextualCard.CardType int cardType) {
final ContextualCardController controller = mControllerRendererPool.getController(mContext,
cardType);
diff --git a/tests/robotests/src/com/android/settings/homepage/contextualcards/ContextualCardManagerTest.java b/tests/robotests/src/com/android/settings/homepage/contextualcards/ContextualCardManagerTest.java
index 895492e..af37797 100644
--- a/tests/robotests/src/com/android/settings/homepage/contextualcards/ContextualCardManagerTest.java
+++ b/tests/robotests/src/com/android/settings/homepage/contextualcards/ContextualCardManagerTest.java
@@ -39,7 +39,9 @@
import android.os.Bundle;
import android.provider.Settings;
import android.util.ArrayMap;
+import android.util.FeatureFlagUtils;
+import com.android.settings.core.FeatureFlags;
import com.android.settings.homepage.contextualcards.conditional.ConditionContextualCardController;
import com.android.settings.homepage.contextualcards.conditional.ConditionFooterContextualCard;
import com.android.settings.homepage.contextualcards.conditional.ConditionHeaderContextualCard;
@@ -83,6 +85,7 @@
public void setUp() {
MockitoAnnotations.initMocks(this);
mContext = RuntimeEnvironment.application;
+ FeatureFlagUtils.setEnabled(mContext, FeatureFlags.CONDITIONAL_CARDS, true);
mManager = new ContextualCardManager(mContext, mLifecycle, null /* bundle */);
}
@@ -125,6 +128,27 @@
}
@Test
+ public void getSettingsCards_conditionalsEnabled_shouldContainLegacyAndConditionals() {
+ FeatureFlagUtils.setEnabled(mContext, FeatureFlags.CONDITIONAL_CARDS, true);
+ final int[] expected = {ContextualCard.CardType.CONDITIONAL,
+ ContextualCard.CardType.LEGACY_SUGGESTION};
+
+ final int[] actual = mManager.getSettingsCards();
+
+ assertThat(actual).isEqualTo(expected);
+ }
+
+ @Test
+ public void getSettingsCards_conditionalsDisabled_shouldContainLegacy() {
+ FeatureFlagUtils.setEnabled(mContext, FeatureFlags.CONDITIONAL_CARDS, false);
+ final int[] expected = {ContextualCard.CardType.LEGACY_SUGGESTION};
+
+ final int[] actual = mManager.getSettingsCards();
+
+ assertThat(actual).isEqualTo(expected);
+ }
+
+ @Test
public void setupController_notLifecycleObserverInstance_shouldNotAttachToLifecycle() {
// 3 invocations in constructor(ContextualCardManager, Conditional and LegacySuggestion)
verify(mLifecycle, times(3)).addObserver(any(LifecycleObserver.class));