Merge "Add BluetoothDeviceManager (multi-hfp part 1)"
diff --git a/src/com/android/server/telecom/ConnectionServiceWrapper.java b/src/com/android/server/telecom/ConnectionServiceWrapper.java
index d8c698a..22ea7ad 100644
--- a/src/com/android/server/telecom/ConnectionServiceWrapper.java
+++ b/src/com/android/server/telecom/ConnectionServiceWrapper.java
@@ -67,8 +67,8 @@
 
         @Override
         public void handleCreateConnectionComplete(String callId, ConnectionRequest request,
-                ParcelableConnection connection) {
-            Log.startSession("CSW.hCCC");
+                ParcelableConnection connection, Session.Info sessionInfo) {
+            Log.startSession(sessionInfo, "CSW.hCCC");
             long token = Binder.clearCallingIdentity();
             try {
                 synchronized (mLock) {
@@ -83,8 +83,8 @@
         }
 
         @Override
-        public void setActive(String callId) {
-            Log.startSession("CSW.sA");
+        public void setActive(String callId, Session.Info sessionInfo) {
+            Log.startSession(sessionInfo, "CSW.sA");
             long token = Binder.clearCallingIdentity();
             try {
                 synchronized (mLock) {
@@ -103,8 +103,8 @@
         }
 
         @Override
-        public void setRinging(String callId) {
-            Log.startSession("CSW.sR");
+        public void setRinging(String callId, Session.Info sessionInfo) {
+            Log.startSession(sessionInfo, "CSW.sR");
             long token = Binder.clearCallingIdentity();
             try {
                 synchronized (mLock) {
@@ -123,8 +123,9 @@
         }
 
         @Override
-        public void setVideoProvider(String callId, IVideoProvider videoProvider) {
-            Log.startSession("CSW.sVP");
+        public void setVideoProvider(String callId, IVideoProvider videoProvider,
+                Session.Info sessionInfo) {
+            Log.startSession(sessionInfo, "CSW.sVP");
             long token = Binder.clearCallingIdentity();
             try {
                 synchronized (mLock) {
@@ -141,8 +142,8 @@
         }
 
         @Override
-        public void setDialing(String callId) {
-            Log.startSession("CSW.sD");
+        public void setDialing(String callId, Session.Info sessionInfo) {
+            Log.startSession(sessionInfo, "CSW.sD");
             long token = Binder.clearCallingIdentity();
             try {
                 synchronized (mLock) {
@@ -161,8 +162,9 @@
         }
 
         @Override
-        public void setDisconnected(String callId, DisconnectCause disconnectCause) {
-            Log.startSession("CSW.sD");
+        public void setDisconnected(String callId, DisconnectCause disconnectCause,
+                Session.Info sessionInfo) {
+            Log.startSession(sessionInfo, "CSW.sD");
             long token = Binder.clearCallingIdentity();
             try {
                 synchronized (mLock) {
@@ -182,8 +184,8 @@
         }
 
         @Override
-        public void setOnHold(String callId) {
-            Log.startSession("CSW.sOH");
+        public void setOnHold(String callId, Session.Info sessionInfo) {
+            Log.startSession(sessionInfo, "CSW.sOH");
             long token = Binder.clearCallingIdentity();
             try {
                 synchronized (mLock) {
@@ -202,8 +204,9 @@
         }
 
         @Override
-        public void setRingbackRequested(String callId, boolean ringback) {
-            Log.startSession("CSW.SRR");
+        public void setRingbackRequested(String callId, boolean ringback,
+                Session.Info sessionInfo) {
+            Log.startSession(sessionInfo, "CSW.SRR");
             long token = Binder.clearCallingIdentity();
             try {
                 synchronized (mLock) {
@@ -222,8 +225,8 @@
         }
 
         @Override
-        public void removeCall(String callId) {
-            Log.startSession("CSW.rC");
+        public void removeCall(String callId, Session.Info sessionInfo) {
+            Log.startSession(sessionInfo, "CSW.rC");
             long token = Binder.clearCallingIdentity();
             try {
                 synchronized (mLock) {
@@ -245,8 +248,9 @@
         }
 
         @Override
-        public void setConnectionCapabilities(String callId, int connectionCapabilities) {
-            Log.startSession("CSW.sCC");
+        public void setConnectionCapabilities(String callId, int connectionCapabilities,
+                Session.Info sessionInfo) {
+            Log.startSession(sessionInfo, "CSW.sCC");
             long token = Binder.clearCallingIdentity();
             try {
                 synchronized (mLock) {
@@ -266,7 +270,8 @@
         }
 
         @Override
-        public void setConnectionProperties(String callId, int connectionProperties) {
+        public void setConnectionProperties(String callId, int connectionProperties,
+                Session.Info sessionInfo) {
             Log.startSession("CSW.sCP");
             long token = Binder.clearCallingIdentity();
             try {
@@ -284,8 +289,9 @@
         }
 
         @Override
-        public void setIsConferenced(String callId, String conferenceCallId) {
-            Log.startSession("CSW.sIC");
+        public void setIsConferenced(String callId, String conferenceCallId,
+                Session.Info sessionInfo) {
+            Log.startSession(sessionInfo, "CSW.sIC");
             long token = Binder.clearCallingIdentity();
             try {
                 synchronized (mLock) {
@@ -310,8 +316,8 @@
         }
 
         @Override
-        public void setConferenceMergeFailed(String callId) {
-            Log.startSession("CSW.sCMF");
+        public void setConferenceMergeFailed(String callId, Session.Info sessionInfo) {
+            Log.startSession(sessionInfo, "CSW.sCMF");
             long token = Binder.clearCallingIdentity();
             try {
                 synchronized (mLock) {
@@ -341,8 +347,9 @@
         }
 
         @Override
-        public void addConferenceCall(String callId, ParcelableConference parcelableConference) {
-            Log.startSession("CSW.aCC");
+        public void addConferenceCall(String callId, ParcelableConference parcelableConference,
+                Session.Info sessionInfo) {
+            Log.startSession(sessionInfo, "CSW.aCC");
             long token = Binder.clearCallingIdentity();
             try {
                 synchronized (mLock) {
@@ -396,8 +403,9 @@
         }
 
         @Override
-        public void onPostDialWait(String callId, String remaining) throws RemoteException {
-            Log.startSession("CSW.oPDW");
+        public void onPostDialWait(String callId, String remaining,
+                Session.Info sessionInfo) throws RemoteException {
+            Log.startSession(sessionInfo, "CSW.oPDW");
             long token = Binder.clearCallingIdentity();
             try {
                 synchronized (mLock) {
@@ -416,8 +424,9 @@
         }
 
         @Override
-        public void onPostDialChar(String callId, char nextChar) throws RemoteException {
-            Log.startSession("CSW.oPDC");
+        public void onPostDialChar(String callId, char nextChar,
+                Session.Info sessionInfo) throws RemoteException {
+            Log.startSession(sessionInfo, "CSW.oPDC");
             long token = Binder.clearCallingIdentity();
             try {
                 synchronized (mLock) {
@@ -436,9 +445,10 @@
         }
 
         @Override
-        public void queryRemoteConnectionServices(RemoteServiceCallback callback) {
+        public void queryRemoteConnectionServices(RemoteServiceCallback callback,
+                Session.Info sessionInfo) {
             final UserHandle callingUserHandle = Binder.getCallingUserHandle();
-            Log.startSession("CSW.qRCS");
+            Log.startSession(sessionInfo, "CSW.qRCS");
             long token = Binder.clearCallingIdentity();
             try {
                 synchronized (mLock) {
@@ -453,8 +463,8 @@
         }
 
         @Override
-        public void setVideoState(String callId, int videoState) {
-            Log.startSession("CSW.sVS");
+        public void setVideoState(String callId, int videoState, Session.Info sessionInfo) {
+            Log.startSession(sessionInfo, "CSW.sVS");
             long token = Binder.clearCallingIdentity();
             try {
                 synchronized (mLock) {
@@ -471,8 +481,8 @@
         }
 
         @Override
-        public void setIsVoipAudioMode(String callId, boolean isVoip) {
-            Log.startSession("CSW.sIVAM");
+        public void setIsVoipAudioMode(String callId, boolean isVoip, Session.Info sessionInfo) {
+            Log.startSession(sessionInfo, "CSW.sIVAM");
             long token = Binder.clearCallingIdentity();
             try {
                 synchronized (mLock) {
@@ -489,8 +499,9 @@
         }
 
         @Override
-        public void setStatusHints(String callId, StatusHints statusHints) {
-            Log.startSession("CSW.sSH");
+        public void setStatusHints(String callId, StatusHints statusHints,
+                Session.Info sessionInfo) {
+            Log.startSession(sessionInfo, "CSW.sSH");
             long token = Binder.clearCallingIdentity();
             try {
                 synchronized (mLock) {
@@ -507,8 +518,8 @@
         }
 
         @Override
-        public void putExtras(String callId, Bundle extras) {
-            Log.startSession("CSW.pE");
+        public void putExtras(String callId, Bundle extras, Session.Info sessionInfo) {
+            Log.startSession(sessionInfo, "CSW.pE");
             long token = Binder.clearCallingIdentity();
             try {
                 synchronized (mLock) {
@@ -525,8 +536,8 @@
         }
 
         @Override
-        public void removeExtras(String callId, List<String> keys) {
-            Log.startSession("CSW.rE");
+        public void removeExtras(String callId, List<String> keys, Session.Info sessionInfo) {
+            Log.startSession(sessionInfo, "CSW.rE");
             long token = Binder.clearCallingIdentity();
             try {
                 synchronized (mLock) {
@@ -543,8 +554,9 @@
         }
 
         @Override
-        public void setAddress(String callId, Uri address, int presentation) {
-            Log.startSession("CSW.sA");
+        public void setAddress(String callId, Uri address, int presentation,
+                Session.Info sessionInfo) {
+            Log.startSession(sessionInfo, "CSW.sA");
             long token = Binder.clearCallingIdentity();
             try {
                 synchronized (mLock) {
@@ -561,9 +573,9 @@
         }
 
         @Override
-        public void setCallerDisplayName(
-                String callId, String callerDisplayName, int presentation) {
-            Log.startSession("CSW.sCDN");
+        public void setCallerDisplayName(String callId, String callerDisplayName, int presentation,
+                Session.Info sessionInfo) {
+            Log.startSession(sessionInfo, "CSW.sCDN");
             long token = Binder.clearCallingIdentity();
             try {
                 synchronized (mLock) {
@@ -581,9 +593,9 @@
         }
 
         @Override
-        public void setConferenceableConnections(
-                String callId, List<String> conferenceableCallIds) {
-            Log.startSession("CSW.sCC");
+        public void setConferenceableConnections(String callId, List<String> conferenceableCallIds,
+                Session.Info sessionInfo) {
+            Log.startSession(sessionInfo, "CSW.sCC");
             long token = Binder.clearCallingIdentity();
             try {
                 synchronized (mLock) {
@@ -609,8 +621,9 @@
         }
 
         @Override
-        public void addExistingConnection(String callId, ParcelableConnection connection) {
-            Log.startSession("CSW.aEC");
+        public void addExistingConnection(String callId, ParcelableConnection connection,
+                Session.Info sessionInfo) {
+            Log.startSession(sessionInfo, "CSW.aEC");
             long token = Binder.clearCallingIdentity();
             try {
                 synchronized (mLock) {
@@ -627,8 +640,9 @@
         }
 
         @Override
-        public void onConnectionEvent(String callId, String event, Bundle extras) {
-            Log.startSession("CSW.oCE");
+        public void onConnectionEvent(String callId, String event, Bundle extras,
+                Session.Info sessionInfo) {
+            Log.startSession(sessionInfo, "CSW.oCE");
             long token = Binder.clearCallingIdentity();
             try {
                 synchronized (mLock) {
diff --git a/tests/src/com/android/server/telecom/tests/ConnectionServiceFixture.java b/tests/src/com/android/server/telecom/tests/ConnectionServiceFixture.java
index 32cb54a..887d635 100644
--- a/tests/src/com/android/server/telecom/tests/ConnectionServiceFixture.java
+++ b/tests/src/com/android/server/telecom/tests/ConnectionServiceFixture.java
@@ -365,28 +365,28 @@
             a.handleCreateConnectionComplete(
                     id,
                     mConnectionById.get(id).request,
-                    parcelable(mConnectionById.get(id)));
+                    parcelable(mConnectionById.get(id)), null /*Session.Info*/);
         }
     }
 
     public void sendSetActive(String id) throws Exception {
         mConnectionById.get(id).state = Connection.STATE_ACTIVE;
         for (IConnectionServiceAdapter a : mConnectionServiceAdapters) {
-            a.setActive(id);
+            a.setActive(id, null /*Session.Info*/);
         }
     }
 
     public void sendSetRinging(String id) throws Exception {
         mConnectionById.get(id).state = Connection.STATE_RINGING;
         for (IConnectionServiceAdapter a : mConnectionServiceAdapters) {
-            a.setRinging(id);
+            a.setRinging(id, null /*Session.Info*/);
         }
     }
 
     public void sendSetDialing(String id) throws Exception {
         mConnectionById.get(id).state = Connection.STATE_DIALING;
         for (IConnectionServiceAdapter a : mConnectionServiceAdapters) {
-            a.setDialing(id);
+            a.setDialing(id, null /*Session.Info*/);
         }
     }
 
@@ -394,56 +394,57 @@
         mConnectionById.get(id).state = Connection.STATE_DISCONNECTED;
         mConnectionById.get(id).disconnectCause = new DisconnectCause(disconnectCause);
         for (IConnectionServiceAdapter a : mConnectionServiceAdapters) {
-            a.setDisconnected(id, mConnectionById.get(id).disconnectCause);
+            a.setDisconnected(id, mConnectionById.get(id).disconnectCause, null /*Session.Info*/);
         }
     }
 
     public void sendSetOnHold(String id) throws Exception {
         mConnectionById.get(id).state = Connection.STATE_HOLDING;
         for (IConnectionServiceAdapter a : mConnectionServiceAdapters) {
-            a.setOnHold(id);
+            a.setOnHold(id, null /*Session.Info*/);
         }
     }
 
     public void sendSetRingbackRequested(String id) throws Exception {
         for (IConnectionServiceAdapter a : mConnectionServiceAdapters) {
-            a.setRingbackRequested(id, mConnectionById.get(id).ringing);
+            a.setRingbackRequested(id, mConnectionById.get(id).ringing, null /*Session.Info*/);
         }
     }
 
     public void sendSetConnectionCapabilities(String id) throws Exception {
         for (IConnectionServiceAdapter a : mConnectionServiceAdapters) {
-            a.setConnectionCapabilities(id, mConnectionById.get(id).capabilities);
+            a.setConnectionCapabilities(id, mConnectionById.get(id).capabilities,
+                    null /*Session.Info*/);
         }
     }
 
     public void sendSetIsConferenced(String id) throws Exception {
         for (IConnectionServiceAdapter a : mConnectionServiceAdapters) {
-            a.setIsConferenced(id, mConnectionById.get(id).conferenceId);
+            a.setIsConferenced(id, mConnectionById.get(id).conferenceId, null /*Session.Info*/);
         }
     }
 
     public void sendAddConferenceCall(String id) throws Exception {
         for (IConnectionServiceAdapter a : mConnectionServiceAdapters) {
-            a.addConferenceCall(id, parcelable(mConferenceById.get(id)));
+            a.addConferenceCall(id, parcelable(mConferenceById.get(id)), null /*Session.Info*/);
         }
     }
 
     public void sendRemoveCall(String id) throws Exception {
         for (IConnectionServiceAdapter a : mConnectionServiceAdapters) {
-            a.removeCall(id);
+            a.removeCall(id, null /*Session.Info*/);
         }
     }
 
     public void sendOnPostDialWait(String id, String remaining) throws Exception {
         for (IConnectionServiceAdapter a : mConnectionServiceAdapters) {
-            a.onPostDialWait(id, remaining);
+            a.onPostDialWait(id, remaining, null /*Session.Info*/);
         }
     }
 
     public void sendOnPostDialChar(String id, char nextChar) throws Exception {
         for (IConnectionServiceAdapter a : mConnectionServiceAdapters) {
-            a.onPostDialChar(id, nextChar);
+            a.onPostDialChar(id, nextChar, null /*Session.Info*/);
         }
     }
 
@@ -470,31 +471,32 @@
                 public IBinder asBinder() {
                     return this;
                 }
-            });
+            }, null /*Session.Info*/);
         }
     }
 
     public void sendSetVideoProvider(String id) throws Exception {
         for (IConnectionServiceAdapter a : mConnectionServiceAdapters) {
-            a.setVideoProvider(id, mConnectionById.get(id).videoProvider);
+            a.setVideoProvider(id, mConnectionById.get(id).videoProvider, null /*Session.Info*/);
         }
     }
 
     public void sendSetVideoState(String id) throws Exception {
         for (IConnectionServiceAdapter a : mConnectionServiceAdapters) {
-            a.setVideoState(id, mConnectionById.get(id).videoState);
+            a.setVideoState(id, mConnectionById.get(id).videoState, null /*Session.Info*/);
         }
     }
 
     public void sendSetIsVoipAudioMode(String id) throws Exception {
         for (IConnectionServiceAdapter a : mConnectionServiceAdapters) {
-            a.setIsVoipAudioMode(id, mConnectionById.get(id).isVoipAudioMode);
+            a.setIsVoipAudioMode(id, mConnectionById.get(id).isVoipAudioMode,
+                    null /*Session.Info*/);
         }
     }
 
     public void sendSetStatusHints(String id) throws Exception {
         for (IConnectionServiceAdapter a : mConnectionServiceAdapters) {
-            a.setStatusHints(id, mConnectionById.get(id).statusHints);
+            a.setStatusHints(id, mConnectionById.get(id).statusHints, null /*Session.Info*/);
         }
     }
 
@@ -503,7 +505,7 @@
             a.setAddress(
                     id,
                     mConnectionById.get(id).request.getAddress(),
-                    mConnectionById.get(id).addressPresentation);
+                    mConnectionById.get(id).addressPresentation, null /*Session.Info*/);
         }
     }
 
@@ -512,25 +514,26 @@
             a.setCallerDisplayName(
                     id,
                     mConnectionById.get(id).callerDisplayName,
-                    mConnectionById.get(id).callerDisplayNamePresentation);
+                    mConnectionById.get(id).callerDisplayNamePresentation, null /*Session.Info*/);
         }
     }
 
     public void sendSetConferenceableConnections(String id) throws Exception {
         for (IConnectionServiceAdapter a : mConnectionServiceAdapters) {
-            a.setConferenceableConnections(id, mConnectionById.get(id).conferenceableConnectionIds);
+            a.setConferenceableConnections(id, mConnectionById.get(id).conferenceableConnectionIds,
+                    null /*Session.Info*/);
         }
     }
 
     public void sendAddExistingConnection(String id) throws Exception {
         for (IConnectionServiceAdapter a : mConnectionServiceAdapters) {
-            a.addExistingConnection(id, parcelable(mConnectionById.get(id)));
+            a.addExistingConnection(id, parcelable(mConnectionById.get(id)), null /*Session.Info*/);
         }
     }
 
     public void sendConnectionEvent(String id, String event, Bundle extras) throws Exception {
         for (IConnectionServiceAdapter a : mConnectionServiceAdapters) {
-            a.onConnectionEvent(id, event, extras);
+            a.onConnectionEvent(id, event, extras, null /*Session.Info*/);
         }
     }