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

Commit c295ce4a authored by Beverly Tai's avatar Beverly Tai Committed by Automerger Merge Worker
Browse files

Merge "Fix udfps flicker on camera launch + exit" into sc-dev am: abfeb714

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/15661783

Change-Id: If33905c69fe64f876431c52b7eb5181cc73b9e5d
parents 6d2b39ff abfeb714
Loading
Loading
Loading
Loading
+1 −0
Original line number Original line Diff line number Diff line
@@ -781,6 +781,7 @@ public class UdfpsController implements DozeReceiver {
                        mKeyguardViewMediator,
                        mKeyguardViewMediator,
                        mLockscreenShadeTransitionController,
                        mLockscreenShadeTransitionController,
                        mConfigurationController,
                        mConfigurationController,
                        mKeyguardStateController,
                        this
                        this
                );
                );
            case IUdfpsOverlayController.REASON_AUTH_BP:
            case IUdfpsOverlayController.REASON_AUTH_BP:
+42 −2
Original line number Original line Diff line number Diff line
@@ -34,6 +34,7 @@ import com.android.systemui.statusbar.phone.KeyguardBouncer;
import com.android.systemui.statusbar.phone.StatusBar;
import com.android.systemui.statusbar.phone.StatusBar;
import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager;
import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager;
import com.android.systemui.statusbar.policy.ConfigurationController;
import com.android.systemui.statusbar.policy.ConfigurationController;
import com.android.systemui.statusbar.policy.KeyguardStateController;
import com.android.systemui.util.concurrency.DelayableExecutor;
import com.android.systemui.util.concurrency.DelayableExecutor;


import java.io.FileDescriptor;
import java.io.FileDescriptor;
@@ -50,6 +51,7 @@ public class UdfpsKeyguardViewController extends UdfpsAnimationViewController<Ud
    @NonNull private final KeyguardViewMediator mKeyguardViewMediator;
    @NonNull private final KeyguardViewMediator mKeyguardViewMediator;
    @NonNull private final LockscreenShadeTransitionController mLockScreenShadeTransitionController;
    @NonNull private final LockscreenShadeTransitionController mLockScreenShadeTransitionController;
    @NonNull private final ConfigurationController mConfigurationController;
    @NonNull private final ConfigurationController mConfigurationController;
    @NonNull private final KeyguardStateController mKeyguardStateController;
    @NonNull private final UdfpsController mUdfpsController;
    @NonNull private final UdfpsController mUdfpsController;


    private boolean mShowingUdfpsBouncer;
    private boolean mShowingUdfpsBouncer;
@@ -60,6 +62,9 @@ public class UdfpsKeyguardViewController extends UdfpsAnimationViewController<Ud
    private float mTransitionToFullShadeProgress;
    private float mTransitionToFullShadeProgress;
    private float mLastDozeAmount;
    private float mLastDozeAmount;


    private float mStatusBarExpansion;
    private boolean mLaunchTransitionFadingAway;

    /**
    /**
     * hidden amount of pin/pattern/password bouncer
     * hidden amount of pin/pattern/password bouncer
     * {@link KeyguardBouncer#EXPANSION_VISIBLE} (0f) to
     * {@link KeyguardBouncer#EXPANSION_VISIBLE} (0f) to
@@ -79,6 +84,7 @@ public class UdfpsKeyguardViewController extends UdfpsAnimationViewController<Ud
            @NonNull KeyguardViewMediator keyguardViewMediator,
            @NonNull KeyguardViewMediator keyguardViewMediator,
            @NonNull LockscreenShadeTransitionController transitionController,
            @NonNull LockscreenShadeTransitionController transitionController,
            @NonNull ConfigurationController configurationController,
            @NonNull ConfigurationController configurationController,
            @NonNull KeyguardStateController keyguardStateController,
            @NonNull UdfpsController udfpsController) {
            @NonNull UdfpsController udfpsController) {
        super(view, statusBarStateController, statusBar, dumpManager);
        super(view, statusBarStateController, statusBar, dumpManager);
        mKeyguardViewManager = statusBarKeyguardViewManager;
        mKeyguardViewManager = statusBarKeyguardViewManager;
@@ -87,6 +93,7 @@ public class UdfpsKeyguardViewController extends UdfpsAnimationViewController<Ud
        mKeyguardViewMediator = keyguardViewMediator;
        mKeyguardViewMediator = keyguardViewMediator;
        mLockScreenShadeTransitionController = transitionController;
        mLockScreenShadeTransitionController = transitionController;
        mConfigurationController = configurationController;
        mConfigurationController = configurationController;
        mKeyguardStateController = keyguardStateController;
        mUdfpsController = udfpsController;
        mUdfpsController = udfpsController;
    }
    }


@@ -105,11 +112,14 @@ public class UdfpsKeyguardViewController extends UdfpsAnimationViewController<Ud


        mUdfpsRequested = false;
        mUdfpsRequested = false;


        mLaunchTransitionFadingAway = mKeyguardStateController.isLaunchTransitionFadingAway();
        mKeyguardStateController.addCallback(mKeyguardStateControllerCallback);
        mStatusBarState = mStatusBarStateController.getState();
        mStatusBarState = mStatusBarStateController.getState();
        mQsExpanded = mKeyguardViewManager.isQsExpanded();
        mQsExpanded = mKeyguardViewManager.isQsExpanded();
        mInputBouncerHiddenAmount = KeyguardBouncer.EXPANSION_HIDDEN;
        mInputBouncerHiddenAmount = KeyguardBouncer.EXPANSION_HIDDEN;
        mIsBouncerVisible = mKeyguardViewManager.bouncerIsOrWillBeShowing();
        mIsBouncerVisible = mKeyguardViewManager.bouncerIsOrWillBeShowing();
        mConfigurationController.addCallback(mConfigurationListener);
        mConfigurationController.addCallback(mConfigurationListener);
        mStatusBar.addExpansionChangedListener(mStatusBarExpansionChangedListener);
        updateAlpha();
        updateAlpha();
        updatePauseAuth();
        updatePauseAuth();


@@ -122,10 +132,12 @@ public class UdfpsKeyguardViewController extends UdfpsAnimationViewController<Ud
        super.onViewDetached();
        super.onViewDetached();
        mFaceDetectRunning = false;
        mFaceDetectRunning = false;


        mKeyguardStateController.removeCallback(mKeyguardStateControllerCallback);
        mStatusBarStateController.removeCallback(mStateListener);
        mStatusBarStateController.removeCallback(mStateListener);
        mKeyguardViewManager.removeAlternateAuthInterceptor(mAlternateAuthInterceptor);
        mKeyguardViewManager.removeAlternateAuthInterceptor(mAlternateAuthInterceptor);
        mKeyguardUpdateMonitor.requestFaceAuthOnOccludingApp(false);
        mKeyguardUpdateMonitor.requestFaceAuthOnOccludingApp(false);
        mConfigurationController.removeCallback(mConfigurationListener);
        mConfigurationController.removeCallback(mConfigurationListener);
        mStatusBar.removeExpansionChangedListener(mStatusBarExpansionChangedListener);
        if (mLockScreenShadeTransitionController.getUdfpsKeyguardViewController() == this) {
        if (mLockScreenShadeTransitionController.getUdfpsKeyguardViewController() == this) {
            mLockScreenShadeTransitionController.setUdfpsKeyguardViewController(null);
            mLockScreenShadeTransitionController.setUdfpsKeyguardViewController(null);
        }
        }
@@ -140,9 +152,11 @@ public class UdfpsKeyguardViewController extends UdfpsAnimationViewController<Ud
        pw.println("mQsExpanded=" + mQsExpanded);
        pw.println("mQsExpanded=" + mQsExpanded);
        pw.println("mIsBouncerVisible=" + mIsBouncerVisible);
        pw.println("mIsBouncerVisible=" + mIsBouncerVisible);
        pw.println("mInputBouncerHiddenAmount=" + mInputBouncerHiddenAmount);
        pw.println("mInputBouncerHiddenAmount=" + mInputBouncerHiddenAmount);
        pw.println("mStatusBarExpansion=" + mStatusBarExpansion);
        pw.println("mAlpha=" + mView.getAlpha());
        pw.println("mAlpha=" + mView.getAlpha());
        pw.println("mUdfpsRequested=" + mUdfpsRequested);
        pw.println("mUdfpsRequested=" + mUdfpsRequested);
        pw.println("mView.mUdfpsRequested=" + mView.mUdfpsRequested);
        pw.println("mView.mUdfpsRequested=" + mView.mUdfpsRequested);
        pw.println("mLaunchTransitionFadingAway=" + mLaunchTransitionFadingAway);
    }
    }


    /**
    /**
@@ -189,6 +203,10 @@ public class UdfpsKeyguardViewController extends UdfpsAnimationViewController<Ud
            return false;
            return false;
        }
        }


        if (mLaunchTransitionFadingAway) {
            return true;
        }

        if (mStatusBarState != KEYGUARD) {
        if (mStatusBarState != KEYGUARD) {
            return true;
            return true;
        }
        }
@@ -237,10 +255,13 @@ public class UdfpsKeyguardViewController extends UdfpsAnimationViewController<Ud
    }
    }


    private void updateAlpha() {
    private void updateAlpha() {
        // fade icon on transition to showing bouncer
        // fade icon on transitions to showing the status bar, but if mUdfpsRequested, then
        // the keyguard is occluded by some application - so instead use the input bouncer
        // hidden amount to determine the fade
        float expansion = mUdfpsRequested ? mInputBouncerHiddenAmount : mStatusBarExpansion;
        int alpha = mShowingUdfpsBouncer ? 255
        int alpha = mShowingUdfpsBouncer ? 255
                : (int) MathUtils.constrain(
                : (int) MathUtils.constrain(
                    MathUtils.map(.5f, .9f, 0f, 255f, mInputBouncerHiddenAmount),
                    MathUtils.map(.5f, .9f, 0f, 255f, expansion),
                    0f, 255f);
                    0f, 255f);
        alpha *= (1.0f - mTransitionToFullShadeProgress);
        alpha *= (1.0f - mTransitionToFullShadeProgress);
        mView.setUnpausedAlpha(alpha);
        mView.setUnpausedAlpha(alpha);
@@ -356,4 +377,23 @@ public class UdfpsKeyguardViewController extends UdfpsAnimationViewController<Ud
                    mView.updateColor();
                    mView.updateColor();
                }
                }
            };
            };

    private final StatusBar.ExpansionChangedListener mStatusBarExpansionChangedListener =
            new StatusBar.ExpansionChangedListener() {
                @Override
                public void onExpansionChanged(float expansion, boolean expanded) {
                    mStatusBarExpansion = expansion;
                    updateAlpha();
                }
            };

    private final KeyguardStateController.Callback mKeyguardStateControllerCallback =
            new KeyguardStateController.Callback() {
                @Override
                public void onLaunchTransitionFadingAwayChanged() {
                    mLaunchTransitionFadingAway =
                            mKeyguardStateController.isLaunchTransitionFadingAway();
                    updatePauseAuth();
                }
            };
}
}
+11 −0
Original line number Original line Diff line number Diff line
@@ -1148,6 +1148,9 @@ public class StatusBar extends SystemUI implements DemoMode,
                    mStatusBarView.setPanel(mNotificationPanelViewController);
                    mStatusBarView.setPanel(mNotificationPanelViewController);
                    mStatusBarView.setScrimController(mScrimController);
                    mStatusBarView.setScrimController(mScrimController);
                    mStatusBarView.setExpansionChangedListeners(mExpansionChangedListeners);
                    mStatusBarView.setExpansionChangedListeners(mExpansionChangedListeners);
                    for (ExpansionChangedListener listener : mExpansionChangedListeners) {
                        sendInitialExpansionAmount(listener);
                    }


                    // CollapsedStatusBarFragment re-inflated PhoneStatusBarView and both of
                    // CollapsedStatusBarFragment re-inflated PhoneStatusBarView and both of
                    // mStatusBarView.mExpanded and mStatusBarView.mBouncerShowing are false.
                    // mStatusBarView.mExpanded and mStatusBarView.mBouncerShowing are false.
@@ -4932,6 +4935,14 @@ public class StatusBar extends SystemUI implements DemoMode,


    public void addExpansionChangedListener(@NonNull ExpansionChangedListener listener) {
    public void addExpansionChangedListener(@NonNull ExpansionChangedListener listener) {
        mExpansionChangedListeners.add(listener);
        mExpansionChangedListeners.add(listener);
        sendInitialExpansionAmount(listener);
    }

    private void sendInitialExpansionAmount(ExpansionChangedListener expansionChangedListener) {
        if (mStatusBarView != null) {
            expansionChangedListener.onExpansionChanged(mStatusBarView.getExpansionFraction(),
                    mStatusBarView.isExpanded());
        }
    }
    }


    public void removeExpansionChangedListener(@NonNull ExpansionChangedListener listener) {
    public void removeExpansionChangedListener(@NonNull ExpansionChangedListener listener) {
+6 −0
Original line number Original line Diff line number Diff line
@@ -245,5 +245,11 @@ public interface KeyguardStateController extends CallbackController<Callback> {
         * animation.
         * animation.
         */
         */
        default void onKeyguardDismissAmountChanged() {}
        default void onKeyguardDismissAmountChanged() {}

        /**
         * Triggered when the notification panel is starting or has finished
         * fading away on transition to an app.
         */
        default void onLaunchTransitionFadingAwayChanged() {}
    }
    }
}
}
+1 −0
Original line number Original line Diff line number Diff line
@@ -343,6 +343,7 @@ public class KeyguardStateControllerImpl implements KeyguardStateController, Dum
    @Override
    @Override
    public void setLaunchTransitionFadingAway(boolean fadingAway) {
    public void setLaunchTransitionFadingAway(boolean fadingAway) {
        mLaunchTransitionFadingAway = fadingAway;
        mLaunchTransitionFadingAway = fadingAway;
        new ArrayList<>(mCallbacks).forEach(Callback::onLaunchTransitionFadingAwayChanged);
    }
    }


    @Override
    @Override
Loading