Merge "Set Telecomm package on incoming call intent" into lmp-dev
diff --git a/res/values-my-rMM/strings.xml b/res/values-my-rMM/strings.xml
index cda9091..6221c1d 100644
--- a/res/values-my-rMM/strings.xml
+++ b/res/values-my-rMM/strings.xml
@@ -36,9 +36,9 @@
<string name="respond_via_sms_edittext_dialog_title" msgid="20379890418289778">"အမြန်တုံ့ပြန်ချက်"</string>
<string name="respond_via_sms_menu_reset_default_activity" msgid="1461742052902053466">"ပုံသေ အပ်ပလီကေးရှင်းအား ပြန်ပြောင်းရန်"</string>
<string name="respond_via_sms_confirmation_format" msgid="7229149977515784269">"<xliff:g id="PHONE_NUMBER">%s</xliff:g> ထံ စာတိုပို့လိုက်ပါပြီ"</string>
- <string name="phone_account_preferences_title" msgid="3932310998135189661">"ဖုန်း အကောင့် ဦးစားပေးချက်များ"</string>
- <string name="default_outgoing_account_title" msgid="8261079649574578970">"ပုံသေ အထွက် အကောင့်"</string>
- <string name="sim_call_manager_account" msgid="2559930293628077755">"ကြိုးမဲ့ ခေါ်ဆိုမှု အကောင့်"</string>
+ <string name="phone_account_preferences_title" msgid="3932310998135189661">"ဖုန်း အကောင့် ဦးစားပေးချက်များ"</string>
+ <string name="default_outgoing_account_title" msgid="8261079649574578970">"ပုံသေ အထွက် အကောင့်"</string>
+ <string name="sim_call_manager_account" msgid="2559930293628077755">"ကြိုးမဲ့ ခေါ်ဆိုမှု အကောင့်"</string>
<string name="account_ask_every_time" msgid="944077828070287407">"အကြိမ်တိုင်းမှာ မေးရန်"</string>
- <string name="do_not_use_sim_call_manager" msgid="5519252524007323694">"ကြိုးမဲ့ ခေါ်ဆိုမှုကို မသုံးပါနှင့်"</string>
+ <string name="do_not_use_sim_call_manager" msgid="5519252524007323694">"ကြိုးမဲ့ ခေါ်ဆိုမှုကို မသုံးပါနှင့်"</string>
</resources>
diff --git a/src/com/android/telecomm/CallIdMapper.java b/src/com/android/telecomm/CallIdMapper.java
index ae13860..f5055da 100644
--- a/src/com/android/telecomm/CallIdMapper.java
+++ b/src/com/android/telecomm/CallIdMapper.java
@@ -16,7 +16,6 @@
package com.android.telecomm;
-import com.google.common.base.Preconditions;
import com.google.common.collect.HashBiMap;
/** Utility to map {@link Call} objects to unique IDs. IDs are generated when a call is added. */
@@ -39,7 +38,9 @@
}
void addCall(Call call, String id) {
- Preconditions.checkNotNull(call);
+ if (call == null) {
+ return;
+ }
ThreadUtil.checkOnMainThread();
mCalls.put(id, call);
}
@@ -50,8 +51,10 @@
}
void removeCall(Call call) {
+ if (call == null) {
+ return;
+ }
ThreadUtil.checkOnMainThread();
- Preconditions.checkNotNull(call);
mCalls.inverse().remove(call);
}
@@ -61,8 +64,10 @@
}
String getCallId(Call call) {
+ if (call == null) {
+ return null;
+ }
ThreadUtil.checkOnMainThread();
- Preconditions.checkNotNull(call);
return mCalls.inverse().get(call);
}
@@ -73,7 +78,9 @@
if (objId instanceof String) {
callId = (String) objId;
}
- checkValidCallId(callId);
+ if (!isValidCallId(callId)) {
+ return null;
+ }
return mCalls.get(callId);
}
@@ -82,16 +89,6 @@
mCalls.clear();
}
- void checkValidCallId(String callId) {
- // Note, no need for thread check, this method is thread safe.
- if (!isValidCallId(callId)) {
- // TODO: Re-enable this once we stop getting updates to
- // ConnectionServiceWrapper for remote connections.
- //throw new IllegalArgumentException(
- // "Invalid call ID for " + mCallIdPrefix + ": " + callId);
- }
- }
-
boolean isValidCallId(String callId) {
// Note, no need for thread check, this method is thread safe.
return callId != null && callId.startsWith(mCallIdPrefix);
diff --git a/src/com/android/telecomm/ConnectionServiceWrapper.java b/src/com/android/telecomm/ConnectionServiceWrapper.java
index 4a45902..76612d4 100644
--- a/src/com/android/telecomm/ConnectionServiceWrapper.java
+++ b/src/com/android/telecomm/ConnectionServiceWrapper.java
@@ -359,88 +359,98 @@
ConnectionRequest request, ParcelableConnection connection) {
logIncoming("handleCreateConnectionSuccessful %s", request);
- mCallIdMapper.checkValidCallId(request.getCallId());
- SomeArgs args = SomeArgs.obtain();
- args.arg1 = request;
- args.arg2 = connection;
- mHandler.obtainMessage(MSG_HANDLE_CREATE_CONNECTION_SUCCESSFUL, args).sendToTarget();
+ if (mCallIdMapper.isValidCallId(request.getCallId())) {
+ SomeArgs args = SomeArgs.obtain();
+ args.arg1 = request;
+ args.arg2 = connection;
+ mHandler.obtainMessage(MSG_HANDLE_CREATE_CONNECTION_SUCCESSFUL, args).sendToTarget();
+ }
}
@Override
public void handleCreateConnectionFailed(
ConnectionRequest request, int errorCode, String errorMsg) {
logIncoming("handleCreateConnectionFailed %s %d %s", request, errorCode, errorMsg);
- mCallIdMapper.checkValidCallId(request.getCallId());
- SomeArgs args = SomeArgs.obtain();
- args.arg1 = request;
- args.argi1 = errorCode;
- args.arg2 = errorMsg;
- mHandler.obtainMessage(MSG_HANDLE_CREATE_CONNECTION_FAILED, args).sendToTarget();
+ if (mCallIdMapper.isValidCallId(request.getCallId())) {
+ SomeArgs args = SomeArgs.obtain();
+ args.arg1 = request;
+ args.argi1 = errorCode;
+ args.arg2 = errorMsg;
+ mHandler.obtainMessage(MSG_HANDLE_CREATE_CONNECTION_FAILED, args).sendToTarget();
+ }
}
@Override
public void handleCreateConnectionCancelled(ConnectionRequest request) {
logIncoming("handleCreateConnectionCancelled %s", request);
- mCallIdMapper.checkValidCallId(request.getCallId());
- mHandler.obtainMessage(MSG_HANDLE_CREATE_CONNECTION_CANCELLED, request).sendToTarget();
+ if (mCallIdMapper.isValidCallId(request.getCallId())) {
+ mHandler.obtainMessage(MSG_HANDLE_CREATE_CONNECTION_CANCELLED, request).sendToTarget();
+ }
}
@Override
public void setActive(String callId) {
logIncoming("setActive %s", callId);
- mCallIdMapper.checkValidCallId(callId);
- mHandler.obtainMessage(MSG_SET_ACTIVE, callId).sendToTarget();
+ if (mCallIdMapper.isValidCallId(callId)) {
+ mHandler.obtainMessage(MSG_SET_ACTIVE, callId).sendToTarget();
+ }
}
@Override
public void setRinging(String callId) {
logIncoming("setRinging %s", callId);
- mCallIdMapper.checkValidCallId(callId);
- mHandler.obtainMessage(MSG_SET_RINGING, callId).sendToTarget();
+ if (mCallIdMapper.isValidCallId(callId)) {
+ mHandler.obtainMessage(MSG_SET_RINGING, callId).sendToTarget();
+ }
}
@Override
public void setVideoCallProvider(String callId, IVideoCallProvider videoCallProvider) {
logIncoming("setVideoCallProvider %s", callId);
- mCallIdMapper.checkValidCallId(callId);
- SomeArgs args = SomeArgs.obtain();
- args.arg1 = callId;
- args.arg2 = videoCallProvider;
- mHandler.obtainMessage(MSG_SET_CALL_VIDEO_PROVIDER, args).sendToTarget();
+ if (mCallIdMapper.isValidCallId(callId)) {
+ SomeArgs args = SomeArgs.obtain();
+ args.arg1 = callId;
+ args.arg2 = videoCallProvider;
+ mHandler.obtainMessage(MSG_SET_CALL_VIDEO_PROVIDER, args).sendToTarget();
+ }
}
@Override
public void setDialing(String callId) {
logIncoming("setDialing %s", callId);
- mCallIdMapper.checkValidCallId(callId);
- mHandler.obtainMessage(MSG_SET_DIALING, callId).sendToTarget();
+ if (mCallIdMapper.isValidCallId(callId)) {
+ mHandler.obtainMessage(MSG_SET_DIALING, callId).sendToTarget();
+ }
}
@Override
public void setDisconnected(
String callId, int disconnectCause, String disconnectMessage) {
logIncoming("setDisconnected %s %d %s", callId, disconnectCause, disconnectMessage);
- mCallIdMapper.checkValidCallId(callId);
- SomeArgs args = SomeArgs.obtain();
- args.arg1 = callId;
- args.arg2 = disconnectMessage;
- args.argi1 = disconnectCause;
- mHandler.obtainMessage(MSG_SET_DISCONNECTED, args).sendToTarget();
+ if (mCallIdMapper.isValidCallId(callId)) {
+ SomeArgs args = SomeArgs.obtain();
+ args.arg1 = callId;
+ args.arg2 = disconnectMessage;
+ args.argi1 = disconnectCause;
+ mHandler.obtainMessage(MSG_SET_DISCONNECTED, args).sendToTarget();
+ }
}
@Override
public void setOnHold(String callId) {
logIncoming("setOnHold %s", callId);
- mCallIdMapper.checkValidCallId(callId);
- mHandler.obtainMessage(MSG_SET_ON_HOLD, callId).sendToTarget();
+ if (mCallIdMapper.isValidCallId(callId)) {
+ mHandler.obtainMessage(MSG_SET_ON_HOLD, callId).sendToTarget();
+ }
}
@Override
public void setRequestingRingback(String callId, boolean ringback) {
logIncoming("setRequestingRingback %s %b", callId, ringback);
- mCallIdMapper.checkValidCallId(callId);
- mHandler.obtainMessage(MSG_SET_REQUESTING_RINGBACK, ringback ? 1 : 0, 0, callId)
- .sendToTarget();
+ if (mCallIdMapper.isValidCallId(callId)) {
+ mHandler.obtainMessage(MSG_SET_REQUESTING_RINGBACK, ringback ? 1 : 0, 0, callId)
+ .sendToTarget();
+ }
}
@Override
@@ -451,34 +461,41 @@
@Override
public void setCallCapabilities(String callId, int callCapabilities) {
logIncoming("setCallCapabilities %s %d", callId, callCapabilities);
- mHandler.obtainMessage(MSG_SET_CALL_CAPABILITIES, callCapabilities, 0, callId)
- .sendToTarget();
+ if (mCallIdMapper.isValidCallId(callId)) {
+ mHandler.obtainMessage(MSG_SET_CALL_CAPABILITIES, callCapabilities, 0, callId)
+ .sendToTarget();
+ }
}
@Override
public void setIsConferenced(String callId, String conferenceCallId) {
logIncoming("setIsConferenced %s %s", callId, conferenceCallId);
- SomeArgs args = SomeArgs.obtain();
- args.arg1 = callId;
- args.arg2 = conferenceCallId;
- mHandler.obtainMessage(MSG_SET_IS_CONFERENCED, args).sendToTarget();
+ if (mCallIdMapper.isValidCallId(callId) &&
+ mCallIdMapper.isValidCallId(conferenceCallId)) {
+ SomeArgs args = SomeArgs.obtain();
+ args.arg1 = callId;
+ args.arg2 = conferenceCallId;
+ mHandler.obtainMessage(MSG_SET_IS_CONFERENCED, args).sendToTarget();
+ }
}
@Override
public void addConferenceCall(String callId) {
logIncoming("addConferenceCall %s", callId);
- mCallIdMapper.checkValidCallId(callId);
- mHandler.obtainMessage(MSG_ADD_CONFERENCE_CALL, callId).sendToTarget();
+ if (mCallIdMapper.isValidCallId(callId)) {
+ mHandler.obtainMessage(MSG_ADD_CONFERENCE_CALL, callId).sendToTarget();
+ }
}
@Override
public void onPostDialWait(String callId, String remaining) throws RemoteException {
logIncoming("onPostDialWait %s %s", callId, remaining);
- mCallIdMapper.checkValidCallId(callId);
- SomeArgs args = SomeArgs.obtain();
- args.arg1 = callId;
- args.arg2 = remaining;
- mHandler.obtainMessage(MSG_ON_POST_DIAL_WAIT, args).sendToTarget();
+ if (mCallIdMapper.isValidCallId(callId)) {
+ SomeArgs args = SomeArgs.obtain();
+ args.arg1 = callId;
+ args.arg2 = remaining;
+ mHandler.obtainMessage(MSG_ON_POST_DIAL_WAIT, args).sendToTarget();
+ }
}
@Override
@@ -490,70 +507,77 @@
@Override
public void setVideoState(String callId, int videoState) {
logIncoming("setVideoState %s %d", callId, videoState);
- mCallIdMapper.checkValidCallId(callId);
- mHandler.obtainMessage(MSG_SET_VIDEO_STATE, videoState, 0, callId).sendToTarget();
+ if (mCallIdMapper.isValidCallId(callId)) {
+ mHandler.obtainMessage(MSG_SET_VIDEO_STATE, videoState, 0, callId).sendToTarget();
+ }
}
@Override
public void setAudioModeIsVoip(String callId, boolean isVoip) {
logIncoming("setAudioModeIsVoip %s %b", callId, isVoip);
- mCallIdMapper.checkValidCallId(callId);
- mHandler.obtainMessage(MSG_SET_AUDIO_MODE_IS_VOIP, isVoip ? 1 : 0, 0,
- callId).sendToTarget();
+ if (mCallIdMapper.isValidCallId(callId)) {
+ mHandler.obtainMessage(MSG_SET_AUDIO_MODE_IS_VOIP, isVoip ? 1 : 0, 0,
+ callId).sendToTarget();
+ }
}
@Override
public void setStatusHints(String callId, StatusHints statusHints) {
logIncoming("setStatusHints %s %s", callId, statusHints);
- mCallIdMapper.checkValidCallId(callId);
- SomeArgs args = SomeArgs.obtain();
- args.arg1 = callId;
- args.arg2 = statusHints;
- mHandler.obtainMessage(MSG_SET_STATUS_HINTS, args).sendToTarget();
+ if (mCallIdMapper.isValidCallId(callId)) {
+ SomeArgs args = SomeArgs.obtain();
+ args.arg1 = callId;
+ args.arg2 = statusHints;
+ mHandler.obtainMessage(MSG_SET_STATUS_HINTS, args).sendToTarget();
+ }
}
@Override
public void setHandle(String callId, Uri handle, int presentation) {
logIncoming("setHandle %s %s %d", callId, handle, presentation);
- mCallIdMapper.checkValidCallId(callId);
- SomeArgs args = SomeArgs.obtain();
- args.arg1 = callId;
- args.arg2 = handle;
- args.argi1 = presentation;
- mHandler.obtainMessage(MSG_SET_HANDLE, args).sendToTarget();
+ if (mCallIdMapper.isValidCallId(callId)) {
+ SomeArgs args = SomeArgs.obtain();
+ args.arg1 = callId;
+ args.arg2 = handle;
+ args.argi1 = presentation;
+ mHandler.obtainMessage(MSG_SET_HANDLE, args).sendToTarget();
+ }
}
@Override
public void setCallerDisplayName(
String callId, String callerDisplayName, int presentation) {
logIncoming("setCallerDisplayName %s %s %d", callId, callerDisplayName, presentation);
- mCallIdMapper.checkValidCallId(callId);
- SomeArgs args = SomeArgs.obtain();
- args.arg1 = callId;
- args.arg2 = callerDisplayName;
- args.argi1 = presentation;
- mHandler.obtainMessage(MSG_SET_CALLER_DISPLAY_NAME, args).sendToTarget();
+ if (mCallIdMapper.isValidCallId(callId)) {
+ SomeArgs args = SomeArgs.obtain();
+ args.arg1 = callId;
+ args.arg2 = callerDisplayName;
+ args.argi1 = presentation;
+ mHandler.obtainMessage(MSG_SET_CALLER_DISPLAY_NAME, args).sendToTarget();
+ }
}
@Override
public void setConferenceableConnections(
String callId, List<String> conferenceableCallIds) {
logIncoming("setConferenceableConnections %s %s", callId, conferenceableCallIds);
- mCallIdMapper.checkValidCallId(callId);
- SomeArgs args = SomeArgs.obtain();
- args.arg1 = callId;
- args.arg2 = conferenceableCallIds;
- mHandler.obtainMessage(MSG_SET_CONFERENCEABLE_CONNECTIONS, args).sendToTarget();
+ if (mCallIdMapper.isValidCallId(callId)) {
+ SomeArgs args = SomeArgs.obtain();
+ args.arg1 = callId;
+ args.arg2 = conferenceableCallIds;
+ mHandler.obtainMessage(MSG_SET_CONFERENCEABLE_CONNECTIONS, args).sendToTarget();
+ }
}
@Override
public void startActivityFromInCall(String callId, PendingIntent intent) {
logIncoming("startActivityFromInCall %s %s", callId, intent);
- mCallIdMapper.checkValidCallId(callId);
- SomeArgs args = SomeArgs.obtain();
- args.arg1 = callId;
- args.arg2 = intent;
- mHandler.obtainMessage(MSG_START_ACTIVITY_FROM_IN_CALL, args).sendToTarget();
+ if (mCallIdMapper.isValidCallId(callId)) {
+ SomeArgs args = SomeArgs.obtain();
+ args.arg1 = callId;
+ args.arg2 = intent;
+ mHandler.obtainMessage(MSG_START_ACTIVITY_FROM_IN_CALL, args).sendToTarget();
+ }
}
}
@@ -652,10 +676,10 @@
/** @see ConnectionService#abort(String) */
void abort(Call call) {
// Clear out any pending outgoing call data
- String callId = mCallIdMapper.getCallId(call);
+ final String callId = mCallIdMapper.getCallId(call);
// If still bound, tell the connection service to abort.
- if (isServiceValid("abort")) {
+ if (callId != null && isServiceValid("abort")) {
try {
logOutgoing("abort %s", callId);
mServiceInterface.abort(callId);
@@ -668,10 +692,11 @@
/** @see ConnectionService#hold(String) */
void hold(Call call) {
- if (isServiceValid("hold")) {
+ final String callId = mCallIdMapper.getCallId(call);
+ if (callId != null && isServiceValid("hold")) {
try {
- logOutgoing("hold %s", mCallIdMapper.getCallId(call));
- mServiceInterface.hold(mCallIdMapper.getCallId(call));
+ logOutgoing("hold %s", callId);
+ mServiceInterface.hold(callId);
} catch (RemoteException e) {
}
}
@@ -679,10 +704,11 @@
/** @see ConnectionService#unhold(String) */
void unhold(Call call) {
- if (isServiceValid("unhold")) {
+ final String callId = mCallIdMapper.getCallId(call);
+ if (callId != null && isServiceValid("unhold")) {
try {
- logOutgoing("unhold %s", mCallIdMapper.getCallId(call));
- mServiceInterface.unhold(mCallIdMapper.getCallId(call));
+ logOutgoing("unhold %s", callId);
+ mServiceInterface.unhold(callId);
} catch (RemoteException e) {
}
}
@@ -690,12 +716,11 @@
/** @see ConnectionService#onAudioStateChanged(String,CallAudioState) */
void onAudioStateChanged(Call activeCall, CallAudioState audioState) {
- if (isServiceValid("onAudioStateChanged")) {
+ final String callId = mCallIdMapper.getCallId(activeCall);
+ if (callId != null && isServiceValid("onAudioStateChanged")) {
try {
- logOutgoing("onAudioStateChanged %s %s",
- mCallIdMapper.getCallId(activeCall), audioState);
- mServiceInterface.onAudioStateChanged(mCallIdMapper.getCallId(activeCall),
- audioState);
+ logOutgoing("onAudioStateChanged %s %s", callId, audioState);
+ mServiceInterface.onAudioStateChanged(callId, audioState);
} catch (RemoteException e) {
}
}
@@ -703,10 +728,11 @@
/** @see ConnectionService#disconnect(String) */
void disconnect(Call call) {
- if (isServiceValid("disconnect")) {
+ final String callId = mCallIdMapper.getCallId(call);
+ if (callId != null && isServiceValid("disconnect")) {
try {
- logOutgoing("disconnect %s", mCallIdMapper.getCallId(call));
- mServiceInterface.disconnect(mCallIdMapper.getCallId(call));
+ logOutgoing("disconnect %s", callId);
+ mServiceInterface.disconnect(callId);
} catch (RemoteException e) {
}
}
@@ -714,10 +740,11 @@
/** @see ConnectionService#answer(String,int) */
void answer(Call call, int videoState) {
- if (isServiceValid("answer")) {
+ final String callId = mCallIdMapper.getCallId(call);
+ if (callId != null && isServiceValid("answer")) {
try {
- logOutgoing("answer %s %d", mCallIdMapper.getCallId(call), videoState);
- mServiceInterface.answer(mCallIdMapper.getCallId(call), videoState);
+ logOutgoing("answer %s %d", callId, videoState);
+ mServiceInterface.answer(callId, videoState);
} catch (RemoteException e) {
}
}
@@ -725,10 +752,11 @@
/** @see ConnectionService#reject(String) */
void reject(Call call) {
- if (isServiceValid("reject")) {
+ final String callId = mCallIdMapper.getCallId(call);
+ if (callId != null && isServiceValid("reject")) {
try {
- logOutgoing("reject %s", mCallIdMapper.getCallId(call));
- mServiceInterface.reject(mCallIdMapper.getCallId(call));
+ logOutgoing("reject %s", callId);
+ mServiceInterface.reject(callId);
} catch (RemoteException e) {
}
}
@@ -736,10 +764,11 @@
/** @see ConnectionService#playDtmfTone(String,char) */
void playDtmfTone(Call call, char digit) {
- if (isServiceValid("playDtmfTone")) {
+ final String callId = mCallIdMapper.getCallId(call);
+ if (callId != null && isServiceValid("playDtmfTone")) {
try {
- logOutgoing("playDtmfTone %s %c", mCallIdMapper.getCallId(call), digit);
- mServiceInterface.playDtmfTone(mCallIdMapper.getCallId(call), digit);
+ logOutgoing("playDtmfTone %s %c", callId, digit);
+ mServiceInterface.playDtmfTone(callId, digit);
} catch (RemoteException e) {
}
}
@@ -747,10 +776,11 @@
/** @see ConnectionService#stopDtmfTone(String) */
void stopDtmfTone(Call call) {
- if (isServiceValid("stopDtmfTone")) {
+ final String callId = mCallIdMapper.getCallId(call);
+ if (callId != null && isServiceValid("stopDtmfTone")) {
try {
- logOutgoing("stopDtmfTone %s", mCallIdMapper.getCallId(call));
- mServiceInterface.stopDtmfTone(mCallIdMapper.getCallId(call));
+ logOutgoing("stopDtmfTone %s",callId);
+ mServiceInterface.stopDtmfTone(callId);
} catch (RemoteException e) {
}
}
@@ -784,27 +814,32 @@
}
void onPostDialContinue(Call call, boolean proceed) {
- if (isServiceValid("onPostDialContinue")) {
+ final String callId = mCallIdMapper.getCallId(call);
+ if (callId != null && isServiceValid("onPostDialContinue")) {
try {
- logOutgoing("onPostDialContinue %s %b", mCallIdMapper.getCallId(call), proceed);
- mServiceInterface.onPostDialContinue(mCallIdMapper.getCallId(call), proceed);
+ logOutgoing("onPostDialContinue %s %b", callId, proceed);
+ mServiceInterface.onPostDialContinue(callId, proceed);
} catch (RemoteException ignored) {
}
}
}
void onPhoneAccountClicked(Call call) {
- if (isServiceValid("onPhoneAccountClicked")) {
+ final String callId = mCallIdMapper.getCallId(call);
+ if (callId != null && isServiceValid("onPhoneAccountClicked")) {
try {
- logOutgoing("onPhoneAccountClicked %s", mCallIdMapper.getCallId(call));
- mServiceInterface.onPhoneAccountClicked(mCallIdMapper.getCallId(call));
+ logOutgoing("onPhoneAccountClicked %s", callId);
+ mServiceInterface.onPhoneAccountClicked(callId);
} catch (RemoteException ignored) {
}
}
}
void conference(final Call conferenceCall, Call call) {
- if (isServiceValid("conference")) {
+ final String conferenceId = mCallIdMapper.getCallId(call);
+ final String callId = mCallIdMapper.getCallId(call);
+ if (conferenceId != null && callId != null &&
+ isServiceValid("conference")) {
try {
conferenceCall.setConnectionService(this);
mPendingConferenceCalls.add(conferenceCall);
@@ -817,32 +852,30 @@
}
}, Timeouts.getConferenceCallExpireMillis());
- logOutgoing("conference %s %s",
- mCallIdMapper.getCallId(conferenceCall),
- mCallIdMapper.getCallId(call));
- mServiceInterface.conference(
- mCallIdMapper.getCallId(conferenceCall),
- mCallIdMapper.getCallId(call));
+ logOutgoing("conference %s %s", conferenceId, callId);
+ mServiceInterface.conference(conferenceId, callId);
} catch (RemoteException ignored) {
}
}
}
void splitFromConference(Call call) {
- if (isServiceValid("splitFromConference")) {
+ final String callId = mCallIdMapper.getCallId(call);
+ if (callId != null && isServiceValid("splitFromConference")) {
try {
- logOutgoing("splitFromConference %s", mCallIdMapper.getCallId(call));
- mServiceInterface.splitFromConference(mCallIdMapper.getCallId(call));
+ logOutgoing("splitFromConference %s", callId);
+ mServiceInterface.splitFromConference(callId);
} catch (RemoteException ignored) {
}
}
}
void swapWithBackgroundCall(Call call) {
- if (isServiceValid("swapWithBackgroundCall")) {
+ final String callId = mCallIdMapper.getCallId(call);
+ if (callId != null && isServiceValid("swapWithBackgroundCall")) {
try {
- logOutgoing("swapWithBackgroundCall %s", mCallIdMapper.getCallId(call));
- mServiceInterface.swapWithBackgroundCall(mCallIdMapper.getCallId(call));
+ logOutgoing("swapWithBackgroundCall %s", callId);
+ mServiceInterface.swapWithBackgroundCall(callId);
} catch (RemoteException ignored) {
}
}
diff --git a/src/com/android/telecomm/InCallAdapter.java b/src/com/android/telecomm/InCallAdapter.java
index 0e6c9df..66ce1ee 100644
--- a/src/com/android/telecomm/InCallAdapter.java
+++ b/src/com/android/telecomm/InCallAdapter.java
@@ -216,77 +216,87 @@
@Override
public void answerCall(String callId, int videoState) {
Log.d(this, "answerCall(%s,%d)", callId, videoState);
- mCallIdMapper.checkValidCallId(callId);
- SomeArgs args = SomeArgs.obtain();
- args.arg1 = callId;
- args.arg2 = videoState;
- mHandler.obtainMessage(MSG_ANSWER_CALL, args).sendToTarget();
+ if (mCallIdMapper.isValidCallId(callId)) {
+ SomeArgs args = SomeArgs.obtain();
+ args.arg1 = callId;
+ args.arg2 = videoState;
+ mHandler.obtainMessage(MSG_ANSWER_CALL, args).sendToTarget();
+ }
}
@Override
public void rejectCall(String callId, boolean rejectWithMessage, String textMessage) {
Log.d(this, "rejectCall(%s,%b,%s)", callId, rejectWithMessage, textMessage);
- mCallIdMapper.checkValidCallId(callId);
- SomeArgs args = SomeArgs.obtain();
- args.arg1 = callId;
- args.argi1 = rejectWithMessage ? 1 : 0;
- args.arg2 = textMessage;
- mHandler.obtainMessage(MSG_REJECT_CALL, args).sendToTarget();
+ if (mCallIdMapper.isValidCallId(callId)) {
+ SomeArgs args = SomeArgs.obtain();
+ args.arg1 = callId;
+ args.argi1 = rejectWithMessage ? 1 : 0;
+ args.arg2 = textMessage;
+ mHandler.obtainMessage(MSG_REJECT_CALL, args).sendToTarget();
+ }
}
@Override
public void playDtmfTone(String callId, char digit) {
Log.d(this, "playDtmfTone(%s,%c)", callId, digit);
- mCallIdMapper.checkValidCallId(callId);
- mHandler.obtainMessage(MSG_PLAY_DTMF_TONE, (int) digit, 0, callId).sendToTarget();
+ if (mCallIdMapper.isValidCallId(callId)) {
+ mHandler.obtainMessage(MSG_PLAY_DTMF_TONE, (int) digit, 0, callId).sendToTarget();
+ }
}
@Override
public void stopDtmfTone(String callId) {
Log.d(this, "stopDtmfTone(%s)", callId);
- mCallIdMapper.checkValidCallId(callId);
- mHandler.obtainMessage(MSG_STOP_DTMF_TONE, callId).sendToTarget();
+ if (mCallIdMapper.isValidCallId(callId)) {
+ mHandler.obtainMessage(MSG_STOP_DTMF_TONE, callId).sendToTarget();
+ }
}
@Override
public void postDialContinue(String callId, boolean proceed) {
Log.d(this, "postDialContinue(%s)", callId);
- mCallIdMapper.checkValidCallId(callId);
- mHandler.obtainMessage(MSG_POST_DIAL_CONTINUE, proceed ? 1 : 0, 0, callId).sendToTarget();
+ if (mCallIdMapper.isValidCallId(callId)) {
+ mHandler.obtainMessage(MSG_POST_DIAL_CONTINUE, proceed ? 1 : 0, 0, callId).sendToTarget();
+ }
}
@Override
public void disconnectCall(String callId) {
Log.v(this, "disconnectCall: %s", callId);
- mCallIdMapper.checkValidCallId(callId);
- mHandler.obtainMessage(MSG_DISCONNECT_CALL, callId).sendToTarget();
+ if (mCallIdMapper.isValidCallId(callId)) {
+ mHandler.obtainMessage(MSG_DISCONNECT_CALL, callId).sendToTarget();
+ }
}
@Override
public void holdCall(String callId) {
- mCallIdMapper.checkValidCallId(callId);
- mHandler.obtainMessage(MSG_HOLD_CALL, callId).sendToTarget();
+ if (mCallIdMapper.isValidCallId(callId)) {
+ mHandler.obtainMessage(MSG_HOLD_CALL, callId).sendToTarget();
+ }
}
@Override
public void unholdCall(String callId) {
- mCallIdMapper.checkValidCallId(callId);
- mHandler.obtainMessage(MSG_UNHOLD_CALL, callId).sendToTarget();
+ if (mCallIdMapper.isValidCallId(callId)) {
+ mHandler.obtainMessage(MSG_UNHOLD_CALL, callId).sendToTarget();
+ }
}
@Override
public void phoneAccountClicked(String callId) {
- mCallIdMapper.checkValidCallId(callId);
- mHandler.obtainMessage(MSG_PHONE_ACCOUNT_CLICKED, callId).sendToTarget();
+ if (mCallIdMapper.isValidCallId(callId)) {
+ mHandler.obtainMessage(MSG_PHONE_ACCOUNT_CLICKED, callId).sendToTarget();
+ }
}
@Override
public void phoneAccountSelected(String callId, PhoneAccountHandle accountHandle) {
- mCallIdMapper.checkValidCallId(callId);
- SomeArgs args = SomeArgs.obtain();
- args.arg1 = callId;
- args.arg2 = accountHandle;
- mHandler.obtainMessage(MSG_PHONE_ACCOUNT_SELECTED, args).sendToTarget();
+ if (mCallIdMapper.isValidCallId(callId)) {
+ SomeArgs args = SomeArgs.obtain();
+ args.arg1 = callId;
+ args.arg2 = accountHandle;
+ mHandler.obtainMessage(MSG_PHONE_ACCOUNT_SELECTED, args).sendToTarget();
+ }
}
@Override
@@ -301,20 +311,27 @@
@Override
public void conference(String callId, String otherCallId) {
- SomeArgs args = SomeArgs.obtain();
- args.arg1 = callId;
- args.arg2 = otherCallId;
- mHandler.obtainMessage(MSG_CONFERENCE, args).sendToTarget();
+ if (mCallIdMapper.isValidCallId(callId) &&
+ mCallIdMapper.isValidCallId(otherCallId)) {
+ SomeArgs args = SomeArgs.obtain();
+ args.arg1 = callId;
+ args.arg2 = otherCallId;
+ mHandler.obtainMessage(MSG_CONFERENCE, args).sendToTarget();
+ }
}
@Override
public void splitFromConference(String callId) {
- mHandler.obtainMessage(MSG_SPLIT_FROM_CONFERENCE, callId).sendToTarget();
+ if (mCallIdMapper.isValidCallId(callId)) {
+ mHandler.obtainMessage(MSG_SPLIT_FROM_CONFERENCE, callId).sendToTarget();
+ }
}
@Override
public void swapWithBackgroundCall(String callId) {
- mHandler.obtainMessage(MSG_SWAP_WITH_BACKGROUND_CALL, callId).sendToTarget();
+ if (mCallIdMapper.isValidCallId(callId)) {
+ mHandler.obtainMessage(MSG_SWAP_WITH_BACKGROUND_CALL, callId).sendToTarget();
+ }
}
@Override