Loading src/com/android/settings/connecteddevice/audiosharing/AudioSharingDeviceVolumeGroupController.java +7 −7 Original line number Diff line number Diff line Loading @@ -306,20 +306,20 @@ public class AudioSharingDeviceVolumeGroupController extends AudioSharingBasePre @Override public void onDeviceRemoved(Preference preference) { if (!(preference instanceof AudioSharingDeviceVolumePreference)) { if (!(preference instanceof AudioSharingDeviceVolumePreference || preference instanceof AudioSharingDeviceVolumeSliderPreference)) { Log.d(TAG, "Skip onDeviceRemoved, invalid preference type"); return; } var volumePref = (AudioSharingDeviceVolumePreference) preference; if (mVolumePreferences.contains(volumePref)) { mVolumePreferences.remove(volumePref); if (mVolumePreferences.contains(preference)) { mVolumePreferences.remove(preference); } String address = volumePref.getCachedDevice().getDevice() == null ? "null" : volumePref.getCachedDevice().getDevice().getAnonymizedAddress(); String address = getCachedDevice(preference).getDevice() == null ? "null" : getCachedDevice(preference).getDevice().getAnonymizedAddress(); Log.d(TAG, "onDeviceRemoved: " + address); AudioSharingUtils.postOnMainThread(mContext, () -> { if (mPreferenceGroup != null) { mPreferenceGroup.removePreference(volumePref); mPreferenceGroup.removePreference(preference); if (mPreferenceGroup.getPreferenceCount() == 0) { mPreferenceGroup.setVisible(false); } Loading tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDeviceVolumeGroupControllerTest.java +25 −0 Original line number Diff line number Diff line Loading @@ -133,6 +133,7 @@ public class AudioSharingDeviceVolumeGroupControllerTest { @Mock private AudioSharingDeviceVolumePreference mPreference1; @Mock private AudioSharingDeviceVolumePreference mPreference2; @Mock private AudioSharingDeviceVolumeSliderPreference mSliderPreference1; @Mock private AudioSharingDeviceVolumeSliderPreference mSliderPreference2; @Mock private AudioManager mAudioManager; @Mock private PreferenceManager mPreferenceManager; @Mock private ContentResolver mContentResolver; Loading Loading @@ -188,6 +189,7 @@ public class AudioSharingDeviceVolumeGroupControllerTest { doReturn(mDevice2).when(mCachedDevice2).getDevice(); doReturn(ImmutableSet.of()).when(mCachedDevice2).getMemberDevice(); when(mPreference2.getCachedDevice()).thenReturn(mCachedDevice2); when(mSliderPreference2.getCachedDevice()).thenReturn(mCachedDevice2); doNothing().when(mDevicePreferenceCallback).onDeviceAdded(any(Preference.class)); doNothing().when(mDevicePreferenceCallback).onDeviceRemoved(any(Preference.class)); when(mScreen.getContext()).thenReturn(mContext); Loading Loading @@ -484,6 +486,29 @@ public class AudioSharingDeviceVolumeGroupControllerTest { assertThat(mPreferenceGroup.isVisible()).isFalse(); } @Test @EnableFlags(com.android.settings.flags.Flags.FLAG_ENABLE_BLUETOOTH_SETTINGS_EXPRESSIVE_DESIGN) public void onDeviceRemoved_enableExpressiveDesign_notLastDevice_isVisible() { mPreferenceGroup.addPreference(mSliderPreference2); mPreferenceGroup.addPreference(mSliderPreference1); mController.setPreferenceGroup(mPreferenceGroup); mController.onDeviceRemoved(mSliderPreference1); verify(mPreferenceGroup, never()).setVisible(false); assertThat(mPreferenceGroup.isVisible()).isTrue(); } @Test @EnableFlags(com.android.settings.flags.Flags.FLAG_ENABLE_BLUETOOTH_SETTINGS_EXPRESSIVE_DESIGN) public void onDeviceRemoved_enableExpressiveDesign_lastDevice_updateVisibility() { mPreferenceGroup.addPreference(mSliderPreference1); mController.setPreferenceGroup(mPreferenceGroup); mController.onDeviceRemoved(mSliderPreference1); shadowOf(Looper.getMainLooper()).idle(); verify(mPreferenceGroup).setVisible(false); assertThat(mPreferenceGroup.isVisible()).isFalse(); } @Test @EnableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING) public void updateVisibility_emptyPreferenceGroup_doNothing() { Loading Loading
src/com/android/settings/connecteddevice/audiosharing/AudioSharingDeviceVolumeGroupController.java +7 −7 Original line number Diff line number Diff line Loading @@ -306,20 +306,20 @@ public class AudioSharingDeviceVolumeGroupController extends AudioSharingBasePre @Override public void onDeviceRemoved(Preference preference) { if (!(preference instanceof AudioSharingDeviceVolumePreference)) { if (!(preference instanceof AudioSharingDeviceVolumePreference || preference instanceof AudioSharingDeviceVolumeSliderPreference)) { Log.d(TAG, "Skip onDeviceRemoved, invalid preference type"); return; } var volumePref = (AudioSharingDeviceVolumePreference) preference; if (mVolumePreferences.contains(volumePref)) { mVolumePreferences.remove(volumePref); if (mVolumePreferences.contains(preference)) { mVolumePreferences.remove(preference); } String address = volumePref.getCachedDevice().getDevice() == null ? "null" : volumePref.getCachedDevice().getDevice().getAnonymizedAddress(); String address = getCachedDevice(preference).getDevice() == null ? "null" : getCachedDevice(preference).getDevice().getAnonymizedAddress(); Log.d(TAG, "onDeviceRemoved: " + address); AudioSharingUtils.postOnMainThread(mContext, () -> { if (mPreferenceGroup != null) { mPreferenceGroup.removePreference(volumePref); mPreferenceGroup.removePreference(preference); if (mPreferenceGroup.getPreferenceCount() == 0) { mPreferenceGroup.setVisible(false); } Loading
tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDeviceVolumeGroupControllerTest.java +25 −0 Original line number Diff line number Diff line Loading @@ -133,6 +133,7 @@ public class AudioSharingDeviceVolumeGroupControllerTest { @Mock private AudioSharingDeviceVolumePreference mPreference1; @Mock private AudioSharingDeviceVolumePreference mPreference2; @Mock private AudioSharingDeviceVolumeSliderPreference mSliderPreference1; @Mock private AudioSharingDeviceVolumeSliderPreference mSliderPreference2; @Mock private AudioManager mAudioManager; @Mock private PreferenceManager mPreferenceManager; @Mock private ContentResolver mContentResolver; Loading Loading @@ -188,6 +189,7 @@ public class AudioSharingDeviceVolumeGroupControllerTest { doReturn(mDevice2).when(mCachedDevice2).getDevice(); doReturn(ImmutableSet.of()).when(mCachedDevice2).getMemberDevice(); when(mPreference2.getCachedDevice()).thenReturn(mCachedDevice2); when(mSliderPreference2.getCachedDevice()).thenReturn(mCachedDevice2); doNothing().when(mDevicePreferenceCallback).onDeviceAdded(any(Preference.class)); doNothing().when(mDevicePreferenceCallback).onDeviceRemoved(any(Preference.class)); when(mScreen.getContext()).thenReturn(mContext); Loading Loading @@ -484,6 +486,29 @@ public class AudioSharingDeviceVolumeGroupControllerTest { assertThat(mPreferenceGroup.isVisible()).isFalse(); } @Test @EnableFlags(com.android.settings.flags.Flags.FLAG_ENABLE_BLUETOOTH_SETTINGS_EXPRESSIVE_DESIGN) public void onDeviceRemoved_enableExpressiveDesign_notLastDevice_isVisible() { mPreferenceGroup.addPreference(mSliderPreference2); mPreferenceGroup.addPreference(mSliderPreference1); mController.setPreferenceGroup(mPreferenceGroup); mController.onDeviceRemoved(mSliderPreference1); verify(mPreferenceGroup, never()).setVisible(false); assertThat(mPreferenceGroup.isVisible()).isTrue(); } @Test @EnableFlags(com.android.settings.flags.Flags.FLAG_ENABLE_BLUETOOTH_SETTINGS_EXPRESSIVE_DESIGN) public void onDeviceRemoved_enableExpressiveDesign_lastDevice_updateVisibility() { mPreferenceGroup.addPreference(mSliderPreference1); mController.setPreferenceGroup(mPreferenceGroup); mController.onDeviceRemoved(mSliderPreference1); shadowOf(Looper.getMainLooper()).idle(); verify(mPreferenceGroup).setVisible(false); assertThat(mPreferenceGroup.isVisible()).isFalse(); } @Test @EnableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING) public void updateVisibility_emptyPreferenceGroup_doNothing() { Loading