[DO NOT MERGE] Fix the blank space on contextual card loading timeout am: 4753adfb52
Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Settings/+/12533604 Change-Id: I974883a20ebcac94cf72ccbfdd9cab18b23d1690
This commit is contained in:
@@ -243,7 +243,7 @@ public class ContextualCardManager implements ContextualCardLoader.CardContentLo
|
|||||||
final MetricsFeatureProvider metricsFeatureProvider =
|
final MetricsFeatureProvider metricsFeatureProvider =
|
||||||
FeatureFactory.getFactory(mContext).getMetricsFeatureProvider();
|
FeatureFactory.getFactory(mContext).getMetricsFeatureProvider();
|
||||||
|
|
||||||
//navigate back to the homepage, screen rotate or after card dismissal
|
// navigate back to the homepage, screen rotate or after card dismissal
|
||||||
if (!mIsFirstLaunch) {
|
if (!mIsFirstLaunch) {
|
||||||
onContextualCardUpdated(cardsToKeep.stream()
|
onContextualCardUpdated(cardsToKeep.stream()
|
||||||
.collect(groupingBy(ContextualCard::getCardType)));
|
.collect(groupingBy(ContextualCard::getCardType)));
|
||||||
@@ -266,8 +266,17 @@ 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;
|
||||||
metricsFeatureProvider.action(mContext,
|
metricsFeatureProvider.action(mContext,
|
||||||
SettingsEnums.ACTION_CONTEXTUAL_HOME_SHOW, (int) totalTime);
|
SettingsEnums.ACTION_CONTEXTUAL_HOME_SHOW, (int) totalTime);
|
||||||
|
@@ -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();
|
||||||
|
Reference in New Issue
Block a user