Loading src/com/android/settings/homepage/contextualcards/slices/SliceContextualCardRenderer.java +4 −5 Original line number Diff line number Diff line Loading @@ -60,7 +60,7 @@ public class SliceContextualCardRenderer implements ContextualCardRenderer, private static final String TAG = "SliceCardRenderer"; @VisibleForTesting final Map<String, LiveData<Slice>> mSliceLiveDataMap; final Map<Uri, LiveData<Slice>> mSliceLiveDataMap; @VisibleForTesting final Set<SliceViewHolder> mFlippedCardSet; Loading Loading @@ -95,8 +95,6 @@ public class SliceContextualCardRenderer implements ContextualCardRenderer, final SliceViewHolder cardHolder = (SliceViewHolder) holder; final Uri uri = card.getSliceUri(); //TODO(b/116063073): The URI check should be done earlier when we are performing final // filtering after having the full list. if (!ContentResolver.SCHEME_CONTENT.equals(uri.getScheme())) { Log.w(TAG, "Invalid uri, skipping slice: " + uri); return; Loading @@ -106,11 +104,11 @@ public class SliceContextualCardRenderer implements ContextualCardRenderer, cardHolder.sliceView.setTag(uri); //TODO(b/114009676): We will soon have a field to decide what slice mode we should set. cardHolder.sliceView.setMode(SliceView.MODE_LARGE); LiveData<Slice> sliceLiveData = mSliceLiveDataMap.get(uri.toString()); LiveData<Slice> sliceLiveData = mSliceLiveDataMap.get(uri); if (sliceLiveData == null) { sliceLiveData = SliceLiveData.fromUri(mContext, uri); mSliceLiveDataMap.put(uri.toString(), sliceLiveData); mSliceLiveDataMap.put(uri, sliceLiveData); } mCardSet.add(card); Loading Loading @@ -146,6 +144,7 @@ public class SliceContextualCardRenderer implements ContextualCardRenderer, mControllerRendererPool.getController(mContext, card.getCardType()).onDismissed(card); cardHolder.resetCard(); mFlippedCardSet.remove(cardHolder); mSliceLiveDataMap.get(card.getSliceUri()).removeObservers(mLifecycleOwner); }); } Loading tests/robotests/src/com/android/settings/homepage/contextualcards/slices/SliceContextualCardRendererTest.java +21 −4 Original line number Diff line number Diff line Loading @@ -52,7 +52,7 @@ import org.robolectric.android.controller.ActivityController; @RunWith(SettingsRobolectricTestRunner.class) public class SliceContextualCardRendererTest { private static final String TEST_SLICE_URI = "content://test/test"; private static final Uri TEST_SLICE_URI = Uri.parse("content://test/test"); @Mock private LiveData<Slice> mSliceLiveData; Loading Loading @@ -91,7 +91,7 @@ public class SliceContextualCardRendererTest { @Test public void bindView_invalidScheme_sliceShouldBeNull() { final String sliceUri = "contet://com.android.settings.slices/action/flashlight"; final Uri sliceUri = Uri.parse("contet://com.android.settings.slices/action/flashlight"); RecyclerView.ViewHolder viewHolder = getSliceViewHolder(); mRenderer.bindView(viewHolder, buildContextualCard(sliceUri)); Loading Loading @@ -191,6 +191,23 @@ public class SliceContextualCardRendererTest { assertThat(mRenderer.mFlippedCardSet).doesNotContain(viewHolder); } @Test public void viewClick_removeCard_sliceLiveDataShouldRemoveObservers() { final RecyclerView.ViewHolder viewHolder = getSliceViewHolder(); final View card = viewHolder.itemView.findViewById(R.id.slice_view); final Button btnRemove = viewHolder.itemView.findViewById(R.id.remove); final ContextualCard contextualCard = buildContextualCard(TEST_SLICE_URI); mRenderer.mSliceLiveDataMap.put(TEST_SLICE_URI, mSliceLiveData); mRenderer.bindView(viewHolder, contextualCard); doReturn(mController).when(mControllerRendererPool).getController(mActivity, ContextualCard.CardType.SLICE); card.performLongClick(); btnRemove.performClick(); assertThat(mRenderer.mSliceLiveDataMap.get(TEST_SLICE_URI).hasObservers()).isFalse(); } @Test public void onStop_cardIsFlipped_shouldFlipBack() { final RecyclerView.ViewHolder viewHolder = getSliceViewHolder(); Loading @@ -213,11 +230,11 @@ public class SliceContextualCardRendererTest { return mRenderer.createViewHolder(view); } private ContextualCard buildContextualCard(String sliceUri) { private ContextualCard buildContextualCard(Uri sliceUri) { return new ContextualCard.Builder() .setName("test_name") .setCardType(ContextualCard.CardType.SLICE) .setSliceUri(Uri.parse(sliceUri)) .setSliceUri(sliceUri) .build(); } } Loading
src/com/android/settings/homepage/contextualcards/slices/SliceContextualCardRenderer.java +4 −5 Original line number Diff line number Diff line Loading @@ -60,7 +60,7 @@ public class SliceContextualCardRenderer implements ContextualCardRenderer, private static final String TAG = "SliceCardRenderer"; @VisibleForTesting final Map<String, LiveData<Slice>> mSliceLiveDataMap; final Map<Uri, LiveData<Slice>> mSliceLiveDataMap; @VisibleForTesting final Set<SliceViewHolder> mFlippedCardSet; Loading Loading @@ -95,8 +95,6 @@ public class SliceContextualCardRenderer implements ContextualCardRenderer, final SliceViewHolder cardHolder = (SliceViewHolder) holder; final Uri uri = card.getSliceUri(); //TODO(b/116063073): The URI check should be done earlier when we are performing final // filtering after having the full list. if (!ContentResolver.SCHEME_CONTENT.equals(uri.getScheme())) { Log.w(TAG, "Invalid uri, skipping slice: " + uri); return; Loading @@ -106,11 +104,11 @@ public class SliceContextualCardRenderer implements ContextualCardRenderer, cardHolder.sliceView.setTag(uri); //TODO(b/114009676): We will soon have a field to decide what slice mode we should set. cardHolder.sliceView.setMode(SliceView.MODE_LARGE); LiveData<Slice> sliceLiveData = mSliceLiveDataMap.get(uri.toString()); LiveData<Slice> sliceLiveData = mSliceLiveDataMap.get(uri); if (sliceLiveData == null) { sliceLiveData = SliceLiveData.fromUri(mContext, uri); mSliceLiveDataMap.put(uri.toString(), sliceLiveData); mSliceLiveDataMap.put(uri, sliceLiveData); } mCardSet.add(card); Loading Loading @@ -146,6 +144,7 @@ public class SliceContextualCardRenderer implements ContextualCardRenderer, mControllerRendererPool.getController(mContext, card.getCardType()).onDismissed(card); cardHolder.resetCard(); mFlippedCardSet.remove(cardHolder); mSliceLiveDataMap.get(card.getSliceUri()).removeObservers(mLifecycleOwner); }); } Loading
tests/robotests/src/com/android/settings/homepage/contextualcards/slices/SliceContextualCardRendererTest.java +21 −4 Original line number Diff line number Diff line Loading @@ -52,7 +52,7 @@ import org.robolectric.android.controller.ActivityController; @RunWith(SettingsRobolectricTestRunner.class) public class SliceContextualCardRendererTest { private static final String TEST_SLICE_URI = "content://test/test"; private static final Uri TEST_SLICE_URI = Uri.parse("content://test/test"); @Mock private LiveData<Slice> mSliceLiveData; Loading Loading @@ -91,7 +91,7 @@ public class SliceContextualCardRendererTest { @Test public void bindView_invalidScheme_sliceShouldBeNull() { final String sliceUri = "contet://com.android.settings.slices/action/flashlight"; final Uri sliceUri = Uri.parse("contet://com.android.settings.slices/action/flashlight"); RecyclerView.ViewHolder viewHolder = getSliceViewHolder(); mRenderer.bindView(viewHolder, buildContextualCard(sliceUri)); Loading Loading @@ -191,6 +191,23 @@ public class SliceContextualCardRendererTest { assertThat(mRenderer.mFlippedCardSet).doesNotContain(viewHolder); } @Test public void viewClick_removeCard_sliceLiveDataShouldRemoveObservers() { final RecyclerView.ViewHolder viewHolder = getSliceViewHolder(); final View card = viewHolder.itemView.findViewById(R.id.slice_view); final Button btnRemove = viewHolder.itemView.findViewById(R.id.remove); final ContextualCard contextualCard = buildContextualCard(TEST_SLICE_URI); mRenderer.mSliceLiveDataMap.put(TEST_SLICE_URI, mSliceLiveData); mRenderer.bindView(viewHolder, contextualCard); doReturn(mController).when(mControllerRendererPool).getController(mActivity, ContextualCard.CardType.SLICE); card.performLongClick(); btnRemove.performClick(); assertThat(mRenderer.mSliceLiveDataMap.get(TEST_SLICE_URI).hasObservers()).isFalse(); } @Test public void onStop_cardIsFlipped_shouldFlipBack() { final RecyclerView.ViewHolder viewHolder = getSliceViewHolder(); Loading @@ -213,11 +230,11 @@ public class SliceContextualCardRendererTest { return mRenderer.createViewHolder(view); } private ContextualCard buildContextualCard(String sliceUri) { private ContextualCard buildContextualCard(Uri sliceUri) { return new ContextualCard.Builder() .setName("test_name") .setCardType(ContextualCard.CardType.SLICE) .setSliceUri(Uri.parse(sliceUri)) .setSliceUri(sliceUri) .build(); } }