From 9692c59d3a9300cf53c5277a51a290ea45da70d7 Mon Sep 17 00:00:00 2001 From: Etienne Ruffieux Date: Tue, 1 Feb 2022 17:08:15 +0000 Subject: [PATCH] Replacing getActiveDevice by btAdapter.getActiveDevices() BluetoothProfile.getActiveDevice() is hidden, packages should call BluetoothAdapter.getActiveDevices(profile) instead. Tag: #feature Bug: 200202780 Test: build Change-Id: Id18658de82a7e8292942951a3832a36465a69da3 --- ...ractBluetoothA2dpPreferenceController.java | 34 ++++++++++++++----- ...ctBluetoothDialogPreferenceController.java | 8 ++--- ...AbstractBluetoothPreferenceController.java | 21 ++++++++++++ ...etoothCodecDialogPreferenceController.java | 4 +-- .../BluetoothHDAudioPreferenceController.java | 4 +-- ...BluetoothA2dpPreferenceControllerTest.java | 1 + ...uetoothDialogPreferenceControllerTest.java | 8 ++++- ...rSampleDialogPreferenceControllerTest.java | 8 ++++- ...nelModeDialogPreferenceControllerTest.java | 8 ++++- ...thCodecDialogPreferenceControllerTest.java | 7 +++- ...etoothHDAudioPreferenceControllerTest.java | 30 ++++++++++++---- ...QualityDialogPreferenceControllerTest.java | 8 ++++- ...pleRateDialogPreferenceControllerTest.java | 8 ++++- 13 files changed, 119 insertions(+), 30 deletions(-) diff --git a/src/com/android/settings/development/AbstractBluetoothA2dpPreferenceController.java b/src/com/android/settings/development/AbstractBluetoothA2dpPreferenceController.java index 88dda29612a..75145779ade 100644 --- a/src/com/android/settings/development/AbstractBluetoothA2dpPreferenceController.java +++ b/src/com/android/settings/development/AbstractBluetoothA2dpPreferenceController.java @@ -17,9 +17,12 @@ package com.android.settings.development; import android.bluetooth.BluetoothA2dp; +import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothCodecConfig; import android.bluetooth.BluetoothCodecStatus; import android.bluetooth.BluetoothDevice; +import android.bluetooth.BluetoothManager; +import android.bluetooth.BluetoothProfile; import android.content.Context; import androidx.annotation.VisibleForTesting; @@ -34,6 +37,8 @@ import com.android.settingslib.core.lifecycle.LifecycleObserver; import com.android.settingslib.core.lifecycle.events.OnDestroy; import com.android.settingslib.development.DeveloperOptionsPreferenceController; +import java.util.List; + public abstract class AbstractBluetoothA2dpPreferenceController extends DeveloperOptionsPreferenceController implements Preference.OnPreferenceChangeListener, PreferenceControllerMixin, BluetoothServiceConnectionListener, LifecycleObserver, @@ -48,11 +53,15 @@ public abstract class AbstractBluetoothA2dpPreferenceController extends private final String[] mListValues; private final String[] mListSummaries; + @VisibleForTesting + BluetoothAdapter mBluetoothAdapter; + public AbstractBluetoothA2dpPreferenceController(Context context, Lifecycle lifecycle, BluetoothA2dpConfigStore store) { super(context); mBluetoothA2dpConfigStore = store; + mBluetoothAdapter = context.getSystemService(BluetoothManager.class).getAdapter(); mListValues = getListValues(); mListSummaries = getListSummaries(); @@ -82,13 +91,11 @@ public abstract class AbstractBluetoothA2dpPreferenceController extends final BluetoothCodecConfig codecConfig = mBluetoothA2dpConfigStore.createCodecConfig(); synchronized (mBluetoothA2dpConfigStore) { - if (mBluetoothA2dp != null) { - BluetoothDevice activeDevice = mBluetoothA2dp.getActiveDevice(); - if (activeDevice == null) { - return false; - } - setCodecConfigPreference(activeDevice, codecConfig); + BluetoothDevice activeDevice = getA2dpActiveDevice(); + if (activeDevice == null) { + return false; } + setCodecConfigPreference(activeDevice, codecConfig); } // Because the setting is not persisted into permanent storage, we cannot call update state // here to update the preference. @@ -106,7 +113,7 @@ public abstract class AbstractBluetoothA2dpPreferenceController extends @Override public void updateState(Preference preference) { - BluetoothDevice activeDevice = mBluetoothA2dp.getActiveDevice(); + BluetoothDevice activeDevice = getA2dpActiveDevice(); if (activeDevice == null || getCodecConfig(activeDevice) == null || mPreference == null) { return; } @@ -184,7 +191,7 @@ public abstract class AbstractBluetoothA2dpPreferenceController extends void setCodecConfigPreference(BluetoothDevice device, BluetoothCodecConfig config) { BluetoothDevice bluetoothDevice = - (device != null) ? device : mBluetoothA2dp.getActiveDevice(); + (device != null) ? device : getA2dpActiveDevice(); if (bluetoothDevice == null) { return; } @@ -195,7 +202,7 @@ public abstract class AbstractBluetoothA2dpPreferenceController extends BluetoothCodecConfig getCodecConfig(BluetoothDevice device) { if (mBluetoothA2dp != null) { BluetoothDevice bluetoothDevice = - (device != null) ? device : mBluetoothA2dp.getActiveDevice(); + (device != null) ? device : getA2dpActiveDevice(); if (bluetoothDevice == null) { return null; } @@ -206,4 +213,13 @@ public abstract class AbstractBluetoothA2dpPreferenceController extends } return null; } + + private BluetoothDevice getA2dpActiveDevice() { + if (mBluetoothAdapter == null) { + return null; + } + List activeDevices = + mBluetoothAdapter.getActiveDevices(BluetoothProfile.A2DP); + return (activeDevices.size() > 0) ? activeDevices.get(0) : null; + } } diff --git a/src/com/android/settings/development/bluetooth/AbstractBluetoothDialogPreferenceController.java b/src/com/android/settings/development/bluetooth/AbstractBluetoothDialogPreferenceController.java index 1af6e969001..62bcffbfc28 100644 --- a/src/com/android/settings/development/bluetooth/AbstractBluetoothDialogPreferenceController.java +++ b/src/com/android/settings/development/bluetooth/AbstractBluetoothDialogPreferenceController.java @@ -84,7 +84,7 @@ public abstract class AbstractBluetoothDialogPreferenceController extends } writeConfigurationValues(index); final BluetoothCodecConfig codecConfig = mBluetoothA2dpConfigStore.createCodecConfig(); - BluetoothDevice activeDevice = mBluetoothA2dp.getActiveDevice(); + BluetoothDevice activeDevice = getA2dpActiveDevice(); if (activeDevice != null) { bluetoothA2dp.setCodecConfigPreference(activeDevice, codecConfig); } @@ -153,7 +153,7 @@ public abstract class AbstractBluetoothDialogPreferenceController extends if (bluetoothA2dp == null) { return null; } - BluetoothDevice activeDevice = bluetoothA2dp.getActiveDevice(); + BluetoothDevice activeDevice = getA2dpActiveDevice(); if (activeDevice == null) { Log.d(TAG, "Unable to get current codec config. No active device."); return null; @@ -178,7 +178,7 @@ public abstract class AbstractBluetoothDialogPreferenceController extends return null; } BluetoothDevice bluetoothDevice = - (device != null) ? device : bluetoothA2dp.getActiveDevice(); + (device != null) ? device : getA2dpActiveDevice(); if (bluetoothDevice == null) { return null; } @@ -195,7 +195,7 @@ public abstract class AbstractBluetoothDialogPreferenceController extends * @return {@link BluetoothCodecConfig}. */ protected BluetoothCodecConfig getSelectableByCodecType(int codecTypeValue) { - BluetoothDevice activeDevice = mBluetoothA2dp.getActiveDevice(); + BluetoothDevice activeDevice = getA2dpActiveDevice(); if (activeDevice == null) { Log.d(TAG, "Unable to get selectable config. No active device."); return null; diff --git a/src/com/android/settings/development/bluetooth/AbstractBluetoothPreferenceController.java b/src/com/android/settings/development/bluetooth/AbstractBluetoothPreferenceController.java index 6735115c351..d3fab674a92 100644 --- a/src/com/android/settings/development/bluetooth/AbstractBluetoothPreferenceController.java +++ b/src/com/android/settings/development/bluetooth/AbstractBluetoothPreferenceController.java @@ -17,8 +17,14 @@ package com.android.settings.development.bluetooth; import android.bluetooth.BluetoothA2dp; +import android.bluetooth.BluetoothAdapter; +import android.bluetooth.BluetoothDevice; +import android.bluetooth.BluetoothManager; +import android.bluetooth.BluetoothProfile; import android.content.Context; +import androidx.annotation.VisibleForTesting; + import com.android.settings.core.PreferenceControllerMixin; import com.android.settings.development.BluetoothA2dpConfigStore; import com.android.settings.development.BluetoothServiceConnectionListener; @@ -27,6 +33,8 @@ import com.android.settingslib.core.lifecycle.LifecycleObserver; import com.android.settingslib.core.lifecycle.events.OnDestroy; import com.android.settingslib.development.DeveloperOptionsPreferenceController; +import java.util.List; + /** * Abstract class for Bluetooth A2DP config controller in developer option. */ @@ -36,12 +44,16 @@ public abstract class AbstractBluetoothPreferenceController extends protected volatile BluetoothA2dp mBluetoothA2dp; + @VisibleForTesting + BluetoothAdapter mBluetoothAdapter; + public AbstractBluetoothPreferenceController(Context context, Lifecycle lifecycle, BluetoothA2dpConfigStore store) { super(context); if (lifecycle != null) { lifecycle.addObserver(this); } + mBluetoothAdapter = context.getSystemService(BluetoothManager.class).getAdapter(); } @Override @@ -82,4 +94,13 @@ public abstract class AbstractBluetoothPreferenceController extends */ void onBluetoothHDAudioEnabled(boolean enabled); } + + protected BluetoothDevice getA2dpActiveDevice() { + if (mBluetoothAdapter == null) { + return null; + } + List activeDevices = + mBluetoothAdapter.getActiveDevices(BluetoothProfile.A2DP); + return (activeDevices.size() > 0) ? activeDevices.get(0) : null; + } } diff --git a/src/com/android/settings/development/bluetooth/BluetoothCodecDialogPreferenceController.java b/src/com/android/settings/development/bluetooth/BluetoothCodecDialogPreferenceController.java index 5f916f38d1a..a65a1ba8cd4 100644 --- a/src/com/android/settings/development/bluetooth/BluetoothCodecDialogPreferenceController.java +++ b/src/com/android/settings/development/bluetooth/BluetoothCodecDialogPreferenceController.java @@ -69,7 +69,7 @@ public class BluetoothCodecDialogPreferenceController extends if (bluetoothA2dp == null) { return index; } - final BluetoothDevice activeDevice = bluetoothA2dp.getActiveDevice(); + final BluetoothDevice activeDevice = getA2dpActiveDevice(); if (activeDevice == null) { Log.d(TAG, "Unable to get selectable index. No Active Bluetooth device"); return index; @@ -93,7 +93,7 @@ public class BluetoothCodecDialogPreferenceController extends int codecPriorityValue = BluetoothCodecConfig.CODEC_PRIORITY_DEFAULT; switch (index) { case 0: - final BluetoothDevice activeDevice = mBluetoothA2dp.getActiveDevice(); + final BluetoothDevice activeDevice = getA2dpActiveDevice(); codecTypeValue = getHighestCodec(mBluetoothA2dp, activeDevice, getSelectableConfigs(activeDevice)); codecPriorityValue = BluetoothCodecConfig.CODEC_PRIORITY_HIGHEST; diff --git a/src/com/android/settings/development/bluetooth/BluetoothHDAudioPreferenceController.java b/src/com/android/settings/development/bluetooth/BluetoothHDAudioPreferenceController.java index d4ca4e57952..8092194762f 100644 --- a/src/com/android/settings/development/bluetooth/BluetoothHDAudioPreferenceController.java +++ b/src/com/android/settings/development/bluetooth/BluetoothHDAudioPreferenceController.java @@ -52,7 +52,7 @@ public class BluetoothHDAudioPreferenceController extends AbstractBluetoothPrefe mPreference.setEnabled(false); return; } - final BluetoothDevice activeDevice = bluetoothA2dp.getActiveDevice(); + final BluetoothDevice activeDevice = getA2dpActiveDevice(); if (activeDevice == null) { Log.e(TAG, "Active device is null. To disable HD audio button"); mPreference.setEnabled(false); @@ -84,7 +84,7 @@ public class BluetoothHDAudioPreferenceController extends AbstractBluetoothPrefe final int prefValue = enabled ? BluetoothA2dp.OPTIONAL_CODECS_PREF_ENABLED : BluetoothA2dp.OPTIONAL_CODECS_PREF_DISABLED; - BluetoothDevice activeDevice = bluetoothA2dp.getActiveDevice(); + BluetoothDevice activeDevice = getA2dpActiveDevice(); if (activeDevice == null) { mPreference.setEnabled(false); return true; diff --git a/tests/robotests/src/com/android/settings/development/AbstractBluetoothA2dpPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/development/AbstractBluetoothA2dpPreferenceControllerTest.java index 42764076415..783c2edb0f9 100644 --- a/tests/robotests/src/com/android/settings/development/AbstractBluetoothA2dpPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/development/AbstractBluetoothA2dpPreferenceControllerTest.java @@ -73,6 +73,7 @@ public class AbstractBluetoothA2dpPreferenceControllerTest { mLifecycle = new Lifecycle(mLifecycleOwner); mController = spy(new AbstractBluetoothA2dpPreferenceControllerImpl(mContext, mLifecycle, mBluetoothA2dpConfigStore)); + mController.mBluetoothAdapter = null; doReturn(mBluetoothCodecConfig).when(mController).getCodecConfig(null); doNothing().when(mController).setCodecConfigPreference(any(), any()); when(mBluetoothA2dpConfigStore.createCodecConfig()).thenReturn(mBluetoothCodecConfig); diff --git a/tests/robotests/src/com/android/settings/development/bluetooth/AbstractBluetoothDialogPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/development/bluetooth/AbstractBluetoothDialogPreferenceControllerTest.java index c1648bf4fb0..d16a5079877 100644 --- a/tests/robotests/src/com/android/settings/development/bluetooth/AbstractBluetoothDialogPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/development/bluetooth/AbstractBluetoothDialogPreferenceControllerTest.java @@ -20,6 +20,7 @@ import static android.bluetooth.BluetoothCodecConfig.CODEC_PRIORITY_HIGHEST; import static com.google.common.truth.Truth.assertThat; +import static org.mockito.Mockito.eq; import static org.mockito.Mockito.never; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; @@ -30,6 +31,7 @@ import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothCodecConfig; import android.bluetooth.BluetoothCodecStatus; import android.bluetooth.BluetoothDevice; +import android.bluetooth.BluetoothProfile; import android.content.Context; import androidx.lifecycle.LifecycleOwner; @@ -59,6 +61,8 @@ public class AbstractBluetoothDialogPreferenceControllerTest { @Mock private BluetoothA2dp mBluetoothA2dp; @Mock + private BluetoothAdapter mBluetoothAdapter; + @Mock private PreferenceScreen mScreen; private AbstractBluetoothDialogPreferenceController mController; @@ -84,6 +88,7 @@ public class AbstractBluetoothDialogPreferenceControllerTest { mActiveDevice = BluetoothAdapter.getDefaultAdapter().getRemoteDevice(DEVICE_ADDRESS); mController = spy(new AbstractBluetoothDialogPreferenceControllerImpl(mContext, mLifecycle, mBluetoothA2dpConfigStore)); + mController.mBluetoothAdapter = mBluetoothAdapter; mPreference = spy(new BaseBluetoothDialogPreferenceImpl(mContext)); mCodecConfigAAC = new BluetoothCodecConfig.Builder() @@ -99,7 +104,8 @@ public class AbstractBluetoothDialogPreferenceControllerTest { mController.displayPreference(mScreen); mCurrentConfig = mController.getCurrentConfigIndex(); when(mPreference.generateSummary(mCurrentConfig)).thenReturn(SUMMARY); - when(mBluetoothA2dp.getActiveDevice()).thenReturn(mActiveDevice); + when(mBluetoothAdapter.getActiveDevices(eq(BluetoothProfile.A2DP))) + .thenReturn(Arrays.asList(mActiveDevice)); } @Test diff --git a/tests/robotests/src/com/android/settings/development/bluetooth/BluetoothBitPerSampleDialogPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/development/bluetooth/BluetoothBitPerSampleDialogPreferenceControllerTest.java index a042ebe1e6b..5a24c8e5adf 100644 --- a/tests/robotests/src/com/android/settings/development/bluetooth/BluetoothBitPerSampleDialogPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/development/bluetooth/BluetoothBitPerSampleDialogPreferenceControllerTest.java @@ -18,6 +18,7 @@ package com.android.settings.development.bluetooth; import static com.google.common.truth.Truth.assertThat; +import static org.mockito.Mockito.eq; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -27,6 +28,7 @@ import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothCodecConfig; import android.bluetooth.BluetoothCodecStatus; import android.bluetooth.BluetoothDevice; +import android.bluetooth.BluetoothProfile; import android.content.Context; import androidx.lifecycle.LifecycleOwner; @@ -55,6 +57,8 @@ public class BluetoothBitPerSampleDialogPreferenceControllerTest { @Mock private BluetoothA2dp mBluetoothA2dp; @Mock + private BluetoothAdapter mBluetoothAdapter; + @Mock private PreferenceScreen mScreen; private BluetoothBitPerSampleDialogPreferenceController mController; @@ -81,6 +85,7 @@ public class BluetoothBitPerSampleDialogPreferenceControllerTest { mPreference = new BluetoothBitPerSampleDialogPreference(mContext); when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mPreference); mController.displayPreference(mScreen); + mController.mBluetoothAdapter = mBluetoothAdapter; mCodecConfigAAC = new BluetoothCodecConfig.Builder() .setCodecType(BluetoothCodecConfig.SOURCE_CODEC_TYPE_AAC) .setBitsPerSample(BluetoothCodecConfig.BITS_PER_SAMPLE_16 @@ -90,7 +95,8 @@ public class BluetoothBitPerSampleDialogPreferenceControllerTest { .setCodecType(BluetoothCodecConfig.SOURCE_CODEC_TYPE_SBC) .setBitsPerSample(BluetoothCodecConfig.BITS_PER_SAMPLE_24) .build(); - when(mBluetoothA2dp.getActiveDevice()).thenReturn(mActiveDevice); + when(mBluetoothAdapter.getActiveDevices(eq(BluetoothProfile.A2DP))) + .thenReturn(Arrays.asList(mActiveDevice)); } @Test diff --git a/tests/robotests/src/com/android/settings/development/bluetooth/BluetoothChannelModeDialogPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/development/bluetooth/BluetoothChannelModeDialogPreferenceControllerTest.java index 75d8fc4fd01..3d94e2a30d7 100644 --- a/tests/robotests/src/com/android/settings/development/bluetooth/BluetoothChannelModeDialogPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/development/bluetooth/BluetoothChannelModeDialogPreferenceControllerTest.java @@ -18,6 +18,7 @@ package com.android.settings.development.bluetooth; import static com.google.common.truth.Truth.assertThat; +import static org.mockito.Mockito.eq; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -27,6 +28,7 @@ import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothCodecConfig; import android.bluetooth.BluetoothCodecStatus; import android.bluetooth.BluetoothDevice; +import android.bluetooth.BluetoothProfile; import android.content.Context; import androidx.lifecycle.LifecycleOwner; @@ -55,6 +57,8 @@ public class BluetoothChannelModeDialogPreferenceControllerTest { @Mock private BluetoothA2dp mBluetoothA2dp; @Mock + private BluetoothAdapter mBluetoothAdapter; + @Mock private PreferenceScreen mScreen; private BluetoothChannelModeDialogPreferenceController mController; @@ -78,6 +82,7 @@ public class BluetoothChannelModeDialogPreferenceControllerTest { mActiveDevice = BluetoothAdapter.getDefaultAdapter().getRemoteDevice(DEVICE_ADDRESS); mController = new BluetoothChannelModeDialogPreferenceController(mContext, mLifecycle, mBluetoothA2dpConfigStore); + mController.mBluetoothAdapter = mBluetoothAdapter; mPreference = new BluetoothChannelModeDialogPreference(mContext); when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mPreference); mController.displayPreference(mScreen); @@ -90,7 +95,8 @@ public class BluetoothChannelModeDialogPreferenceControllerTest { .setChannelMode(BluetoothCodecConfig.CHANNEL_MODE_MONO | BluetoothCodecConfig.CHANNEL_MODE_STEREO) .build(); - when(mBluetoothA2dp.getActiveDevice()).thenReturn(mActiveDevice); + when(mBluetoothAdapter.getActiveDevices(eq(BluetoothProfile.A2DP))) + .thenReturn(Arrays.asList(mActiveDevice)); } @Test diff --git a/tests/robotests/src/com/android/settings/development/bluetooth/BluetoothCodecDialogPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/development/bluetooth/BluetoothCodecDialogPreferenceControllerTest.java index 3a34aa02903..21111cd028e 100644 --- a/tests/robotests/src/com/android/settings/development/bluetooth/BluetoothCodecDialogPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/development/bluetooth/BluetoothCodecDialogPreferenceControllerTest.java @@ -29,6 +29,7 @@ import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothCodecConfig; import android.bluetooth.BluetoothCodecStatus; import android.bluetooth.BluetoothDevice; +import android.bluetooth.BluetoothProfile; import android.content.Context; import androidx.lifecycle.LifecycleOwner; @@ -56,6 +57,8 @@ public class BluetoothCodecDialogPreferenceControllerTest { @Mock private BluetoothA2dp mBluetoothA2dp; @Mock + private BluetoothAdapter mBluetoothAdapter; + @Mock private PreferenceScreen mScreen; @Mock private AbstractBluetoothPreferenceController.Callback mCallback; @@ -85,6 +88,7 @@ public class BluetoothCodecDialogPreferenceControllerTest { mActiveDevice = BluetoothAdapter.getDefaultAdapter().getRemoteDevice(DEVICE_ADDRESS); mController = new BluetoothCodecDialogPreferenceController(mContext, mLifecycle, mBluetoothA2dpConfigStore, mCallback); + mController.mBluetoothAdapter = mBluetoothAdapter; mPreference = new BluetoothCodecDialogPreference(mContext); when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mPreference); mController.displayPreference(mScreen); @@ -115,7 +119,8 @@ public class BluetoothCodecDialogPreferenceControllerTest { mCodecConfigLDAC = new BluetoothCodecConfig.Builder() .setCodecType(BluetoothCodecConfig.SOURCE_CODEC_TYPE_LDAC) .build(); - when(mBluetoothA2dp.getActiveDevice()).thenReturn(mActiveDevice); + when(mBluetoothAdapter.getActiveDevices(eq(BluetoothProfile.A2DP))) + .thenReturn(Arrays.asList(mActiveDevice)); } @Test diff --git a/tests/robotests/src/com/android/settings/development/bluetooth/BluetoothHDAudioPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/development/bluetooth/BluetoothHDAudioPreferenceControllerTest.java index 60476dec406..72ceddfdb79 100644 --- a/tests/robotests/src/com/android/settings/development/bluetooth/BluetoothHDAudioPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/development/bluetooth/BluetoothHDAudioPreferenceControllerTest.java @@ -18,12 +18,15 @@ package com.android.settings.development.bluetooth; import static com.google.common.truth.Truth.assertThat; +import static org.mockito.Mockito.eq; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.bluetooth.BluetoothA2dp; +import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothDevice; +import android.bluetooth.BluetoothProfile; import android.content.Context; import androidx.lifecycle.LifecycleOwner; @@ -43,6 +46,9 @@ import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.Config; import org.robolectric.shadows.ShadowBluetoothDevice; +import java.util.Arrays; +import java.util.Collections; + @RunWith(RobolectricTestRunner.class) @Config(shadows = {ShadowBluetoothDevice.class}) public class BluetoothHDAudioPreferenceControllerTest { @@ -52,6 +58,8 @@ public class BluetoothHDAudioPreferenceControllerTest { @Mock private BluetoothA2dp mBluetoothA2dp; @Mock + private BluetoothAdapter mBluetoothAdapter; + @Mock private PreferenceScreen mScreen; @Mock private AbstractBluetoothPreferenceController.Callback mCallback; @@ -73,6 +81,7 @@ public class BluetoothHDAudioPreferenceControllerTest { mBluetoothA2dpConfigStore = spy(new BluetoothA2dpConfigStore()); mController = new BluetoothHDAudioPreferenceController(mContext, mLifecycle, mBluetoothA2dpConfigStore, mCallback); + mController.mBluetoothAdapter = mBluetoothAdapter; mPreference = new SwitchPreference(mContext); when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mPreference); mController.displayPreference(mScreen); @@ -81,7 +90,8 @@ public class BluetoothHDAudioPreferenceControllerTest { @Test public void updateState_noActiveDevice_setDisable() { - when(mBluetoothA2dp.getActiveDevice()).thenReturn(null); + when(mBluetoothAdapter.getActiveDevices(eq(BluetoothProfile.A2DP))) + .thenReturn(Collections.emptyList()); mController.onBluetoothServiceConnected(mBluetoothA2dp); mController.updateState(mPreference); @@ -90,7 +100,8 @@ public class BluetoothHDAudioPreferenceControllerTest { @Test public void updateState_codecSupported_setEnable() { - when(mBluetoothA2dp.getActiveDevice()).thenReturn(mActiveDevice); + when(mBluetoothAdapter.getActiveDevices(eq(BluetoothProfile.A2DP))) + .thenReturn(Arrays.asList(mActiveDevice)); when(mBluetoothA2dp.isOptionalCodecsSupported(mActiveDevice)).thenReturn( mBluetoothA2dp.OPTIONAL_CODECS_SUPPORTED); mController.onBluetoothServiceConnected(mBluetoothA2dp); @@ -101,7 +112,8 @@ public class BluetoothHDAudioPreferenceControllerTest { @Test public void updateState_codecNotSupported_setDisable() { - when(mBluetoothA2dp.getActiveDevice()).thenReturn(mActiveDevice); + when(mBluetoothAdapter.getActiveDevices(eq(BluetoothProfile.A2DP))) + .thenReturn(Arrays.asList(mActiveDevice)); when(mBluetoothA2dp.isOptionalCodecsSupported(mActiveDevice)).thenReturn( mBluetoothA2dp.OPTIONAL_CODECS_NOT_SUPPORTED); mController.onBluetoothServiceConnected(mBluetoothA2dp); @@ -112,7 +124,8 @@ public class BluetoothHDAudioPreferenceControllerTest { @Test public void updateState_codecSupportedAndEnabled_checked() { - when(mBluetoothA2dp.getActiveDevice()).thenReturn(mActiveDevice); + when(mBluetoothAdapter.getActiveDevices(eq(BluetoothProfile.A2DP))) + .thenReturn(Arrays.asList(mActiveDevice)); when(mBluetoothA2dp.isOptionalCodecsSupported(mActiveDevice)).thenReturn( mBluetoothA2dp.OPTIONAL_CODECS_SUPPORTED); when(mBluetoothA2dp.isOptionalCodecsEnabled(mActiveDevice)).thenReturn( @@ -125,7 +138,8 @@ public class BluetoothHDAudioPreferenceControllerTest { @Test public void updateState_codecSupportedAndDisabled_notChecked() { - when(mBluetoothA2dp.getActiveDevice()).thenReturn(mActiveDevice); + when(mBluetoothAdapter.getActiveDevices(eq(BluetoothProfile.A2DP))) + .thenReturn(Arrays.asList(mActiveDevice)); when(mBluetoothA2dp.isOptionalCodecsSupported(mActiveDevice)).thenReturn( mBluetoothA2dp.OPTIONAL_CODECS_SUPPORTED); when(mBluetoothA2dp.isOptionalCodecsEnabled(mActiveDevice)).thenReturn( @@ -138,7 +152,8 @@ public class BluetoothHDAudioPreferenceControllerTest { @Test public void onPreferenceChange_disable_verifyFlow() { - when(mBluetoothA2dp.getActiveDevice()).thenReturn(mActiveDevice); + when(mBluetoothAdapter.getActiveDevices(eq(BluetoothProfile.A2DP))) + .thenReturn(Arrays.asList(mActiveDevice)); mController.onBluetoothServiceConnected(mBluetoothA2dp); final boolean enabled = false; mController.onPreferenceChange(mPreference, enabled); @@ -151,7 +166,8 @@ public class BluetoothHDAudioPreferenceControllerTest { @Test public void onPreferenceChange_enable_verifyFlow() { - when(mBluetoothA2dp.getActiveDevice()).thenReturn(mActiveDevice); + when(mBluetoothAdapter.getActiveDevices(eq(BluetoothProfile.A2DP))) + .thenReturn(Arrays.asList(mActiveDevice)); mController.onBluetoothServiceConnected(mBluetoothA2dp); final boolean enabled = true; mController.onPreferenceChange(mPreference, enabled); diff --git a/tests/robotests/src/com/android/settings/development/bluetooth/BluetoothQualityDialogPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/development/bluetooth/BluetoothQualityDialogPreferenceControllerTest.java index e50b716ec73..1bd83f7954d 100644 --- a/tests/robotests/src/com/android/settings/development/bluetooth/BluetoothQualityDialogPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/development/bluetooth/BluetoothQualityDialogPreferenceControllerTest.java @@ -18,6 +18,7 @@ package com.android.settings.development.bluetooth; import static com.google.common.truth.Truth.assertThat; +import static org.mockito.Mockito.eq; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -27,6 +28,7 @@ import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothCodecConfig; import android.bluetooth.BluetoothCodecStatus; import android.bluetooth.BluetoothDevice; +import android.bluetooth.BluetoothProfile; import android.content.Context; import androidx.lifecycle.LifecycleOwner; @@ -53,6 +55,8 @@ public class BluetoothQualityDialogPreferenceControllerTest { @Mock private BluetoothA2dp mBluetoothA2dp; @Mock + private BluetoothAdapter mBluetoothAdapter; + @Mock private PreferenceScreen mScreen; private BluetoothQualityDialogPreferenceController mController; @@ -76,6 +80,7 @@ public class BluetoothQualityDialogPreferenceControllerTest { mActiveDevice = BluetoothAdapter.getDefaultAdapter().getRemoteDevice(DEVICE_ADDRESS); mController = new BluetoothQualityDialogPreferenceController(mContext, mLifecycle, mBluetoothA2dpConfigStore); + mController.mBluetoothAdapter = mBluetoothAdapter; mPreference = new BluetoothQualityDialogPreference(mContext); when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mPreference); mController.displayPreference(mScreen); @@ -89,7 +94,8 @@ public class BluetoothQualityDialogPreferenceControllerTest { .setSampleRate(BluetoothCodecConfig.SAMPLE_RATE_96000) .setCodecSpecific1(1001) .build(); - when(mBluetoothA2dp.getActiveDevice()).thenReturn(mActiveDevice); + when(mBluetoothAdapter.getActiveDevices(eq(BluetoothProfile.A2DP))) + .thenReturn(Arrays.asList(mActiveDevice)); } @Test diff --git a/tests/robotests/src/com/android/settings/development/bluetooth/BluetoothSampleRateDialogPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/development/bluetooth/BluetoothSampleRateDialogPreferenceControllerTest.java index fca154d79f8..f7d010cb53b 100644 --- a/tests/robotests/src/com/android/settings/development/bluetooth/BluetoothSampleRateDialogPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/development/bluetooth/BluetoothSampleRateDialogPreferenceControllerTest.java @@ -18,6 +18,7 @@ package com.android.settings.development.bluetooth; import static com.google.common.truth.Truth.assertThat; +import static org.mockito.Mockito.eq; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -27,6 +28,7 @@ import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothCodecConfig; import android.bluetooth.BluetoothCodecStatus; import android.bluetooth.BluetoothDevice; +import android.bluetooth.BluetoothProfile; import android.content.Context; import androidx.lifecycle.LifecycleOwner; @@ -55,6 +57,8 @@ public class BluetoothSampleRateDialogPreferenceControllerTest { @Mock private BluetoothA2dp mBluetoothA2dp; @Mock + private BluetoothAdapter mBluetoothAdapter; + @Mock private PreferenceScreen mScreen; private BluetoothSampleRateDialogPreferenceController mController; @@ -79,6 +83,7 @@ public class BluetoothSampleRateDialogPreferenceControllerTest { mActiveDevice = BluetoothAdapter.getDefaultAdapter().getRemoteDevice(DEVICE_ADDRESS); mController = spy(new BluetoothSampleRateDialogPreferenceController(mContext, mLifecycle, mBluetoothA2dpConfigStore)); + mController.mBluetoothAdapter = mBluetoothAdapter; mPreference = new BluetoothSampleRateDialogPreference(mContext); when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mPreference); mController.displayPreference(mScreen); @@ -91,7 +96,8 @@ public class BluetoothSampleRateDialogPreferenceControllerTest { .setCodecType(BluetoothCodecConfig.SOURCE_CODEC_TYPE_SBC) .setSampleRate(BluetoothCodecConfig.SAMPLE_RATE_96000) .build(); - when(mBluetoothA2dp.getActiveDevice()).thenReturn(mActiveDevice); + when(mBluetoothAdapter.getActiveDevices(eq(BluetoothProfile.A2DP))) + .thenReturn(Arrays.asList(mActiveDevice)); } @Test