Fix NPE on UsbManager in w/o usb devices

Bug: 206987614
Test: make -j64 RunSettingsRoboTests
Change-Id: I9ed4c2e803f3e7018518380667658ca0015f31a7
This commit is contained in:
Hugh Chen
2021-11-22 05:54:56 +00:00
parent db92e640b2
commit f5a236e0e8
2 changed files with 63 additions and 16 deletions

View File

@@ -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;
@@ -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;
@@ -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";
@@ -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();
}
}