From 9b08c01affb15468f0437418ff2f653335acf46c Mon Sep 17 00:00:00 2001 From: Lucas Dupin Date: Wed, 16 May 2018 19:53:32 -0700 Subject: [PATCH] Fix issue where guts would require bouncer There is no need to save the priority if we're just hiding the controls. Change-Id: I96551c5d806d5cc4e01a82a7e010000dff029505 Fixes: 78222122 Test: manual --- .../systemui/statusbar/AppOpsInfo.java | 5 ++++ .../systemui/statusbar/NotificationGuts.java | 28 +++++++++++++------ .../systemui/statusbar/NotificationInfo.java | 5 ++++ .../statusbar/NotificationSnooze.java | 5 ++++ 4 files changed, 35 insertions(+), 8 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/AppOpsInfo.java b/packages/SystemUI/src/com/android/systemui/statusbar/AppOpsInfo.java index cfc4da4e4898c..7999a6c0af9ee 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/AppOpsInfo.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/AppOpsInfo.java @@ -185,6 +185,11 @@ public class AppOpsInfo extends LinearLayout implements NotificationGuts.GutsCon return false; } + @Override + public boolean shouldBeSaved() { + return false; + } + @Override public View getContentView() { return this; diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationGuts.java b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationGuts.java index eb46fba0970fa..cfd5d83c87b9e 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationGuts.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationGuts.java @@ -63,12 +63,12 @@ public class NotificationGuts extends FrameLayout { public void setGutsParent(NotificationGuts listener); /** - * @return the view to be shown in the notification guts. + * Return the view to be shown in the notification guts. */ public View getContentView(); /** - * @return the actual height of the content. + * Return the actual height of the content. */ public int getActualHeight(); @@ -83,16 +83,21 @@ public class NotificationGuts extends FrameLayout { public boolean handleCloseControls(boolean save, boolean force); /** - * @return whether the notification associated with these guts is set to be removed. + * Return whether the notification associated with these guts is set to be removed. */ public boolean willBeRemoved(); /** - * @return whether these guts are a leavebehind (e.g. {@link NotificationSnooze}). + * Return whether these guts are a leavebehind (e.g. {@link NotificationSnooze}). */ public default boolean isLeavebehind() { return false; } + + /** + * Return whether something changed and needs to be saved, possibly requiring a bouncer. + */ + boolean shouldBeSaved(); } public interface OnGutsClosedListener { @@ -201,12 +206,19 @@ public class NotificationGuts extends FrameLayout { setExposed(true /* exposed */, needsFalsingProtection); } + /** + * Hide controls if they are visible + * @param leavebehinds true if leavebehinds should be closed + * @param controls true if controls should be closed + * @param x x coordinate to animate the close circular reveal with + * @param y y coordinate to animate the close circular reveal with + * @param force whether the guts should be force-closed regardless of state. + */ public void closeControls(boolean leavebehinds, boolean controls, int x, int y, boolean force) { if (mGutsContent != null) { - if (mGutsContent.isLeavebehind() && leavebehinds) { - closeControls(x, y, true /* save */, force); - } else if (!mGutsContent.isLeavebehind() && controls) { - closeControls(x, y, true /* save */, force); + if ((mGutsContent.isLeavebehind() && leavebehinds) + || (!mGutsContent.isLeavebehind() && controls)) { + closeControls(x, y, mGutsContent.shouldBeSaved(), force); } } } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationInfo.java b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationInfo.java index 98e926807431a..2b7ab10a7b41c 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationInfo.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationInfo.java @@ -485,6 +485,11 @@ public class NotificationInfo extends LinearLayout implements NotificationGuts.G return hasImportanceChanged(); } + @Override + public boolean shouldBeSaved() { + return hasImportanceChanged(); + } + @Override public View getContentView() { return this; diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationSnooze.java b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationSnooze.java index aea0127764b03..d84d3dca527d9 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationSnooze.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationSnooze.java @@ -431,6 +431,11 @@ public class NotificationSnooze extends LinearLayout return true; } + @Override + public boolean shouldBeSaved() { + return true; + } + public class NotificationSnoozeOption implements SnoozeOption { private SnoozeCriterion mCriterion; private int mMinutesToSnoozeFor;