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

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

Merge "Checks keyguard earlier when blocking notifications."

parents 8a12650f 533836ac
Loading
Loading
Loading
Loading
+15 −11
Original line number Diff line number Diff line
@@ -103,9 +103,16 @@ public class NotificationInfo extends LinearLayout implements NotificationGuts.G
    };

    private OnClickListener mOnStopOrMinimizeNotifications = v -> {
        Runnable saveImportance = () -> {
            mExitReason = NotificationCounters.BLOCKING_HELPER_STOP_NOTIFICATIONS;
            swapContent(false);
        };
        if (mCheckSaveListener != null) {
            mCheckSaveListener.checkSave(saveImportance, mSbn);
        } else {
            saveImportance.run();
        }
    };

    private OnClickListener mOnUndo = v -> {
        // Reset exit counter that we'll log and record an undo event separately (not an exit event)
@@ -304,17 +311,9 @@ public class NotificationInfo extends LinearLayout implements NotificationGuts.G

    private void saveImportance() {
        if (!mIsNonblockable) {
            // Only go through the lock screen/bouncer if the user hit 'Stop notifications'.
            // Otherwise, update the importance immediately.
            if (mCheckSaveListener != null
                    && NotificationCounters.BLOCKING_HELPER_STOP_NOTIFICATIONS.equals(
                            mExitReason)) {
                mCheckSaveListener.checkSave(this::updateImportance, mSbn);
            } else {
            updateImportance();
        }
    }
    }

    /**
     * Commits the updated importance values on the background thread.
@@ -523,6 +522,11 @@ public class NotificationInfo extends LinearLayout implements NotificationGuts.G
        return getHeight();
    }

    @VisibleForTesting
    public boolean isAnimating() {
        return mExpandAnimation != null && mExpandAnimation.isRunning();
    }

    /**
     * Runnable to either update the given channel (with a new importance value) or, if no channel
     * is provided, update notifications enabled state for the package.
+12 −6
Original line number Diff line number Diff line
@@ -158,6 +158,11 @@ public class NotificationInfoTest extends SysuiTestCase {
        PollingCheck.waitFor(1000,
                () -> VISIBLE == mNotificationInfo.findViewById(R.id.confirmation).getVisibility());
    }
    private void ensureNoUndoButton() {
        PollingCheck.waitFor(1000,
                () -> GONE == mNotificationInfo.findViewById(R.id.confirmation).getVisibility()
                        && !mNotificationInfo.isAnimating());
    }
    private void waitForStopButton() {
        PollingCheck.waitFor(1000,
                () -> VISIBLE == mNotificationInfo.findViewById(R.id.prompt).getVisibility());
@@ -583,9 +588,6 @@ public class NotificationInfoTest extends SysuiTestCase {
                true /* isUserSentimentNegative */);

        mNotificationInfo.findViewById(R.id.block).performClick();
        waitForUndoButton();
        mNotificationInfo.handleCloseControls(true /* save */, false /* force */);

        mTestableLooper.processAllMessages();
        verify(listener).checkSave(any(Runnable.class), eq(mSbn));
    }
@@ -805,7 +807,7 @@ public class NotificationInfoTest extends SysuiTestCase {
    }

    @Test
    public void testCloseControlsDoesNotUpdateIfCheckSaveListenerIsNoOp() throws Exception {
    public void testBlockDoesNothingIfCheckSaveListenerIsNoOp() throws Exception {
        mNotificationChannel.setImportance(IMPORTANCE_LOW);
        mNotificationInfo.bindNotification(mMockPackageManager, mMockINotificationManager,
                TEST_PACKAGE_NAME, mNotificationChannel, 1, mSbn,
@@ -813,10 +815,10 @@ public class NotificationInfoTest extends SysuiTestCase {
                }, null, null, true, true);

        mNotificationInfo.findViewById(R.id.block).performClick();
        waitForUndoButton();
        mTestableLooper.processAllMessages();
        ensureNoUndoButton();
        mNotificationInfo.handleCloseControls(true, false);

        mTestableLooper.processAllMessages();
        verify(mMockINotificationManager, never()).updateNotificationChannelForPackage(
                eq(TEST_PACKAGE_NAME), eq(TEST_UID), eq(mNotificationChannel));
    }
@@ -831,6 +833,10 @@ public class NotificationInfoTest extends SysuiTestCase {
                }, null, null, true, false);

        mNotificationInfo.findViewById(R.id.block).performClick();
        mTestableLooper.processAllMessages();
        verify(mMockINotificationManager, never()).updateNotificationChannelForPackage(
                eq(TEST_PACKAGE_NAME), eq(TEST_UID), eq(mNotificationChannel));

        waitForUndoButton();
        mNotificationInfo.handleCloseControls(true, false);