diff --git a/src/com/android/settings/homepage/contextualcards/ContextualCardManager.java b/src/com/android/settings/homepage/contextualcards/ContextualCardManager.java index 60a63ecb5dc..d02f1037ace 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.os.Bundle; 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.app.LoaderManager; 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 @@ public class ContextualCardManager implements ContextualCardLoader.CardContentLo 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 mLifecycleObservers; @@ -114,7 +112,7 @@ public class ContextualCardManager implements ContextualCardLoader.CardContentLo 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); } } @@ -139,6 +137,15 @@ public class ContextualCardManager implements ContextualCardLoader.CardContentLo } } + @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, 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 895492e43d3..af37797bcc2 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.net.Uri; 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 class ContextualCardManagerTest { public void setUp() { MockitoAnnotations.initMocks(this); mContext = RuntimeEnvironment.application; + FeatureFlagUtils.setEnabled(mContext, FeatureFlags.CONDITIONAL_CARDS, true); mManager = new ContextualCardManager(mContext, mLifecycle, null /* bundle */); } @@ -124,6 +127,27 @@ public class ContextualCardManagerTest { assertThat(actual).containsExactlyElementsIn(expected); } + @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)