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

Commit 366498dd authored by Chandru S's avatar Chandru S
Browse files

Hide existing bouncer message area if the feature flag is enabled.

Bug: 275600559
Test: verified manually, flipping feature flag on will hide the current bouncer messages
Test: atest KeyguardAbsKeyInputViewControllerTest
Test: atest KeyguardPatternViewControllerTest
Change-Id: I97b201c67de418ab805b0547e2f3afc36b12bb3e
parent 26a6f683
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -37,6 +37,7 @@ import com.android.keyguard.KeyguardSecurityModel.SecurityMode;
import com.android.systemui.R;
import com.android.systemui.classifier.FalsingClassifier;
import com.android.systemui.classifier.FalsingCollector;
import com.android.systemui.flags.FeatureFlags;

import java.util.HashMap;
import java.util.Map;
@@ -77,9 +78,10 @@ public abstract class KeyguardAbsKeyInputViewController<T extends KeyguardAbsKey
            KeyguardSecurityCallback keyguardSecurityCallback,
            KeyguardMessageAreaController.Factory messageAreaControllerFactory,
            LatencyTracker latencyTracker, FalsingCollector falsingCollector,
            EmergencyButtonController emergencyButtonController) {
            EmergencyButtonController emergencyButtonController,
            FeatureFlags featureFlags) {
        super(view, securityMode, keyguardSecurityCallback, emergencyButtonController,
                messageAreaControllerFactory);
                messageAreaControllerFactory, featureFlags);
        mKeyguardUpdateMonitor = keyguardUpdateMonitor;
        mLockPatternUtils = lockPatternUtils;
        mLatencyTracker = latencyTracker;
+23 −6
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@

package com.android.keyguard;

import android.annotation.CallSuper;
import android.annotation.Nullable;
import android.content.res.ColorStateList;
import android.content.res.Resources;
@@ -31,6 +32,7 @@ import com.android.systemui.R;
import com.android.systemui.classifier.FalsingCollector;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.flags.FeatureFlags;
import com.android.systemui.flags.Flags;
import com.android.systemui.statusbar.policy.DevicePostureController;
import com.android.systemui.util.ViewController;
import com.android.systemui.util.concurrency.DelayableExecutor;
@@ -53,16 +55,19 @@ public abstract class KeyguardInputViewController<T extends KeyguardInputView>
    // (e.g. face unlock). This avoids unwanted asynchronous events from messing with the
    // state for the current security method.
    private KeyguardSecurityCallback mNullCallback = new KeyguardSecurityCallback() {};
    private final FeatureFlags mFeatureFlags;

    protected KeyguardInputViewController(T view, SecurityMode securityMode,
            KeyguardSecurityCallback keyguardSecurityCallback,
            EmergencyButtonController emergencyButtonController,
            @Nullable KeyguardMessageAreaController.Factory messageAreaControllerFactory) {
            @Nullable KeyguardMessageAreaController.Factory messageAreaControllerFactory,
            FeatureFlags featureFlags) {
        super(view);
        mSecurityMode = securityMode;
        mKeyguardSecurityCallback = keyguardSecurityCallback;
        mEmergencyButton = view == null ? null : view.findViewById(R.id.emergency_call_button);
        mEmergencyButtonController = emergencyButtonController;
        mFeatureFlags = featureFlags;
        if (messageAreaControllerFactory != null) {
            try {
                BouncerKeyguardMessageArea kma = view.requireViewById(R.id.bouncer_message_area);
@@ -82,9 +87,21 @@ public abstract class KeyguardInputViewController<T extends KeyguardInputView>
    }

    @Override
    @CallSuper
    protected void onViewAttached() {
        updateMessageAreaVisibility();
    }

    private void updateMessageAreaVisibility() {
        if (mMessageAreaController == null) return;
        if (mFeatureFlags.isEnabled(Flags.REVAMPED_BOUNCER_MESSAGES)) {
            mMessageAreaController.disable();
        } else {
            mMessageAreaController.setIsVisible(true);
        }
    }


    @Override
    protected void onViewDetached() {
    }
@@ -208,14 +225,14 @@ public abstract class KeyguardInputViewController<T extends KeyguardInputView>
                        mKeyguardUpdateMonitor, securityMode, mLockPatternUtils,
                        keyguardSecurityCallback, mLatencyTracker, mFalsingCollector,
                        emergencyButtonController, mMessageAreaControllerFactory,
                        mDevicePostureController);
                        mDevicePostureController, mFeatureFlags);
            } else if (keyguardInputView instanceof KeyguardPasswordView) {
                return new KeyguardPasswordViewController((KeyguardPasswordView) keyguardInputView,
                        mKeyguardUpdateMonitor, securityMode, mLockPatternUtils,
                        keyguardSecurityCallback, mMessageAreaControllerFactory, mLatencyTracker,
                        mInputMethodManager, emergencyButtonController, mMainExecutor, mResources,
                        mFalsingCollector, mKeyguardViewController);

                        mFalsingCollector, mKeyguardViewController,
                        mFeatureFlags);
            } else if (keyguardInputView instanceof KeyguardPINView) {
                return new KeyguardPinViewController((KeyguardPINView) keyguardInputView,
                        mKeyguardUpdateMonitor, securityMode, mLockPatternUtils,
@@ -227,13 +244,13 @@ public abstract class KeyguardInputViewController<T extends KeyguardInputView>
                        mKeyguardUpdateMonitor, securityMode, mLockPatternUtils,
                        keyguardSecurityCallback, mMessageAreaControllerFactory, mLatencyTracker,
                        mLiftToActivateListener, mTelephonyManager, mFalsingCollector,
                        emergencyButtonController);
                        emergencyButtonController, mFeatureFlags);
            } else if (keyguardInputView instanceof KeyguardSimPukView) {
                return new KeyguardSimPukViewController((KeyguardSimPukView) keyguardInputView,
                        mKeyguardUpdateMonitor, securityMode, mLockPatternUtils,
                        keyguardSecurityCallback, mMessageAreaControllerFactory, mLatencyTracker,
                        mLiftToActivateListener, mTelephonyManager, mFalsingCollector,
                        emergencyButtonController);
                        emergencyButtonController, mFeatureFlags);
            }

            throw new RuntimeException("Unable to find controller for " + keyguardInputView);
+18 −0
Original line number Diff line number Diff line
@@ -45,6 +45,7 @@ public abstract class KeyguardMessageArea extends TextView implements SecurityMe
    private int mTopMargin;
    protected boolean mAnimate;
    private final int mStyleResId;
    private boolean mIsDisabled = false;

    public KeyguardMessageArea(Context context, AttributeSet attrs) {
        super(context, attrs);
@@ -128,6 +129,10 @@ public abstract class KeyguardMessageArea extends TextView implements SecurityMe
    }

    void update() {
        if (mIsDisabled) {
            setVisibility(GONE);
            return;
        }
        CharSequence status = mMessage;
        setVisibility(TextUtils.isEmpty(status) || (!mIsVisible) ? INVISIBLE : VISIBLE);
        setText(status);
@@ -146,4 +151,17 @@ public abstract class KeyguardMessageArea extends TextView implements SecurityMe

    /** Set the text color */
    protected abstract void updateTextColor();

    /**
     * Mark this view with {@link android.view.View#GONE} visibility to remove this from the layout
     * of the view. Any calls to {@link #setIsVisible(boolean)} after this will be a no-op.
     */
    public void disable() {
        mIsDisabled = true;
        update();
    }

    public boolean isDisabled() {
        return mIsDisabled;
    }
}
+11 −0
Original line number Diff line number Diff line
@@ -104,6 +104,14 @@ public class KeyguardMessageAreaController<T extends KeyguardMessageArea>
        mView.setIsVisible(isVisible);
    }

    /**
     * Mark this view with {@link View#GONE} visibility to remove this from the layout of the view.
     * Any calls to {@link #setIsVisible(boolean)} after this will be a no-op.
     */
    public void disable() {
        mView.disable();
    }

    public void setMessage(CharSequence s) {
        setMessage(s, true);
    }
@@ -112,6 +120,9 @@ public class KeyguardMessageAreaController<T extends KeyguardMessageArea>
     * Sets a message to the underlying text view.
     */
    public void setMessage(CharSequence s, boolean animate) {
        if (mView.isDisabled()) {
            return;
        }
        mView.setMessage(s, animate);
        CharSequence msg = mView.getText();
        if (!TextUtils.isEmpty(msg)) {
+4 −2
Original line number Diff line number Diff line
@@ -40,6 +40,7 @@ import com.android.keyguard.KeyguardSecurityModel.SecurityMode;
import com.android.systemui.R;
import com.android.systemui.classifier.FalsingCollector;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.flags.FeatureFlags;
import com.android.systemui.util.concurrency.DelayableExecutor;

import java.util.List;
@@ -104,10 +105,11 @@ public class KeyguardPasswordViewController
            @Main DelayableExecutor mainExecutor,
            @Main Resources resources,
            FalsingCollector falsingCollector,
            KeyguardViewController keyguardViewController) {
            KeyguardViewController keyguardViewController,
            FeatureFlags featureFlags) {
        super(view, keyguardUpdateMonitor, securityMode, lockPatternUtils, keyguardSecurityCallback,
                messageAreaControllerFactory, latencyTracker, falsingCollector,
                emergencyButtonController);
                emergencyButtonController, featureFlags);
        mKeyguardSecurityCallback = keyguardSecurityCallback;
        mInputMethodManager = inputMethodManager;
        mMainExecutor = mainExecutor;
Loading