Merge "Fix crash when no Bluetooth feature in Settings" into qt-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
7a237a40d7
@@ -109,6 +109,10 @@ public abstract class BluetoothDeviceUpdater implements BluetoothCallback,
|
|||||||
* Force to update the list of bluetooth devices
|
* Force to update the list of bluetooth devices
|
||||||
*/
|
*/
|
||||||
public void forceUpdate() {
|
public void forceUpdate() {
|
||||||
|
if (mLocalManager == null) {
|
||||||
|
Log.e(TAG, "forceUpdate() Bluetooth is not supported on this device");
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (BluetoothAdapter.getDefaultAdapter().isEnabled()) {
|
if (BluetoothAdapter.getDefaultAdapter().isEnabled()) {
|
||||||
final Collection<CachedBluetoothDevice> cachedDevices =
|
final Collection<CachedBluetoothDevice> cachedDevices =
|
||||||
mLocalManager.getCachedDeviceManager().getCachedDevicesCopy();
|
mLocalManager.getCachedDeviceManager().getCachedDevicesCopy();
|
||||||
@@ -121,6 +125,10 @@ public abstract class BluetoothDeviceUpdater implements BluetoothCallback,
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void removeAllDevicesFromPreference() {
|
public void removeAllDevicesFromPreference() {
|
||||||
|
if (mLocalManager == null) {
|
||||||
|
Log.e(TAG, "removeAllDevicesFromPreference() BT is not supported on this device");
|
||||||
|
return;
|
||||||
|
}
|
||||||
final Collection<CachedBluetoothDevice> cachedDevices =
|
final Collection<CachedBluetoothDevice> cachedDevices =
|
||||||
mLocalManager.getCachedDeviceManager().getCachedDevicesCopy();
|
mLocalManager.getCachedDeviceManager().getCachedDevicesCopy();
|
||||||
for (CachedBluetoothDevice cachedBluetoothDevice : cachedDevices) {
|
for (CachedBluetoothDevice cachedBluetoothDevice : cachedDevices) {
|
||||||
|
@@ -83,9 +83,11 @@ public class AvailableMediaDeviceGroupController extends BasePreferenceControlle
|
|||||||
@Override
|
@Override
|
||||||
public void displayPreference(PreferenceScreen screen) {
|
public void displayPreference(PreferenceScreen screen) {
|
||||||
super.displayPreference(screen);
|
super.displayPreference(screen);
|
||||||
|
|
||||||
|
mPreferenceGroup = screen.findPreference(KEY);
|
||||||
|
mPreferenceGroup.setVisible(false);
|
||||||
|
|
||||||
if (isAvailable()) {
|
if (isAvailable()) {
|
||||||
mPreferenceGroup = screen.findPreference(KEY);
|
|
||||||
mPreferenceGroup.setVisible(false);
|
|
||||||
updateTitle();
|
updateTitle();
|
||||||
mBluetoothDeviceUpdater.setPrefContext(screen.getContext());
|
mBluetoothDeviceUpdater.setPrefContext(screen.getContext());
|
||||||
mBluetoothDeviceUpdater.forceUpdate();
|
mBluetoothDeviceUpdater.forceUpdate();
|
||||||
|
@@ -73,10 +73,11 @@ public class ConnectedDeviceGroupController extends BasePreferenceController
|
|||||||
@Override
|
@Override
|
||||||
public void displayPreference(PreferenceScreen screen) {
|
public void displayPreference(PreferenceScreen screen) {
|
||||||
super.displayPreference(screen);
|
super.displayPreference(screen);
|
||||||
if (isAvailable()) {
|
|
||||||
mPreferenceGroup = screen.findPreference(KEY);
|
|
||||||
mPreferenceGroup.setVisible(false);
|
|
||||||
|
|
||||||
|
mPreferenceGroup = screen.findPreference(KEY);
|
||||||
|
mPreferenceGroup.setVisible(false);
|
||||||
|
|
||||||
|
if (isAvailable()) {
|
||||||
final Context context = screen.getContext();
|
final Context context = screen.getContext();
|
||||||
mBluetoothDeviceUpdater.setPrefContext(context);
|
mBluetoothDeviceUpdater.setPrefContext(context);
|
||||||
mBluetoothDeviceUpdater.forceUpdate();
|
mBluetoothDeviceUpdater.forceUpdate();
|
||||||
@@ -88,7 +89,11 @@ public class ConnectedDeviceGroupController extends BasePreferenceController
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getAvailabilityStatus() {
|
public int getAvailabilityStatus() {
|
||||||
return mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH)
|
final PackageManager packageManager = mContext.getPackageManager();
|
||||||
|
return (packageManager.hasSystemFeature(PackageManager.FEATURE_BLUETOOTH)
|
||||||
|
|| packageManager.hasSystemFeature(PackageManager.FEATURE_USB_ACCESSORY)
|
||||||
|
|| packageManager.hasSystemFeature(PackageManager.FEATURE_USB_HOST)
|
||||||
|
|| mConnectedDockUpdater != null)
|
||||||
? AVAILABLE_UNSEARCHABLE
|
? AVAILABLE_UNSEARCHABLE
|
||||||
: UNSUPPORTED_ON_DEVICE;
|
: UNSUPPORTED_ON_DEVICE;
|
||||||
}
|
}
|
||||||
|
@@ -52,7 +52,8 @@ public class PreviouslyConnectedDevicePreferenceController extends BasePreferenc
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getAvailabilityStatus() {
|
public int getAvailabilityStatus() {
|
||||||
return mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH)
|
return (mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH)
|
||||||
|
|| mSavedDockUpdater != null)
|
||||||
? AVAILABLE
|
? AVAILABLE
|
||||||
: CONDITIONALLY_UNAVAILABLE;
|
: CONDITIONALLY_UNAVAILABLE;
|
||||||
}
|
}
|
||||||
|
@@ -73,10 +73,10 @@ public class SavedDeviceGroupController extends BasePreferenceController
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void displayPreference(PreferenceScreen screen) {
|
public void displayPreference(PreferenceScreen screen) {
|
||||||
if (isAvailable()) {
|
mPreferenceGroup = screen.findPreference(KEY);
|
||||||
mPreferenceGroup = screen.findPreference(KEY);
|
mPreferenceGroup.setVisible(false);
|
||||||
mPreferenceGroup.setVisible(false);
|
|
||||||
|
|
||||||
|
if (isAvailable()) {
|
||||||
final Context context = screen.getContext();
|
final Context context = screen.getContext();
|
||||||
mBluetoothDeviceUpdater.setPrefContext(context);
|
mBluetoothDeviceUpdater.setPrefContext(context);
|
||||||
mBluetoothDeviceUpdater.forceUpdate();
|
mBluetoothDeviceUpdater.forceUpdate();
|
||||||
@@ -87,7 +87,8 @@ public class SavedDeviceGroupController extends BasePreferenceController
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getAvailabilityStatus() {
|
public int getAvailabilityStatus() {
|
||||||
return mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH)
|
return (mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH)
|
||||||
|
|| mSavedDockUpdater != null)
|
||||||
? AVAILABLE
|
? AVAILABLE
|
||||||
: UNSUPPORTED_ON_DEVICE;
|
: UNSUPPORTED_ON_DEVICE;
|
||||||
}
|
}
|
||||||
|
@@ -88,6 +88,7 @@ public class ConnectedDeviceGroupControllerTest {
|
|||||||
mPreferenceGroup = spy(new PreferenceScreen(mContext, null));
|
mPreferenceGroup = spy(new PreferenceScreen(mContext, null));
|
||||||
when(mPreferenceGroup.getPreferenceManager()).thenReturn(mPreferenceManager);
|
when(mPreferenceGroup.getPreferenceManager()).thenReturn(mPreferenceManager);
|
||||||
doReturn(mContext).when(mDashboardFragment).getContext();
|
doReturn(mContext).when(mDashboardFragment).getContext();
|
||||||
|
mPackageManager.setSystemFeature(PackageManager.FEATURE_BLUETOOTH, true);
|
||||||
|
|
||||||
mConnectedDeviceGroupController = new ConnectedDeviceGroupController(mContext);
|
mConnectedDeviceGroupController = new ConnectedDeviceGroupController(mContext);
|
||||||
mConnectedDeviceGroupController.init(mConnectedBluetoothDeviceUpdater,
|
mConnectedDeviceGroupController.init(mConnectedBluetoothDeviceUpdater,
|
||||||
@@ -153,8 +154,12 @@ public class ConnectedDeviceGroupControllerTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void getAvailabilityStatus_noBluetoothFeature_returnUnSupported() {
|
public void getAvailabilityStatus_noBluetoothUsbDockFeature_returnUnSupported() {
|
||||||
mPackageManager.setSystemFeature(PackageManager.FEATURE_BLUETOOTH, false);
|
mPackageManager.setSystemFeature(PackageManager.FEATURE_BLUETOOTH, false);
|
||||||
|
mPackageManager.setSystemFeature(PackageManager.FEATURE_USB_ACCESSORY, false);
|
||||||
|
mPackageManager.setSystemFeature(PackageManager.FEATURE_USB_HOST, false);
|
||||||
|
mConnectedDeviceGroupController.init(mConnectedBluetoothDeviceUpdater,
|
||||||
|
mConnectedUsbDeviceUpdater, null);
|
||||||
|
|
||||||
assertThat(mConnectedDeviceGroupController.getAvailabilityStatus()).isEqualTo(
|
assertThat(mConnectedDeviceGroupController.getAvailabilityStatus()).isEqualTo(
|
||||||
UNSUPPORTED_ON_DEVICE);
|
UNSUPPORTED_ON_DEVICE);
|
||||||
@@ -163,8 +168,37 @@ public class ConnectedDeviceGroupControllerTest {
|
|||||||
@Test
|
@Test
|
||||||
public void getAvailabilityStatus_BluetoothFeature_returnSupported() {
|
public void getAvailabilityStatus_BluetoothFeature_returnSupported() {
|
||||||
mPackageManager.setSystemFeature(PackageManager.FEATURE_BLUETOOTH, true);
|
mPackageManager.setSystemFeature(PackageManager.FEATURE_BLUETOOTH, true);
|
||||||
|
mPackageManager.setSystemFeature(PackageManager.FEATURE_USB_ACCESSORY, false);
|
||||||
|
mPackageManager.setSystemFeature(PackageManager.FEATURE_USB_HOST, false);
|
||||||
|
mConnectedDeviceGroupController.init(mConnectedBluetoothDeviceUpdater,
|
||||||
|
mConnectedUsbDeviceUpdater, null);
|
||||||
|
|
||||||
assertThat(mConnectedDeviceGroupController.getAvailabilityStatus()).isEqualTo(
|
assertThat(mConnectedDeviceGroupController.getAvailabilityStatus()).isEqualTo(
|
||||||
AVAILABLE_UNSEARCHABLE);
|
AVAILABLE_UNSEARCHABLE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getAvailabilityStatus_haveUsbFeature_returnSupported() {
|
||||||
|
mPackageManager.setSystemFeature(PackageManager.FEATURE_BLUETOOTH, false);
|
||||||
|
mPackageManager.setSystemFeature(PackageManager.FEATURE_USB_ACCESSORY, false);
|
||||||
|
mPackageManager.setSystemFeature(PackageManager.FEATURE_USB_HOST, true);
|
||||||
|
mConnectedDeviceGroupController.init(mConnectedBluetoothDeviceUpdater,
|
||||||
|
mConnectedUsbDeviceUpdater, null);
|
||||||
|
|
||||||
|
assertThat(mConnectedDeviceGroupController.getAvailabilityStatus()).isEqualTo(
|
||||||
|
AVAILABLE_UNSEARCHABLE);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getAvailabilityStatus_haveDockFeature_returnSupported() {
|
||||||
|
mPackageManager.setSystemFeature(PackageManager.FEATURE_BLUETOOTH, false);
|
||||||
|
mPackageManager.setSystemFeature(PackageManager.FEATURE_USB_ACCESSORY, false);
|
||||||
|
mPackageManager.setSystemFeature(PackageManager.FEATURE_USB_HOST, false);
|
||||||
|
mConnectedDeviceGroupController.init(mConnectedBluetoothDeviceUpdater,
|
||||||
|
mConnectedUsbDeviceUpdater, mConnectedDockUpdater);
|
||||||
|
|
||||||
|
assertThat(mConnectedDeviceGroupController.getAvailabilityStatus()).isEqualTo(
|
||||||
|
AVAILABLE_UNSEARCHABLE);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -95,18 +95,31 @@ public class PreviouslyConnectedDevicePreferenceControllerTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void getAvailabilityStatus_noBluetoothFeature_returnUnSupported() {
|
public void getAvailabilityStatus_noBluetoothDockFeature_returnUnSupported() {
|
||||||
doReturn(false).when(mPackageManager).hasSystemFeature(PackageManager.FEATURE_BLUETOOTH);
|
doReturn(false).when(mPackageManager).hasSystemFeature(PackageManager.FEATURE_BLUETOOTH);
|
||||||
|
mPreConnectedDeviceController.setSavedDockUpdater(null);
|
||||||
|
|
||||||
assertThat(mPreConnectedDeviceController.getAvailabilityStatus()).isEqualTo(
|
assertThat(mPreConnectedDeviceController.getAvailabilityStatus()).isEqualTo(
|
||||||
CONDITIONALLY_UNAVAILABLE);
|
CONDITIONALLY_UNAVAILABLE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void getAvailabilityStatus_hasBluetoothFeature_returnSupported() {
|
public void getAvailabilityStatus_hasBluetoothFeature_returnSupported() {
|
||||||
doReturn(true).when(mPackageManager).hasSystemFeature(PackageManager.FEATURE_BLUETOOTH);
|
doReturn(true).when(mPackageManager).hasSystemFeature(PackageManager.FEATURE_BLUETOOTH);
|
||||||
|
mPreConnectedDeviceController.setSavedDockUpdater(null);
|
||||||
|
|
||||||
assertThat(mPreConnectedDeviceController.getAvailabilityStatus()).isEqualTo(
|
assertThat(mPreConnectedDeviceController.getAvailabilityStatus()).isEqualTo(
|
||||||
AVAILABLE);
|
AVAILABLE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getAvailabilityStatus_haveDockFeature_returnSupported() {
|
||||||
|
doReturn(false).when(mPackageManager).hasSystemFeature(PackageManager.FEATURE_BLUETOOTH);
|
||||||
|
|
||||||
|
assertThat(mPreConnectedDeviceController.getAvailabilityStatus()).isEqualTo(
|
||||||
|
AVAILABLE);
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void onDeviceAdded_addDevicePreference_displayIt() {
|
public void onDeviceAdded_addDevicePreference_displayIt() {
|
||||||
mPreConnectedDeviceController.onDeviceAdded(new Preference(mContext));
|
mPreConnectedDeviceController.onDeviceAdded(new Preference(mContext));
|
||||||
|
@@ -23,6 +23,7 @@ import static com.google.common.truth.Truth.assertThat;
|
|||||||
import static org.mockito.Mockito.doReturn;
|
import static org.mockito.Mockito.doReturn;
|
||||||
import static org.mockito.Mockito.spy;
|
import static org.mockito.Mockito.spy;
|
||||||
import static org.mockito.Mockito.verify;
|
import static org.mockito.Mockito.verify;
|
||||||
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.pm.PackageManager;
|
import android.content.pm.PackageManager;
|
||||||
@@ -81,6 +82,7 @@ public class SavedDeviceGroupControllerTest {
|
|||||||
verify(mBluetoothDeviceUpdater).registerCallback();
|
verify(mBluetoothDeviceUpdater).registerCallback();
|
||||||
verify(mSavedDockUpdater).registerCallback();
|
verify(mSavedDockUpdater).registerCallback();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testUnregister() {
|
public void testUnregister() {
|
||||||
// unregister the callback in onStop()
|
// unregister the callback in onStop()
|
||||||
@@ -88,16 +90,30 @@ public class SavedDeviceGroupControllerTest {
|
|||||||
verify(mBluetoothDeviceUpdater).unregisterCallback();
|
verify(mBluetoothDeviceUpdater).unregisterCallback();
|
||||||
verify(mSavedDockUpdater).unregisterCallback();
|
verify(mSavedDockUpdater).unregisterCallback();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testGetAvailabilityStatus_noBluetoothFeature_returnUnSupported() {
|
public void testGetAvailabilityStatus_noBluetoothDockFeature_returnUnSupported() {
|
||||||
doReturn(false).when(mPackageManager).hasSystemFeature(PackageManager.FEATURE_BLUETOOTH);
|
doReturn(false).when(mPackageManager).hasSystemFeature(PackageManager.FEATURE_BLUETOOTH);
|
||||||
|
mSavedDeviceGroupController.setSavedDockUpdater(null);
|
||||||
|
|
||||||
assertThat(mSavedDeviceGroupController.getAvailabilityStatus()).isEqualTo(
|
assertThat(mSavedDeviceGroupController.getAvailabilityStatus()).isEqualTo(
|
||||||
UNSUPPORTED_ON_DEVICE);
|
UNSUPPORTED_ON_DEVICE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testGetAvailabilityStatus_BluetoothFeature_returnSupported() {
|
public void testGetAvailabilityStatus_BluetoothFeature_returnSupported() {
|
||||||
doReturn(true).when(mPackageManager).hasSystemFeature(PackageManager.FEATURE_BLUETOOTH);
|
doReturn(true).when(mPackageManager).hasSystemFeature(PackageManager.FEATURE_BLUETOOTH);
|
||||||
|
mSavedDeviceGroupController.setSavedDockUpdater(null);
|
||||||
|
|
||||||
assertThat(mSavedDeviceGroupController.getAvailabilityStatus()).isEqualTo(
|
assertThat(mSavedDeviceGroupController.getAvailabilityStatus()).isEqualTo(
|
||||||
AVAILABLE);
|
AVAILABLE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getAvailabilityStatus_haveDockFeature_returnSupported() {
|
||||||
|
when(mPackageManager.hasSystemFeature(PackageManager.FEATURE_BLUETOOTH)).thenReturn(false);
|
||||||
|
|
||||||
|
assertThat(mSavedDeviceGroupController.getAvailabilityStatus()).isEqualTo(
|
||||||
|
AVAILABLE);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user