Merge changes I44039704,Iee0de8a2
* changes: Use isConnected in CachedBluetoothDevice Update "Previous connected device" preference
This commit is contained in:
@@ -414,6 +414,9 @@
|
|||||||
<!-- Toast text for hint user bluetooth is turned on [CHAR LIMIT=none]-->
|
<!-- Toast text for hint user bluetooth is turned on [CHAR LIMIT=none]-->
|
||||||
<string name="connected_device_bluetooth_turned_on_toast">Bluetooth turned on</string>
|
<string name="connected_device_bluetooth_turned_on_toast">Bluetooth turned on</string>
|
||||||
|
|
||||||
|
<!-- Title to see all the previous connected devices [CHAR LIMIT=50] -->
|
||||||
|
<string name="previous_connected_see_all">See all</string>
|
||||||
|
|
||||||
<!-- Date & time settings screen title -->
|
<!-- Date & time settings screen title -->
|
||||||
<string name="date_and_time">Date & time</string>
|
<string name="date_and_time">Date & time</string>
|
||||||
<!-- The title of the activity to pick a time zone. -->
|
<!-- The title of the activity to pick a time zone. -->
|
||||||
|
@@ -41,18 +41,24 @@
|
|||||||
settings:useAdminDisabledSummary="true"
|
settings:useAdminDisabledSummary="true"
|
||||||
settings:controller="com.android.settings.connecteddevice.AddDevicePreferenceController"/>
|
settings:controller="com.android.settings.connecteddevice.AddDevicePreferenceController"/>
|
||||||
|
|
||||||
<Preference
|
<PreferenceCategory
|
||||||
android:key="previously_connected_devices"
|
android:key="previously_connected_devices"
|
||||||
android:title="@string/connected_device_previously_connected_title"
|
android:title="@string/connected_device_previously_connected_title"
|
||||||
android:icon="@drawable/ic_devices_other_black"
|
settings:controller="com.android.settings.connecteddevice.PreviouslyConnectedDevicePreferenceController">
|
||||||
android:fragment="com.android.settings.connecteddevice.PreviouslyConnectedDeviceDashboardFragment"
|
|
||||||
settings:allowDividerAbove="true"
|
<Preference
|
||||||
settings:controller="com.android.settings.connecteddevice.PreviouslyConnectedDevicePreferenceController"/>
|
android:key="previously_connected_devices_see_all"
|
||||||
|
android:title="@string/previous_connected_see_all"
|
||||||
|
android:icon="@drawable/ic_chevron_right_24dp"
|
||||||
|
android:order="10"
|
||||||
|
android:fragment="com.android.settings.connecteddevice.PreviouslyConnectedDeviceDashboardFragment"/>
|
||||||
|
</PreferenceCategory>
|
||||||
|
|
||||||
<Preference
|
<Preference
|
||||||
android:key="connection_preferences"
|
android:key="connection_preferences"
|
||||||
android:title="@string/connected_device_connections_title"
|
android:title="@string/connected_device_connections_title"
|
||||||
android:fragment="com.android.settings.connecteddevice.AdvancedConnectedDeviceDashboardFragment"
|
android:fragment="com.android.settings.connecteddevice.AdvancedConnectedDeviceDashboardFragment"
|
||||||
|
settings:allowDividerAbove="true"
|
||||||
settings:controller="com.android.settings.connecteddevice.AdvancedConnectedDeviceController"/>
|
settings:controller="com.android.settings.connecteddevice.AdvancedConnectedDeviceController"/>
|
||||||
|
|
||||||
</PreferenceScreen>
|
</PreferenceScreen>
|
||||||
|
@@ -269,8 +269,9 @@ public abstract class BluetoothDeviceUpdater implements BluetoothCallback,
|
|||||||
final BluetoothDevice device = cachedDevice.getDevice();
|
final BluetoothDevice device = cachedDevice.getDevice();
|
||||||
if (DBG) {
|
if (DBG) {
|
||||||
Log.d(TAG, "isDeviceConnected() device name : " + cachedDevice.getName() +
|
Log.d(TAG, "isDeviceConnected() device name : " + cachedDevice.getName() +
|
||||||
", is connected : " + device.isConnected());
|
", is connected : " + device.isConnected() + " , is profile connected : "
|
||||||
|
+ cachedDevice.isConnected());
|
||||||
}
|
}
|
||||||
return device.getBondState() == BluetoothDevice.BOND_BONDED && device.isConnected();
|
return device.getBondState() == BluetoothDevice.BOND_BONDED && cachedDevice.isConnected();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -43,9 +43,10 @@ public class SavedBluetoothDeviceUpdater extends BluetoothDeviceUpdater
|
|||||||
final BluetoothDevice device = cachedDevice.getDevice();
|
final BluetoothDevice device = cachedDevice.getDevice();
|
||||||
if (DBG) {
|
if (DBG) {
|
||||||
Log.d(TAG, "isFilterMatched() device name : " + cachedDevice.getName() +
|
Log.d(TAG, "isFilterMatched() device name : " + cachedDevice.getName() +
|
||||||
", is connected : " + device.isConnected());
|
", is connected : " + device.isConnected() + ", is profile connected : "
|
||||||
|
+ cachedDevice.isConnected());
|
||||||
}
|
}
|
||||||
return device.getBondState() == BluetoothDevice.BOND_BONDED && !device.isConnected();
|
return device.getBondState() == BluetoothDevice.BOND_BONDED && !cachedDevice.isConnected();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@@ -20,6 +20,7 @@ import android.content.pm.PackageManager;
|
|||||||
|
|
||||||
import androidx.annotation.VisibleForTesting;
|
import androidx.annotation.VisibleForTesting;
|
||||||
import androidx.preference.Preference;
|
import androidx.preference.Preference;
|
||||||
|
import androidx.preference.PreferenceGroup;
|
||||||
import androidx.preference.PreferenceScreen;
|
import androidx.preference.PreferenceScreen;
|
||||||
|
|
||||||
import com.android.settings.bluetooth.BluetoothDeviceUpdater;
|
import com.android.settings.bluetooth.BluetoothDeviceUpdater;
|
||||||
@@ -35,7 +36,9 @@ import com.android.settingslib.core.lifecycle.events.OnStop;
|
|||||||
public class PreviouslyConnectedDevicePreferenceController extends BasePreferenceController
|
public class PreviouslyConnectedDevicePreferenceController extends BasePreferenceController
|
||||||
implements LifecycleObserver, OnStart, OnStop, DevicePreferenceCallback {
|
implements LifecycleObserver, OnStart, OnStop, DevicePreferenceCallback {
|
||||||
|
|
||||||
private Preference mPreference;
|
private static final int MAX_DEVICE_NUM = 3;
|
||||||
|
|
||||||
|
private PreferenceGroup mPreferenceGroup;
|
||||||
private BluetoothDeviceUpdater mBluetoothDeviceUpdater;
|
private BluetoothDeviceUpdater mBluetoothDeviceUpdater;
|
||||||
private DockUpdater mSavedDockUpdater;
|
private DockUpdater mSavedDockUpdater;
|
||||||
private int mPreferenceSize;
|
private int mPreferenceSize;
|
||||||
@@ -57,8 +60,10 @@ public class PreviouslyConnectedDevicePreferenceController extends BasePreferenc
|
|||||||
@Override
|
@Override
|
||||||
public void displayPreference(PreferenceScreen screen) {
|
public void displayPreference(PreferenceScreen screen) {
|
||||||
super.displayPreference(screen);
|
super.displayPreference(screen);
|
||||||
|
mPreferenceGroup = (PreferenceGroup) screen.findPreference(getPreferenceKey());
|
||||||
|
mPreferenceGroup.setVisible(false);
|
||||||
|
|
||||||
if (isAvailable()) {
|
if (isAvailable()) {
|
||||||
mPreference = screen.findPreference(getPreferenceKey());
|
|
||||||
final Context context = screen.getContext();
|
final Context context = screen.getContext();
|
||||||
mBluetoothDeviceUpdater.setPrefContext(context);
|
mBluetoothDeviceUpdater.setPrefContext(context);
|
||||||
mSavedDockUpdater.setPreferenceContext(context);
|
mSavedDockUpdater.setPreferenceContext(context);
|
||||||
@@ -69,7 +74,6 @@ public class PreviouslyConnectedDevicePreferenceController extends BasePreferenc
|
|||||||
public void onStart() {
|
public void onStart() {
|
||||||
mBluetoothDeviceUpdater.registerCallback();
|
mBluetoothDeviceUpdater.registerCallback();
|
||||||
mSavedDockUpdater.registerCallback();
|
mSavedDockUpdater.registerCallback();
|
||||||
updatePreferenceOnSizeChanged();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -86,13 +90,17 @@ public class PreviouslyConnectedDevicePreferenceController extends BasePreferenc
|
|||||||
@Override
|
@Override
|
||||||
public void onDeviceAdded(Preference preference) {
|
public void onDeviceAdded(Preference preference) {
|
||||||
mPreferenceSize++;
|
mPreferenceSize++;
|
||||||
updatePreferenceOnSizeChanged();
|
if (mPreferenceSize <= MAX_DEVICE_NUM) {
|
||||||
|
mPreferenceGroup.addPreference(preference);
|
||||||
|
}
|
||||||
|
updatePreferenceVisiblity();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onDeviceRemoved(Preference preference) {
|
public void onDeviceRemoved(Preference preference) {
|
||||||
mPreferenceSize--;
|
mPreferenceSize--;
|
||||||
updatePreferenceOnSizeChanged();
|
mPreferenceGroup.removePreference(preference);
|
||||||
|
updatePreferenceVisiblity();
|
||||||
}
|
}
|
||||||
|
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
@@ -106,18 +114,12 @@ public class PreviouslyConnectedDevicePreferenceController extends BasePreferenc
|
|||||||
}
|
}
|
||||||
|
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
void setPreferenceSize(int size) {
|
void setPreferenceGroup(PreferenceGroup preferenceGroup) {
|
||||||
mPreferenceSize = size;
|
mPreferenceGroup = preferenceGroup;
|
||||||
}
|
}
|
||||||
|
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
void setPreference(Preference preference) {
|
void updatePreferenceVisiblity() {
|
||||||
mPreference = preference;
|
mPreferenceGroup.setVisible(mPreferenceSize > 0);
|
||||||
}
|
|
||||||
|
|
||||||
private void updatePreferenceOnSizeChanged() {
|
|
||||||
if (isAvailable()) {
|
|
||||||
mPreference.setEnabled(mPreferenceSize != 0);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -161,7 +161,7 @@ public class BluetoothDeviceUpdaterTest {
|
|||||||
@Test
|
@Test
|
||||||
public void isDeviceConnected_deviceConnected() {
|
public void isDeviceConnected_deviceConnected() {
|
||||||
doReturn(BluetoothDevice.BOND_BONDED).when(mBluetoothDevice).getBondState();
|
doReturn(BluetoothDevice.BOND_BONDED).when(mBluetoothDevice).getBondState();
|
||||||
doReturn(true).when(mBluetoothDevice).isConnected();
|
doReturn(true).when(mCachedBluetoothDevice).isConnected();
|
||||||
|
|
||||||
assertThat(mBluetoothDeviceUpdater.isDeviceConnected(mCachedBluetoothDevice)).isTrue();
|
assertThat(mBluetoothDeviceUpdater.isDeviceConnected(mCachedBluetoothDevice)).isTrue();
|
||||||
}
|
}
|
||||||
@@ -169,7 +169,7 @@ public class BluetoothDeviceUpdaterTest {
|
|||||||
@Test
|
@Test
|
||||||
public void isDeviceConnected_deviceNotConnected() {
|
public void isDeviceConnected_deviceNotConnected() {
|
||||||
doReturn(BluetoothDevice.BOND_BONDED).when(mBluetoothDevice).getBondState();
|
doReturn(BluetoothDevice.BOND_BONDED).when(mBluetoothDevice).getBondState();
|
||||||
doReturn(false).when(mBluetoothDevice).isConnected();
|
doReturn(false).when(mCachedBluetoothDevice).isConnected();
|
||||||
|
|
||||||
assertThat(mBluetoothDeviceUpdater.isDeviceConnected(mCachedBluetoothDevice)).isFalse();
|
assertThat(mBluetoothDeviceUpdater.isDeviceConnected(mCachedBluetoothDevice)).isFalse();
|
||||||
}
|
}
|
||||||
|
@@ -77,7 +77,7 @@ public class SavedBluetoothDeviceUpdaterTest {
|
|||||||
@Test
|
@Test
|
||||||
public void update_filterMatch_addPreference() {
|
public void update_filterMatch_addPreference() {
|
||||||
doReturn(BluetoothDevice.BOND_BONDED).when(mBluetoothDevice).getBondState();
|
doReturn(BluetoothDevice.BOND_BONDED).when(mBluetoothDevice).getBondState();
|
||||||
doReturn(false).when(mBluetoothDevice).isConnected();
|
doReturn(false).when(mCachedBluetoothDevice).isConnected();
|
||||||
|
|
||||||
mBluetoothDeviceUpdater.update(mCachedBluetoothDevice);
|
mBluetoothDeviceUpdater.update(mCachedBluetoothDevice);
|
||||||
|
|
||||||
@@ -87,7 +87,7 @@ public class SavedBluetoothDeviceUpdaterTest {
|
|||||||
@Test
|
@Test
|
||||||
public void update_filterNotMatch_removePreference() {
|
public void update_filterNotMatch_removePreference() {
|
||||||
doReturn(BluetoothDevice.BOND_NONE).when(mBluetoothDevice).getBondState();
|
doReturn(BluetoothDevice.BOND_NONE).when(mBluetoothDevice).getBondState();
|
||||||
doReturn(true).when(mBluetoothDevice).isConnected();
|
doReturn(true).when(mCachedBluetoothDevice).isConnected();
|
||||||
|
|
||||||
mBluetoothDeviceUpdater.update(mCachedBluetoothDevice);
|
mBluetoothDeviceUpdater.update(mCachedBluetoothDevice);
|
||||||
|
|
||||||
@@ -96,7 +96,7 @@ public class SavedBluetoothDeviceUpdaterTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void onProfileConnectionStateChanged_deviceConnected_removePreference() {
|
public void onProfileConnectionStateChanged_deviceConnected_removePreference() {
|
||||||
when(mBluetoothDevice.isConnected()).thenReturn(true);
|
when(mCachedBluetoothDevice.isConnected()).thenReturn(true);
|
||||||
|
|
||||||
mBluetoothDeviceUpdater.onProfileConnectionStateChanged(mCachedBluetoothDevice,
|
mBluetoothDeviceUpdater.onProfileConnectionStateChanged(mCachedBluetoothDevice,
|
||||||
BluetoothProfile.STATE_CONNECTED, BluetoothProfile.A2DP);
|
BluetoothProfile.STATE_CONNECTED, BluetoothProfile.A2DP);
|
||||||
@@ -106,7 +106,7 @@ public class SavedBluetoothDeviceUpdaterTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void onProfileConnectionStateChanged_deviceDisconnected_addPreference() {
|
public void onProfileConnectionStateChanged_deviceDisconnected_addPreference() {
|
||||||
when(mBluetoothDevice.isConnected()).thenReturn(false);
|
when(mCachedBluetoothDevice.isConnected()).thenReturn(false);
|
||||||
|
|
||||||
mBluetoothDeviceUpdater.onProfileConnectionStateChanged(mCachedBluetoothDevice,
|
mBluetoothDeviceUpdater.onProfileConnectionStateChanged(mCachedBluetoothDevice,
|
||||||
BluetoothProfile.STATE_DISCONNECTED, BluetoothProfile.A2DP);
|
BluetoothProfile.STATE_DISCONNECTED, BluetoothProfile.A2DP);
|
||||||
|
@@ -28,6 +28,9 @@ import android.content.Context;
|
|||||||
import android.content.pm.PackageManager;
|
import android.content.pm.PackageManager;
|
||||||
|
|
||||||
import androidx.preference.Preference;
|
import androidx.preference.Preference;
|
||||||
|
import androidx.preference.PreferenceCategory;
|
||||||
|
import androidx.preference.PreferenceGroup;
|
||||||
|
import androidx.preference.PreferenceManager;
|
||||||
|
|
||||||
import com.android.settings.bluetooth.BluetoothDeviceUpdater;
|
import com.android.settings.bluetooth.BluetoothDeviceUpdater;
|
||||||
import com.android.settings.connecteddevice.dock.DockUpdater;
|
import com.android.settings.connecteddevice.dock.DockUpdater;
|
||||||
@@ -54,10 +57,12 @@ public class PreviouslyConnectedDevicePreferenceControllerTest {
|
|||||||
private DockUpdater mDockUpdater;
|
private DockUpdater mDockUpdater;
|
||||||
@Mock
|
@Mock
|
||||||
private PackageManager mPackageManager;
|
private PackageManager mPackageManager;
|
||||||
|
@Mock
|
||||||
|
private PreferenceManager mPreferenceManager;
|
||||||
|
|
||||||
private Context mContext;
|
private Context mContext;
|
||||||
private PreviouslyConnectedDevicePreferenceController mPreConnectedDeviceController;
|
private PreviouslyConnectedDevicePreferenceController mPreConnectedDeviceController;
|
||||||
private Preference mPreference;
|
private PreferenceGroup mPreferenceGroup;
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setUp() {
|
public void setUp() {
|
||||||
@@ -70,8 +75,10 @@ public class PreviouslyConnectedDevicePreferenceControllerTest {
|
|||||||
mPreConnectedDeviceController.setBluetoothDeviceUpdater(mBluetoothDeviceUpdater);
|
mPreConnectedDeviceController.setBluetoothDeviceUpdater(mBluetoothDeviceUpdater);
|
||||||
mPreConnectedDeviceController.setSavedDockUpdater(mDockUpdater);
|
mPreConnectedDeviceController.setSavedDockUpdater(mDockUpdater);
|
||||||
|
|
||||||
mPreference = new Preference(mContext);
|
mPreferenceGroup = spy(new PreferenceCategory(mContext));
|
||||||
mPreConnectedDeviceController.setPreference(mPreference);
|
doReturn(mPreferenceManager).when(mPreferenceGroup).getPreferenceManager();
|
||||||
|
mPreferenceGroup.setVisible(false);
|
||||||
|
mPreConnectedDeviceController.setPreferenceGroup(mPreferenceGroup);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -101,20 +108,34 @@ public class PreviouslyConnectedDevicePreferenceControllerTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void onDeviceAdded_addFirstDevice_preferenceIsEnable() {
|
public void onDeviceAdded_addDevicePreference_displayIt() {
|
||||||
doReturn(true).when(mPackageManager).hasSystemFeature(PackageManager.FEATURE_BLUETOOTH);
|
mPreConnectedDeviceController.onDeviceAdded(new Preference(mContext));
|
||||||
mPreConnectedDeviceController.setPreferenceSize(0);
|
|
||||||
mPreConnectedDeviceController.onDeviceAdded(mPreference);
|
|
||||||
|
|
||||||
assertThat(mPreference.isEnabled()).isTrue();
|
assertThat(mPreferenceGroup.isVisible()).isTrue();
|
||||||
|
assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void onDeviceRemoved_removeLastDevice_preferenceIsDisable() {
|
public void onDeviceAdded_addFourDevicePreference_onlyDisplayThree() {
|
||||||
doReturn(true).when(mPackageManager).hasSystemFeature(PackageManager.FEATURE_BLUETOOTH);
|
mPreConnectedDeviceController.onDeviceAdded(new Preference(mContext));
|
||||||
mPreConnectedDeviceController.setPreferenceSize(1);
|
mPreConnectedDeviceController.onDeviceAdded(new Preference(mContext));
|
||||||
mPreConnectedDeviceController.onDeviceRemoved(mPreference);
|
mPreConnectedDeviceController.onDeviceAdded(new Preference(mContext));
|
||||||
|
mPreConnectedDeviceController.onDeviceAdded(new Preference(mContext));
|
||||||
|
|
||||||
assertThat(mPreference.isEnabled()).isFalse();
|
assertThat(mPreferenceGroup.isVisible()).isTrue();
|
||||||
|
assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(3);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void onDeviceRemoved_removeLastDevice_setInvisible() {
|
||||||
|
final Preference preference = new Preference(mContext);
|
||||||
|
mPreferenceGroup.addPreference(preference);
|
||||||
|
mPreferenceGroup.setVisible(true);
|
||||||
|
|
||||||
|
mPreConnectedDeviceController.onDeviceRemoved(preference);
|
||||||
|
|
||||||
|
assertThat(mPreferenceGroup.isVisible()).isFalse();
|
||||||
|
assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(0);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user