Loading src/com/android/settings/homepage/contextualcards/ContextualCardLoader.java +0 −1 Original line number Diff line number Diff line Loading @@ -187,7 +187,6 @@ public class ContextualCardLoader extends AsyncLoaderCompat<List<ContextualCard> // Collect future and eligible cards for (Future<ContextualCard> cardFuture : eligibleCards) { try { //TODO(b/124492762): Log latency and timeout occurrence. final ContextualCard card = cardFuture.get(ELIGIBILITY_CHECKER_TIMEOUT_MS, TimeUnit.MILLISECONDS); if (card != null) { Loading src/com/android/settings/homepage/contextualcards/ContextualCardManager.java +14 −2 Original line number Diff line number Diff line Loading @@ -22,6 +22,7 @@ import static com.android.settings.intelligence.ContextualCardProto.ContextualCa import static java.util.stream.Collectors.groupingBy; import android.app.settings.SettingsEnums; import android.content.Context; import android.os.Bundle; import android.provider.Settings; Loading @@ -38,6 +39,7 @@ import androidx.loader.content.Loader; import com.android.settings.homepage.contextualcards.slices.SliceContextualCardRenderer; import com.android.settings.overlay.FeatureFactory; import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.core.lifecycle.LifecycleObserver; import com.android.settingslib.core.lifecycle.events.OnSaveInstanceState; Loading Loading @@ -195,8 +197,8 @@ public class ContextualCardManager implements ContextualCardLoader.CardContentLo @Override public void onFinishCardLoading(List<ContextualCard> cards) { final long loadTime = System.currentTimeMillis() - mStartTime; //TODO(b/123668403): remove the log here once we do the change with FutureTask Log.d(TAG, "Total loading time = " + loadTime); final List<ContextualCard> cardsToKeep = getCardsToKeep(cards); //navigate back to the homepage, screen rotate or after card dismissal Loading @@ -206,15 +208,25 @@ public class ContextualCardManager implements ContextualCardLoader.CardContentLo return; } //only log homepage display upon a fresh launch final MetricsFeatureProvider metricsFeatureProvider = FeatureFactory.getFactory(mContext).getMetricsFeatureProvider(); final long timeoutLimit = getCardLoaderTimeout(mContext); if (loadTime <= timeoutLimit) { onContextualCardUpdated(cards.stream() .collect(groupingBy(ContextualCard::getCardType))); } else { // log timeout occurrence metricsFeatureProvider.action(SettingsEnums.PAGE_UNKNOWN, SettingsEnums.ACTION_CONTEXTUAL_CARD_LOAD_TIMEOUT, SettingsEnums.SETTINGS_HOMEPAGE, null /* key */, (int) loadTime /* value */); } //only log homepage display upon a fresh launch final long totalTime = System.currentTimeMillis() - mStartTime; FeatureFactory.getFactory(mContext).getContextualCardFeatureProvider(mContext) .logHomepageDisplay(totalTime); metricsFeatureProvider.action(mContext, SettingsEnums.ACTION_CONTEXTUAL_HOME_SHOW, (int) totalTime); mIsFirstLaunch = false; } Loading src/com/android/settings/homepage/contextualcards/EligibleCardChecker.java +30 −1 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package com.android.settings.homepage.contextualcards; import static android.app.slice.Slice.HINT_ERROR; import android.app.settings.SettingsEnums; import android.content.ContentResolver; import android.content.Context; import android.net.Uri; Loading @@ -27,6 +28,9 @@ import androidx.annotation.VisibleForTesting; import androidx.slice.Slice; import androidx.slice.SliceViewManager; import com.android.settings.overlay.FeatureFactory; import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; import java.util.concurrent.Callable; import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; Loading @@ -46,7 +50,32 @@ public class EligibleCardChecker implements Callable<ContextualCard> { @Override public ContextualCard call() throws Exception { return isCardEligibleToDisplay(mCard) ? mCard : null; final long startTime = System.currentTimeMillis(); final MetricsFeatureProvider metricsFeatureProvider = FeatureFactory.getFactory(mContext).getMetricsFeatureProvider(); ContextualCard result; if (isCardEligibleToDisplay(mCard)) { metricsFeatureProvider.action(SettingsEnums.PAGE_UNKNOWN, SettingsEnums.ACTION_CONTEXTUAL_CARD_ELIGIBILITY, SettingsEnums.SETTINGS_HOMEPAGE, mCard.getTextSliceUri() /* key */, 1 /* true */); result = mCard; } else { metricsFeatureProvider.action(SettingsEnums.PAGE_UNKNOWN, SettingsEnums.ACTION_CONTEXTUAL_CARD_ELIGIBILITY, SettingsEnums.SETTINGS_HOMEPAGE, mCard.getTextSliceUri() /* key */, 0 /* false */); result = null; } // Log individual card loading time metricsFeatureProvider.action(SettingsEnums.PAGE_UNKNOWN, SettingsEnums.ACTION_CONTEXTUAL_CARD_LOAD, SettingsEnums.SETTINGS_HOMEPAGE, mCard.getTextSliceUri() /* key */, (int) (System.currentTimeMillis() - startTime) /* value */); return result; } @VisibleForTesting Loading Loading
src/com/android/settings/homepage/contextualcards/ContextualCardLoader.java +0 −1 Original line number Diff line number Diff line Loading @@ -187,7 +187,6 @@ public class ContextualCardLoader extends AsyncLoaderCompat<List<ContextualCard> // Collect future and eligible cards for (Future<ContextualCard> cardFuture : eligibleCards) { try { //TODO(b/124492762): Log latency and timeout occurrence. final ContextualCard card = cardFuture.get(ELIGIBILITY_CHECKER_TIMEOUT_MS, TimeUnit.MILLISECONDS); if (card != null) { Loading
src/com/android/settings/homepage/contextualcards/ContextualCardManager.java +14 −2 Original line number Diff line number Diff line Loading @@ -22,6 +22,7 @@ import static com.android.settings.intelligence.ContextualCardProto.ContextualCa import static java.util.stream.Collectors.groupingBy; import android.app.settings.SettingsEnums; import android.content.Context; import android.os.Bundle; import android.provider.Settings; Loading @@ -38,6 +39,7 @@ import androidx.loader.content.Loader; import com.android.settings.homepage.contextualcards.slices.SliceContextualCardRenderer; import com.android.settings.overlay.FeatureFactory; import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.core.lifecycle.LifecycleObserver; import com.android.settingslib.core.lifecycle.events.OnSaveInstanceState; Loading Loading @@ -195,8 +197,8 @@ public class ContextualCardManager implements ContextualCardLoader.CardContentLo @Override public void onFinishCardLoading(List<ContextualCard> cards) { final long loadTime = System.currentTimeMillis() - mStartTime; //TODO(b/123668403): remove the log here once we do the change with FutureTask Log.d(TAG, "Total loading time = " + loadTime); final List<ContextualCard> cardsToKeep = getCardsToKeep(cards); //navigate back to the homepage, screen rotate or after card dismissal Loading @@ -206,15 +208,25 @@ public class ContextualCardManager implements ContextualCardLoader.CardContentLo return; } //only log homepage display upon a fresh launch final MetricsFeatureProvider metricsFeatureProvider = FeatureFactory.getFactory(mContext).getMetricsFeatureProvider(); final long timeoutLimit = getCardLoaderTimeout(mContext); if (loadTime <= timeoutLimit) { onContextualCardUpdated(cards.stream() .collect(groupingBy(ContextualCard::getCardType))); } else { // log timeout occurrence metricsFeatureProvider.action(SettingsEnums.PAGE_UNKNOWN, SettingsEnums.ACTION_CONTEXTUAL_CARD_LOAD_TIMEOUT, SettingsEnums.SETTINGS_HOMEPAGE, null /* key */, (int) loadTime /* value */); } //only log homepage display upon a fresh launch final long totalTime = System.currentTimeMillis() - mStartTime; FeatureFactory.getFactory(mContext).getContextualCardFeatureProvider(mContext) .logHomepageDisplay(totalTime); metricsFeatureProvider.action(mContext, SettingsEnums.ACTION_CONTEXTUAL_HOME_SHOW, (int) totalTime); mIsFirstLaunch = false; } Loading
src/com/android/settings/homepage/contextualcards/EligibleCardChecker.java +30 −1 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package com.android.settings.homepage.contextualcards; import static android.app.slice.Slice.HINT_ERROR; import android.app.settings.SettingsEnums; import android.content.ContentResolver; import android.content.Context; import android.net.Uri; Loading @@ -27,6 +28,9 @@ import androidx.annotation.VisibleForTesting; import androidx.slice.Slice; import androidx.slice.SliceViewManager; import com.android.settings.overlay.FeatureFactory; import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; import java.util.concurrent.Callable; import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; Loading @@ -46,7 +50,32 @@ public class EligibleCardChecker implements Callable<ContextualCard> { @Override public ContextualCard call() throws Exception { return isCardEligibleToDisplay(mCard) ? mCard : null; final long startTime = System.currentTimeMillis(); final MetricsFeatureProvider metricsFeatureProvider = FeatureFactory.getFactory(mContext).getMetricsFeatureProvider(); ContextualCard result; if (isCardEligibleToDisplay(mCard)) { metricsFeatureProvider.action(SettingsEnums.PAGE_UNKNOWN, SettingsEnums.ACTION_CONTEXTUAL_CARD_ELIGIBILITY, SettingsEnums.SETTINGS_HOMEPAGE, mCard.getTextSliceUri() /* key */, 1 /* true */); result = mCard; } else { metricsFeatureProvider.action(SettingsEnums.PAGE_UNKNOWN, SettingsEnums.ACTION_CONTEXTUAL_CARD_ELIGIBILITY, SettingsEnums.SETTINGS_HOMEPAGE, mCard.getTextSliceUri() /* key */, 0 /* false */); result = null; } // Log individual card loading time metricsFeatureProvider.action(SettingsEnums.PAGE_UNKNOWN, SettingsEnums.ACTION_CONTEXTUAL_CARD_LOAD, SettingsEnums.SETTINGS_HOMEPAGE, mCard.getTextSliceUri() /* key */, (int) (System.currentTimeMillis() - startTime) /* value */); return result; } @VisibleForTesting Loading