Merge "Checks keyguard earlier when blocking notifications." into pi-dev

This commit is contained in:
TreeHugger Robot
2018-10-17 21:43:49 +00:00
committed by Android (Google) Code Review
2 changed files with 27 additions and 17 deletions

View File

@@ -102,8 +102,15 @@ public class NotificationInfo extends LinearLayout implements NotificationGuts.G
};
private OnClickListener mOnStopOrMinimizeNotifications = v -> {
mExitReason = NotificationCounters.BLOCKING_HELPER_STOP_NOTIFICATIONS;
swapContent(false);
Runnable saveImportance = () -> {
mExitReason = NotificationCounters.BLOCKING_HELPER_STOP_NOTIFICATIONS;
swapContent(false);
};
if (mCheckSaveListener != null) {
mCheckSaveListener.checkSave(saveImportance, mSbn);
} else {
saveImportance.run();
}
};
private OnClickListener mOnUndo = v -> {
@@ -300,15 +307,7 @@ 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();
}
updateImportance();
}
}
@@ -513,6 +512,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.

View File

@@ -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());
@@ -567,9 +572,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));
}
@@ -787,7 +789,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,
@@ -795,10 +797,10 @@ public class NotificationInfoTest extends SysuiTestCase {
}, null, null, 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));
}
@@ -813,6 +815,10 @@ public class NotificationInfoTest extends SysuiTestCase {
}, null, null, 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);