Merge "Checks keyguard earlier when blocking notifications." into pi-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
e7ca4fe6ee
@@ -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.
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user