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

Commit 621bd94b authored by Ilya Matyukhin's avatar Ilya Matyukhin Committed by Automerger Merge Worker
Browse files

Merge "Fix DMD setting IUdfpsHbmListener before SysUI is ready" into sc-dev am: fce88b4e

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

Change-Id: Ib0e9e6fa95c455e3815c43757e9d0fa786adca36
parents 6b146e84 fce88b4e
Loading
Loading
Loading
Loading
+21 −0
Original line number Diff line number Diff line
@@ -43,6 +43,7 @@ import android.hardware.face.FaceSensorPropertiesInternal;
import android.hardware.fingerprint.FingerprintManager;
import android.hardware.fingerprint.FingerprintSensorPropertiesInternal;
import android.hardware.fingerprint.IFingerprintAuthenticatorsRegisteredCallback;
import android.hardware.fingerprint.IUdfpsHbmListener;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
@@ -100,6 +101,8 @@ public class AuthController extends SystemUI implements CommandQueue.Callbacks,
    @Nullable
    private UdfpsController mUdfpsController;
    @Nullable
    private IUdfpsHbmListener mUdfpsHbmListener;
    @Nullable
    private SidefpsController mSidefpsController;
    @VisibleForTesting
    TaskStackListener mTaskStackListener;
@@ -470,6 +473,24 @@ public class AuthController extends SystemUI implements CommandQueue.Callbacks,
        mActivityTaskManager.registerTaskStackListener(mTaskStackListener);
    }

    /**
     * Stores the listener received from {@link com.android.server.display.DisplayModeDirector}.
     *
     * DisplayModeDirector implements {@link IUdfpsHbmListener} and registers it with this class by
     * calling {@link CommandQueue#setUdfpsHbmListener(IUdfpsHbmListener)}.
     */
    @Override
    public void setUdfpsHbmListener(IUdfpsHbmListener listener) {
        mUdfpsHbmListener = listener;
    }

    /**
     * @return IUdfpsHbmListener that can be set by DisplayModeDirector.
     */
    @Nullable public IUdfpsHbmListener getUdfpsHbmListener() {
        return mUdfpsHbmListener;
    }

    @Override
    public void showAuthenticationDialog(PromptInfo promptInfo, IBiometricSysuiReceiver receiver,
            int[] sensorIds, boolean credentialAllowed, boolean requireConfirmation,
+2 −0
Original line number Diff line number Diff line
@@ -512,6 +512,8 @@ public final class DisplayManagerService extends SystemService {
                    }
                }
            }
        } else if (phase == PHASE_BOOT_COMPLETED) {
            mDisplayModeDirector.onBootCompleted();
        }
    }

+10 −1
Original line number Diff line number Diff line
@@ -155,7 +155,6 @@ public class DisplayModeDirector {
        mSettingsObserver.observe();
        mDisplayObserver.observe();
        mBrightnessObserver.observe(sensorManager);
        mUdfpsObserver.observe();
        synchronized (mLock) {
            // We may have a listener already registered before the call to start, so go ahead and
            // notify them to pick up our newly initialized state.
@@ -163,6 +162,16 @@ public class DisplayModeDirector {
        }
    }

    /**
     * Same as {@link #start(SensorManager)}, but for observers that need to be delayed even more,
     * for example until SystemUI is ready.
     */
    public void onBootCompleted() {
        // UDFPS observer registers a listener with SystemUI which might not be ready until the
        // system is fully booted.
        mUdfpsObserver.observe();
    }

    public void setLoggingEnabled(boolean loggingEnabled) {
        if (mLoggingEnabled == loggingEnabled) {
            return;
+2 −1
Original line number Diff line number Diff line
@@ -854,7 +854,7 @@ public class DisplayModeDirectorTest {
                createDirectorFromRefreshRateArray(new float[] {60.f, 90.f, 110.f}, 0);
        verify(mStatusBarMock, never()).setUdfpsHbmListener(any());

        director.start(createMockSensorManager());
        director.onBootCompleted();
        verify(mStatusBarMock).setUdfpsHbmListener(eq(director.getUdpfsObserver()));
    }

@@ -863,6 +863,7 @@ public class DisplayModeDirectorTest {
        DisplayModeDirector director =
                createDirectorFromRefreshRateArray(new float[] {60.f, 90.f, 110.f}, 0);
        director.start(createMockSensorManager());
        director.onBootCompleted();
        ArgumentCaptor<IUdfpsHbmListener> captor =
                ArgumentCaptor.forClass(IUdfpsHbmListener.class);
        verify(mStatusBarMock).setUdfpsHbmListener(captor.capture());