Loading src/com/android/settings/bluetooth/BluetoothDetailsHearingDeviceInputRoutingController.java +21 −5 Original line number Diff line number Diff line Loading @@ -56,6 +56,10 @@ public class BluetoothDetailsHearingDeviceInputRoutingController extends private final HearingAidAudioRoutingHelper mAudioRoutingHelper; private final AudioManager mAudioManager; @Nullable PreferenceCategory mPreferenceContainer; @Nullable private HearingDeviceInputRoutingPreference mPreference; public BluetoothDetailsHearingDeviceInputRoutingController( @NonNull Context context, Loading Loading @@ -92,15 +96,27 @@ public class BluetoothDetailsHearingDeviceInputRoutingController extends @Override protected void init(PreferenceScreen screen) { PreferenceCategory hearingCategory = screen.findPreference(KEY_HEARING_DEVICE_GROUP); if (hearingCategory != null) { hearingCategory.addPreference( createInputRoutingPreference(hearingCategory.getContext())); mPreferenceContainer = screen.findPreference(KEY_HEARING_DEVICE_GROUP); if (mPreferenceContainer != null) { mPreference = createInputRoutingPreference(mPreferenceContainer.getContext()); mPreferenceContainer.addPreference(mPreference); } } @Override protected void refresh() {} protected void refresh() { if (mPreferenceContainer == null || mPreference == null) { return; } if (mPreference.isVisible() && !isAvailable()) { if (mPreference.isDialogOpen()) { mPreference.getDialog().dismiss(); } mPreference.setVisible(false); } else if (!mPreference.isVisible() && isAvailable()) { mPreference.setVisible(true); } } @Nullable @Override Loading tests/robotests/src/com/android/settings/bluetooth/BluetoothDetailsHearingDeviceInputRoutingControllerTest.java +30 −0 Original line number Diff line number Diff line Loading @@ -179,6 +179,36 @@ public class BluetoothDetailsHearingDeviceInputRoutingControllerTest extends assertThat(mController.isAvailable()).isTrue(); } @Test public void refresh_validInputChangeToNotValidInput_noPreference() { when(mCachedDevice.getAddress()).thenReturn(TEST_ADDRESS); AudioDeviceInfo[] mockInfo = new AudioDeviceInfo[] {mockTestAddressInfo(TEST_ADDRESS)}; when(mAudioManager.getDevices(AudioManager.GET_DEVICES_INPUTS)).thenReturn(mockInfo); when(mCachedDevice.getProfiles()).thenReturn(List.of(mHapClientProfile)); mController.init(mScreen); when(mCachedDevice.getProfiles()).thenReturn(Collections.emptyList()); mController.refresh(); Preference pref = mScreen.findPreference(KEY_HEARING_DEVICE_INPUT_ROUTING); assertThat(pref.isVisible()).isFalse(); } @Test public void refresh_notValidInputChangeToValidInput_expectedPreference() { when(mCachedDevice.getAddress()).thenReturn(TEST_ADDRESS); AudioDeviceInfo[] mockInfo = new AudioDeviceInfo[] {mockTestAddressInfo(TEST_ADDRESS)}; when(mAudioManager.getDevices(AudioManager.GET_DEVICES_INPUTS)).thenReturn(mockInfo); when(mCachedDevice.getProfiles()).thenReturn(Collections.emptyList()); mController.init(mScreen); when(mCachedDevice.getProfiles()).thenReturn(List.of(mHapClientProfile)); mController.refresh(); Preference pref = mScreen.findPreference(KEY_HEARING_DEVICE_INPUT_ROUTING); assertThat(pref.isVisible()).isTrue(); } private AudioDeviceInfo mockTestAddressInfo(String address) { final AudioDeviceInfo info = mock(AudioDeviceInfo.class); when(info.getType()).thenReturn(AudioDeviceInfo.TYPE_BLE_HEADSET); Loading Loading
src/com/android/settings/bluetooth/BluetoothDetailsHearingDeviceInputRoutingController.java +21 −5 Original line number Diff line number Diff line Loading @@ -56,6 +56,10 @@ public class BluetoothDetailsHearingDeviceInputRoutingController extends private final HearingAidAudioRoutingHelper mAudioRoutingHelper; private final AudioManager mAudioManager; @Nullable PreferenceCategory mPreferenceContainer; @Nullable private HearingDeviceInputRoutingPreference mPreference; public BluetoothDetailsHearingDeviceInputRoutingController( @NonNull Context context, Loading Loading @@ -92,15 +96,27 @@ public class BluetoothDetailsHearingDeviceInputRoutingController extends @Override protected void init(PreferenceScreen screen) { PreferenceCategory hearingCategory = screen.findPreference(KEY_HEARING_DEVICE_GROUP); if (hearingCategory != null) { hearingCategory.addPreference( createInputRoutingPreference(hearingCategory.getContext())); mPreferenceContainer = screen.findPreference(KEY_HEARING_DEVICE_GROUP); if (mPreferenceContainer != null) { mPreference = createInputRoutingPreference(mPreferenceContainer.getContext()); mPreferenceContainer.addPreference(mPreference); } } @Override protected void refresh() {} protected void refresh() { if (mPreferenceContainer == null || mPreference == null) { return; } if (mPreference.isVisible() && !isAvailable()) { if (mPreference.isDialogOpen()) { mPreference.getDialog().dismiss(); } mPreference.setVisible(false); } else if (!mPreference.isVisible() && isAvailable()) { mPreference.setVisible(true); } } @Nullable @Override Loading
tests/robotests/src/com/android/settings/bluetooth/BluetoothDetailsHearingDeviceInputRoutingControllerTest.java +30 −0 Original line number Diff line number Diff line Loading @@ -179,6 +179,36 @@ public class BluetoothDetailsHearingDeviceInputRoutingControllerTest extends assertThat(mController.isAvailable()).isTrue(); } @Test public void refresh_validInputChangeToNotValidInput_noPreference() { when(mCachedDevice.getAddress()).thenReturn(TEST_ADDRESS); AudioDeviceInfo[] mockInfo = new AudioDeviceInfo[] {mockTestAddressInfo(TEST_ADDRESS)}; when(mAudioManager.getDevices(AudioManager.GET_DEVICES_INPUTS)).thenReturn(mockInfo); when(mCachedDevice.getProfiles()).thenReturn(List.of(mHapClientProfile)); mController.init(mScreen); when(mCachedDevice.getProfiles()).thenReturn(Collections.emptyList()); mController.refresh(); Preference pref = mScreen.findPreference(KEY_HEARING_DEVICE_INPUT_ROUTING); assertThat(pref.isVisible()).isFalse(); } @Test public void refresh_notValidInputChangeToValidInput_expectedPreference() { when(mCachedDevice.getAddress()).thenReturn(TEST_ADDRESS); AudioDeviceInfo[] mockInfo = new AudioDeviceInfo[] {mockTestAddressInfo(TEST_ADDRESS)}; when(mAudioManager.getDevices(AudioManager.GET_DEVICES_INPUTS)).thenReturn(mockInfo); when(mCachedDevice.getProfiles()).thenReturn(Collections.emptyList()); mController.init(mScreen); when(mCachedDevice.getProfiles()).thenReturn(List.of(mHapClientProfile)); mController.refresh(); Preference pref = mScreen.findPreference(KEY_HEARING_DEVICE_INPUT_ROUTING); assertThat(pref.isVisible()).isTrue(); } private AudioDeviceInfo mockTestAddressInfo(String address) { final AudioDeviceInfo info = mock(AudioDeviceInfo.class); when(info.getType()).thenReturn(AudioDeviceInfo.TYPE_BLE_HEADSET); Loading