Merge "Fix incorrect UI issue of "previously connected devices""
This commit is contained in:
committed by
Android (Google) Code Review
commit
181ca05462
@@ -28,6 +28,9 @@ import com.android.settings.dashboard.DashboardFragment;
|
|||||||
import com.android.settingslib.bluetooth.CachedBluetoothDevice;
|
import com.android.settingslib.bluetooth.CachedBluetoothDevice;
|
||||||
import com.android.settingslib.bluetooth.CachedBluetoothDeviceManager;
|
import com.android.settingslib.bluetooth.CachedBluetoothDeviceManager;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Maintain and update saved bluetooth devices(bonded but not connected)
|
* Maintain and update saved bluetooth devices(bonded but not connected)
|
||||||
*/
|
*/
|
||||||
@@ -54,7 +57,10 @@ public class SavedBluetoothDeviceUpdater extends BluetoothDeviceUpdater
|
|||||||
if (mBluetoothAdapter.isEnabled()) {
|
if (mBluetoothAdapter.isEnabled()) {
|
||||||
final CachedBluetoothDeviceManager cachedManager =
|
final CachedBluetoothDeviceManager cachedManager =
|
||||||
mLocalManager.getCachedDeviceManager();
|
mLocalManager.getCachedDeviceManager();
|
||||||
for (BluetoothDevice device : mBluetoothAdapter.getMostRecentlyConnectedDevices()) {
|
final List<BluetoothDevice> bluetoothDevices =
|
||||||
|
mBluetoothAdapter.getMostRecentlyConnectedDevices();
|
||||||
|
removePreferenceIfNecessary(bluetoothDevices, cachedManager);
|
||||||
|
for (BluetoothDevice device : bluetoothDevices) {
|
||||||
final CachedBluetoothDevice cachedDevice = cachedManager.findDevice(device);
|
final CachedBluetoothDevice cachedDevice = cachedManager.findDevice(device);
|
||||||
if (cachedDevice != null) {
|
if (cachedDevice != null) {
|
||||||
update(cachedDevice);
|
update(cachedDevice);
|
||||||
@@ -65,6 +71,18 @@ public class SavedBluetoothDeviceUpdater extends BluetoothDeviceUpdater
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void removePreferenceIfNecessary(List<BluetoothDevice> bluetoothDevices,
|
||||||
|
CachedBluetoothDeviceManager cachedManager) {
|
||||||
|
for (BluetoothDevice device : new ArrayList<>(mPreferenceMap.keySet())) {
|
||||||
|
if (!bluetoothDevices.contains(device)) {
|
||||||
|
final CachedBluetoothDevice cachedDevice = cachedManager.findDevice(device);
|
||||||
|
if (cachedDevice != null) {
|
||||||
|
removePreference(cachedDevice);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void update(CachedBluetoothDevice cachedDevice) {
|
public void update(CachedBluetoothDevice cachedDevice) {
|
||||||
if (isFilterMatched(cachedDevice)) {
|
if (isFilterMatched(cachedDevice)) {
|
||||||
|
@@ -18,6 +18,7 @@ package com.android.settings.bluetooth;
|
|||||||
import static org.mockito.ArgumentMatchers.any;
|
import static org.mockito.ArgumentMatchers.any;
|
||||||
import static org.mockito.Mockito.doNothing;
|
import static org.mockito.Mockito.doNothing;
|
||||||
import static org.mockito.Mockito.doReturn;
|
import static org.mockito.Mockito.doReturn;
|
||||||
|
import static org.mockito.Mockito.mock;
|
||||||
import static org.mockito.Mockito.never;
|
import static org.mockito.Mockito.never;
|
||||||
import static org.mockito.Mockito.spy;
|
import static org.mockito.Mockito.spy;
|
||||||
import static org.mockito.Mockito.verify;
|
import static org.mockito.Mockito.verify;
|
||||||
@@ -208,4 +209,30 @@ public class SavedBluetoothDeviceUpdaterTest {
|
|||||||
|
|
||||||
verify(mBluetoothDeviceUpdater).removeAllDevicesFromPreference();
|
verify(mBluetoothDeviceUpdater).removeAllDevicesFromPreference();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void forceUpdate_deviceNotContain_removePreference() {
|
||||||
|
final List<BluetoothDevice> bluetoothDevices = new ArrayList<>();
|
||||||
|
bluetoothDevices.add(mBluetoothDevice);
|
||||||
|
final BluetoothDevice device2 = mock(BluetoothDevice.class);
|
||||||
|
final CachedBluetoothDevice cachedDevice2 = mock(CachedBluetoothDevice.class);
|
||||||
|
|
||||||
|
mBluetoothDeviceUpdater.mPreferenceMap.put(device2, mPreference);
|
||||||
|
|
||||||
|
when(cachedDevice2.getDevice()).thenReturn(device2);
|
||||||
|
when(cachedDevice2.getAddress()).thenReturn("04:52:C7:0B:D8:3S");
|
||||||
|
when(mDeviceManager.findDevice(device2)).thenReturn(cachedDevice2);
|
||||||
|
when(mBluetoothAdapter.isEnabled()).thenReturn(true);
|
||||||
|
when(mBluetoothAdapter.getMostRecentlyConnectedDevices()).thenReturn(bluetoothDevices);
|
||||||
|
when(mBluetoothManager.getCachedDeviceManager()).thenReturn(mDeviceManager);
|
||||||
|
when(mDeviceManager.findDevice(mBluetoothDevice)).thenReturn(mCachedBluetoothDevice);
|
||||||
|
when(mBluetoothDevice.getBondState()).thenReturn(BluetoothDevice.BOND_BONDED);
|
||||||
|
when(mBluetoothDevice.isConnected()).thenReturn(false);
|
||||||
|
|
||||||
|
mBluetoothDeviceUpdater.forceUpdate();
|
||||||
|
|
||||||
|
verify(mBluetoothDeviceUpdater).removePreference(cachedDevice2);
|
||||||
|
verify(mBluetoothDeviceUpdater).addPreference(mCachedBluetoothDevice,
|
||||||
|
BluetoothDevicePreference.SortType.TYPE_NO_SORT);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user