From 98e37691c40ad4873d5ec246718503e27e5c579c Mon Sep 17 00:00:00 2001 From: Ivan Chiang Date: Thu, 12 Apr 2018 18:21:51 +0800 Subject: [PATCH 1/2] Show Dock devices in Connected devices page Implement Connected Dock Devices part into ConnectedDeviceGroupController. Bug: 77945034 Test: m -j SettingsRoboTests RunSettingsRoboTests Change-Id: Id5a75217f64d84038222604fca40613361e6f45d --- .../ConnectedDeviceGroupController.java | 30 ++++++++++++++----- .../ConnectedDeviceGroupControllerTest.java | 10 +++++-- 2 files changed, 31 insertions(+), 9 deletions(-) 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 From 6b76e34768779d23bcabc61ac136b8424270993c Mon Sep 17 00:00:00 2001 From: Ivan Chiang Date: Wed, 18 Apr 2018 19:06:36 +0800 Subject: [PATCH 2/2] Show docks on previously connected devices page Implement previously connected Dock Devices part into SavedDeviceGroupController. Bug: 78095209 Test: m -j SettingsRoboTests RunSettingsRoboTests Change-Id: I3dd318556167c98bc90c0c1c7281804177b9ff74 --- .../SavedDeviceGroupController.java | 19 ++++++++++++++++++- .../SavedDeviceGroupControllerTest.java | 8 +++++++- 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/src/com/android/settings/connecteddevice/SavedDeviceGroupController.java b/src/com/android/settings/connecteddevice/SavedDeviceGroupController.java index b1f83601013..f80c87792a5 100644 --- a/src/com/android/settings/connecteddevice/SavedDeviceGroupController.java +++ b/src/com/android/settings/connecteddevice/SavedDeviceGroupController.java @@ -24,9 +24,12 @@ import android.support.v7.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/SavedDeviceGroupControllerTest.java b/tests/robotests/src/com/android/settings/connecteddevice/SavedDeviceGroupControllerTest.java index 1b1b88dc6bd..71c101085fe 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 android.support.v7.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 +}