diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/AppOpsInfo.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/AppOpsInfo.java index 10fc990e2c5b2..9dcc187cb0ef6 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/AppOpsInfo.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/AppOpsInfo.java @@ -188,6 +188,11 @@ public class AppOpsInfo extends LinearLayout implements NotificationGuts.GutsCon return false; } + @Override + public boolean needsFalsingProtection() { + return false; + } + @Override public View getContentView() { return this; diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationConversationInfo.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationConversationInfo.java index 9217756dca134..9befa313edd89 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationConversationInfo.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationConversationInfo.java @@ -403,6 +403,11 @@ public class NotificationConversationInfo extends LinearLayout implements // TODO: do we need to do anything here? } + @Override + public boolean needsFalsingProtection() { + return true; + } + @Override public void onInitializeAccessibilityEvent(AccessibilityEvent event) { super.onInitializeAccessibilityEvent(event); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationGuts.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationGuts.java index 18d436ff7659e..c762b73a16485 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationGuts.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationGuts.java @@ -104,6 +104,12 @@ public class NotificationGuts extends FrameLayout { * Called when the guts view has finished its close animation. */ default void onFinishedClosing() {} + + /** + * Returns whether falsing protection is needed before showing the contents of this + * view on the lockscreen + */ + boolean needsFalsingProtection(); } public interface OnGutsClosedListener { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationGutsManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationGutsManager.java index 1caf8f89c8226..a64dcdffff1ea 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationGutsManager.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationGutsManager.java @@ -523,23 +523,27 @@ public class NotificationGutsManager implements Dumpable, NotificationLifetimeEx int x, int y, NotificationMenuRowPlugin.MenuItem menuItem) { - if (menuItem.getGutsView() instanceof NotificationInfo) { - if (mStatusBarStateController instanceof StatusBarStateControllerImpl) { - ((StatusBarStateControllerImpl) mStatusBarStateController) - .setLeaveOpenOnKeyguardHide(true); + if (menuItem.getGutsView() instanceof NotificationGuts.GutsContent) { + NotificationGuts.GutsContent gutsView = + (NotificationGuts.GutsContent) menuItem.getGutsView(); + if (gutsView.needsFalsingProtection()) { + if (mStatusBarStateController instanceof StatusBarStateControllerImpl) { + ((StatusBarStateControllerImpl) mStatusBarStateController) + .setLeaveOpenOnKeyguardHide(true); + } + + Runnable r = () -> mMainHandler.post( + () -> openGutsInternal(view, x, y, menuItem)); + + mStatusBarLazy.get().executeRunnableDismissingKeyguard( + r, + null /* cancelAction */, + false /* dismissShade */, + true /* afterKeyguardGone */, + true /* deferred */); + + return true; } - - Runnable r = () -> mMainHandler.post( - () -> openGutsInternal(view, x, y, menuItem)); - - mStatusBarLazy.get().executeRunnableDismissingKeyguard( - r, - null /* cancelAction */, - false /* dismissShade */, - true /* afterKeyguardGone */, - true /* deferred */); - - return true; } return openGutsInternal(view, x, y, menuItem); } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationInfo.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationInfo.java index 91c31cf58ea07..334599930b63c 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationInfo.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationInfo.java @@ -489,6 +489,11 @@ public class NotificationInfo extends LinearLayout implements NotificationGuts.G mMetricsLogger.write(notificationControlsLogMaker().setType(MetricsEvent.TYPE_CLOSE)); } + @Override + public boolean needsFalsingProtection() { + return true; + } + @Override public void onInitializeAccessibilityEvent(AccessibilityEvent event) { super.onInitializeAccessibilityEvent(event); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationSnooze.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationSnooze.java index e56771c62bb5d..cde3dfd66aaf1 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationSnooze.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationSnooze.java @@ -442,6 +442,11 @@ public class NotificationSnooze extends LinearLayout return true; } + @Override + public boolean needsFalsingProtection() { + return false; + } + public class NotificationSnoozeOption implements SnoozeOption { private SnoozeCriterion mCriterion; private int mMinutesToSnoozeFor; diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/PartialConversationInfo.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/PartialConversationInfo.java index 1dc828bfb0b57..ea059cbcf3e14 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/PartialConversationInfo.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/PartialConversationInfo.java @@ -300,6 +300,11 @@ public class PartialConversationInfo extends LinearLayout implements // TODO: do we need to do anything here? } + @Override + public boolean needsFalsingProtection() { + return true; + } + @Override public void onInitializeAccessibilityEvent(AccessibilityEvent event) { super.onInitializeAccessibilityEvent(event);