Merge "[DO NOT MERGE] Fix the blank space on contextual card loading timeout" into rvc-qpr-dev

This commit is contained in:
Jason Chiu
2020-09-25 07:05:25 +00:00
committed by Android (Google) Code Review
2 changed files with 38 additions and 4 deletions

View File

@@ -266,6 +266,15 @@ public class ContextualCardManager implements ContextualCardLoader.CardContentLo
SettingsEnums.ACTION_CONTEXTUAL_CARD_LOAD_TIMEOUT, SettingsEnums.ACTION_CONTEXTUAL_CARD_LOAD_TIMEOUT,
SettingsEnums.SETTINGS_HOMEPAGE, SettingsEnums.SETTINGS_HOMEPAGE,
null /* key */, (int) loadTime /* value */); null /* key */, (int) loadTime /* value */);
// display a card on timeout if the one-card space is pre-allocated
if (!cards.isEmpty() && ContextualCardLoader.getCardCount(mContext) == 1) {
onContextualCardUpdated(cards.stream()
.collect(groupingBy(ContextualCard::getCardType)));
metricsFeatureProvider.action(mContext,
SettingsEnums.ACTION_CONTEXTUAL_CARD_SHOW,
ContextualCardLogUtils.buildCardListLog(cards));
}
} }
// only log homepage display upon a fresh launch // only log homepage display upon a fresh launch
final long totalTime = System.currentTimeMillis() - mStartTime; final long totalTime = System.currentTimeMillis() - mStartTime;

View File

@@ -16,6 +16,7 @@
package com.android.settings.homepage.contextualcards; package com.android.settings.homepage.contextualcards;
import static com.android.settings.homepage.contextualcards.ContextualCardLoader.CONTEXTUAL_CARD_COUNT;
import static com.android.settings.homepage.contextualcards.ContextualCardManager.KEY_CONTEXTUAL_CARDS; import static com.android.settings.homepage.contextualcards.ContextualCardManager.KEY_CONTEXTUAL_CARDS;
import static com.android.settings.homepage.contextualcards.slices.SliceContextualCardRenderer.VIEW_TYPE_FULL_WIDTH; 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.android.settings.homepage.contextualcards.slices.SliceContextualCardRenderer.VIEW_TYPE_HALF_WIDTH;
@@ -307,7 +308,7 @@ public class ContextualCardManagerTest {
} }
@Test @Test
public void onFinishCardLoading_fastLoad_shouldCallOnContextualCardUpdated() { public void onFinishCardLoading_fastLoad_shouldUpdateContextualCard() {
mManager.mStartTime = System.currentTimeMillis(); mManager.mStartTime = System.currentTimeMillis();
final ContextualCardManager manager = spy(mManager); final ContextualCardManager manager = spy(mManager);
doNothing().when(manager).onContextualCardUpdated(anyMap()); doNothing().when(manager).onContextualCardUpdated(anyMap());
@@ -318,7 +319,7 @@ public class ContextualCardManagerTest {
} }
@Test @Test
public void onFinishCardLoading_slowLoad_shouldSkipOnContextualCardUpdated() { public void onFinishCardLoading_slowLoadAndNoCard_shouldNotUpdateContextualCard() {
mManager.mStartTime = 0; mManager.mStartTime = 0;
final ContextualCardManager manager = spy(mManager); final ContextualCardManager manager = spy(mManager);
doNothing().when(manager).onContextualCardUpdated(anyMap()); doNothing().when(manager).onContextualCardUpdated(anyMap());
@@ -328,6 +329,30 @@ public class ContextualCardManagerTest {
verify(manager, never()).onContextualCardUpdated(anyMap()); verify(manager, never()).onContextualCardUpdated(anyMap());
} }
@Test
public void onFinishCardLoading_slowLoadAndNotPreAllocateSpace_shouldNotUpdateContextualCard() {
mManager.mStartTime = 0;
Settings.Global.putInt(mContext.getContentResolver(), CONTEXTUAL_CARD_COUNT, 3);
final ContextualCardManager manager = spy(mManager);
doNothing().when(manager).onContextualCardUpdated(anyMap());
manager.onFinishCardLoading(Arrays.asList(buildContextualCard(TEST_SLICE_URI)));
verify(manager, never()).onContextualCardUpdated(anyMap());
}
@Test
public void onFinishCardLoading_slowLoadAndPreAllocateSpace_shouldUpdateContextualCard() {
mManager.mStartTime = 0;
Settings.Global.putInt(mContext.getContentResolver(), CONTEXTUAL_CARD_COUNT, 1);
final ContextualCardManager manager = spy(mManager);
doNothing().when(manager).onContextualCardUpdated(anyMap());
manager.onFinishCardLoading(Arrays.asList(buildContextualCard(TEST_SLICE_URI)));
verify(manager).onContextualCardUpdated(anyMap());
}
@Test @Test
public void onFinishCardLoading_newLaunch_twoLoadedCards_shouldShowTwoCards() { public void onFinishCardLoading_newLaunch_twoLoadedCards_shouldShowTwoCards() {
mManager.mStartTime = System.currentTimeMillis(); mManager.mStartTime = System.currentTimeMillis();