diff options
author | Anthony Lee <anthonylee@google.com> | 2015-09-22 21:35:34 +0000 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2015-09-22 21:35:34 +0000 |
commit | 91a7333c41be143f027a246f328682344457fd09 (patch) | |
tree | bdd90358dbcc831782b01374b68e555ac76f0ce5 | |
parent | 74d278dd4afb7e700bded95b6a528711135fa419 (diff) | |
parent | 1b26f2ee1380a6b3e05747143b53e0ad67628073 (diff) | |
download | InCallUI-91a7333c41be143f027a246f328682344457fd09.tar.gz |
am 1b26f2ee: am 4b52c305: am 126265d8: Merge "Ensure call subject is hidden if disabled for carrier." into mnc-dr-dev
* commit '1b26f2ee1380a6b3e05747143b53e0ad67628073':
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(); } |