Merge "Only show Condtionals when the feature flag is on."

This commit is contained in:
TreeHugger Robot
2019-12-16 10:36:49 +00:00
committed by Android (Google) Code Review
2 changed files with 36 additions and 5 deletions

View File

@@ -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<LifecycleObserver> 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,

View File

@@ -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)