From 7cc845026c5e9ba84d9a28912621c9ac6e4c22b2 Mon Sep 17 00:00:00 2001 From: Alice Kuo Date: Tue, 4 Oct 2022 23:28:59 +0800 Subject: [PATCH] Remove A2dp offload disabled and LE audio offload enabled combination In order to reduce the complexity, LE audio offload couldn't be enabled as a2dp offload disabled. Remove the combination from the developer option 1. As a2dp offload disabled, LE audio offload couldn't be switched. 2. As the user disable a2dp offload, LE audio offload would be disabled as well Bug: 238268927 Test: make RunSettingsRoboTests ROBOTEST_FILTER=BluetoothLeAudioHwOffloadPreferenceControllerTest Test: make RunSettingsRoboTests ROBOTEST_FILTER=BluetoothA2dpHwOffloadPreferenceControllerTest Change-Id: I9ebe26c6a8058798ea654523ad1405a8447268b8 --- ...oothA2dpHwOffloadPreferenceController.java | 2 +- ...hLeAudioHwOffloadPreferenceController.java | 28 +++++++++--------- ...A2dpHwOffloadPreferenceControllerTest.java | 12 ++++---- ...udioHwOffloadPreferenceControllerTest.java | 29 +++++++++++++++++++ 4 files changed, 51 insertions(+), 20 deletions(-) diff --git a/src/com/android/settings/development/BluetoothA2dpHwOffloadPreferenceController.java b/src/com/android/settings/development/BluetoothA2dpHwOffloadPreferenceController.java index 793b7fbc561..e47048af6f4 100644 --- a/src/com/android/settings/development/BluetoothA2dpHwOffloadPreferenceController.java +++ b/src/com/android/settings/development/BluetoothA2dpHwOffloadPreferenceController.java @@ -102,7 +102,7 @@ public class BluetoothA2dpHwOffloadPreferenceController extends DeveloperOptions final boolean offloadDisabled = SystemProperties.getBoolean(A2DP_OFFLOAD_DISABLED_PROPERTY, false); SystemProperties.set(A2DP_OFFLOAD_DISABLED_PROPERTY, Boolean.toString(!offloadDisabled)); - if (offloadDisabled) { + if (!offloadDisabled) { SystemProperties.set(LE_AUDIO_OFFLOAD_DISABLED_PROPERTY, Boolean.toString(!offloadDisabled)); } diff --git a/src/com/android/settings/development/BluetoothLeAudioHwOffloadPreferenceController.java b/src/com/android/settings/development/BluetoothLeAudioHwOffloadPreferenceController.java index 751ddce79d2..904f8280927 100644 --- a/src/com/android/settings/development/BluetoothLeAudioHwOffloadPreferenceController.java +++ b/src/com/android/settings/development/BluetoothLeAudioHwOffloadPreferenceController.java @@ -16,7 +16,8 @@ package com.android.settings.development; -import static com.android.settings.development.BluetoothA2dpHwOffloadPreferenceController.A2DP_OFFLOAD_SUPPORTED_PROPERTY; +import static com.android.settings.development.BluetoothA2dpHwOffloadPreferenceController.A2DP_OFFLOAD_DISABLED_PROPERTY; + import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothManager; @@ -79,11 +80,11 @@ public class BluetoothLeAudioHwOffloadPreferenceController final boolean leAudioEnabled = (mBluetoothAdapter.isLeAudioSupported() == BluetoothStatusCodes.FEATURE_SUPPORTED); - - final boolean offloadSupported = - SystemProperties.getBoolean(A2DP_OFFLOAD_SUPPORTED_PROPERTY, false) - && SystemProperties.getBoolean(LE_AUDIO_OFFLOAD_SUPPORTED_PROPERTY, false); - if (leAudioEnabled && offloadSupported) { + final boolean leAudioOffloadSupported = + SystemProperties.getBoolean(LE_AUDIO_OFFLOAD_SUPPORTED_PROPERTY, false); + final boolean a2dpOffloadDisabled = + SystemProperties.getBoolean(A2DP_OFFLOAD_DISABLED_PROPERTY, false); + if (leAudioEnabled && leAudioOffloadSupported && !a2dpOffloadDisabled) { final boolean offloadDisabled = SystemProperties.getBoolean(LE_AUDIO_OFFLOAD_DISABLED_PROPERTY, true); ((SwitchPreference) mPreference).setChecked(offloadDisabled); @@ -102,10 +103,11 @@ public class BluetoothLeAudioHwOffloadPreferenceController final boolean leAudioEnabled = (mBluetoothAdapter.isLeAudioSupported() == BluetoothStatusCodes.FEATURE_SUPPORTED); - final boolean offloadSupported = - SystemProperties.getBoolean(A2DP_OFFLOAD_SUPPORTED_PROPERTY, false) - && SystemProperties.getBoolean(LE_AUDIO_OFFLOAD_SUPPORTED_PROPERTY, false); - if (leAudioEnabled && offloadSupported) { + final boolean leAudioOffloadSupported = + SystemProperties.getBoolean(LE_AUDIO_OFFLOAD_SUPPORTED_PROPERTY, false); + final boolean a2dpOffloadDisabled = + SystemProperties.getBoolean(A2DP_OFFLOAD_DISABLED_PROPERTY, false); + if (leAudioEnabled && leAudioOffloadSupported && !a2dpOffloadDisabled) { ((SwitchPreference) mPreference).setChecked(true); SystemProperties.set(LE_AUDIO_OFFLOAD_DISABLED_PROPERTY, "true"); } else { @@ -118,7 +120,7 @@ public class BluetoothLeAudioHwOffloadPreferenceController */ public boolean isDefaultValue() { final boolean offloadSupported = - SystemProperties.getBoolean(A2DP_OFFLOAD_SUPPORTED_PROPERTY, false) + !SystemProperties.getBoolean(A2DP_OFFLOAD_DISABLED_PROPERTY, false) && SystemProperties.getBoolean(LE_AUDIO_OFFLOAD_SUPPORTED_PROPERTY, false); final boolean offloadDisabled = SystemProperties.getBoolean(LE_AUDIO_OFFLOAD_DISABLED_PROPERTY, false); @@ -133,11 +135,11 @@ public class BluetoothLeAudioHwOffloadPreferenceController return; } - final boolean offloadDisabled = + final boolean leaudioOffloadDisabled = SystemProperties.getBoolean(LE_AUDIO_OFFLOAD_DISABLED_PROPERTY, false); SystemProperties.set(LE_AUDIO_OFFLOAD_DISABLED_PROPERTY, - Boolean.toString(!offloadDisabled)); + Boolean.toString(!leaudioOffloadDisabled)); } /** diff --git a/tests/robotests/src/com/android/settings/development/BluetoothA2dpHwOffloadPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/development/BluetoothA2dpHwOffloadPreferenceControllerTest.java index 660c8f1bac8..94d6f1f2694 100644 --- a/tests/robotests/src/com/android/settings/development/BluetoothA2dpHwOffloadPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/development/BluetoothA2dpHwOffloadPreferenceControllerTest.java @@ -65,18 +65,18 @@ public class BluetoothA2dpHwOffloadPreferenceControllerTest { @Test public void onA2dpHwDialogConfirmedAsA2dpOffloadDisabled_shouldChangeProperty() { - SystemProperties.set(A2DP_OFFLOAD_DISABLED_PROPERTY, Boolean.toString(false)); + SystemProperties.set(A2DP_OFFLOAD_DISABLED_PROPERTY, Boolean.toString(true)); mController.mChanged = true; mController.onRebootDialogConfirmed(); final boolean mode = SystemProperties.getBoolean(A2DP_OFFLOAD_DISABLED_PROPERTY, false); - assertThat(mode).isTrue(); + assertThat(mode).isFalse(); } @Test public void onA2dpHwDialogConfirmedAsA2dpOffloadEnabled_shouldChangeProperty() { - SystemProperties.set(A2DP_OFFLOAD_DISABLED_PROPERTY, Boolean.toString(true)); - SystemProperties.set(LE_AUDIO_OFFLOAD_DISABLED_PROPERTY, Boolean.toString(true)); + SystemProperties.set(A2DP_OFFLOAD_DISABLED_PROPERTY, Boolean.toString(false)); + SystemProperties.set(LE_AUDIO_OFFLOAD_DISABLED_PROPERTY, Boolean.toString(false)); mController.mChanged = true; @@ -84,8 +84,8 @@ public class BluetoothA2dpHwOffloadPreferenceControllerTest { final boolean a2dpMode = SystemProperties.getBoolean(A2DP_OFFLOAD_DISABLED_PROPERTY, true); final boolean leAudioMode = SystemProperties .getBoolean(LE_AUDIO_OFFLOAD_DISABLED_PROPERTY, true); - assertThat(a2dpMode).isFalse(); - assertThat(leAudioMode).isFalse(); + assertThat(a2dpMode).isTrue(); + assertThat(leAudioMode).isTrue(); } @Test diff --git a/tests/robotests/src/com/android/settings/development/BluetoothLeAudioHwOffloadPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/development/BluetoothLeAudioHwOffloadPreferenceControllerTest.java index ec64fe348d9..aa05f628f7f 100644 --- a/tests/robotests/src/com/android/settings/development/BluetoothLeAudioHwOffloadPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/development/BluetoothLeAudioHwOffloadPreferenceControllerTest.java @@ -16,14 +16,21 @@ package com.android.settings.development; +import static android.bluetooth.BluetoothStatusCodes.FEATURE_SUPPORTED; + +import static com.android.settings.development.BluetoothA2dpHwOffloadPreferenceController + .A2DP_OFFLOAD_DISABLED_PROPERTY; import static com.android.settings.development.BluetoothLeAudioHwOffloadPreferenceController .LE_AUDIO_OFFLOAD_DISABLED_PROPERTY; +import static com.android.settings.development.BluetoothLeAudioHwOffloadPreferenceController + .LE_AUDIO_OFFLOAD_SUPPORTED_PROPERTY; import static com.google.common.truth.Truth.assertThat; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.when; +import android.bluetooth.BluetoothAdapter; import android.content.Context; import android.os.SystemProperties; @@ -45,6 +52,8 @@ public class BluetoothLeAudioHwOffloadPreferenceControllerTest { private PreferenceScreen mPreferenceScreen; @Mock private DevelopmentSettingsDashboardFragment mFragment; + @Mock + private BluetoothAdapter mBluetoothAdapter; private Context mContext; private SwitchPreference mPreference; @@ -59,6 +68,9 @@ public class BluetoothLeAudioHwOffloadPreferenceControllerTest { when(mPreferenceScreen.findPreference(mController.getPreferenceKey())) .thenReturn(mPreference); mController.displayPreference(mPreferenceScreen); + mController.mBluetoothAdapter = mBluetoothAdapter; + when(mBluetoothAdapter.isLeAudioSupported()) + .thenReturn(FEATURE_SUPPORTED); } @Test @@ -91,4 +103,21 @@ public class BluetoothLeAudioHwOffloadPreferenceControllerTest { final boolean mode = SystemProperties.getBoolean(LE_AUDIO_OFFLOAD_DISABLED_PROPERTY, false); assertThat(mode).isFalse(); } + + @Test + public void asA2dpOffloadDisabled_shouldNotSwitchLeAudioOffloadStatus() { + SystemProperties.set(LE_AUDIO_OFFLOAD_SUPPORTED_PROPERTY, Boolean.toString(true)); + SystemProperties.set(A2DP_OFFLOAD_DISABLED_PROPERTY, Boolean.toString(true)); + + SystemProperties.set(LE_AUDIO_OFFLOAD_DISABLED_PROPERTY, Boolean.toString(false)); + mController.updateState(null); + boolean leAueioDisabled = + SystemProperties.getBoolean(LE_AUDIO_OFFLOAD_DISABLED_PROPERTY, false); + assertThat(leAueioDisabled).isFalse(); + + SystemProperties.set(LE_AUDIO_OFFLOAD_DISABLED_PROPERTY, Boolean.toString(true)); + mController.updateState(null); + leAueioDisabled = SystemProperties.getBoolean(LE_AUDIO_OFFLOAD_DISABLED_PROPERTY, false); + assertThat(leAueioDisabled).isTrue(); + } }