summaryrefslogtreecommitdiff
path: root/java
diff options
context:
space:
mode:
authortwyen <twyen@google.com>2017-09-19 12:45:46 -0700
committerEric Erfanian <erfanian@google.com>2017-09-19 13:14:20 -0700
commit791f820f5108b3ea914690145ef261d6c01bf41a (patch)
treeccc4ba1be4af03ced6f837b0dc86bb9800ce9370 /java
parent69996319e81ae195ff7f45cc292bfea239af27e5 (diff)
Perform remote reachability query if caller is not in contacts
Lightbringer.supportsUpgrade() is changed to return absent optional when it does not have data for the number. Seeing this LightbringerTech will use Lightbringer.updateReachability() to retrieve it from the remote package, which will store it in the reachability cache. Bug: 63601277 Test: RemoteReachabillityQueryHandlerTest, LightbringerTechTest PiperOrigin-RevId: 169283953 Change-Id: I3f26d9158fc6cfed196fd533da2aad598c8e6a7a
Diffstat (limited to 'java')
-rw-r--r--java/com/android/dialer/lightbringer/Lightbringer.java24
-rw-r--r--java/com/android/dialer/lightbringer/stub/LightbringerStub.java13
-rw-r--r--java/com/android/incallui/videotech/lightbringer/LightbringerTech.java18
3 files changed, 48 insertions, 7 deletions
diff --git a/java/com/android/dialer/lightbringer/Lightbringer.java b/java/com/android/dialer/lightbringer/Lightbringer.java
index fa57b0166..2318ef5fd 100644
--- a/java/com/android/dialer/lightbringer/Lightbringer.java
+++ b/java/com/android/dialer/lightbringer/Lightbringer.java
@@ -25,6 +25,9 @@ import android.support.annotation.Nullable;
import android.support.annotation.StringRes;
import android.telecom.Call;
import android.telecom.PhoneAccountHandle;
+import com.google.auto.value.AutoValue;
+import com.google.common.base.Optional;
+import java.util.List;
public interface Lightbringer {
@@ -33,8 +36,12 @@ public interface Lightbringer {
@MainThread
boolean isReachable(@NonNull Context context, @Nullable String number);
+ /** @return {@code null} if result is unknown. */
@MainThread
- boolean supportsUpgrade(@NonNull Context context, @Nullable String number);
+ Optional<Boolean> supportsUpgrade(@NonNull Context context, @Nullable String number);
+
+ @MainThread
+ void updateReachability(@NonNull Context context, @NonNull List<String> numbers);
@MainThread
Intent getIntent(@NonNull Context context, @NonNull String number);
@@ -67,4 +74,19 @@ public interface Lightbringer {
@StringRes
@MainThread
int getIncomingCallTypeText();
+
+ /** Reachability information for a number. */
+ @AutoValue
+ abstract class ReachabilityData {
+ public abstract String number();
+
+ public abstract boolean videoCallable();
+
+ public abstract boolean supportsUpgrade();
+
+ public static ReachabilityData create(
+ String number, boolean videoCallable, boolean supportsUpgrade) {
+ return new AutoValue_Lightbringer_ReachabilityData(number, videoCallable, supportsUpgrade);
+ }
+ }
}
diff --git a/java/com/android/dialer/lightbringer/stub/LightbringerStub.java b/java/com/android/dialer/lightbringer/stub/LightbringerStub.java
index a0309220a..e66739113 100644
--- a/java/com/android/dialer/lightbringer/stub/LightbringerStub.java
+++ b/java/com/android/dialer/lightbringer/stub/LightbringerStub.java
@@ -28,6 +28,8 @@ import android.telecom.PhoneAccountHandle;
import com.android.dialer.common.Assert;
import com.android.dialer.lightbringer.Lightbringer;
import com.android.dialer.lightbringer.LightbringerListener;
+import com.google.common.base.Optional;
+import java.util.List;
import javax.inject.Inject;
public class LightbringerStub implements Lightbringer {
@@ -50,10 +52,17 @@ public class LightbringerStub implements Lightbringer {
@MainThread
@Override
- public boolean supportsUpgrade(@NonNull Context context, @Nullable String number) {
+ public Optional<Boolean> supportsUpgrade(@NonNull Context context, @Nullable String number) {
Assert.isMainThread();
Assert.isNotNull(context);
- return false;
+ return Optional.of(false);
+ }
+
+ @Override
+ public void updateReachability(@NonNull Context context, @NonNull List<String> numbers) {
+ Assert.isMainThread();
+ Assert.isNotNull(context);
+ Assert.isNotNull(numbers);
}
@MainThread
diff --git a/java/com/android/incallui/videotech/lightbringer/LightbringerTech.java b/java/com/android/incallui/videotech/lightbringer/LightbringerTech.java
index a807759db..4b6f5ec5a 100644
--- a/java/com/android/incallui/videotech/lightbringer/LightbringerTech.java
+++ b/java/com/android/incallui/videotech/lightbringer/LightbringerTech.java
@@ -31,6 +31,8 @@ import com.android.incallui.video.protocol.VideoCallScreen;
import com.android.incallui.video.protocol.VideoCallScreenDelegate;
import com.android.incallui.videotech.VideoTech;
import com.android.incallui.videotech.utils.SessionModificationState;
+import com.google.common.base.Optional;
+import com.google.common.collect.ImmutableList;
public class LightbringerTech implements VideoTech, LightbringerListener {
private final Lightbringer lightbringer;
@@ -38,6 +40,7 @@ public class LightbringerTech implements VideoTech, LightbringerListener {
private final Call call;
private final String callingNumber;
private int callState = Call.STATE_NEW;
+ private boolean isRemoteUpgradeAvailabilityQueried;
public LightbringerTech(
@NonNull Lightbringer lightbringer,
@@ -69,13 +72,20 @@ public class LightbringerTech implements VideoTech, LightbringerListener {
LogUtil.v("LightbringerTech.isAvailable", "upgrade unavailable, call must be active");
return false;
}
+ Optional<Boolean> localResult = lightbringer.supportsUpgrade(context, callingNumber);
+ if (localResult.isPresent()) {
+ LogUtil.v(
+ "LightbringerTech.isAvailable", "upgrade supported in local cache: " + localResult.get());
+ return localResult.get();
+ }
- if (!lightbringer.supportsUpgrade(context, callingNumber)) {
- LogUtil.v("LightbringerTech.isAvailable", "upgrade unavailable, number does not support it");
- return false;
+ if (!isRemoteUpgradeAvailabilityQueried) {
+ LogUtil.v("LightbringerTech.isAvailable", "reachability unknown, starting remote query");
+ isRemoteUpgradeAvailabilityQueried = true;
+ lightbringer.updateReachability(context, ImmutableList.of(callingNumber));
}
- return true;
+ return false;
}
@Override