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

Commit baf50305 authored by Wa Gao's avatar Wa Gao
Browse files

Disable the ContentProtection setting switch bar when current user is a guest user.

Bug: 337774836
Test: m -j256 Settings && atest
SettingsRoboTests:ContentProtectionTogglePreferenceControllerTest
Flag: EXEMPT bugfix

Change-Id: I36173b2e7027765b526dfa2ebca216a7de71e669
parent 88307075
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@ import android.app.admin.DevicePolicyManager;
import android.content.ContentResolver;
import android.content.Context;
import android.os.UserHandle;
import android.os.UserManager;
import android.provider.Settings;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
@@ -126,6 +127,14 @@ public class ContentProtectionTogglePreferenceController extends TogglePreferenc
                && mContentProtectionPolicy
                        != DevicePolicyManager.CONTENT_PROTECTION_NOT_CONTROLLED_BY_POLICY) {
            mSwitchBar.setDisabledByAdmin(mEnforcedAdmin);
            return;
        }

        UserManager userManager = mContext.getSystemService(UserManager.class);
        if (userManager != null
                && userManager.isGuestUser()
                && mSwitchBar != null) {
            mSwitchBar.setEnabled(false);
        }
    }

+42 −2
Original line number Diff line number Diff line
@@ -24,8 +24,11 @@ import static com.google.common.truth.Truth.assertThat;

import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import static org.robolectric.Shadows.shadowOf;

import android.app.admin.DevicePolicyManager;
import android.content.Context;
@@ -38,6 +41,7 @@ import androidx.preference.PreferenceScreen;
import androidx.test.core.app.ApplicationProvider;

import com.android.settings.testutils.shadow.ShadowUtils;
import com.android.settings.testutils.shadow.ShadowUserManager;
import com.android.settings.widget.SettingsMainSwitchPreference;
import com.android.settingslib.RestrictedLockUtils;

@@ -53,7 +57,8 @@ import org.robolectric.RobolectricTestRunner;
import org.robolectric.annotation.Config;

@RunWith(RobolectricTestRunner.class)
@Config(shadows = {ShadowUtils.class})
@Config(shadows = {ShadowUtils.class,
                   ShadowUserManager.class})
public class ContentProtectionTogglePreferenceControllerTest {

    @Rule public final MockitoRule mMockitoRule = MockitoJUnit.rule();
@@ -74,9 +79,13 @@ public class ContentProtectionTogglePreferenceControllerTest {
    private TestContentProtectionTogglePreferenceController mController;

    private int mSettingBackupValue;
    private ShadowUserManager mShadowUserManager;


    @Before
    public void setUp() {
        mShadowUserManager = ShadowUserManager.getShadow();
        mShadowUserManager.setGuestUser(false);
        mController = new TestContentProtectionTogglePreferenceController();
        SettingsMainSwitchPreference switchPreference = new SettingsMainSwitchPreference(mContext);
        when(mMockPreferenceScreen.findPreference(mController.getPreferenceKey()))
@@ -225,6 +234,7 @@ public class ContentProtectionTogglePreferenceControllerTest {

        assertThat(mController.mCounterGetEnforcedAdmin).isEqualTo(1);
        verify(mMockSwitchPreference, never()).setDisabledByAdmin(any());
        verify(mMockSwitchPreference, never()).setEnabled(false);
    }

    @Test
@@ -237,6 +247,7 @@ public class ContentProtectionTogglePreferenceControllerTest {

        assertThat(mController.mCounterGetEnforcedAdmin).isEqualTo(1);
        verify(mMockSwitchPreference).setDisabledByAdmin(mEnforcedAdmin);
        verify(mMockSwitchPreference, never()).setEnabled(false);
    }

    @Test
@@ -249,6 +260,7 @@ public class ContentProtectionTogglePreferenceControllerTest {

        assertThat(mController.mCounterGetEnforcedAdmin).isEqualTo(1);
        verify(mMockSwitchPreference, never()).setDisabledByAdmin(any());
        verify(mMockSwitchPreference, never()).setEnabled(false);
    }

    @Test
@@ -261,6 +273,30 @@ public class ContentProtectionTogglePreferenceControllerTest {

        assertThat(mController.mCounterGetEnforcedAdmin).isEqualTo(1);
        verify(mMockSwitchPreference, never()).setDisabledByAdmin(any());
        verify(mMockSwitchPreference, never()).setEnabled(false);
    }

    @Test
    public void updateState_flagEnabled_noEnforcedAdmin_guestUser_switchBarDisabled() {
        mShadowUserManager.setGuestUser(true);
        mSetFlagsRule.enableFlags(FLAG_MANAGE_DEVICE_POLICY_ENABLED);
        mContentProtectionPolicy = DevicePolicyManager.CONTENT_PROTECTION_ENABLED;
        setupForUpdateState();

        mController.updateState(mMockSwitchPreference);

        verify(mMockSwitchPreference).setEnabled(false);
    }

    @Test
    public void updateState_flagEnabled_noEnforcedAdmin_nonGuestUser_switchBarEnabled() {
        mSetFlagsRule.enableFlags(FLAG_MANAGE_DEVICE_POLICY_ENABLED);
        mContentProtectionPolicy = DevicePolicyManager.CONTENT_PROTECTION_ENABLED;
        setupForUpdateState();

        mController.updateState(mMockSwitchPreference);

        verify(mMockSwitchPreference, never()).setEnabled(false);
    }

    @Test
@@ -273,6 +309,7 @@ public class ContentProtectionTogglePreferenceControllerTest {

        assertThat(mController.mCounterGetEnforcedAdmin).isEqualTo(1);
        verify(mMockSwitchPreference, never()).setDisabledByAdmin(any());
        verify(mMockSwitchPreference, never()).setEnabled(false);
    }

    @Test
@@ -286,6 +323,7 @@ public class ContentProtectionTogglePreferenceControllerTest {

        assertThat(mController.mCounterGetEnforcedAdmin).isEqualTo(1);
        verify(mMockSwitchPreference).setDisabledByAdmin(mEnforcedAdmin);
        verify(mMockSwitchPreference, never()).setEnabled(false);
    }

    @Test
@@ -299,6 +337,7 @@ public class ContentProtectionTogglePreferenceControllerTest {

        assertThat(mController.mCounterGetEnforcedAdmin).isEqualTo(1);
        verify(mMockSwitchPreference).setDisabledByAdmin(mEnforcedAdmin);
        verify(mMockSwitchPreference, never()).setEnabled(false);
    }

    @Test
@@ -312,6 +351,7 @@ public class ContentProtectionTogglePreferenceControllerTest {

        assertThat(mController.mCounterGetEnforcedAdmin).isEqualTo(1);
        verify(mMockSwitchPreference, never()).setDisabledByAdmin(any());
        verify(mMockSwitchPreference, never()).setEnabled(false);
    }

    @Test