From c5d1f8d5b16153a046403e910eb4ff2224306cc9 Mon Sep 17 00:00:00 2001 From: lucaslin Date: Wed, 9 Mar 2022 10:52:43 +0800 Subject: [PATCH 1/2] Hide private DNS settings UI in Guest mode Hide private DNS settings UI in Guest mode to prevent guest users modifying global private DNS settings. Bug: 206987762 Test: 1. make RunSettingsRoboTests \ ROBOTEST_FILTER=PrivateDnsPreferenceControllerTest 2. Switch to Guest user and check if the private DNS UI is hidden or not. Change-Id: Iebfb8684da3be32110decd9e8447dd07b1c40387 (cherry picked from commit 52e863b5a212889d4f8cb89a4028c42af59c9327) Merged-In: Iebfb8684da3be32110decd9e8447dd07b1c40387 --- .../network/PrivateDnsPreferenceController.java | 9 ++++++--- .../network/PrivateDnsPreferenceControllerTest.java | 11 +++++++++++ 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/src/com/android/settings/network/PrivateDnsPreferenceController.java b/src/com/android/settings/network/PrivateDnsPreferenceController.java index 07d57140ec1..ed6f9ed955d 100644 --- a/src/com/android/settings/network/PrivateDnsPreferenceController.java +++ b/src/com/android/settings/network/PrivateDnsPreferenceController.java @@ -85,9 +85,12 @@ public class PrivateDnsPreferenceController extends BasePreferenceController @Override public int getAvailabilityStatus() { - return mContext.getResources().getBoolean(R.bool.config_show_private_dns_settings) - ? AVAILABLE - : UNSUPPORTED_ON_DEVICE; + if (!mContext.getResources().getBoolean(R.bool.config_show_private_dns_settings)) { + return UNSUPPORTED_ON_DEVICE; + } + final UserManager userManager = mContext.getSystemService(UserManager.class); + if (userManager.isGuestUser()) return DISABLED_FOR_USER; + return AVAILABLE; } @Override diff --git a/tests/robotests/src/com/android/settings/network/PrivateDnsPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/network/PrivateDnsPreferenceControllerTest.java index e31d959622a..057b6cbf0b9 100644 --- a/tests/robotests/src/com/android/settings/network/PrivateDnsPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/network/PrivateDnsPreferenceControllerTest.java @@ -26,6 +26,7 @@ import static androidx.lifecycle.Lifecycle.Event.ON_START; import static androidx.lifecycle.Lifecycle.Event.ON_STOP; import static com.android.settings.core.BasePreferenceController.AVAILABLE; +import static com.android.settings.core.BasePreferenceController.DISABLED_FOR_USER; import static com.android.settings.core.BasePreferenceController.UNSUPPORTED_ON_DEVICE; import static com.google.common.truth.Truth.assertThat; @@ -35,6 +36,7 @@ import static org.mockito.ArgumentMatchers.nullable; import static org.mockito.Mockito.CALLS_REAL_METHODS; import static org.mockito.Mockito.atLeastOnce; import static org.mockito.Mockito.doNothing; +import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.reset; import static org.mockito.Mockito.spy; @@ -109,6 +111,8 @@ public class PrivateDnsPreferenceControllerTest { private Network mNetwork; @Mock private Preference mPreference; + @Mock + private UserManager mUserManager; @Captor private ArgumentCaptor mCallbackCaptor; private PrivateDnsPreferenceController mController; @@ -127,6 +131,7 @@ public class PrivateDnsPreferenceControllerTest { mShadowContentResolver = Shadow.extract(mContentResolver); when(mContext.getSystemService(Context.CONNECTIVITY_SERVICE)) .thenReturn(mConnectivityManager); + when(mContext.getSystemService(UserManager.class)).thenReturn(mUserManager); doNothing().when(mConnectivityManager).registerDefaultNetworkCallback( mCallbackCaptor.capture(), nullable(Handler.class)); @@ -173,6 +178,12 @@ public class PrivateDnsPreferenceControllerTest { assertThat(mController.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE); } + @Test + public void getAvailabilityStatus_disabledForGuestUser() { + doReturn(true).when(mUserManager).isGuestUser(); + assertThat(mController.getAvailabilityStatus()).isEqualTo(DISABLED_FOR_USER); + } + @Test public void goThroughLifecycle_shouldRegisterUnregisterSettingsObserver() { mLifecycle.handleLifecycleEvent(ON_START); From 875f42e1d3a6ac5083f7f42c7d549a6e09e69484 Mon Sep 17 00:00:00 2001 From: Alex Johnston Date: Thu, 3 Mar 2022 14:30:44 +0000 Subject: [PATCH 2/2] Change default USB configuration to a RestrictedPreference Test: manual with TestDPC and Settings DefaultUsbConfigurationPreferenceControllerTest Bug: 201519976 205996517 Change-Id: I1def7b37184d6d81f29a5e6e4793b92012dacd9b Merged-In: I1def7b37184d6d81f29a5e6e4793b92012dacd9b (cherry picked from commit bc4fd99ddb494683420264e6b749a5ce80df90b9) Merged-In: I1def7b37184d6d81f29a5e6e4793b92012dacd9b --- res/xml/development_settings.xml | 2 +- .../DefaultUsbConfigurationPreferenceController.java | 4 ++-- .../DefaultUsbConfigurationPreferenceControllerTest.java | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/res/xml/development_settings.xml b/res/xml/development_settings.xml index 621351681cd..e389747bf67 100644 --- a/res/xml/development_settings.xml +++ b/res/xml/development_settings.xml @@ -293,7 +293,7 @@ android:title="@string/tethering_hardware_offload" android:summary="@string/tethering_hardware_offload_summary" /> - diff --git a/src/com/android/settings/development/DefaultUsbConfigurationPreferenceController.java b/src/com/android/settings/development/DefaultUsbConfigurationPreferenceController.java index be7704fd735..7c3d3b120e0 100644 --- a/src/com/android/settings/development/DefaultUsbConfigurationPreferenceController.java +++ b/src/com/android/settings/development/DefaultUsbConfigurationPreferenceController.java @@ -24,7 +24,7 @@ import android.os.UserHandle; import androidx.preference.Preference; import androidx.preference.PreferenceScreen; -import com.android.settingslib.RestrictedSwitchPreference; +import com.android.settingslib.RestrictedPreference; import com.android.settingslib.development.DeveloperOptionsPreferenceController; public class DefaultUsbConfigurationPreferenceController extends @@ -32,7 +32,7 @@ public class DefaultUsbConfigurationPreferenceController extends private static final String PREFERENCE_KEY = "default_usb_configuration"; - private RestrictedSwitchPreference mPreference; + private RestrictedPreference mPreference; public DefaultUsbConfigurationPreferenceController(Context context) { super(context); diff --git a/tests/robotests/src/com/android/settings/development/DefaultUsbConfigurationPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/development/DefaultUsbConfigurationPreferenceControllerTest.java index c9b13e27a0c..a386473020a 100644 --- a/tests/robotests/src/com/android/settings/development/DefaultUsbConfigurationPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/development/DefaultUsbConfigurationPreferenceControllerTest.java @@ -32,7 +32,7 @@ import android.os.UserHandle; import androidx.preference.PreferenceScreen; import com.android.settingslib.RestrictedLockUtils; -import com.android.settingslib.RestrictedSwitchPreference; +import com.android.settingslib.RestrictedPreference; import org.junit.Before; import org.junit.Test; @@ -48,7 +48,7 @@ public class DefaultUsbConfigurationPreferenceControllerTest { private static final ComponentName TEST_COMPONENT_NAME = new ComponentName("test", "test"); @Mock - private RestrictedSwitchPreference mPreference; + private RestrictedPreference mPreference; @Mock private PreferenceScreen mPreferenceScreen; @Mock