From 46c72f3cac641de782ffac8e68f290b7b7fe34d1 Mon Sep 17 00:00:00 2001 From: Alex Johnston Date: Wed, 17 Mar 2021 15:18:00 +0000 Subject: [PATCH] Settings: Disable USB preferences if USB signaling is off * When developer options is turned off and on again, 'Default USB configuration' and 'Disable USB audio routing' should not be enabled if USB data signaling is disabled. Manual testing: * Disable USB data signaling * Verify preferences are disabled * Turn developer options off and on * Verify preferences remain disabled Bug: 180711035 Test: manual testing make RunSettingsRoboTests -j ROBOTEST_FILTER=UsbAudioRoutingPreferenceControllerTest make RunSettingsRoboTests -j ROBOTEST_FILTER=DefaultUsbConfigurationPreferenceControllerTest Change-Id: Id08228da812b7534e2217b0c3f30a7ac989f7553 --- ...tUsbConfigurationPreferenceController.java | 7 ++++++ .../UsbAudioRoutingPreferenceController.java | 7 ++++++ ...ConfigurationPreferenceControllerTest.java | 23 +++++++++++++++++++ ...bAudioRoutingPreferenceControllerTest.java | 23 +++++++++++++++++++ 4 files changed, 60 insertions(+) diff --git a/src/com/android/settings/development/DefaultUsbConfigurationPreferenceController.java b/src/com/android/settings/development/DefaultUsbConfigurationPreferenceController.java index 905c552e02f..be7704fd735 100644 --- a/src/com/android/settings/development/DefaultUsbConfigurationPreferenceController.java +++ b/src/com/android/settings/development/DefaultUsbConfigurationPreferenceController.java @@ -54,4 +54,11 @@ public class DefaultUsbConfigurationPreferenceController extends mPreference.setDisabledByAdmin( checkIfUsbDataSignalingIsDisabled(mContext, UserHandle.myUserId())); } + + @Override + protected void onDeveloperOptionsSwitchEnabled() { + super.onDeveloperOptionsSwitchEnabled(); + mPreference.setDisabledByAdmin( + checkIfUsbDataSignalingIsDisabled(mContext, UserHandle.myUserId())); + } } diff --git a/src/com/android/settings/development/UsbAudioRoutingPreferenceController.java b/src/com/android/settings/development/UsbAudioRoutingPreferenceController.java index 8aa4f3c3be5..e130b2b653b 100644 --- a/src/com/android/settings/development/UsbAudioRoutingPreferenceController.java +++ b/src/com/android/settings/development/UsbAudioRoutingPreferenceController.java @@ -83,4 +83,11 @@ public class UsbAudioRoutingPreferenceController extends DeveloperOptionsPrefere Settings.Secure.USB_AUDIO_AUTOMATIC_ROUTING_DISABLED, SETTING_VALUE_OFF); ((SwitchPreference) mPreference).setChecked(false); } + + @Override + protected void onDeveloperOptionsSwitchEnabled() { + super.onDeveloperOptionsSwitchEnabled(); + mPreference.setDisabledByAdmin( + checkIfUsbDataSignalingIsDisabled(mContext, UserHandle.myUserId())); + } } diff --git a/tests/robotests/src/com/android/settings/development/DefaultUsbConfigurationPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/development/DefaultUsbConfigurationPreferenceControllerTest.java index 15f4eb9e7c2..c9b13e27a0c 100644 --- a/tests/robotests/src/com/android/settings/development/DefaultUsbConfigurationPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/development/DefaultUsbConfigurationPreferenceControllerTest.java @@ -91,4 +91,27 @@ public class DefaultUsbConfigurationPreferenceControllerTest { verify(mPreference).setDisabledByAdmin(eq(new RestrictedLockUtils.EnforcedAdmin( TEST_COMPONENT_NAME, null, UserHandle.SYSTEM))); } + + @Test + public void onDeveloperOptionsSwitchEnabled_usbEnabled_shouldNotDisablePreference() { + when(mDevicePolicyManager.isUsbDataSignalingEnabledForUser( + UserHandle.myUserId())).thenReturn(true); + when(mDevicePolicyManager.getProfileOwner()).thenReturn(TEST_COMPONENT_NAME); + + mController.onDeveloperOptionsSwitchEnabled(); + + verify(mPreference).setDisabledByAdmin(null); + } + + @Test + public void onDeveloperOptionsSwitchEnabled_usbDisabled_shouldDisablePreference() { + when(mDevicePolicyManager.isUsbDataSignalingEnabledForUser( + UserHandle.myUserId())).thenReturn(false); + when(mDevicePolicyManager.getProfileOwner()).thenReturn(TEST_COMPONENT_NAME); + + mController.onDeveloperOptionsSwitchEnabled(); + + verify(mPreference).setDisabledByAdmin(eq(new RestrictedLockUtils.EnforcedAdmin( + TEST_COMPONENT_NAME, null, UserHandle.SYSTEM))); + } } diff --git a/tests/robotests/src/com/android/settings/development/UsbAudioRoutingPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/development/UsbAudioRoutingPreferenceControllerTest.java index 1d45c1b4dc7..69d2c99c0ab 100644 --- a/tests/robotests/src/com/android/settings/development/UsbAudioRoutingPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/development/UsbAudioRoutingPreferenceControllerTest.java @@ -147,4 +147,27 @@ public class UsbAudioRoutingPreferenceControllerTest { verify(mPreference).setEnabled(false); verify(mPreference).setChecked(false); } + + @Test + public void onDeveloperOptionsSwitchEnabled_usbEnabled_shouldNotDisablePreference() { + when(mDevicePolicyManager.isUsbDataSignalingEnabledForUser( + UserHandle.myUserId())).thenReturn(true); + when(mDevicePolicyManager.getProfileOwner()).thenReturn(TEST_COMPONENT_NAME); + + mController.onDeveloperOptionsSwitchEnabled(); + + verify(mPreference).setDisabledByAdmin(null); + } + + @Test + public void onDeveloperOptionsSwitchEnabled_usbDisabled_shouldDisablePreference() { + when(mDevicePolicyManager.isUsbDataSignalingEnabledForUser( + UserHandle.myUserId())).thenReturn(false); + when(mDevicePolicyManager.getProfileOwner()).thenReturn(TEST_COMPONENT_NAME); + + mController.onDeveloperOptionsSwitchEnabled(); + + verify(mPreference).setDisabledByAdmin(eq(new RestrictedLockUtils.EnforcedAdmin( + TEST_COMPONENT_NAME, null, UserHandle.SYSTEM))); + } }