Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6a29d077 authored by Richard Ledley's avatar Richard Ledley Committed by android-build-merger
Browse files

Merge "Add flag to control blocking Smart Replies for apps targeting an...

Merge "Add flag to control blocking Smart Replies for apps targeting an Android version below P." into pi-dev
am: 525b1828

Change-Id: I57974b8dc2b55d938ed48760654936d4bce61b11
parents a6afc381 525b1828
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -12435,6 +12435,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
+3 −0
Original line number Diff line number Diff line
@@ -482,6 +482,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>
+3 −1
Original line number Diff line number Diff line
@@ -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;
+14 −0
Original line number Diff line number Diff line
@@ -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);
        }
@@ -85,6 +91,14 @@ public final class SmartReplyConstants extends ContentObserver {
        return mEnabled;
    }

    /**
     * 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.
+11 −0
Original line number Diff line number Diff line
@@ -73,6 +73,17 @@ public class SmartReplyConstantsTest extends SysuiTestCase {
        assertFalse(mConstants.isEnabled());
    }

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