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 -> { private OnClickListener mOnStopOrMinimizeNotifications = v -> {
mExitReason = NotificationCounters.BLOCKING_HELPER_STOP_NOTIFICATIONS; Runnable saveImportance = () -> {
swapContent(false); mExitReason = NotificationCounters.BLOCKING_HELPER_STOP_NOTIFICATIONS;
swapContent(false);
};
if (mCheckSaveListener != null) {
mCheckSaveListener.checkSave(saveImportance, mSbn);
} else {
saveImportance.run();
}
}; };
private OnClickListener mOnUndo = v -> { private OnClickListener mOnUndo = v -> {
@@ -300,15 +307,7 @@ public class NotificationInfo extends LinearLayout implements NotificationGuts.G
private void saveImportance() { private void saveImportance() {
if (!mIsNonblockable) { if (!mIsNonblockable) {
// Only go through the lock screen/bouncer if the user hit 'Stop notifications'. updateImportance();
// Otherwise, update the importance immediately.
if (mCheckSaveListener != null
&& NotificationCounters.BLOCKING_HELPER_STOP_NOTIFICATIONS.equals(
mExitReason)) {
mCheckSaveListener.checkSave(this::updateImportance, mSbn);
} else {
updateImportance();
}
} }
} }
@@ -513,6 +512,11 @@ public class NotificationInfo extends LinearLayout implements NotificationGuts.G
return getHeight(); 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 * 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. * is provided, update notifications enabled state for the package.

View File

@@ -158,6 +158,11 @@ public class NotificationInfoTest extends SysuiTestCase {
PollingCheck.waitFor(1000, PollingCheck.waitFor(1000,
() -> VISIBLE == mNotificationInfo.findViewById(R.id.confirmation).getVisibility()); () -> 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() { private void waitForStopButton() {
PollingCheck.waitFor(1000, PollingCheck.waitFor(1000,
() -> VISIBLE == mNotificationInfo.findViewById(R.id.prompt).getVisibility()); () -> VISIBLE == mNotificationInfo.findViewById(R.id.prompt).getVisibility());
@@ -567,9 +572,6 @@ public class NotificationInfoTest extends SysuiTestCase {
true /* isUserSentimentNegative */); true /* isUserSentimentNegative */);
mNotificationInfo.findViewById(R.id.block).performClick(); mNotificationInfo.findViewById(R.id.block).performClick();
waitForUndoButton();
mNotificationInfo.handleCloseControls(true /* save */, false /* force */);
mTestableLooper.processAllMessages(); mTestableLooper.processAllMessages();
verify(listener).checkSave(any(Runnable.class), eq(mSbn)); verify(listener).checkSave(any(Runnable.class), eq(mSbn));
} }
@@ -787,7 +789,7 @@ public class NotificationInfoTest extends SysuiTestCase {
} }
@Test @Test
public void testCloseControlsDoesNotUpdateIfCheckSaveListenerIsNoOp() throws Exception { public void testBlockDoesNothingIfCheckSaveListenerIsNoOp() throws Exception {
mNotificationChannel.setImportance(IMPORTANCE_LOW); mNotificationChannel.setImportance(IMPORTANCE_LOW);
mNotificationInfo.bindNotification(mMockPackageManager, mMockINotificationManager, mNotificationInfo.bindNotification(mMockPackageManager, mMockINotificationManager,
TEST_PACKAGE_NAME, mNotificationChannel, 1, mSbn, TEST_PACKAGE_NAME, mNotificationChannel, 1, mSbn,
@@ -795,10 +797,10 @@ public class NotificationInfoTest extends SysuiTestCase {
}, null, null, true); }, null, null, true);
mNotificationInfo.findViewById(R.id.block).performClick(); mNotificationInfo.findViewById(R.id.block).performClick();
waitForUndoButton(); mTestableLooper.processAllMessages();
ensureNoUndoButton();
mNotificationInfo.handleCloseControls(true, false); mNotificationInfo.handleCloseControls(true, false);
mTestableLooper.processAllMessages();
verify(mMockINotificationManager, never()).updateNotificationChannelForPackage( verify(mMockINotificationManager, never()).updateNotificationChannelForPackage(
eq(TEST_PACKAGE_NAME), eq(TEST_UID), eq(mNotificationChannel)); eq(TEST_PACKAGE_NAME), eq(TEST_UID), eq(mNotificationChannel));
} }
@@ -813,6 +815,10 @@ public class NotificationInfoTest extends SysuiTestCase {
}, null, null, false); }, null, null, false);
mNotificationInfo.findViewById(R.id.block).performClick(); mNotificationInfo.findViewById(R.id.block).performClick();
mTestableLooper.processAllMessages();
verify(mMockINotificationManager, never()).updateNotificationChannelForPackage(
eq(TEST_PACKAGE_NAME), eq(TEST_UID), eq(mNotificationChannel));
waitForUndoButton(); waitForUndoButton();
mNotificationInfo.handleCloseControls(true, false); mNotificationInfo.handleCloseControls(true, false);