Loading src/com/android/settings/bluetooth/SavedBluetoothDeviceUpdater.java +19 −1 Original line number Diff line number Diff line Loading @@ -28,6 +28,9 @@ import com.android.settings.dashboard.DashboardFragment; import com.android.settingslib.bluetooth.CachedBluetoothDevice; import com.android.settingslib.bluetooth.CachedBluetoothDeviceManager; import java.util.ArrayList; import java.util.List; /** * Maintain and update saved bluetooth devices(bonded but not connected) */ Loading @@ -54,7 +57,10 @@ public class SavedBluetoothDeviceUpdater extends BluetoothDeviceUpdater if (mBluetoothAdapter.isEnabled()) { final CachedBluetoothDeviceManager cachedManager = 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); if (cachedDevice != null) { update(cachedDevice); Loading @@ -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 public void update(CachedBluetoothDevice cachedDevice) { if (isFilterMatched(cachedDevice)) { Loading tests/robotests/src/com/android/settings/bluetooth/SavedBluetoothDeviceUpdaterTest.java +27 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package com.android.settings.bluetooth; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; Loading Loading @@ -208,4 +209,30 @@ public class SavedBluetoothDeviceUpdaterTest { 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); } } Loading
src/com/android/settings/bluetooth/SavedBluetoothDeviceUpdater.java +19 −1 Original line number Diff line number Diff line Loading @@ -28,6 +28,9 @@ import com.android.settings.dashboard.DashboardFragment; import com.android.settingslib.bluetooth.CachedBluetoothDevice; import com.android.settingslib.bluetooth.CachedBluetoothDeviceManager; import java.util.ArrayList; import java.util.List; /** * Maintain and update saved bluetooth devices(bonded but not connected) */ Loading @@ -54,7 +57,10 @@ public class SavedBluetoothDeviceUpdater extends BluetoothDeviceUpdater if (mBluetoothAdapter.isEnabled()) { final CachedBluetoothDeviceManager cachedManager = 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); if (cachedDevice != null) { update(cachedDevice); Loading @@ -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 public void update(CachedBluetoothDevice cachedDevice) { if (isFilterMatched(cachedDevice)) { Loading
tests/robotests/src/com/android/settings/bluetooth/SavedBluetoothDeviceUpdaterTest.java +27 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package com.android.settings.bluetooth; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; Loading Loading @@ -208,4 +209,30 @@ public class SavedBluetoothDeviceUpdaterTest { 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); } }