summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnthony Lee <anthonylee@google.com>2015-09-22 21:22:39 +0000
committerAndroid Git Automerger <android-git-automerger@android.com>2015-09-22 21:22:39 +0000
commit4b52c30564e96ee7ce8d6b2b1705d9ca1bf85b4e (patch)
treec68a0a47a5a7991ffb5f8868307b6e32afbf1f8a
parent94d8b53ecc8f26e86f84c750ff9b998dd4e09c2c (diff)
parent126265d89deb187519e0378405606faae82f93ee (diff)
downloadInCallUI-4b52c30564e96ee7ce8d6b2b1705d9ca1bf85b4e.tar.gz
am 126265d8: Merge "Ensure call subject is hidden if disabled for carrier." into mnc-dr-dev
* commit '126265d89deb187519e0378405606faae82f93ee': Ensure call subject is hidden if disabled for carrier.
-rw-r--r--src/com/android/incallui/Call.java32
-rw-r--r--src/com/android/incallui/CallCardPresenter.java3
-rw-r--r--src/com/android/incallui/StatusBarNotifier.java3
3 files changed, 36 insertions, 2 deletions
diff --git a/src/com/android/incallui/Call.java b/src/com/android/incallui/Call.java
index f08653e6..01205ff1 100644
--- a/src/com/android/incallui/Call.java
+++ b/src/com/android/incallui/Call.java
@@ -30,6 +30,7 @@ import android.telecom.GatewayInfo;
import android.telecom.InCallService.VideoCall;
import android.telecom.PhoneAccount;
import android.telecom.PhoneAccountHandle;
+import android.telecom.TelecomManager;
import android.telecom.VideoProfile;
import android.telephony.PhoneNumberUtils;
import android.text.TextUtils;
@@ -262,6 +263,13 @@ public class Call {
private String mChildNumber;
private String mLastForwardedNumber;
private String mCallSubject;
+ private PhoneAccountHandle mPhoneAccountHandle;
+
+ /**
+ * Indicates whether the phone account associated with this call supports specifying a call
+ * subject.
+ */
+ private boolean mIsCallSubjectSupported;
/**
* Used only to create mock calls for testing
@@ -373,6 +381,22 @@ public class Call {
mHandle = newHandle;
updateEmergencyCallState();
}
+
+ // If the phone account handle of the call is set, cache capability bit indicating whether
+ // the phone account supports call subjects.
+ PhoneAccountHandle newPhoneAccountHandle = mTelecommCall.getDetails().getAccountHandle();
+ if (!Objects.equals(mPhoneAccountHandle, newPhoneAccountHandle)) {
+ mPhoneAccountHandle = newPhoneAccountHandle;
+
+ if (mPhoneAccountHandle != null) {
+ TelecomManager mgr = InCallPresenter.getInstance().getTelecomManager();
+ PhoneAccount phoneAccount = mgr.getPhoneAccount(mPhoneAccountHandle);
+ if (phoneAccount != null) {
+ mIsCallSubjectSupported = phoneAccount.hasCapabilities(
+ PhoneAccount.CAPABILITY_CALL_SUBJECT);
+ }
+ }
+ }
}
private static int translateState(int state) {
@@ -477,6 +501,14 @@ public class Call {
return mCallSubject;
}
+ /**
+ * @return {@code true} if the call's phone account supports call subjects, {@code false}
+ * otherwise.
+ */
+ public boolean isCallSubjectSupported() {
+ return mIsCallSubjectSupported;
+ }
+
/** Returns call disconnect cause, defined by {@link DisconnectCause}. */
public DisconnectCause getDisconnectCause() {
if (mState == State.DISCONNECTED || mState == State.IDLE) {
diff --git a/src/com/android/incallui/CallCardPresenter.java b/src/com/android/incallui/CallCardPresenter.java
index 6c2b6b6c..0cc5da1c 100644
--- a/src/com/android/incallui/CallCardPresenter.java
+++ b/src/com/android/incallui/CallCardPresenter.java
@@ -921,7 +921,8 @@ public class CallCardPresenter extends Presenter<CallCardPresenter.CallCardUi>
boolean isIncomingOrWaiting = mPrimary.getState() == Call.State.INCOMING ||
mPrimary.getState() == Call.State.CALL_WAITING;
return isIncomingOrWaiting && !TextUtils.isEmpty(call.getCallSubject()) &&
- call.getNumberPresentation() == TelecomManager.PRESENTATION_ALLOWED;
+ call.getNumberPresentation() == TelecomManager.PRESENTATION_ALLOWED &&
+ call.isCallSubjectSupported();
}
/**
diff --git a/src/com/android/incallui/StatusBarNotifier.java b/src/com/android/incallui/StatusBarNotifier.java
index 3a3cb376..3f862a24 100644
--- a/src/com/android/incallui/StatusBarNotifier.java
+++ b/src/com/android/incallui/StatusBarNotifier.java
@@ -427,7 +427,8 @@ public class StatusBarNotifier implements InCallPresenter.InCallStateListener,
call.getState() == Call.State.CALL_WAITING;
if (isIncomingOrWaiting && !TextUtils.isEmpty(call.getCallSubject()) &&
- call.getNumberPresentation() == TelecomManager.PRESENTATION_ALLOWED) {
+ call.getNumberPresentation() == TelecomManager.PRESENTATION_ALLOWED &&
+ call.isCallSubjectSupported()) {
return call.getCallSubject();
}