diff --git a/src/com/android/settings/connecteddevice/ConnectedDeviceGroupController.java b/src/com/android/settings/connecteddevice/ConnectedDeviceGroupController.java index 3a1aa056ca1..47e3438a12a 100644 --- a/src/com/android/settings/connecteddevice/ConnectedDeviceGroupController.java +++ b/src/com/android/settings/connecteddevice/ConnectedDeviceGroupController.java @@ -22,16 +22,19 @@ import android.support.v7.preference.Preference; import android.support.v7.preference.PreferenceGroup; import android.support.v7.preference.PreferenceScreen; +import com.android.settings.bluetooth.BluetoothDeviceUpdater; +import com.android.settings.bluetooth.ConnectedBluetoothDeviceUpdater; +import com.android.settings.connecteddevice.dock.DockUpdater; import com.android.settings.connecteddevice.usb.ConnectedUsbDeviceUpdater; import com.android.settings.core.BasePreferenceController; import com.android.settings.core.PreferenceControllerMixin; -import com.android.settings.bluetooth.BluetoothDeviceUpdater; -import com.android.settings.bluetooth.ConnectedBluetoothDeviceUpdater; -import com.android.settingslib.core.lifecycle.Lifecycle; -import com.android.settingslib.core.lifecycle.LifecycleObserver; import com.android.settings.dashboard.DashboardFragment; +import com.android.settings.overlay.DockUpdaterFeatureProvider; +import com.android.settings.overlay.FeatureFactory; import com.android.settingslib.core.lifecycle.events.OnStart; import com.android.settingslib.core.lifecycle.events.OnStop; +import com.android.settingslib.core.lifecycle.Lifecycle; +import com.android.settingslib.core.lifecycle.LifecycleObserver; /** * Controller to maintain the {@link android.support.v7.preference.PreferenceGroup} for all @@ -47,6 +50,7 @@ public class ConnectedDeviceGroupController extends BasePreferenceController PreferenceGroup mPreferenceGroup; private BluetoothDeviceUpdater mBluetoothDeviceUpdater; private ConnectedUsbDeviceUpdater mConnectedUsbDeviceUpdater; + private DockUpdater mConnectedDockUpdater; public ConnectedDeviceGroupController(Context context) { super(context, KEY); @@ -56,12 +60,14 @@ public class ConnectedDeviceGroupController extends BasePreferenceController public void onStart() { mBluetoothDeviceUpdater.registerCallback(); mConnectedUsbDeviceUpdater.registerCallback(); + mConnectedDockUpdater.registerCallback(); } @Override public void onStop() { mConnectedUsbDeviceUpdater.unregisterCallback(); mBluetoothDeviceUpdater.unregisterCallback(); + mConnectedDockUpdater.unregisterCallback(); } @Override @@ -74,6 +80,7 @@ public class ConnectedDeviceGroupController extends BasePreferenceController mBluetoothDeviceUpdater.setPrefContext(screen.getContext()); mBluetoothDeviceUpdater.forceUpdate(); mConnectedUsbDeviceUpdater.initUsbPreference(screen.getContext()); + mConnectedDockUpdater.forceUpdate(); } } @@ -107,13 +114,22 @@ public class ConnectedDeviceGroupController extends BasePreferenceController @VisibleForTesting public void init(BluetoothDeviceUpdater bluetoothDeviceUpdater, - ConnectedUsbDeviceUpdater connectedUsbDeviceUpdater) { + ConnectedUsbDeviceUpdater connectedUsbDeviceUpdater, + DockUpdater connectedDockUpdater) { + mBluetoothDeviceUpdater = bluetoothDeviceUpdater; mConnectedUsbDeviceUpdater = connectedUsbDeviceUpdater; + mConnectedDockUpdater = connectedDockUpdater; } public void init(DashboardFragment fragment) { - init(new ConnectedBluetoothDeviceUpdater(fragment.getContext(), fragment, this), - new ConnectedUsbDeviceUpdater(fragment.getContext(), fragment, this)); + final Context context = fragment.getContext(); + DockUpdaterFeatureProvider dockUpdaterFeatureProvider = + FeatureFactory.getFactory(context).getDockUpdaterFeatureProvider(); + final DockUpdater connectedDockUpdater = + dockUpdaterFeatureProvider.getConnectedDockUpdater(context, this); + init(new ConnectedBluetoothDeviceUpdater(context, fragment, this), + new ConnectedUsbDeviceUpdater(context, fragment, this), + connectedDockUpdater); } } diff --git a/tests/robotests/src/com/android/settings/connecteddevice/ConnectedDeviceGroupControllerTest.java b/tests/robotests/src/com/android/settings/connecteddevice/ConnectedDeviceGroupControllerTest.java index e3e11bcf8f5..30398953664 100644 --- a/tests/robotests/src/com/android/settings/connecteddevice/ConnectedDeviceGroupControllerTest.java +++ b/tests/robotests/src/com/android/settings/connecteddevice/ConnectedDeviceGroupControllerTest.java @@ -19,6 +19,7 @@ import static com.android.settings.core.BasePreferenceController.AVAILABLE; import static com.android.settings.core.BasePreferenceController.DISABLED_UNSUPPORTED; import static com.google.common.truth.Truth.assertThat; + import static org.mockito.Matchers.anyString; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.spy; @@ -34,6 +35,7 @@ import android.support.v7.preference.PreferenceManager; import android.support.v7.preference.PreferenceScreen; import com.android.settings.bluetooth.ConnectedBluetoothDeviceUpdater; +import com.android.settings.connecteddevice.dock.DockUpdater; import com.android.settings.connecteddevice.usb.ConnectedUsbDeviceUpdater; import com.android.settings.dashboard.DashboardFragment; import com.android.settings.testutils.SettingsRobolectricTestRunner; @@ -63,6 +65,8 @@ public class ConnectedDeviceGroupControllerTest { @Mock private ConnectedUsbDeviceUpdater mConnectedUsbDeviceUpdater; @Mock + private DockUpdater mConnectedDockUpdater; + @Mock private PreferenceScreen mPreferenceScreen; @Mock(answer = Answers.RETURNS_DEEP_STUBS) private PreferenceManager mPreferenceManager; @@ -87,8 +91,8 @@ public class ConnectedDeviceGroupControllerTest { doReturn(mContext).when(mDashboardFragment).getContext(); mConnectedDeviceGroupController = new ConnectedDeviceGroupController(mContext); - mConnectedDeviceGroupController - .init(mConnectedBluetoothDeviceUpdater, mConnectedUsbDeviceUpdater); + mConnectedDeviceGroupController.init(mConnectedBluetoothDeviceUpdater, + mConnectedUsbDeviceUpdater, mConnectedDockUpdater); mConnectedDeviceGroupController.mPreferenceGroup = mPreferenceGroup; } @@ -136,6 +140,7 @@ public class ConnectedDeviceGroupControllerTest { mConnectedDeviceGroupController.onStart(); verify(mConnectedBluetoothDeviceUpdater).registerCallback(); verify(mConnectedUsbDeviceUpdater).registerCallback(); + verify(mConnectedDockUpdater).registerCallback(); } @Test @@ -144,6 +149,7 @@ public class ConnectedDeviceGroupControllerTest { mConnectedDeviceGroupController.onStop(); verify(mConnectedBluetoothDeviceUpdater).unregisterCallback(); verify(mConnectedUsbDeviceUpdater).unregisterCallback(); + verify(mConnectedDockUpdater).unregisterCallback(); } @Test