Merge "Show all devices, including connected ones, into "Previously connected" page" into rvc-qpr-dev
diff --git a/src/com/android/settings/bluetooth/SavedBluetoothDeviceUpdater.java b/src/com/android/settings/bluetooth/SavedBluetoothDeviceUpdater.java
index 466d60e..dab4f23 100644
--- a/src/com/android/settings/bluetooth/SavedBluetoothDeviceUpdater.java
+++ b/src/com/android/settings/bluetooth/SavedBluetoothDeviceUpdater.java
@@ -24,6 +24,7 @@
 import androidx.preference.Preference;
 
 import com.android.settings.connecteddevice.DevicePreferenceCallback;
+import com.android.settings.connecteddevice.PreviouslyConnectedDeviceDashboardFragment;
 import com.android.settings.dashboard.DashboardFragment;
 import com.android.settingslib.bluetooth.CachedBluetoothDevice;
 import com.android.settingslib.bluetooth.CachedBluetoothDeviceManager;
@@ -42,13 +43,15 @@
 
     private static final String PREF_KEY = "saved_bt";
 
+    private final boolean mDisplayConnected;
+
     @VisibleForTesting
     BluetoothAdapter mBluetoothAdapter;
 
     public SavedBluetoothDeviceUpdater(Context context, DashboardFragment fragment,
             DevicePreferenceCallback devicePreferenceCallback) {
         super(context, fragment, devicePreferenceCallback);
-
+        mDisplayConnected = (fragment instanceof PreviouslyConnectedDeviceDashboardFragment);
         mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
     }
 
@@ -101,7 +104,8 @@
                     ", is connected : " + device.isConnected() + ", is profile connected : "
                     + cachedDevice.isConnected());
         }
-        return device.getBondState() == BluetoothDevice.BOND_BONDED && !device.isConnected();
+        return device.getBondState() == BluetoothDevice.BOND_BONDED
+                && (mDisplayConnected || !device.isConnected());
     }
 
     @Override
@@ -109,6 +113,9 @@
         mMetricsFeatureProvider.logClickedPreference(preference, mFragment.getMetricsCategory());
         final CachedBluetoothDevice device = ((BluetoothDevicePreference) preference)
                 .getBluetoothDevice();
+        if (device.isConnected()) {
+            return device.setActive();
+        }
         device.connect();
         return true;
     }
diff --git a/tests/robotests/src/com/android/settings/bluetooth/SavedBluetoothDeviceUpdaterTest.java b/tests/robotests/src/com/android/settings/bluetooth/SavedBluetoothDeviceUpdaterTest.java
index da11781..20cc59d 100644
--- a/tests/robotests/src/com/android/settings/bluetooth/SavedBluetoothDeviceUpdaterTest.java
+++ b/tests/robotests/src/com/android/settings/bluetooth/SavedBluetoothDeviceUpdaterTest.java
@@ -145,6 +145,15 @@
     }
 
     @Test
+    public void onClick_Preference_connected_setActive() {
+        when(mCachedBluetoothDevice.isConnected()).thenReturn(true);
+
+        mBluetoothDeviceUpdater.onPreferenceClick(mPreference);
+
+        verify(mCachedBluetoothDevice).setActive();
+    }
+
+    @Test
     public void forceUpdate_findCachedBluetoothDeviceIsMatched_addPreference() {
         final List<BluetoothDevice> bluetoothDevices = new ArrayList<>();
         bluetoothDevices.add(mBluetoothDevice);