Loading packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDevice.java +1 −27 Original line number Diff line number Diff line Loading @@ -940,6 +940,7 @@ public class CachedBluetoothDevice implements Comparable<CachedBluetoothDevice> + getName() + ", groupId=" + mGroupId + ", member= " + mMemberDevices + ")"; } Loading Loading @@ -1493,33 +1494,6 @@ public class CachedBluetoothDevice implements Comparable<CachedBluetoothDevice> mMemberDevices.remove(memberDevice); } /** * In order to show the preference for the whole group, we always set the main device as the * first connected device in the coordinated set, and then switch the content of the main * device and member devices. * * @param newMainDevice the new Main device which is from the previous main device's member * list. */ public void switchMemberDeviceContent(CachedBluetoothDevice newMainDevice) { // Backup from main device final BluetoothDevice tmpDevice = mDevice; final short tmpRssi = mRssi; final boolean tmpJustDiscovered = mJustDiscovered; // Set main device from sub device release(); mDevice = newMainDevice.mDevice; mRssi = newMainDevice.mRssi; mJustDiscovered = newMainDevice.mJustDiscovered; // Set sub device from backup newMainDevice.release(); newMainDevice.mDevice = tmpDevice; newMainDevice.mRssi = tmpRssi; newMainDevice.mJustDiscovered = tmpJustDiscovered; fetchActiveDevices(); } /** * Get cached bluetooth icon with description */ Loading packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDeviceManager.java +53 −0 Original line number Diff line number Diff line Loading @@ -464,6 +464,59 @@ public class CachedBluetoothDeviceManager { return !(mOngoingSetMemberPair == null) && mOngoingSetMemberPair.equals(device); } /** * In order to show the preference for the whole group, we always set the main device as the * first connected device in the coordinated set, and then switch the relationship of the main * device and member devices. * * @param newMainDevice the new Main device which is from the previous main device's member * list. */ public void switchRelationshipFromMemberToMain(CachedBluetoothDevice newMainDevice) { if (newMainDevice == null) { log("switchRelationshipFromMemberToMain: input is null"); return; } log("switchRelationshipFromMemberToMain: CachedBluetoothDevice list: " + mCachedDevices); final CachedBluetoothDevice finalNewMainDevice = newMainDevice; int newMainGroupId = newMainDevice.getGroupId(); CachedBluetoothDevice oldMainDevice = mCachedDevices.stream() .filter(cachedDevice -> !cachedDevice.equals(finalNewMainDevice) && cachedDevice.getGroupId() == newMainGroupId).findFirst().orElse(null); boolean hasMainDevice = oldMainDevice != null; Set<CachedBluetoothDevice> memberSet = hasMainDevice ? oldMainDevice.getMemberDevice() : null; boolean isMemberDevice = memberSet != null && memberSet.contains(newMainDevice); if (!hasMainDevice || !isMemberDevice) { log("switchRelationshipFromMemberToMain: " + newMainDevice.getDevice().getAnonymizedAddress() + " is not the member device."); return; } mCachedDevices.remove(oldMainDevice); // When both LE Audio devices are disconnected, receiving member device // connection. To switch content and dispatch to notify UI change mBtManager.getEventManager().dispatchDeviceRemoved(oldMainDevice); for (CachedBluetoothDevice memberDeviceItem : memberSet) { if (memberDeviceItem.equals(newMainDevice)) { continue; } newMainDevice.addMemberDevice(memberDeviceItem); } memberSet.clear(); newMainDevice.addMemberDevice(oldMainDevice); mCachedDevices.add(newMainDevice); // It is necessary to do remove and add for updating the mapping on // preference and device mBtManager.getEventManager().dispatchDeviceAdded(newMainDevice); log("switchRelationshipFromMemberToMain: After change, CachedBluetoothDevice list: " + mCachedDevices); } private void log(String msg) { if (DEBUG) { Log.d(TAG, msg); Loading packages/SettingsLib/src/com/android/settingslib/bluetooth/CsipDeviceManager.java +8 −16 Original line number Diff line number Diff line Loading @@ -238,14 +238,10 @@ public class CsipDeviceManager { mainDevice.refresh(); return true; } else { // When both LE Audio devices are disconnected, receiving member device // connection. To switch content and dispatch to notify UI change mBtManager.getEventManager().dispatchDeviceRemoved(mainDevice); mainDevice.switchMemberDeviceContent(cachedDevice); mainDevice.refresh(); // It is necessary to do remove and add for updating the mapping on // preference and device mBtManager.getEventManager().dispatchDeviceAdded(mainDevice); final CachedBluetoothDeviceManager deviceManager = mBtManager.getCachedDeviceManager(); deviceManager.switchRelationshipFromMemberToMain(cachedDevice); cachedDevice.refresh(); return true; } } Loading @@ -266,14 +262,10 @@ public class CsipDeviceManager { for (CachedBluetoothDevice device: memberSet) { if (device.isConnected()) { log("set device: " + device + " as the main device"); // Main device is disconnected and sub device is connected // To copy data from sub device to main device mBtManager.getEventManager().dispatchDeviceRemoved(cachedDevice); cachedDevice.switchMemberDeviceContent(device); cachedDevice.refresh(); // It is necessary to do remove and add for updating the mapping on // preference and device mBtManager.getEventManager().dispatchDeviceAdded(cachedDevice); final CachedBluetoothDeviceManager deviceManager = mBtManager.getCachedDeviceManager(); deviceManager.switchRelationshipFromMemberToMain(device); device.refresh(); return true; } } Loading packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/CachedBluetoothDeviceManagerTest.java +83 −0 Original line number Diff line number Diff line Loading @@ -604,4 +604,87 @@ public class CachedBluetoothDeviceManagerTest { verify(mDevice2).setPhonebookAccessPermission(BluetoothDevice.ACCESS_ALLOWED); verify(mDevice2).createBond(BluetoothDevice.TRANSPORT_LE); } @Test public void switchRelationshipFromMemberToMain_switchesMainDevice_switchesSuccessful() { doReturn(CAP_GROUP1).when(mCsipSetCoordinatorProfile).getGroupUuidMapByDevice(mDevice1); CachedBluetoothDevice cachedDevice1 = mCachedDeviceManager.addDevice(mDevice1); doReturn(CAP_GROUP1).when(mCsipSetCoordinatorProfile).getGroupUuidMapByDevice(mDevice2); doReturn(CAP_GROUP2).when(mCsipSetCoordinatorProfile).getGroupUuidMapByDevice(mDevice3); CachedBluetoothDevice cachedDevice2 = mCachedDeviceManager.addDevice(mDevice2); CachedBluetoothDevice cachedDevice3 = mCachedDeviceManager.addDevice(mDevice3); assertThat(mCachedDeviceManager.isSubDevice(mDevice1)).isFalse(); assertThat(mCachedDeviceManager.isSubDevice(mDevice2)).isTrue(); assertThat(mCachedDeviceManager.isSubDevice(mDevice3)).isFalse(); assertThat(cachedDevice1.getMemberDevice().contains(cachedDevice2)).isTrue(); mCachedDeviceManager.switchRelationshipFromMemberToMain(cachedDevice2); assertThat(mCachedDeviceManager.isSubDevice(mDevice1)).isTrue(); assertThat(mCachedDeviceManager.isSubDevice(mDevice2)).isFalse(); assertThat(mCachedDeviceManager.isSubDevice(mDevice3)).isFalse(); assertThat(cachedDevice2.getMemberDevice().contains(cachedDevice1)).isTrue(); } @Test public void switchRelationshipFromMemberToMain_moreMembersCase_switchesSuccessful() { doReturn(CAP_GROUP1).when(mCsipSetCoordinatorProfile).getGroupUuidMapByDevice(mDevice1); CachedBluetoothDevice cachedDevice1 = mCachedDeviceManager.addDevice(mDevice1); doReturn(CAP_GROUP1).when(mCsipSetCoordinatorProfile).getGroupUuidMapByDevice(mDevice2); doReturn(CAP_GROUP1).when(mCsipSetCoordinatorProfile).getGroupUuidMapByDevice(mDevice3); CachedBluetoothDevice cachedDevice2 = mCachedDeviceManager.addDevice(mDevice2); CachedBluetoothDevice cachedDevice3 = mCachedDeviceManager.addDevice(mDevice3); assertThat(cachedDevice1.getMemberDevice().contains(cachedDevice2)).isTrue(); assertThat(cachedDevice1.getMemberDevice().contains(cachedDevice3)).isTrue(); mCachedDeviceManager.switchRelationshipFromMemberToMain(cachedDevice2); assertThat(mCachedDeviceManager.isSubDevice(mDevice1)).isTrue(); assertThat(mCachedDeviceManager.isSubDevice(mDevice2)).isFalse(); assertThat(mCachedDeviceManager.isSubDevice(mDevice3)).isTrue(); assertThat(cachedDevice2.getMemberDevice().contains(cachedDevice1)).isTrue(); assertThat(cachedDevice2.getMemberDevice().contains(cachedDevice3)).isTrue(); } @Test public void switchRelationshipFromMemberToMain_inputDeviceIsMainDevice_doesNotChangelist() { doReturn(CAP_GROUP1).when(mCsipSetCoordinatorProfile).getGroupUuidMapByDevice(mDevice1); CachedBluetoothDevice cachedDevice1 = mCachedDeviceManager.addDevice(mDevice1); doReturn(CAP_GROUP1).when(mCsipSetCoordinatorProfile).getGroupUuidMapByDevice(mDevice2); doReturn(CAP_GROUP1).when(mCsipSetCoordinatorProfile).getGroupUuidMapByDevice(mDevice3); CachedBluetoothDevice cachedDevice2 = mCachedDeviceManager.addDevice(mDevice2); CachedBluetoothDevice cachedDevice3 = mCachedDeviceManager.addDevice(mDevice3); Collection<CachedBluetoothDevice> devices = mCachedDeviceManager.getCachedDevicesCopy(); assertThat(cachedDevice1.getMemberDevice().contains(cachedDevice2)).isTrue(); assertThat(cachedDevice1.getMemberDevice().contains(cachedDevice3)).isTrue(); mCachedDeviceManager.switchRelationshipFromMemberToMain(cachedDevice1); devices = mCachedDeviceManager.getCachedDevicesCopy(); assertThat(devices).contains(cachedDevice1); assertThat(cachedDevice1.getMemberDevice().contains(cachedDevice2)).isTrue(); assertThat(cachedDevice1.getMemberDevice().contains(cachedDevice3)).isTrue(); } @Test public void switchRelationshipFromMemberToMain_inputDeviceNotInMemberList_doesNotChangelist() { doReturn(CAP_GROUP1).when(mCsipSetCoordinatorProfile).getGroupUuidMapByDevice(mDevice1); CachedBluetoothDevice cachedDevice1 = mCachedDeviceManager.addDevice(mDevice1); doReturn(CAP_GROUP1).when(mCsipSetCoordinatorProfile).getGroupUuidMapByDevice(mDevice2); doReturn(CAP_GROUP1).when(mCsipSetCoordinatorProfile).getGroupUuidMapByDevice(mDevice3); CachedBluetoothDevice cachedDevice2 = mCachedDeviceManager.addDevice(mDevice2); cachedDevice1.getMemberDevice().remove(cachedDevice2); CachedBluetoothDevice cachedDevice3 = mCachedDeviceManager.addDevice(mDevice3); Collection<CachedBluetoothDevice> devices = mCachedDeviceManager.getCachedDevicesCopy(); assertThat(cachedDevice1.getMemberDevice().contains(cachedDevice2)).isFalse(); assertThat(cachedDevice1.getMemberDevice().contains(cachedDevice3)).isTrue(); mCachedDeviceManager.switchRelationshipFromMemberToMain(cachedDevice2); devices = mCachedDeviceManager.getCachedDevicesCopy(); assertThat(devices).contains(cachedDevice1); assertThat(cachedDevice1.getMemberDevice().contains(cachedDevice2)).isFalse(); assertThat(cachedDevice1.getMemberDevice().contains(cachedDevice3)).isTrue(); } } packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/CachedBluetoothDeviceTest.java +0 −19 Original line number Diff line number Diff line Loading @@ -1137,25 +1137,6 @@ public class CachedBluetoothDeviceTest { assertThat(mCachedDevice.mDrawableCache.size()).isEqualTo(0); } @Test public void switchMemberDeviceContent_switchMainDevice_switchesSuccessful() { mCachedDevice.mRssi = RSSI_1; mCachedDevice.mJustDiscovered = JUSTDISCOVERED_1; mSubCachedDevice.mRssi = RSSI_2; mSubCachedDevice.mJustDiscovered = JUSTDISCOVERED_2; mCachedDevice.addMemberDevice(mSubCachedDevice); mCachedDevice.switchMemberDeviceContent(mSubCachedDevice); assertThat(mCachedDevice.mRssi).isEqualTo(RSSI_2); assertThat(mCachedDevice.mJustDiscovered).isEqualTo(JUSTDISCOVERED_2); assertThat(mCachedDevice.mDevice).isEqualTo(mSubDevice); assertThat(mSubCachedDevice.mRssi).isEqualTo(RSSI_1); assertThat(mSubCachedDevice.mJustDiscovered).isEqualTo(JUSTDISCOVERED_1); assertThat(mSubCachedDevice.mDevice).isEqualTo(mDevice); assertThat(mCachedDevice.getMemberDevice().contains(mSubCachedDevice)).isTrue(); } @Test public void isConnectedHearingAidDevice_isConnectedAshaHearingAidDevice_returnTrue() { when(mProfileManager.getHearingAidProfile()).thenReturn(mHearingAidProfile); Loading Loading
packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDevice.java +1 −27 Original line number Diff line number Diff line Loading @@ -940,6 +940,7 @@ public class CachedBluetoothDevice implements Comparable<CachedBluetoothDevice> + getName() + ", groupId=" + mGroupId + ", member= " + mMemberDevices + ")"; } Loading Loading @@ -1493,33 +1494,6 @@ public class CachedBluetoothDevice implements Comparable<CachedBluetoothDevice> mMemberDevices.remove(memberDevice); } /** * In order to show the preference for the whole group, we always set the main device as the * first connected device in the coordinated set, and then switch the content of the main * device and member devices. * * @param newMainDevice the new Main device which is from the previous main device's member * list. */ public void switchMemberDeviceContent(CachedBluetoothDevice newMainDevice) { // Backup from main device final BluetoothDevice tmpDevice = mDevice; final short tmpRssi = mRssi; final boolean tmpJustDiscovered = mJustDiscovered; // Set main device from sub device release(); mDevice = newMainDevice.mDevice; mRssi = newMainDevice.mRssi; mJustDiscovered = newMainDevice.mJustDiscovered; // Set sub device from backup newMainDevice.release(); newMainDevice.mDevice = tmpDevice; newMainDevice.mRssi = tmpRssi; newMainDevice.mJustDiscovered = tmpJustDiscovered; fetchActiveDevices(); } /** * Get cached bluetooth icon with description */ Loading
packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDeviceManager.java +53 −0 Original line number Diff line number Diff line Loading @@ -464,6 +464,59 @@ public class CachedBluetoothDeviceManager { return !(mOngoingSetMemberPair == null) && mOngoingSetMemberPair.equals(device); } /** * In order to show the preference for the whole group, we always set the main device as the * first connected device in the coordinated set, and then switch the relationship of the main * device and member devices. * * @param newMainDevice the new Main device which is from the previous main device's member * list. */ public void switchRelationshipFromMemberToMain(CachedBluetoothDevice newMainDevice) { if (newMainDevice == null) { log("switchRelationshipFromMemberToMain: input is null"); return; } log("switchRelationshipFromMemberToMain: CachedBluetoothDevice list: " + mCachedDevices); final CachedBluetoothDevice finalNewMainDevice = newMainDevice; int newMainGroupId = newMainDevice.getGroupId(); CachedBluetoothDevice oldMainDevice = mCachedDevices.stream() .filter(cachedDevice -> !cachedDevice.equals(finalNewMainDevice) && cachedDevice.getGroupId() == newMainGroupId).findFirst().orElse(null); boolean hasMainDevice = oldMainDevice != null; Set<CachedBluetoothDevice> memberSet = hasMainDevice ? oldMainDevice.getMemberDevice() : null; boolean isMemberDevice = memberSet != null && memberSet.contains(newMainDevice); if (!hasMainDevice || !isMemberDevice) { log("switchRelationshipFromMemberToMain: " + newMainDevice.getDevice().getAnonymizedAddress() + " is not the member device."); return; } mCachedDevices.remove(oldMainDevice); // When both LE Audio devices are disconnected, receiving member device // connection. To switch content and dispatch to notify UI change mBtManager.getEventManager().dispatchDeviceRemoved(oldMainDevice); for (CachedBluetoothDevice memberDeviceItem : memberSet) { if (memberDeviceItem.equals(newMainDevice)) { continue; } newMainDevice.addMemberDevice(memberDeviceItem); } memberSet.clear(); newMainDevice.addMemberDevice(oldMainDevice); mCachedDevices.add(newMainDevice); // It is necessary to do remove and add for updating the mapping on // preference and device mBtManager.getEventManager().dispatchDeviceAdded(newMainDevice); log("switchRelationshipFromMemberToMain: After change, CachedBluetoothDevice list: " + mCachedDevices); } private void log(String msg) { if (DEBUG) { Log.d(TAG, msg); Loading
packages/SettingsLib/src/com/android/settingslib/bluetooth/CsipDeviceManager.java +8 −16 Original line number Diff line number Diff line Loading @@ -238,14 +238,10 @@ public class CsipDeviceManager { mainDevice.refresh(); return true; } else { // When both LE Audio devices are disconnected, receiving member device // connection. To switch content and dispatch to notify UI change mBtManager.getEventManager().dispatchDeviceRemoved(mainDevice); mainDevice.switchMemberDeviceContent(cachedDevice); mainDevice.refresh(); // It is necessary to do remove and add for updating the mapping on // preference and device mBtManager.getEventManager().dispatchDeviceAdded(mainDevice); final CachedBluetoothDeviceManager deviceManager = mBtManager.getCachedDeviceManager(); deviceManager.switchRelationshipFromMemberToMain(cachedDevice); cachedDevice.refresh(); return true; } } Loading @@ -266,14 +262,10 @@ public class CsipDeviceManager { for (CachedBluetoothDevice device: memberSet) { if (device.isConnected()) { log("set device: " + device + " as the main device"); // Main device is disconnected and sub device is connected // To copy data from sub device to main device mBtManager.getEventManager().dispatchDeviceRemoved(cachedDevice); cachedDevice.switchMemberDeviceContent(device); cachedDevice.refresh(); // It is necessary to do remove and add for updating the mapping on // preference and device mBtManager.getEventManager().dispatchDeviceAdded(cachedDevice); final CachedBluetoothDeviceManager deviceManager = mBtManager.getCachedDeviceManager(); deviceManager.switchRelationshipFromMemberToMain(device); device.refresh(); return true; } } Loading
packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/CachedBluetoothDeviceManagerTest.java +83 −0 Original line number Diff line number Diff line Loading @@ -604,4 +604,87 @@ public class CachedBluetoothDeviceManagerTest { verify(mDevice2).setPhonebookAccessPermission(BluetoothDevice.ACCESS_ALLOWED); verify(mDevice2).createBond(BluetoothDevice.TRANSPORT_LE); } @Test public void switchRelationshipFromMemberToMain_switchesMainDevice_switchesSuccessful() { doReturn(CAP_GROUP1).when(mCsipSetCoordinatorProfile).getGroupUuidMapByDevice(mDevice1); CachedBluetoothDevice cachedDevice1 = mCachedDeviceManager.addDevice(mDevice1); doReturn(CAP_GROUP1).when(mCsipSetCoordinatorProfile).getGroupUuidMapByDevice(mDevice2); doReturn(CAP_GROUP2).when(mCsipSetCoordinatorProfile).getGroupUuidMapByDevice(mDevice3); CachedBluetoothDevice cachedDevice2 = mCachedDeviceManager.addDevice(mDevice2); CachedBluetoothDevice cachedDevice3 = mCachedDeviceManager.addDevice(mDevice3); assertThat(mCachedDeviceManager.isSubDevice(mDevice1)).isFalse(); assertThat(mCachedDeviceManager.isSubDevice(mDevice2)).isTrue(); assertThat(mCachedDeviceManager.isSubDevice(mDevice3)).isFalse(); assertThat(cachedDevice1.getMemberDevice().contains(cachedDevice2)).isTrue(); mCachedDeviceManager.switchRelationshipFromMemberToMain(cachedDevice2); assertThat(mCachedDeviceManager.isSubDevice(mDevice1)).isTrue(); assertThat(mCachedDeviceManager.isSubDevice(mDevice2)).isFalse(); assertThat(mCachedDeviceManager.isSubDevice(mDevice3)).isFalse(); assertThat(cachedDevice2.getMemberDevice().contains(cachedDevice1)).isTrue(); } @Test public void switchRelationshipFromMemberToMain_moreMembersCase_switchesSuccessful() { doReturn(CAP_GROUP1).when(mCsipSetCoordinatorProfile).getGroupUuidMapByDevice(mDevice1); CachedBluetoothDevice cachedDevice1 = mCachedDeviceManager.addDevice(mDevice1); doReturn(CAP_GROUP1).when(mCsipSetCoordinatorProfile).getGroupUuidMapByDevice(mDevice2); doReturn(CAP_GROUP1).when(mCsipSetCoordinatorProfile).getGroupUuidMapByDevice(mDevice3); CachedBluetoothDevice cachedDevice2 = mCachedDeviceManager.addDevice(mDevice2); CachedBluetoothDevice cachedDevice3 = mCachedDeviceManager.addDevice(mDevice3); assertThat(cachedDevice1.getMemberDevice().contains(cachedDevice2)).isTrue(); assertThat(cachedDevice1.getMemberDevice().contains(cachedDevice3)).isTrue(); mCachedDeviceManager.switchRelationshipFromMemberToMain(cachedDevice2); assertThat(mCachedDeviceManager.isSubDevice(mDevice1)).isTrue(); assertThat(mCachedDeviceManager.isSubDevice(mDevice2)).isFalse(); assertThat(mCachedDeviceManager.isSubDevice(mDevice3)).isTrue(); assertThat(cachedDevice2.getMemberDevice().contains(cachedDevice1)).isTrue(); assertThat(cachedDevice2.getMemberDevice().contains(cachedDevice3)).isTrue(); } @Test public void switchRelationshipFromMemberToMain_inputDeviceIsMainDevice_doesNotChangelist() { doReturn(CAP_GROUP1).when(mCsipSetCoordinatorProfile).getGroupUuidMapByDevice(mDevice1); CachedBluetoothDevice cachedDevice1 = mCachedDeviceManager.addDevice(mDevice1); doReturn(CAP_GROUP1).when(mCsipSetCoordinatorProfile).getGroupUuidMapByDevice(mDevice2); doReturn(CAP_GROUP1).when(mCsipSetCoordinatorProfile).getGroupUuidMapByDevice(mDevice3); CachedBluetoothDevice cachedDevice2 = mCachedDeviceManager.addDevice(mDevice2); CachedBluetoothDevice cachedDevice3 = mCachedDeviceManager.addDevice(mDevice3); Collection<CachedBluetoothDevice> devices = mCachedDeviceManager.getCachedDevicesCopy(); assertThat(cachedDevice1.getMemberDevice().contains(cachedDevice2)).isTrue(); assertThat(cachedDevice1.getMemberDevice().contains(cachedDevice3)).isTrue(); mCachedDeviceManager.switchRelationshipFromMemberToMain(cachedDevice1); devices = mCachedDeviceManager.getCachedDevicesCopy(); assertThat(devices).contains(cachedDevice1); assertThat(cachedDevice1.getMemberDevice().contains(cachedDevice2)).isTrue(); assertThat(cachedDevice1.getMemberDevice().contains(cachedDevice3)).isTrue(); } @Test public void switchRelationshipFromMemberToMain_inputDeviceNotInMemberList_doesNotChangelist() { doReturn(CAP_GROUP1).when(mCsipSetCoordinatorProfile).getGroupUuidMapByDevice(mDevice1); CachedBluetoothDevice cachedDevice1 = mCachedDeviceManager.addDevice(mDevice1); doReturn(CAP_GROUP1).when(mCsipSetCoordinatorProfile).getGroupUuidMapByDevice(mDevice2); doReturn(CAP_GROUP1).when(mCsipSetCoordinatorProfile).getGroupUuidMapByDevice(mDevice3); CachedBluetoothDevice cachedDevice2 = mCachedDeviceManager.addDevice(mDevice2); cachedDevice1.getMemberDevice().remove(cachedDevice2); CachedBluetoothDevice cachedDevice3 = mCachedDeviceManager.addDevice(mDevice3); Collection<CachedBluetoothDevice> devices = mCachedDeviceManager.getCachedDevicesCopy(); assertThat(cachedDevice1.getMemberDevice().contains(cachedDevice2)).isFalse(); assertThat(cachedDevice1.getMemberDevice().contains(cachedDevice3)).isTrue(); mCachedDeviceManager.switchRelationshipFromMemberToMain(cachedDevice2); devices = mCachedDeviceManager.getCachedDevicesCopy(); assertThat(devices).contains(cachedDevice1); assertThat(cachedDevice1.getMemberDevice().contains(cachedDevice2)).isFalse(); assertThat(cachedDevice1.getMemberDevice().contains(cachedDevice3)).isTrue(); } }
packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/CachedBluetoothDeviceTest.java +0 −19 Original line number Diff line number Diff line Loading @@ -1137,25 +1137,6 @@ public class CachedBluetoothDeviceTest { assertThat(mCachedDevice.mDrawableCache.size()).isEqualTo(0); } @Test public void switchMemberDeviceContent_switchMainDevice_switchesSuccessful() { mCachedDevice.mRssi = RSSI_1; mCachedDevice.mJustDiscovered = JUSTDISCOVERED_1; mSubCachedDevice.mRssi = RSSI_2; mSubCachedDevice.mJustDiscovered = JUSTDISCOVERED_2; mCachedDevice.addMemberDevice(mSubCachedDevice); mCachedDevice.switchMemberDeviceContent(mSubCachedDevice); assertThat(mCachedDevice.mRssi).isEqualTo(RSSI_2); assertThat(mCachedDevice.mJustDiscovered).isEqualTo(JUSTDISCOVERED_2); assertThat(mCachedDevice.mDevice).isEqualTo(mSubDevice); assertThat(mSubCachedDevice.mRssi).isEqualTo(RSSI_1); assertThat(mSubCachedDevice.mJustDiscovered).isEqualTo(JUSTDISCOVERED_1); assertThat(mSubCachedDevice.mDevice).isEqualTo(mDevice); assertThat(mCachedDevice.getMemberDevice().contains(mSubCachedDevice)).isTrue(); } @Test public void isConnectedHearingAidDevice_isConnectedAshaHearingAidDevice_returnTrue() { when(mProfileManager.getHearingAidProfile()).thenReturn(mHearingAidProfile); Loading