diff --git a/src/com/android/settings/development/AbstractBluetoothA2dpPreferenceController.java b/src/com/android/settings/development/AbstractBluetoothA2dpPreferenceController.java index 0f429c729f5..88dda29612a 100644 --- a/src/com/android/settings/development/AbstractBluetoothA2dpPreferenceController.java +++ b/src/com/android/settings/development/AbstractBluetoothA2dpPreferenceController.java @@ -83,7 +83,11 @@ public abstract class AbstractBluetoothA2dpPreferenceController extends final BluetoothCodecConfig codecConfig = mBluetoothA2dpConfigStore.createCodecConfig(); synchronized (mBluetoothA2dpConfigStore) { if (mBluetoothA2dp != null) { - setCodecConfigPreference(null, codecConfig); // Use current active device + BluetoothDevice activeDevice = mBluetoothA2dp.getActiveDevice(); + if (activeDevice == null) { + return false; + } + setCodecConfigPreference(activeDevice, codecConfig); } } // Because the setting is not persisted into permanent storage, we cannot call update state @@ -102,13 +106,14 @@ public abstract class AbstractBluetoothA2dpPreferenceController extends @Override public void updateState(Preference preference) { - if (getCodecConfig(null) == null || mPreference == null) { // Use current active device + BluetoothDevice activeDevice = mBluetoothA2dp.getActiveDevice(); + if (activeDevice == null || getCodecConfig(activeDevice) == null || mPreference == null) { return; } BluetoothCodecConfig codecConfig; synchronized (mBluetoothA2dpConfigStore) { - codecConfig = getCodecConfig(null); // Use current active device + codecConfig = getCodecConfig(activeDevice); } final int index = getCurrentA2dpSettingIndex(codecConfig); @@ -178,13 +183,23 @@ public abstract class AbstractBluetoothA2dpPreferenceController extends @VisibleForTesting void setCodecConfigPreference(BluetoothDevice device, BluetoothCodecConfig config) { - mBluetoothA2dp.setCodecConfigPreference(device, config); + BluetoothDevice bluetoothDevice = + (device != null) ? device : mBluetoothA2dp.getActiveDevice(); + if (bluetoothDevice == null) { + return; + } + mBluetoothA2dp.setCodecConfigPreference(bluetoothDevice, config); } @VisibleForTesting BluetoothCodecConfig getCodecConfig(BluetoothDevice device) { if (mBluetoothA2dp != null) { - BluetoothCodecStatus codecStatus = mBluetoothA2dp.getCodecStatus(device); + BluetoothDevice bluetoothDevice = + (device != null) ? device : mBluetoothA2dp.getActiveDevice(); + if (bluetoothDevice == null) { + return null; + } + BluetoothCodecStatus codecStatus = mBluetoothA2dp.getCodecStatus(bluetoothDevice); if (codecStatus != null) { return codecStatus.getCodecConfig(); } diff --git a/src/com/android/settings/development/bluetooth/AbstractBluetoothDialogPreferenceController.java b/src/com/android/settings/development/bluetooth/AbstractBluetoothDialogPreferenceController.java index 71907b6f9fa..6bc9175ba8b 100644 --- a/src/com/android/settings/development/bluetooth/AbstractBluetoothDialogPreferenceController.java +++ b/src/com/android/settings/development/bluetooth/AbstractBluetoothDialogPreferenceController.java @@ -80,7 +80,10 @@ public abstract class AbstractBluetoothDialogPreferenceController extends } writeConfigurationValues(index); final BluetoothCodecConfig codecConfig = mBluetoothA2dpConfigStore.createCodecConfig(); - bluetoothA2dp.setCodecConfigPreference(null, codecConfig); + BluetoothDevice activeDevice = mBluetoothA2dp.getActiveDevice(); + if (activeDevice != null) { + bluetoothA2dp.setCodecConfigPreference(activeDevice, codecConfig); + } mPreference.setSummary(((BaseBluetoothDialogPreference) mPreference).generateSummary( index)); } @@ -146,7 +149,13 @@ public abstract class AbstractBluetoothDialogPreferenceController extends if (bluetoothA2dp == null) { return null; } - final BluetoothCodecStatus codecStatus = bluetoothA2dp.getCodecStatus(null); + BluetoothDevice activeDevice = bluetoothA2dp.getActiveDevice(); + if (activeDevice == null) { + Log.d(TAG, "Unable to get current codec config. No active device."); + return null; + } + final BluetoothCodecStatus codecStatus = + bluetoothA2dp.getCodecStatus(activeDevice); if (codecStatus == null) { Log.d(TAG, "Unable to get current codec config. Codec status is null"); return null; @@ -164,7 +173,12 @@ public abstract class AbstractBluetoothDialogPreferenceController extends if (bluetoothA2dp == null) { return null; } - final BluetoothCodecStatus codecStatus = bluetoothA2dp.getCodecStatus(device); + BluetoothDevice bluetoothDevice = + (device != null) ? device : bluetoothA2dp.getActiveDevice(); + if (bluetoothDevice == null) { + return null; + } + final BluetoothCodecStatus codecStatus = bluetoothA2dp.getCodecStatus(bluetoothDevice); if (codecStatus != null) { return codecStatus.getCodecsSelectableCapabilities(); } @@ -177,7 +191,12 @@ public abstract class AbstractBluetoothDialogPreferenceController extends * @return {@link BluetoothCodecConfig}. */ protected BluetoothCodecConfig getSelectableByCodecType(int codecTypeValue) { - final BluetoothCodecConfig[] configs = getSelectableConfigs(null); + BluetoothDevice activeDevice = mBluetoothA2dp.getActiveDevice(); + if (activeDevice == null) { + Log.d(TAG, "Unable to get selectable config. No active device."); + return null; + } + final BluetoothCodecConfig[] configs = getSelectableConfigs(activeDevice); if (configs == null) { Log.d(TAG, "Unable to get selectable config. Selectable configs is empty."); return null; diff --git a/src/com/android/settings/development/bluetooth/BluetoothCodecDialogPreferenceController.java b/src/com/android/settings/development/bluetooth/BluetoothCodecDialogPreferenceController.java index c2977a8681f..a0af268c8f7 100644 --- a/src/com/android/settings/development/bluetooth/BluetoothCodecDialogPreferenceController.java +++ b/src/com/android/settings/development/bluetooth/BluetoothCodecDialogPreferenceController.java @@ -83,9 +83,9 @@ public class BluetoothCodecDialogPreferenceController extends return index; } // Check HD audio is enabled, display the available list. - if (bluetoothA2dp.getOptionalCodecsEnabled(activeDevice) + if (bluetoothA2dp.isOptionalCodecsEnabled(activeDevice) == BluetoothA2dp.OPTIONAL_CODECS_PREF_ENABLED) { - BluetoothCodecConfig[] configs = getSelectableConfigs(null); + BluetoothCodecConfig[] configs = getSelectableConfigs(activeDevice); if (configs != null) { return getIndexFromConfig(configs); } @@ -101,7 +101,8 @@ public class BluetoothCodecDialogPreferenceController extends int codecPriorityValue = BluetoothCodecConfig.CODEC_PRIORITY_DEFAULT; switch (index) { case 0: - codecTypeValue = getHighestCodec(getSelectableConfigs(null)); + codecTypeValue = getHighestCodec(getSelectableConfigs( + mBluetoothA2dp.getActiveDevice())); codecPriorityValue = BluetoothCodecConfig.CODEC_PRIORITY_HIGHEST; break; case 1: diff --git a/src/com/android/settings/development/bluetooth/BluetoothHDAudioPreferenceController.java b/src/com/android/settings/development/bluetooth/BluetoothHDAudioPreferenceController.java index 80081886e37..d4ca4e57952 100644 --- a/src/com/android/settings/development/bluetooth/BluetoothHDAudioPreferenceController.java +++ b/src/com/android/settings/development/bluetooth/BluetoothHDAudioPreferenceController.java @@ -58,11 +58,11 @@ public class BluetoothHDAudioPreferenceController extends AbstractBluetoothPrefe mPreference.setEnabled(false); return; } - final boolean supported = (bluetoothA2dp.supportsOptionalCodecs(activeDevice) + final boolean supported = (bluetoothA2dp.isOptionalCodecsSupported(activeDevice) == BluetoothA2dp.OPTIONAL_CODECS_SUPPORTED); mPreference.setEnabled(supported); if (supported) { - final boolean isEnabled = bluetoothA2dp.getOptionalCodecsEnabled(activeDevice) + final boolean isEnabled = bluetoothA2dp.isOptionalCodecsEnabled(activeDevice) == BluetoothA2dp.OPTIONAL_CODECS_PREF_ENABLED; ((SwitchPreference) mPreference).setChecked(isEnabled); } @@ -84,11 +84,16 @@ public class BluetoothHDAudioPreferenceController extends AbstractBluetoothPrefe final int prefValue = enabled ? BluetoothA2dp.OPTIONAL_CODECS_PREF_ENABLED : BluetoothA2dp.OPTIONAL_CODECS_PREF_DISABLED; - bluetoothA2dp.setOptionalCodecsEnabled(bluetoothA2dp.getActiveDevice(), prefValue); + BluetoothDevice activeDevice = bluetoothA2dp.getActiveDevice(); + if (activeDevice == null) { + mPreference.setEnabled(false); + return true; + } + bluetoothA2dp.setOptionalCodecsEnabled(activeDevice, prefValue); if (enabled) { - bluetoothA2dp.enableOptionalCodecs(null); // Use current active device + bluetoothA2dp.enableOptionalCodecs(activeDevice); } else { - bluetoothA2dp.disableOptionalCodecs(null); // Use current active device + bluetoothA2dp.disableOptionalCodecs(activeDevice); } mCallback.onBluetoothHDAudioEnabled(enabled); return true; diff --git a/tests/robotests/src/com/android/settings/development/bluetooth/AbstractBluetoothDialogPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/development/bluetooth/AbstractBluetoothDialogPreferenceControllerTest.java index 802f8719360..afb1778e40b 100644 --- a/tests/robotests/src/com/android/settings/development/bluetooth/AbstractBluetoothDialogPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/development/bluetooth/AbstractBluetoothDialogPreferenceControllerTest.java @@ -24,8 +24,10 @@ import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.bluetooth.BluetoothA2dp; +import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothCodecConfig; import android.bluetooth.BluetoothCodecStatus; +import android.bluetooth.BluetoothDevice; import android.content.Context; import androidx.lifecycle.LifecycleOwner; @@ -49,6 +51,7 @@ import java.util.List; public class AbstractBluetoothDialogPreferenceControllerTest { private static final String SUMMARY = "Test summary"; + private static final String DEVICE_ADDRESS = "00:11:22:33:44:55"; @Mock private BluetoothA2dp mBluetoothA2dp; @@ -62,6 +65,7 @@ public class AbstractBluetoothDialogPreferenceControllerTest { private BluetoothCodecConfig mCodecConfigAAC; private BluetoothCodecConfig mCodecConfigSBC; private BluetoothCodecConfig[] mCodecConfigs = new BluetoothCodecConfig[2]; + private BluetoothDevice mActiveDevice; private Context mContext; private int mCurrentConfig; private LifecycleOwner mLifecycleOwner; @@ -74,6 +78,7 @@ public class AbstractBluetoothDialogPreferenceControllerTest { mLifecycleOwner = () -> mLifecycle; mLifecycle = new Lifecycle(mLifecycleOwner); mBluetoothA2dpConfigStore = spy(new BluetoothA2dpConfigStore()); + mActiveDevice = BluetoothAdapter.getDefaultAdapter().getRemoteDevice(DEVICE_ADDRESS); mController = spy(new AbstractBluetoothDialogPreferenceControllerImpl(mContext, mLifecycle, mBluetoothA2dpConfigStore)); mPreference = spy(new BaseBluetoothDialogPreferenceImpl(mContext)); @@ -87,6 +92,7 @@ public class AbstractBluetoothDialogPreferenceControllerTest { mController.displayPreference(mScreen); mCurrentConfig = mController.getCurrentConfigIndex(); when(mPreference.generateSummary(mCurrentConfig)).thenReturn(SUMMARY); + when(mBluetoothA2dp.getActiveDevice()).thenReturn(mActiveDevice); } @Test @@ -103,13 +109,15 @@ public class AbstractBluetoothDialogPreferenceControllerTest { @Test public void onIndexUpdated_checkFlow() { mCodecStatus = new BluetoothCodecStatus(mCodecConfigAAC, null, null); - when(mBluetoothA2dp.getCodecStatus(null)).thenReturn(mCodecStatus); + when(mBluetoothA2dp.getCodecStatus( + mActiveDevice)).thenReturn(mCodecStatus); when(mBluetoothA2dpConfigStore.createCodecConfig()).thenReturn(mCodecConfigAAC); mController.onBluetoothServiceConnected(mBluetoothA2dp); mController.onIndexUpdated(mCurrentConfig); verify(mController).writeConfigurationValues(mCurrentConfig); - verify(mBluetoothA2dp).setCodecConfigPreference(null, mCodecConfigAAC); + verify(mBluetoothA2dp).setCodecConfigPreference( + mActiveDevice, mCodecConfigAAC); assertThat(mPreference.getSummary()).isEqualTo(SUMMARY); } @@ -134,14 +142,15 @@ public class AbstractBluetoothDialogPreferenceControllerTest { assertThat(mController.getCurrentCodecConfig()).isNull(); mController.onBluetoothServiceConnected(mBluetoothA2dp); - when(mBluetoothA2dp.getCodecStatus(null)).thenReturn(null); + when(mBluetoothA2dp.getCodecStatus(mActiveDevice)).thenReturn(null); assertThat(mController.getCurrentCodecConfig()).isNull(); } @Test public void getCurrentCodecConfig_verifyConfig() { mCodecStatus = new BluetoothCodecStatus(mCodecConfigAAC, null, null); - when(mBluetoothA2dp.getCodecStatus(null)).thenReturn(mCodecStatus); + when(mBluetoothA2dp.getCodecStatus( + mActiveDevice)).thenReturn(mCodecStatus); mController.onBluetoothServiceConnected(mBluetoothA2dp); assertThat(mController.getCurrentCodecConfig()).isEqualTo(mCodecConfigAAC); @@ -150,7 +159,8 @@ public class AbstractBluetoothDialogPreferenceControllerTest { @Test public void getSelectableConfigs_verifyConfig() { mCodecStatus = new BluetoothCodecStatus(mCodecConfigAAC, null, mCodecConfigs); - when(mBluetoothA2dp.getCodecStatus(null)).thenReturn(mCodecStatus); + when(mBluetoothA2dp.getCodecStatus( + mActiveDevice)).thenReturn(mCodecStatus); mController.onBluetoothServiceConnected(mBluetoothA2dp); assertThat(mController.getSelectableConfigs(null)).isEqualTo(mCodecConfigs); @@ -159,7 +169,8 @@ public class AbstractBluetoothDialogPreferenceControllerTest { @Test public void getSelectableByCodecType_verifyConfig() { mCodecStatus = new BluetoothCodecStatus(mCodecConfigAAC, null, mCodecConfigs); - when(mBluetoothA2dp.getCodecStatus(null)).thenReturn(mCodecStatus); + when(mBluetoothA2dp.getCodecStatus( + mActiveDevice)).thenReturn(mCodecStatus); mController.onBluetoothServiceConnected(mBluetoothA2dp); assertThat(mController.getSelectableByCodecType(BluetoothCodecConfig.SOURCE_CODEC_TYPE_AAC)) @@ -169,7 +180,8 @@ public class AbstractBluetoothDialogPreferenceControllerTest { @Test public void getSelectableByCodecType_unavailable() { mCodecStatus = new BluetoothCodecStatus(mCodecConfigAAC, null, mCodecConfigs); - when(mBluetoothA2dp.getCodecStatus(null)).thenReturn(mCodecStatus); + when(mBluetoothA2dp.getCodecStatus( + mActiveDevice)).thenReturn(mCodecStatus); mController.onBluetoothServiceConnected(mBluetoothA2dp); assertThat(mController.getSelectableByCodecType( @@ -179,7 +191,8 @@ public class AbstractBluetoothDialogPreferenceControllerTest { @Test public void onBluetoothServiceConnected_verifyBluetoothA2dpConfigStore() { mCodecStatus = new BluetoothCodecStatus(mCodecConfigAAC, null, mCodecConfigs); - when(mBluetoothA2dp.getCodecStatus(null)).thenReturn(mCodecStatus); + when(mBluetoothA2dp.getCodecStatus( + mActiveDevice)).thenReturn(mCodecStatus); mController.onBluetoothServiceConnected(mBluetoothA2dp); verify(mBluetoothA2dpConfigStore).setCodecType(mCodecConfigAAC.getCodecType()); diff --git a/tests/robotests/src/com/android/settings/development/bluetooth/BluetoothBitPerSampleDialogPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/development/bluetooth/BluetoothBitPerSampleDialogPreferenceControllerTest.java index 0061fc08347..0996ae3fcb9 100644 --- a/tests/robotests/src/com/android/settings/development/bluetooth/BluetoothBitPerSampleDialogPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/development/bluetooth/BluetoothBitPerSampleDialogPreferenceControllerTest.java @@ -23,8 +23,10 @@ import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.bluetooth.BluetoothA2dp; +import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothCodecConfig; import android.bluetooth.BluetoothCodecStatus; +import android.bluetooth.BluetoothDevice; import android.content.Context; import androidx.lifecycle.LifecycleOwner; @@ -47,6 +49,8 @@ import java.util.List; @RunWith(RobolectricTestRunner.class) public class BluetoothBitPerSampleDialogPreferenceControllerTest { + private static final String DEVICE_ADDRESS = "00:11:22:33:44:55"; + @Mock private BluetoothA2dp mBluetoothA2dp; @Mock @@ -58,6 +62,7 @@ public class BluetoothBitPerSampleDialogPreferenceControllerTest { private BluetoothCodecStatus mCodecStatus; private BluetoothCodecConfig mCodecConfigAAC; private BluetoothCodecConfig mCodecConfigSBC; + private BluetoothDevice mActiveDevice; private Context mContext; private LifecycleOwner mLifecycleOwner; private Lifecycle mLifecycle; @@ -69,6 +74,7 @@ public class BluetoothBitPerSampleDialogPreferenceControllerTest { mLifecycleOwner = () -> mLifecycle; mLifecycle = new Lifecycle(mLifecycleOwner); mBluetoothA2dpConfigStore = spy(new BluetoothA2dpConfigStore()); + mActiveDevice = BluetoothAdapter.getDefaultAdapter().getRemoteDevice(DEVICE_ADDRESS); mController = spy(new BluetoothBitPerSampleDialogPreferenceController(mContext, mLifecycle, mBluetoothA2dpConfigStore)); mPreference = new BluetoothBitPerSampleDialogPreference(mContext); @@ -86,13 +92,14 @@ public class BluetoothBitPerSampleDialogPreferenceControllerTest { BluetoothCodecConfig.BITS_PER_SAMPLE_24, BluetoothCodecConfig.CHANNEL_MODE_NONE, 0, 0, 0, 0); + when(mBluetoothA2dp.getActiveDevice()).thenReturn(mActiveDevice); } @Test public void writeConfigurationValues_selectDefault_setHighest() { BluetoothCodecConfig[] mCodecConfigs = {mCodecConfigAAC, mCodecConfigSBC}; mCodecStatus = new BluetoothCodecStatus(mCodecConfigAAC, null, mCodecConfigs); - when(mBluetoothA2dp.getCodecStatus(null)).thenReturn(mCodecStatus); + when(mBluetoothA2dp.getCodecStatus(mActiveDevice)).thenReturn(mCodecStatus); mController.onBluetoothServiceConnected(mBluetoothA2dp); mController.writeConfigurationValues(0); @@ -121,7 +128,7 @@ public class BluetoothBitPerSampleDialogPreferenceControllerTest { public void getSelectableIndex_verifyList() { BluetoothCodecConfig[] mCodecConfigs = {mCodecConfigAAC, mCodecConfigSBC}; mCodecStatus = new BluetoothCodecStatus(mCodecConfigAAC, null, mCodecConfigs); - when(mBluetoothA2dp.getCodecStatus(null)).thenReturn(mCodecStatus); + when(mBluetoothA2dp.getCodecStatus(mActiveDevice)).thenReturn(mCodecStatus); mController.onBluetoothServiceConnected(mBluetoothA2dp); List indexList = new ArrayList<>(); indexList.add(mPreference.getDefaultIndex()); diff --git a/tests/robotests/src/com/android/settings/development/bluetooth/BluetoothChannelModeDialogPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/development/bluetooth/BluetoothChannelModeDialogPreferenceControllerTest.java index 326cc22f2d8..81fb3fe4e57 100644 --- a/tests/robotests/src/com/android/settings/development/bluetooth/BluetoothChannelModeDialogPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/development/bluetooth/BluetoothChannelModeDialogPreferenceControllerTest.java @@ -23,8 +23,10 @@ import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.bluetooth.BluetoothA2dp; +import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothCodecConfig; import android.bluetooth.BluetoothCodecStatus; +import android.bluetooth.BluetoothDevice; import android.content.Context; import androidx.lifecycle.LifecycleOwner; @@ -47,6 +49,8 @@ import java.util.List; @RunWith(RobolectricTestRunner.class) public class BluetoothChannelModeDialogPreferenceControllerTest { + private static final String DEVICE_ADDRESS = "00:11:22:33:44:55"; + @Mock private BluetoothA2dp mBluetoothA2dp; @Mock @@ -58,6 +62,7 @@ public class BluetoothChannelModeDialogPreferenceControllerTest { private BluetoothCodecStatus mCodecStatus; private BluetoothCodecConfig mCodecConfigAAC; private BluetoothCodecConfig mCodecConfigSBC; + private BluetoothDevice mActiveDevice; private Context mContext; private LifecycleOwner mLifecycleOwner; private Lifecycle mLifecycle; @@ -69,6 +74,7 @@ public class BluetoothChannelModeDialogPreferenceControllerTest { mLifecycleOwner = () -> mLifecycle; mLifecycle = new Lifecycle(mLifecycleOwner); mBluetoothA2dpConfigStore = spy(new BluetoothA2dpConfigStore()); + mActiveDevice = BluetoothAdapter.getDefaultAdapter().getRemoteDevice(DEVICE_ADDRESS); mController = new BluetoothChannelModeDialogPreferenceController(mContext, mLifecycle, mBluetoothA2dpConfigStore); mPreference = new BluetoothChannelModeDialogPreference(mContext); @@ -86,13 +92,14 @@ public class BluetoothChannelModeDialogPreferenceControllerTest { BluetoothCodecConfig.BITS_PER_SAMPLE_NONE, BluetoothCodecConfig.CHANNEL_MODE_MONO | BluetoothCodecConfig.CHANNEL_MODE_STEREO, 0, 0, 0, 0); + when(mBluetoothA2dp.getActiveDevice()).thenReturn(mActiveDevice); } @Test public void writeConfigurationValues_selectDefault_setHighest() { BluetoothCodecConfig[] mCodecConfigs = {mCodecConfigAAC, mCodecConfigSBC}; mCodecStatus = new BluetoothCodecStatus(mCodecConfigSBC, null, mCodecConfigs); - when(mBluetoothA2dp.getCodecStatus(null)).thenReturn(mCodecStatus); + when(mBluetoothA2dp.getCodecStatus(mActiveDevice)).thenReturn(mCodecStatus); mController.onBluetoothServiceConnected(mBluetoothA2dp); mController.writeConfigurationValues(0); @@ -118,7 +125,7 @@ public class BluetoothChannelModeDialogPreferenceControllerTest { public void getSelectableIndex_verifyList() { BluetoothCodecConfig[] mCodecConfigs = {mCodecConfigAAC, mCodecConfigSBC}; mCodecStatus = new BluetoothCodecStatus(mCodecConfigSBC, null, mCodecConfigs); - when(mBluetoothA2dp.getCodecStatus(null)).thenReturn(mCodecStatus); + when(mBluetoothA2dp.getCodecStatus(mActiveDevice)).thenReturn(mCodecStatus); mController.onBluetoothServiceConnected(mBluetoothA2dp); List indexList = new ArrayList<>(); indexList.add(mPreference.getDefaultIndex()); diff --git a/tests/robotests/src/com/android/settings/development/bluetooth/BluetoothCodecDialogPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/development/bluetooth/BluetoothCodecDialogPreferenceControllerTest.java index f4ed811b4e1..7dd29069416 100644 --- a/tests/robotests/src/com/android/settings/development/bluetooth/BluetoothCodecDialogPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/development/bluetooth/BluetoothCodecDialogPreferenceControllerTest.java @@ -24,8 +24,10 @@ import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.bluetooth.BluetoothA2dp; +import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothCodecConfig; import android.bluetooth.BluetoothCodecStatus; +import android.bluetooth.BluetoothDevice; import android.content.Context; import androidx.lifecycle.LifecycleOwner; @@ -45,6 +47,8 @@ import org.robolectric.RuntimeEnvironment; @RunWith(RobolectricTestRunner.class) public class BluetoothCodecDialogPreferenceControllerTest { + private static final String DEVICE_ADDRESS = "00:11:22:33:44:55"; + @Mock private BluetoothA2dp mBluetoothA2dp; @Mock @@ -61,10 +65,12 @@ public class BluetoothCodecDialogPreferenceControllerTest { private BluetoothCodecConfig mCodecConfigAPTX; private BluetoothCodecConfig mCodecConfigAPTXHD; private BluetoothCodecConfig mCodecConfigLDAC; + private BluetoothDevice mActiveDevice; private Context mContext; private LifecycleOwner mLifecycleOwner; private Lifecycle mLifecycle; + @Before public void setup() { MockitoAnnotations.initMocks(this); @@ -72,6 +78,7 @@ public class BluetoothCodecDialogPreferenceControllerTest { mLifecycleOwner = () -> mLifecycle; mLifecycle = new Lifecycle(mLifecycleOwner); mBluetoothA2dpConfigStore = spy(new BluetoothA2dpConfigStore()); + mActiveDevice = BluetoothAdapter.getDefaultAdapter().getRemoteDevice(DEVICE_ADDRESS); mController = new BluetoothCodecDialogPreferenceController(mContext, mLifecycle, mBluetoothA2dpConfigStore, mCallback); mPreference = new BluetoothCodecDialogPreference(mContext); @@ -93,13 +100,14 @@ public class BluetoothCodecDialogPreferenceControllerTest { mCodecConfigAPTXHD = new BluetoothCodecConfig( BluetoothCodecConfig.SOURCE_CODEC_TYPE_APTX_HD); mCodecConfigLDAC = new BluetoothCodecConfig(BluetoothCodecConfig.SOURCE_CODEC_TYPE_LDAC); + when(mBluetoothA2dp.getActiveDevice()).thenReturn(mActiveDevice); } @Test public void writeConfigurationValues_selectDefault_setHighest() { BluetoothCodecConfig[] mCodecConfigs = {mCodecConfigAAC, mCodecConfigSBC}; mCodecStatus = new BluetoothCodecStatus(mCodecConfigSBC, null, mCodecConfigs); - when(mBluetoothA2dp.getCodecStatus(null)).thenReturn(mCodecStatus); + when(mBluetoothA2dp.getCodecStatus(mActiveDevice)).thenReturn(mCodecStatus); mController.onBluetoothServiceConnected(mBluetoothA2dp); mController.writeConfigurationValues(0); @@ -111,7 +119,7 @@ public class BluetoothCodecDialogPreferenceControllerTest { BluetoothCodecConfig[] mCodecConfigs = {mCodecConfigAAC, mCodecConfigSBC, mCodecConfigAPTX, mCodecConfigAPTXHD, mCodecConfigLDAC, mCodecConfigAAC, mCodecConfigSBC}; mCodecStatus = new BluetoothCodecStatus(mCodecConfigSBC, null, mCodecConfigs); - when(mBluetoothA2dp.getCodecStatus(null)).thenReturn(mCodecStatus); + when(mBluetoothA2dp.getCodecStatus(mActiveDevice)).thenReturn(mCodecStatus); mController.onBluetoothServiceConnected(mBluetoothA2dp); mController.writeConfigurationValues(1); @@ -138,7 +146,7 @@ public class BluetoothCodecDialogPreferenceControllerTest { BluetoothCodecConfig[] mCodecConfigs = {mCodecConfigAAC, mCodecConfigSBC, mCodecConfigAPTX, mCodecConfigAPTXHD, mCodecConfigLDAC, mCodecConfigAAC, mCodecConfigSBC}; mCodecStatus = new BluetoothCodecStatus(mCodecConfigAAC, null, mCodecConfigs); - when(mBluetoothA2dp.getCodecStatus(null)).thenReturn(mCodecStatus); + when(mBluetoothA2dp.getCodecStatus(mActiveDevice)).thenReturn(mCodecStatus); mController.onBluetoothServiceConnected(mBluetoothA2dp); mController.writeConfigurationValues(2); diff --git a/tests/robotests/src/com/android/settings/development/bluetooth/BluetoothHDAudioPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/development/bluetooth/BluetoothHDAudioPreferenceControllerTest.java index 1f0daa32aeb..60476dec406 100644 --- a/tests/robotests/src/com/android/settings/development/bluetooth/BluetoothHDAudioPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/development/bluetooth/BluetoothHDAudioPreferenceControllerTest.java @@ -59,10 +59,10 @@ public class BluetoothHDAudioPreferenceControllerTest { private BluetoothHDAudioPreferenceController mController; private SwitchPreference mPreference; private BluetoothA2dpConfigStore mBluetoothA2dpConfigStore; + private BluetoothDevice mActiveDevice; private Context mContext; private LifecycleOwner mLifecycleOwner; private Lifecycle mLifecycle; - private BluetoothDevice mActiveDevice; @Before public void setup() { @@ -91,7 +91,7 @@ public class BluetoothHDAudioPreferenceControllerTest { @Test public void updateState_codecSupported_setEnable() { when(mBluetoothA2dp.getActiveDevice()).thenReturn(mActiveDevice); - when(mBluetoothA2dp.supportsOptionalCodecs(mActiveDevice)).thenReturn( + when(mBluetoothA2dp.isOptionalCodecsSupported(mActiveDevice)).thenReturn( mBluetoothA2dp.OPTIONAL_CODECS_SUPPORTED); mController.onBluetoothServiceConnected(mBluetoothA2dp); mController.updateState(mPreference); @@ -102,7 +102,7 @@ public class BluetoothHDAudioPreferenceControllerTest { @Test public void updateState_codecNotSupported_setDisable() { when(mBluetoothA2dp.getActiveDevice()).thenReturn(mActiveDevice); - when(mBluetoothA2dp.supportsOptionalCodecs(mActiveDevice)).thenReturn( + when(mBluetoothA2dp.isOptionalCodecsSupported(mActiveDevice)).thenReturn( mBluetoothA2dp.OPTIONAL_CODECS_NOT_SUPPORTED); mController.onBluetoothServiceConnected(mBluetoothA2dp); mController.updateState(mPreference); @@ -113,9 +113,9 @@ public class BluetoothHDAudioPreferenceControllerTest { @Test public void updateState_codecSupportedAndEnabled_checked() { when(mBluetoothA2dp.getActiveDevice()).thenReturn(mActiveDevice); - when(mBluetoothA2dp.supportsOptionalCodecs(mActiveDevice)).thenReturn( + when(mBluetoothA2dp.isOptionalCodecsSupported(mActiveDevice)).thenReturn( mBluetoothA2dp.OPTIONAL_CODECS_SUPPORTED); - when(mBluetoothA2dp.getOptionalCodecsEnabled(mActiveDevice)).thenReturn( + when(mBluetoothA2dp.isOptionalCodecsEnabled(mActiveDevice)).thenReturn( mBluetoothA2dp.OPTIONAL_CODECS_PREF_ENABLED); mController.onBluetoothServiceConnected(mBluetoothA2dp); mController.updateState(mPreference); @@ -126,9 +126,9 @@ public class BluetoothHDAudioPreferenceControllerTest { @Test public void updateState_codecSupportedAndDisabled_notChecked() { when(mBluetoothA2dp.getActiveDevice()).thenReturn(mActiveDevice); - when(mBluetoothA2dp.supportsOptionalCodecs(mActiveDevice)).thenReturn( + when(mBluetoothA2dp.isOptionalCodecsSupported(mActiveDevice)).thenReturn( mBluetoothA2dp.OPTIONAL_CODECS_SUPPORTED); - when(mBluetoothA2dp.getOptionalCodecsEnabled(mActiveDevice)).thenReturn( + when(mBluetoothA2dp.isOptionalCodecsEnabled(mActiveDevice)).thenReturn( mBluetoothA2dp.OPTIONAL_CODECS_PREF_DISABLED); mController.onBluetoothServiceConnected(mBluetoothA2dp); mController.updateState(mPreference); @@ -143,7 +143,7 @@ public class BluetoothHDAudioPreferenceControllerTest { final boolean enabled = false; mController.onPreferenceChange(mPreference, enabled); - verify(mBluetoothA2dp).disableOptionalCodecs(null); + verify(mBluetoothA2dp).disableOptionalCodecs(mActiveDevice); verify(mBluetoothA2dp).setOptionalCodecsEnabled(mActiveDevice, BluetoothA2dp.OPTIONAL_CODECS_PREF_DISABLED); verify(mCallback).onBluetoothHDAudioEnabled(enabled); @@ -156,7 +156,7 @@ public class BluetoothHDAudioPreferenceControllerTest { final boolean enabled = true; mController.onPreferenceChange(mPreference, enabled); - verify(mBluetoothA2dp).enableOptionalCodecs(null); + verify(mBluetoothA2dp).enableOptionalCodecs(mActiveDevice); verify(mBluetoothA2dp).setOptionalCodecsEnabled(mActiveDevice, BluetoothA2dp.OPTIONAL_CODECS_PREF_ENABLED); verify(mCallback).onBluetoothHDAudioEnabled(enabled); diff --git a/tests/robotests/src/com/android/settings/development/bluetooth/BluetoothQualityDialogPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/development/bluetooth/BluetoothQualityDialogPreferenceControllerTest.java index 35bd704a9fd..ef209a2ee3c 100644 --- a/tests/robotests/src/com/android/settings/development/bluetooth/BluetoothQualityDialogPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/development/bluetooth/BluetoothQualityDialogPreferenceControllerTest.java @@ -23,8 +23,10 @@ import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.bluetooth.BluetoothA2dp; +import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothCodecConfig; import android.bluetooth.BluetoothCodecStatus; +import android.bluetooth.BluetoothDevice; import android.content.Context; import androidx.lifecycle.LifecycleOwner; @@ -44,6 +46,8 @@ import org.robolectric.RuntimeEnvironment; @RunWith(RobolectricTestRunner.class) public class BluetoothQualityDialogPreferenceControllerTest { + private static final String DEVICE_ADDRESS = "00:11:22:33:44:55"; + @Mock private BluetoothA2dp mBluetoothA2dp; @Mock @@ -55,6 +59,7 @@ public class BluetoothQualityDialogPreferenceControllerTest { private BluetoothCodecStatus mCodecStatus; private BluetoothCodecConfig mCodecConfigAAC; private BluetoothCodecConfig mCodecConfigLDAC; + private BluetoothDevice mActiveDevice; private Context mContext; private LifecycleOwner mLifecycleOwner; private Lifecycle mLifecycle; @@ -66,6 +71,7 @@ public class BluetoothQualityDialogPreferenceControllerTest { mLifecycleOwner = () -> mLifecycle; mLifecycle = new Lifecycle(mLifecycleOwner); mBluetoothA2dpConfigStore = spy(new BluetoothA2dpConfigStore()); + mActiveDevice = BluetoothAdapter.getDefaultAdapter().getRemoteDevice(DEVICE_ADDRESS); mController = new BluetoothQualityDialogPreferenceController(mContext, mLifecycle, mBluetoothA2dpConfigStore); mPreference = new BluetoothQualityDialogPreference(mContext); @@ -83,6 +89,7 @@ public class BluetoothQualityDialogPreferenceControllerTest { BluetoothCodecConfig.BITS_PER_SAMPLE_NONE, BluetoothCodecConfig.CHANNEL_MODE_NONE, 1001, 0, 0, 0); + when(mBluetoothA2dp.getActiveDevice()).thenReturn(mActiveDevice); } @Test @@ -110,7 +117,7 @@ public class BluetoothQualityDialogPreferenceControllerTest { public void updateState_codeTypeIsLDAC_enablePreference() { BluetoothCodecConfig[] mCodecConfigs = {mCodecConfigAAC, mCodecConfigLDAC}; mCodecStatus = new BluetoothCodecStatus(mCodecConfigLDAC, null, mCodecConfigs); - when(mBluetoothA2dp.getCodecStatus(null)).thenReturn(mCodecStatus); + when(mBluetoothA2dp.getCodecStatus(mActiveDevice)).thenReturn(mCodecStatus); mController.onBluetoothServiceConnected(mBluetoothA2dp); mController.updateState(mPreference); @@ -121,7 +128,7 @@ public class BluetoothQualityDialogPreferenceControllerTest { public void updateState_codeTypeAAC_disablePreference() { BluetoothCodecConfig[] mCodecConfigs = {mCodecConfigAAC, mCodecConfigLDAC}; mCodecStatus = new BluetoothCodecStatus(mCodecConfigAAC, null, mCodecConfigs); - when(mBluetoothA2dp.getCodecStatus(null)).thenReturn(mCodecStatus); + when(mBluetoothA2dp.getCodecStatus(mActiveDevice)).thenReturn(mCodecStatus); mController.onBluetoothServiceConnected(mBluetoothA2dp); mController.updateState(mPreference); diff --git a/tests/robotests/src/com/android/settings/development/bluetooth/BluetoothSampleRateDialogPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/development/bluetooth/BluetoothSampleRateDialogPreferenceControllerTest.java index d274a5730d2..c649fdf169b 100644 --- a/tests/robotests/src/com/android/settings/development/bluetooth/BluetoothSampleRateDialogPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/development/bluetooth/BluetoothSampleRateDialogPreferenceControllerTest.java @@ -23,8 +23,10 @@ import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.bluetooth.BluetoothA2dp; +import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothCodecConfig; import android.bluetooth.BluetoothCodecStatus; +import android.bluetooth.BluetoothDevice; import android.content.Context; import androidx.lifecycle.LifecycleOwner; @@ -47,6 +49,8 @@ import java.util.List; @RunWith(RobolectricTestRunner.class) public class BluetoothSampleRateDialogPreferenceControllerTest { + private static final String DEVICE_ADDRESS = "00:11:22:33:44:55"; + @Mock private BluetoothA2dp mBluetoothA2dp; @Mock @@ -58,10 +62,12 @@ public class BluetoothSampleRateDialogPreferenceControllerTest { private BluetoothCodecStatus mCodecStatus; private BluetoothCodecConfig mCodecConfigAAC; private BluetoothCodecConfig mCodecConfigSBC; + private BluetoothDevice mActiveDevice; private Context mContext; private LifecycleOwner mLifecycleOwner; private Lifecycle mLifecycle; + @Before public void setup() { MockitoAnnotations.initMocks(this); @@ -69,6 +75,7 @@ public class BluetoothSampleRateDialogPreferenceControllerTest { mLifecycleOwner = () -> mLifecycle; mLifecycle = new Lifecycle(mLifecycleOwner); mBluetoothA2dpConfigStore = spy(new BluetoothA2dpConfigStore()); + mActiveDevice = BluetoothAdapter.getDefaultAdapter().getRemoteDevice(DEVICE_ADDRESS); mController = spy(new BluetoothSampleRateDialogPreferenceController(mContext, mLifecycle, mBluetoothA2dpConfigStore)); mPreference = new BluetoothSampleRateDialogPreference(mContext); @@ -86,6 +93,7 @@ public class BluetoothSampleRateDialogPreferenceControllerTest { BluetoothCodecConfig.BITS_PER_SAMPLE_NONE, BluetoothCodecConfig.CHANNEL_MODE_NONE, 0, 0, 0, 0); + when(mBluetoothA2dp.getActiveDevice()).thenReturn(mActiveDevice); } @Test @@ -93,7 +101,8 @@ public class BluetoothSampleRateDialogPreferenceControllerTest { mCodecConfigSBC = new BluetoothCodecConfig(BluetoothCodecConfig.SOURCE_CODEC_TYPE_SBC); BluetoothCodecConfig[] mCodecConfigs = {mCodecConfigAAC, mCodecConfigSBC}; mCodecStatus = new BluetoothCodecStatus(mCodecConfigAAC, null, mCodecConfigs); - when(mBluetoothA2dp.getCodecStatus(null)).thenReturn(mCodecStatus); + when(mBluetoothA2dp.getCodecStatus( + mActiveDevice)).thenReturn(mCodecStatus); mController.onBluetoothServiceConnected(mBluetoothA2dp); mController.writeConfigurationValues(0); @@ -125,7 +134,8 @@ public class BluetoothSampleRateDialogPreferenceControllerTest { public void getSelectableIndex_verifyList() { BluetoothCodecConfig[] mCodecConfigs = {mCodecConfigAAC, mCodecConfigSBC}; mCodecStatus = new BluetoothCodecStatus(mCodecConfigAAC, null, mCodecConfigs); - when(mBluetoothA2dp.getCodecStatus(null)).thenReturn(mCodecStatus); + when(mBluetoothA2dp.getCodecStatus( + mActiveDevice)).thenReturn(mCodecStatus); mController.onBluetoothServiceConnected(mBluetoothA2dp); List indexList = new ArrayList<>(); indexList.add(mController.getDefaultIndex());