Loading android/app/src/com/android/bluetooth/mapclient/MapClientService.java +13 −5 Original line number Diff line number Diff line Loading @@ -743,16 +743,23 @@ public class MapClientService extends ProfileService { Log.e(TAG, "broadcast has NO device param!"); return; } if (DBG) { Log.d(TAG, "broadcast has device: (" + device.getAddress() + ")"); } MceStateMachine stateMachine = mMapInstanceMap.get(device); if (stateMachine == null) { Log.e(TAG, "No Statemachine found for the device from broadcast"); Log.e(TAG, "No Statemachine found for the device=" + device.toString()); return; } if (action.equals(BluetoothDevice.ACTION_ACL_DISCONNECTED)) { int transport = intent.getIntExtra(BluetoothDevice.EXTRA_TRANSPORT, BluetoothDevice.ERROR); Log.i(TAG, "Received ACL disconnection event, device=" + device.toString() + ", transport=" + transport); if (transport != BluetoothDevice.TRANSPORT_BREDR) { return; } if (stateMachine.getState() == BluetoothProfile.STATE_CONNECTED) { stateMachine.disconnect(); } Loading @@ -761,7 +768,8 @@ public class MapClientService extends ProfileService { if (action.equals(BluetoothDevice.ACTION_SDP_RECORD)) { ParcelUuid uuid = intent.getParcelableExtra(BluetoothDevice.EXTRA_UUID); if (DBG) { Log.d(TAG, "UUID of SDP: " + uuid); Log.d(TAG, "Received SDP Record event, device=" + device.toString() + ", uuid=" + uuid); } if (uuid.equals(BluetoothUuid.MAS)) { Loading android/app/src/com/android/bluetooth/pbapclient/PbapClientService.java +10 −0 Original line number Diff line number Diff line Loading @@ -293,6 +293,16 @@ public class PbapClientService extends ProfileService { if (DBG) Log.v(TAG, "onReceive" + action); if (action.equals(BluetoothDevice.ACTION_ACL_DISCONNECTED)) { BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE); int transport = intent.getIntExtra(BluetoothDevice.EXTRA_TRANSPORT, BluetoothDevice.ERROR); Log.i(TAG, "Received ACL disconnection event, device=" + device.toString() + ", transport=" + transport); if (transport != BluetoothDevice.TRANSPORT_BREDR) { return; } if (getConnectionState(device) == BluetoothProfile.STATE_CONNECTED) { disconnect(device); } Loading android/app/tests/unit/src/com/android/bluetooth/mapclient/MapClientServiceTest.java +34 −4 Original line number Diff line number Diff line Loading @@ -26,12 +26,10 @@ import static org.mockito.Mockito.when; import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothDevice; import android.bluetooth.BluetoothHeadsetClient; import android.bluetooth.BluetoothProfile; import android.bluetooth.BluetoothUuid; import android.content.Intent; import androidx.test.InstrumentationRegistry; import androidx.test.filters.MediumTest; import androidx.test.rule.ServiceTestRule; import androidx.test.runner.AndroidJUnit4; Loading @@ -42,7 +40,6 @@ import com.android.bluetooth.btservice.AdapterService; import com.android.bluetooth.btservice.storage.DatabaseManager; import org.junit.After; import org.junit.Assume; import org.junit.Before; import org.junit.Rule; import org.junit.Test; Loading Loading @@ -278,7 +275,8 @@ public class MapClientServiceTest { } @Test public void broadcastReceiver_withActionAclDisconnected_whenConnected_callsDisconnect() { public void broadcastReceiver_withActionAclDisconnectedNoTransport_whenConnected_doesNotCallDisconnect() { int connectionState = BluetoothProfile.STATE_CONNECTED; MceStateMachine sm = mock(MceStateMachine.class); mService.getInstanceMap().put(mRemoteDevice, sm); Loading @@ -288,6 +286,38 @@ public class MapClientServiceTest { intent.putExtra(BluetoothDevice.EXTRA_DEVICE, mRemoteDevice); mService.mMapReceiver.onReceive(mService, intent); verify(sm, never()).disconnect(); } @Test public void broadcastReceiver_withActionAclDisconnectedLeTransport_whenConnected_doesNotCallDisconnect() { int connectionState = BluetoothProfile.STATE_CONNECTED; MceStateMachine sm = mock(MceStateMachine.class); mService.getInstanceMap().put(mRemoteDevice, sm); when(sm.getState()).thenReturn(connectionState); Intent intent = new Intent(BluetoothDevice.ACTION_ACL_DISCONNECTED); intent.putExtra(BluetoothDevice.EXTRA_DEVICE, mRemoteDevice); intent.putExtra(BluetoothDevice.EXTRA_TRANSPORT, BluetoothDevice.TRANSPORT_LE); mService.mMapReceiver.onReceive(mService, intent); verify(sm, never()).disconnect(); } @Test public void broadcastReceiver_withActionAclDisconnectedBrEdrTransport_whenConnected_callsDisconnect() { int connectionState = BluetoothProfile.STATE_CONNECTED; MceStateMachine sm = mock(MceStateMachine.class); mService.getInstanceMap().put(mRemoteDevice, sm); when(sm.getState()).thenReturn(connectionState); Intent intent = new Intent(BluetoothDevice.ACTION_ACL_DISCONNECTED); intent.putExtra(BluetoothDevice.EXTRA_DEVICE, mRemoteDevice); intent.putExtra(BluetoothDevice.EXTRA_TRANSPORT, BluetoothDevice.TRANSPORT_BREDR); mService.mMapReceiver.onReceive(mService, intent); verify(sm).disconnect(); } Loading android/app/tests/unit/src/com/android/bluetooth/pbapclient/PbapClientServiceTest.java +32 −2 Original line number Diff line number Diff line Loading @@ -23,6 +23,7 @@ import static org.mockito.Mockito.anyString; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.eq; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; Loading @@ -48,7 +49,6 @@ import com.android.bluetooth.x.com.android.modules.utils.SynchronousResultReceiv import org.junit.After; import org.junit.Assert; import org.junit.Assume; import org.junit.Before; import org.junit.Ignore; import org.junit.Rule; Loading Loading @@ -311,7 +311,7 @@ public class PbapClientServiceTest { } @Test public void broadcastReceiver_withActionAclDisconnected_callsDisconnect() { public void broadcastReceiver_withActionAclDisconnectedNoTransport_doesNotCallDisconnect() { int connectionState = BluetoothProfile.STATE_CONNECTED; PbapClientStateMachine sm = mock(PbapClientStateMachine.class); mService.mPbapClientStateMachineMap.put(mRemoteDevice, sm); Loading @@ -321,6 +321,36 @@ public class PbapClientServiceTest { intent.putExtra(BluetoothDevice.EXTRA_DEVICE, mRemoteDevice); mService.mPbapBroadcastReceiver.onReceive(mService, intent); verify(sm, never()).disconnect(mRemoteDevice); } @Test public void broadcastReceiver_withActionAclDisconnectedLeTransport_doesNotCallDisconnect() { int connectionState = BluetoothProfile.STATE_CONNECTED; PbapClientStateMachine sm = mock(PbapClientStateMachine.class); mService.mPbapClientStateMachineMap.put(mRemoteDevice, sm); when(sm.getConnectionState(mRemoteDevice)).thenReturn(connectionState); Intent intent = new Intent(BluetoothDevice.ACTION_ACL_DISCONNECTED); intent.putExtra(BluetoothDevice.EXTRA_DEVICE, mRemoteDevice); intent.putExtra(BluetoothDevice.EXTRA_TRANSPORT, BluetoothDevice.TRANSPORT_LE); mService.mPbapBroadcastReceiver.onReceive(mService, intent); verify(sm, never()).disconnect(mRemoteDevice); } @Test public void broadcastReceiver_withActionAclDisconnectedBrEdrTransport_callsDisconnect() { int connectionState = BluetoothProfile.STATE_CONNECTED; PbapClientStateMachine sm = mock(PbapClientStateMachine.class); mService.mPbapClientStateMachineMap.put(mRemoteDevice, sm); when(sm.getConnectionState(mRemoteDevice)).thenReturn(connectionState); Intent intent = new Intent(BluetoothDevice.ACTION_ACL_DISCONNECTED); intent.putExtra(BluetoothDevice.EXTRA_DEVICE, mRemoteDevice); intent.putExtra(BluetoothDevice.EXTRA_TRANSPORT, BluetoothDevice.TRANSPORT_BREDR); mService.mPbapBroadcastReceiver.onReceive(mService, intent); verify(sm).disconnect(mRemoteDevice); } Loading Loading
android/app/src/com/android/bluetooth/mapclient/MapClientService.java +13 −5 Original line number Diff line number Diff line Loading @@ -743,16 +743,23 @@ public class MapClientService extends ProfileService { Log.e(TAG, "broadcast has NO device param!"); return; } if (DBG) { Log.d(TAG, "broadcast has device: (" + device.getAddress() + ")"); } MceStateMachine stateMachine = mMapInstanceMap.get(device); if (stateMachine == null) { Log.e(TAG, "No Statemachine found for the device from broadcast"); Log.e(TAG, "No Statemachine found for the device=" + device.toString()); return; } if (action.equals(BluetoothDevice.ACTION_ACL_DISCONNECTED)) { int transport = intent.getIntExtra(BluetoothDevice.EXTRA_TRANSPORT, BluetoothDevice.ERROR); Log.i(TAG, "Received ACL disconnection event, device=" + device.toString() + ", transport=" + transport); if (transport != BluetoothDevice.TRANSPORT_BREDR) { return; } if (stateMachine.getState() == BluetoothProfile.STATE_CONNECTED) { stateMachine.disconnect(); } Loading @@ -761,7 +768,8 @@ public class MapClientService extends ProfileService { if (action.equals(BluetoothDevice.ACTION_SDP_RECORD)) { ParcelUuid uuid = intent.getParcelableExtra(BluetoothDevice.EXTRA_UUID); if (DBG) { Log.d(TAG, "UUID of SDP: " + uuid); Log.d(TAG, "Received SDP Record event, device=" + device.toString() + ", uuid=" + uuid); } if (uuid.equals(BluetoothUuid.MAS)) { Loading
android/app/src/com/android/bluetooth/pbapclient/PbapClientService.java +10 −0 Original line number Diff line number Diff line Loading @@ -293,6 +293,16 @@ public class PbapClientService extends ProfileService { if (DBG) Log.v(TAG, "onReceive" + action); if (action.equals(BluetoothDevice.ACTION_ACL_DISCONNECTED)) { BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE); int transport = intent.getIntExtra(BluetoothDevice.EXTRA_TRANSPORT, BluetoothDevice.ERROR); Log.i(TAG, "Received ACL disconnection event, device=" + device.toString() + ", transport=" + transport); if (transport != BluetoothDevice.TRANSPORT_BREDR) { return; } if (getConnectionState(device) == BluetoothProfile.STATE_CONNECTED) { disconnect(device); } Loading
android/app/tests/unit/src/com/android/bluetooth/mapclient/MapClientServiceTest.java +34 −4 Original line number Diff line number Diff line Loading @@ -26,12 +26,10 @@ import static org.mockito.Mockito.when; import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothDevice; import android.bluetooth.BluetoothHeadsetClient; import android.bluetooth.BluetoothProfile; import android.bluetooth.BluetoothUuid; import android.content.Intent; import androidx.test.InstrumentationRegistry; import androidx.test.filters.MediumTest; import androidx.test.rule.ServiceTestRule; import androidx.test.runner.AndroidJUnit4; Loading @@ -42,7 +40,6 @@ import com.android.bluetooth.btservice.AdapterService; import com.android.bluetooth.btservice.storage.DatabaseManager; import org.junit.After; import org.junit.Assume; import org.junit.Before; import org.junit.Rule; import org.junit.Test; Loading Loading @@ -278,7 +275,8 @@ public class MapClientServiceTest { } @Test public void broadcastReceiver_withActionAclDisconnected_whenConnected_callsDisconnect() { public void broadcastReceiver_withActionAclDisconnectedNoTransport_whenConnected_doesNotCallDisconnect() { int connectionState = BluetoothProfile.STATE_CONNECTED; MceStateMachine sm = mock(MceStateMachine.class); mService.getInstanceMap().put(mRemoteDevice, sm); Loading @@ -288,6 +286,38 @@ public class MapClientServiceTest { intent.putExtra(BluetoothDevice.EXTRA_DEVICE, mRemoteDevice); mService.mMapReceiver.onReceive(mService, intent); verify(sm, never()).disconnect(); } @Test public void broadcastReceiver_withActionAclDisconnectedLeTransport_whenConnected_doesNotCallDisconnect() { int connectionState = BluetoothProfile.STATE_CONNECTED; MceStateMachine sm = mock(MceStateMachine.class); mService.getInstanceMap().put(mRemoteDevice, sm); when(sm.getState()).thenReturn(connectionState); Intent intent = new Intent(BluetoothDevice.ACTION_ACL_DISCONNECTED); intent.putExtra(BluetoothDevice.EXTRA_DEVICE, mRemoteDevice); intent.putExtra(BluetoothDevice.EXTRA_TRANSPORT, BluetoothDevice.TRANSPORT_LE); mService.mMapReceiver.onReceive(mService, intent); verify(sm, never()).disconnect(); } @Test public void broadcastReceiver_withActionAclDisconnectedBrEdrTransport_whenConnected_callsDisconnect() { int connectionState = BluetoothProfile.STATE_CONNECTED; MceStateMachine sm = mock(MceStateMachine.class); mService.getInstanceMap().put(mRemoteDevice, sm); when(sm.getState()).thenReturn(connectionState); Intent intent = new Intent(BluetoothDevice.ACTION_ACL_DISCONNECTED); intent.putExtra(BluetoothDevice.EXTRA_DEVICE, mRemoteDevice); intent.putExtra(BluetoothDevice.EXTRA_TRANSPORT, BluetoothDevice.TRANSPORT_BREDR); mService.mMapReceiver.onReceive(mService, intent); verify(sm).disconnect(); } Loading
android/app/tests/unit/src/com/android/bluetooth/pbapclient/PbapClientServiceTest.java +32 −2 Original line number Diff line number Diff line Loading @@ -23,6 +23,7 @@ import static org.mockito.Mockito.anyString; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.eq; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; Loading @@ -48,7 +49,6 @@ import com.android.bluetooth.x.com.android.modules.utils.SynchronousResultReceiv import org.junit.After; import org.junit.Assert; import org.junit.Assume; import org.junit.Before; import org.junit.Ignore; import org.junit.Rule; Loading Loading @@ -311,7 +311,7 @@ public class PbapClientServiceTest { } @Test public void broadcastReceiver_withActionAclDisconnected_callsDisconnect() { public void broadcastReceiver_withActionAclDisconnectedNoTransport_doesNotCallDisconnect() { int connectionState = BluetoothProfile.STATE_CONNECTED; PbapClientStateMachine sm = mock(PbapClientStateMachine.class); mService.mPbapClientStateMachineMap.put(mRemoteDevice, sm); Loading @@ -321,6 +321,36 @@ public class PbapClientServiceTest { intent.putExtra(BluetoothDevice.EXTRA_DEVICE, mRemoteDevice); mService.mPbapBroadcastReceiver.onReceive(mService, intent); verify(sm, never()).disconnect(mRemoteDevice); } @Test public void broadcastReceiver_withActionAclDisconnectedLeTransport_doesNotCallDisconnect() { int connectionState = BluetoothProfile.STATE_CONNECTED; PbapClientStateMachine sm = mock(PbapClientStateMachine.class); mService.mPbapClientStateMachineMap.put(mRemoteDevice, sm); when(sm.getConnectionState(mRemoteDevice)).thenReturn(connectionState); Intent intent = new Intent(BluetoothDevice.ACTION_ACL_DISCONNECTED); intent.putExtra(BluetoothDevice.EXTRA_DEVICE, mRemoteDevice); intent.putExtra(BluetoothDevice.EXTRA_TRANSPORT, BluetoothDevice.TRANSPORT_LE); mService.mPbapBroadcastReceiver.onReceive(mService, intent); verify(sm, never()).disconnect(mRemoteDevice); } @Test public void broadcastReceiver_withActionAclDisconnectedBrEdrTransport_callsDisconnect() { int connectionState = BluetoothProfile.STATE_CONNECTED; PbapClientStateMachine sm = mock(PbapClientStateMachine.class); mService.mPbapClientStateMachineMap.put(mRemoteDevice, sm); when(sm.getConnectionState(mRemoteDevice)).thenReturn(connectionState); Intent intent = new Intent(BluetoothDevice.ACTION_ACL_DISCONNECTED); intent.putExtra(BluetoothDevice.EXTRA_DEVICE, mRemoteDevice); intent.putExtra(BluetoothDevice.EXTRA_TRANSPORT, BluetoothDevice.TRANSPORT_BREDR); mService.mPbapBroadcastReceiver.onReceive(mService, intent); verify(sm).disconnect(mRemoteDevice); } Loading