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

Commit 966beb82 authored by Yi Jiang's avatar Yi Jiang Committed by Automerger Merge Worker
Browse files

Merge "Hides Screen Attention setting when AttentionService isn't installed."...

Merge "Hides Screen Attention setting when AttentionService isn't installed." into sc-dev am: 2de946e5

Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Settings/+/15054779

Change-Id: Iddf713f724ba0effd20ad61331cf2af5bd5e1512
parents 0f458133 2de946e5
Loading
Loading
Loading
Loading
+7 −3
Original line number Diff line number Diff line
@@ -139,13 +139,17 @@ public class AdaptiveSleepPreferenceController {
    }

    public static int isControllerAvailable(Context context) {
        return context.getResources().getBoolean(
                com.android.internal.R.bool.config_adaptive_sleep_available)
                && isAttentionServiceAvailable(context)
        return isAdaptiveSleepSupported(context)
                ? AVAILABLE_UNSEARCHABLE
                : UNSUPPORTED_ON_DEVICE;
    }

    static boolean isAdaptiveSleepSupported(Context context) {
        return context.getResources().getBoolean(
                com.android.internal.R.bool.config_adaptive_sleep_available)
                && isAttentionServiceAvailable(context);
    }

    private static boolean isAttentionServiceAvailable(Context context) {
        final PackageManager packageManager = context.getPackageManager();
        final String resolvePackage = packageManager.getAttentionServicePackageName();
+1 −2
Original line number Diff line number Diff line
@@ -314,8 +314,7 @@ public class ScreenTimeoutSettings extends RadioButtonPickerFragment implements
    }

    private static boolean isScreenAttentionAvailable(Context context) {
        return context.getResources().getBoolean(
                com.android.internal.R.bool.config_adaptive_sleep_available);
        return AdaptiveSleepPreferenceController.isAdaptiveSleepSupported(context);
    }

    private static class TimeoutCandidateInfo extends CandidateInfo {
+27 −0
Original line number Diff line number Diff line
@@ -22,16 +22,24 @@ import static androidx.test.core.app.ApplicationProvider.getApplicationContext;

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

import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.isA;
import static org.mockito.Mockito.atLeast;
import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;

import android.app.admin.DevicePolicyManager;
import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.content.pm.ServiceInfo;
import android.content.res.Resources;
import android.provider.SearchIndexableResource;
import android.provider.Settings;
@@ -80,6 +88,9 @@ public class ScreenTimeoutSettingsTest {
    @Mock
    Preference mDisableOptionsPreference;

    @Mock
    private PackageManager mPackageManager;

    @Before
    public void setup() {
        MockitoAnnotations.initMocks(this);
@@ -90,6 +101,15 @@ public class ScreenTimeoutSettingsTest {
        mContentResolver = mContext.getContentResolver();
        mResources = spy(mContext.getResources());

        doReturn(mPackageManager).when(mContext).getPackageManager();
        when(mPackageManager.getAttentionServicePackageName()).thenReturn("some.package");
        when(mPackageManager.checkPermission(any(), any())).thenReturn(
                PackageManager.PERMISSION_GRANTED);
        final ResolveInfo attentionServiceResolveInfo = new ResolveInfo();
        attentionServiceResolveInfo.serviceInfo = new ServiceInfo();
        when(mPackageManager.resolveService(isA(Intent.class), anyInt())).thenReturn(
                attentionServiceResolveInfo);

        doReturn(TIMEOUT_ENTRIES).when(mResources).getStringArray(R.array.screen_timeout_entries);
        doReturn(TIMEOUT_VALUES).when(mResources).getStringArray(R.array.screen_timeout_entries);
        doReturn(true).when(mResources).getBoolean(
@@ -147,6 +167,13 @@ public class ScreenTimeoutSettingsTest {
        verify(mSettings.mAdaptiveSleepController, never()).addToScreen(mPreferenceScreen);
    }

    @Test
    public void updateCandidates_AttentionServiceNotInstalled_doNoShowAdaptiveSleepPreference() {
        when(mPackageManager.resolveService(isA(Intent.class), anyInt())).thenReturn(null);

        verify(mSettings.mAdaptiveSleepController, never()).addToScreen(mPreferenceScreen);
    }

    @Test
    public void updateCandidates_enforcedAdmin_showDisabledByAdminPreference() {
        mSettings.mAdmin = new RestrictedLockUtils.EnforcedAdmin();