diff --git a/src/com/android/settings/bluetooth/AvailableMediaBluetoothDeviceUpdater.java b/src/com/android/settings/bluetooth/AvailableMediaBluetoothDeviceUpdater.java index ee9d15f261d..856410e884a 100644 --- a/src/com/android/settings/bluetooth/AvailableMediaBluetoothDeviceUpdater.java +++ b/src/com/android/settings/bluetooth/AvailableMediaBluetoothDeviceUpdater.java @@ -16,11 +16,11 @@ package com.android.settings.bluetooth; import android.bluetooth.BluetoothProfile; -import android.bluetooth.BluetoothAdapter; import android.content.Context; import android.media.AudioManager; import androidx.annotation.VisibleForTesting; import android.util.Log; + import com.android.settings.connecteddevice.DevicePreferenceCallback; import com.android.settings.dashboard.DashboardFragment; import com.android.settingslib.bluetooth.LocalBluetoothManager; @@ -57,18 +57,20 @@ public class AvailableMediaBluetoothDeviceUpdater extends BluetoothDeviceUpdater } @Override - public void onConnectionStateChanged(CachedBluetoothDevice cachedDevice, int state) { + public void onProfileConnectionStateChanged(CachedBluetoothDevice cachedDevice, int state, + int bluetoothProfile) { if (DBG) { - Log.d(TAG,"onConnectionStateChanged() device : " + - cachedDevice.getName() + ", state : " + state); + Log.d(TAG, "onProfileConnectionStateChanged() device: " + + cachedDevice.getName() + ", state: " + state + ", bluetoothProfile: " + + bluetoothProfile); } - if (state == BluetoothAdapter.STATE_CONNECTED) { + if (state == BluetoothProfile.STATE_CONNECTED) { if (isFilterMatched(cachedDevice)) { addPreference(cachedDevice); } else { removePreference(cachedDevice); } - } else if (state == BluetoothAdapter.STATE_DISCONNECTED) { + } else if (state == BluetoothProfile.STATE_DISCONNECTED) { removePreference(cachedDevice); } } diff --git a/src/com/android/settings/bluetooth/BluetoothDeviceUpdater.java b/src/com/android/settings/bluetooth/BluetoothDeviceUpdater.java index 2ebaafc8109..4dc6a245ced 100644 --- a/src/com/android/settings/bluetooth/BluetoothDeviceUpdater.java +++ b/src/com/android/settings/bluetooth/BluetoothDeviceUpdater.java @@ -161,6 +161,11 @@ public abstract class BluetoothDeviceUpdater implements BluetoothCallback, public void onAudioModeChanged() { } + @Override + public void onProfileConnectionStateChanged(CachedBluetoothDevice cachedDevice, int state, + int bluetoothProfile) { + } + @Override public void onServiceConnected() { // When bluetooth service connected update the UI diff --git a/src/com/android/settings/bluetooth/ConnectedBluetoothDeviceUpdater.java b/src/com/android/settings/bluetooth/ConnectedBluetoothDeviceUpdater.java index 7559b30fe1e..0ac3e6d850b 100644 --- a/src/com/android/settings/bluetooth/ConnectedBluetoothDeviceUpdater.java +++ b/src/com/android/settings/bluetooth/ConnectedBluetoothDeviceUpdater.java @@ -15,7 +15,6 @@ */ package com.android.settings.bluetooth; -import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothDevice; import android.bluetooth.BluetoothProfile; import android.content.Context; @@ -64,19 +63,20 @@ public class ConnectedBluetoothDeviceUpdater extends BluetoothDeviceUpdater { } @Override - public void onConnectionStateChanged(CachedBluetoothDevice cachedDevice, int state) { + public void onProfileConnectionStateChanged(CachedBluetoothDevice cachedDevice, int state, + int bluetoothProfile) { if (DBG) { - Log.d(TAG,"onConnectionStateChanged() device : " + - cachedDevice.getName() + ", state : " + state); + Log.d(TAG, "onProfileConnectionStateChanged() device: " + + cachedDevice.getName() + ", state: " + state + ", bluetoothProfile: " + + bluetoothProfile); } - - if (state == BluetoothAdapter.STATE_CONNECTED) { + if (state == BluetoothProfile.STATE_CONNECTED) { if (isFilterMatched(cachedDevice)) { addPreference(cachedDevice); } else { removePreference(cachedDevice); } - } else if (state == BluetoothAdapter.STATE_DISCONNECTED) { + } else if (state == BluetoothProfile.STATE_DISCONNECTED) { removePreference(cachedDevice); } } diff --git a/src/com/android/settings/bluetooth/SavedBluetoothDeviceUpdater.java b/src/com/android/settings/bluetooth/SavedBluetoothDeviceUpdater.java index 9836d29591c..1cefea107c9 100644 --- a/src/com/android/settings/bluetooth/SavedBluetoothDeviceUpdater.java +++ b/src/com/android/settings/bluetooth/SavedBluetoothDeviceUpdater.java @@ -15,8 +15,8 @@ */ package com.android.settings.bluetooth; -import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothDevice; +import android.bluetooth.BluetoothProfile; import android.content.Context; import androidx.annotation.VisibleForTesting; @@ -43,10 +43,11 @@ public class SavedBluetoothDeviceUpdater extends BluetoothDeviceUpdater { } @Override - public void onConnectionStateChanged(CachedBluetoothDevice cachedDevice, int state) { - if (state == BluetoothAdapter.STATE_CONNECTED) { + public void onProfileConnectionStateChanged(CachedBluetoothDevice cachedDevice, int state, + int bluetoothProfile) { + if (state == BluetoothProfile.STATE_CONNECTED) { removePreference(cachedDevice); - } else if (state == BluetoothAdapter.STATE_DISCONNECTED) { + } else if (state == BluetoothProfile.STATE_DISCONNECTED) { addPreference(cachedDevice); } } diff --git a/src/com/android/settings/sound/AudioSwitchPreferenceController.java b/src/com/android/settings/sound/AudioSwitchPreferenceController.java index d9473d81707..265564e5d5a 100644 --- a/src/com/android/settings/sound/AudioSwitchPreferenceController.java +++ b/src/com/android/settings/sound/AudioSwitchPreferenceController.java @@ -161,7 +161,6 @@ public abstract class AudioSwitchPreferenceController extends BasePreferenceCont */ @Override public void onConnectionStateChanged(CachedBluetoothDevice cachedDevice, int state) { - updateState(mPreference); } @Override @@ -174,6 +173,12 @@ public abstract class AudioSwitchPreferenceController extends BasePreferenceCont updateState(mPreference); } + @Override + public void onProfileConnectionStateChanged(CachedBluetoothDevice cachedDevice, int state, + int bluetoothProfile) { + updateState(mPreference); + } + @Override public void onBluetoothStateChanged(int bluetoothState) { } diff --git a/tests/robotests/src/com/android/settings/bluetooth/AvailableMediaBluetoothDeviceUpdaterTest.java b/tests/robotests/src/com/android/settings/bluetooth/AvailableMediaBluetoothDeviceUpdaterTest.java index fbc698c548b..ed9501554eb 100644 --- a/tests/robotests/src/com/android/settings/bluetooth/AvailableMediaBluetoothDeviceUpdaterTest.java +++ b/tests/robotests/src/com/android/settings/bluetooth/AvailableMediaBluetoothDeviceUpdaterTest.java @@ -15,11 +15,11 @@ */ package com.android.settings.bluetooth; -import android.bluetooth.BluetoothAdapter; +import android.bluetooth.BluetoothProfile; import android.bluetooth.BluetoothDevice; import android.content.Context; - import android.media.AudioManager; + import com.android.settings.connecteddevice.DevicePreferenceCallback; import com.android.settings.dashboard.DashboardFragment; import com.android.settings.testutils.SettingsRobolectricTestRunner; @@ -150,60 +150,61 @@ public class AvailableMediaBluetoothDeviceUpdaterTest { } @Test - public void onConnectionStateChanged_a2dpDeviceConnected_notInCall_addPreference() { + public void onProfileConnectionStateChanged_a2dpDeviceConnected_notInCall_addPreference() { mShadowAudioManager.setMode(AudioManager.MODE_NORMAL); when(mBluetoothDeviceUpdater. isDeviceConnected(any(CachedBluetoothDevice.class))).thenReturn(true); when(mCachedBluetoothDevice.isA2dpDevice()).thenReturn(true); - mBluetoothDeviceUpdater.onConnectionStateChanged(mCachedBluetoothDevice, - BluetoothAdapter.STATE_CONNECTED); + mBluetoothDeviceUpdater.onProfileConnectionStateChanged(mCachedBluetoothDevice, + BluetoothProfile.STATE_CONNECTED, BluetoothProfile.A2DP); verify(mBluetoothDeviceUpdater).addPreference(mCachedBluetoothDevice); } @Test - public void onConnectionStateChanged_a2dpDeviceConnected_inCall_removePreference() { + public void onProfileConnectionStateChanged_a2dpDeviceConnected_inCall_removePreference() { mShadowAudioManager.setMode(AudioManager.MODE_IN_CALL); when(mBluetoothDeviceUpdater. isDeviceConnected(any(CachedBluetoothDevice.class))).thenReturn(true); when(mCachedBluetoothDevice.isA2dpDevice()).thenReturn(true); - mBluetoothDeviceUpdater.onConnectionStateChanged(mCachedBluetoothDevice, - BluetoothAdapter.STATE_CONNECTED); + mBluetoothDeviceUpdater.onProfileConnectionStateChanged(mCachedBluetoothDevice, + BluetoothProfile.STATE_CONNECTED, BluetoothProfile.A2DP); verify(mBluetoothDeviceUpdater).removePreference(mCachedBluetoothDevice); } + @Test - public void onConnectionStateChanged_hfpDeviceConnected_notInCall_removePreference() { + public void onProfileConnectionStateChanged_hfpDeviceConnected_notInCall_removePreference() { mShadowAudioManager.setMode(AudioManager.MODE_NORMAL); when(mBluetoothDeviceUpdater. isDeviceConnected(any(CachedBluetoothDevice.class))).thenReturn(true); when(mCachedBluetoothDevice.isHfpDevice()).thenReturn(true); - mBluetoothDeviceUpdater.onConnectionStateChanged(mCachedBluetoothDevice, - BluetoothAdapter.STATE_CONNECTED); + mBluetoothDeviceUpdater.onProfileConnectionStateChanged(mCachedBluetoothDevice, + BluetoothProfile.STATE_CONNECTED, BluetoothProfile.A2DP); verify(mBluetoothDeviceUpdater).removePreference(mCachedBluetoothDevice); } @Test - public void onConnectionStateChanged_hfpDeviceConnected_inCall_addPreference() { + public void onProfileConnectionStateChanged_hfpDeviceConnected_inCall_addPreference() { mShadowAudioManager.setMode(AudioManager.MODE_IN_CALL); when(mBluetoothDeviceUpdater. isDeviceConnected(any(CachedBluetoothDevice.class))).thenReturn(true); when(mCachedBluetoothDevice.isHfpDevice()).thenReturn(true); - mBluetoothDeviceUpdater.onConnectionStateChanged(mCachedBluetoothDevice, - BluetoothAdapter.STATE_CONNECTED); + mBluetoothDeviceUpdater.onProfileConnectionStateChanged(mCachedBluetoothDevice, + BluetoothProfile.STATE_CONNECTED, BluetoothProfile.A2DP); verify(mBluetoothDeviceUpdater).addPreference(mCachedBluetoothDevice); } @Test - public void onConnectionStateChanged_deviceDisconnected_removePreference() { - mBluetoothDeviceUpdater.onConnectionStateChanged(mCachedBluetoothDevice, - BluetoothAdapter.STATE_DISCONNECTED); + public void onProfileConnectionStateChanged_deviceDisconnected_removePreference() { + mBluetoothDeviceUpdater.onProfileConnectionStateChanged(mCachedBluetoothDevice, + BluetoothProfile.STATE_DISCONNECTED, BluetoothProfile.A2DP); verify(mBluetoothDeviceUpdater).removePreference(mCachedBluetoothDevice); } diff --git a/tests/robotests/src/com/android/settings/bluetooth/ConnectedBluetoothDeviceUpdaterTest.java b/tests/robotests/src/com/android/settings/bluetooth/ConnectedBluetoothDeviceUpdaterTest.java index 56e638a9ed1..483df01a6b8 100644 --- a/tests/robotests/src/com/android/settings/bluetooth/ConnectedBluetoothDeviceUpdaterTest.java +++ b/tests/robotests/src/com/android/settings/bluetooth/ConnectedBluetoothDeviceUpdaterTest.java @@ -16,6 +16,7 @@ package com.android.settings.bluetooth; import static com.google.common.truth.Truth.assertThat; + import static org.mockito.Matchers.any; import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.doReturn; @@ -23,11 +24,11 @@ import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; -import android.bluetooth.BluetoothAdapter; +import android.bluetooth.BluetoothProfile; import android.bluetooth.BluetoothDevice; import android.content.Context; - import android.media.AudioManager; + import com.android.settings.connecteddevice.DevicePreferenceCallback; import com.android.settings.dashboard.DashboardFragment; import com.android.settings.testutils.SettingsRobolectricTestRunner; @@ -75,6 +76,7 @@ public class ConnectedBluetoothDeviceUpdaterTest { private Collection cachedDevices; private ShadowAudioManager mShadowAudioManager; + @Before public void setUp() { MockitoAnnotations.initMocks(this); @@ -151,60 +153,61 @@ public class ConnectedBluetoothDeviceUpdaterTest { } @Test - public void onConnectionStateChanged_a2dpDeviceConnected_inCall_addPreference() { + public void onProfileConnectionStateChanged_a2dpDeviceConnected_inCall_addPreference() { mShadowAudioManager.setMode(AudioManager.MODE_IN_CALL); when(mBluetoothDeviceUpdater. isDeviceConnected(any(CachedBluetoothDevice.class))).thenReturn(true); when(mCachedBluetoothDevice.isA2dpDevice()).thenReturn(true); - mBluetoothDeviceUpdater.onConnectionStateChanged(mCachedBluetoothDevice, - BluetoothAdapter.STATE_CONNECTED); + mBluetoothDeviceUpdater.onProfileConnectionStateChanged(mCachedBluetoothDevice, + BluetoothProfile.STATE_CONNECTED, BluetoothProfile.A2DP); verify(mBluetoothDeviceUpdater).addPreference(mCachedBluetoothDevice); } @Test - public void onConnectionStateChanged_a2dpDeviceConnected_notInCall_removePreference() { + public void onProfileConnectionStateChanged_a2dpDeviceConnected_notInCall_removePreference() { mShadowAudioManager.setMode(AudioManager.MODE_NORMAL); when(mBluetoothDeviceUpdater. isDeviceConnected(any(CachedBluetoothDevice.class))).thenReturn(true); when(mCachedBluetoothDevice.isA2dpDevice()).thenReturn(true); - mBluetoothDeviceUpdater.onConnectionStateChanged(mCachedBluetoothDevice, - BluetoothAdapter.STATE_CONNECTED); + mBluetoothDeviceUpdater.onProfileConnectionStateChanged(mCachedBluetoothDevice, + BluetoothProfile.STATE_CONNECTED, BluetoothProfile.A2DP); verify(mBluetoothDeviceUpdater).removePreference(mCachedBluetoothDevice); } + @Test - public void onConnectionStateChanged_hfpDeviceConnected_inCall_removePreference() { + public void onProfileConnectionStateChanged_hfpDeviceConnected_inCall_removePreference() { mShadowAudioManager.setMode(AudioManager.MODE_IN_CALL); when(mBluetoothDeviceUpdater. isDeviceConnected(any(CachedBluetoothDevice.class))).thenReturn(true); when(mCachedBluetoothDevice.isHfpDevice()).thenReturn(true); - mBluetoothDeviceUpdater.onConnectionStateChanged(mCachedBluetoothDevice, - BluetoothAdapter.STATE_CONNECTED); + mBluetoothDeviceUpdater.onProfileConnectionStateChanged(mCachedBluetoothDevice, + BluetoothProfile.STATE_CONNECTED, BluetoothProfile.A2DP); verify(mBluetoothDeviceUpdater).removePreference(mCachedBluetoothDevice); } @Test - public void onConnectionStateChanged_hfpDeviceConnected_notInCall_addPreference() { + public void onProfileConnectionStateChanged_hfpDeviceConnected_notInCall_addPreference() { mShadowAudioManager.setMode(AudioManager.MODE_NORMAL); when(mBluetoothDeviceUpdater. isDeviceConnected(any(CachedBluetoothDevice.class))).thenReturn(true); when(mCachedBluetoothDevice.isHfpDevice()).thenReturn(true); - mBluetoothDeviceUpdater.onConnectionStateChanged(mCachedBluetoothDevice, - BluetoothAdapter.STATE_CONNECTED); + mBluetoothDeviceUpdater.onProfileConnectionStateChanged(mCachedBluetoothDevice, + BluetoothProfile.STATE_CONNECTED, BluetoothProfile.A2DP); verify(mBluetoothDeviceUpdater).addPreference(mCachedBluetoothDevice); } @Test - public void onConnectionStateChanged_deviceDisconnected_removePreference() { - mBluetoothDeviceUpdater.onConnectionStateChanged(mCachedBluetoothDevice, - BluetoothAdapter.STATE_DISCONNECTED); + public void onProfileConnectionStateChanged_deviceDisconnected_removePreference() { + mBluetoothDeviceUpdater.onProfileConnectionStateChanged(mCachedBluetoothDevice, + BluetoothProfile.STATE_DISCONNECTED, BluetoothProfile.A2DP); verify(mBluetoothDeviceUpdater).removePreference(mCachedBluetoothDevice); } diff --git a/tests/robotests/src/com/android/settings/bluetooth/SavedBluetoothDeviceUpdaterTest.java b/tests/robotests/src/com/android/settings/bluetooth/SavedBluetoothDeviceUpdaterTest.java index e0ba82916b3..fae014f7b10 100644 --- a/tests/robotests/src/com/android/settings/bluetooth/SavedBluetoothDeviceUpdaterTest.java +++ b/tests/robotests/src/com/android/settings/bluetooth/SavedBluetoothDeviceUpdaterTest.java @@ -22,7 +22,7 @@ import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; -import android.bluetooth.BluetoothAdapter; +import android.bluetooth.BluetoothProfile; import android.bluetooth.BluetoothDevice; import android.content.Context; @@ -76,7 +76,7 @@ public class SavedBluetoothDeviceUpdaterTest { } @Test - public void testUpdate_filterMatch_addPreference() { + public void update_filterMatch_addPreference() { doReturn(BluetoothDevice.BOND_BONDED).when(mBluetoothDevice).getBondState(); doReturn(false).when(mBluetoothDevice).isConnected(); @@ -86,7 +86,7 @@ public class SavedBluetoothDeviceUpdaterTest { } @Test - public void testUpdate_filterNotMatch_removePreference() { + public void update_filterNotMatch_removePreference() { doReturn(BluetoothDevice.BOND_NONE).when(mBluetoothDevice).getBondState(); doReturn(true).when(mBluetoothDevice).isConnected(); @@ -96,17 +96,17 @@ public class SavedBluetoothDeviceUpdaterTest { } @Test - public void testOnConnectionStateChanged_deviceConnected_removePreference() { - mBluetoothDeviceUpdater - .onConnectionStateChanged(mCachedBluetoothDevice, BluetoothAdapter.STATE_CONNECTED); + public void onProfileConnectionStateChanged_deviceConnected_removePreference() { + mBluetoothDeviceUpdater.onProfileConnectionStateChanged(mCachedBluetoothDevice, + BluetoothProfile.STATE_CONNECTED, BluetoothProfile.A2DP); verify(mBluetoothDeviceUpdater).removePreference(mCachedBluetoothDevice); } @Test - public void testOnConnectionStateChanged_deviceDisconnected_addPreference() { - mBluetoothDeviceUpdater - .onConnectionStateChanged(mCachedBluetoothDevice, BluetoothAdapter.STATE_DISCONNECTED); + public void onProfileConnectionStateChanged_deviceDisconnected_addPreference() { + mBluetoothDeviceUpdater.onProfileConnectionStateChanged(mCachedBluetoothDevice, + BluetoothProfile.STATE_DISCONNECTED, BluetoothProfile.A2DP); verify(mBluetoothDeviceUpdater).addPreference(mCachedBluetoothDevice); }