Fix gray out previously connected device preference issue

Count the dock devices in previously connected device controller.

Fix: 80227045
Test: m -j SettingsRoboTests RunSettingsRoboTests
Change-Id: I08d82ec715698ecf894a4a7cd0631c5f1de0f591
Merged-In: I08d82ec715698ecf894a4a7cd0631c5f1de0f591
diff --git a/src/com/android/settings/connecteddevice/PreviouslyConnectedDevicePreferenceController.java b/src/com/android/settings/connecteddevice/PreviouslyConnectedDevicePreferenceController.java
index ba3ee1f..73c95ab 100644
--- a/src/com/android/settings/connecteddevice/PreviouslyConnectedDevicePreferenceController.java
+++ b/src/com/android/settings/connecteddevice/PreviouslyConnectedDevicePreferenceController.java
@@ -21,26 +21,29 @@
 import android.support.v7.preference.Preference;
 import android.support.v7.preference.PreferenceScreen;
 
-import android.util.Log;
 import com.android.settings.bluetooth.BluetoothDeviceUpdater;
 import com.android.settings.bluetooth.SavedBluetoothDeviceUpdater;
+import com.android.settings.connecteddevice.dock.DockUpdater;
 import com.android.settings.core.BasePreferenceController;
 import com.android.settings.dashboard.DashboardFragment;
-
+import com.android.settings.overlay.FeatureFactory;
 import com.android.settingslib.core.lifecycle.LifecycleObserver;
 import com.android.settingslib.core.lifecycle.events.OnStart;
 import com.android.settingslib.core.lifecycle.events.OnStop;
-import com.android.settingslib.utils.ThreadUtils;
 
 public class PreviouslyConnectedDevicePreferenceController extends BasePreferenceController
         implements LifecycleObserver, OnStart, OnStop, DevicePreferenceCallback {
 
     private Preference mPreference;
     private BluetoothDeviceUpdater mBluetoothDeviceUpdater;
+    private DockUpdater mSavedDockUpdater;
     private int mPreferenceSize;
 
     public PreviouslyConnectedDevicePreferenceController(Context context, String preferenceKey) {
         super(context, preferenceKey);
+
+        mSavedDockUpdater = FeatureFactory.getFactory(
+                context).getDockUpdaterFeatureProvider().getSavedDockUpdater(context, this);
     }
 
     @Override
@@ -62,12 +65,14 @@
     @Override
     public void onStart() {
         mBluetoothDeviceUpdater.registerCallback();
+        mSavedDockUpdater.registerCallback();
         updatePreferenceOnSizeChanged();
     }
 
     @Override
     public void onStop() {
         mBluetoothDeviceUpdater.unregisterCallback();
+        mSavedDockUpdater.unregisterCallback();
     }
 
     public void init(DashboardFragment fragment) {
@@ -93,6 +98,11 @@
     }
 
     @VisibleForTesting
+    void setSavedDockUpdater(DockUpdater savedDockUpdater) {
+        mSavedDockUpdater = savedDockUpdater;
+    }
+
+    @VisibleForTesting
     void setPreferenceSize(int size) {
         mPreferenceSize = size;
     }
diff --git a/tests/robotests/src/com/android/settings/connecteddevice/PreviouslyConnectedDevicePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/connecteddevice/PreviouslyConnectedDevicePreferenceControllerTest.java
index 444728a..d04b206 100644
--- a/tests/robotests/src/com/android/settings/connecteddevice/PreviouslyConnectedDevicePreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/connecteddevice/PreviouslyConnectedDevicePreferenceControllerTest.java
@@ -21,6 +21,7 @@
 import android.support.v7.preference.Preference;
 
 import com.android.settings.bluetooth.BluetoothDeviceUpdater;
+import com.android.settings.connecteddevice.dock.DockUpdater;
 import com.android.settings.dashboard.DashboardFragment;
 import com.android.settings.testutils.SettingsRobolectricTestRunner;
 
@@ -46,6 +47,8 @@
     @Mock
     private BluetoothDeviceUpdater mBluetoothDeviceUpdater;
     @Mock
+    private DockUpdater mDockUpdater;
+    @Mock
     private PackageManager mPackageManager;
 
     private Context mContext;
@@ -61,6 +64,7 @@
         mPreConnectedDeviceController =
                 new PreviouslyConnectedDevicePreferenceController(mContext, KEY);
         mPreConnectedDeviceController.setBluetoothDeviceUpdater(mBluetoothDeviceUpdater);
+        mPreConnectedDeviceController.setSavedDockUpdater(mDockUpdater);
 
         mPreference = new Preference(mContext);
         mPreConnectedDeviceController.setPreference(mPreference);
@@ -71,10 +75,12 @@
         // register the callback in onStart()
         mPreConnectedDeviceController.onStart();
         verify(mBluetoothDeviceUpdater).registerCallback();
+        verify(mDockUpdater).registerCallback();
 
         // unregister the callback in onStop()
         mPreConnectedDeviceController.onStop();
         verify(mBluetoothDeviceUpdater).unregisterCallback();
+        verify(mDockUpdater).unregisterCallback();
     }
 
     @Test