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

Commit 8cb2e87c authored by Matías Hernández's avatar Matías Hernández
Browse files

Make areAutomaticZenRulesUserManaged() return false on TV

Same as WATCH and AUTOMOBILE, these devices don't have the appropriate Settings UI to resolve ACTION_AUTOMATIC_ZEN_RULE_SETTINGS.

Bug: 390623353
Test: atest NotificationManagerTest
Flag: EXEMPT trivial fix
Change-Id: I1670b511eb7552fb3c5fedb2f1e12aa73544ca35
parent 265bf0b2
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -1644,7 +1644,8 @@ public class NotificationManager {
        if (Flags.modesApi() && Flags.modesUi()) {
            PackageManager pm = mContext.getPackageManager();
            return !pm.hasSystemFeature(PackageManager.FEATURE_WATCH)
                    && !pm.hasSystemFeature(PackageManager.FEATURE_AUTOMOTIVE);
                    && !pm.hasSystemFeature(PackageManager.FEATURE_AUTOMOTIVE)
                    && !pm.hasSystemFeature(PackageManager.FEATURE_LEANBACK);
        } else {
            return false;
        }
+53 −0
Original line number Diff line number Diff line
@@ -30,8 +30,10 @@ import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;

import android.annotation.Nullable;
import android.content.Context;
import android.content.ContextWrapper;
import android.content.pm.PackageManager;
import android.content.pm.ParceledListSlice;
import android.os.UserHandle;
import android.platform.test.annotations.EnableFlags;
@@ -409,6 +411,46 @@ public class NotificationManagerTest {
                .getOrCreateNotificationChannels(any(), any(), anyInt(), anyBoolean());
    }

    @Test
    @EnableFlags({Flags.FLAG_MODES_API, Flags.FLAG_MODES_UI})
    public void areAutomaticZenRulesUserManaged_handheld_isTrue() {
        PackageManager pm = mock(PackageManager.class);
        when(pm.hasSystemFeature(any())).thenReturn(false);
        mContext.setPackageManager(pm);

        assertThat(mNotificationManager.areAutomaticZenRulesUserManaged()).isTrue();
    }

    @Test
    @EnableFlags({Flags.FLAG_MODES_API, Flags.FLAG_MODES_UI})
    public void areAutomaticZenRulesUserManaged_auto_isFalse() {
        PackageManager pm = mock(PackageManager.class);
        when(pm.hasSystemFeature(eq(PackageManager.FEATURE_AUTOMOTIVE))).thenReturn(true);
        mContext.setPackageManager(pm);

        assertThat(mNotificationManager.areAutomaticZenRulesUserManaged()).isFalse();
    }

    @Test
    @EnableFlags({Flags.FLAG_MODES_API, Flags.FLAG_MODES_UI})
    public void areAutomaticZenRulesUserManaged_tv_isFalse() {
        PackageManager pm = mock(PackageManager.class);
        when(pm.hasSystemFeature(eq(PackageManager.FEATURE_LEANBACK))).thenReturn(true);
        mContext.setPackageManager(pm);

        assertThat(mNotificationManager.areAutomaticZenRulesUserManaged()).isFalse();
    }

    @Test
    @EnableFlags({Flags.FLAG_MODES_API, Flags.FLAG_MODES_UI})
    public void areAutomaticZenRulesUserManaged_watch_isFalse() {
        PackageManager pm = mock(PackageManager.class);
        when(pm.hasSystemFeature(eq(PackageManager.FEATURE_WATCH))).thenReturn(true);
        mContext.setPackageManager(pm);

        assertThat(mNotificationManager.areAutomaticZenRulesUserManaged()).isFalse();
    }

    private Notification exampleNotification() {
        return new Notification.Builder(mContext, "channel")
                .setSmallIcon(android.R.drawable.star_big_on)
@@ -438,6 +480,7 @@ public class NotificationManagerTest {
    // Helper context wrapper class where we can control just the return values of getPackageName,
    // getOpPackageName, and getUserId (used in getNotificationChannels).
    private static class PackageTestableContext extends ContextWrapper {
        private PackageManager mPm;
        private String mPackage;
        private String mOpPackage;
        private Integer mUserId;
@@ -446,12 +489,22 @@ public class NotificationManagerTest {
            super(base);
        }

        void setPackageManager(@Nullable PackageManager pm) {
            mPm = pm;
        }

        void setParameters(String packageName, String opPackageName, int userId) {
            mPackage = packageName;
            mOpPackage = opPackageName;
            mUserId = userId;
        }

        @Override
        public PackageManager getPackageManager() {
            if (mPm != null) return mPm;
            return super.getPackageManager();
        }

        @Override
        public String getPackageName() {
            if (mPackage != null) return mPackage;