From c6d7191cb9530d37523021bcd3d7834fffcb2003 Mon Sep 17 00:00:00 2001 From: Ivan Chiang Date: Thu, 24 May 2018 17:52:49 +0800 Subject: [PATCH] Fix gray out previously connected device preference issue Count the dock devices in previously connected device controller. Change-Id: I08d82ec715698ecf894a4a7cd0631c5f1de0f591 Fix: 80227045 Test: m -j SettingsRoboTests RunSettingsRoboTests --- ...uslyConnectedDevicePreferenceController.java | 17 +++++++++++++++-- ...ConnectedDevicePreferenceControllerTest.java | 6 ++++++ 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/src/com/android/settings/connecteddevice/PreviouslyConnectedDevicePreferenceController.java b/src/com/android/settings/connecteddevice/PreviouslyConnectedDevicePreferenceController.java index bb60df929e4..27b7676a2f2 100644 --- a/src/com/android/settings/connecteddevice/PreviouslyConnectedDevicePreferenceController.java +++ b/src/com/android/settings/connecteddevice/PreviouslyConnectedDevicePreferenceController.java @@ -21,11 +21,13 @@ import android.content.pm.PackageManager; import androidx.annotation.VisibleForTesting; import androidx.preference.Preference; import androidx.preference.PreferenceScreen; + 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; @@ -35,10 +37,14 @@ public class PreviouslyConnectedDevicePreferenceController extends BasePreferenc 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 @@ -60,12 +66,14 @@ public class PreviouslyConnectedDevicePreferenceController extends BasePreferenc @Override public void onStart() { mBluetoothDeviceUpdater.registerCallback(); + mSavedDockUpdater.registerCallback(); updatePreferenceOnSizeChanged(); } @Override public void onStop() { mBluetoothDeviceUpdater.unregisterCallback(); + mSavedDockUpdater.unregisterCallback(); } public void init(DashboardFragment fragment) { @@ -90,6 +98,11 @@ public class PreviouslyConnectedDevicePreferenceController extends BasePreferenc mBluetoothDeviceUpdater = bluetoothDeviceUpdater; } + @VisibleForTesting + void setSavedDockUpdater(DockUpdater savedDockUpdater) { + mSavedDockUpdater = savedDockUpdater; + } + @VisibleForTesting void setPreferenceSize(int size) { mPreferenceSize = size; @@ -105,4 +118,4 @@ public class PreviouslyConnectedDevicePreferenceController extends BasePreferenc mPreference.setEnabled(mPreferenceSize != 0); } } -} \ No newline at end of file +} diff --git a/tests/robotests/src/com/android/settings/connecteddevice/PreviouslyConnectedDevicePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/connecteddevice/PreviouslyConnectedDevicePreferenceControllerTest.java index fd2ff0d8975..6e69e67ba0c 100644 --- a/tests/robotests/src/com/android/settings/connecteddevice/PreviouslyConnectedDevicePreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/connecteddevice/PreviouslyConnectedDevicePreferenceControllerTest.java @@ -20,6 +20,7 @@ import android.content.pm.PackageManager; import androidx.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; @@ -45,6 +46,8 @@ public class PreviouslyConnectedDevicePreferenceControllerTest { @Mock private BluetoothDeviceUpdater mBluetoothDeviceUpdater; @Mock + private DockUpdater mDockUpdater; + @Mock private PackageManager mPackageManager; private Context mContext; @@ -60,6 +63,7 @@ public class PreviouslyConnectedDevicePreferenceControllerTest { mPreConnectedDeviceController = new PreviouslyConnectedDevicePreferenceController(mContext, KEY); mPreConnectedDeviceController.setBluetoothDeviceUpdater(mBluetoothDeviceUpdater); + mPreConnectedDeviceController.setSavedDockUpdater(mDockUpdater); mPreference = new Preference(mContext); mPreConnectedDeviceController.setPreference(mPreference); @@ -70,10 +74,12 @@ public class PreviouslyConnectedDevicePreferenceControllerTest { // 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