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
This commit is contained in:
Ivan Chiang
2018-05-24 17:52:49 +08:00
parent 429c787168
commit c6d7191cb9
2 changed files with 21 additions and 2 deletions

View File

@@ -21,11 +21,13 @@ import android.content.pm.PackageManager;
import androidx.annotation.VisibleForTesting; import androidx.annotation.VisibleForTesting;
import androidx.preference.Preference; import androidx.preference.Preference;
import androidx.preference.PreferenceScreen; import androidx.preference.PreferenceScreen;
import com.android.settings.bluetooth.BluetoothDeviceUpdater; import com.android.settings.bluetooth.BluetoothDeviceUpdater;
import com.android.settings.bluetooth.SavedBluetoothDeviceUpdater; import com.android.settings.bluetooth.SavedBluetoothDeviceUpdater;
import com.android.settings.connecteddevice.dock.DockUpdater;
import com.android.settings.core.BasePreferenceController; import com.android.settings.core.BasePreferenceController;
import com.android.settings.dashboard.DashboardFragment; 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.LifecycleObserver;
import com.android.settingslib.core.lifecycle.events.OnStart; import com.android.settingslib.core.lifecycle.events.OnStart;
import com.android.settingslib.core.lifecycle.events.OnStop; import com.android.settingslib.core.lifecycle.events.OnStop;
@@ -35,10 +37,14 @@ public class PreviouslyConnectedDevicePreferenceController extends BasePreferenc
private Preference mPreference; private Preference mPreference;
private BluetoothDeviceUpdater mBluetoothDeviceUpdater; private BluetoothDeviceUpdater mBluetoothDeviceUpdater;
private DockUpdater mSavedDockUpdater;
private int mPreferenceSize; private int mPreferenceSize;
public PreviouslyConnectedDevicePreferenceController(Context context, String preferenceKey) { public PreviouslyConnectedDevicePreferenceController(Context context, String preferenceKey) {
super(context, preferenceKey); super(context, preferenceKey);
mSavedDockUpdater = FeatureFactory.getFactory(
context).getDockUpdaterFeatureProvider().getSavedDockUpdater(context, this);
} }
@Override @Override
@@ -60,12 +66,14 @@ public class PreviouslyConnectedDevicePreferenceController extends BasePreferenc
@Override @Override
public void onStart() { public void onStart() {
mBluetoothDeviceUpdater.registerCallback(); mBluetoothDeviceUpdater.registerCallback();
mSavedDockUpdater.registerCallback();
updatePreferenceOnSizeChanged(); updatePreferenceOnSizeChanged();
} }
@Override @Override
public void onStop() { public void onStop() {
mBluetoothDeviceUpdater.unregisterCallback(); mBluetoothDeviceUpdater.unregisterCallback();
mSavedDockUpdater.unregisterCallback();
} }
public void init(DashboardFragment fragment) { public void init(DashboardFragment fragment) {
@@ -90,6 +98,11 @@ public class PreviouslyConnectedDevicePreferenceController extends BasePreferenc
mBluetoothDeviceUpdater = bluetoothDeviceUpdater; mBluetoothDeviceUpdater = bluetoothDeviceUpdater;
} }
@VisibleForTesting
void setSavedDockUpdater(DockUpdater savedDockUpdater) {
mSavedDockUpdater = savedDockUpdater;
}
@VisibleForTesting @VisibleForTesting
void setPreferenceSize(int size) { void setPreferenceSize(int size) {
mPreferenceSize = size; mPreferenceSize = size;
@@ -105,4 +118,4 @@ public class PreviouslyConnectedDevicePreferenceController extends BasePreferenc
mPreference.setEnabled(mPreferenceSize != 0); mPreference.setEnabled(mPreferenceSize != 0);
} }
} }
} }

View File

@@ -20,6 +20,7 @@ import android.content.pm.PackageManager;
import androidx.preference.Preference; import androidx.preference.Preference;
import com.android.settings.bluetooth.BluetoothDeviceUpdater; import com.android.settings.bluetooth.BluetoothDeviceUpdater;
import com.android.settings.connecteddevice.dock.DockUpdater;
import com.android.settings.dashboard.DashboardFragment; import com.android.settings.dashboard.DashboardFragment;
import com.android.settings.testutils.SettingsRobolectricTestRunner; import com.android.settings.testutils.SettingsRobolectricTestRunner;
@@ -45,6 +46,8 @@ public class PreviouslyConnectedDevicePreferenceControllerTest {
@Mock @Mock
private BluetoothDeviceUpdater mBluetoothDeviceUpdater; private BluetoothDeviceUpdater mBluetoothDeviceUpdater;
@Mock @Mock
private DockUpdater mDockUpdater;
@Mock
private PackageManager mPackageManager; private PackageManager mPackageManager;
private Context mContext; private Context mContext;
@@ -60,6 +63,7 @@ public class PreviouslyConnectedDevicePreferenceControllerTest {
mPreConnectedDeviceController = mPreConnectedDeviceController =
new PreviouslyConnectedDevicePreferenceController(mContext, KEY); new PreviouslyConnectedDevicePreferenceController(mContext, KEY);
mPreConnectedDeviceController.setBluetoothDeviceUpdater(mBluetoothDeviceUpdater); mPreConnectedDeviceController.setBluetoothDeviceUpdater(mBluetoothDeviceUpdater);
mPreConnectedDeviceController.setSavedDockUpdater(mDockUpdater);
mPreference = new Preference(mContext); mPreference = new Preference(mContext);
mPreConnectedDeviceController.setPreference(mPreference); mPreConnectedDeviceController.setPreference(mPreference);
@@ -70,10 +74,12 @@ public class PreviouslyConnectedDevicePreferenceControllerTest {
// register the callback in onStart() // register the callback in onStart()
mPreConnectedDeviceController.onStart(); mPreConnectedDeviceController.onStart();
verify(mBluetoothDeviceUpdater).registerCallback(); verify(mBluetoothDeviceUpdater).registerCallback();
verify(mDockUpdater).registerCallback();
// unregister the callback in onStop() // unregister the callback in onStop()
mPreConnectedDeviceController.onStop(); mPreConnectedDeviceController.onStop();
verify(mBluetoothDeviceUpdater).unregisterCallback(); verify(mBluetoothDeviceUpdater).unregisterCallback();
verify(mDockUpdater).unregisterCallback();
} }
@Test @Test