diff options
author | Hung-ying Tyan <tyanh@google.com> | 2010-10-05 18:33:22 -0700 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2010-10-05 18:33:22 -0700 |
commit | fc7e7766e7d6a49d31426f821c0a56168c0d75cc (patch) | |
tree | 91ad1f979e232a7167513cff12339e43633a525c /telephony/java | |
parent | 671b2a57bb5a2a8669d1dabe65b4080804ee350a (diff) | |
parent | 17956e626b38ce53da61e78af2c973ed41c9e461 (diff) | |
download | frameworks_base-fc7e7766e7d6a49d31426f821c0a56168c0d75cc.zip frameworks_base-fc7e7766e7d6a49d31426f821c0a56168c0d75cc.tar.gz frameworks_base-fc7e7766e7d6a49d31426f821c0a56168c0d75cc.tar.bz2 |
Merge "CallManager/SipPhone: fix reject a ringing call" into gingerbread
Diffstat (limited to 'telephony/java')
-rw-r--r-- | telephony/java/com/android/internal/telephony/CallManager.java | 46 | ||||
-rwxr-xr-x | telephony/java/com/android/internal/telephony/sip/SipPhone.java | 5 |
2 files changed, 34 insertions, 17 deletions
diff --git a/telephony/java/com/android/internal/telephony/CallManager.java b/telephony/java/com/android/internal/telephony/CallManager.java index 09b7d05..7a026fa 100644 --- a/telephony/java/com/android/internal/telephony/CallManager.java +++ b/telephony/java/com/android/internal/telephony/CallManager.java @@ -1468,13 +1468,27 @@ public final class CallManager { * */ public Call getActiveFgCall() { - for (Call call : mForegroundCalls) { - if (call.getState() != Call.State.IDLE) { + Call call = getFirstNonIdleCall(mForegroundCalls); + if (call == null) { + call = (mDefaultPhone == null) + ? null + : mDefaultPhone.getForegroundCall(); + } + return call; + } + + // Returns the first call that is not in IDLE state. If both active calls + // and disconnecting/disconnected calls exist, return the first active call. + private Call getFirstNonIdleCall(List<Call> calls) { + Call result = null; + for (Call call : calls) { + if (!call.isIdle()) { return call; + } else if (call.getState() != Call.State.IDLE) { + if (result == null) result = call; } } - return (mDefaultPhone == null) ? - null : mDefaultPhone.getForegroundCall(); + return result; } /** @@ -1491,13 +1505,13 @@ public final class CallManager { * Complete background calls list can be get by getBackgroundCalls() */ public Call getFirstActiveBgCall() { - for (Call call : mBackgroundCalls) { - if (call.getState() != Call.State.IDLE) { - return call; - } + Call call = getFirstNonIdleCall(mBackgroundCalls); + if (call == null) { + call = (mDefaultPhone == null) + ? null + : mDefaultPhone.getBackgroundCall(); } - return (mDefaultPhone == null) ? - null : mDefaultPhone.getBackgroundCall(); + return call; } /** @@ -1514,13 +1528,13 @@ public final class CallManager { * Complete ringing calls list can be get by getRingingCalls() */ public Call getFirstActiveRingingCall() { - for (Call call : mRingingCalls) { - if (!call.isIdle()) { - return call; - } + Call call = getFirstNonIdleCall(mRingingCalls); + if (call == null) { + call = (mDefaultPhone == null) + ? null + : mDefaultPhone.getRingingCall(); } - return (mDefaultPhone == null) ? - null : mDefaultPhone.getRingingCall(); + return call; } /** diff --git a/telephony/java/com/android/internal/telephony/sip/SipPhone.java b/telephony/java/com/android/internal/telephony/sip/SipPhone.java index 4fd4cdd..02af0ed 100755 --- a/telephony/java/com/android/internal/telephony/sip/SipPhone.java +++ b/telephony/java/com/android/internal/telephony/sip/SipPhone.java @@ -807,7 +807,10 @@ public class SipPhone extends SipPhoneBase { } catch (SipException e) { throw new CallStateException("hangup(): " + e); } finally { - mAdapter.onCallEnded(DisconnectCause.LOCAL); + mAdapter.onCallEnded(((mState == Call.State.INCOMING) + || (mState == Call.State.WAITING)) + ? DisconnectCause.INCOMING_REJECTED + : DisconnectCause.LOCAL); } } } |