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

Commit f7b60ee5 authored by Yi Jiang's avatar Yi Jiang Committed by Android (Google) Code Review
Browse files

Merge "Disable screen attention when DISALLOW_CONFIG_SCREEN_TIMEOUT"

parents 4126ec2d 038d18ff
Loading
Loading
Loading
Loading
+20 −2
Original line number Diff line number Diff line
@@ -17,13 +17,25 @@
package com.android.settings.display;

import android.content.Context;
import android.os.UserManager;

import androidx.preference.Preference;

import com.android.settings.bluetooth.RestrictionUtils;
import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
import com.android.settingslib.RestrictedSwitchPreference;

public class AdaptiveSleepDetailPreferenceController extends AdaptiveSleepPreferenceController {
    private RestrictionUtils mRestrictionUtils;

    public AdaptiveSleepDetailPreferenceController(Context context, String key) {
    public AdaptiveSleepDetailPreferenceController(Context context, String key,
            RestrictionUtils restrictionUtils) {
        super(context, key);
        mRestrictionUtils = restrictionUtils;
    }

    public AdaptiveSleepDetailPreferenceController(Context context, String key) {
        this(context, key, new RestrictionUtils());
    }

    @Override
@@ -43,6 +55,12 @@ public class AdaptiveSleepDetailPreferenceController extends AdaptiveSleepPrefer
    @Override
    public void updateState(Preference preference) {
        super.updateState(preference);
        final EnforcedAdmin enforcedAdmin = mRestrictionUtils.checkIfRestrictionEnforced(mContext,
                UserManager.DISALLOW_CONFIG_SCREEN_TIMEOUT);
        if (enforcedAdmin != null) {
            ((RestrictedSwitchPreference) preference).setDisabledByAdmin(enforcedAdmin);
        } else {
            preference.setEnabled(hasSufficientPermission(mContext.getPackageManager()));
        }
    }
}
 No newline at end of file
+50 −3
Original line number Diff line number Diff line
@@ -21,15 +21,26 @@ import static com.android.settings.core.BasePreferenceController.UNSUPPORTED_ON_

import static com.google.common.truth.Truth.assertThat;

import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;

import android.content.ComponentName;
import android.content.Context;
import android.content.pm.PackageManager;
import android.os.UserHandle;
import android.os.UserManager;

import com.android.internal.R;
import com.android.settings.bluetooth.RestrictionUtils;
import com.android.settings.testutils.shadow.SettingsShadowResources;
import com.android.settingslib.RestrictedLockUtils;
import com.android.settingslib.RestrictedSwitchPreference;

import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
@@ -42,17 +53,32 @@ import org.robolectric.annotation.Config;
@RunWith(RobolectricTestRunner.class)
@Config(shadows = {SettingsShadowResources.class})
public class AdaptiveSleepDetailPreferenceControllerTest {
    private static RestrictedLockUtils.EnforcedAdmin sFakeEnforcedAdmin;

    @BeforeClass
    public static void beforeClass() {
        sFakeEnforcedAdmin = new RestrictedLockUtils.EnforcedAdmin(
                new ComponentName("test.package", "test.Class"),
                UserHandle.of(10));
    }

    private AdaptiveSleepDetailPreferenceController mController;
    @Mock
    private PackageManager mPackageManager;
    @Mock
    private RestrictionUtils mRestrictionUtils;
    @Mock
    private RestrictedSwitchPreference mPreference;

    private Context mContext;

    @Before
    public void setUp() {
        MockitoAnnotations.initMocks(this);
        Context context = Mockito.spy(RuntimeEnvironment.application);
        doReturn(mPackageManager).when(context).getPackageManager();
        mController = new AdaptiveSleepDetailPreferenceController(context, "test_key");
        mContext = Mockito.spy(RuntimeEnvironment.application);
        doReturn(mPackageManager).when(mContext).getPackageManager();
        mController = new AdaptiveSleepDetailPreferenceController(mContext, "test_key",
                mRestrictionUtils);
    }

    @Test
@@ -77,4 +103,25 @@ public class AdaptiveSleepDetailPreferenceControllerTest {
        SettingsShadowResources.overrideResource(R.bool.config_adaptive_sleep_available, false);
        assertThat(mController.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE);
    }

    @Test
    public void updateState_noRestriction_allowScreenAttentionSet() {
        when(mRestrictionUtils.checkIfRestrictionEnforced(mContext,
                UserManager.DISALLOW_CONFIG_SCREEN_TIMEOUT)).thenReturn(null);

        mController.updateState(mPreference);

        verify(mPreference, never()).setDisabledByAdmin(
                any(RestrictedLockUtils.EnforcedAdmin.class));
    }

    @Test
    public void updateState_enforceRestrictions_disallowScreenAttentionSet() {
        when(mRestrictionUtils.checkIfRestrictionEnforced(mContext,
                UserManager.DISALLOW_CONFIG_SCREEN_TIMEOUT)).thenReturn(sFakeEnforcedAdmin);

        mController.updateState(mPreference);

        verify(mPreference).setDisabledByAdmin(sFakeEnforcedAdmin);
    }
}