Merge "Disable the spatializer options for device categories" into main
This commit is contained in:
@@ -16,6 +16,9 @@
|
||||
|
||||
package com.android.settings.bluetooth;
|
||||
|
||||
import static android.media.Spatializer.SPATIALIZER_IMMERSIVE_LEVEL_MULTICHANNEL;
|
||||
import static android.media.Spatializer.SPATIALIZER_IMMERSIVE_LEVEL_NONE;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
|
||||
import static org.mockito.Mockito.spy;
|
||||
@@ -62,6 +65,8 @@ public class BluetoothDetailsSpatialAudioControllerTest extends BluetoothDetails
|
||||
@Mock
|
||||
private BluetoothDevice mBluetoothDevice;
|
||||
|
||||
private AudioDeviceAttributes mAvailableDevice;
|
||||
|
||||
private BluetoothDetailsSpatialAudioController mController;
|
||||
private SwitchPreference mSpatialAudioPref;
|
||||
private SwitchPreference mHeadTrackingPref;
|
||||
@@ -86,94 +91,32 @@ public class BluetoothDetailsSpatialAudioControllerTest extends BluetoothDetails
|
||||
|
||||
when(mProfilesContainer.findPreference(KEY_SPATIAL_AUDIO)).thenReturn(mSpatialAudioPref);
|
||||
when(mProfilesContainer.findPreference(KEY_HEAD_TRACKING)).thenReturn(mHeadTrackingPref);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void isAvailable_spatialAudioSupportA2dpDevice_returnsTrue() {
|
||||
AudioDeviceAttributes a2dpDevice = new AudioDeviceAttributes(
|
||||
mAvailableDevice = new AudioDeviceAttributes(
|
||||
AudioDeviceAttributes.ROLE_OUTPUT,
|
||||
AudioDeviceInfo.TYPE_BLUETOOTH_A2DP,
|
||||
MAC_ADDRESS);
|
||||
when(mSpatializer.isAvailableForDevice(a2dpDevice)).thenReturn(true);
|
||||
|
||||
mController.setAvailableDevice(a2dpDevice);
|
||||
|
||||
assertThat(mController.isAvailable()).isTrue();
|
||||
assertThat(mController.mAudioDevice.getType())
|
||||
.isEqualTo(AudioDeviceInfo.TYPE_BLUETOOTH_A2DP);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void isAvailable_spatialAudioSupportBleHeadsetDevice_returnsTrue() {
|
||||
AudioDeviceAttributes bleHeadsetDevice = new AudioDeviceAttributes(
|
||||
AudioDeviceAttributes.ROLE_OUTPUT,
|
||||
AudioDeviceInfo.TYPE_BLE_HEADSET,
|
||||
MAC_ADDRESS);
|
||||
when(mSpatializer.isAvailableForDevice(bleHeadsetDevice)).thenReturn(true);
|
||||
|
||||
mController.setAvailableDevice(bleHeadsetDevice);
|
||||
|
||||
assertThat(mController.isAvailable()).isTrue();
|
||||
assertThat(mController.mAudioDevice.getType())
|
||||
.isEqualTo(AudioDeviceInfo.TYPE_BLE_HEADSET);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void isAvailable_spatialAudioSupportBleSpeakerDevice_returnsTrue() {
|
||||
AudioDeviceAttributes bleSpeakerDevice = new AudioDeviceAttributes(
|
||||
AudioDeviceAttributes.ROLE_OUTPUT,
|
||||
AudioDeviceInfo.TYPE_BLE_SPEAKER,
|
||||
MAC_ADDRESS);
|
||||
when(mSpatializer.isAvailableForDevice(bleSpeakerDevice)).thenReturn(true);
|
||||
|
||||
mController.setAvailableDevice(bleSpeakerDevice);
|
||||
|
||||
assertThat(mController.isAvailable()).isTrue();
|
||||
assertThat(mController.mAudioDevice.getType())
|
||||
.isEqualTo(AudioDeviceInfo.TYPE_BLE_SPEAKER);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void isAvailable_spatialAudioSupportBleBroadcastDevice_returnsTrue() {
|
||||
AudioDeviceAttributes bleBroadcastDevice = new AudioDeviceAttributes(
|
||||
AudioDeviceAttributes.ROLE_OUTPUT,
|
||||
AudioDeviceInfo.TYPE_BLE_BROADCAST,
|
||||
MAC_ADDRESS);
|
||||
when(mSpatializer.isAvailableForDevice(bleBroadcastDevice)).thenReturn(true);
|
||||
|
||||
mController.setAvailableDevice(bleBroadcastDevice);
|
||||
|
||||
assertThat(mController.isAvailable()).isTrue();
|
||||
assertThat(mController.mAudioDevice.getType())
|
||||
.isEqualTo(AudioDeviceInfo.TYPE_BLE_BROADCAST);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void isAvailable_spatialAudioSupportHearingAidDevice_returnsTrue() {
|
||||
AudioDeviceAttributes hearingAidDevice = new AudioDeviceAttributes(
|
||||
AudioDeviceAttributes.ROLE_OUTPUT,
|
||||
AudioDeviceInfo.TYPE_HEARING_AID,
|
||||
MAC_ADDRESS);
|
||||
when(mSpatializer.isAvailableForDevice(hearingAidDevice)).thenReturn(true);
|
||||
|
||||
mController.setAvailableDevice(hearingAidDevice);
|
||||
|
||||
assertThat(mController.isAvailable()).isTrue();
|
||||
assertThat(mController.mAudioDevice.getType())
|
||||
.isEqualTo(AudioDeviceInfo.TYPE_HEARING_AID);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void isAvailable_spatialAudioNotSupported_returnsFalse() {
|
||||
public void isAvailable_forSpatializerWithLevelNone_returnsFalse() {
|
||||
when(mSpatializer.getImmersiveAudioLevel()).thenReturn(SPATIALIZER_IMMERSIVE_LEVEL_NONE);
|
||||
assertThat(mController.isAvailable()).isFalse();
|
||||
assertThat(mController.mAudioDevice.getType())
|
||||
.isEqualTo(AudioDeviceInfo.TYPE_HEARING_AID);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void isAvailable_forSpatializerWithLevelNotNone_returnsTrue() {
|
||||
when(mSpatializer.getImmersiveAudioLevel()).thenReturn(
|
||||
SPATIALIZER_IMMERSIVE_LEVEL_MULTICHANNEL);
|
||||
assertThat(mController.isAvailable()).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void refresh_spatialAudioIsTurnedOn_checksSpatialAudioPreference() {
|
||||
List<AudioDeviceAttributes> compatibleAudioDevices = new ArrayList<>();
|
||||
mController.setAvailableDevice(mAvailableDevice);
|
||||
compatibleAudioDevices.add(mController.mAudioDevice);
|
||||
when(mSpatializer.isAvailableForDevice(mController.mAudioDevice)).thenReturn(true);
|
||||
when(mSpatializer.getCompatibleAudioDevices()).thenReturn(compatibleAudioDevices);
|
||||
|
||||
mController.refresh();
|
||||
@@ -207,13 +150,14 @@ public class BluetoothDetailsSpatialAudioControllerTest extends BluetoothDetails
|
||||
public void
|
||||
refresh_spatialAudioOnAndHeadTrackingIsNotAvailable_hidesHeadTrackingPreference() {
|
||||
List<AudioDeviceAttributes> compatibleAudioDevices = new ArrayList<>();
|
||||
mController.setAvailableDevice(mAvailableDevice);
|
||||
compatibleAudioDevices.add(mController.mAudioDevice);
|
||||
when(mSpatializer.getCompatibleAudioDevices()).thenReturn(compatibleAudioDevices);
|
||||
when(mSpatializer.hasHeadTracker(mController.mAudioDevice)).thenReturn(false);
|
||||
|
||||
mController.refresh();
|
||||
|
||||
assertThat(mHeadTrackingPref.isVisible()).isFalse();
|
||||
verify(mProfilesContainer).removePreference(mHeadTrackingPref);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -223,14 +167,16 @@ public class BluetoothDetailsSpatialAudioControllerTest extends BluetoothDetails
|
||||
|
||||
mController.refresh();
|
||||
|
||||
assertThat(mHeadTrackingPref.isVisible()).isFalse();
|
||||
verify(mProfilesContainer).removePreference(mHeadTrackingPref);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void refresh_headTrackingIsTurnedOn_checksHeadTrackingPreference() {
|
||||
List<AudioDeviceAttributes> compatibleAudioDevices = new ArrayList<>();
|
||||
mController.setAvailableDevice(mAvailableDevice);
|
||||
compatibleAudioDevices.add(mController.mAudioDevice);
|
||||
when(mSpatializer.getCompatibleAudioDevices()).thenReturn(compatibleAudioDevices);
|
||||
when(mSpatializer.isAvailableForDevice(mController.mAudioDevice)).thenReturn(true);
|
||||
when(mSpatializer.hasHeadTracker(mController.mAudioDevice)).thenReturn(true);
|
||||
when(mSpatializer.isHeadTrackerEnabled(mController.mAudioDevice)).thenReturn(true);
|
||||
|
||||
@@ -242,8 +188,10 @@ public class BluetoothDetailsSpatialAudioControllerTest extends BluetoothDetails
|
||||
@Test
|
||||
public void refresh_headTrackingIsTurnedOff_unchecksHeadTrackingPreference() {
|
||||
List<AudioDeviceAttributes> compatibleAudioDevices = new ArrayList<>();
|
||||
mController.setAvailableDevice(mAvailableDevice);
|
||||
compatibleAudioDevices.add(mController.mAudioDevice);
|
||||
when(mSpatializer.getCompatibleAudioDevices()).thenReturn(compatibleAudioDevices);
|
||||
when(mSpatializer.isAvailableForDevice(mController.mAudioDevice)).thenReturn(true);
|
||||
when(mSpatializer.hasHeadTracker(mController.mAudioDevice)).thenReturn(true);
|
||||
when(mSpatializer.isHeadTrackerEnabled(mController.mAudioDevice)).thenReturn(false);
|
||||
|
||||
@@ -254,6 +202,7 @@ public class BluetoothDetailsSpatialAudioControllerTest extends BluetoothDetails
|
||||
|
||||
@Test
|
||||
public void turnedOnSpatialAudio_invokesAddCompatibleAudioDevice() {
|
||||
mController.setAvailableDevice(mAvailableDevice);
|
||||
mSpatialAudioPref.setChecked(true);
|
||||
mController.onPreferenceClick(mSpatialAudioPref);
|
||||
verify(mSpatializer).addCompatibleAudioDevice(mController.mAudioDevice);
|
||||
@@ -261,6 +210,7 @@ public class BluetoothDetailsSpatialAudioControllerTest extends BluetoothDetails
|
||||
|
||||
@Test
|
||||
public void turnedOffSpatialAudio_invokesRemoveCompatibleAudioDevice() {
|
||||
mController.setAvailableDevice(mAvailableDevice);
|
||||
mSpatialAudioPref.setChecked(false);
|
||||
mController.onPreferenceClick(mSpatialAudioPref);
|
||||
verify(mSpatializer).removeCompatibleAudioDevice(mController.mAudioDevice);
|
||||
@@ -268,6 +218,7 @@ public class BluetoothDetailsSpatialAudioControllerTest extends BluetoothDetails
|
||||
|
||||
@Test
|
||||
public void turnedOnHeadTracking_invokesSetHeadTrackerEnabled_setsTrue() {
|
||||
mController.setAvailableDevice(mAvailableDevice);
|
||||
mHeadTrackingPref.setChecked(true);
|
||||
mController.onPreferenceClick(mHeadTrackingPref);
|
||||
verify(mSpatializer).setHeadTrackerEnabled(true, mController.mAudioDevice);
|
||||
@@ -275,6 +226,7 @@ public class BluetoothDetailsSpatialAudioControllerTest extends BluetoothDetails
|
||||
|
||||
@Test
|
||||
public void turnedOffHeadTracking_invokesSetHeadTrackerEnabled_setsFalse() {
|
||||
mController.setAvailableDevice(mAvailableDevice);
|
||||
mHeadTrackingPref.setChecked(false);
|
||||
mController.onPreferenceClick(mHeadTrackingPref);
|
||||
verify(mSpatializer).setHeadTrackerEnabled(false, mController.mAudioDevice);
|
||||
|
Reference in New Issue
Block a user