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

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

Merge "Hides screen attention when attention service is not avaliable."

parents 5522099e 7f4a4ce8
Loading
Loading
Loading
Loading
+18 −0
Original line number Diff line number Diff line
@@ -17,8 +17,12 @@ import static android.provider.Settings.Secure.ADAPTIVE_SLEEP;

import android.Manifest;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.provider.Settings;
import android.service.attention.AttentionService;
import android.text.TextUtils;

import com.android.settings.R;
import com.android.settings.core.TogglePreferenceController;
@@ -62,10 +66,24 @@ public class AdaptiveSleepPreferenceController extends TogglePreferenceControlle
    public static int isControllerAvailable(Context context) {
        return context.getResources().getBoolean(
                com.android.internal.R.bool.config_adaptive_sleep_available)
                && isAttentionServiceAvailable(context)
                ? AVAILABLE_UNSEARCHABLE
                : UNSUPPORTED_ON_DEVICE;
    }

    private static boolean isAttentionServiceAvailable(Context context) {
        final PackageManager packageManager = context.getPackageManager();
        final String resolvePackage = packageManager.getAttentionServicePackageName();
        if (TextUtils.isEmpty(resolvePackage)) {
            return false;
        }
        final Intent intent = new Intent(AttentionService.SERVICE_INTERFACE).setPackage(
                resolvePackage);
        final ResolveInfo resolveInfo = packageManager.resolveService(intent,
                PackageManager.MATCH_SYSTEM_ONLY);
        return resolveInfo != null && resolveInfo.serviceInfo != null;
    }

    static boolean hasSufficientPermission(PackageManager packageManager) {
        final String attentionPackage = packageManager.getAttentionServicePackageName();
        return attentionPackage != null && packageManager.checkPermission(
+14 −1
Original line number Diff line number Diff line
@@ -16,17 +16,22 @@

package com.android.settings.display;

import static android.provider.Settings.System.ADAPTIVE_SLEEP;
import static android.provider.Settings.Secure.ADAPTIVE_SLEEP;

import static com.android.settings.core.BasePreferenceController.UNSUPPORTED_ON_DEVICE;

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.doReturn;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.when;

import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.provider.Settings;

@@ -75,6 +80,14 @@ public class AdaptiveSleepPreferenceControllerTest {
        when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mPreference);
    }

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

        assertThat(AdaptiveSleepPreferenceController.isControllerAvailable(mContext)).isEqualTo(
                UNSUPPORTED_ON_DEVICE);
    }

    @Test
    public void onPreferenceChange_turnOn_returnOn() {
        mController.onPreferenceChange(null, true);