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

Commit d62f1a51 authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Make areAutomaticZenRulesUserManaged() return false on TV" into main

parents 785efdae 8cb2e87c
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -1656,7 +1656,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;
@@ -441,6 +443,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)
@@ -470,6 +512,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;
@@ -478,12 +521,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;