diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java index 66e1c80fa31e6..03b7d9c2f611e 100644 --- a/core/java/android/provider/Settings.java +++ b/core/java/android/provider/Settings.java @@ -13836,6 +13836,7 @@ public final class Settings { * requires_targeting_p (boolean) * max_squeeze_remeasure_attempts (int) * edit_choices_before_sending (boolean) + * show_in_heads_up (boolean) * * @see com.android.systemui.statusbar.policy.SmartReplyConstants * @hide diff --git a/packages/SystemUI/res/values/config.xml b/packages/SystemUI/res/values/config.xml index 7cc5524416029..476089aa3aacc 100644 --- a/packages/SystemUI/res/values/config.xml +++ b/packages/SystemUI/res/values/config.xml @@ -454,6 +454,10 @@ RemoteInput.Builder.setEditChoicesBeforeSending. --> false + + true + diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationContentView.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationContentView.java index bf30cf9a53c01..c161da348c28f 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationContentView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationContentView.java @@ -1489,7 +1489,7 @@ public class NotificationContentView extends FrameLayout { } } } - if (mHeadsUpChild != null) { + if (mHeadsUpChild != null && mSmartReplyConstants.getShowInHeadsUp()) { mHeadsUpSmartReplyView = applySmartReplyView(mHeadsUpChild, smartRepliesAndActions, entry); } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/SmartReplyConstants.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/SmartReplyConstants.java index 0c63e2969e018..3bd0d456dbd30 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/SmartReplyConstants.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/SmartReplyConstants.java @@ -45,16 +45,19 @@ public final class SmartReplyConstants extends ContentObserver { "max_squeeze_remeasure_attempts"; private static final String KEY_EDIT_CHOICES_BEFORE_SENDING = "edit_choices_before_sending"; + private static final String KEY_SHOW_IN_HEADS_UP = "show_in_heads_up"; private final boolean mDefaultEnabled; private final boolean mDefaultRequiresP; private final int mDefaultMaxSqueezeRemeasureAttempts; private final boolean mDefaultEditChoicesBeforeSending; + private final boolean mDefaultShowInHeadsUp; private boolean mEnabled; private boolean mRequiresTargetingP; private int mMaxSqueezeRemeasureAttempts; private boolean mEditChoicesBeforeSending; + private boolean mShowInHeadsUp; private final Context mContext; private final KeyValueListParser mParser = new KeyValueListParser(','); @@ -73,6 +76,8 @@ public final class SmartReplyConstants extends ContentObserver { R.integer.config_smart_replies_in_notifications_max_squeeze_remeasure_attempts); mDefaultEditChoicesBeforeSending = resources.getBoolean( R.bool.config_smart_replies_in_notifications_edit_choices_before_sending); + mDefaultShowInHeadsUp = resources.getBoolean( + R.bool.config_smart_replies_in_notifications_show_in_heads_up); mContext.getContentResolver().registerContentObserver( Settings.Global.getUriFor(Settings.Global.SMART_REPLIES_IN_NOTIFICATIONS_FLAGS), @@ -99,6 +104,7 @@ public final class SmartReplyConstants extends ContentObserver { KEY_MAX_SQUEEZE_REMEASURE_ATTEMPTS, mDefaultMaxSqueezeRemeasureAttempts); mEditChoicesBeforeSending = mParser.getBoolean( KEY_EDIT_CHOICES_BEFORE_SENDING, mDefaultEditChoicesBeforeSending); + mShowInHeadsUp = mParser.getBoolean(KEY_SHOW_IN_HEADS_UP, mDefaultShowInHeadsUp); } } @@ -142,4 +148,11 @@ public final class SmartReplyConstants extends ContentObserver { return mEditChoicesBeforeSending; } } + + /** + * Returns whether smart suggestions should be enabled in heads-up notifications. + */ + public boolean getShowInHeadsUp() { + return mShowInHeadsUp; + } } diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/SmartReplyConstantsTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/SmartReplyConstantsTest.java index 37a56a3cbdeda..3cbf902f1d40b 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/SmartReplyConstantsTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/SmartReplyConstantsTest.java @@ -54,6 +54,7 @@ public class SmartReplyConstantsTest extends SysuiTestCase { R.integer.config_smart_replies_in_notifications_max_squeeze_remeasure_attempts, 7); resources.addOverride( R.bool.config_smart_replies_in_notifications_edit_choices_before_sending, false); + resources.addOverride(R.bool.config_smart_replies_in_notifications_show_in_heads_up, true); mConstants = new SmartReplyConstants(Handler.createAsync(Looper.myLooper()), mContext); } @@ -152,6 +153,26 @@ public class SmartReplyConstantsTest extends SysuiTestCase { RemoteInput.EDIT_CHOICES_BEFORE_SENDING_DISABLED)); } + @Test + public void testShowInHeadsUpWithNoConfig() { + assertTrue(mConstants.isEnabled()); + assertTrue(mConstants.getShowInHeadsUp()); + } + + @Test + public void testShowInHeadsUpEnabled() { + overrideSetting("enabled=true,show_in_heads_up=true"); + triggerConstantsOnChange(); + assertTrue(mConstants.getShowInHeadsUp()); + } + + @Test + public void testShowInHeadsUpDisabled() { + overrideSetting("enabled=true,show_in_heads_up=false"); + triggerConstantsOnChange(); + assertFalse(mConstants.getShowInHeadsUp()); + } + private void overrideSetting(String flags) { Settings.Global.putString(mContext.getContentResolver(), Settings.Global.SMART_REPLIES_IN_NOTIFICATIONS_FLAGS, flags);