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
This commit is contained in:
Gustav Sennton
2019-01-08 09:39:51 +00:00
parent 5b66f8cf2e
commit 3f3eaff7c0
5 changed files with 40 additions and 1 deletions

View File

@@ -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)
* </pre>
* @see com.android.systemui.statusbar.policy.SmartReplyConstants
* @hide

View File

@@ -454,6 +454,10 @@
RemoteInput.Builder.setEditChoicesBeforeSending. -->
<bool name="config_smart_replies_in_notifications_edit_choices_before_sending">false</bool>
<!-- Smart replies in notifications: Whether smart suggestions in notifications are enabled in
heads-up notifications. -->
<bool name="config_smart_replies_in_notifications_show_in_heads_up">true</bool>
<!-- Screenshot editing default activity. Must handle ACTION_EDIT image/png intents.
Blank sends the user to the Chooser first.
This name is in the ComponentName flattened format (package/class) -->

View File

@@ -1489,7 +1489,7 @@ public class NotificationContentView extends FrameLayout {
}
}
}
if (mHeadsUpChild != null) {
if (mHeadsUpChild != null && mSmartReplyConstants.getShowInHeadsUp()) {
mHeadsUpSmartReplyView =
applySmartReplyView(mHeadsUpChild, smartRepliesAndActions, entry);
}

View File

@@ -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;
}
}

View File

@@ -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);