summaryrefslogtreecommitdiff
path: root/java/com/android
diff options
context:
space:
mode:
authorerfanian <erfanian@google.com>2017-12-21 12:01:33 -0800
committerEric Erfanian <erfanian@google.com>2017-12-22 08:56:01 -0800
commit2cf2c3484c5f8dd11e6ad32633f7254119525413 (patch)
treeb4ed88351160ea63c2f0eb128cd01583cdbfc45b /java/com/android
parent9709446856e01c23cfd02f83f85ecd79bdd8f785 (diff)
Update assisted dialing extras in preparation for platform implementation.
* Use only one extra as if we were going to make a request of the Platform. * Modify the incallui to handle instances where the platform may not supply TransformationInfo. This should accommodate instances where the platform "used" assisted dialing, but did not provide the necessary TransformationInfo. Test: unit tests PiperOrigin-RevId: 179841752 Change-Id: I06411dc00812dba8978a2a090d8769dcce9b2ad6
Diffstat (limited to 'java/com/android')
-rw-r--r--java/com/android/dialer/compat/telephony/TelephonyManagerCompat.java14
-rw-r--r--java/com/android/dialer/precall/impl/AssistedDialAction.java6
-rw-r--r--java/com/android/incallui/call/DialerCall.java43
-rw-r--r--java/com/android/incallui/contactgrid/TopRow.java2
4 files changed, 47 insertions, 18 deletions
diff --git a/java/com/android/dialer/compat/telephony/TelephonyManagerCompat.java b/java/com/android/dialer/compat/telephony/TelephonyManagerCompat.java
index 6bed818da..b01689da4 100644
--- a/java/com/android/dialer/compat/telephony/TelephonyManagerCompat.java
+++ b/java/com/android/dialer/compat/telephony/TelephonyManagerCompat.java
@@ -57,22 +57,16 @@ public class TelephonyManagerCompat {
*
* <p>This signals to the telephony platform that an outgoing call qualifies for assisted dialing.
*/
- public static final String ALLOW_ASSISTED_DIAL = "android.telecom.extra.ALLOW_ASSISTED_DIAL";
-
- // TODO(erfanian): a bug Replace with the platform/telecom constant when available.
- /**
- * Indicates that an outgoing call has undergone assisted dialing.
- *
- * <p>Unlike {@link ALLOW_ASSISTED_DIAL}, the presence of this key further indicates that a call
- * has undergone Assisted Dialing -- not just that it qualified for Assisted Dialing.
- */
- public static final String IS_ASSISTED_DIALED = "android.telecom.extra.IS_ASSISTED_DIALED";
+ public static final String USE_ASSISTED_DIALING = "android.telecom.extra.USE_ASSISTED_DIALING";
// TODO(erfanian): a bug Replace with the platform/telecom API when available.
/** Additional information relating to the assisted dialing transformation. */
public static final String ASSISTED_DIALING_EXTRAS =
"android.telecom.extra.ASSISTED_DIALING_EXTRAS";
+ /** Indicates the Connection/Call used assisted dialing. */
+ public static final int PROPERTY_ASSISTED_DIALING_USED = 0x00000200;
+
public static final String EXTRA_IS_REFRESH =
BuildCompat.isAtLeastOMR1() ? "android.telephony.extra.IS_REFRESH" : "is_refresh";
diff --git a/java/com/android/dialer/precall/impl/AssistedDialAction.java b/java/com/android/dialer/precall/impl/AssistedDialAction.java
index c4f61d2dd..dc2510960 100644
--- a/java/com/android/dialer/precall/impl/AssistedDialAction.java
+++ b/java/com/android/dialer/precall/impl/AssistedDialAction.java
@@ -51,10 +51,12 @@ public class AssistedDialAction implements PreCallAction {
AssistedDialingMediator assistedDialingMediator =
ConcreteCreator.createNewAssistedDialingMediator(
context.getSystemService(TelephonyManager.class), context);
+ if (Build.VERSION.SDK_INT > ConcreteCreator.BUILD_CODE_CEILING) {
+ builder.getOutgoingCallExtras().putBoolean(TelephonyManagerCompat.USE_ASSISTED_DIALING, true);
+ }
if (!assistedDialingMediator.isPlatformEligible()) {
return;
}
- builder.getOutgoingCallExtras().putBoolean(TelephonyManagerCompat.ALLOW_ASSISTED_DIAL, true);
String phoneNumber =
builder.getUri().getScheme().equals(PhoneAccount.SCHEME_TEL)
? builder.getUri().getSchemeSpecificPart()
@@ -62,8 +64,8 @@ public class AssistedDialAction implements PreCallAction {
Optional<TransformationInfo> transformedNumber =
assistedDialingMediator.attemptAssistedDial(phoneNumber);
if (transformedNumber.isPresent()) {
+ builder.getOutgoingCallExtras().putBoolean(TelephonyManagerCompat.USE_ASSISTED_DIALING, true);
Bundle assistedDialingExtras = transformedNumber.get().toBundle();
- builder.getOutgoingCallExtras().putBoolean(TelephonyManagerCompat.IS_ASSISTED_DIALED, true);
builder
.getOutgoingCallExtras()
.putBundle(TelephonyManagerCompat.ASSISTED_DIALING_EXTRAS, assistedDialingExtras);
diff --git a/java/com/android/incallui/call/DialerCall.java b/java/com/android/incallui/call/DialerCall.java
index 812024904..94c79e904 100644
--- a/java/com/android/incallui/call/DialerCall.java
+++ b/java/com/android/incallui/call/DialerCall.java
@@ -20,6 +20,7 @@ import android.Manifest.permission;
import android.content.Context;
import android.hardware.camera2.CameraCharacteristics;
import android.net.Uri;
+import android.os.Build;
import android.os.Build.VERSION;
import android.os.Build.VERSION_CODES;
import android.os.Bundle;
@@ -43,6 +44,7 @@ import android.telecom.VideoProfile;
import android.text.TextUtils;
import com.android.contacts.common.compat.CallCompat;
import com.android.contacts.common.compat.telecom.TelecomManagerCompat;
+import com.android.dialer.assisteddialing.ConcreteCreator;
import com.android.dialer.assisteddialing.TransformationInfo;
import com.android.dialer.callintent.CallInitiationType;
import com.android.dialer.callintent.CallIntentParser;
@@ -1073,19 +1075,50 @@ public class DialerCall implements VideoTechListener, StateChangedListener, Capa
return mLogState.isIncoming;
}
+ /**
+ * Try and determine if the call used assisted dialing.
+ *
+ * <p>We will not be able to verify a call underwent assisted dialing until the Platform
+ * implmentation is complete in P+.
+ *
+ * @return a boolean indicating assisted dialing may have been performed
+ */
public boolean isAssistedDialed() {
if (getIntentExtras() != null) {
- return getIntentExtras().getBoolean(TelephonyManagerCompat.IS_ASSISTED_DIALED, false);
+ // O_MR1 and below uses the existence of USE_ASSISTED_DIALING to indicate assisted dialing
+ // was used. The Dialer client is responsible for performing assisted dialing before
+ // placing the outgoing call.
+ //
+ // The existence of the assisted dialing extras indicates that assisted dialing took place.
+ if (getIntentExtras().getBoolean(TelephonyManagerCompat.USE_ASSISTED_DIALING, false)
+ && getAssistedDialingExtras() != null
+ && Build.VERSION.SDK_INT <= ConcreteCreator.BUILD_CODE_CEILING) {
+ return true;
+ }
+ }
+
+ // Starting in P+ USE_ASSISTED_DIALING indicates that the client requested the platform
+ // perform assisted dialing. PROPERTY_ASSISTED_DIALING_USED indicates assisted dialing took
+ // place.
+ if (hasProperty(TelephonyManagerCompat.PROPERTY_ASSISTED_DIALING_USED)
+ && Build.VERSION.SDK_INT > ConcreteCreator.BUILD_CODE_CEILING) {
+ return true;
}
return false;
}
+ @Nullable
public TransformationInfo getAssistedDialingExtras() {
- if (isAssistedDialed()) {
- return TransformationInfo.newInstanceFromBundle(
- getIntentExtras().getBundle(TelephonyManagerCompat.ASSISTED_DIALING_EXTRAS));
+ if (getIntentExtras() == null) {
+ return null;
}
- return null;
+
+ if (getIntentExtras().getBundle(TelephonyManagerCompat.ASSISTED_DIALING_EXTRAS) == null) {
+ return null;
+ }
+
+ return TransformationInfo.newInstanceFromBundle(
+ getIntentExtras().getBundle(TelephonyManagerCompat.ASSISTED_DIALING_EXTRAS));
}
public LatencyReport getLatencyReport() {
diff --git a/java/com/android/incallui/contactgrid/TopRow.java b/java/com/android/incallui/contactgrid/TopRow.java
index f8a485519..556b11ba0 100644
--- a/java/com/android/incallui/contactgrid/TopRow.java
+++ b/java/com/android/incallui/contactgrid/TopRow.java
@@ -175,7 +175,7 @@ public class TopRow {
}
}
- if (state.isAssistedDialed) {
+ if (state.isAssistedDialed && state.assistedDialingExtras != null) {
LogUtil.i("TopRow.getLabelForDialing", "using assisted dialing label.");
String countryCode =
String.valueOf(state.assistedDialingExtras.transformedNumberCountryCallingCode());