Pass in active device to all BluetoothA2dp APIs in

packages/apps/Settings as null input is no longer supported

Bug: 147287141
Test: Manual
Change-Id: If43934374914c657080ffd0509f8095d988cc550
This commit is contained in:
Rahul Sabnis
2020-02-03 18:22:54 -08:00
parent 3c77bd3631
commit dcedd7d6f5
11 changed files with 58 additions and 36 deletions

View File

@@ -83,7 +83,7 @@ public abstract class AbstractBluetoothA2dpPreferenceController extends
final BluetoothCodecConfig codecConfig = mBluetoothA2dpConfigStore.createCodecConfig();
synchronized (mBluetoothA2dpConfigStore) {
if (mBluetoothA2dp != null) {
setCodecConfigPreference(null, codecConfig); // Use current active device
setCodecConfigPreference(mBluetoothA2dp.getActiveDevice(), codecConfig);
}
}
// Because the setting is not persisted into permanent storage, we cannot call update state
@@ -102,13 +102,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 (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);

View File

@@ -80,7 +80,7 @@ public abstract class AbstractBluetoothDialogPreferenceController extends
}
writeConfigurationValues(index);
final BluetoothCodecConfig codecConfig = mBluetoothA2dpConfigStore.createCodecConfig();
bluetoothA2dp.setCodecConfigPreference(null, codecConfig);
bluetoothA2dp.setCodecConfigPreference(bluetoothA2dp.getActiveDevice(), codecConfig);
mPreference.setSummary(((BaseBluetoothDialogPreference) mPreference).generateSummary(
index));
}
@@ -146,7 +146,8 @@ public abstract class AbstractBluetoothDialogPreferenceController extends
if (bluetoothA2dp == null) {
return null;
}
final BluetoothCodecStatus codecStatus = bluetoothA2dp.getCodecStatus(null);
final BluetoothCodecStatus codecStatus =
bluetoothA2dp.getCodecStatus(bluetoothA2dp.getActiveDevice());
if (codecStatus == null) {
Log.d(TAG, "Unable to get current codec config. Codec status is null");
return null;
@@ -177,7 +178,8 @@ public abstract class AbstractBluetoothDialogPreferenceController extends
* @return {@link BluetoothCodecConfig}.
*/
protected BluetoothCodecConfig getSelectableByCodecType(int codecTypeValue) {
final BluetoothCodecConfig[] configs = getSelectableConfigs(null);
final BluetoothCodecConfig[] configs = getSelectableConfigs(
mBluetoothA2dp.getActiveDevice());
if (configs == null) {
Log.d(TAG, "Unable to get selectable config. Selectable configs is empty.");
return null;

View File

@@ -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(bluetoothA2dp.getActiveDevice());
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:

View File

@@ -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);
}

View File

@@ -103,13 +103,15 @@ public class AbstractBluetoothDialogPreferenceControllerTest {
@Test
public void onIndexUpdated_checkFlow() {
mCodecStatus = new BluetoothCodecStatus(mCodecConfigAAC, null, null);
when(mBluetoothA2dp.getCodecStatus(null)).thenReturn(mCodecStatus);
when(mBluetoothA2dp.getCodecStatus(
mBluetoothA2dp.getActiveDevice())).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(
mBluetoothA2dp.getActiveDevice(), mCodecConfigAAC);
assertThat(mPreference.getSummary()).isEqualTo(SUMMARY);
}
@@ -134,14 +136,15 @@ public class AbstractBluetoothDialogPreferenceControllerTest {
assertThat(mController.getCurrentCodecConfig()).isNull();
mController.onBluetoothServiceConnected(mBluetoothA2dp);
when(mBluetoothA2dp.getCodecStatus(null)).thenReturn(null);
when(mBluetoothA2dp.getCodecStatus(mBluetoothA2dp.getActiveDevice())).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(
mBluetoothA2dp.getActiveDevice())).thenReturn(mCodecStatus);
mController.onBluetoothServiceConnected(mBluetoothA2dp);
assertThat(mController.getCurrentCodecConfig()).isEqualTo(mCodecConfigAAC);
@@ -150,7 +153,8 @@ public class AbstractBluetoothDialogPreferenceControllerTest {
@Test
public void getSelectableConfigs_verifyConfig() {
mCodecStatus = new BluetoothCodecStatus(mCodecConfigAAC, null, mCodecConfigs);
when(mBluetoothA2dp.getCodecStatus(null)).thenReturn(mCodecStatus);
when(mBluetoothA2dp.getCodecStatus(
mBluetoothA2dp.getActiveDevice())).thenReturn(mCodecStatus);
mController.onBluetoothServiceConnected(mBluetoothA2dp);
assertThat(mController.getSelectableConfigs(null)).isEqualTo(mCodecConfigs);
@@ -159,7 +163,8 @@ public class AbstractBluetoothDialogPreferenceControllerTest {
@Test
public void getSelectableByCodecType_verifyConfig() {
mCodecStatus = new BluetoothCodecStatus(mCodecConfigAAC, null, mCodecConfigs);
when(mBluetoothA2dp.getCodecStatus(null)).thenReturn(mCodecStatus);
when(mBluetoothA2dp.getCodecStatus(
mBluetoothA2dp.getActiveDevice())).thenReturn(mCodecStatus);
mController.onBluetoothServiceConnected(mBluetoothA2dp);
assertThat(mController.getSelectableByCodecType(BluetoothCodecConfig.SOURCE_CODEC_TYPE_AAC))
@@ -169,7 +174,8 @@ public class AbstractBluetoothDialogPreferenceControllerTest {
@Test
public void getSelectableByCodecType_unavailable() {
mCodecStatus = new BluetoothCodecStatus(mCodecConfigAAC, null, mCodecConfigs);
when(mBluetoothA2dp.getCodecStatus(null)).thenReturn(mCodecStatus);
when(mBluetoothA2dp.getCodecStatus(
mBluetoothA2dp.getActiveDevice())).thenReturn(mCodecStatus);
mController.onBluetoothServiceConnected(mBluetoothA2dp);
assertThat(mController.getSelectableByCodecType(
@@ -179,7 +185,8 @@ public class AbstractBluetoothDialogPreferenceControllerTest {
@Test
public void onBluetoothServiceConnected_verifyBluetoothA2dpConfigStore() {
mCodecStatus = new BluetoothCodecStatus(mCodecConfigAAC, null, mCodecConfigs);
when(mBluetoothA2dp.getCodecStatus(null)).thenReturn(mCodecStatus);
when(mBluetoothA2dp.getCodecStatus(
mBluetoothA2dp.getActiveDevice())).thenReturn(mCodecStatus);
mController.onBluetoothServiceConnected(mBluetoothA2dp);
verify(mBluetoothA2dpConfigStore).setCodecType(mCodecConfigAAC.getCodecType());

View File

@@ -92,7 +92,8 @@ public class BluetoothBitPerSampleDialogPreferenceControllerTest {
public void writeConfigurationValues_selectDefault_setHighest() {
BluetoothCodecConfig[] mCodecConfigs = {mCodecConfigAAC, mCodecConfigSBC};
mCodecStatus = new BluetoothCodecStatus(mCodecConfigAAC, null, mCodecConfigs);
when(mBluetoothA2dp.getCodecStatus(null)).thenReturn(mCodecStatus);
when(mBluetoothA2dp.getCodecStatus(
mBluetoothA2dp.getActiveDevice())).thenReturn(mCodecStatus);
mController.onBluetoothServiceConnected(mBluetoothA2dp);
mController.writeConfigurationValues(0);
@@ -121,7 +122,8 @@ 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(
mBluetoothA2dp.getActiveDevice())).thenReturn(mCodecStatus);
mController.onBluetoothServiceConnected(mBluetoothA2dp);
List<Integer> indexList = new ArrayList<>();
indexList.add(mPreference.getDefaultIndex());

View File

@@ -92,7 +92,8 @@ public class BluetoothChannelModeDialogPreferenceControllerTest {
public void writeConfigurationValues_selectDefault_setHighest() {
BluetoothCodecConfig[] mCodecConfigs = {mCodecConfigAAC, mCodecConfigSBC};
mCodecStatus = new BluetoothCodecStatus(mCodecConfigSBC, null, mCodecConfigs);
when(mBluetoothA2dp.getCodecStatus(null)).thenReturn(mCodecStatus);
when(mBluetoothA2dp.getCodecStatus(
mBluetoothA2dp.getActiveDevice())).thenReturn(mCodecStatus);
mController.onBluetoothServiceConnected(mBluetoothA2dp);
mController.writeConfigurationValues(0);
@@ -118,7 +119,8 @@ 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(
mBluetoothA2dp.getActiveDevice())).thenReturn(mCodecStatus);
mController.onBluetoothServiceConnected(mBluetoothA2dp);
List<Integer> indexList = new ArrayList<>();
indexList.add(mPreference.getDefaultIndex());

View File

@@ -99,7 +99,8 @@ public class BluetoothCodecDialogPreferenceControllerTest {
public void writeConfigurationValues_selectDefault_setHighest() {
BluetoothCodecConfig[] mCodecConfigs = {mCodecConfigAAC, mCodecConfigSBC};
mCodecStatus = new BluetoothCodecStatus(mCodecConfigSBC, null, mCodecConfigs);
when(mBluetoothA2dp.getCodecStatus(null)).thenReturn(mCodecStatus);
when(mBluetoothA2dp.getCodecStatus(
mBluetoothA2dp.getActiveDevice())).thenReturn(mCodecStatus);
mController.onBluetoothServiceConnected(mBluetoothA2dp);
mController.writeConfigurationValues(0);
@@ -111,7 +112,8 @@ 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(
mBluetoothA2dp.getActiveDevice())).thenReturn(mCodecStatus);
mController.onBluetoothServiceConnected(mBluetoothA2dp);
mController.writeConfigurationValues(1);
@@ -138,7 +140,8 @@ 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(
mBluetoothA2dp.getActiveDevice())).thenReturn(mCodecStatus);
mController.onBluetoothServiceConnected(mBluetoothA2dp);
mController.writeConfigurationValues(2);

View File

@@ -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);

View File

@@ -110,7 +110,8 @@ 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(
mBluetoothA2dp.getActiveDevice())).thenReturn(mCodecStatus);
mController.onBluetoothServiceConnected(mBluetoothA2dp);
mController.updateState(mPreference);
@@ -121,7 +122,8 @@ 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(
mBluetoothA2dp.getActiveDevice())).thenReturn(mCodecStatus);
mController.onBluetoothServiceConnected(mBluetoothA2dp);
mController.updateState(mPreference);

View File

@@ -93,7 +93,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(
mBluetoothA2dp.getActiveDevice())).thenReturn(mCodecStatus);
mController.onBluetoothServiceConnected(mBluetoothA2dp);
mController.writeConfigurationValues(0);
@@ -125,7 +126,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(
mBluetoothA2dp.getActiveDevice())).thenReturn(mCodecStatus);
mController.onBluetoothServiceConnected(mBluetoothA2dp);
List<Integer> indexList = new ArrayList<>();
indexList.add(mController.getDefaultIndex());