From 3f3eaff7c0322b468f89fc243ffba0cb42ae2fc1 Mon Sep 17 00:00:00 2001 From: Gustav Sennton Date: Tue, 8 Jan 2019 09:39:51 +0000 Subject: Add experiment flag for smart suggestions in heads-up notifications. With this CL we add a new key-value pair to smart_replies_in_notifications_flags to control whether smart suggestions should be turned on for heads-up notifications. By default the suggestions are turned ON. Bug: 122351821 Test: atest SmartReplyConstantsTest Test: Run "adb shell settings put global smart_replies_in_notifications_flags show_in_heads_up=false" and ensure heads-up notifications do not contain smart suggestions. Change-Id: I84292c10a4545112b0e993af33bb01a8cc18ce23 --- core/java/android/provider/Settings.java | 1 + packages/SystemUI/res/values/config.xml | 4 ++++ .../notification/row/NotificationContentView.java | 2 +- .../statusbar/policy/SmartReplyConstants.java | 13 +++++++++++++ .../statusbar/policy/SmartReplyConstantsTest.java | 21 +++++++++++++++++++++ 5 files changed, 40 insertions(+), 1 deletion(-) diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java index 66e1c80fa31e..03b7d9c2f611 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 7cc552441602..476089aa3aac 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 bf30cf9a53c0..c161da348c28 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 0c63e2969e01..3bd0d456dbd3 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 37a56a3cbded..3cbf902f1d40 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); -- cgit v1.2.3-59-g8ed1b