From 713efe93344a70a017d4ef53d3f57a07dc6bb283 Mon Sep 17 00:00:00 2001 From: Angela Wang Date: Mon, 13 Jan 2025 08:59:08 +0000 Subject: [PATCH] Show ambient volume contrl only for hearing devices Flag: EXEMPT bugfix Bug: 388156028 Test: atest BluetoothDetailsAmbientVolumePreferenceControllerTest Change-Id: Ia38fd90f798dec9a46366ca15e358b42f7d7fe70 --- ...ailsAmbientVolumePreferenceController.java | 2 +- ...AmbientVolumePreferenceControllerTest.java | 42 ++++++++++++------- 2 files changed, 28 insertions(+), 16 deletions(-) diff --git a/src/com/android/settings/bluetooth/BluetoothDetailsAmbientVolumePreferenceController.java b/src/com/android/settings/bluetooth/BluetoothDetailsAmbientVolumePreferenceController.java index 4b0b5d4d309..defa7e9326d 100644 --- a/src/com/android/settings/bluetooth/BluetoothDetailsAmbientVolumePreferenceController.java +++ b/src/com/android/settings/bluetooth/BluetoothDetailsAmbientVolumePreferenceController.java @@ -129,7 +129,7 @@ public class BluetoothDetailsAmbientVolumePreferenceController extends Bluetooth @Override public boolean isAvailable() { - return mCachedDevice.getProfiles().stream().anyMatch( + return mCachedDevice.isHearingDevice() && mCachedDevice.getProfiles().stream().anyMatch( profile -> profile instanceof VolumeControlProfile); } diff --git a/tests/robotests/src/com/android/settings/bluetooth/BluetoothDetailsAmbientVolumePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/bluetooth/BluetoothDetailsAmbientVolumePreferenceControllerTest.java index fb10d09f350..4c20a8888bc 100644 --- a/tests/robotests/src/com/android/settings/bluetooth/BluetoothDetailsAmbientVolumePreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/bluetooth/BluetoothDetailsAmbientVolumePreferenceControllerTest.java @@ -21,15 +21,11 @@ import static com.android.settings.bluetooth.BluetoothDetailsHearingDeviceContro import static com.google.common.truth.Truth.assertThat; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.ArgumentMatchers.anyLong; import static org.mockito.Mockito.never; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; -import android.os.Handler; - import androidx.preference.PreferenceCategory; import com.android.settings.testutils.shadow.ShadowThreadUtils; @@ -70,8 +66,6 @@ public class BluetoothDetailsAmbientVolumePreferenceControllerTest extends @Mock private VolumeControlProfile mVolumeControlProfile; @Mock - private Handler mTestHandler; - @Mock private AmbientVolumeUiController mUiController; private BluetoothDetailsAmbientVolumePreferenceController mController; @@ -91,13 +85,6 @@ public class BluetoothDetailsAmbientVolumePreferenceControllerTest extends PreferenceCategory deviceControls = new PreferenceCategory(mContext); deviceControls.setKey(KEY_HEARING_DEVICE_GROUP); mScreen.addPreference(deviceControls); - - when(mContext.getMainThreadHandler()).thenReturn(mTestHandler); - when(mTestHandler.postDelayed(any(Runnable.class), anyLong())).thenAnswer( - invocationOnMock -> { - invocationOnMock.getArgument(0, Runnable.class).run(); - return null; - }); } @Test @@ -109,7 +96,31 @@ public class BluetoothDetailsAmbientVolumePreferenceControllerTest extends } @Test - public void refresh_deviceNotSupportVcp_verifyUiControllerNoRefresh() { + public void isAvailable_notHearingDevice_returnFalse() { + when(mCachedDevice.isHearingDevice()).thenReturn(false); + + assertThat(mController.isAvailable()).isFalse(); + } + + @Test + public void isAvailable_isHearingDeviceAndNotSupportVcp_returnFalse() { + when(mCachedDevice.isHearingDevice()).thenReturn(true); + when(mCachedDevice.getProfiles()).thenReturn(List.of()); + + assertThat(mController.isAvailable()).isFalse(); + } + + @Test + public void isAvailable_isHearingDeviceAndSupportVcp_returnTrue() { + when(mCachedDevice.isHearingDevice()).thenReturn(true); + when(mCachedDevice.getProfiles()).thenReturn(List.of(mVolumeControlProfile)); + + assertThat(mController.isAvailable()).isTrue(); + } + + @Test + public void refresh_isHearingDeviceAndNotSupportVcp_verifyUiControllerNoRefresh() { + when(mCachedDevice.isHearingDevice()).thenReturn(true); when(mCachedDevice.getProfiles()).thenReturn(List.of()); mController.refresh(); @@ -118,7 +129,8 @@ public class BluetoothDetailsAmbientVolumePreferenceControllerTest extends } @Test - public void refresh_deviceSupportVcp_verifyUiControllerRefresh() { + public void refresh_isHearingDeviceAndSupportVcp_verifyUiControllerRefresh() { + when(mCachedDevice.isHearingDevice()).thenReturn(true); when(mCachedDevice.getProfiles()).thenReturn(List.of(mVolumeControlProfile)); mController.refresh();