diff --git a/src/com/android/settings/connecteddevice/ConnectedDeviceGroupController.java b/src/com/android/settings/connecteddevice/ConnectedDeviceGroupController.java index 984b79128dd..2e5598bac61 100644 --- a/src/com/android/settings/connecteddevice/ConnectedDeviceGroupController.java +++ b/src/com/android/settings/connecteddevice/ConnectedDeviceGroupController.java @@ -22,16 +22,19 @@ import androidx.preference.Preference; import androidx.preference.PreferenceGroup; import androidx.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 androidx.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/src/com/android/settings/connecteddevice/SavedDeviceGroupController.java b/src/com/android/settings/connecteddevice/SavedDeviceGroupController.java index 99c70c965ab..5d63ea51b21 100644 --- a/src/com/android/settings/connecteddevice/SavedDeviceGroupController.java +++ b/src/com/android/settings/connecteddevice/SavedDeviceGroupController.java @@ -24,9 +24,12 @@ 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.core.PreferenceControllerMixin; import com.android.settings.dashboard.DashboardFragment; +import com.android.settings.overlay.DockUpdaterFeatureProvider; +import com.android.settings.overlay.FeatureFactory; import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.core.lifecycle.LifecycleObserver; import com.android.settingslib.core.lifecycle.events.OnStart; @@ -45,19 +48,27 @@ public class SavedDeviceGroupController extends BasePreferenceController @VisibleForTesting PreferenceGroup mPreferenceGroup; private BluetoothDeviceUpdater mBluetoothDeviceUpdater; + private DockUpdater mSavedDockUpdater; public SavedDeviceGroupController(Context context) { super(context, KEY); + + DockUpdaterFeatureProvider dockUpdaterFeatureProvider = + FeatureFactory.getFactory(context).getDockUpdaterFeatureProvider(); + mSavedDockUpdater = + dockUpdaterFeatureProvider.getSavedDockUpdater(context, this); } @Override public void onStart() { mBluetoothDeviceUpdater.registerCallback(); + mSavedDockUpdater.registerCallback(); } @Override public void onStop() { mBluetoothDeviceUpdater.unregisterCallback(); + mSavedDockUpdater.unregisterCallback(); } @Override @@ -67,6 +78,7 @@ public class SavedDeviceGroupController extends BasePreferenceController mPreferenceGroup.setVisible(false); mBluetoothDeviceUpdater.setPrefContext(screen.getContext()); mBluetoothDeviceUpdater.forceUpdate(); + mSavedDockUpdater.forceUpdate(); } } @@ -105,6 +117,11 @@ public class SavedDeviceGroupController extends BasePreferenceController @VisibleForTesting public void setBluetoothDeviceUpdater(BluetoothDeviceUpdater bluetoothDeviceUpdater) { - mBluetoothDeviceUpdater = bluetoothDeviceUpdater; + mBluetoothDeviceUpdater = bluetoothDeviceUpdater; + } + + @VisibleForTesting + public void setSavedDockUpdater(DockUpdater savedDockUpdater) { + mSavedDockUpdater = savedDockUpdater; } } diff --git a/tests/robotests/src/com/android/settings/connecteddevice/ConnectedDeviceGroupControllerTest.java b/tests/robotests/src/com/android/settings/connecteddevice/ConnectedDeviceGroupControllerTest.java index 9eaf78f8a52..3cdd959880c 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 androidx.preference.PreferenceManager; import androidx.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 diff --git a/tests/robotests/src/com/android/settings/connecteddevice/SavedDeviceGroupControllerTest.java b/tests/robotests/src/com/android/settings/connecteddevice/SavedDeviceGroupControllerTest.java index 473e80d18c8..2710cd852bf 100644 --- a/tests/robotests/src/com/android/settings/connecteddevice/SavedDeviceGroupControllerTest.java +++ b/tests/robotests/src/com/android/settings/connecteddevice/SavedDeviceGroupControllerTest.java @@ -27,6 +27,7 @@ import android.content.Context; import android.content.pm.PackageManager; import androidx.preference.PreferenceManager; 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; import com.android.settingslib.core.lifecycle.Lifecycle; @@ -47,6 +48,8 @@ public class SavedDeviceGroupControllerTest { private DashboardFragment mDashboardFragment; @Mock private BluetoothDeviceUpdater mBluetoothDeviceUpdater; + @Mock + private DockUpdater mSavedDockUpdater; @Mock(answer = Answers.RETURNS_DEEP_STUBS) private PreferenceManager mPreferenceManager; @Mock @@ -67,6 +70,7 @@ public class SavedDeviceGroupControllerTest { doReturn(mPackageManager).when(mContext).getPackageManager(); mSavedDeviceGroupController = new SavedDeviceGroupController(mContext); mSavedDeviceGroupController.setBluetoothDeviceUpdater(mBluetoothDeviceUpdater); + mSavedDeviceGroupController.setSavedDockUpdater(mSavedDockUpdater); } @Test @@ -74,12 +78,14 @@ public class SavedDeviceGroupControllerTest { // register the callback in onStart() mSavedDeviceGroupController.onStart(); verify(mBluetoothDeviceUpdater).registerCallback(); + verify(mSavedDockUpdater).registerCallback(); } @Test public void testUnregister() { // unregister the callback in onStop() mSavedDeviceGroupController.onStop(); verify(mBluetoothDeviceUpdater).unregisterCallback(); + verify(mSavedDockUpdater).unregisterCallback(); } @Test public void testGetAvailabilityStatus_noBluetoothFeature_returnUnSupported() { @@ -93,4 +99,4 @@ public class SavedDeviceGroupControllerTest { assertThat(mSavedDeviceGroupController.getAvailabilityStatus()).isEqualTo( AVAILABLE); } -} \ No newline at end of file +}