Disallow modifying USB in Settings

Background
* The admin can disable signaling over USB
  on corporate owned device.

Changes
* If the admin has disabled signaling over
  USB, disable preferences in Settings to
  modify USB.
* Show policy transparency dialogs.

Manual Testing:
* Install TestDPC
* Set up as Device Owner
* Disable USB data signaling
* Verify Settings > Connected Devices
  > USB is disabled
* Verify Settings > Network & Internet
  > Hotspot & tethering > USB tethering
  is disabled
* Verify Developer options >
  USB debugging, default USB configurations
  and USB audio routing are disabled

Bug: 168301639
Test: Manual Testing
      make RunSettingsRoboTests -j ROBOTEST_FILTER=TetherSettingsTest
      make RunSettingsRoboTests -j
      ROBOTEST_FILTER=UsbAudioRoutingPreferenceControllerTest
      make RunSettingsRoboTests -j
      ROBOTEST_FILTER=UsbDefaultFragmentTest
      make RunSettingsRoboTests -j
      ROBOTEST_FILTER=DevelopmentSettingsDashboardFragmentTest
      make RunSettingsRoboTests -j
      ROBOTEST_FILTER=DefaultUsbConfigurationPreferenceControllerTest
      make RunSettingsLibRoboTests -j
      ROBOTEST_FILTER=EnableAdbPreferenceControllerTest

Change-Id: I3e8461ac37f406a407c874598335cde28fb89b2d
Merged-In: I3e8461ac37f406a407c874598335cde28fb89b2d
This commit is contained in:
Alex Johnston
2021-01-15 20:46:05 +00:00
parent 73fe82071d
commit 7d4db750e6
12 changed files with 266 additions and 21 deletions

View File

@@ -22,11 +22,17 @@ import static android.hardware.usb.UsbPortStatus.POWER_ROLE_SINK;
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import android.app.admin.DevicePolicyManager;
import android.content.Context;
import android.hardware.usb.UsbManager;
import android.os.UserHandle;
import com.android.settings.R;
import com.android.settings.connecteddevice.DevicePreferenceCallback;
@@ -55,21 +61,30 @@ public class ConnectedUsbDeviceUpdaterTest {
private DevicePreferenceCallback mDevicePreferenceCallback;
@Mock
private UsbBackend mUsbBackend;
@Mock
private DevicePolicyManager mDevicePolicyManager;
@Before
public void setUp() {
public void setUp() throws Exception {
MockitoAnnotations.initMocks(this);
mContext = RuntimeEnvironment.application;
mContext = spy(RuntimeEnvironment.application);
when(mFragment.getContext()).thenReturn(mContext);
mDeviceUpdater =
new ConnectedUsbDeviceUpdater(mContext, mFragment, mDevicePreferenceCallback,
mUsbBackend);
mDeviceUpdater.mUsbReceiver = mUsbReceiver;
when(mContext.getSystemService(DevicePolicyManager.class)).thenReturn(mDevicePolicyManager);
doReturn(mContext).when(mContext).createPackageContextAsUser(
any(String.class), anyInt(), any(UserHandle.class));
}
@Test
public void initUsbPreference_preferenceInit() {
when(mDevicePolicyManager.isUsbDataSignalingEnabledForUser(
UserHandle.myUserId())).thenReturn(true);
mDeviceUpdater.initUsbPreference(mContext);
assertThat(mDeviceUpdater.mUsbPreference.getTitle()).isEqualTo("USB");