diff options
5 files changed, 32 insertions, 1 deletions
diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java index 18fd67e3ae94..a013d3d66d3b 100644 --- a/core/java/android/provider/Settings.java +++ b/core/java/android/provider/Settings.java @@ -12427,6 +12427,7 @@ public final class Settings { * * <pre> * enabled (boolean) + * requires_targeting_p (boolean) * max_squeeze_remeasure_attempts (int) * </pre> * @see com.android.systemui.statusbar.policy.SmartReplyConstants diff --git a/packages/SystemUI/res/values/config.xml b/packages/SystemUI/res/values/config.xml index 9ebf55760599..f76603bfe56c 100644 --- a/packages/SystemUI/res/values/config.xml +++ b/packages/SystemUI/res/values/config.xml @@ -479,6 +479,9 @@ <!-- Smart replies in notifications: Whether smart replies in notifications are enabled. --> <bool name="config_smart_replies_in_notifications_enabled">true</bool> + <!-- Smart replies in notifications: Whether we disable the feature unless the app targets P --> + <bool name="config_smart_replies_in_notifications_requires_targeting_p">true</bool> + <!-- Smart replies in notifications: Maximum number of times SmartReplyView will try to find a better (narrower) line-break for a double-line smart reply button. --> <integer name="config_smart_replies_in_notifications_max_squeeze_remeasure_attempts">3</integer> diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationContentView.java b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationContentView.java index f64b1bc2abe8..b81e9af4f692 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationContentView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationContentView.java @@ -1210,7 +1210,9 @@ public class NotificationContentView extends FrameLayout { return; } - boolean enableSmartReplies = mSmartReplyConstants.isEnabled(); + boolean enableSmartReplies = (mSmartReplyConstants.isEnabled() + && (!mSmartReplyConstants.requiresTargetingP() + || entry.targetSdk >= Build.VERSION_CODES.P)); boolean hasRemoteInput = false; RemoteInput remoteInputWithChoices = null; 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 c5067a6578eb..7b0b80049966 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/SmartReplyConstants.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/SmartReplyConstants.java @@ -33,13 +33,16 @@ public final class SmartReplyConstants extends ContentObserver { private static final String TAG = "SmartReplyConstants"; private static final String KEY_ENABLED = "enabled"; + private static final String KEY_REQUIRES_TARGETING_P = "requires_targeting_p"; private static final String KEY_MAX_SQUEEZE_REMEASURE_ATTEMPTS = "max_squeeze_remeasure_attempts"; private final boolean mDefaultEnabled; + private final boolean mDefaultRequiresP; private final int mDefaultMaxSqueezeRemeasureAttempts; private boolean mEnabled; + private boolean mRequiresTargetingP; private int mMaxSqueezeRemeasureAttempts; private final Context mContext; @@ -52,6 +55,8 @@ public final class SmartReplyConstants extends ContentObserver { final Resources resources = mContext.getResources(); mDefaultEnabled = resources.getBoolean( R.bool.config_smart_replies_in_notifications_enabled); + mDefaultRequiresP = resources.getBoolean( + R.bool.config_smart_replies_in_notifications_requires_targeting_p); mDefaultMaxSqueezeRemeasureAttempts = resources.getInteger( R.integer.config_smart_replies_in_notifications_max_squeeze_remeasure_attempts); @@ -75,6 +80,7 @@ public final class SmartReplyConstants extends ContentObserver { Log.e(TAG, "Bad smart reply constants", e); } mEnabled = mParser.getBoolean(KEY_ENABLED, mDefaultEnabled); + mRequiresTargetingP = mParser.getBoolean(KEY_REQUIRES_TARGETING_P, mDefaultRequiresP); mMaxSqueezeRemeasureAttempts = mParser.getInt( KEY_MAX_SQUEEZE_REMEASURE_ATTEMPTS, mDefaultMaxSqueezeRemeasureAttempts); } @@ -86,6 +92,14 @@ public final class SmartReplyConstants extends ContentObserver { } /** + * Returns whether smart replies in notifications should be disabled when the app targets a + * version of Android older than P. + */ + public boolean requiresTargetingP() { + return mRequiresTargetingP; + } + + /** * Returns the maximum number of times {@link SmartReplyView#onMeasure(int, int)} will try to * find a better (narrower) line-break for a double-line smart reply button. */ 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 32a7cb9013fa..aca7c9c494a1 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 @@ -74,6 +74,17 @@ public class SmartReplyConstantsTest extends SysuiTestCase { } @Test + public void testRequiresTargetingPConfig() { + overrideSetting("enabled=true,requires_targeting_p=false"); + triggerConstantsOnChange(); + assertEquals(false, mConstants.requiresTargetingP()); + + overrideSetting("enabled=true"); + triggerConstantsOnChange(); + assertEquals(true, mConstants.requiresTargetingP()); + } + + @Test public void testGetMaxSqueezeRemeasureAttemptsWithNoConfig() { assertTrue(mConstants.isEnabled()); assertEquals(7, mConstants.getMaxSqueezeRemeasureAttempts()); |