summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Brad Ebinger <breadley@google.com> 2016-10-28 20:17:03 +0000
committer android-build-merger <android-build-merger@google.com> 2016-10-28 20:17:03 +0000
commit668a6fa227965f744dcee046855cfdde0f14969d (patch)
treefdfdb97ba0485b8e4fde319ad31dee7ff6fd3a95
parent4aa38633fe2988ef583c05c2e420242d2b774ffa (diff)
parentb32d4f8b5cd5b9c2415e291896b83267e1b4d5fe (diff)
Modify AIDLs to include Session.Info
am: b32d4f8b5c Change-Id: Ibbac4c74b5a0c4fcd5524c97acef5fc078d80cb7
-rw-r--r--telecomm/java/android/telecom/ConnectionService.java570
-rw-r--r--telecomm/java/android/telecom/Log.java12
-rw-r--r--telecomm/java/android/telecom/Logging/Session.aidl22
-rw-r--r--telecomm/java/android/telecom/Logging/Session.java10
-rw-r--r--telecomm/java/android/telecom/Logging/SessionManager.java17
-rw-r--r--telecomm/java/android/telecom/RemoteConference.java18
-rw-r--r--telecomm/java/android/telecom/RemoteConnection.java26
-rw-r--r--telecomm/java/android/telecom/RemoteConnectionManager.java2
-rw-r--r--telecomm/java/android/telecom/RemoteConnectionService.java9
-rw-r--r--telecomm/java/com/android/internal/telecom/IConnectionService.aidl51
10 files changed, 573 insertions, 164 deletions
diff --git a/telecomm/java/android/telecom/ConnectionService.java b/telecomm/java/android/telecom/ConnectionService.java
index 19388e992c91..016490cb50f7 100644
--- a/telecomm/java/android/telecom/ConnectionService.java
+++ b/telecomm/java/android/telecom/ConnectionService.java
@@ -26,6 +26,7 @@ import android.os.Handler;
import android.os.IBinder;
import android.os.Looper;
import android.os.Message;
+import android.telecom.Logging.Session;
import com.android.internal.os.SomeArgs;
import com.android.internal.telecom.IConnectionService;
@@ -83,6 +84,32 @@ public abstract class ConnectionService extends Service {
// Flag controlling whether PII is emitted into the logs
private static final boolean PII_DEBUG = Log.isLoggable(android.util.Log.DEBUG);
+ // Session Definitions
+ private static final String SESSION_HANDLER = "H.";
+ private static final String SESSION_ADD_CS_ADAPTER = "CS.aCSA";
+ private static final String SESSION_REMOVE_CS_ADAPTER = "CS.rCSA";
+ private static final String SESSION_CREATE_CONN = "CS.crCo";
+ private static final String SESSION_ABORT = "CS.ab";
+ private static final String SESSION_ANSWER = "CS.an";
+ private static final String SESSION_ANSWER_VIDEO = "CS.anV";
+ private static final String SESSION_REJECT = "CS.r";
+ private static final String SESSION_REJECT_MESSAGE = "CS.rWM";
+ private static final String SESSION_SILENCE = "CS.s";
+ private static final String SESSION_DISCONNECT = "CS.d";
+ private static final String SESSION_HOLD = "CS.h";
+ private static final String SESSION_UNHOLD = "CS.u";
+ private static final String SESSION_CALL_AUDIO_SC = "CS.cASC";
+ private static final String SESSION_PLAY_DTMF = "CS.pDT";
+ private static final String SESSION_STOP_DTMF = "CS.sDT";
+ private static final String SESSION_CONFERENCE = "CS.c";
+ private static final String SESSION_SPLIT_CONFERENCE = "CS.sFC";
+ private static final String SESSION_MERGE_CONFERENCE = "CS.mC";
+ private static final String SESSION_SWAP_CONFERENCE = "CS.sC";
+ private static final String SESSION_POST_DIAL_CONT = "CS.oPDC";
+ private static final String SESSION_PULL_EXTERNAL_CALL = "CS.pEC";
+ private static final String SESSION_SEND_CALL_EVENT = "CS.sCE";
+ private static final String SESSION_EXTRAS_CHANGED = "CS.oEC";
+
private static final int MSG_ADD_CONNECTION_SERVICE_ADAPTER = 1;
private static final int MSG_CREATE_CONNECTION = 2;
private static final int MSG_ABORT = 3;
@@ -125,12 +152,30 @@ public abstract class ConnectionService extends Service {
private final IBinder mBinder = new IConnectionService.Stub() {
@Override
- public void addConnectionServiceAdapter(IConnectionServiceAdapter adapter) {
- mHandler.obtainMessage(MSG_ADD_CONNECTION_SERVICE_ADAPTER, adapter).sendToTarget();
+ public void addConnectionServiceAdapter(IConnectionServiceAdapter adapter,
+ Session.Info sessionInfo) {
+ Log.startSession(sessionInfo, SESSION_ADD_CS_ADAPTER);
+ try {
+ SomeArgs args = SomeArgs.obtain();
+ args.arg1 = adapter;
+ args.arg2 = Log.createSubsession();
+ mHandler.obtainMessage(MSG_ADD_CONNECTION_SERVICE_ADAPTER, args).sendToTarget();
+ } finally {
+ Log.endSession();
+ }
}
- public void removeConnectionServiceAdapter(IConnectionServiceAdapter adapter) {
- mHandler.obtainMessage(MSG_REMOVE_CONNECTION_SERVICE_ADAPTER, adapter).sendToTarget();
+ public void removeConnectionServiceAdapter(IConnectionServiceAdapter adapter,
+ Session.Info sessionInfo) {
+ Log.startSession(sessionInfo, SESSION_REMOVE_CS_ADAPTER);
+ try {
+ SomeArgs args = SomeArgs.obtain();
+ args.arg1 = adapter;
+ args.arg2 = Log.createSubsession();
+ mHandler.obtainMessage(MSG_REMOVE_CONNECTION_SERVICE_ADAPTER, args).sendToTarget();
+ } finally {
+ Log.endSession();
+ }
}
@Override
@@ -139,136 +184,292 @@ public abstract class ConnectionService extends Service {
String id,
ConnectionRequest request,
boolean isIncoming,
- boolean isUnknown) {
- SomeArgs args = SomeArgs.obtain();
- args.arg1 = connectionManagerPhoneAccount;
- args.arg2 = id;
- args.arg3 = request;
- args.argi1 = isIncoming ? 1 : 0;
- args.argi2 = isUnknown ? 1 : 0;
- mHandler.obtainMessage(MSG_CREATE_CONNECTION, args).sendToTarget();
+ boolean isUnknown,
+ Session.Info sessionInfo) {
+ Log.startSession(sessionInfo, SESSION_CREATE_CONN);
+ try {
+ SomeArgs args = SomeArgs.obtain();
+ args.arg1 = connectionManagerPhoneAccount;
+ args.arg2 = id;
+ args.arg3 = request;
+ args.arg4 = Log.createSubsession();
+ args.argi1 = isIncoming ? 1 : 0;
+ args.argi2 = isUnknown ? 1 : 0;
+ mHandler.obtainMessage(MSG_CREATE_CONNECTION, args).sendToTarget();
+ } finally {
+ Log.endSession();
+ }
}
@Override
- public void abort(String callId) {
- mHandler.obtainMessage(MSG_ABORT, callId).sendToTarget();
+ public void abort(String callId, Session.Info sessionInfo) {
+ Log.startSession(sessionInfo, SESSION_ABORT);
+ try {
+ SomeArgs args = SomeArgs.obtain();
+ args.arg1 = callId;
+ args.arg2 = Log.createSubsession();
+ mHandler.obtainMessage(MSG_ABORT, args).sendToTarget();
+ } finally {
+ Log.endSession();
+ }
}
@Override
- public void answerVideo(String callId, int videoState) {
- SomeArgs args = SomeArgs.obtain();
- args.arg1 = callId;
- args.argi1 = videoState;
- mHandler.obtainMessage(MSG_ANSWER_VIDEO, args).sendToTarget();
+ public void answerVideo(String callId, int videoState, Session.Info sessionInfo) {
+ Log.startSession(sessionInfo, SESSION_ANSWER_VIDEO);
+ try {
+ SomeArgs args = SomeArgs.obtain();
+ args.arg1 = callId;
+ args.arg2 = Log.createSubsession();
+ args.argi1 = videoState;
+ mHandler.obtainMessage(MSG_ANSWER_VIDEO, args).sendToTarget();
+ } finally {
+ Log.endSession();
+ }
}
@Override
- public void answer(String callId) {
- mHandler.obtainMessage(MSG_ANSWER, callId).sendToTarget();
+ public void answer(String callId, Session.Info sessionInfo) {
+ Log.startSession(sessionInfo, SESSION_ANSWER);
+ try {
+ SomeArgs args = SomeArgs.obtain();
+ args.arg1 = callId;
+ args.arg2 = Log.createSubsession();
+ mHandler.obtainMessage(MSG_ANSWER, args).sendToTarget();
+ } finally {
+ Log.endSession();
+ }
}
@Override
- public void reject(String callId) {
- mHandler.obtainMessage(MSG_REJECT, callId).sendToTarget();
+ public void reject(String callId, Session.Info sessionInfo) {
+ Log.startSession(sessionInfo, SESSION_REJECT);
+ try {
+ SomeArgs args = SomeArgs.obtain();
+ args.arg1 = callId;
+ args.arg2 = Log.createSubsession();
+ mHandler.obtainMessage(MSG_REJECT, args).sendToTarget();
+ } finally {
+ Log.endSession();
+ }
}
@Override
- public void rejectWithMessage(String callId, String message) {
- SomeArgs args = SomeArgs.obtain();
- args.arg1 = callId;
- args.arg2 = message;
- mHandler.obtainMessage(MSG_REJECT_WITH_MESSAGE, args).sendToTarget();
+ public void rejectWithMessage(String callId, String message, Session.Info sessionInfo) {
+ Log.startSession(sessionInfo, SESSION_REJECT_MESSAGE);
+ try {
+ SomeArgs args = SomeArgs.obtain();
+ args.arg1 = callId;
+ args.arg2 = message;
+ args.arg3 = Log.createSubsession();
+ mHandler.obtainMessage(MSG_REJECT_WITH_MESSAGE, args).sendToTarget();
+ } finally {
+ Log.endSession();
+ }
}
@Override
- public void silence(String callId) {
- mHandler.obtainMessage(MSG_SILENCE, callId).sendToTarget();
+ public void silence(String callId, Session.Info sessionInfo) {
+ Log.startSession(sessionInfo, SESSION_SILENCE);
+ try {
+ SomeArgs args = SomeArgs.obtain();
+ args.arg1 = callId;
+ args.arg2 = Log.createSubsession();
+ mHandler.obtainMessage(MSG_SILENCE, args).sendToTarget();
+ } finally {
+ Log.endSession();
+ }
}
@Override
- public void disconnect(String callId) {
- mHandler.obtainMessage(MSG_DISCONNECT, callId).sendToTarget();
+ public void disconnect(String callId, Session.Info sessionInfo) {
+ Log.startSession(sessionInfo, SESSION_DISCONNECT);
+ try {
+ SomeArgs args = SomeArgs.obtain();
+ args.arg1 = callId;
+ args.arg2 = Log.createSubsession();
+ mHandler.obtainMessage(MSG_DISCONNECT, args).sendToTarget();
+ } finally {
+ Log.endSession();
+ }
}
@Override
- public void hold(String callId) {
- mHandler.obtainMessage(MSG_HOLD, callId).sendToTarget();
+ public void hold(String callId, Session.Info sessionInfo) {
+ Log.startSession(sessionInfo, SESSION_HOLD);
+ try {
+ SomeArgs args = SomeArgs.obtain();
+ args.arg1 = callId;
+ args.arg2 = Log.createSubsession();
+ mHandler.obtainMessage(MSG_HOLD, args).sendToTarget();
+ } finally {
+ Log.endSession();
+ }
}
@Override
- public void unhold(String callId) {
- mHandler.obtainMessage(MSG_UNHOLD, callId).sendToTarget();
+ public void unhold(String callId, Session.Info sessionInfo) {
+ Log.startSession(sessionInfo, SESSION_UNHOLD);
+ try {
+ SomeArgs args = SomeArgs.obtain();
+ args.arg1 = callId;
+ args.arg2 = Log.createSubsession();
+ mHandler.obtainMessage(MSG_UNHOLD, args).sendToTarget();
+ } finally {
+ Log.endSession();
+ }
}
@Override
- public void onCallAudioStateChanged(String callId, CallAudioState callAudioState) {
- SomeArgs args = SomeArgs.obtain();
- args.arg1 = callId;
- args.arg2 = callAudioState;
- mHandler.obtainMessage(MSG_ON_CALL_AUDIO_STATE_CHANGED, args).sendToTarget();
+ public void onCallAudioStateChanged(String callId, CallAudioState callAudioState,
+ Session.Info sessionInfo) {
+ Log.startSession(sessionInfo, SESSION_CALL_AUDIO_SC);
+ try {
+ SomeArgs args = SomeArgs.obtain();
+ args.arg1 = callId;
+ args.arg2 = callAudioState;
+ args.arg3 = Log.createSubsession();
+ mHandler.obtainMessage(MSG_ON_CALL_AUDIO_STATE_CHANGED, args).sendToTarget();
+ } finally {
+ Log.endSession();
+ }
}
@Override
- public void playDtmfTone(String callId, char digit) {
- mHandler.obtainMessage(MSG_PLAY_DTMF_TONE, digit, 0, callId).sendToTarget();
+ public void playDtmfTone(String callId, char digit, Session.Info sessionInfo) {
+ Log.startSession(sessionInfo, SESSION_PLAY_DTMF);
+ try {
+ SomeArgs args = SomeArgs.obtain();
+ args.arg1 = digit;
+ args.arg2 = callId;
+ args.arg3 = Log.createSubsession();
+ mHandler.obtainMessage(MSG_PLAY_DTMF_TONE, args).sendToTarget();
+ } finally {
+ Log.endSession();
+ }
}
@Override
- public void stopDtmfTone(String callId) {
- mHandler.obtainMessage(MSG_STOP_DTMF_TONE, callId).sendToTarget();
+ public void stopDtmfTone(String callId, Session.Info sessionInfo) {
+ Log.startSession(sessionInfo, SESSION_STOP_DTMF);
+ try {
+ SomeArgs args = SomeArgs.obtain();
+ args.arg1 = callId;
+ args.arg2 = Log.createSubsession();
+ mHandler.obtainMessage(MSG_STOP_DTMF_TONE, args).sendToTarget();
+ } finally {
+ Log.endSession();
+ }
}
@Override
- public void conference(String callId1, String callId2) {
- SomeArgs args = SomeArgs.obtain();
- args.arg1 = callId1;
- args.arg2 = callId2;
- mHandler.obtainMessage(MSG_CONFERENCE, args).sendToTarget();
+ public void conference(String callId1, String callId2, Session.Info sessionInfo) {
+ Log.startSession(sessionInfo, SESSION_CONFERENCE);
+ try {
+ SomeArgs args = SomeArgs.obtain();
+ args.arg1 = callId1;
+ args.arg2 = callId2;
+ args.arg3 = Log.createSubsession();
+ mHandler.obtainMessage(MSG_CONFERENCE, args).sendToTarget();
+ } finally {
+ Log.endSession();
+ }
}
@Override
- public void splitFromConference(String callId) {
- mHandler.obtainMessage(MSG_SPLIT_FROM_CONFERENCE, callId).sendToTarget();
+ public void splitFromConference(String callId, Session.Info sessionInfo) {
+ Log.startSession(sessionInfo, SESSION_SPLIT_CONFERENCE);
+ try {
+ SomeArgs args = SomeArgs.obtain();
+ args.arg1 = callId;
+ args.arg2 = Log.createSubsession();
+ mHandler.obtainMessage(MSG_SPLIT_FROM_CONFERENCE, args).sendToTarget();
+ } finally {
+ Log.endSession();
+ }
}
@Override
- public void mergeConference(String callId) {
- mHandler.obtainMessage(MSG_MERGE_CONFERENCE, callId).sendToTarget();
+ public void mergeConference(String callId, Session.Info sessionInfo) {
+ Log.startSession(sessionInfo, SESSION_MERGE_CONFERENCE);
+ try {
+ SomeArgs args = SomeArgs.obtain();
+ args.arg1 = callId;
+ args.arg2 = Log.createSubsession();
+ mHandler.obtainMessage(MSG_MERGE_CONFERENCE, args).sendToTarget();
+ } finally {
+ Log.endSession();
+ }
}
@Override
- public void swapConference(String callId) {
- mHandler.obtainMessage(MSG_SWAP_CONFERENCE, callId).sendToTarget();
+ public void swapConference(String callId, Session.Info sessionInfo) {
+ Log.startSession(sessionInfo, SESSION_SWAP_CONFERENCE);
+ try {
+ SomeArgs args = SomeArgs.obtain();
+ args.arg1 = callId;
+ args.arg2 = Log.createSubsession();
+ mHandler.obtainMessage(MSG_SWAP_CONFERENCE, args).sendToTarget();
+ } finally {
+ Log.endSession();
+ }
}
@Override
- public void onPostDialContinue(String callId, boolean proceed) {
- SomeArgs args = SomeArgs.obtain();
- args.arg1 = callId;
- args.argi1 = proceed ? 1 : 0;
- mHandler.obtainMessage(MSG_ON_POST_DIAL_CONTINUE, args).sendToTarget();
+ public void onPostDialContinue(String callId, boolean proceed, Session.Info sessionInfo) {
+ Log.startSession(sessionInfo, SESSION_POST_DIAL_CONT);
+ try {
+ SomeArgs args = SomeArgs.obtain();
+ args.arg1 = callId;
+ args.arg2 = Log.createSubsession();
+ args.argi1 = proceed ? 1 : 0;
+ mHandler.obtainMessage(MSG_ON_POST_DIAL_CONTINUE, args).sendToTarget();
+ } finally {
+ Log.endSession();
+ }
}
@Override
- public void pullExternalCall(String callId) {
- mHandler.obtainMessage(MSG_PULL_EXTERNAL_CALL, callId).sendToTarget();
+ public void pullExternalCall(String callId, Session.Info sessionInfo) {
+ Log.startSession(sessionInfo, SESSION_PULL_EXTERNAL_CALL);
+ try {
+ SomeArgs args = SomeArgs.obtain();
+ args.arg1 = callId;
+ args.arg2 = Log.createSubsession();
+ mHandler.obtainMessage(MSG_PULL_EXTERNAL_CALL, args).sendToTarget();
+ } finally {
+ Log.endSession();
+ }
}
@Override
- public void sendCallEvent(String callId, String event, Bundle extras) {
- SomeArgs args = SomeArgs.obtain();
- args.arg1 = callId;
- args.arg2 = event;
- args.arg3 = extras;
- mHandler.obtainMessage(MSG_SEND_CALL_EVENT, args).sendToTarget();
+ public void sendCallEvent(String callId, String event, Bundle extras,
+ Session.Info sessionInfo) {
+ Log.startSession(sessionInfo, SESSION_SEND_CALL_EVENT);
+ try {
+ SomeArgs args = SomeArgs.obtain();
+ args.arg1 = callId;
+ args.arg2 = event;
+ args.arg3 = extras;
+ args.arg4 = Log.createSubsession();
+ mHandler.obtainMessage(MSG_SEND_CALL_EVENT, args).sendToTarget();
+ } finally {
+ Log.endSession();
+ }
}
@Override
- public void onExtrasChanged(String callId, Bundle extras) {
- SomeArgs args = SomeArgs.obtain();
- args.arg1 = callId;
- args.arg2 = extras;
- mHandler.obtainMessage(MSG_ON_EXTRAS_CHANGED, args).sendToTarget();
+ public void onExtrasChanged(String callId, Bundle extras, Session.Info sessionInfo) {
+ Log.startSession(sessionInfo, SESSION_EXTRAS_CHANGED);
+ try {
+ SomeArgs args = SomeArgs.obtain();
+ args.arg1 = callId;
+ args.arg2 = extras;
+ args.arg3 = Log.createSubsession();
+ mHandler.obtainMessage(MSG_ON_EXTRAS_CHANGED, args).sendToTarget();
+ } finally {
+ Log.endSession();
+ }
}
};
@@ -276,15 +477,35 @@ public abstract class ConnectionService extends Service {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
- case MSG_ADD_CONNECTION_SERVICE_ADAPTER:
- mAdapter.addAdapter((IConnectionServiceAdapter) msg.obj);
- onAdapterAttached();
+ case MSG_ADD_CONNECTION_SERVICE_ADAPTER: {
+ SomeArgs args = (SomeArgs) msg.obj;
+ try {
+ IConnectionServiceAdapter adapter = (IConnectionServiceAdapter) args.arg1;
+ Log.continueSession((Session) args.arg2,
+ SESSION_HANDLER + SESSION_ADD_CS_ADAPTER);
+ mAdapter.addAdapter(adapter);
+ onAdapterAttached();
+ } finally {
+ args.recycle();
+ Log.endSession();
+ }
break;
- case MSG_REMOVE_CONNECTION_SERVICE_ADAPTER:
- mAdapter.removeAdapter((IConnectionServiceAdapter) msg.obj);
+ }
+ case MSG_REMOVE_CONNECTION_SERVICE_ADAPTER: {
+ SomeArgs args = (SomeArgs) msg.obj;
+ try {
+ Log.continueSession((Session) args.arg2,
+ SESSION_HANDLER + SESSION_REMOVE_CS_ADAPTER);
+ mAdapter.removeAdapter((IConnectionServiceAdapter) args.arg1);
+ } finally {
+ args.recycle();
+ Log.endSession();
+ }
break;
+ }
case MSG_CREATE_CONNECTION: {
SomeArgs args = (SomeArgs) msg.obj;
+ Log.continueSession((Session) args.arg4, SESSION_HANDLER + SESSION_CREATE_CONN);
try {
final PhoneAccountHandle connectionManagerPhoneAccount =
(PhoneAccountHandle) args.arg1;
@@ -315,122 +536,253 @@ public abstract class ConnectionService extends Service {
}
} finally {
args.recycle();
+ Log.endSession();
}
break;
}
- case MSG_ABORT:
- abort((String) msg.obj);
+ case MSG_ABORT: {
+ SomeArgs args = (SomeArgs) msg.obj;
+ Log.continueSession((Session) args.arg2, SESSION_HANDLER + SESSION_ABORT);
+ try {
+ abort((String) args.arg1);
+ } finally {
+ args.recycle();
+ Log.endSession();
+ }
break;
- case MSG_ANSWER:
- answer((String) msg.obj);
+ }
+ case MSG_ANSWER: {
+ SomeArgs args = (SomeArgs) msg.obj;
+ Log.continueSession((Session) args.arg2, SESSION_HANDLER + SESSION_ANSWER);
+ try {
+ answer((String) args.arg1);
+ } finally {
+ args.recycle();
+ Log.endSession();
+ }
break;
+ }
case MSG_ANSWER_VIDEO: {
SomeArgs args = (SomeArgs) msg.obj;
+ Log.continueSession((Session) args.arg2,
+ SESSION_HANDLER + SESSION_ANSWER_VIDEO);
try {
String callId = (String) args.arg1;
int videoState = args.argi1;
answerVideo(callId, videoState);
} finally {
args.recycle();
+ Log.endSession();
}
break;
}
- case MSG_REJECT:
- reject((String) msg.obj);
+ case MSG_REJECT: {
+ SomeArgs args = (SomeArgs) msg.obj;
+ Log.continueSession((Session) args.arg2, SESSION_HANDLER + SESSION_REJECT);
+ try {
+ reject((String) args.arg1);
+ } finally {
+ args.recycle();
+ Log.endSession();
+ }
break;
+ }
case MSG_REJECT_WITH_MESSAGE: {
SomeArgs args = (SomeArgs) msg.obj;
+ Log.continueSession((Session) args.arg3,
+ SESSION_HANDLER + SESSION_REJECT_MESSAGE);
try {
reject((String) args.arg1, (String) args.arg2);
} finally {
args.recycle();
+ Log.endSession();
}
break;
}
- case MSG_DISCONNECT:
- disconnect((String) msg.obj);
+ case MSG_DISCONNECT: {
+ SomeArgs args = (SomeArgs) msg.obj;
+ Log.continueSession((Session) args.arg2, SESSION_HANDLER + SESSION_DISCONNECT);
+ try {
+ disconnect((String) args.arg1);
+ } finally {
+ args.recycle();
+ Log.endSession();
+ }
break;
- case MSG_SILENCE:
- silence((String) msg.obj);
+ }
+ case MSG_SILENCE: {
+ SomeArgs args = (SomeArgs) msg.obj;
+ Log.continueSession((Session) args.arg2, SESSION_HANDLER + SESSION_SILENCE);
+ try {
+ silence((String) args.arg1);
+ } finally {
+ args.recycle();
+ Log.endSession();
+ }
break;
- case MSG_HOLD:
- hold((String) msg.obj);
+ }
+ case MSG_HOLD: {
+ SomeArgs args = (SomeArgs) msg.obj;
+ Log.continueSession((Session) args.arg2, SESSION_HANDLER + SESSION_REJECT);
+ try {
+ hold((String) args.arg1);
+ } finally {
+ args.recycle();
+ Log.endSession();
+ }
break;
- case MSG_UNHOLD:
- unhold((String) msg.obj);
+ }
+ case MSG_UNHOLD: {
+ SomeArgs args = (SomeArgs) msg.obj;
+ Log.continueSession((Session) args.arg2, SESSION_HANDLER + SESSION_UNHOLD);
+ try {
+ unhold((String) args.arg1);
+ } finally {
+ args.recycle();
+ Log.endSession();
+ }
break;
+ }
case MSG_ON_CALL_AUDIO_STATE_CHANGED: {
SomeArgs args = (SomeArgs) msg.obj;
+ Log.continueSession((Session) args.arg3,
+ SESSION_HANDLER + SESSION_CALL_AUDIO_SC);
try {
String callId = (String) args.arg1;
CallAudioState audioState = (CallAudioState) args.arg2;
onCallAudioStateChanged(callId, new CallAudioState(audioState));
} finally {
args.recycle();
+ Log.endSession();
}
break;
}
- case MSG_PLAY_DTMF_TONE:
- playDtmfTone((String) msg.obj, (char) msg.arg1);
+ case MSG_PLAY_DTMF_TONE: {
+ SomeArgs args = (SomeArgs) msg.obj;
+ try {
+ Log.continueSession((Session) args.arg3,
+ SESSION_HANDLER + SESSION_PLAY_DTMF);
+ playDtmfTone((String) args.arg2, (char) args.arg1);
+ } finally {
+ args.recycle();
+ Log.endSession();
+ }
break;
- case MSG_STOP_DTMF_TONE:
- stopDtmfTone((String) msg.obj);
+ }
+ case MSG_STOP_DTMF_TONE: {
+ SomeArgs args = (SomeArgs) msg.obj;
+ try {
+ Log.continueSession((Session) args.arg2,
+ SESSION_HANDLER + SESSION_STOP_DTMF);
+ stopDtmfTone((String) args.arg1);
+ } finally {
+ args.recycle();
+ Log.endSession();
+ }
break;
+ }
case MSG_CONFERENCE: {
SomeArgs args = (SomeArgs) msg.obj;
try {
+ Log.continueSession((Session) args.arg3,
+ SESSION_HANDLER + SESSION_CONFERENCE);
String callId1 = (String) args.arg1;
String callId2 = (String) args.arg2;
conference(callId1, callId2);
} finally {
args.recycle();
+ Log.endSession();
}
break;
}
- case MSG_SPLIT_FROM_CONFERENCE:
- splitFromConference((String) msg.obj);
+ case MSG_SPLIT_FROM_CONFERENCE: {
+ SomeArgs args = (SomeArgs) msg.obj;
+ try {
+ Log.continueSession((Session) args.arg2,
+ SESSION_HANDLER + SESSION_SPLIT_CONFERENCE);
+ splitFromConference((String) args.arg1);
+ } finally {
+ args.recycle();
+ Log.endSession();
+ }
break;
- case MSG_MERGE_CONFERENCE:
- mergeConference((String) msg.obj);
+ }
+ case MSG_MERGE_CONFERENCE: {
+ SomeArgs args = (SomeArgs) msg.obj;
+ try {
+ Log.continueSession((Session) args.arg2,
+ SESSION_HANDLER + SESSION_MERGE_CONFERENCE);
+ mergeConference((String) args.arg1);
+ } finally {
+ args.recycle();
+ Log.endSession();
+ }
break;
- case MSG_SWAP_CONFERENCE:
- swapConference((String) msg.obj);
+ }
+ case MSG_SWAP_CONFERENCE: {
+ SomeArgs args = (SomeArgs) msg.obj;
+ try {
+ Log.continueSession((Session) args.arg2,
+ SESSION_HANDLER + SESSION_SWAP_CONFERENCE);
+ swapConference((String) args.arg1);
+ } finally {
+ args.recycle();
+ Log.endSession();
+ }
break;
+ }
case MSG_ON_POST_DIAL_CONTINUE: {
SomeArgs args = (SomeArgs) msg.obj;
try {
+ Log.continueSession((Session) args.arg2,
+ SESSION_HANDLER + SESSION_POST_DIAL_CONT);
String callId = (String) args.arg1;
boolean proceed = (args.argi1 == 1);
onPostDialContinue(callId, proceed);
} finally {
args.recycle();
+ Log.endSession();
}
break;
}
case MSG_PULL_EXTERNAL_CALL: {
- pullExternalCall((String) msg.obj);
+ SomeArgs args = (SomeArgs) msg.obj;
+ try {
+ Log.continueSession((Session) args.arg2,
+ SESSION_HANDLER + SESSION_PULL_EXTERNAL_CALL);
+ pullExternalCall((String) args.arg1);
+ } finally {
+ args.recycle();
+ Log.endSession();
+ }
break;
}
case MSG_SEND_CALL_EVENT: {
SomeArgs args = (SomeArgs) msg.obj;
try {
+ Log.continueSession((Session) args.arg4,
+ SESSION_HANDLER + SESSION_SEND_CALL_EVENT);
String callId = (String) args.arg1;
String event = (String) args.arg2;
Bundle extras = (Bundle) args.arg3;
sendCallEvent(callId, event, extras);
} finally {
args.recycle();
+ Log.endSession();
}
break;
}
case MSG_ON_EXTRAS_CHANGED: {
SomeArgs args = (SomeArgs) msg.obj;
try {
+ Log.continueSession((Session) args.arg3,
+ SESSION_HANDLER + SESSION_EXTRAS_CHANGED);
String callId = (String) args.arg1;
Bundle extras = (Bundle) args.arg2;
handleExtrasChanged(callId, extras);
} finally {
args.recycle();
+ Log.endSession();
}
break;
}
@@ -698,7 +1050,7 @@ public abstract class ConnectionService extends Service {
mAdapter.putExtras(id, extras);
}
}
-
+
public void onExtrasRemoved(Connection c, List<String> keys) {
String id = mIdByConnection.get(c);
if (id != null) {
@@ -1274,15 +1626,11 @@ public abstract class ConnectionService extends Service {
* call created using
* {@code TelecomManager#addNewIncomingCall(PhoneAccountHandle, android.os.Bundle)}.
*
- * @param connectionManagerPhoneAccount
- * @param request
- * @return
- *
* @hide
*/
public Connection onCreateUnknownConnection(PhoneAccountHandle connectionManagerPhoneAccount,
ConnectionRequest request) {
- return null;
+ return null;
}
/**
@@ -1509,7 +1857,7 @@ public abstract class ConnectionService extends Service {
* @return The call ID.
*/
private int getNextCallId() {
- synchronized(mIdSyncRoot) {
+ synchronized (mIdSyncRoot) {
return ++mId;
}
}
diff --git a/telecomm/java/android/telecom/Log.java b/telecomm/java/android/telecom/Log.java
index 1e5769fad1df..446bbbb69996 100644
--- a/telecomm/java/android/telecom/Log.java
+++ b/telecomm/java/android/telecom/Log.java
@@ -184,6 +184,10 @@ public class Log {
getSessionManager().startSession(shortMethodName, null);
}
+ public static void startSession(Session.Info info, String shortMethodName) {
+ getSessionManager().startSession(info, shortMethodName, null);
+ }
+
public static void startSession(String shortMethodName, String callerIdentification) {
getSessionManager().startSession(shortMethodName, callerIdentification);
}
@@ -193,14 +197,14 @@ public class Log {
getSessionManager().startSession(info, shortMethodName, callerIdentification);
}
- public static void startExternalSession(Session.Info sessionInfo, String shortMethodName) {
- getSessionManager().startExternalSession(sessionInfo, shortMethodName);
- }
-
public static Session createSubsession() {
return getSessionManager().createSubsession();
}
+ public static Session.Info getExternalSession() {
+ return getSessionManager().getExternalSession();
+ }
+
public static void cancelSubsession(Session subsession) {
getSessionManager().cancelSubsession(subsession);
}
diff --git a/telecomm/java/android/telecom/Logging/Session.aidl b/telecomm/java/android/telecom/Logging/Session.aidl
new file mode 100644
index 000000000000..68961b6b3e80
--- /dev/null
+++ b/telecomm/java/android/telecom/Logging/Session.aidl
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package android.telecom.Logging;
+
+/**
+ * {@hide}
+ */
+parcelable Session.Info; \ No newline at end of file
diff --git a/telecomm/java/android/telecom/Logging/Session.java b/telecomm/java/android/telecom/Logging/Session.java
index 093c0f921c06..3a7b8c09203a 100644
--- a/telecomm/java/android/telecom/Logging/Session.java
+++ b/telecomm/java/android/telecom/Logging/Session.java
@@ -281,7 +281,15 @@ public class Session {
parentSession.getFullMethodPath(sb);
sb.append(SUBSESSION_SEPARATION_CHAR);
}
- sb.append(mShortMethodName);
+ // Encapsulate the external session's method name so it is obvious what part of the session
+ // is external.
+ if (isExternal()) {
+ sb.append("(");
+ sb.append(mShortMethodName);
+ sb.append(")");
+ } else {
+ sb.append(mShortMethodName);
+ }
if(isSessionStarted) {
// Cache this value so that we do not have to do this work next time!
diff --git a/telecomm/java/android/telecom/Logging/SessionManager.java b/telecomm/java/android/telecom/Logging/SessionManager.java
index 173e7ee55387..8ced7f8181c5 100644
--- a/telecomm/java/android/telecom/Logging/SessionManager.java
+++ b/telecomm/java/android/telecom/Logging/SessionManager.java
@@ -229,6 +229,23 @@ public class SessionManager {
}
/**
+ * Retrieve the information of the currently active Session. This information is parcelable and
+ * is used to create an external Session ({@link #startExternalSession(Session.Info, String)}).
+ * If there is no Session active, this method will return null.
+ */
+ public synchronized Session.Info getExternalSession() {
+ int threadId = getCallingThreadId();
+ Session threadSession = mSessionMapper.get(threadId);
+ if (threadSession == null) {
+ Log.d(LOGGING_TAG, "Log.getExternalSession was called with no session " +
+ "active.");
+ return null;
+ }
+
+ return threadSession.getInfo();
+ }
+
+ /**
* Cancels a subsession that had Log.createSubsession() called on it, but will never have
* Log.continueSession(...) called on it due to an error. Allows the subsession to be cleaned
* gracefully instead of being removed by the mSessionCleanupHandler forcefully later.
diff --git a/telecomm/java/android/telecom/RemoteConference.java b/telecomm/java/android/telecom/RemoteConference.java
index 0ef9ec1804c5..502b7c01b0c0 100644
--- a/telecomm/java/android/telecom/RemoteConference.java
+++ b/telecomm/java/android/telecom/RemoteConference.java
@@ -399,7 +399,7 @@ public final class RemoteConference {
*/
public void disconnect() {
try {
- mConnectionService.disconnect(mId);
+ mConnectionService.disconnect(mId, null /*Session.Info*/);
} catch (RemoteException e) {
}
}
@@ -414,7 +414,7 @@ public final class RemoteConference {
public void separate(RemoteConnection connection) {
if (mChildConnections.contains(connection)) {
try {
- mConnectionService.splitFromConference(connection.getId());
+ mConnectionService.splitFromConference(connection.getId(), null /*Session.Info*/);
} catch (RemoteException e) {
}
}
@@ -432,7 +432,7 @@ public final class RemoteConference {
*/
public void merge() {
try {
- mConnectionService.mergeConference(mId);
+ mConnectionService.mergeConference(mId, null /*Session.Info*/);
} catch (RemoteException e) {
}
}
@@ -448,7 +448,7 @@ public final class RemoteConference {
*/
public void swap() {
try {
- mConnectionService.swapConference(mId);
+ mConnectionService.swapConference(mId, null /*Session.Info*/);
} catch (RemoteException e) {
}
}
@@ -458,7 +458,7 @@ public final class RemoteConference {
*/
public void hold() {
try {
- mConnectionService.hold(mId);
+ mConnectionService.hold(mId, null /*Session.Info*/);
} catch (RemoteException e) {
}
}
@@ -468,7 +468,7 @@ public final class RemoteConference {
*/
public void unhold() {
try {
- mConnectionService.unhold(mId);
+ mConnectionService.unhold(mId, null /*Session.Info*/);
} catch (RemoteException e) {
}
}
@@ -491,7 +491,7 @@ public final class RemoteConference {
*/
public void playDtmfTone(char digit) {
try {
- mConnectionService.playDtmfTone(mId, digit);
+ mConnectionService.playDtmfTone(mId, digit, null /*Session.Info*/);
} catch (RemoteException e) {
}
}
@@ -503,7 +503,7 @@ public final class RemoteConference {
*/
public void stopDtmfTone() {
try {
- mConnectionService.stopDtmfTone(mId);
+ mConnectionService.stopDtmfTone(mId, null /*Session.Info*/);
} catch (RemoteException e) {
}
}
@@ -528,7 +528,7 @@ public final class RemoteConference {
*/
public void setCallAudioState(CallAudioState state) {
try {
- mConnectionService.onCallAudioStateChanged(mId, state);
+ mConnectionService.onCallAudioStateChanged(mId, state, null /*Session.Info*/);
} catch (RemoteException e) {
}
}
diff --git a/telecomm/java/android/telecom/RemoteConnection.java b/telecomm/java/android/telecom/RemoteConnection.java
index 37fa374bdafd..0e4f53e4881a 100644
--- a/telecomm/java/android/telecom/RemoteConnection.java
+++ b/telecomm/java/android/telecom/RemoteConnection.java
@@ -855,7 +855,7 @@ public final class RemoteConnection {
public void abort() {
try {
if (mConnected) {
- mConnectionService.abort(mConnectionId);
+ mConnectionService.abort(mConnectionId, null /*Session.Info*/);
}
} catch (RemoteException ignored) {
}
@@ -867,7 +867,7 @@ public final class RemoteConnection {
public void answer() {
try {
if (mConnected) {
- mConnectionService.answer(mConnectionId);
+ mConnectionService.answer(mConnectionId, null /*Session.Info*/);
}
} catch (RemoteException ignored) {
}
@@ -881,7 +881,7 @@ public final class RemoteConnection {
public void answer(int videoState) {
try {
if (mConnected) {
- mConnectionService.answerVideo(mConnectionId, videoState);
+ mConnectionService.answerVideo(mConnectionId, videoState, null /*Session.Info*/);
}
} catch (RemoteException ignored) {
}
@@ -893,7 +893,7 @@ public final class RemoteConnection {
public void reject() {
try {
if (mConnected) {
- mConnectionService.reject(mConnectionId);
+ mConnectionService.reject(mConnectionId, null /*Session.Info*/);
}
} catch (RemoteException ignored) {
}
@@ -905,7 +905,7 @@ public final class RemoteConnection {
public void hold() {
try {
if (mConnected) {
- mConnectionService.hold(mConnectionId);
+ mConnectionService.hold(mConnectionId, null /*Session.Info*/);
}
} catch (RemoteException ignored) {
}
@@ -917,7 +917,7 @@ public final class RemoteConnection {
public void unhold() {
try {
if (mConnected) {
- mConnectionService.unhold(mConnectionId);
+ mConnectionService.unhold(mConnectionId, null /*Session.Info*/);
}
} catch (RemoteException ignored) {
}
@@ -929,7 +929,7 @@ public final class RemoteConnection {
public void disconnect() {
try {
if (mConnected) {
- mConnectionService.disconnect(mConnectionId);
+ mConnectionService.disconnect(mConnectionId, null /*Session.Info*/);
}
} catch (RemoteException ignored) {
}
@@ -947,7 +947,7 @@ public final class RemoteConnection {
public void playDtmfTone(char digit) {
try {
if (mConnected) {
- mConnectionService.playDtmfTone(mConnectionId, digit);
+ mConnectionService.playDtmfTone(mConnectionId, digit, null /*Session.Info*/);
}
} catch (RemoteException ignored) {
}
@@ -963,7 +963,7 @@ public final class RemoteConnection {
public void stopDtmfTone() {
try {
if (mConnected) {
- mConnectionService.stopDtmfTone(mConnectionId);
+ mConnectionService.stopDtmfTone(mConnectionId, null /*Session.Info*/);
}
} catch (RemoteException ignored) {
}
@@ -993,7 +993,8 @@ public final class RemoteConnection {
public void postDialContinue(boolean proceed) {
try {
if (mConnected) {
- mConnectionService.onPostDialContinue(mConnectionId, proceed);
+ mConnectionService.onPostDialContinue(mConnectionId, proceed,
+ null /*Session.Info*/);
}
} catch (RemoteException ignored) {
}
@@ -1007,7 +1008,7 @@ public final class RemoteConnection {
public void pullExternalCall() {
try {
if (mConnected) {
- mConnectionService.pullExternalCall(mConnectionId);
+ mConnectionService.pullExternalCall(mConnectionId, null /*Session.Info*/);
}
} catch (RemoteException ignored) {
}
@@ -1034,7 +1035,8 @@ public final class RemoteConnection {
public void setCallAudioState(CallAudioState state) {
try {
if (mConnected) {
- mConnectionService.onCallAudioStateChanged(mConnectionId, state);
+ mConnectionService.onCallAudioStateChanged(mConnectionId, state,
+ null /*Session.Info*/);
}
} catch (RemoteException ignored) {
}
diff --git a/telecomm/java/android/telecom/RemoteConnectionManager.java b/telecomm/java/android/telecom/RemoteConnectionManager.java
index 036650927f3a..0322218d75dc 100644
--- a/telecomm/java/android/telecom/RemoteConnectionManager.java
+++ b/telecomm/java/android/telecom/RemoteConnectionManager.java
@@ -76,7 +76,7 @@ public class RemoteConnectionManager {
public void conferenceRemoteConnections(RemoteConnection a, RemoteConnection b) {
if (a.getConnectionService() == b.getConnectionService()) {
try {
- a.getConnectionService().conference(a.getId(), b.getId());
+ a.getConnectionService().conference(a.getId(), b.getId(), null /*Session.Info*/);
} catch (RemoteException e) {
}
} else {
diff --git a/telecomm/java/android/telecom/RemoteConnectionService.java b/telecomm/java/android/telecom/RemoteConnectionService.java
index 1577a0f925f3..3927d81f4aaa 100644
--- a/telecomm/java/android/telecom/RemoteConnectionService.java
+++ b/telecomm/java/android/telecom/RemoteConnectionService.java
@@ -431,7 +431,8 @@ final class RemoteConnectionService {
request.getVideoState());
try {
if (mConnectionById.isEmpty()) {
- mOutgoingConnectionServiceRpc.addConnectionServiceAdapter(mServant.getStub());
+ mOutgoingConnectionServiceRpc.addConnectionServiceAdapter(mServant.getStub(),
+ null /*Session.Info*/);
}
RemoteConnection connection =
new RemoteConnection(id, mOutgoingConnectionServiceRpc, newRequest);
@@ -442,7 +443,8 @@ final class RemoteConnectionService {
id,
newRequest,
isIncoming,
- false /* isUnknownCall */);
+ false /* isUnknownCall */,
+ null /*Session.info*/);
connection.registerCallback(new RemoteConnection.Callback() {
@Override
public void onDestroyed(RemoteConnection connection) {
@@ -482,7 +484,8 @@ final class RemoteConnectionService {
private void maybeDisconnectAdapter() {
if (mConnectionById.isEmpty() && mConferenceById.isEmpty()) {
try {
- mOutgoingConnectionServiceRpc.removeConnectionServiceAdapter(mServant.getStub());
+ mOutgoingConnectionServiceRpc.removeConnectionServiceAdapter(mServant.getStub(),
+ null /*Session.info*/);
} catch (RemoteException e) {
}
}
diff --git a/telecomm/java/com/android/internal/telecom/IConnectionService.aidl b/telecomm/java/com/android/internal/telecom/IConnectionService.aidl
index a4c179820331..8a27675e08ab 100644
--- a/telecomm/java/com/android/internal/telecom/IConnectionService.aidl
+++ b/telecomm/java/com/android/internal/telecom/IConnectionService.aidl
@@ -19,6 +19,7 @@ package com.android.internal.telecom;
import android.os.Bundle;
import android.telecom.CallAudioState;
import android.telecom.ConnectionRequest;
+import android.telecom.Logging.Session;
import android.telecom.PhoneAccountHandle;
import com.android.internal.telecom.IConnectionServiceAdapter;
@@ -31,54 +32,58 @@ import com.android.internal.telecom.IConnectionServiceAdapter;
* @hide
*/
oneway interface IConnectionService {
- void addConnectionServiceAdapter(in IConnectionServiceAdapter adapter);
+ void addConnectionServiceAdapter(in IConnectionServiceAdapter adapter,
+ in Session.Info sessionInfo);
- void removeConnectionServiceAdapter(in IConnectionServiceAdapter adapter);
+ void removeConnectionServiceAdapter(in IConnectionServiceAdapter adapter,
+ in Session.Info sessionInfo);
void createConnection(
in PhoneAccountHandle connectionManagerPhoneAccount,
String callId,
in ConnectionRequest request,
boolean isIncoming,
- boolean isUnknown);
+ boolean isUnknown,
+ in Session.Info sessionInfo);
- void abort(String callId);
+ void abort(String callId, in Session.Info sessionInfo);
- void answerVideo(String callId, int videoState);
+ void answerVideo(String callId, int videoState, in Session.Info sessionInfo);
- void answer(String callId);
+ void answer(String callId, in Session.Info sessionInfo);
- void reject(String callId);
+ void reject(String callId, in Session.Info sessionInfo);
- void rejectWithMessage(String callId, String message);
+ void rejectWithMessage(String callId, String message, in Session.Info sessionInfo);
- void disconnect(String callId);
+ void disconnect(String callId, in Session.Info sessionInfo);
- void silence(String callId);
+ void silence(String callId, in Session.Info sessionInfo);
- void hold(String callId);
+ void hold(String callId, in Session.Info sessionInfo);
- void unhold(String callId);
+ void unhold(String callId, in Session.Info sessionInfo);
- void onCallAudioStateChanged(String activeCallId, in CallAudioState callAudioState);
+ void onCallAudioStateChanged(String activeCallId, in CallAudioState callAudioState,
+ in Session.Info sessionInfo);
- void playDtmfTone(String callId, char digit);
+ void playDtmfTone(String callId, char digit, in Session.Info sessionInfo);
- void stopDtmfTone(String callId);
+ void stopDtmfTone(String callId, in Session.Info sessionInfo);
- void conference(String conferenceCallId, String callId);
+ void conference(String conferenceCallId, String callId, in Session.Info sessionInfo);
- void splitFromConference(String callId);
+ void splitFromConference(String callId, in Session.Info sessionInfo);
- void mergeConference(String conferenceCallId);
+ void mergeConference(String conferenceCallId, in Session.Info sessionInfo);
- void swapConference(String conferenceCallId);
+ void swapConference(String conferenceCallId, in Session.Info sessionInfo);
- void onPostDialContinue(String callId, boolean proceed);
+ void onPostDialContinue(String callId, boolean proceed, in Session.Info sessionInfo);
- void pullExternalCall(String callId);
+ void pullExternalCall(String callId, in Session.Info sessionInfo);
- void sendCallEvent(String callId, String event, in Bundle extras);
+ void sendCallEvent(String callId, String event, in Bundle extras, in Session.Info sessionInfo);
- void onExtrasChanged(String callId, in Bundle extras);
+ void onExtrasChanged(String callId, in Bundle extras, in Session.Info sessionInfo);
}