Rename a bunch of stuff.
For homepage cards, rename Homepage* to ContextualCard*.
Change-Id: I95740f15a1789683fa6c61f03ecf9bc47c367146
Fixes: 113966426
Test: robotests
diff --git a/src/com/android/settings/homepage/CardContentLoader.java b/src/com/android/settings/homepage/CardContentLoader.java
index 4e1e33e..47ba59a 100644
--- a/src/com/android/settings/homepage/CardContentLoader.java
+++ b/src/com/android/settings/homepage/CardContentLoader.java
@@ -32,7 +32,7 @@
private CardContentLoaderListener mListener;
public interface CardContentLoaderListener {
- void onFinishCardLoading(List<HomepageCard> homepageCards);
+ void onFinishCardLoading(List<ContextualCard> contextualCards);
}
public CardContentLoader() {
@@ -42,20 +42,20 @@
mListener = listener;
}
- private static class CardLoader extends AsyncLoaderCompat<List<HomepageCard>> {
+ private static class CardLoader extends AsyncLoaderCompat<List<ContextualCard>> {
public CardLoader(Context context) {
super(context);
}
@Override
- protected void onDiscardResult(List<HomepageCard> result) {
+ protected void onDiscardResult(List<ContextualCard> result) {
}
@Nullable
@Override
- public List<HomepageCard> loadInBackground() {
+ public List<ContextualCard> loadInBackground() {
return null;
}
}
diff --git a/src/com/android/settings/homepage/HomepageCard.java b/src/com/android/settings/homepage/ContextualCard.java
similarity index 95%
rename from src/com/android/settings/homepage/HomepageCard.java
rename to src/com/android/settings/homepage/ContextualCard.java
index 1469ff1..f5083d8 100644
--- a/src/com/android/settings/homepage/HomepageCard.java
+++ b/src/com/android/settings/homepage/ContextualCard.java
@@ -25,12 +25,12 @@
import java.lang.annotation.RetentionPolicy;
/**
- * Data class representing a {@link HomepageCard}.
+ * Data class representing a {@link ContextualCard}.
*/
-public class HomepageCard {
+public class ContextualCard {
/**
- * Flags indicating the type of the HomepageCard.
+ * Flags indicating the type of the ContextualCard.
*/
@IntDef({CardType.INVALID, CardType.SLICE, CardType.SUGGESTION, CardType.CONDITIONAL})
@Retention(RetentionPolicy.SOURCE)
@@ -137,7 +137,7 @@
return mIsHalfWidth;
}
- public HomepageCard(Builder builder) {
+ public ContextualCard(Builder builder) {
mName = builder.mName;
mCardType = builder.mCardType;
mRankingScore = builder.mRankingScore;
@@ -171,10 +171,10 @@
if (this == obj) {
return true;
}
- if (!(obj instanceof HomepageCard)) {
+ if (!(obj instanceof ContextualCard)) {
return false;
}
- final HomepageCard that = (HomepageCard) obj;
+ final ContextualCard that = (ContextualCard) obj;
return TextUtils.equals(mName, that.mName);
}
@@ -289,8 +289,8 @@
return this;
}
- public HomepageCard build() {
- return new HomepageCard(this);
+ public ContextualCard build() {
+ return new ContextualCard(this);
}
}
}
diff --git a/src/com/android/settings/homepage/HomepageCardController.java b/src/com/android/settings/homepage/ContextualCardController.java
similarity index 68%
rename from src/com/android/settings/homepage/HomepageCardController.java
rename to src/com/android/settings/homepage/ContextualCardController.java
index a7d89af..921d72b 100644
--- a/src/com/android/settings/homepage/HomepageCardController.java
+++ b/src/com/android/settings/homepage/ContextualCardController.java
@@ -19,22 +19,22 @@
import java.util.List;
/**
- * Data controller for {@link HomepageCard}.
+ * Data controller for {@link ContextualCard}.
*/
-public interface HomepageCardController {
+public interface ContextualCardController {
- @HomepageCard.CardType
+ @ContextualCard.CardType
int getCardType();
/**
- * When data is updated or changed, the new data should be passed to HomepageManager for list
+ * When data is updated or changed, the new data should be passed to ContextualCardManager for list
* updating.
*/
- void onDataUpdated(List<HomepageCard> cardList);
+ void onDataUpdated(List<ContextualCard> cardList);
- void onPrimaryClick(HomepageCard card);
+ void onPrimaryClick(ContextualCard card);
- void onActionClick(HomepageCard card);
+ void onActionClick(ContextualCard card);
- void setHomepageCardUpdateListener(HomepageCardUpdateListener listener);
+ void setCardUpdateListener(ContextualCardUpdateListener listener);
}
diff --git a/src/com/android/settings/homepage/ContextualCardLookupTable.java b/src/com/android/settings/homepage/ContextualCardLookupTable.java
new file mode 100644
index 0000000..e70b700
--- /dev/null
+++ b/src/com/android/settings/homepage/ContextualCardLookupTable.java
@@ -0,0 +1,75 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.homepage;
+
+import com.android.settings.homepage.ContextualCard.CardType;
+import com.android.settings.homepage.conditional.ConditionContextualCardController;
+import com.android.settings.homepage.conditional.ConditionContextualCardRenderer;
+
+import java.util.Set;
+import java.util.TreeSet;
+
+public class ContextualCardLookupTable {
+
+ static class ControllerRendererMapping implements Comparable<ControllerRendererMapping> {
+ @CardType
+ private final int mCardType;
+ private final Class<? extends ContextualCardController> mControllerClass;
+ private final Class<? extends ContextualCardRenderer> mRendererClass;
+
+ private ControllerRendererMapping(@CardType int cardType,
+ Class<? extends ContextualCardController> controllerClass,
+ Class<? extends ContextualCardRenderer> rendererClass) {
+ mCardType = cardType;
+ mControllerClass = controllerClass;
+ mRendererClass = rendererClass;
+ }
+
+ @Override
+ public int compareTo(ControllerRendererMapping other) {
+ return Integer.compare(this.mCardType, other.mCardType);
+ }
+ }
+
+ private static final Set<ControllerRendererMapping> LOOKUP_TABLE =
+ new TreeSet<ControllerRendererMapping>() {{
+ add(new ControllerRendererMapping(CardType.CONDITIONAL,
+ ConditionContextualCardController.class,
+ ConditionContextualCardRenderer.class));
+ }};
+
+ public static Class<? extends ContextualCardController> getCardControllerClass(
+ @CardType int cardType) {
+ for (ControllerRendererMapping mapping : LOOKUP_TABLE) {
+ if (mapping.mCardType == cardType) {
+ return mapping.mControllerClass;
+ }
+ }
+ return null;
+ }
+
+ //TODO(b/112578070): Implement multi renderer cases.
+ public static Class<? extends ContextualCardRenderer> getCardRendererClasses(
+ @CardType int cardType) {
+ for (ControllerRendererMapping mapping : LOOKUP_TABLE) {
+ if (mapping.mCardType == cardType) {
+ return mapping.mRendererClass;
+ }
+ }
+ return null;
+ }
+}
diff --git a/src/com/android/settings/homepage/ContextualCardManager.java b/src/com/android/settings/homepage/ContextualCardManager.java
new file mode 100644
index 0000000..255f7a2
--- /dev/null
+++ b/src/com/android/settings/homepage/ContextualCardManager.java
@@ -0,0 +1,140 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.homepage;
+
+import android.content.Context;
+import android.widget.BaseAdapter;
+
+import com.android.settingslib.core.lifecycle.Lifecycle;
+import com.android.settingslib.core.lifecycle.LifecycleObserver;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * This is a centralized manager of multiple {@link ContextualCardController}.
+ *
+ * {@link ContextualCardManager} first loads data from {@link CardContentLoader} and gets back a list of
+ * {@link ContextualCard}. All subclasses of {@link ContextualCardController} are loaded here, which
+ * will then trigger the {@link ContextualCardController} to load its data and listen to
+ * corresponding changes. When every single {@link ContextualCardController} updates its data, the
+ * data will be passed here, then going through some sorting mechanisms. The
+ * {@link ContextualCardController} will end up building a list of {@link ContextualCard} for {@link
+ * ContextualCardsAdapter} and {@link BaseAdapter#notifyDataSetChanged()} will be called to get the page
+ * refreshed.
+ */
+public class ContextualCardManager implements CardContentLoader.CardContentLoaderListener,
+ ContextualCardUpdateListener {
+
+ private static final String TAG = "ContextualCardManager";
+ //The list for Settings Custom Card
+ @ContextualCard.CardType
+ private static final int[] SETTINGS_CARDS = {ContextualCard.CardType.CONDITIONAL};
+
+ private final Context mContext;
+ private final ControllerRendererPool mControllerRendererPool;
+ private final Lifecycle mLifecycle;
+
+ private List<ContextualCard> mContextualCards;
+ private ContextualCardUpdateListener mListener;
+
+
+ public ContextualCardManager(Context context, Lifecycle lifecycle) {
+ mContext = context;
+ mLifecycle = lifecycle;
+ mContextualCards = new ArrayList<>();
+ mControllerRendererPool = new ControllerRendererPool();
+ }
+
+ void startCardContentLoading() {
+ final CardContentLoader cardContentLoader = new CardContentLoader();
+ cardContentLoader.setListener(this);
+ }
+
+ private void loadCardControllers() {
+ if (mContextualCards != null) {
+ for (ContextualCard card : mContextualCards) {
+ setupController(card.getCardType());
+ }
+ }
+
+ //for data provided by Settings
+ for (int cardType : SETTINGS_CARDS) {
+ setupController(cardType);
+ }
+ }
+
+ private void setupController(int cardType) {
+ final ContextualCardController controller = mControllerRendererPool.getController(mContext,
+ cardType);
+ if (controller != null) {
+ controller.setCardUpdateListener(this);
+ if (controller instanceof LifecycleObserver) {
+ if (mLifecycle != null) {
+ mLifecycle.addObserver((LifecycleObserver) controller);
+ }
+ }
+ }
+ }
+
+ //TODO(b/111822376): implement sorting mechanism.
+ private void sortCards() {
+ //take mContextualCards as the source and do the ranking based on the rule.
+ }
+
+ @Override
+ public void onHomepageCardUpdated(int cardType, List<ContextualCard> updateList) {
+ //TODO(b/112245748): Should implement a DiffCallback.
+ //Keep the old list for comparison.
+ final List<ContextualCard> prevCards = mContextualCards;
+
+ //Remove the existing data that matches the certain cardType so as to insert the new data.
+ for (int i = mContextualCards.size() - 1; i >= 0; i--) {
+ if (mContextualCards.get(i).getCardType() == cardType) {
+ mContextualCards.remove(i);
+ }
+ }
+
+ //Append the new data
+ mContextualCards.addAll(updateList);
+
+ sortCards();
+
+ if (mListener != null) {
+ mListener.onHomepageCardUpdated(ContextualCard.CardType.INVALID, mContextualCards);
+ }
+ }
+
+ @Override
+ public void onFinishCardLoading(List<ContextualCard> contextualCards) {
+ mContextualCards = contextualCards;
+
+ //Force card sorting here in case CardControllers of custom view have nothing to update
+ // for the first launch.
+ sortCards();
+
+ loadCardControllers();
+ }
+
+ void setListener(ContextualCardUpdateListener listener) {
+ mListener = listener;
+ }
+
+ public ControllerRendererPool getControllerRendererPool() {
+ return mControllerRendererPool;
+ }
+}
diff --git a/src/com/android/settings/homepage/HomepageCardRenderer.java b/src/com/android/settings/homepage/ContextualCardRenderer.java
similarity index 76%
rename from src/com/android/settings/homepage/HomepageCardRenderer.java
rename to src/com/android/settings/homepage/ContextualCardRenderer.java
index ffa54e3..94fdb43 100644
--- a/src/com/android/settings/homepage/HomepageCardRenderer.java
+++ b/src/com/android/settings/homepage/ContextualCardRenderer.java
@@ -21,9 +21,9 @@
import androidx.recyclerview.widget.RecyclerView;
/**
- * UI renderer for {@link HomepageCard}.
+ * UI renderer for {@link ContextualCard}.
*/
-public interface HomepageCardRenderer {
+public interface ContextualCardRenderer {
/**
* The layout type of the controller.
@@ -31,16 +31,16 @@
int getViewType();
/**
- * When {@link HomepageAdapter} calls {@link HomepageAdapter#onCreateViewHolder(ViewGroup,
+ * When {@link ContextualCardsAdapter} calls {@link ContextualCardsAdapter#onCreateViewHolder(ViewGroup,
* int)}, this method will be called to retrieve the corresponding
* {@link androidx.recyclerview.widget.RecyclerView.ViewHolder}.
*/
RecyclerView.ViewHolder createViewHolder(View view);
/**
- * When {@link HomepageAdapter} calls {@link HomepageAdapter#onBindViewHolder(RecyclerView
+ * When {@link ContextualCardsAdapter} calls {@link ContextualCardsAdapter#onBindViewHolder(RecyclerView
* .ViewHolder, int)}, this method will be called to bind data to the
* {@link androidx.recyclerview.widget.RecyclerView.ViewHolder}.
*/
- void bindView(RecyclerView.ViewHolder holder, HomepageCard card);
+ void bindView(RecyclerView.ViewHolder holder, ContextualCard card);
}
\ No newline at end of file
diff --git a/src/com/android/settings/homepage/ContextualCardUpdateListener.java b/src/com/android/settings/homepage/ContextualCardUpdateListener.java
new file mode 100644
index 0000000..0b45426
--- /dev/null
+++ b/src/com/android/settings/homepage/ContextualCardUpdateListener.java
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.homepage;
+
+import java.util.List;
+
+/**
+ * When {@link ContextualCardController} detects changes, it will notify the listeners registered. In
+ * our case, {@link ContextualCardManager} gets noticed.
+ *
+ * After the list of {@link ContextualCard} gets updated in{@link ContextualCardManager},
+ * {@link ContextualCardManager} will notify the listeners registered, {@link ContextualCardsAdapter} in this
+ * case.
+ */
+public interface ContextualCardUpdateListener {
+ void onHomepageCardUpdated(int cardType, List<ContextualCard> updateList);
+}
\ No newline at end of file
diff --git a/src/com/android/settings/homepage/HomepageAdapter.java b/src/com/android/settings/homepage/ContextualCardsAdapter.java
similarity index 72%
rename from src/com/android/settings/homepage/HomepageAdapter.java
rename to src/com/android/settings/homepage/ContextualCardsAdapter.java
index bd37601..254f4a4 100644
--- a/src/com/android/settings/homepage/HomepageAdapter.java
+++ b/src/com/android/settings/homepage/ContextualCardsAdapter.java
@@ -27,39 +27,39 @@
import java.util.ArrayList;
import java.util.List;
-public class HomepageAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> implements
- HomepageCardUpdateListener {
+public class ContextualCardsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> implements
+ ContextualCardUpdateListener {
static final int SPAN_COUNT = 2;
- private static final String TAG = "HomepageAdapter";
+ private static final String TAG = "ContextualCardsAdapter";
private static final int HALF_WIDTH = 1;
private static final int FULL_WIDTH = 2;
private final Context mContext;
private final ControllerRendererPool mControllerRendererPool;
- private List<HomepageCard> mHomepageCards;
+ private List<ContextualCard> mContextualCards;
- public HomepageAdapter(Context context, HomepageManager manager) {
+ public ContextualCardsAdapter(Context context, ContextualCardManager manager) {
mContext = context;
- mHomepageCards = new ArrayList<>();
+ mContextualCards = new ArrayList<>();
mControllerRendererPool = manager.getControllerRendererPool();
setHasStableIds(true);
}
@Override
public long getItemId(int position) {
- return mHomepageCards.get(position).hashCode();
+ return mContextualCards.get(position).hashCode();
}
@Override
public int getItemViewType(int position) {
- return mHomepageCards.get(position).getCardType();
+ return mContextualCards.get(position).getCardType();
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int cardType) {
- final HomepageCardRenderer renderer = mControllerRendererPool.getRenderer(mContext,
+ final ContextualCardRenderer renderer = mControllerRendererPool.getRenderer(mContext,
cardType);
final int viewType = renderer.getViewType();
final View view = LayoutInflater.from(parent.getContext()).inflate(viewType, parent, false);
@@ -69,16 +69,16 @@
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
- final int cardType = mHomepageCards.get(position).getCardType();
- final HomepageCardRenderer renderer = mControllerRendererPool.getRenderer(mContext,
+ final int cardType = mContextualCards.get(position).getCardType();
+ final ContextualCardRenderer renderer = mControllerRendererPool.getRenderer(mContext,
cardType);
- renderer.bindView(holder, mHomepageCards.get(position));
+ renderer.bindView(holder, mContextualCards.get(position));
}
@Override
public int getItemCount() {
- return mHomepageCards.size();
+ return mContextualCards.size();
}
@Override
@@ -90,7 +90,7 @@
gridLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
@Override
public int getSpanSize(int position) {
- final HomepageCard card = mHomepageCards.get(position);
+ final ContextualCard card = mContextualCards.get(position);
//TODO(b/114009676): may use another field to make decision. still under review.
if (card.isHalfWidth()) {
return HALF_WIDTH;
@@ -102,13 +102,13 @@
}
@Override
- public void onHomepageCardUpdated(int cardType, List<HomepageCard> homepageCards) {
+ public void onHomepageCardUpdated(int cardType, List<ContextualCard> contextualCards) {
//TODO(b/112245748): Should implement a DiffCallback so we can use notifyItemChanged()
// instead.
- if (homepageCards == null) {
- mHomepageCards.clear();
+ if (contextualCards == null) {
+ mContextualCards.clear();
} else {
- mHomepageCards = homepageCards;
+ mContextualCards = contextualCards;
}
notifyDataSetChanged();
}
diff --git a/src/com/android/settings/homepage/ControllerRendererPool.java b/src/com/android/settings/homepage/ControllerRendererPool.java
index ebd63d4..1e4b37c 100644
--- a/src/com/android/settings/homepage/ControllerRendererPool.java
+++ b/src/com/android/settings/homepage/ControllerRendererPool.java
@@ -21,77 +21,77 @@
import androidx.collection.ArraySet;
-import com.android.settings.homepage.conditional.ConditionHomepageCardController;
-import com.android.settings.homepage.conditional.ConditionHomepageCardRenderer;
+import com.android.settings.homepage.conditional.ConditionContextualCardController;
+import com.android.settings.homepage.conditional.ConditionContextualCardRenderer;
import java.util.Set;
/**
- * This is a fragment scoped singleton holding a set of {@link HomepageCardController} and
- * {@link HomepageCardRenderer}.
+ * This is a fragment scoped singleton holding a set of {@link ContextualCardController} and
+ * {@link ContextualCardRenderer}.
*/
public class ControllerRendererPool {
private static final String TAG = "ControllerRendererPool";
- private final Set<HomepageCardController> mControllers;
- private final Set<HomepageCardRenderer> mRenderers;
+ private final Set<ContextualCardController> mControllers;
+ private final Set<ContextualCardRenderer> mRenderers;
public ControllerRendererPool() {
mControllers = new ArraySet<>();
mRenderers = new ArraySet<>();
}
- public <T extends HomepageCardController> T getController(Context context,
- @HomepageCard.CardType int cardType) {
- final Class<? extends HomepageCardController> clz =
- HomepageCardLookupTable.getCardControllerClass(cardType);
- for (HomepageCardController controller : mControllers) {
+ public <T extends ContextualCardController> T getController(Context context,
+ @ContextualCard.CardType int cardType) {
+ final Class<? extends ContextualCardController> clz =
+ ContextualCardLookupTable.getCardControllerClass(cardType);
+ for (ContextualCardController controller : mControllers) {
if (controller.getClass() == clz) {
Log.d(TAG, "Controller is already there.");
return (T) controller;
}
}
- final HomepageCardController controller = createCardController(context, clz);
+ final ContextualCardController controller = createCardController(context, clz);
if (controller != null) {
mControllers.add(controller);
}
return (T) controller;
}
- public Set<HomepageCardController> getControllers() {
+ public Set<ContextualCardController> getControllers() {
return mControllers;
}
- public HomepageCardRenderer getRenderer(Context context, @HomepageCard.CardType int cardType) {
- final Class<? extends HomepageCardRenderer> clz =
- HomepageCardLookupTable.getCardRendererClasses(cardType);
- for (HomepageCardRenderer renderer : mRenderers) {
+ public ContextualCardRenderer getRenderer(Context context, @ContextualCard.CardType int cardType) {
+ final Class<? extends ContextualCardRenderer> clz =
+ ContextualCardLookupTable.getCardRendererClasses(cardType);
+ for (ContextualCardRenderer renderer : mRenderers) {
if (renderer.getClass() == clz) {
Log.d(TAG, "Renderer is already there.");
return renderer;
}
}
- final HomepageCardRenderer renderer = createCardRenderer(context, clz);
+ final ContextualCardRenderer renderer = createCardRenderer(context, clz);
if (renderer != null) {
mRenderers.add(renderer);
}
return renderer;
}
- private HomepageCardController createCardController(Context context,
- Class<? extends HomepageCardController> clz) {
- if (ConditionHomepageCardController.class == clz) {
- return new ConditionHomepageCardController(context);
+ private ContextualCardController createCardController(Context context,
+ Class<? extends ContextualCardController> clz) {
+ if (ConditionContextualCardController.class == clz) {
+ return new ConditionContextualCardController(context);
}
return null;
}
- private HomepageCardRenderer createCardRenderer(Context context, Class<?> clz) {
- if (ConditionHomepageCardRenderer.class == clz) {
- return new ConditionHomepageCardRenderer(context, this /*controllerRendererPool*/);
+ private ContextualCardRenderer createCardRenderer(Context context, Class<?> clz) {
+ if (ConditionContextualCardRenderer.class == clz) {
+ return new ConditionContextualCardRenderer(context, this /*controllerRendererPool*/);
}
return null;
}
diff --git a/src/com/android/settings/homepage/HomepageCardLookupTable.java b/src/com/android/settings/homepage/HomepageCardLookupTable.java
deleted file mode 100644
index 8d8e52b..0000000
--- a/src/com/android/settings/homepage/HomepageCardLookupTable.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.settings.homepage;
-
-import com.android.settings.homepage.HomepageCard.CardType;
-import com.android.settings.homepage.conditional.ConditionHomepageCardController;
-import com.android.settings.homepage.conditional.ConditionHomepageCardRenderer;
-
-import java.util.Set;
-import java.util.TreeSet;
-
-public class HomepageCardLookupTable {
-
- static class HomepageMapping implements Comparable<HomepageMapping> {
- @CardType
- private final int mCardType;
- private final Class<? extends HomepageCardController> mControllerClass;
- private final Class<? extends HomepageCardRenderer> mRendererClass;
-
- private HomepageMapping(@CardType int cardType,
- Class<? extends HomepageCardController> controllerClass,
- Class<? extends HomepageCardRenderer> rendererClass) {
- mCardType = cardType;
- mControllerClass = controllerClass;
- mRendererClass = rendererClass;
- }
-
- @Override
- public int compareTo(HomepageMapping other) {
- return Integer.compare(this.mCardType, other.mCardType);
- }
- }
-
- private static final Set<HomepageMapping> LOOKUP_TABLE = new TreeSet<HomepageMapping>() {{
- add(new HomepageMapping(CardType.CONDITIONAL, ConditionHomepageCardController.class,
- ConditionHomepageCardRenderer.class));
- }};
-
- public static Class<? extends HomepageCardController> getCardControllerClass(
- @CardType int cardType) {
- for (HomepageMapping mapping : LOOKUP_TABLE) {
- if (mapping.mCardType == cardType) {
- return mapping.mControllerClass;
- }
- }
- return null;
- }
-
- //TODO(b/112578070): Implement multi renderer cases.
- public static Class<? extends HomepageCardRenderer> getCardRendererClasses(
- @CardType int cardType) {
- for (HomepageMapping mapping : LOOKUP_TABLE) {
- if (mapping.mCardType == cardType) {
- return mapping.mRendererClass;
- }
- }
- return null;
- }
-}
diff --git a/src/com/android/settings/homepage/HomepageCardUpdateListener.java b/src/com/android/settings/homepage/HomepageCardUpdateListener.java
deleted file mode 100644
index 35bc3a3..0000000
--- a/src/com/android/settings/homepage/HomepageCardUpdateListener.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.settings.homepage;
-
-import java.util.List;
-
-/**
- * When {@link HomepageCardController} detects changes, it will notify the listeners registered. In
- * our case, {@link HomepageManager} gets noticed.
- *
- * After the list of {@link HomepageCard} gets updated in{@link HomepageManager},
- * {@link HomepageManager} will notify the listeners registered, {@link HomepageAdapter} in this
- * case.
- */
-public interface HomepageCardUpdateListener {
- void onHomepageCardUpdated(int cardType, List<HomepageCard> updateList);
-}
\ No newline at end of file
diff --git a/src/com/android/settings/homepage/HomepageManager.java b/src/com/android/settings/homepage/HomepageManager.java
deleted file mode 100644
index 61d7ce7..0000000
--- a/src/com/android/settings/homepage/HomepageManager.java
+++ /dev/null
@@ -1,140 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.settings.homepage;
-
-import android.content.Context;
-import android.widget.BaseAdapter;
-
-import com.android.settingslib.core.lifecycle.Lifecycle;
-import com.android.settingslib.core.lifecycle.LifecycleObserver;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * This is a centralized manager of multiple {@link HomepageCardController}.
- *
- * {@link HomepageManager} first loads data from {@link CardContentLoader} and gets back a list of
- * {@link HomepageCard}. All subclasses of {@link HomepageCardController} are loaded here, which
- * will then trigger the {@link HomepageCardController} to load its data and listen to
- * corresponding changes. When every single {@link HomepageCardController} updates its data, the
- * data will be passed here, then going through some sorting mechanisms. The
- * {@link HomepageCardController} will end up building a list of {@link HomepageCard} for {@link
- * HomepageAdapter} and {@link BaseAdapter#notifyDataSetChanged()} will be called to get the page
- * refreshed.
- */
-public class HomepageManager implements CardContentLoader.CardContentLoaderListener,
- HomepageCardUpdateListener {
-
- private static final String TAG = "HomepageManager";
- //The list for Settings Custom Card
- @HomepageCard.CardType
- private static final int[] SETTINGS_CARDS = {HomepageCard.CardType.CONDITIONAL};
-
- private final Context mContext;
- private final ControllerRendererPool mControllerRendererPool;
- private final Lifecycle mLifecycle;
-
- private List<HomepageCard> mHomepageCards;
- private HomepageCardUpdateListener mListener;
-
-
- public HomepageManager(Context context, Lifecycle lifecycle) {
- mContext = context;
- mLifecycle = lifecycle;
- mHomepageCards = new ArrayList<>();
- mControllerRendererPool = new ControllerRendererPool();
- }
-
- void startCardContentLoading() {
- final CardContentLoader cardContentLoader = new CardContentLoader();
- cardContentLoader.setListener(this);
- }
-
- private void loadCardControllers() {
- if (mHomepageCards != null) {
- for (HomepageCard card : mHomepageCards) {
- setupController(card.getCardType());
- }
- }
-
- //for data provided by Settings
- for (int cardType : SETTINGS_CARDS) {
- setupController(cardType);
- }
- }
-
- private void setupController(int cardType) {
- final HomepageCardController controller = mControllerRendererPool.getController(mContext,
- cardType);
- if (controller != null) {
- controller.setHomepageCardUpdateListener(this);
- if (controller instanceof LifecycleObserver) {
- if (mLifecycle != null) {
- mLifecycle.addObserver((LifecycleObserver) controller);
- }
- }
- }
- }
-
- //TODO(b/111822376): implement sorting mechanism.
- private void sortCards() {
- //take mHomepageCards as the source and do the ranking based on the rule.
- }
-
- @Override
- public void onHomepageCardUpdated(int cardType, List<HomepageCard> updateList) {
- //TODO(b/112245748): Should implement a DiffCallback.
- //Keep the old list for comparison.
- final List<HomepageCard> prevCards = mHomepageCards;
-
- //Remove the existing data that matches the certain cardType so as to insert the new data.
- for (int i = mHomepageCards.size() - 1; i >= 0; i--) {
- if (mHomepageCards.get(i).getCardType() == cardType) {
- mHomepageCards.remove(i);
- }
- }
-
- //Append the new data
- mHomepageCards.addAll(updateList);
-
- sortCards();
-
- if (mListener != null) {
- mListener.onHomepageCardUpdated(HomepageCard.CardType.INVALID, mHomepageCards);
- }
- }
-
- @Override
- public void onFinishCardLoading(List<HomepageCard> homepageCards) {
- mHomepageCards = homepageCards;
-
- //Force card sorting here in case CardControllers of custom view have nothing to update
- // for the first launch.
- sortCards();
-
- loadCardControllers();
- }
-
- void setListener(HomepageCardUpdateListener listener) {
- mListener = listener;
- }
-
- public ControllerRendererPool getControllerRendererPool() {
- return mControllerRendererPool;
- }
-}
diff --git a/src/com/android/settings/homepage/PersonalSettingsFragment.java b/src/com/android/settings/homepage/PersonalSettingsFragment.java
index 1894e5e..69af23b 100644
--- a/src/com/android/settings/homepage/PersonalSettingsFragment.java
+++ b/src/com/android/settings/homepage/PersonalSettingsFragment.java
@@ -16,7 +16,7 @@
package com.android.settings.homepage;
-import static com.android.settings.homepage.HomepageAdapter.SPAN_COUNT;
+import static com.android.settings.homepage.ContextualCardsAdapter.SPAN_COUNT;
import android.os.Bundle;
import android.view.LayoutInflater;
@@ -36,17 +36,15 @@
private static final String TAG = "PersonalSettingsFragment";
private RecyclerView mCardsContainer;
- //TODO(b/113966426): rename
- private HomepageAdapter mHomepageAdapter;
private GridLayoutManager mLayoutManager;
- //TODO(b/113966426): rename
- private HomepageManager mHomepageManager;
+ private ContextualCardsAdapter mContextualCardsAdapter;
+ private ContextualCardManager mContextualCardManager;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- mHomepageManager = new HomepageManager(getContext(), getSettingsLifecycle());
- mHomepageManager.startCardContentLoading();
+ mContextualCardManager = new ContextualCardManager(getContext(), getSettingsLifecycle());
+ mContextualCardManager.startCardContentLoading();
}
@Override
@@ -58,9 +56,9 @@
mLayoutManager = new GridLayoutManager(getActivity(), SPAN_COUNT,
LinearLayoutManager.VERTICAL, false /* reverseLayout */);
mCardsContainer.setLayoutManager(mLayoutManager);
- mHomepageAdapter = new HomepageAdapter(getContext(), mHomepageManager);
- mCardsContainer.setAdapter(mHomepageAdapter);
- mHomepageManager.setListener(mHomepageAdapter);
+ mContextualCardsAdapter = new ContextualCardsAdapter(getContext(), mContextualCardManager);
+ mCardsContainer.setAdapter(mContextualCardsAdapter);
+ mContextualCardManager.setListener(mContextualCardsAdapter);
return rootView;
}
diff --git a/src/com/android/settings/homepage/conditional/ConditionContextualCardController.java b/src/com/android/settings/homepage/conditional/ConditionContextualCardController.java
new file mode 100644
index 0000000..eab6099
--- /dev/null
+++ b/src/com/android/settings/homepage/conditional/ConditionContextualCardController.java
@@ -0,0 +1,112 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.homepage.conditional;
+
+import android.content.Context;
+
+import com.android.settings.homepage.ContextualCard;
+import com.android.settings.homepage.ContextualCardController;
+import com.android.settings.homepage.ContextualCardUpdateListener;
+import com.android.settingslib.core.lifecycle.LifecycleObserver;
+import com.android.settingslib.core.lifecycle.events.OnStart;
+import com.android.settingslib.core.lifecycle.events.OnStop;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * This controller triggers the loading of conditional cards and monitors state changes to
+ * update the homepage.
+ */
+public class ConditionContextualCardController implements ContextualCardController,
+ ConditionListener, LifecycleObserver, OnStart, OnStop {
+
+ private final Context mContext;
+ private final ConditionManager mConditionManager;
+
+ private ContextualCardUpdateListener mListener;
+
+ public ConditionContextualCardController(Context context) {
+ mContext = context;
+ mConditionManager = new ConditionManager(context.getApplicationContext(), this);
+ mConditionManager.startMonitoringStateChange();
+ }
+
+ @Override
+ public void setCardUpdateListener(ContextualCardUpdateListener listener) {
+ mListener = listener;
+ }
+
+ @Override
+ public int getCardType() {
+ return ContextualCard.CardType.CONDITIONAL;
+ }
+
+ @Override
+ public void onDataUpdated(List<ContextualCard> cardList) {
+ mListener.onHomepageCardUpdated(getCardType(), cardList);
+ }
+
+ @Override
+ public void onStart() {
+ mConditionManager.startMonitoringStateChange();
+ }
+
+ @Override
+ public void onStop() {
+ mConditionManager.stopMonitoringStateChange();
+ }
+
+ @Override
+ public void onPrimaryClick(ContextualCard contextualCard) {
+ final ConditionalContextualCard card = (ConditionalContextualCard) contextualCard;
+ mConditionManager.onPrimaryClick(mContext, card.getConditionId());
+ }
+
+ @Override
+ public void onActionClick(ContextualCard contextualCard) {
+ final ConditionalContextualCard card = (ConditionalContextualCard) contextualCard;
+ mConditionManager.onActionClick(card.getConditionId());
+ }
+
+ @Override
+ public void onConditionsChanged() {
+ final List<ContextualCard> conditionCards = new ArrayList<>();
+ final List<ConditionalCard> conditionList = mConditionManager.getDisplayableCards();
+
+ for (ConditionalCard condition : conditionList) {
+ final ContextualCard conditionCard =
+ new ConditionalContextualCard.Builder()
+ .setConditionId(condition.getId())
+ .setMetricsConstant(condition.getMetricsConstant())
+ .setActionText(condition.getActionText())
+ .setName(mContext.getPackageName() + "/"
+ + condition.getTitle().toString())
+ .setCardType(ContextualCard.CardType.CONDITIONAL)
+ .setTitleText(condition.getTitle().toString())
+ .setSummaryText(condition.getSummary().toString())
+ .setIconDrawable(condition.getIcon())
+ .build();
+
+ conditionCards.add(conditionCard);
+ }
+
+ if (mListener != null) {
+ onDataUpdated(conditionCards);
+ }
+ }
+}
diff --git a/src/com/android/settings/homepage/conditional/ConditionHomepageCardRenderer.java b/src/com/android/settings/homepage/conditional/ConditionContextualCardRenderer.java
similarity index 89%
rename from src/com/android/settings/homepage/conditional/ConditionHomepageCardRenderer.java
rename to src/com/android/settings/homepage/conditional/ConditionContextualCardRenderer.java
index 6aa90ae..69988ae 100644
--- a/src/com/android/settings/homepage/conditional/ConditionHomepageCardRenderer.java
+++ b/src/com/android/settings/homepage/conditional/ConditionContextualCardRenderer.java
@@ -27,21 +27,21 @@
import com.android.internal.logging.nano.MetricsProto;
import com.android.settings.R;
+import com.android.settings.homepage.ContextualCard;
import com.android.settings.homepage.ControllerRendererPool;
-import com.android.settings.homepage.HomepageCard;
-import com.android.settings.homepage.HomepageCardRenderer;
+import com.android.settings.homepage.ContextualCardRenderer;
import com.android.settings.overlay.FeatureFactory;
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
/**
- * Card renderer for {@link ConditionCard}.
+ * Card renderer for {@link ConditionalContextualCard}.
*/
-public class ConditionHomepageCardRenderer implements HomepageCardRenderer {
+public class ConditionContextualCardRenderer implements ContextualCardRenderer {
private final Context mContext;
private final ControllerRendererPool mControllerRendererPool;
- public ConditionHomepageCardRenderer(Context context,
+ public ConditionContextualCardRenderer(Context context,
ControllerRendererPool controllerRendererPool) {
mContext = context;
mControllerRendererPool = controllerRendererPool;
@@ -58,9 +58,9 @@
}
@Override
- public void bindView(RecyclerView.ViewHolder holder, HomepageCard homepageCard) {
+ public void bindView(RecyclerView.ViewHolder holder, ContextualCard contextualCard) {
final ConditionalCardHolder view = (ConditionalCardHolder) holder;
- final ConditionCard card = (ConditionCard) homepageCard;
+ final ConditionalContextualCard card = (ConditionalContextualCard) contextualCard;
final MetricsFeatureProvider metricsFeatureProvider = FeatureFactory.getFactory(
mContext).getMetricsFeatureProvider();
@@ -71,7 +71,7 @@
initializeActionButton(view, card, metricsFeatureProvider);
}
- private void initializePrimaryClick(ConditionalCardHolder view, ConditionCard card,
+ private void initializePrimaryClick(ConditionalCardHolder view, ConditionalContextualCard card,
MetricsFeatureProvider metricsFeatureProvider) {
view.itemView.findViewById(R.id.content).setOnClickListener(
v -> {
@@ -83,7 +83,7 @@
});
}
- private void initializeView(ConditionalCardHolder view, ConditionCard card) {
+ private void initializeView(ConditionalCardHolder view, ConditionalContextualCard card) {
view.icon.setImageDrawable(card.getIconDrawable());
view.title.setText(card.getTitleText());
view.summary.setText(card.getSummaryText());
@@ -91,7 +91,7 @@
setViewVisibility(view.itemView, R.id.divider, false);
}
- private void initializeActionButton(ConditionalCardHolder view, ConditionCard card,
+ private void initializeActionButton(ConditionalCardHolder view, ConditionalContextualCard card,
MetricsFeatureProvider metricsFeatureProvider) {
final CharSequence action = card.getActionText();
final boolean hasButtons = !TextUtils.isEmpty(action);
diff --git a/src/com/android/settings/homepage/conditional/ConditionHomepageCardController.java b/src/com/android/settings/homepage/conditional/ConditionHomepageCardController.java
deleted file mode 100644
index bb7af4b..0000000
--- a/src/com/android/settings/homepage/conditional/ConditionHomepageCardController.java
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.settings.homepage.conditional;
-
-import android.content.Context;
-
-import com.android.settings.homepage.HomepageCard;
-import com.android.settings.homepage.HomepageCardController;
-import com.android.settings.homepage.HomepageCardUpdateListener;
-import com.android.settingslib.core.lifecycle.LifecycleObserver;
-import com.android.settingslib.core.lifecycle.events.OnStart;
-import com.android.settingslib.core.lifecycle.events.OnStop;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * This controller triggers the loading of conditional cards and monitors state changes to
- * update the homepage.
- */
-public class ConditionHomepageCardController implements HomepageCardController, ConditionListener,
- LifecycleObserver, OnStart, OnStop {
-
- private final Context mContext;
- private final ConditionManager mConditionManager;
-
- private HomepageCardUpdateListener mListener;
-
- public ConditionHomepageCardController(Context context) {
- mContext = context;
- mConditionManager = new ConditionManager(context.getApplicationContext(), this);
- mConditionManager.startMonitoringStateChange();
- }
-
- @Override
- public void setHomepageCardUpdateListener(HomepageCardUpdateListener listener) {
- mListener = listener;
- }
-
- @Override
- public int getCardType() {
- return HomepageCard.CardType.CONDITIONAL;
- }
-
- @Override
- public void onDataUpdated(List<HomepageCard> cardList) {
- mListener.onHomepageCardUpdated(getCardType(), cardList);
- }
-
- @Override
- public void onStart() {
- mConditionManager.startMonitoringStateChange();
- }
-
- @Override
- public void onStop() {
- mConditionManager.stopMonitoringStateChange();
- }
-
- @Override
- public void onPrimaryClick(HomepageCard homepageCard) {
- final ConditionCard card = (ConditionCard) homepageCard;
- mConditionManager.onPrimaryClick(mContext, card.getConditionId());
-
- }
-
- @Override
- public void onActionClick(HomepageCard homepageCard) {
- final ConditionCard card = (ConditionCard) homepageCard;
- mConditionManager.onActionClick(card.getConditionId());
- }
-
- @Override
- public void onConditionsChanged() {
- final List<HomepageCard> conditionCards = new ArrayList<>();
- final List<ConditionalCard> conditionList = mConditionManager.getDisplayableCards();
-
- for (ConditionalCard condition : conditionList) {
- final ConditionCard conditionCard = ((ConditionCard.Builder) new ConditionCard.Builder()
- .setConditionId(condition.getId())
- .setMetricsConstant(condition.getMetricsConstant())
- .setActionText(condition.getActionText())
- .setName(mContext.getPackageName() + "/" + condition.getTitle().toString())
- .setCardType(HomepageCard.CardType.CONDITIONAL)
- .setTitleText(condition.getTitle().toString())
- .setSummaryText(condition.getSummary().toString())
- .setIconDrawable(condition.getIcon()))
- .build();
-
- conditionCards.add(conditionCard);
- }
-
- if (mListener != null) {
- onDataUpdated(conditionCards);
- }
- }
-}
diff --git a/src/com/android/settings/homepage/conditional/ConditionCard.java b/src/com/android/settings/homepage/conditional/ConditionalContextualCard.java
similarity index 80%
rename from src/com/android/settings/homepage/conditional/ConditionCard.java
rename to src/com/android/settings/homepage/conditional/ConditionalContextualCard.java
index 9f445b2..62a4956 100644
--- a/src/com/android/settings/homepage/conditional/ConditionCard.java
+++ b/src/com/android/settings/homepage/conditional/ConditionalContextualCard.java
@@ -16,21 +16,21 @@
package com.android.settings.homepage.conditional;
-import com.android.settings.homepage.HomepageCard;
+import com.android.settings.homepage.ContextualCard;
/**
- * Data class representing a {@link ConditionCard}.
+ * Data class representing a conditional {@link ContextualCard}.
*
- * Use this class to store additional attributes on top of {@link HomepageCard} for
+ * Use this class to store additional attributes on top of {@link ContextualCard} for
* {@link ConditionalCard}.
*/
-public class ConditionCard extends HomepageCard {
+public class ConditionalContextualCard extends ContextualCard {
private final long mConditionId;
private final int mMetricsConstant;
private final CharSequence mActionText;
- private ConditionCard(Builder builder) {
+ private ConditionalContextualCard(Builder builder) {
super(builder);
mConditionId = builder.mConditionId;
@@ -50,7 +50,7 @@
return mActionText;
}
- static class Builder extends HomepageCard.Builder {
+ static class Builder extends ContextualCard.Builder {
private long mConditionId;
private int mMetricsConstant;
@@ -71,8 +71,8 @@
return this;
}
- public ConditionCard build() {
- return new ConditionCard(this);
+ public ConditionalContextualCard build() {
+ return new ConditionalContextualCard(this);
}
}
}
\ No newline at end of file
diff --git a/tests/robotests/src/com/android/settings/homepage/conditional/ConditionHomepageCardControllerTest.java b/tests/robotests/src/com/android/settings/homepage/conditional/ConditionContextualCardControllerTest.java
similarity index 91%
rename from tests/robotests/src/com/android/settings/homepage/conditional/ConditionHomepageCardControllerTest.java
rename to tests/robotests/src/com/android/settings/homepage/conditional/ConditionContextualCardControllerTest.java
index 2b8ab00..ed45ce7 100644
--- a/tests/robotests/src/com/android/settings/homepage/conditional/ConditionHomepageCardControllerTest.java
+++ b/tests/robotests/src/com/android/settings/homepage/conditional/ConditionContextualCardControllerTest.java
@@ -26,7 +26,7 @@
import android.graphics.drawable.Drawable;
import com.android.settings.R;
-import com.android.settings.homepage.HomepageCardUpdateListener;
+import com.android.settings.homepage.ContextualCardUpdateListener;
import com.android.settings.testutils.SettingsRobolectricTestRunner;
import org.junit.Before;
@@ -41,20 +41,20 @@
import java.util.List;
@RunWith(SettingsRobolectricTestRunner.class)
-public class ConditionHomepageCardControllerTest {
+public class ConditionContextualCardControllerTest {
@Mock
private ConditionManager mConditionManager;
@Mock
- private HomepageCardUpdateListener mListener;
+ private ContextualCardUpdateListener mListener;
private Context mContext;
- private ConditionHomepageCardController mController;
+ private ConditionContextualCardController mController;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
mContext = spy(RuntimeEnvironment.application);
- mController = spy(new ConditionHomepageCardController(mContext));
+ mController = spy(new ConditionContextualCardController(mContext));
ReflectionHelpers.setField(mController, "mConditionManager", mConditionManager);
}
@@ -78,7 +78,7 @@
final List<ConditionalCard> conditionalCards = new ArrayList<>();
conditionalCards.add(fakeConditionalCard);
when(mConditionManager.getDisplayableCards()).thenReturn(conditionalCards);
- mController.setHomepageCardUpdateListener(mListener);
+ mController.setCardUpdateListener(mListener);
mController.onConditionsChanged();
diff --git a/tests/robotests/src/com/android/settings/homepage/conditional/ConditionHomepageCardRendererTest.java b/tests/robotests/src/com/android/settings/homepage/conditional/ConditionContextualCardRendererTest.java
similarity index 79%
rename from tests/robotests/src/com/android/settings/homepage/conditional/ConditionHomepageCardRendererTest.java
rename to tests/robotests/src/com/android/settings/homepage/conditional/ConditionContextualCardRendererTest.java
index 663931a..1ee052d 100644
--- a/tests/robotests/src/com/android/settings/homepage/conditional/ConditionHomepageCardRendererTest.java
+++ b/tests/robotests/src/com/android/settings/homepage/conditional/ConditionContextualCardRendererTest.java
@@ -31,8 +31,8 @@
import androidx.recyclerview.widget.RecyclerView;
import com.android.settings.R;
+import com.android.settings.homepage.ContextualCard;
import com.android.settings.homepage.ControllerRendererPool;
-import com.android.settings.homepage.HomepageCard;
import com.android.settings.testutils.SettingsRobolectricTestRunner;
import org.junit.Before;
@@ -43,20 +43,20 @@
import org.robolectric.RuntimeEnvironment;
@RunWith(SettingsRobolectricTestRunner.class)
-public class ConditionHomepageCardRendererTest {
+public class ConditionContextualCardRendererTest {
@Mock
private ControllerRendererPool mControllerRendererPool;
@Mock
- private ConditionHomepageCardController mController;
+ private ConditionContextualCardController mController;
private Context mContext;
- private ConditionHomepageCardRenderer mRenderer;
+ private ConditionContextualCardRenderer mRenderer;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
mContext = spy(RuntimeEnvironment.application);
- mRenderer = new ConditionHomepageCardRenderer(mContext, mControllerRendererPool);
+ mRenderer = new ConditionContextualCardRenderer(mContext, mControllerRendererPool);
}
@Test
@@ -68,9 +68,9 @@
final RecyclerView.ViewHolder viewHolder = mRenderer.createViewHolder(view);
final View card = view.findViewById(R.id.content);
when(mControllerRendererPool.getController(mContext,
- HomepageCard.CardType.CONDITIONAL)).thenReturn(mController);
+ ContextualCard.CardType.CONDITIONAL)).thenReturn(mController);
- mRenderer.bindView(viewHolder, getHomepageCard());
+ mRenderer.bindView(viewHolder, buildConditionContextualCard());
assertThat(card).isNotNull();
assertThat(card.hasOnClickListeners()).isTrue();
@@ -85,28 +85,27 @@
final RecyclerView.ViewHolder viewHolder = mRenderer.createViewHolder(view);
final View card = view.findViewById(R.id.content);
when(mControllerRendererPool.getController(mContext,
- HomepageCard.CardType.CONDITIONAL)).thenReturn(mController);
+ ContextualCard.CardType.CONDITIONAL)).thenReturn(mController);
- mRenderer.bindView(viewHolder, getHomepageCard());
+ mRenderer.bindView(viewHolder, buildConditionContextualCard());
assertThat(card).isNotNull();
card.performClick();
- verify(mController).onPrimaryClick(any(HomepageCard.class));
+ verify(mController).onPrimaryClick(any(ContextualCard.class));
}
- private HomepageCard getHomepageCard() {
- ConditionCard conditionCard = ((ConditionCard.Builder) new ConditionCard.Builder()
+ private ContextualCard buildConditionContextualCard() {
+ return new ConditionalContextualCard.Builder()
.setConditionId(123)
.setMetricsConstant(1)
.setActionText("test_action")
.setName("test_name")
- .setCardType(HomepageCard.CardType.CONDITIONAL)
+ .setCardType(ContextualCard.CardType.CONDITIONAL)
.setTitleText("test_title")
.setSummaryText("test_summary")
.setIconDrawable(mContext.getDrawable(R.drawable.ic_do_not_disturb_on_24dp))
- .setIsHalfWidth(true))
+ .setIsHalfWidth(true)
.build();
- return conditionCard;
}
}