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:
@@ -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
|
||||
|
||||
@@ -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) -->
|
||||
|
||||
@@ -1489,7 +1489,7 @@ public class NotificationContentView extends FrameLayout {
|
||||
}
|
||||
}
|
||||
}
|
||||
if (mHeadsUpChild != null) {
|
||||
if (mHeadsUpChild != null && mSmartReplyConstants.getShowInHeadsUp()) {
|
||||
mHeadsUpSmartReplyView =
|
||||
applySmartReplyView(mHeadsUpChild, smartRepliesAndActions, entry);
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user