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

Commit 525b1828 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
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
parents 87f98183 4069f7a1
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -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
+3 −0
Original line number Diff line number Diff line
@@ -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>
+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());