Merge "[Connected devices page] Move the refresh logic to main thread." into main
This commit is contained in:
@@ -170,34 +170,36 @@ public class PreviouslyConnectedDevicePreferenceController extends BasePreferenc
|
|||||||
|
|
||||||
/** Sort the preferenceGroup by most recently used. */
|
/** Sort the preferenceGroup by most recently used. */
|
||||||
public void updatePreferenceGroup() {
|
public void updatePreferenceGroup() {
|
||||||
mPreferenceGroup.removeAll();
|
mContext.getMainExecutor().execute(() -> {
|
||||||
if (mBluetoothAdapter != null && mBluetoothAdapter.isEnabled()) {
|
mPreferenceGroup.removeAll();
|
||||||
// Bluetooth is supported
|
if (mBluetoothAdapter != null && mBluetoothAdapter.isEnabled()) {
|
||||||
int order = 0;
|
// Bluetooth is supported
|
||||||
for (BluetoothDevice device : mBluetoothAdapter.getMostRecentlyConnectedDevices()) {
|
int order = 0;
|
||||||
Preference preference = mDevicePreferenceMap.getOrDefault(device, null);
|
for (BluetoothDevice device : mBluetoothAdapter.getMostRecentlyConnectedDevices()) {
|
||||||
if (preference != null) {
|
Preference preference = mDevicePreferenceMap.getOrDefault(device, null);
|
||||||
Log.d(TAG, "Adding preference with order " + order + " when there are "
|
if (preference != null) {
|
||||||
+ mPreferenceGroup.getPreferenceCount());
|
Log.d(TAG, "Adding preference with order " + order + " when there are "
|
||||||
|
+ mPreferenceGroup.getPreferenceCount());
|
||||||
|
preference.setOrder(order);
|
||||||
|
mPreferenceGroup.addPreference(preference);
|
||||||
|
order += 1;
|
||||||
|
}
|
||||||
|
if (order == MAX_DEVICE_NUM) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (Preference preference : mDockDevicesList) {
|
||||||
|
if (order == MAX_DEVICE_NUM) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
preference.setOrder(order);
|
preference.setOrder(order);
|
||||||
mPreferenceGroup.addPreference(preference);
|
mPreferenceGroup.addPreference(preference);
|
||||||
order += 1;
|
order += 1;
|
||||||
}
|
}
|
||||||
if (order == MAX_DEVICE_NUM) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
for (Preference preference : mDockDevicesList) {
|
mPreferenceGroup.addPreference(mSeeAllPreference);
|
||||||
if (order == MAX_DEVICE_NUM) {
|
updatePreferenceVisibility();
|
||||||
break;
|
});
|
||||||
}
|
|
||||||
preference.setOrder(order);
|
|
||||||
mPreferenceGroup.addPreference(preference);
|
|
||||||
order += 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
mPreferenceGroup.addPreference(mSeeAllPreference);
|
|
||||||
updatePreferenceVisibility();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
|
@@ -24,6 +24,7 @@ import static org.mockito.Mockito.doReturn;
|
|||||||
import static org.mockito.Mockito.spy;
|
import static org.mockito.Mockito.spy;
|
||||||
import static org.mockito.Mockito.verify;
|
import static org.mockito.Mockito.verify;
|
||||||
import static org.mockito.Mockito.when;
|
import static org.mockito.Mockito.when;
|
||||||
|
import static org.robolectric.Shadows.shadowOf;
|
||||||
|
|
||||||
import android.bluetooth.BluetoothAdapter;
|
import android.bluetooth.BluetoothAdapter;
|
||||||
import android.bluetooth.BluetoothDevice;
|
import android.bluetooth.BluetoothDevice;
|
||||||
@@ -31,6 +32,7 @@ import android.bluetooth.BluetoothManager;
|
|||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.pm.PackageManager;
|
import android.content.pm.PackageManager;
|
||||||
import android.graphics.drawable.Drawable;
|
import android.graphics.drawable.Drawable;
|
||||||
|
import android.os.Looper;
|
||||||
import android.platform.test.flag.junit.CheckFlagsRule;
|
import android.platform.test.flag.junit.CheckFlagsRule;
|
||||||
import android.platform.test.flag.junit.DeviceFlagsValueProvider;
|
import android.platform.test.flag.junit.DeviceFlagsValueProvider;
|
||||||
import android.util.Pair;
|
import android.util.Pair;
|
||||||
@@ -226,6 +228,7 @@ public class PreviouslyConnectedDevicePreferenceControllerTest {
|
|||||||
mContext, mCachedDevice1, true, BluetoothDevicePreference.SortType.TYPE_NO_SORT);
|
mContext, mCachedDevice1, true, BluetoothDevicePreference.SortType.TYPE_NO_SORT);
|
||||||
|
|
||||||
mPreConnectedDeviceController.onDeviceAdded(preference1);
|
mPreConnectedDeviceController.onDeviceAdded(preference1);
|
||||||
|
shadowOf(Looper.getMainLooper()).runToEndOfTasks();
|
||||||
|
|
||||||
assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(2);
|
assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(2);
|
||||||
}
|
}
|
||||||
@@ -236,6 +239,7 @@ public class PreviouslyConnectedDevicePreferenceControllerTest {
|
|||||||
mContext, null /* AttributeSet */);
|
mContext, null /* AttributeSet */);
|
||||||
|
|
||||||
mPreConnectedDeviceController.onDeviceAdded(dockPreference);
|
mPreConnectedDeviceController.onDeviceAdded(dockPreference);
|
||||||
|
shadowOf(Looper.getMainLooper()).runToEndOfTasks();
|
||||||
|
|
||||||
assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(2);
|
assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(2);
|
||||||
}
|
}
|
||||||
@@ -258,6 +262,7 @@ public class PreviouslyConnectedDevicePreferenceControllerTest {
|
|||||||
mPreConnectedDeviceController.onDeviceAdded(preference3);
|
mPreConnectedDeviceController.onDeviceAdded(preference3);
|
||||||
mPreConnectedDeviceController.onDeviceAdded(preference4);
|
mPreConnectedDeviceController.onDeviceAdded(preference4);
|
||||||
mPreConnectedDeviceController.onDeviceAdded(dockPreference);
|
mPreConnectedDeviceController.onDeviceAdded(dockPreference);
|
||||||
|
shadowOf(Looper.getMainLooper()).runToEndOfTasks();
|
||||||
|
|
||||||
// 3 BluetoothDevicePreference and 1 see all preference
|
// 3 BluetoothDevicePreference and 1 see all preference
|
||||||
assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(4);
|
assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(4);
|
||||||
@@ -269,6 +274,7 @@ public class PreviouslyConnectedDevicePreferenceControllerTest {
|
|||||||
mContext, mCachedDevice5, true, BluetoothDevicePreference.SortType.TYPE_NO_SORT);
|
mContext, mCachedDevice5, true, BluetoothDevicePreference.SortType.TYPE_NO_SORT);
|
||||||
|
|
||||||
mPreConnectedDeviceController.onDeviceAdded(preference);
|
mPreConnectedDeviceController.onDeviceAdded(preference);
|
||||||
|
shadowOf(Looper.getMainLooper()).runToEndOfTasks();
|
||||||
|
|
||||||
// 1 see all preference
|
// 1 see all preference
|
||||||
assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(1);
|
assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(1);
|
||||||
@@ -280,6 +286,7 @@ public class PreviouslyConnectedDevicePreferenceControllerTest {
|
|||||||
mContext, mCachedDevice5, true, BluetoothDevicePreference.SortType.TYPE_NO_SORT);
|
mContext, mCachedDevice5, true, BluetoothDevicePreference.SortType.TYPE_NO_SORT);
|
||||||
|
|
||||||
mPreConnectedDeviceController.onDeviceAdded(preference);
|
mPreConnectedDeviceController.onDeviceAdded(preference);
|
||||||
|
shadowOf(Looper.getMainLooper()).runToEndOfTasks();
|
||||||
|
|
||||||
// 1 see all preference
|
// 1 see all preference
|
||||||
assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(1);
|
assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(1);
|
||||||
@@ -296,6 +303,7 @@ public class PreviouslyConnectedDevicePreferenceControllerTest {
|
|||||||
|
|
||||||
mPreConnectedDeviceController.onDeviceRemoved(preference1);
|
mPreConnectedDeviceController.onDeviceRemoved(preference1);
|
||||||
mPreConnectedDeviceController.onDeviceRemoved(dockPreference);
|
mPreConnectedDeviceController.onDeviceRemoved(dockPreference);
|
||||||
|
shadowOf(Looper.getMainLooper()).runToEndOfTasks();
|
||||||
|
|
||||||
assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(1);
|
assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(1);
|
||||||
}
|
}
|
||||||
@@ -345,6 +353,7 @@ public class PreviouslyConnectedDevicePreferenceControllerTest {
|
|||||||
mPreConnectedDeviceController.onDeviceAdded(preference2);
|
mPreConnectedDeviceController.onDeviceAdded(preference2);
|
||||||
|
|
||||||
mPreConnectedDeviceController.updatePreferenceGroup();
|
mPreConnectedDeviceController.updatePreferenceGroup();
|
||||||
|
shadowOf(Looper.getMainLooper()).runToEndOfTasks();
|
||||||
|
|
||||||
// Refer to the order of {@link #mMostRecentlyConnectedDevices}, the first one is see all
|
// Refer to the order of {@link #mMostRecentlyConnectedDevices}, the first one is see all
|
||||||
// preference
|
// preference
|
||||||
@@ -380,6 +389,7 @@ public class PreviouslyConnectedDevicePreferenceControllerTest {
|
|||||||
mPreConnectedDeviceController.onDeviceAdded(preference2);
|
mPreConnectedDeviceController.onDeviceAdded(preference2);
|
||||||
|
|
||||||
mPreConnectedDeviceController.updatePreferenceGroup();
|
mPreConnectedDeviceController.updatePreferenceGroup();
|
||||||
|
shadowOf(Looper.getMainLooper()).runToEndOfTasks();
|
||||||
|
|
||||||
// 1 see all preference
|
// 1 see all preference
|
||||||
assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(1);
|
assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(1);
|
||||||
|
Reference in New Issue
Block a user