From f05615f1e85d81e2cffd14f210d21eff965fd092 Mon Sep 17 00:00:00 2001 From: Patty Huang Date: Fri, 28 Apr 2023 16:40:56 +0800 Subject: [PATCH 1/5] Add toggle to show/hide the Per Device Enable LE Audio Toggle in Device details Bug: 280020008 Test: make RunSettingsRoboTests ROBOTEST_FILTER=BluetoothLeAudioDeviceDetailsPreferenceControllerTest Change-Id: I559f34f2b0764c4f566fe1e0c1357929e2c88fb6 --- res/values/strings.xml | 11 +- res/xml/development_settings.xml | 4 + .../settings/core/SettingsUIDeviceConfig.java | 5 + ...udioDeviceDetailsPreferenceController.java | 102 ++++++++++++++ .../DevelopmentSettingsDashboardFragment.java | 1 + ...DeviceDetailsPreferenceControllerTest.java | 133 ++++++++++++++++++ 6 files changed, 252 insertions(+), 4 deletions(-) create mode 100644 src/com/android/settings/development/BluetoothLeAudioDeviceDetailsPreferenceController.java create mode 100644 tests/robotests/src/com/android/settings/development/BluetoothLeAudioDeviceDetailsPreferenceControllerTest.java diff --git a/res/values/strings.xml b/res/values/strings.xml index 6605be2c8da..1218f02e949 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -221,14 +221,17 @@ Cancel - + Disable Bluetooth LE audio - + Disables Bluetooth LE audio feature if the device supports LE audio hardware capabilities. - + + Show LE audio toggle in Device Details + + Enable Bluetooth LE audio Allow List - + Enable Bluetooth LE audio allow list feature. diff --git a/res/xml/development_settings.xml b/res/xml/development_settings.xml index eb17fbf0828..68e4e78945b 100644 --- a/res/xml/development_settings.xml +++ b/res/xml/development_settings.xml @@ -350,6 +350,10 @@ android:title="@string/bluetooth_disable_leaudio" android:summary="@string/bluetooth_disable_leaudio_summary" /> + + Date: Thu, 4 May 2023 03:35:50 +0800 Subject: [PATCH 2/5] Hide the LE audio toggle by flag Bug: 280021500 Test: build pass. Change-Id: I3f4a821c50dfb9d2de73919945334b42c59b3309 --- .../bluetooth/BluetoothDetailsProfilesController.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/com/android/settings/bluetooth/BluetoothDetailsProfilesController.java b/src/com/android/settings/bluetooth/BluetoothDetailsProfilesController.java index f69cf580d51..208fba7716c 100644 --- a/src/com/android/settings/bluetooth/BluetoothDetailsProfilesController.java +++ b/src/com/android/settings/bluetooth/BluetoothDetailsProfilesController.java @@ -77,6 +77,7 @@ public class BluetoothDetailsProfilesController extends BluetoothDetailsControll private Map> mProfileDeviceMap = new HashMap>(); private boolean mIsLeContactSharingEnabled = false; + private boolean mIsLeAudioToggleEnabled = false; @VisibleForTesting PreferenceCategory mProfilesContainer; @@ -97,6 +98,8 @@ public class BluetoothDetailsProfilesController extends BluetoothDetailsControll mProfilesContainer.setLayoutResource(R.layout.preference_bluetooth_profile_category); mIsLeContactSharingEnabled = DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_SETTINGS_UI, SettingsUIDeviceConfig.BT_LE_AUDIO_CONTACT_SHARING_ENABLED, true); + mIsLeAudioToggleEnabled = DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_SETTINGS_UI, + SettingsUIDeviceConfig.BT_LE_AUDIO_DEVICE_DETAIL_ENABLED, false); // Call refresh here even though it will get called later in onResume, to avoid the // list of switches appearing to "pop" into the page. refresh(); @@ -142,6 +145,10 @@ public class BluetoothDetailsProfilesController extends BluetoothDetailsControll profilePref.setEnabled(!mCachedDevice.isBusy()); } + if (profile instanceof LeAudioProfile && !mIsLeAudioToggleEnabled) { + profilePref.setVisible(false); + } + if (profile instanceof MapProfile) { profilePref.setChecked(device.getMessageAccessPermission() == BluetoothDevice.ACCESS_ALLOWED); From 481be6dde4d785d4979e128ed42ca8bd71b4403f Mon Sep 17 00:00:00 2001 From: Becca Hughes Date: Fri, 5 May 2023 17:39:51 +0000 Subject: [PATCH 3/5] Fix settings live update We were using a setting observer to watch for changes but it was being cleaned up because we did not hold a reference to it. Test: make Bug: 280905737 Change-Id: I154951f47af20998e25d62a82a8e79f9c00fa027 --- .../credentials/CredentialManagerPreferenceController.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/com/android/settings/applications/credentials/CredentialManagerPreferenceController.java b/src/com/android/settings/applications/credentials/CredentialManagerPreferenceController.java index 67a1fa8ebdd..eb201262982 100644 --- a/src/com/android/settings/applications/credentials/CredentialManagerPreferenceController.java +++ b/src/com/android/settings/applications/credentials/CredentialManagerPreferenceController.java @@ -102,6 +102,7 @@ public class CredentialManagerPreferenceController extends BasePreferenceControl private final Map mPrefs = new HashMap<>(); // key is package name private final List mPendingServiceInfos = new ArrayList<>(); private final Handler mHandler = new Handler(); + private final SettingContentObserver mSettingsContentObserver; private @Nullable FragmentManager mFragmentManager = null; private @Nullable Delegate mDelegate = null; @@ -119,7 +120,8 @@ public class CredentialManagerPreferenceController extends BasePreferenceControl mExecutor = ContextCompat.getMainExecutor(mContext); mCredentialManager = getCredentialManager(context, preferenceKey.equals("credentials_test")); - new SettingContentObserver(mHandler).register(context.getContentResolver()); + mSettingsContentObserver = new SettingContentObserver(mHandler); + mSettingsContentObserver.register(context.getContentResolver()); mSettingsPackageMonitor.register(context, context.getMainLooper(), false); } From 4fe1f506dd874368a268ea763950dd10c3aeddbd Mon Sep 17 00:00:00 2001 From: Becca Hughes Date: Fri, 5 May 2023 21:47:58 +0000 Subject: [PATCH 4/5] Set primary services as enabled Test: make Bug: 281121157 Change-Id: Ide7902d0561fa6e513e90f8245da6a754c856ae7 --- .../credentials/CredentialManagerPreferenceController.java | 7 +++++-- .../applications/credentials/DefaultCombinedPicker.java | 2 ++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/com/android/settings/applications/credentials/CredentialManagerPreferenceController.java b/src/com/android/settings/applications/credentials/CredentialManagerPreferenceController.java index 67a1fa8ebdd..356de561435 100644 --- a/src/com/android/settings/applications/credentials/CredentialManagerPreferenceController.java +++ b/src/com/android/settings/applications/credentials/CredentialManagerPreferenceController.java @@ -564,15 +564,18 @@ public class CredentialManagerPreferenceController extends BasePreferenceControl // Get the existing primary providers since we don't touch them in // this part of the UI we should just copy them over. Set primaryServices = new HashSet<>(); + List enabledServices = getEnabledSettings(); for (CredentialProviderInfo service : mServices) { if (service.isPrimary()) { - primaryServices.add(service.getServiceInfo().getComponentName().flattenToString()); + String flattened = service.getServiceInfo().getComponentName().flattenToString(); + primaryServices.add(flattened); + enabledServices.add(flattened); } } mCredentialManager.setEnabledProviders( new ArrayList<>(primaryServices), - getEnabledSettings(), + enabledServices, getUser(), mExecutor, new OutcomeReceiver() { diff --git a/src/com/android/settings/applications/credentials/DefaultCombinedPicker.java b/src/com/android/settings/applications/credentials/DefaultCombinedPicker.java index 793aa3c1cbe..634be4c09e8 100644 --- a/src/com/android/settings/applications/credentials/DefaultCombinedPicker.java +++ b/src/com/android/settings/applications/credentials/DefaultCombinedPicker.java @@ -369,6 +369,8 @@ public class DefaultCombinedPicker extends DefaultAppPickerFragment { } } + credManProviders.addAll(primaryCredManProviders); + service.setEnabledProviders( primaryCredManProviders, credManProviders, From ed295c248e9ddca7a16e3f03d20fe59a897e5aaa Mon Sep 17 00:00:00 2001 From: Becca Hughes Date: Fri, 5 May 2023 23:42:29 +0000 Subject: [PATCH 5/5] Use correct filter Test: TH Bug: 280908763 Change-Id: I8a80e8533578b5e0b7a9b516c488b3602d18feef --- .../credentials/CredentialManagerPreferenceController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/com/android/settings/applications/credentials/CredentialManagerPreferenceController.java b/src/com/android/settings/applications/credentials/CredentialManagerPreferenceController.java index 67a1fa8ebdd..b1e771c307b 100644 --- a/src/com/android/settings/applications/credentials/CredentialManagerPreferenceController.java +++ b/src/com/android/settings/applications/credentials/CredentialManagerPreferenceController.java @@ -283,7 +283,7 @@ public class CredentialManagerPreferenceController extends BasePreferenceControl setAvailableServices( mCredentialManager.getCredentialProviderServices( - getUser(), CredentialManager.PROVIDER_FILTER_ALL_PROVIDERS), + getUser(), CredentialManager.PROVIDER_FILTER_USER_PROVIDERS_ONLY), null); }