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

Commit 9dc0dd2c authored by Wa Gao's avatar Wa Gao Committed by Android Build Coastguard Worker
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

(cherry picked from commit baf50305)
(cherry picked from https://googleplex-android-review.googlesource.com/q/commit:ef16a8cbef5e0987a37c2fa9e5091672a3c8e4ab)
Merged-In: I36173b2e7027765b526dfa2ebca216a7de71e669
Change-Id: I36173b2e7027765b526dfa2ebca216a7de71e669
parent fce03aa8
Loading
Loading
Loading
Loading
+9 −0
Original line number Original line Diff line number Diff line
@@ -21,6 +21,7 @@ import android.app.admin.DevicePolicyManager;
import android.content.ContentResolver;
import android.content.ContentResolver;
import android.content.Context;
import android.content.Context;
import android.os.UserHandle;
import android.os.UserHandle;
import android.os.UserManager;
import android.provider.Settings;
import android.provider.Settings;
import android.widget.CompoundButton;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.CompoundButton.OnCheckedChangeListener;
@@ -126,6 +127,14 @@ public class ContentProtectionTogglePreferenceController extends TogglePreferenc
                && mContentProtectionPolicy
                && mContentProtectionPolicy
                        != DevicePolicyManager.CONTENT_PROTECTION_NOT_CONTROLLED_BY_POLICY) {
                        != DevicePolicyManager.CONTENT_PROTECTION_NOT_CONTROLLED_BY_POLICY) {
            mSwitchBar.setDisabledByAdmin(mEnforcedAdmin);
            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 Original line 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.ArgumentMatchers.any;
import static org.mockito.Mockito.never;
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.verify;
import static org.mockito.Mockito.when;
import static org.mockito.Mockito.when;
import static org.robolectric.Shadows.shadowOf;


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


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


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


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


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


    private int mSettingBackupValue;
    private int mSettingBackupValue;
    private ShadowUserManager mShadowUserManager;



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


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


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


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


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


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


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


        assertThat(mController.mCounterGetEnforcedAdmin).isEqualTo(1);
        assertThat(mController.mCounterGetEnforcedAdmin).isEqualTo(1);
        verify(mMockSwitchPreference, never()).setDisabledByAdmin(any());
        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
    @Test
@@ -273,6 +309,7 @@ public class ContentProtectionTogglePreferenceControllerTest {


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


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


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


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


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


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


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


    @Test
    @Test