Loading src/com/android/settings/connecteddevice/ConnectedDeviceGroupController.java +46 −15 Original line number Diff line number Diff line Loading @@ -51,23 +51,37 @@ public class ConnectedDeviceGroupController extends BasePreferenceController private BluetoothDeviceUpdater mBluetoothDeviceUpdater; private ConnectedUsbDeviceUpdater mConnectedUsbDeviceUpdater; private DockUpdater mConnectedDockUpdater; private final PackageManager mPackageManager; public ConnectedDeviceGroupController(Context context) { super(context, KEY); mPackageManager = context.getPackageManager(); } @Override public void onStart() { if (mBluetoothDeviceUpdater != null) { mBluetoothDeviceUpdater.registerCallback(); mBluetoothDeviceUpdater.refreshPreference(); } if (mConnectedUsbDeviceUpdater != null) { mConnectedUsbDeviceUpdater.registerCallback(); } mConnectedDockUpdater.registerCallback(); mBluetoothDeviceUpdater.refreshPreference(); } @Override public void onStop() { mConnectedUsbDeviceUpdater.unregisterCallback(); if (mBluetoothDeviceUpdater != null) { mBluetoothDeviceUpdater.unregisterCallback(); } if (mConnectedUsbDeviceUpdater != null) { mConnectedUsbDeviceUpdater.unregisterCallback(); } mConnectedDockUpdater.unregisterCallback(); } Loading @@ -80,9 +94,15 @@ public class ConnectedDeviceGroupController extends BasePreferenceController if (isAvailable()) { final Context context = screen.getContext(); if (mBluetoothDeviceUpdater != null) { mBluetoothDeviceUpdater.setPrefContext(context); mBluetoothDeviceUpdater.forceUpdate(); } if (mConnectedUsbDeviceUpdater != null) { mConnectedUsbDeviceUpdater.initUsbPreference(context); } mConnectedDockUpdater.setPreferenceContext(context); mConnectedDockUpdater.forceUpdate(); } Loading @@ -90,10 +110,8 @@ public class ConnectedDeviceGroupController extends BasePreferenceController @Override public int getAvailabilityStatus() { final PackageManager packageManager = mContext.getPackageManager(); return (packageManager.hasSystemFeature(PackageManager.FEATURE_BLUETOOTH) || packageManager.hasSystemFeature(PackageManager.FEATURE_USB_ACCESSORY) || packageManager.hasSystemFeature(PackageManager.FEATURE_USB_HOST) return (hasBluetoothFeature() || hasUsbFeature() || mConnectedDockUpdater != null) ? AVAILABLE_UNSEARCHABLE : UNSUPPORTED_ON_DEVICE; Loading Loading @@ -121,7 +139,7 @@ public class ConnectedDeviceGroupController extends BasePreferenceController } @VisibleForTesting public void init(BluetoothDeviceUpdater bluetoothDeviceUpdater, void init(BluetoothDeviceUpdater bluetoothDeviceUpdater, ConnectedUsbDeviceUpdater connectedUsbDeviceUpdater, DockUpdater connectedDockUpdater) { Loading @@ -136,8 +154,21 @@ public class ConnectedDeviceGroupController extends BasePreferenceController FeatureFactory.getFactory(context).getDockUpdaterFeatureProvider(); final DockUpdater connectedDockUpdater = dockUpdaterFeatureProvider.getConnectedDockUpdater(context, this); init(new ConnectedBluetoothDeviceUpdater(context, fragment, this), new ConnectedUsbDeviceUpdater(context, fragment, this), init(hasBluetoothFeature() ? new ConnectedBluetoothDeviceUpdater(context, fragment, this) : null, hasUsbFeature() ? new ConnectedUsbDeviceUpdater(context, fragment, this) : null, connectedDockUpdater); } private boolean hasBluetoothFeature() { return mPackageManager.hasSystemFeature(PackageManager.FEATURE_BLUETOOTH); } private boolean hasUsbFeature() { return mPackageManager.hasSystemFeature(PackageManager.FEATURE_USB_ACCESSORY) || mPackageManager.hasSystemFeature(PackageManager.FEATURE_USB_HOST); } } tests/robotests/src/com/android/settings/connecteddevice/ConnectedDeviceGroupControllerTest.java +17 −1 Original line number Diff line number Diff line Loading @@ -22,6 +22,7 @@ import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; Loading @@ -38,6 +39,7 @@ 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.shadow.ShadowBluetoothAdapter; import org.junit.Before; import org.junit.Test; Loading @@ -52,7 +54,7 @@ import org.robolectric.annotation.Config; import org.robolectric.shadows.ShadowApplicationPackageManager; @RunWith(RobolectricTestRunner.class) @Config(shadows = ShadowApplicationPackageManager.class) @Config(shadows = {ShadowApplicationPackageManager.class, ShadowBluetoothAdapter.class}) public class ConnectedDeviceGroupControllerTest { private static final String PREFERENCE_KEY_1 = "pref_key_1"; Loading Loading @@ -203,4 +205,18 @@ public class ConnectedDeviceGroupControllerTest { AVAILABLE_UNSEARCHABLE); } @Test public void init_noBluetoothAndUsbFeature_doesNotCrash() { DashboardFragment fragment = mock(DashboardFragment.class); when(fragment.getContext()).thenReturn(mContext); when(mPreferenceScreen.findPreference(anyString())).thenReturn(mPreferenceGroup); mPackageManager.setSystemFeature(PackageManager.FEATURE_BLUETOOTH, false); mPackageManager.setSystemFeature(PackageManager.FEATURE_USB_ACCESSORY, false); mPackageManager.setSystemFeature(PackageManager.FEATURE_USB_HOST, false); mConnectedDeviceGroupController.init(fragment); mConnectedDeviceGroupController.displayPreference(mPreferenceScreen); mConnectedDeviceGroupController.onStart(); mConnectedDeviceGroupController.onStop(); } } Loading
src/com/android/settings/connecteddevice/ConnectedDeviceGroupController.java +46 −15 Original line number Diff line number Diff line Loading @@ -51,23 +51,37 @@ public class ConnectedDeviceGroupController extends BasePreferenceController private BluetoothDeviceUpdater mBluetoothDeviceUpdater; private ConnectedUsbDeviceUpdater mConnectedUsbDeviceUpdater; private DockUpdater mConnectedDockUpdater; private final PackageManager mPackageManager; public ConnectedDeviceGroupController(Context context) { super(context, KEY); mPackageManager = context.getPackageManager(); } @Override public void onStart() { if (mBluetoothDeviceUpdater != null) { mBluetoothDeviceUpdater.registerCallback(); mBluetoothDeviceUpdater.refreshPreference(); } if (mConnectedUsbDeviceUpdater != null) { mConnectedUsbDeviceUpdater.registerCallback(); } mConnectedDockUpdater.registerCallback(); mBluetoothDeviceUpdater.refreshPreference(); } @Override public void onStop() { mConnectedUsbDeviceUpdater.unregisterCallback(); if (mBluetoothDeviceUpdater != null) { mBluetoothDeviceUpdater.unregisterCallback(); } if (mConnectedUsbDeviceUpdater != null) { mConnectedUsbDeviceUpdater.unregisterCallback(); } mConnectedDockUpdater.unregisterCallback(); } Loading @@ -80,9 +94,15 @@ public class ConnectedDeviceGroupController extends BasePreferenceController if (isAvailable()) { final Context context = screen.getContext(); if (mBluetoothDeviceUpdater != null) { mBluetoothDeviceUpdater.setPrefContext(context); mBluetoothDeviceUpdater.forceUpdate(); } if (mConnectedUsbDeviceUpdater != null) { mConnectedUsbDeviceUpdater.initUsbPreference(context); } mConnectedDockUpdater.setPreferenceContext(context); mConnectedDockUpdater.forceUpdate(); } Loading @@ -90,10 +110,8 @@ public class ConnectedDeviceGroupController extends BasePreferenceController @Override public int getAvailabilityStatus() { final PackageManager packageManager = mContext.getPackageManager(); return (packageManager.hasSystemFeature(PackageManager.FEATURE_BLUETOOTH) || packageManager.hasSystemFeature(PackageManager.FEATURE_USB_ACCESSORY) || packageManager.hasSystemFeature(PackageManager.FEATURE_USB_HOST) return (hasBluetoothFeature() || hasUsbFeature() || mConnectedDockUpdater != null) ? AVAILABLE_UNSEARCHABLE : UNSUPPORTED_ON_DEVICE; Loading Loading @@ -121,7 +139,7 @@ public class ConnectedDeviceGroupController extends BasePreferenceController } @VisibleForTesting public void init(BluetoothDeviceUpdater bluetoothDeviceUpdater, void init(BluetoothDeviceUpdater bluetoothDeviceUpdater, ConnectedUsbDeviceUpdater connectedUsbDeviceUpdater, DockUpdater connectedDockUpdater) { Loading @@ -136,8 +154,21 @@ public class ConnectedDeviceGroupController extends BasePreferenceController FeatureFactory.getFactory(context).getDockUpdaterFeatureProvider(); final DockUpdater connectedDockUpdater = dockUpdaterFeatureProvider.getConnectedDockUpdater(context, this); init(new ConnectedBluetoothDeviceUpdater(context, fragment, this), new ConnectedUsbDeviceUpdater(context, fragment, this), init(hasBluetoothFeature() ? new ConnectedBluetoothDeviceUpdater(context, fragment, this) : null, hasUsbFeature() ? new ConnectedUsbDeviceUpdater(context, fragment, this) : null, connectedDockUpdater); } private boolean hasBluetoothFeature() { return mPackageManager.hasSystemFeature(PackageManager.FEATURE_BLUETOOTH); } private boolean hasUsbFeature() { return mPackageManager.hasSystemFeature(PackageManager.FEATURE_USB_ACCESSORY) || mPackageManager.hasSystemFeature(PackageManager.FEATURE_USB_HOST); } }
tests/robotests/src/com/android/settings/connecteddevice/ConnectedDeviceGroupControllerTest.java +17 −1 Original line number Diff line number Diff line Loading @@ -22,6 +22,7 @@ import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; Loading @@ -38,6 +39,7 @@ 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.shadow.ShadowBluetoothAdapter; import org.junit.Before; import org.junit.Test; Loading @@ -52,7 +54,7 @@ import org.robolectric.annotation.Config; import org.robolectric.shadows.ShadowApplicationPackageManager; @RunWith(RobolectricTestRunner.class) @Config(shadows = ShadowApplicationPackageManager.class) @Config(shadows = {ShadowApplicationPackageManager.class, ShadowBluetoothAdapter.class}) public class ConnectedDeviceGroupControllerTest { private static final String PREFERENCE_KEY_1 = "pref_key_1"; Loading Loading @@ -203,4 +205,18 @@ public class ConnectedDeviceGroupControllerTest { AVAILABLE_UNSEARCHABLE); } @Test public void init_noBluetoothAndUsbFeature_doesNotCrash() { DashboardFragment fragment = mock(DashboardFragment.class); when(fragment.getContext()).thenReturn(mContext); when(mPreferenceScreen.findPreference(anyString())).thenReturn(mPreferenceGroup); mPackageManager.setSystemFeature(PackageManager.FEATURE_BLUETOOTH, false); mPackageManager.setSystemFeature(PackageManager.FEATURE_USB_ACCESSORY, false); mPackageManager.setSystemFeature(PackageManager.FEATURE_USB_HOST, false); mConnectedDeviceGroupController.init(fragment); mConnectedDeviceGroupController.displayPreference(mPreferenceScreen); mConnectedDeviceGroupController.onStart(); mConnectedDeviceGroupController.onStop(); } }