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
This commit is contained in:
lucaslin
2022-03-09 10:52:43 +08:00
committed by Lucas Lin
parent 4e543a38f6
commit 52e863b5a2
2 changed files with 17 additions and 3 deletions

View File

@@ -84,9 +84,12 @@ public class PrivateDnsPreferenceController extends BasePreferenceController
@Override @Override
public int getAvailabilityStatus() { public int getAvailabilityStatus() {
return mContext.getResources().getBoolean(R.bool.config_show_private_dns_settings) if (!mContext.getResources().getBoolean(R.bool.config_show_private_dns_settings)) {
? AVAILABLE return UNSUPPORTED_ON_DEVICE;
: UNSUPPORTED_ON_DEVICE; }
final UserManager userManager = mContext.getSystemService(UserManager.class);
if (userManager.isGuestUser()) return DISABLED_FOR_USER;
return AVAILABLE;
} }
@Override @Override

View File

@@ -27,6 +27,7 @@ import static androidx.lifecycle.Lifecycle.Event.ON_START;
import static androidx.lifecycle.Lifecycle.Event.ON_STOP; import static androidx.lifecycle.Lifecycle.Event.ON_STOP;
import static com.android.settings.core.BasePreferenceController.AVAILABLE; 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.android.settings.core.BasePreferenceController.UNSUPPORTED_ON_DEVICE;
import static com.google.common.truth.Truth.assertThat; import static com.google.common.truth.Truth.assertThat;
@@ -36,6 +37,7 @@ import static org.mockito.ArgumentMatchers.nullable;
import static org.mockito.Mockito.CALLS_REAL_METHODS; import static org.mockito.Mockito.CALLS_REAL_METHODS;
import static org.mockito.Mockito.atLeastOnce; import static org.mockito.Mockito.atLeastOnce;
import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.mock; import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.reset; import static org.mockito.Mockito.reset;
import static org.mockito.Mockito.spy; import static org.mockito.Mockito.spy;
@@ -109,6 +111,8 @@ public class PrivateDnsPreferenceControllerTest {
private Network mNetwork; private Network mNetwork;
@Mock @Mock
private Preference mPreference; private Preference mPreference;
@Mock
private UserManager mUserManager;
@Captor @Captor
private ArgumentCaptor<NetworkCallback> mCallbackCaptor; private ArgumentCaptor<NetworkCallback> mCallbackCaptor;
private PrivateDnsPreferenceController mController; private PrivateDnsPreferenceController mController;
@@ -127,6 +131,7 @@ public class PrivateDnsPreferenceControllerTest {
mShadowContentResolver = Shadow.extract(mContentResolver); mShadowContentResolver = Shadow.extract(mContentResolver);
when(mContext.getSystemService(Context.CONNECTIVITY_SERVICE)) when(mContext.getSystemService(Context.CONNECTIVITY_SERVICE))
.thenReturn(mConnectivityManager); .thenReturn(mConnectivityManager);
when(mContext.getSystemService(UserManager.class)).thenReturn(mUserManager);
doNothing().when(mConnectivityManager).registerDefaultNetworkCallback( doNothing().when(mConnectivityManager).registerDefaultNetworkCallback(
mCallbackCaptor.capture(), nullable(Handler.class)); mCallbackCaptor.capture(), nullable(Handler.class));
@@ -173,6 +178,12 @@ public class PrivateDnsPreferenceControllerTest {
assertThat(mController.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE); 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 @Test
public void goThroughLifecycle_shouldRegisterUnregisterSettingsObserver() { public void goThroughLifecycle_shouldRegisterUnregisterSettingsObserver() {
mLifecycle.handleLifecycleEvent(ON_START); mLifecycle.handleLifecycleEvent(ON_START);