From 2b78c17e84267aea414fa49ac2a521d86cc88f42 Mon Sep 17 00:00:00 2001 From: Angela Wang Date: Wed, 19 Jun 2024 08:10:09 +0000 Subject: [PATCH] Remove unavailable preset info option Bug: 347134589 Test: atest BluetoothDetailsHearingAidsPresetsControllerTest Flag: EXEMPT bugfix Change-Id: Iabdbe675a08fcd172617ef31dd0b8fbe8dccbb89 --- ...thDetailsHearingAidsPresetsController.java | 3 +- ...tailsHearingAidsPresetsControllerTest.java | 28 ++++++++++++++++--- 2 files changed, 26 insertions(+), 5 deletions(-) diff --git a/src/com/android/settings/bluetooth/BluetoothDetailsHearingAidsPresetsController.java b/src/com/android/settings/bluetooth/BluetoothDetailsHearingAidsPresetsController.java index 12f904b6ae2..f7ccc610870 100644 --- a/src/com/android/settings/bluetooth/BluetoothDetailsHearingAidsPresetsController.java +++ b/src/com/android/settings/bluetooth/BluetoothDetailsHearingAidsPresetsController.java @@ -276,7 +276,8 @@ public class BluetoothDetailsHearingAidsPresetsController extends return; } List infoList = mHapClientProfile.getAllPresetInfo( - mCachedDevice.getDevice()); + mCachedDevice.getDevice()).stream().filter( + BluetoothHapPresetInfo::isAvailable).toList(); CharSequence[] presetNames = new CharSequence[infoList.size()]; CharSequence[] presetIndexes = new CharSequence[infoList.size()]; for (int i = 0; i < infoList.size(); i++) { diff --git a/tests/robotests/src/com/android/settings/bluetooth/BluetoothDetailsHearingAidsPresetsControllerTest.java b/tests/robotests/src/com/android/settings/bluetooth/BluetoothDetailsHearingAidsPresetsControllerTest.java index 36838852b8a..7c865f340a6 100644 --- a/tests/robotests/src/com/android/settings/bluetooth/BluetoothDetailsHearingAidsPresetsControllerTest.java +++ b/tests/robotests/src/com/android/settings/bluetooth/BluetoothDetailsHearingAidsPresetsControllerTest.java @@ -222,7 +222,7 @@ public class BluetoothDetailsHearingAidsPresetsControllerTest extends @Test public void refresh_validPresetInfo_preferenceEnabled() { - BluetoothHapPresetInfo info = getTestPresetInfo(); + BluetoothHapPresetInfo info = getTestPresetInfo(true); when(mHapClientProfile.getAllPresetInfo(mDevice)).thenReturn(List.of(info)); mController.refresh(); @@ -233,7 +233,7 @@ public class BluetoothDetailsHearingAidsPresetsControllerTest extends @Test public void refresh_invalidActivePresetIndex_summaryIsNull() { - BluetoothHapPresetInfo info = getTestPresetInfo(); + BluetoothHapPresetInfo info = getTestPresetInfo(true); when(mHapClientProfile.getAllPresetInfo(mDevice)).thenReturn(List.of(info)); when(mHapClientProfile.getActivePresetIndex(mDevice)).thenReturn(PRESET_INDEX_UNAVAILABLE); @@ -245,7 +245,7 @@ public class BluetoothDetailsHearingAidsPresetsControllerTest extends @Test public void refresh_validActivePresetIndex_summaryIsNotNull() { - BluetoothHapPresetInfo info = getTestPresetInfo(); + BluetoothHapPresetInfo info = getTestPresetInfo(true); when(mHapClientProfile.getAllPresetInfo(mDevice)).thenReturn(List.of(info)); when(mHapClientProfile.getActivePresetIndex(mDevice)).thenReturn(TEST_PRESET_INDEX); @@ -265,10 +265,30 @@ public class BluetoothDetailsHearingAidsPresetsControllerTest extends verify(mHapClientProfile).selectPreset(mDevice, TEST_PRESET_INDEX); } - private BluetoothHapPresetInfo getTestPresetInfo() { + @Test + public void loadAllPresetInfo_unavailablePreset_notAddedToEntries() { + BluetoothHapPresetInfo info = getTestPresetInfo(false); + when(mHapClientProfile.getAllPresetInfo(mDevice)).thenReturn(List.of(info)); + + mController.refresh(); + + assertThat(mController.getPreference().getEntries().length).isEqualTo(0); + } + + @Test + public void loadAllPresetInfo_availablePreset_addedToEntries() { + BluetoothHapPresetInfo info = getTestPresetInfo(true); + when(mHapClientProfile.getAllPresetInfo(mDevice)).thenReturn(List.of(info)); + + mController.refresh(); + + assertThat(mController.getPreference().getEntries().length).isEqualTo(1); + } + private BluetoothHapPresetInfo getTestPresetInfo(boolean available) { BluetoothHapPresetInfo info = mock(BluetoothHapPresetInfo.class); when(info.getName()).thenReturn(TEST_PRESET_NAME); when(info.getIndex()).thenReturn(TEST_PRESET_INDEX); + when(info.isAvailable()).thenReturn(available); return info; }