summaryrefslogtreecommitdiff
path: root/java
diff options
context:
space:
mode:
authormaxwelb <maxwelb@google.com>2018-05-04 15:27:08 -0700
committerCopybara-Service <copybara-piper@google.com>2018-05-09 16:49:07 -0700
commit830da7cfa269e7af044cf6df5a86cb9ea6aef685 (patch)
tree7d9c2a4e8ee55ac37bcb7f916e26a8378e2e8fdb /java
parent3768a7aa54bdcb14046df258585dfdbc5b04fbb8 (diff)
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
Diffstat (limited to 'java')
-rw-r--r--java/com/android/incallui/call/CallList.java90
1 files changed, 51 insertions, 39 deletions
diff --git a/java/com/android/incallui/call/CallList.java b/java/com/android/incallui/call/CallList.java
index 5d9db32d9..1b2670eed 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.FilteredNumberAsyncQueryHandler;
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.metrics.MetricsComponent;
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 @@ public class CallList implements DialerCallDelegate {
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;
- }
- }
-
- 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();
+ ListenableFuture<SpamStatus> futureSpamStatus =
+ SpamComponent.get(context).spam().checkSpamStatus(number, call.getCountryIso());
+
+ 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);