diff --git a/src/com/android/settings/homepage/contextualcards/ContextualCard.java b/src/com/android/settings/homepage/contextualcards/ContextualCard.java index 4673ad15eef..7b8a0c395fe 100644 --- a/src/com/android/settings/homepage/contextualcards/ContextualCard.java +++ b/src/com/android/settings/homepage/contextualcards/ContextualCard.java @@ -22,6 +22,10 @@ import android.graphics.drawable.Drawable; import android.net.Uri; import android.text.TextUtils; +import androidx.annotation.LayoutRes; + +import com.android.settings.homepage.contextualcards.slices.SliceContextualCardRenderer; + import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; @@ -63,9 +67,10 @@ public class ContextualCard { private final int mIconResId; private final int mCardAction; private final long mExpireTimeMS; - private final boolean mIsHalfWidth; private final boolean mIsLargeCard; private final Drawable mIconDrawable; + @LayoutRes + private final int mViewType; public String getName() { return mName; @@ -139,10 +144,6 @@ public class ContextualCard { return mIconDrawable; } - public boolean isHalfWidth() { - return mIsHalfWidth; - } - public boolean isLargeCard() { return mIsLargeCard; } @@ -151,6 +152,10 @@ public class ContextualCard { return TextUtils.isEmpty(mSliceUri); } + public int getViewType() { + return mViewType; + } + public Builder mutate() { return mBuilder; } @@ -174,8 +179,8 @@ public class ContextualCard { mCardAction = builder.mCardAction; mExpireTimeMS = builder.mExpireTimeMS; mIconDrawable = builder.mIconDrawable; - mIsHalfWidth = builder.mIsHalfWidth; mIsLargeCard = builder.mIsLargeCard; + mViewType = builder.mViewType; } ContextualCard(Cursor c) { @@ -215,13 +220,12 @@ public class ContextualCard { mBuilder.setCardAction(mCardAction); mExpireTimeMS = c.getLong(c.getColumnIndex(CardDatabaseHelper.CardColumns.EXPIRE_TIME_MS)); mBuilder.setExpireTimeMS(mExpireTimeMS); - mIsHalfWidth = (c.getInt( - c.getColumnIndex(CardDatabaseHelper.CardColumns.SUPPORT_HALF_WIDTH)) == 1); - mBuilder.setIsHalfWidth(mIsHalfWidth); mIsLargeCard = false; mBuilder.setIsLargeCard(mIsLargeCard); mIconDrawable = null; mBuilder.setIconDrawable(mIconDrawable); + mViewType = getViewTypeByCardType(mCardType); + mBuilder.setViewType(mViewType); } @Override @@ -245,6 +249,13 @@ public class ContextualCard { return TextUtils.equals(mName, that.mName); } + private int getViewTypeByCardType(int cardType) { + if (cardType == CardType.SLICE) { + return SliceContextualCardRenderer.VIEW_TYPE_FULL_WIDTH; + } + return 0; + } + public static class Builder { private String mName; private int mCardType; @@ -263,8 +274,9 @@ public class ContextualCard { private int mCardAction; private long mExpireTimeMS; private Drawable mIconDrawable; - private boolean mIsHalfWidth; private boolean mIsLargeCard; + @LayoutRes + private int mViewType; public Builder setName(String name) { mName = name; @@ -351,13 +363,13 @@ public class ContextualCard { return this; } - public Builder setIsHalfWidth(boolean isHalfWidth) { - mIsHalfWidth = isHalfWidth; + public Builder setIsLargeCard(boolean isLargeCard) { + mIsLargeCard = isLargeCard; return this; } - public Builder setIsLargeCard(boolean isLargeCard) { - mIsLargeCard = isLargeCard; + public Builder setViewType(@LayoutRes int viewType) { + mViewType = viewType; return this; } diff --git a/src/com/android/settings/homepage/contextualcards/ContextualCardLookupTable.java b/src/com/android/settings/homepage/contextualcards/ContextualCardLookupTable.java index 90974f651bb..1f2e89ba60b 100644 --- a/src/com/android/settings/homepage/contextualcards/ContextualCardLookupTable.java +++ b/src/com/android/settings/homepage/contextualcards/ContextualCardLookupTable.java @@ -24,14 +24,10 @@ import androidx.annotation.VisibleForTesting; import com.android.settings.homepage.contextualcards.ContextualCard.CardType; import com.android.settings.homepage.contextualcards.conditional.ConditionContextualCardController; import com.android.settings.homepage.contextualcards.conditional.ConditionContextualCardRenderer; -import com.android.settings.homepage.contextualcards.conditional - .ConditionHeaderContextualCardRenderer; -import com.android.settings.homepage.contextualcards.legacysuggestion - .LegacySuggestionContextualCardController; -import com.android.settings.homepage.contextualcards.legacysuggestion - .LegacySuggestionContextualCardRenderer; -import com.android.settings.homepage.contextualcards.conditional - .ConditionFooterContextualCardRenderer; +import com.android.settings.homepage.contextualcards.conditional.ConditionFooterContextualCardRenderer; +import com.android.settings.homepage.contextualcards.conditional.ConditionHeaderContextualCardRenderer; +import com.android.settings.homepage.contextualcards.legacysuggestion.LegacySuggestionContextualCardController; +import com.android.settings.homepage.contextualcards.legacysuggestion.LegacySuggestionContextualCardRenderer; import com.android.settings.homepage.contextualcards.slices.SliceContextualCardController; import com.android.settings.homepage.contextualcards.slices.SliceContextualCardRenderer; @@ -72,11 +68,11 @@ public class ContextualCardLookupTable { static final Set LOOKUP_TABLE = new TreeSet() {{ add(new ControllerRendererMapping(CardType.CONDITIONAL, - ConditionContextualCardRenderer.HALF_WIDTH_VIEW_TYPE, + ConditionContextualCardRenderer.VIEW_TYPE_HALF_WIDTH, ConditionContextualCardController.class, ConditionContextualCardRenderer.class)); add(new ControllerRendererMapping(CardType.CONDITIONAL, - ConditionContextualCardRenderer.FULL_WIDTH_VIEW_TYPE, + ConditionContextualCardRenderer.VIEW_TYPE_FULL_WIDTH, ConditionContextualCardController.class, ConditionContextualCardRenderer.class)); add(new ControllerRendererMapping(CardType.LEGACY_SUGGESTION, @@ -111,15 +107,6 @@ public class ContextualCardLookupTable { return null; } - public static Class getCardRendererClassByCardType( - @CardType int cardType) { - return LOOKUP_TABLE.stream() - .filter(m -> m.mCardType == cardType) - .findFirst() - .map(mapping -> mapping.mRendererClass) - .orElse(null); - } - public static Class getCardRendererClassByViewType( int viewType) throws IllegalStateException { List validMappings = LOOKUP_TABLE.stream() diff --git a/src/com/android/settings/homepage/contextualcards/ContextualCardManager.java b/src/com/android/settings/homepage/contextualcards/ContextualCardManager.java index 12088f8a106..7a2c2e997ba 100644 --- a/src/com/android/settings/homepage/contextualcards/ContextualCardManager.java +++ b/src/com/android/settings/homepage/contextualcards/ContextualCardManager.java @@ -33,6 +33,7 @@ import androidx.annotation.VisibleForTesting; import androidx.loader.app.LoaderManager; import androidx.loader.content.Loader; +import com.android.settings.homepage.contextualcards.slices.SliceContextualCardRenderer; import com.android.settings.overlay.FeatureFactory; import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.core.lifecycle.LifecycleObserver; @@ -236,8 +237,10 @@ public class ContextualCardManager implements ContextualCardLoader.CardContentLo final ContextualCard current = result.get(index); if (current.getCategory() == SUGGESTION_VALUE && previous.getCategory() == SUGGESTION_VALUE) { - result.set(index - 1, previous.mutate().setIsHalfWidth(true).build()); - result.set(index, current.mutate().setIsHalfWidth(true).build()); + result.set(index - 1, previous.mutate().setViewType( + SliceContextualCardRenderer.VIEW_TYPE_HALF_WIDTH).build()); + result.set(index, current.mutate().setViewType( + SliceContextualCardRenderer.VIEW_TYPE_HALF_WIDTH).build()); index++; } } diff --git a/src/com/android/settings/homepage/contextualcards/ContextualCardRenderer.java b/src/com/android/settings/homepage/contextualcards/ContextualCardRenderer.java index 283a079c94a..fc1bda2e9bd 100644 --- a/src/com/android/settings/homepage/contextualcards/ContextualCardRenderer.java +++ b/src/com/android/settings/homepage/contextualcards/ContextualCardRenderer.java @@ -26,18 +26,12 @@ import androidx.recyclerview.widget.RecyclerView; */ public interface ContextualCardRenderer { - /** - * The layout type of the renderer. - */ - @LayoutRes - int getViewType(boolean isHalfWidth); - /** * When {@link ContextualCardsAdapter} calls {@link ContextualCardsAdapter#onCreateViewHolder}, * this method will be called to retrieve the corresponding * {@link androidx.recyclerview.widget.RecyclerView.ViewHolder}. */ - RecyclerView.ViewHolder createViewHolder(View view); + RecyclerView.ViewHolder createViewHolder(View view, @LayoutRes int viewType); /** * When {@link ContextualCardsAdapter} calls {@link ContextualCardsAdapter#onBindViewHolder}, diff --git a/src/com/android/settings/homepage/contextualcards/ContextualCardsAdapter.java b/src/com/android/settings/homepage/contextualcards/ContextualCardsAdapter.java index 13b509dce7e..241834ddd13 100644 --- a/src/com/android/settings/homepage/contextualcards/ContextualCardsAdapter.java +++ b/src/com/android/settings/homepage/contextualcards/ContextualCardsAdapter.java @@ -21,11 +21,15 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import androidx.annotation.LayoutRes; import androidx.lifecycle.LifecycleOwner; import androidx.recyclerview.widget.DiffUtil; import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.android.settings.homepage.contextualcards.conditional.ConditionContextualCardRenderer; +import com.android.settings.homepage.contextualcards.slices.SliceContextualCardRenderer; + import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -62,24 +66,22 @@ public class ContextualCardsAdapter extends RecyclerView.Adapter clz = - ContextualCardLookupTable.getCardRendererClassByCardType(cardType); - return getRenderer(context, lifecycleOwner, clz); - } - private ContextualCardRenderer getRenderer(Context context, LifecycleOwner lifecycleOwner, @NonNull Class clz) { for (ContextualCardRenderer renderer : mRenderers) { diff --git a/src/com/android/settings/homepage/contextualcards/conditional/AirplaneModeConditionController.java b/src/com/android/settings/homepage/contextualcards/conditional/AirplaneModeConditionController.java index f33633e7cde..a4a5a7a0f07 100644 --- a/src/com/android/settings/homepage/contextualcards/conditional/AirplaneModeConditionController.java +++ b/src/com/android/settings/homepage/contextualcards/conditional/AirplaneModeConditionController.java @@ -79,7 +79,7 @@ public class AirplaneModeConditionController implements ConditionalCardControlle .setTitleText(mAppContext.getText(R.string.condition_airplane_title).toString()) .setSummaryText(mAppContext.getText(R.string.condition_airplane_summary).toString()) .setIconDrawable(mAppContext.getDrawable(R.drawable.ic_airplanemode_active)) - .setIsHalfWidth(true) + .setViewType(ConditionContextualCardRenderer.VIEW_TYPE_HALF_WIDTH) .build(); } diff --git a/src/com/android/settings/homepage/contextualcards/conditional/BackgroundDataConditionController.java b/src/com/android/settings/homepage/contextualcards/conditional/BackgroundDataConditionController.java index 4e40556e773..550dfc02df3 100644 --- a/src/com/android/settings/homepage/contextualcards/conditional/BackgroundDataConditionController.java +++ b/src/com/android/settings/homepage/contextualcards/conditional/BackgroundDataConditionController.java @@ -73,7 +73,7 @@ public class BackgroundDataConditionController implements ConditionalCardControl .setTitleText(mAppContext.getText(R.string.condition_bg_data_title).toString()) .setSummaryText(mAppContext.getText(R.string.condition_bg_data_summary).toString()) .setIconDrawable(mAppContext.getDrawable(R.drawable.ic_data_saver)) - .setIsHalfWidth(true) + .setViewType(ConditionContextualCardRenderer.VIEW_TYPE_HALF_WIDTH) .build(); } diff --git a/src/com/android/settings/homepage/contextualcards/conditional/BatterySaverConditionController.java b/src/com/android/settings/homepage/contextualcards/conditional/BatterySaverConditionController.java index bce7c5dd981..73aa5886534 100644 --- a/src/com/android/settings/homepage/contextualcards/conditional/BatterySaverConditionController.java +++ b/src/com/android/settings/homepage/contextualcards/conditional/BatterySaverConditionController.java @@ -82,7 +82,7 @@ public class BatterySaverConditionController implements ConditionalCardControlle .setTitleText(mAppContext.getText(R.string.condition_battery_title).toString()) .setSummaryText(mAppContext.getText(R.string.condition_battery_summary).toString()) .setIconDrawable(mAppContext.getDrawable(R.drawable.ic_battery_saver_accent_24dp)) - .setIsHalfWidth(true) + .setViewType(ConditionContextualCardRenderer.VIEW_TYPE_HALF_WIDTH) .build(); } diff --git a/src/com/android/settings/homepage/contextualcards/conditional/CellularDataConditionController.java b/src/com/android/settings/homepage/contextualcards/conditional/CellularDataConditionController.java index 05199ba8a7d..f512d92f9c5 100644 --- a/src/com/android/settings/homepage/contextualcards/conditional/CellularDataConditionController.java +++ b/src/com/android/settings/homepage/contextualcards/conditional/CellularDataConditionController.java @@ -89,7 +89,7 @@ public class CellularDataConditionController implements ConditionalCardControlle .setTitleText(mAppContext.getText(R.string.condition_cellular_title).toString()) .setSummaryText(mAppContext.getText(R.string.condition_cellular_summary).toString()) .setIconDrawable(mAppContext.getDrawable(R.drawable.ic_cellular_off)) - .setIsHalfWidth(true) + .setViewType(ConditionContextualCardRenderer.VIEW_TYPE_HALF_WIDTH) .build(); } diff --git a/src/com/android/settings/homepage/contextualcards/conditional/ConditionContextualCardController.java b/src/com/android/settings/homepage/contextualcards/conditional/ConditionContextualCardController.java index b477d5229cd..25d1cdad172 100644 --- a/src/com/android/settings/homepage/contextualcards/conditional/ConditionContextualCardController.java +++ b/src/com/android/settings/homepage/contextualcards/conditional/ConditionContextualCardController.java @@ -168,7 +168,8 @@ public class ConditionContextualCardController implements ContextualCardControll final int lastIndex = expandedCards.size() - 1; final ConditionalContextualCard card = (ConditionalContextualCard) expandedCards.get(lastIndex); - expandedCards.set(lastIndex, card.mutate().setIsHalfWidth(false).build()); + expandedCards.set(lastIndex, card.mutate().setViewType( + ConditionContextualCardRenderer.VIEW_TYPE_FULL_WIDTH).build()); } return expandedCards; } @@ -180,6 +181,7 @@ public class ConditionContextualCardController implements ContextualCardControll footerCards.add(new ConditionFooterContextualCard.Builder() .setName(CONDITION_FOOTER) .setRankingScore(UNSUPPORTED_RANKING) + .setViewType(ConditionFooterContextualCardRenderer.VIEW_TYPE) .build()); return footerCards; } @@ -194,6 +196,7 @@ public class ConditionContextualCardController implements ContextualCardControll .setConditionalCards(conditionCards) .setName(CONDITION_HEADER) .setRankingScore(UNSUPPORTED_RANKING) + .setViewType(ConditionHeaderContextualCardRenderer.VIEW_TYPE) .build()); return headerCards; } diff --git a/src/com/android/settings/homepage/contextualcards/conditional/ConditionContextualCardRenderer.java b/src/com/android/settings/homepage/contextualcards/conditional/ConditionContextualCardRenderer.java index 34f442c500e..fc936bca352 100644 --- a/src/com/android/settings/homepage/contextualcards/conditional/ConditionContextualCardRenderer.java +++ b/src/com/android/settings/homepage/contextualcards/conditional/ConditionContextualCardRenderer.java @@ -39,9 +39,9 @@ import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; */ public class ConditionContextualCardRenderer implements ContextualCardRenderer { @LayoutRes - public static final int HALF_WIDTH_VIEW_TYPE = R.layout.homepage_condition_half_tile; + public static final int VIEW_TYPE_HALF_WIDTH = R.layout.homepage_condition_half_tile; @LayoutRes - public static final int FULL_WIDTH_VIEW_TYPE = R.layout.homepage_condition_full_tile; + public static final int VIEW_TYPE_FULL_WIDTH = R.layout.homepage_condition_full_tile; private final Context mContext; private final ControllerRendererPool mControllerRendererPool; @@ -53,16 +53,7 @@ public class ConditionContextualCardRenderer implements ContextualCardRenderer { } @Override - public int getViewType(boolean isHalfWidth) { - if (isHalfWidth) { - return HALF_WIDTH_VIEW_TYPE; - } else { - return FULL_WIDTH_VIEW_TYPE; - } - } - - @Override - public RecyclerView.ViewHolder createViewHolder(View view) { + public RecyclerView.ViewHolder createViewHolder(View view, @LayoutRes int viewType) { return new ConditionalCardHolder(view); } diff --git a/src/com/android/settings/homepage/contextualcards/conditional/ConditionFooterContextualCardRenderer.java b/src/com/android/settings/homepage/contextualcards/conditional/ConditionFooterContextualCardRenderer.java index 2465ca4ab75..53de5410188 100644 --- a/src/com/android/settings/homepage/contextualcards/conditional/ConditionFooterContextualCardRenderer.java +++ b/src/com/android/settings/homepage/contextualcards/conditional/ConditionFooterContextualCardRenderer.java @@ -20,6 +20,7 @@ import android.app.settings.SettingsEnums; import android.content.Context; import android.view.View; +import androidx.annotation.LayoutRes; import androidx.recyclerview.widget.RecyclerView; import com.android.internal.logging.nano.MetricsProto; @@ -44,12 +45,7 @@ public class ConditionFooterContextualCardRenderer implements ContextualCardRend } @Override - public int getViewType(boolean isHalfWidth) { - return VIEW_TYPE; - } - - @Override - public RecyclerView.ViewHolder createViewHolder(View view) { + public RecyclerView.ViewHolder createViewHolder(View view, @LayoutRes int viewType) { return new ConditionFooterCardHolder(view); } diff --git a/src/com/android/settings/homepage/contextualcards/conditional/ConditionHeaderContextualCardRenderer.java b/src/com/android/settings/homepage/contextualcards/conditional/ConditionHeaderContextualCardRenderer.java index a98c82d4178..d7fbee6c4a1 100644 --- a/src/com/android/settings/homepage/contextualcards/conditional/ConditionHeaderContextualCardRenderer.java +++ b/src/com/android/settings/homepage/contextualcards/conditional/ConditionHeaderContextualCardRenderer.java @@ -23,6 +23,7 @@ import android.view.View; import android.widget.ImageView; import android.widget.LinearLayout; +import androidx.annotation.LayoutRes; import androidx.recyclerview.widget.RecyclerView; import com.android.internal.logging.nano.MetricsProto; @@ -47,12 +48,7 @@ public class ConditionHeaderContextualCardRenderer implements ContextualCardRend } @Override - public int getViewType(boolean isHalfWidth) { - return VIEW_TYPE; - } - - @Override - public RecyclerView.ViewHolder createViewHolder(View view) { + public RecyclerView.ViewHolder createViewHolder(View view, @LayoutRes int viewType) { return new ConditionHeaderCardHolder(view); } diff --git a/src/com/android/settings/homepage/contextualcards/conditional/DndConditionCardController.java b/src/com/android/settings/homepage/contextualcards/conditional/DndConditionCardController.java index cf91157b8fe..488280c56e2 100644 --- a/src/com/android/settings/homepage/contextualcards/conditional/DndConditionCardController.java +++ b/src/com/android/settings/homepage/contextualcards/conditional/DndConditionCardController.java @@ -22,7 +22,6 @@ import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.provider.Settings; -import android.service.notification.ZenModeConfig; import androidx.annotation.VisibleForTesting; @@ -100,7 +99,7 @@ public class DndConditionCardController implements ConditionalCardController { .setTitleText(mAppContext.getText(R.string.condition_zen_title).toString()) .setSummaryText(mAppContext.getText(R.string.condition_zen_summary).toString()) .setIconDrawable(mAppContext.getDrawable(R.drawable.ic_do_not_disturb_on_24dp)) - .setIsHalfWidth(true) + .setViewType(ConditionContextualCardRenderer.VIEW_TYPE_HALF_WIDTH) .build(); } diff --git a/src/com/android/settings/homepage/contextualcards/conditional/HotspotConditionController.java b/src/com/android/settings/homepage/contextualcards/conditional/HotspotConditionController.java index 862f8283397..1305c2651c9 100644 --- a/src/com/android/settings/homepage/contextualcards/conditional/HotspotConditionController.java +++ b/src/com/android/settings/homepage/contextualcards/conditional/HotspotConditionController.java @@ -99,7 +99,7 @@ public class HotspotConditionController implements ConditionalCardController { .setTitleText(mAppContext.getText(R.string.condition_hotspot_title).toString()) .setSummaryText(getSummary().toString()) .setIconDrawable(mAppContext.getDrawable(R.drawable.ic_hotspot)) - .setIsHalfWidth(true) + .setViewType(ConditionContextualCardRenderer.VIEW_TYPE_HALF_WIDTH) .build(); } diff --git a/src/com/android/settings/homepage/contextualcards/conditional/NightDisplayConditionController.java b/src/com/android/settings/homepage/contextualcards/conditional/NightDisplayConditionController.java index 249e4a056b1..09d3ba7fd60 100644 --- a/src/com/android/settings/homepage/contextualcards/conditional/NightDisplayConditionController.java +++ b/src/com/android/settings/homepage/contextualcards/conditional/NightDisplayConditionController.java @@ -78,7 +78,7 @@ public class NightDisplayConditionController implements ConditionalCardControlle .setSummaryText( mAppContext.getText(R.string.condition_night_display_summary).toString()) .setIconDrawable(mAppContext.getDrawable(R.drawable.ic_settings_night_display)) - .setIsHalfWidth(true) + .setViewType(ConditionContextualCardRenderer.VIEW_TYPE_HALF_WIDTH) .build(); } diff --git a/src/com/android/settings/homepage/contextualcards/conditional/RingerMutedConditionController.java b/src/com/android/settings/homepage/contextualcards/conditional/RingerMutedConditionController.java index 6dab6b83e61..38590f6fd8e 100644 --- a/src/com/android/settings/homepage/contextualcards/conditional/RingerMutedConditionController.java +++ b/src/com/android/settings/homepage/contextualcards/conditional/RingerMutedConditionController.java @@ -58,7 +58,7 @@ public class RingerMutedConditionController extends AbnormalRingerConditionContr .setSummaryText( mAppContext.getText(R.string.condition_device_muted_summary).toString()) .setIconDrawable(mAppContext.getDrawable(R.drawable.ic_notifications_off_24dp)) - .setIsHalfWidth(true) + .setViewType(ConditionContextualCardRenderer.VIEW_TYPE_HALF_WIDTH) .build(); } } diff --git a/src/com/android/settings/homepage/contextualcards/conditional/RingerVibrateConditionController.java b/src/com/android/settings/homepage/contextualcards/conditional/RingerVibrateConditionController.java index d8084b58103..eee364f3e91 100644 --- a/src/com/android/settings/homepage/contextualcards/conditional/RingerVibrateConditionController.java +++ b/src/com/android/settings/homepage/contextualcards/conditional/RingerVibrateConditionController.java @@ -60,7 +60,7 @@ public class RingerVibrateConditionController extends AbnormalRingerConditionCon .setSummaryText( mAppContext.getText(R.string.condition_device_vibrate_summary).toString()) .setIconDrawable(mAppContext.getDrawable(R.drawable.ic_volume_ringer_vibrate)) - .setIsHalfWidth(true) + .setViewType(ConditionContextualCardRenderer.VIEW_TYPE_HALF_WIDTH) .build(); } } diff --git a/src/com/android/settings/homepage/contextualcards/conditional/WorkModeConditionController.java b/src/com/android/settings/homepage/contextualcards/conditional/WorkModeConditionController.java index 44b21bf2fa4..26616f07220 100644 --- a/src/com/android/settings/homepage/contextualcards/conditional/WorkModeConditionController.java +++ b/src/com/android/settings/homepage/contextualcards/conditional/WorkModeConditionController.java @@ -93,7 +93,7 @@ public class WorkModeConditionController implements ConditionalCardController { .setTitleText(mAppContext.getText(R.string.condition_work_title).toString()) .setSummaryText(mAppContext.getText(R.string.condition_work_summary).toString()) .setIconDrawable(mAppContext.getDrawable(R.drawable.ic_signal_workmode_enable)) - .setIsHalfWidth(true) + .setViewType(ConditionContextualCardRenderer.VIEW_TYPE_HALF_WIDTH) .build(); } diff --git a/src/com/android/settings/homepage/contextualcards/legacysuggestion/LegacySuggestionContextualCardController.java b/src/com/android/settings/homepage/contextualcards/legacysuggestion/LegacySuggestionContextualCardController.java index 7fa004a3847..bbcebbe6a2e 100644 --- a/src/com/android/settings/homepage/contextualcards/legacysuggestion/LegacySuggestionContextualCardController.java +++ b/src/com/android/settings/homepage/contextualcards/legacysuggestion/LegacySuggestionContextualCardController.java @@ -144,7 +144,8 @@ public class LegacySuggestionContextualCardController implements ContextualCardC .setPendingIntent(suggestion.getPendingIntent()) .setName(suggestion.getId()) .setTitleText(suggestion.getTitle().toString()) - .setSummaryText(suggestion.getSummary().toString()); + .setSummaryText(suggestion.getSummary().toString()) + .setViewType(LegacySuggestionContextualCardRenderer.VIEW_TYPE); cards.add(cardBuilder.build()); } diff --git a/src/com/android/settings/homepage/contextualcards/legacysuggestion/LegacySuggestionContextualCardRenderer.java b/src/com/android/settings/homepage/contextualcards/legacysuggestion/LegacySuggestionContextualCardRenderer.java index 3ce1883f096..20449f0f146 100644 --- a/src/com/android/settings/homepage/contextualcards/legacysuggestion/LegacySuggestionContextualCardRenderer.java +++ b/src/com/android/settings/homepage/contextualcards/legacysuggestion/LegacySuggestionContextualCardRenderer.java @@ -44,12 +44,7 @@ public class LegacySuggestionContextualCardRenderer implements ContextualCardRen } @Override - public int getViewType(boolean isHalfWidth) { - return VIEW_TYPE; - } - - @Override - public RecyclerView.ViewHolder createViewHolder(View view) { + public RecyclerView.ViewHolder createViewHolder(View view, @LayoutRes int viewType) { return new LegacySuggestionViewHolder(view); } diff --git a/src/com/android/settings/homepage/contextualcards/slices/SliceContextualCardRenderer.java b/src/com/android/settings/homepage/contextualcards/slices/SliceContextualCardRenderer.java index 5a43f66241b..66e04656768 100644 --- a/src/com/android/settings/homepage/contextualcards/slices/SliceContextualCardRenderer.java +++ b/src/com/android/settings/homepage/contextualcards/slices/SliceContextualCardRenderer.java @@ -26,6 +26,7 @@ import android.view.View; import android.widget.Button; import android.widget.ViewFlipper; +import androidx.annotation.LayoutRes; import androidx.annotation.VisibleForTesting; import androidx.lifecycle.Lifecycle; import androidx.lifecycle.LifecycleObserver; @@ -66,9 +67,6 @@ public class SliceContextualCardRenderer implements ContextualCardRenderer, Life private final SliceFullCardRendererHelper mFullCardHelper; private final SliceHalfCardRendererHelper mHalfCardHelper; - //TODO(b/121303357): Remove isHalfWidth field from SliceContextualCardRenderer class. - private boolean mIsHalfWidth; - public SliceContextualCardRenderer(Context context, LifecycleOwner lifecycleOwner, ControllerRendererPool controllerRendererPool) { mContext = context; @@ -83,17 +81,13 @@ public class SliceContextualCardRenderer implements ContextualCardRenderer, Life } @Override - public int getViewType(boolean isHalfWidth) { - mIsHalfWidth = isHalfWidth; - return isHalfWidth? VIEW_TYPE_HALF_WIDTH : VIEW_TYPE_FULL_WIDTH; - } - - @Override - public RecyclerView.ViewHolder createViewHolder(View view) { - if (mIsHalfWidth) { - return mHalfCardHelper.createViewHolder(view); + public RecyclerView.ViewHolder createViewHolder(View view, @LayoutRes int viewType) { + switch (viewType) { + case VIEW_TYPE_HALF_WIDTH: + return mHalfCardHelper.createViewHolder(view); + default: + return mFullCardHelper.createViewHolder(view); } - return mFullCardHelper.createViewHolder(view); } @Override diff --git a/tests/robotests/src/com/android/settings/homepage/contextualcards/ContextualCardLookupTableTest.java b/tests/robotests/src/com/android/settings/homepage/contextualcards/ContextualCardLookupTableTest.java index eb558d817eb..36f9c96566b 100644 --- a/tests/robotests/src/com/android/settings/homepage/contextualcards/ContextualCardLookupTableTest.java +++ b/tests/robotests/src/com/android/settings/homepage/contextualcards/ContextualCardLookupTableTest.java @@ -18,17 +18,16 @@ package com.android.settings.homepage.contextualcards; import static com.google.common.truth.Truth.assertThat; -import com.android.settings.homepage.contextualcards.ContextualCardLookupTable - .ControllerRendererMapping; +import com.android.settings.homepage.contextualcards.ContextualCardLookupTable.ControllerRendererMapping; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; +import org.robolectric.RobolectricTestRunner; import java.util.ArrayList; import java.util.List; -import org.robolectric.RobolectricTestRunner; @RunWith(RobolectricTestRunner.class) public class ContextualCardLookupTableTest { @@ -98,18 +97,4 @@ public class ContextualCardLookupTableTest { ContextualCardLookupTable.getCardRendererClassByViewType(UNSUPPORTED_VIEW_TYPE); } - - @Test - public void getRendererClassByCardType_hasSupportedCardType_shouldGetCorrespondingRenderer() { - for (ControllerRendererMapping mapping : ContextualCardLookupTable.LOOKUP_TABLE) { - assertThat(ContextualCardLookupTable.getCardRendererClassByCardType(mapping.mCardType)) - .isEqualTo(mapping.mRendererClass); - } - } - - @Test - public void getCardRendererClassByCardType_hasUnsupportedCardType_shouldAlwaysGetNull() { - assertThat(ContextualCardLookupTable.getCardRendererClassByCardType(UNSUPPORTED_CARD_TYPE)) - .isNull(); - } } 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 3fc8e060456..3e6ba6ca19c 100644 --- a/tests/robotests/src/com/android/settings/homepage/contextualcards/ContextualCardManagerTest.java +++ b/tests/robotests/src/com/android/settings/homepage/contextualcards/ContextualCardManagerTest.java @@ -16,6 +16,9 @@ package com.android.settings.homepage.contextualcards; +import static com.android.settings.homepage.contextualcards.slices.SliceContextualCardRenderer.VIEW_TYPE_FULL_WIDTH; +import static com.android.settings.homepage.contextualcards.slices.SliceContextualCardRenderer.VIEW_TYPE_HALF_WIDTH; + import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.anyMap; @@ -222,7 +225,7 @@ public class ContextualCardManagerTest { assertThat(result).hasSize(5); for (ContextualCard card : result) { - assertThat(card.isHalfWidth()).isFalse(); + assertThat(card.getViewType()).isEqualTo(VIEW_TYPE_FULL_WIDTH); } } @@ -242,7 +245,7 @@ public class ContextualCardManagerTest { assertThat(result).hasSize(5); for (ContextualCard card : result) { - assertThat(card.isHalfWidth()).isFalse(); + assertThat(card.getViewType()).isEqualTo(VIEW_TYPE_FULL_WIDTH); } } @@ -257,14 +260,16 @@ public class ContextualCardManagerTest { ); final List twoConsecutiveSuggestionCards = buildCategoriedCards( getContextualCardList(), categories); - final List expectedValues = Arrays.asList(false, false, true, true, false); + final List expectedValues = Arrays.asList(VIEW_TYPE_FULL_WIDTH, + VIEW_TYPE_FULL_WIDTH, VIEW_TYPE_HALF_WIDTH, VIEW_TYPE_HALF_WIDTH, + VIEW_TYPE_FULL_WIDTH); final List result = mManager.assignCardWidth( twoConsecutiveSuggestionCards); assertThat(result).hasSize(5); for (int i = 0; i < result.size(); i++) { - assertThat(result.get(i).isHalfWidth()).isEqualTo(expectedValues.get(i)); + assertThat(result.get(i).getViewType()).isEqualTo(expectedValues.get(i)); } } @@ -285,7 +290,7 @@ public class ContextualCardManagerTest { assertThat(result).hasSize(5); for (ContextualCard card : result) { - assertThat(card.isHalfWidth()).isFalse(); + assertThat(card.getViewType()).isEqualTo(VIEW_TYPE_FULL_WIDTH); } } @@ -300,14 +305,16 @@ public class ContextualCardManagerTest { ); final List threeConsecutiveSuggestionCards = buildCategoriedCards( getContextualCardList(), categories); - final List expectedValues = Arrays.asList(false, true, true, false, false); + final List expectedValues = Arrays.asList(VIEW_TYPE_FULL_WIDTH, + VIEW_TYPE_HALF_WIDTH, VIEW_TYPE_HALF_WIDTH, VIEW_TYPE_FULL_WIDTH, + VIEW_TYPE_FULL_WIDTH); final List result = mManager.assignCardWidth( threeConsecutiveSuggestionCards); assertThat(result).hasSize(5); for (int i = 0; i < result.size(); i++) { - assertThat(result.get(i).isHalfWidth()).isEqualTo(expectedValues.get(i)); + assertThat(result.get(i).getViewType()).isEqualTo(expectedValues.get(i)); } } @@ -322,14 +329,16 @@ public class ContextualCardManagerTest { ); final List fourConsecutiveSuggestionCards = buildCategoriedCards( getContextualCardList(), categories); - final List expectedValues = Arrays.asList(false, true, true, true, true); + final List expectedValues = Arrays.asList(VIEW_TYPE_FULL_WIDTH, + VIEW_TYPE_HALF_WIDTH, VIEW_TYPE_HALF_WIDTH, VIEW_TYPE_HALF_WIDTH, + VIEW_TYPE_HALF_WIDTH); final List result = mManager.assignCardWidth( fourConsecutiveSuggestionCards); assertThat(result).hasSize(5); for (int i = 0; i < result.size(); i++) { - assertThat(result.get(i).isHalfWidth()).isEqualTo(expectedValues.get(i)); + assertThat(result.get(i).getViewType()).isEqualTo(expectedValues.get(i)); } } @@ -338,6 +347,7 @@ public class ContextualCardManagerTest { .setName(TEST_SLICE_NAME) .setCardType(ContextualCard.CardType.SLICE) .setSliceUri(Uri.parse(sliceUri)) + .setViewType(VIEW_TYPE_FULL_WIDTH) .build(); } @@ -356,28 +366,33 @@ public class ContextualCardManagerTest { .setName("test_wifi") .setCardType(ContextualCard.CardType.SLICE) .setSliceUri(CustomSliceRegistry.CONTEXTUAL_WIFI_SLICE_URI) + .setViewType(VIEW_TYPE_FULL_WIDTH) .build()); cards.add(new ContextualCard.Builder() .setName("test_flashlight") .setCardType(ContextualCard.CardType.SLICE) .setSliceUri( Uri.parse("content://com.android.settings.test.slices/action/flashlight")) + .setViewType(VIEW_TYPE_FULL_WIDTH) .build()); cards.add(new ContextualCard.Builder() .setName("test_connected") .setCardType(ContextualCard.CardType.SLICE) .setSliceUri(CustomSliceRegistry.BLUETOOTH_DEVICES_SLICE_URI) + .setViewType(VIEW_TYPE_FULL_WIDTH) .build()); cards.add(new ContextualCard.Builder() .setName("test_gesture") .setCardType(ContextualCard.CardType.SLICE) .setSliceUri(Uri.parse( "content://com.android.settings.test.slices/action/gesture_pick_up")) + .setViewType(VIEW_TYPE_FULL_WIDTH) .build()); cards.add(new ContextualCard.Builder() .setName("test_battery") .setCardType(ContextualCard.CardType.SLICE) .setSliceUri(CustomSliceRegistry.BATTERY_INFO_SLICE_URI) + .setViewType(VIEW_TYPE_FULL_WIDTH) .build()); return cards; } diff --git a/tests/robotests/src/com/android/settings/homepage/contextualcards/ControllerRendererPoolTest.java b/tests/robotests/src/com/android/settings/homepage/contextualcards/ControllerRendererPoolTest.java index bf7c5e08e0c..0cb0598906c 100644 --- a/tests/robotests/src/com/android/settings/homepage/contextualcards/ControllerRendererPoolTest.java +++ b/tests/robotests/src/com/android/settings/homepage/contextualcards/ControllerRendererPoolTest.java @@ -105,33 +105,4 @@ public class ControllerRendererPoolTest { assertThat(renderer).isNull(); assertThat(mPool.getRenderers()).isEmpty(); } - - @Test - public void getRenderer_hasSupportedCardTypeAndWidth_shouldReturnCorrespondingRenderer() { - ContextualCardLookupTable.LOOKUP_TABLE.stream().forEach(mapping -> assertThat( - mPool.getRendererByCardType(mContext, mLifecycleOwner, - mapping.mCardType).getClass()).isEqualTo(mapping.mRendererClass)); - } - - @Test - public void getRenderer_hasSupportedCardTypeAndWidth_shouldHaveDistinctRenderersInPool() { - final long count = ContextualCardLookupTable.LOOKUP_TABLE.stream().map( - mapping -> mapping.mRendererClass).distinct().count(); - - ContextualCardLookupTable.LOOKUP_TABLE.stream().forEach( - mapping -> mPool.getRendererByCardType(mContext, mLifecycleOwner, - mapping.mCardType)); - - assertThat(mPool.getRenderers()).hasSize((int) count); - } - - @Test - public void getRenderer_hasUnsupportedCardType_shouldReturnNullAndPoolIsEmpty() { - final ContextualCardRenderer renderer = mPool.getRendererByCardType(mContext, - mLifecycleOwner, - UNSUPPORTED_CARD_TYPE); - - assertThat(renderer).isNull(); - assertThat(mPool.getRenderers()).isEmpty(); - } } diff --git a/tests/robotests/src/com/android/settings/homepage/contextualcards/conditional/ConditionContextualCardControllerTest.java b/tests/robotests/src/com/android/settings/homepage/contextualcards/conditional/ConditionContextualCardControllerTest.java index 4553f7ce146..06f9b987ce7 100644 --- a/tests/robotests/src/com/android/settings/homepage/contextualcards/conditional/ConditionContextualCardControllerTest.java +++ b/tests/robotests/src/com/android/settings/homepage/contextualcards/conditional/ConditionContextualCardControllerTest.java @@ -119,7 +119,8 @@ public class ConditionContextualCardControllerTest { assertThat(conditionalCards).hasSize(3); assertThat(conditionalCards.get(CardType.CONDITIONAL)).hasSize(1); - assertThat(conditionalCards.get(CardType.CONDITIONAL).get(0).isHalfWidth()).isFalse(); + assertThat(conditionalCards.get(CardType.CONDITIONAL).get(0).getViewType()).isEqualTo( + ConditionContextualCardRenderer.VIEW_TYPE_FULL_WIDTH); assertThat(conditionalCards.get(CardType.CONDITIONAL_HEADER)).isEmpty(); assertThat(conditionalCards.get(CardType.CONDITIONAL_FOOTER)).isNotEmpty(); } @@ -145,7 +146,8 @@ public class ConditionContextualCardControllerTest { assertThat(conditionalCards).hasSize(3); assertThat(conditionalCards.get(CardType.CONDITIONAL)).hasSize(2); for (ContextualCard card : conditionalCards.get(CardType.CONDITIONAL)) { - assertThat(card.isHalfWidth()).isTrue(); + assertThat(card.getViewType()).isEqualTo( + ConditionContextualCardRenderer.VIEW_TYPE_HALF_WIDTH); } assertThat(conditionalCards.get(CardType.CONDITIONAL_HEADER)).isEmpty(); assertThat(conditionalCards.get(CardType.CONDITIONAL_FOOTER)).isNotEmpty(); @@ -197,7 +199,7 @@ public class ConditionContextualCardControllerTest { .setName("test_name" + i) .setTitleText("test_title" + i) .setSummaryText("test_summary" + i) - .setIsHalfWidth(true) + .setViewType(ConditionContextualCardRenderer.VIEW_TYPE_HALF_WIDTH) .build()); } return conditionCards; diff --git a/tests/robotests/src/com/android/settings/homepage/contextualcards/conditional/ConditionContextualCardRendererTest.java b/tests/robotests/src/com/android/settings/homepage/contextualcards/conditional/ConditionContextualCardRendererTest.java index c9b62aeba66..f29386f4f08 100644 --- a/tests/robotests/src/com/android/settings/homepage/contextualcards/conditional/ConditionContextualCardRendererTest.java +++ b/tests/robotests/src/com/android/settings/homepage/contextualcards/conditional/ConditionContextualCardRendererTest.java @@ -65,36 +65,40 @@ public class ConditionContextualCardRendererTest { @Test public void bindView_shouldSetListener() { - final int viewType = mRenderer.getViewType(false /* isHalfWidth */); final RecyclerView recyclerView = new RecyclerView(mActivity); recyclerView.setLayoutManager(new LinearLayoutManager(mActivity)); - final View view = LayoutInflater.from(mActivity).inflate(viewType, recyclerView, false); - final RecyclerView.ViewHolder viewHolder = mRenderer.createViewHolder(view); - final View card = view.findViewById(R.id.content); + final ContextualCard card = buildConditionContextualCard(); + final View view = LayoutInflater.from(mActivity).inflate(card.getViewType(), recyclerView, + false); + final RecyclerView.ViewHolder viewHolder = mRenderer.createViewHolder(view, + card.getViewType()); + final View cardView = view.findViewById(R.id.content); when(mControllerRendererPool.getController(mActivity, ContextualCard.CardType.CONDITIONAL)).thenReturn(mController); - mRenderer.bindView(viewHolder, buildConditionContextualCard()); + mRenderer.bindView(viewHolder, card); - assertThat(card).isNotNull(); - assertThat(card.hasOnClickListeners()).isTrue(); + assertThat(cardView).isNotNull(); + assertThat(cardView.hasOnClickListeners()).isTrue(); } @Test public void viewClick_shouldInvokeControllerPrimaryClick() { - final int viewType = mRenderer.getViewType(false /* isHalfWidth */); final RecyclerView recyclerView = new RecyclerView(mActivity); recyclerView.setLayoutManager(new LinearLayoutManager(mActivity)); - final View view = LayoutInflater.from(mActivity).inflate(viewType, recyclerView, false); - final RecyclerView.ViewHolder viewHolder = mRenderer.createViewHolder(view); - final View card = view.findViewById(R.id.content); + final ContextualCard card = buildConditionContextualCard(); + final View view = LayoutInflater.from(mActivity).inflate(card.getViewType(), recyclerView, + false); + final RecyclerView.ViewHolder viewHolder = mRenderer.createViewHolder(view, + card.getViewType()); + final View cardView = view.findViewById(R.id.content); when(mControllerRendererPool.getController(mActivity, ContextualCard.CardType.CONDITIONAL)).thenReturn(mController); - mRenderer.bindView(viewHolder, buildConditionContextualCard()); + mRenderer.bindView(viewHolder, card); - assertThat(card).isNotNull(); - card.performClick(); + assertThat(cardView).isNotNull(); + cardView.performClick(); verify(mController).onPrimaryClick(any(ContextualCard.class)); } @@ -108,7 +112,7 @@ public class ConditionContextualCardRendererTest { .setTitleText("test_title") .setSummaryText("test_summary") .setIconDrawable(mActivity.getDrawable(R.drawable.ic_do_not_disturb_on_24dp)) - .setIsHalfWidth(true) + .setViewType(ConditionContextualCardRenderer.VIEW_TYPE_FULL_WIDTH) .build(); } } diff --git a/tests/robotests/src/com/android/settings/homepage/contextualcards/conditional/ConditionFooterContextualCardRendererTest.java b/tests/robotests/src/com/android/settings/homepage/contextualcards/conditional/ConditionFooterContextualCardRendererTest.java index fcb16f2cc13..3cb69494b04 100644 --- a/tests/robotests/src/com/android/settings/homepage/contextualcards/conditional/ConditionFooterContextualCardRendererTest.java +++ b/tests/robotests/src/com/android/settings/homepage/contextualcards/conditional/ConditionFooterContextualCardRendererTest.java @@ -59,15 +59,17 @@ public class ConditionFooterContextualCardRendererTest { @Test public void bindView_shouldSetClickListener() { - final int viewType = mRenderer.getViewType(false /* isHalfWidth */); final RecyclerView recyclerView = new RecyclerView(mContext); recyclerView.setLayoutManager(new LinearLayoutManager(mContext)); - final View view = LayoutInflater.from(mContext).inflate(viewType, recyclerView, false); - final RecyclerView.ViewHolder viewHolder = mRenderer.createViewHolder(view); + final ContextualCard card = generateConditionFooterContextualCard(); + final View view = LayoutInflater.from(mContext).inflate(card.getViewType(), recyclerView, + false); + final RecyclerView.ViewHolder viewHolder = mRenderer.createViewHolder(view, + card.getViewType()); when(mControllerRendererPool.getController(mContext, ContextualCard.CardType.CONDITIONAL_FOOTER)).thenReturn(mController); - mRenderer.bindView(viewHolder, generateConditionFooterContextualCard()); + mRenderer.bindView(viewHolder, card); assertThat(viewHolder.itemView).isNotNull(); assertThat(viewHolder.itemView.hasOnClickListeners()).isTrue(); @@ -75,15 +77,17 @@ public class ConditionFooterContextualCardRendererTest { @Test public void bindView_clickView_shouldSetTrueToIsConditionExpanded() { - final int viewType = mRenderer.getViewType(false /* isHalfWidth */); final RecyclerView recyclerView = new RecyclerView(mContext); recyclerView.setLayoutManager(new LinearLayoutManager(mContext)); - final View view = LayoutInflater.from(mContext).inflate(viewType, recyclerView, false); - final RecyclerView.ViewHolder viewHolder = mRenderer.createViewHolder(view); + final ContextualCard card = generateConditionFooterContextualCard(); + final View view = LayoutInflater.from(mContext).inflate(card.getViewType(), recyclerView, + false); + final RecyclerView.ViewHolder viewHolder = mRenderer.createViewHolder(view, + card.getViewType()); when(mControllerRendererPool.getController(mContext, ContextualCard.CardType.CONDITIONAL_FOOTER)).thenReturn(mController); - mRenderer.bindView(viewHolder, generateConditionFooterContextualCard()); + mRenderer.bindView(viewHolder, card); assertThat(viewHolder.itemView).isNotNull(); viewHolder.itemView.performClick(); @@ -96,6 +100,7 @@ public class ConditionFooterContextualCardRendererTest { return new ConditionFooterContextualCard.Builder() .setName("test_condition_footer") .setRankingScore(-9999.0) + .setViewType(ConditionFooterContextualCardRenderer.VIEW_TYPE) .build(); } } diff --git a/tests/robotests/src/com/android/settings/homepage/contextualcards/conditional/ConditionHeaderContextualCardRendererTest.java b/tests/robotests/src/com/android/settings/homepage/contextualcards/conditional/ConditionHeaderContextualCardRendererTest.java index a4aa1d7eeda..02dcecd3234 100644 --- a/tests/robotests/src/com/android/settings/homepage/contextualcards/conditional/ConditionHeaderContextualCardRendererTest.java +++ b/tests/robotests/src/com/android/settings/homepage/contextualcards/conditional/ConditionHeaderContextualCardRendererTest.java @@ -67,11 +67,13 @@ public class ConditionHeaderContextualCardRendererTest { @Test public void bindView_shouldSetClickListener() { - final int viewType = mRenderer.getViewType(false /* isHalfWidth */); final RecyclerView recyclerView = new RecyclerView(mActivity); recyclerView.setLayoutManager(new LinearLayoutManager(mActivity)); - final View view = LayoutInflater.from(mActivity).inflate(viewType, recyclerView, false); - final RecyclerView.ViewHolder viewHolder = mRenderer.createViewHolder(view); + final ContextualCard card = generateConditionHeaderContextualCard(); + final View view = LayoutInflater.from(mActivity).inflate(card.getViewType(), recyclerView, + false); + final RecyclerView.ViewHolder viewHolder = mRenderer.createViewHolder(view, + card.getViewType()); when(mControllerRendererPool.getController(mActivity, ContextualCard.CardType.CONDITIONAL_HEADER)).thenReturn(mController); @@ -83,11 +85,13 @@ public class ConditionHeaderContextualCardRendererTest { @Test public void bindView_clickView_shouldSetTrueToIsConditionExpanded() { - final int viewType = mRenderer.getViewType(false /* isHalfWidth */); final RecyclerView recyclerView = new RecyclerView(mActivity); recyclerView.setLayoutManager(new LinearLayoutManager(mActivity)); - final View view = LayoutInflater.from(mActivity).inflate(viewType, recyclerView, false); - final RecyclerView.ViewHolder viewHolder = mRenderer.createViewHolder(view); + final ContextualCard card = generateConditionHeaderContextualCard(); + final View view = LayoutInflater.from(mActivity).inflate(card.getViewType(), recyclerView, + false); + final RecyclerView.ViewHolder viewHolder = mRenderer.createViewHolder(view, + card.getViewType()); when(mControllerRendererPool.getController(mActivity, ContextualCard.CardType.CONDITIONAL_HEADER)).thenReturn(mController); @@ -105,6 +109,7 @@ public class ConditionHeaderContextualCardRendererTest { .setConditionalCards(generateConditionCards(3)) .setName("test_condition_header") .setRankingScore(-9999.0) + .setViewType(ConditionHeaderContextualCardRenderer.VIEW_TYPE) .build(); } @@ -118,7 +123,7 @@ public class ConditionHeaderContextualCardRendererTest { .setName("test_name" + i) .setTitleText("test_title" + i) .setSummaryText("test_summary" + i) - .setIsHalfWidth(true) + .setViewType(ConditionContextualCardRenderer.VIEW_TYPE_HALF_WIDTH) .build()); } return conditionCards; diff --git a/tests/robotests/src/com/android/settings/homepage/contextualcards/legacysuggestion/LegacySuggestionContextualCardRendererTest.java b/tests/robotests/src/com/android/settings/homepage/contextualcards/legacysuggestion/LegacySuggestionContextualCardRendererTest.java index 218279401fc..596e95d6183 100644 --- a/tests/robotests/src/com/android/settings/homepage/contextualcards/legacysuggestion/LegacySuggestionContextualCardRendererTest.java +++ b/tests/robotests/src/com/android/settings/homepage/contextualcards/legacysuggestion/LegacySuggestionContextualCardRendererTest.java @@ -66,35 +66,38 @@ public class LegacySuggestionContextualCardRendererTest { @Test public void bindView_shouldSetListener() { - final int viewType = mRenderer.getViewType(true /* isHalfWidth */); final RecyclerView recyclerView = new RecyclerView(mActivity); recyclerView.setLayoutManager(new LinearLayoutManager(mActivity)); - final View card = LayoutInflater.from(mActivity).inflate(viewType, recyclerView, false); - final RecyclerView.ViewHolder viewHolder = mRenderer.createViewHolder(card); - + final ContextualCard card = buildContextualCard(); + final View cardView = LayoutInflater.from(mActivity).inflate(card.getViewType(), + recyclerView, false); + final RecyclerView.ViewHolder viewHolder = mRenderer.createViewHolder(cardView, + card.getViewType()); when(mControllerRendererPool.getController(mActivity, ContextualCard.CardType.LEGACY_SUGGESTION)).thenReturn(mController); mRenderer.bindView(viewHolder, buildContextualCard()); - assertThat(card).isNotNull(); - assertThat(card.hasOnClickListeners()).isTrue(); + assertThat(cardView).isNotNull(); + assertThat(cardView.hasOnClickListeners()).isTrue(); } @Test public void viewClick_shouldInvokeControllerPrimaryClick() { - final int viewType = mRenderer.getViewType(true /* isHalfWidth */); final RecyclerView recyclerView = new RecyclerView(mActivity); recyclerView.setLayoutManager(new LinearLayoutManager(mActivity)); - final View card = LayoutInflater.from(mActivity).inflate(viewType, recyclerView, false); - final RecyclerView.ViewHolder viewHolder = mRenderer.createViewHolder(card); + final ContextualCard card = buildContextualCard(); + final View cardView = LayoutInflater.from(mActivity).inflate(card.getViewType(), + recyclerView, false); + final RecyclerView.ViewHolder viewHolder = mRenderer.createViewHolder(cardView, + card.getViewType()); when(mControllerRendererPool.getController(mActivity, ContextualCard.CardType.LEGACY_SUGGESTION)).thenReturn(mController); mRenderer.bindView(viewHolder, buildContextualCard()); - assertThat(card).isNotNull(); - card.performClick(); + assertThat(cardView).isNotNull(); + cardView.performClick(); verify(mController).onPrimaryClick(any(ContextualCard.class)); } @@ -105,6 +108,7 @@ public class LegacySuggestionContextualCardRendererTest { .setTitleText("test_title") .setSummaryText("test_summary") .setIconDrawable(mActivity.getDrawable(R.drawable.ic_do_not_disturb_on_24dp)) + .setViewType(LegacySuggestionContextualCardRenderer.VIEW_TYPE) .build(); } } diff --git a/tests/robotests/src/com/android/settings/homepage/contextualcards/slices/SliceContextualCardRendererTest.java b/tests/robotests/src/com/android/settings/homepage/contextualcards/slices/SliceContextualCardRendererTest.java index 4d9a21db9a6..b156782663a 100644 --- a/tests/robotests/src/com/android/settings/homepage/contextualcards/slices/SliceContextualCardRendererTest.java +++ b/tests/robotests/src/com/android/settings/homepage/contextualcards/slices/SliceContextualCardRendererTest.java @@ -16,6 +16,8 @@ package com.android.settings.homepage.contextualcards.slices; +import static com.android.settings.homepage.contextualcards.slices.SliceContextualCardRenderer.VIEW_TYPE_FULL_WIDTH; + import static com.google.common.truth.Truth.assertThat; import static org.mockito.Mockito.doReturn; @@ -211,12 +213,12 @@ public class SliceContextualCardRendererTest { } private RecyclerView.ViewHolder getSliceViewHolder() { - final int viewType = mRenderer.getViewType(false /* isHalfWidth */); final RecyclerView recyclerView = new RecyclerView(mActivity); recyclerView.setLayoutManager(new LinearLayoutManager(mActivity)); - final View view = LayoutInflater.from(mActivity).inflate(viewType, recyclerView, false); + final View view = LayoutInflater.from(mActivity).inflate(VIEW_TYPE_FULL_WIDTH, recyclerView, + false); - return mRenderer.createViewHolder(view); + return mRenderer.createViewHolder(view, VIEW_TYPE_FULL_WIDTH); } private ContextualCard buildContextualCard(Uri sliceUri) { @@ -224,6 +226,7 @@ public class SliceContextualCardRendererTest { .setName("test_name") .setCardType(ContextualCard.CardType.SLICE) .setSliceUri(sliceUri) + .setViewType(VIEW_TYPE_FULL_WIDTH) .build(); } } diff --git a/tests/robotests/src/com/android/settings/homepage/contextualcards/slices/SliceFullCardRendererHelperTest.java b/tests/robotests/src/com/android/settings/homepage/contextualcards/slices/SliceFullCardRendererHelperTest.java index 9172300df44..88820096fce 100644 --- a/tests/robotests/src/com/android/settings/homepage/contextualcards/slices/SliceFullCardRendererHelperTest.java +++ b/tests/robotests/src/com/android/settings/homepage/contextualcards/slices/SliceFullCardRendererHelperTest.java @@ -127,7 +127,7 @@ public class SliceFullCardRendererHelperTest { .setCategory(ContextualCardProto.ContextualCard.Category.SUGGESTION_VALUE) .setCardType(ContextualCard.CardType.SLICE) .setSliceUri(TEST_SLICE_URI) - .setIsHalfWidth(false /* isHalfWidth */) + .setViewType(VIEW_TYPE_FULL_WIDTH) .build(); } diff --git a/tests/robotests/src/com/android/settings/homepage/contextualcards/slices/SliceHalfCardRendererHelperTest.java b/tests/robotests/src/com/android/settings/homepage/contextualcards/slices/SliceHalfCardRendererHelperTest.java index c38697e16f1..1286c2711ab 100644 --- a/tests/robotests/src/com/android/settings/homepage/contextualcards/slices/SliceHalfCardRendererHelperTest.java +++ b/tests/robotests/src/com/android/settings/homepage/contextualcards/slices/SliceHalfCardRendererHelperTest.java @@ -95,7 +95,7 @@ public class SliceHalfCardRendererHelperTest { .setCategory(ContextualCardProto.ContextualCard.Category.SUGGESTION_VALUE) .setCardType(ContextualCard.CardType.SLICE) .setSliceUri(TEST_SLICE_URI) - .setIsHalfWidth(false /* isHalfWidth */) + .setViewType(VIEW_TYPE_HALF_WIDTH) .build(); }