Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 52e863b5 authored by lucaslin's avatar lucaslin Committed by Lucas Lin
Browse files

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
parent 4e543a38
Loading
Loading
Loading
Loading
+6 −3
Original line number Diff line number Diff line
@@ -84,9 +84,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
+11 −0
Original line number Diff line number Diff line
@@ -27,6 +27,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;
@@ -36,6 +37,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<NetworkCallback> 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);