Update callers of checkSpamStatus to use Future based API

Bug: 79171382
Test: Tap, manually verified spam calls (and autoblock)
PiperOrigin-RevId: 195480993
Change-Id: Ifefee382ae6181c20e83d16b2e0519dd05e60c6a
diff --git a/java/com/android/incallui/call/CallList.java b/java/com/android/incallui/call/CallList.java
index 5d9db32..1b2670e 100644
--- a/java/com/android/incallui/call/CallList.java
+++ b/java/com/android/incallui/call/CallList.java
@@ -32,6 +32,7 @@
 import com.android.dialer.blocking.FilteredNumbersUtil;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
+import com.android.dialer.common.concurrent.DialerExecutorComponent;
 import com.android.dialer.enrichedcall.EnrichedCallComponent;
 import com.android.dialer.enrichedcall.EnrichedCallManager;
 import com.android.dialer.logging.DialerImpression;
@@ -41,10 +42,14 @@
 import com.android.dialer.shortcuts.ShortcutUsageReporter;
 import com.android.dialer.spam.Spam;
 import com.android.dialer.spam.SpamComponent;
+import com.android.dialer.spam.SpamStatus;
 import com.android.dialer.telecom.TelecomCallUtil;
 import com.android.incallui.call.state.DialerCallState;
 import com.android.incallui.latencyreport.LatencyReport;
 import com.android.incallui.videotech.utils.SessionModificationState;
+import com.google.common.util.concurrent.FutureCallback;
+import com.google.common.util.concurrent.Futures;
+import com.google.common.util.concurrent.ListenableFuture;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.Iterator;
@@ -146,46 +151,53 @@
     LogUtil.d("CallList.onCallAdded", "callState=" + call.getState());
     if (SpamComponent.get(context).spamSettings().isSpamEnabled()) {
       String number = TelecomCallUtil.getNumber(telecomCall);
-      SpamComponent.get(context)
-          .spam()
-          .checkSpamStatus(
-              number,
-              call.getCountryIso(),
-              new Spam.Listener() {
-                @Override
-                public void onComplete(boolean isSpam) {
-                  boolean isIncomingCall =
-                      call.getState() == DialerCallState.INCOMING
-                          || call.getState() == DialerCallState.CALL_WAITING;
-                  if (isSpam) {
-                    if (!isIncomingCall) {
-                      LogUtil.i(
-                          "CallList.onCallAdded",
-                          "marking spam call as not spam because it's not an incoming call");
-                      isSpam = false;
-                    } else if (isPotentialEmergencyCallback(context, call)) {
-                      LogUtil.i(
-                          "CallList.onCallAdded",
-                          "marking spam call as not spam because an emergency call was made on this"
-                              + " device recently");
-                      isSpam = false;
-                    }
-                  }
+      ListenableFuture<SpamStatus> futureSpamStatus =
+          SpamComponent.get(context).spam().checkSpamStatus(number, call.getCountryIso());
 
-                  if (isIncomingCall) {
-                    Logger.get(context)
-                        .logCallImpression(
-                            isSpam
-                                ? DialerImpression.Type.INCOMING_SPAM_CALL
-                                : DialerImpression.Type.INCOMING_NON_SPAM_CALL,
-                            call.getUniqueCallId(),
-                            call.getTimeAddedMs());
-                  }
-                  call.setSpam(isSpam);
-                  onUpdateCall(call);
-                  notifyGenericListeners();
+      Futures.addCallback(
+          futureSpamStatus,
+          new FutureCallback<SpamStatus>() {
+            @Override
+            public void onSuccess(@Nullable SpamStatus result) {
+              boolean isIncomingCall =
+                  call.getState() == DialerCallState.INCOMING
+                      || call.getState() == DialerCallState.CALL_WAITING;
+              boolean isSpam = result.isSpam();
+              if (isSpam) {
+                if (!isIncomingCall) {
+                  LogUtil.i(
+                      "CallList.onCallAdded",
+                      "marking spam call as not spam because it's not an incoming call");
+                  isSpam = false;
+                } else if (isPotentialEmergencyCallback(context, call)) {
+                  LogUtil.i(
+                      "CallList.onCallAdded",
+                      "marking spam call as not spam because an emergency call was made on this"
+                          + " device recently");
+                  isSpam = false;
                 }
-              });
+              }
+
+              if (isIncomingCall) {
+                Logger.get(context)
+                    .logCallImpression(
+                        isSpam
+                            ? DialerImpression.Type.INCOMING_SPAM_CALL
+                            : DialerImpression.Type.INCOMING_NON_SPAM_CALL,
+                        call.getUniqueCallId(),
+                        call.getTimeAddedMs());
+              }
+              call.setSpam(isSpam);
+              onUpdateCall(call);
+              notifyGenericListeners();
+            }
+
+            @Override
+            public void onFailure(Throwable t) {
+              LogUtil.e("CallList.onFailure", "unable to query spam status", t);
+            }
+          },
+          DialerExecutorComponent.get(context).uiExecutor());
 
       Trace.beginSection("updateUserMarkedSpamStatus");
       updateUserMarkedSpamStatus(call, context, number);