diff options
author | Anthony Lee <anthonylee@google.com> | 2015-09-22 21:22:39 +0000 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2015-09-22 21:22:39 +0000 |
commit | 4b52c30564e96ee7ce8d6b2b1705d9ca1bf85b4e (patch) | |
tree | c68a0a47a5a7991ffb5f8868307b6e32afbf1f8a | |
parent | 94d8b53ecc8f26e86f84c750ff9b998dd4e09c2c (diff) | |
parent | 126265d89deb187519e0378405606faae82f93ee (diff) | |
download | InCallUI-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.java | 32 | ||||
-rw-r--r-- | src/com/android/incallui/CallCardPresenter.java | 3 | ||||
-rw-r--r-- | src/com/android/incallui/StatusBarNotifier.java | 3 |
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(); } |