OSDN Git Service

Fix only one "active" HA showing under Accessibility Settings
authortimhypeng <timhypeng@google.com>
Wed, 13 Feb 2019 06:42:39 +0000 (14:42 +0800)
committertim peng <timhypeng@google.com>
Thu, 14 Feb 2019 01:31:03 +0000 (01:31 +0000)
-return main device on getConnectedHearingAidDevice()
-add test case

Bug: 123777253
Test: make -j42 RunSettingsRoboTests
Change-Id: I63522311b2248df983f200864b5465c0055056da

src/com/android/settings/accessibility/AccessibilityHearingAidPreferenceController.java
tests/robotests/src/com/android/settings/accessibility/AccessibilityHearingAidPreferenceControllerTest.java

index 617a9bb..1881ca7 100644 (file)
@@ -148,7 +148,8 @@ public class AccessibilityHearingAidPreferenceController extends BasePreferenceC
         mFragmentManager = fragmentManager;
     }
 
-    private CachedBluetoothDevice getConnectedHearingAidDevice() {
+    @VisibleForTesting
+    CachedBluetoothDevice getConnectedHearingAidDevice() {
         if (!mHearingAidProfileSupported) {
             return null;
         }
@@ -158,9 +159,11 @@ public class AccessibilityHearingAidPreferenceController extends BasePreferenceC
         final List<BluetoothDevice> deviceList = mLocalBluetoothManager.getProfileManager()
                 .getHearingAidProfile().getConnectedDevices();
         final Iterator it = deviceList.iterator();
-        if (it.hasNext()) {
+        while (it.hasNext()) {
             BluetoothDevice obj = (BluetoothDevice)it.next();
-            return mLocalBluetoothManager.getCachedDeviceManager().findDevice(obj);
+            if (!mLocalBluetoothManager.getCachedDeviceManager().isSubDevice(obj)) {
+                return mLocalBluetoothManager.getCachedDeviceManager().findDevice(obj);
+            }
         }
         return null;
     }
index 951f203..3f4e82d 100644 (file)
@@ -181,6 +181,15 @@ public class AccessibilityHearingAidPreferenceControllerTest {
         verify(mContext, never()).unregisterReceiver(any());
     }
 
+    @Test
+    public void getConnectedHearingAidDevice_doNotReturnSubDevice() {
+        when(mHearingAidProfile.getConnectedDevices()).thenReturn(generateHearingAidDeviceList());
+        when(mLocalBluetoothManager.getCachedDeviceManager().isSubDevice(mBluetoothDevice))
+                .thenReturn(true);
+
+        assertThat(mPreferenceController.getConnectedHearingAidDevice()).isNull();
+    }
+
     private void setupBluetoothEnvironment() {
         ShadowBluetoothUtils.sLocalBluetoothManager = mLocalBluetoothManager;
         mLocalBluetoothManager = Utils.getLocalBtManager(mContext);