summaryrefslogtreecommitdiffstats
path: root/java/com/android/dialer/calllog/RefreshAnnotatedCallLogReceiver.java
diff options
context:
space:
mode:
Diffstat (limited to 'java/com/android/dialer/calllog/RefreshAnnotatedCallLogReceiver.java')
-rw-r--r--java/com/android/dialer/calllog/RefreshAnnotatedCallLogReceiver.java54
1 files changed, 47 insertions, 7 deletions
diff --git a/java/com/android/dialer/calllog/RefreshAnnotatedCallLogReceiver.java b/java/com/android/dialer/calllog/RefreshAnnotatedCallLogReceiver.java
index 3019f5e3a..4a7ce0bac 100644
--- a/java/com/android/dialer/calllog/RefreshAnnotatedCallLogReceiver.java
+++ b/java/com/android/dialer/calllog/RefreshAnnotatedCallLogReceiver.java
@@ -24,12 +24,15 @@ import android.support.annotation.Nullable;
import com.android.dialer.calllog.RefreshAnnotatedCallLogWorker.RefreshResult;
import com.android.dialer.calllog.constants.IntentNames;
import com.android.dialer.common.LogUtil;
-import com.android.dialer.common.concurrent.DefaultFutureCallback;
import com.android.dialer.common.concurrent.ThreadUtil;
+import com.android.dialer.logging.DialerImpression;
+import com.android.dialer.logging.Logger;
+import com.android.dialer.logging.LoggingBindings;
import com.android.dialer.metrics.FutureTimer;
import com.android.dialer.metrics.Metrics;
import com.android.dialer.metrics.MetricsComponent;
import com.google.common.base.Function;
+import com.google.common.util.concurrent.FutureCallback;
import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.ListenableFuture;
import com.google.common.util.concurrent.MoreExecutors;
@@ -49,6 +52,7 @@ public final class RefreshAnnotatedCallLogReceiver extends BroadcastReceiver {
private final RefreshAnnotatedCallLogWorker refreshAnnotatedCallLogWorker;
private final FutureTimer futureTimer;
+ private final LoggingBindings logger;
@Nullable private Runnable refreshAnnotatedCallLogRunnable;
@@ -64,6 +68,7 @@ public final class RefreshAnnotatedCallLogReceiver extends BroadcastReceiver {
refreshAnnotatedCallLogWorker =
CallLogComponent.get(context).getRefreshAnnotatedCallLogWorker();
futureTimer = MetricsComponent.get(context).futureTimer();
+ logger = Logger.get(context);
}
@Override
@@ -109,9 +114,24 @@ public final class RefreshAnnotatedCallLogReceiver extends BroadcastReceiver {
? refreshAnnotatedCallLogWorker.refreshWithDirtyCheck()
: refreshAnnotatedCallLogWorker.refreshWithoutDirtyCheck();
Futures.addCallback(
- future, new DefaultFutureCallback<>(), MoreExecutors.directExecutor());
+ future,
+ new FutureCallback<RefreshResult>() {
+ @Override
+ public void onSuccess(RefreshResult refreshResult) {
+ logger.logImpression(getImpressionType(checkDirty, refreshResult));
+ }
+
+ @Override
+ public void onFailure(Throwable throwable) {
+ ThreadUtil.getUiThreadHandler()
+ .post(
+ () -> {
+ throw new RuntimeException(throwable);
+ });
+ }
+ },
+ MoreExecutors.directExecutor());
futureTimer.applyTiming(future, new EventNameFromResultFunction(checkDirty));
- // TODO(zachh): Should also log impression counts of RefreshResults.
};
ThreadUtil.getUiThreadHandler()
@@ -140,16 +160,36 @@ public final class RefreshAnnotatedCallLogReceiver extends BroadcastReceiver {
public String apply(RefreshResult refreshResult) {
switch (refreshResult) {
case NOT_DIRTY:
- return Metrics.REFRESH_NOT_DIRTY; // NOT_DIRTY implies forceRefresh is false
+ return Metrics.ANNOTATED_CALL_LOG_NOT_DIRTY; // NOT_DIRTY implies forceRefresh is false
case REBUILT_BUT_NO_CHANGES_NEEDED:
return checkDirty
- ? Metrics.REFRESH_NO_CHANGES_NEEDED
- : Metrics.FORCE_REFRESH_NO_CHANGES_NEEDED;
+ ? Metrics.ANNOTATED_LOG_NO_CHANGES_NEEDED
+ : Metrics.NEW_CALL_LOG_FORCE_REFRESH_NO_CHANGES_NEEDED;
case REBUILT_AND_CHANGES_NEEDED:
- return checkDirty ? Metrics.REFRESH_CHANGES_NEEDED : Metrics.FORCE_REFRESH_CHANGES_NEEDED;
+ return checkDirty
+ ? Metrics.ANNOTATED_CALL_LOG_CHANGES_NEEDED
+ : Metrics.ANNOTATED_CALL_LOG_FORCE_REFRESH_CHANGES_NEEDED;
default:
throw new IllegalStateException("Unsupported result: " + refreshResult);
}
}
}
+
+ private static DialerImpression.Type getImpressionType(
+ boolean checkDirty, RefreshResult refreshResult) {
+ switch (refreshResult) {
+ case NOT_DIRTY:
+ return DialerImpression.Type.ANNOTATED_CALL_LOG_NOT_DIRTY;
+ case REBUILT_BUT_NO_CHANGES_NEEDED:
+ return checkDirty
+ ? DialerImpression.Type.ANNOTATED_CALL_LOG_NO_CHANGES_NEEDED
+ : DialerImpression.Type.ANNOTATED_CALL_LOG_FORCE_REFRESH_NO_CHANGES_NEEDED;
+ case REBUILT_AND_CHANGES_NEEDED:
+ return checkDirty
+ ? DialerImpression.Type.ANNOTATED_CALL_LOG_CHANGES_NEEDED
+ : DialerImpression.Type.ANNOTATED_CALL_LOG_FORCE_REFRESH_CHANGES_NEEDED;
+ default:
+ throw new IllegalStateException("Unsupported result: " + refreshResult);
+ }
+ }
}