<!-- 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>
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;
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);
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);
}
}
/**
+ * 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.
*/
}
@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());