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

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

Merge "Revert "Dismiss Auth Biometric Prompt when expanding shade"" into...

Merge "Revert "Dismiss Auth Biometric Prompt when expanding shade"" into tm-dev am: 4332951c am: 5d02f218 am: b70a8822

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



Change-Id: Ie0065eeb0f0b477086fae7267b810410c5b7c2b6
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents c31de6f8 b70a8822
Loading
Loading
Loading
Loading
+0 −28
Original line number Original line Diff line number Diff line
@@ -15,11 +15,9 @@
 */
 */
package com.android.systemui.biometrics
package com.android.systemui.biometrics


import com.android.systemui.broadcast.BroadcastSender
import com.android.systemui.dump.DumpManager
import com.android.systemui.dump.DumpManager
import com.android.systemui.plugins.statusbar.StatusBarStateController
import com.android.systemui.plugins.statusbar.StatusBarStateController
import com.android.systemui.statusbar.phone.SystemUIDialogManager
import com.android.systemui.statusbar.phone.SystemUIDialogManager
import com.android.systemui.statusbar.phone.panelstate.PanelExpansionListener
import com.android.systemui.statusbar.phone.panelstate.PanelExpansionStateManager
import com.android.systemui.statusbar.phone.panelstate.PanelExpansionStateManager


/**
/**
@@ -30,7 +28,6 @@ class UdfpsBpViewController(
    statusBarStateController: StatusBarStateController,
    statusBarStateController: StatusBarStateController,
    panelExpansionStateManager: PanelExpansionStateManager,
    panelExpansionStateManager: PanelExpansionStateManager,
    systemUIDialogManager: SystemUIDialogManager,
    systemUIDialogManager: SystemUIDialogManager,
    val broadcastSender: BroadcastSender,
    dumpManager: DumpManager
    dumpManager: DumpManager
) : UdfpsAnimationViewController<UdfpsBpView>(
) : UdfpsAnimationViewController<UdfpsBpView>(
    view,
    view,
@@ -40,29 +37,4 @@ class UdfpsBpViewController(
    dumpManager
    dumpManager
) {
) {
    override val tag = "UdfpsBpViewController"
    override val tag = "UdfpsBpViewController"
    private val bpPanelExpansionListener = PanelExpansionListener { event ->
        // Notification shade can be expanded but not visible (fraction: 0.0), for example
        // when a heads-up notification (HUN) is showing.
        notificationShadeVisible = event.expanded && event.fraction > 0f
        view.onExpansionChanged(event.fraction)
        cancelAuth()
    }

    fun cancelAuth() {
        if (shouldPauseAuth()) {
            broadcastSender.closeSystemDialogs()
        }
    }

    override fun onViewAttached() {
        super.onViewAttached()

        panelExpansionStateManager.addExpansionListener(bpPanelExpansionListener)
    }

    override fun onViewDetached() {
        super.onViewDetached()

        panelExpansionStateManager.removeExpansionListener(bpPanelExpansionListener)
    }
}
}
+1 −5
Original line number Original line Diff line number Diff line
@@ -54,7 +54,6 @@ import com.android.internal.util.LatencyTracker;
import com.android.keyguard.KeyguardUpdateMonitor;
import com.android.keyguard.KeyguardUpdateMonitor;
import com.android.systemui.animation.ActivityLaunchAnimator;
import com.android.systemui.animation.ActivityLaunchAnimator;
import com.android.systemui.biometrics.dagger.BiometricsBackground;
import com.android.systemui.biometrics.dagger.BiometricsBackground;
import com.android.systemui.broadcast.BroadcastSender;
import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.doze.DozeReceiver;
import com.android.systemui.doze.DozeReceiver;
@@ -128,7 +127,6 @@ public class UdfpsController implements DozeReceiver {
    @NonNull private final UnlockedScreenOffAnimationController
    @NonNull private final UnlockedScreenOffAnimationController
            mUnlockedScreenOffAnimationController;
            mUnlockedScreenOffAnimationController;
    @NonNull private final LatencyTracker mLatencyTracker;
    @NonNull private final LatencyTracker mLatencyTracker;
    @NonNull private final BroadcastSender mBroadcastSender;
    @VisibleForTesting @NonNull final BiometricDisplayListener mOrientationListener;
    @VisibleForTesting @NonNull final BiometricDisplayListener mOrientationListener;
    @NonNull private final ActivityLaunchAnimator mActivityLaunchAnimator;
    @NonNull private final ActivityLaunchAnimator mActivityLaunchAnimator;


@@ -209,7 +207,7 @@ public class UdfpsController implements DozeReceiver {
                            mUnlockedScreenOffAnimationController, mHalControlsIllumination,
                            mUnlockedScreenOffAnimationController, mHalControlsIllumination,
                            mHbmProvider, requestId, reason, callback,
                            mHbmProvider, requestId, reason, callback,
                            (view, event, fromUdfpsView) -> onTouch(requestId, event,
                            (view, event, fromUdfpsView) -> onTouch(requestId, event,
                                    fromUdfpsView), mActivityLaunchAnimator, mBroadcastSender)));
                                    fromUdfpsView), mActivityLaunchAnimator)));
        }
        }


        @Override
        @Override
@@ -606,7 +604,6 @@ public class UdfpsController implements DozeReceiver {
            @NonNull LatencyTracker latencyTracker,
            @NonNull LatencyTracker latencyTracker,
            @NonNull ActivityLaunchAnimator activityLaunchAnimator,
            @NonNull ActivityLaunchAnimator activityLaunchAnimator,
            @NonNull Optional<AlternateUdfpsTouchProvider> aternateTouchProvider,
            @NonNull Optional<AlternateUdfpsTouchProvider> aternateTouchProvider,
            @NonNull BroadcastSender broadcastSender,
            @BiometricsBackground Executor biometricsExecutor) {
            @BiometricsBackground Executor biometricsExecutor) {
        mContext = context;
        mContext = context;
        mExecution = execution;
        mExecution = execution;
@@ -637,7 +634,6 @@ public class UdfpsController implements DozeReceiver {
        mLatencyTracker = latencyTracker;
        mLatencyTracker = latencyTracker;
        mActivityLaunchAnimator = activityLaunchAnimator;
        mActivityLaunchAnimator = activityLaunchAnimator;
        mAlternateTouchProvider = aternateTouchProvider.orElse(null);
        mAlternateTouchProvider = aternateTouchProvider.orElse(null);
        mBroadcastSender = broadcastSender;
        mBiometricExecutor = biometricsExecutor;
        mBiometricExecutor = biometricsExecutor;


        mOrientationListener = new BiometricDisplayListener(
        mOrientationListener = new BiometricDisplayListener(
+3 −6
Original line number Original line Diff line number Diff line
@@ -41,7 +41,6 @@ import androidx.annotation.LayoutRes
import com.android.keyguard.KeyguardUpdateMonitor
import com.android.keyguard.KeyguardUpdateMonitor
import com.android.systemui.R
import com.android.systemui.R
import com.android.systemui.animation.ActivityLaunchAnimator
import com.android.systemui.animation.ActivityLaunchAnimator
import com.android.systemui.broadcast.BroadcastSender
import com.android.systemui.dump.DumpManager
import com.android.systemui.dump.DumpManager
import com.android.systemui.plugins.statusbar.StatusBarStateController
import com.android.systemui.plugins.statusbar.StatusBarStateController
import com.android.systemui.statusbar.LockscreenShadeTransitionController
import com.android.systemui.statusbar.LockscreenShadeTransitionController
@@ -84,8 +83,7 @@ class UdfpsControllerOverlay(
    @ShowReason val requestReason: Int,
    @ShowReason val requestReason: Int,
    private val controllerCallback: IUdfpsOverlayControllerCallback,
    private val controllerCallback: IUdfpsOverlayControllerCallback,
    private val onTouch: (View, MotionEvent, Boolean) -> Boolean,
    private val onTouch: (View, MotionEvent, Boolean) -> Boolean,
    private val activityLaunchAnimator: ActivityLaunchAnimator,
    private val activityLaunchAnimator: ActivityLaunchAnimator
    private val broadcastSender: BroadcastSender
) {
) {
    /** The view, when [isShowing], or null. */
    /** The view, when [isShowing], or null. */
    var overlayView: UdfpsView? = null
    var overlayView: UdfpsView? = null
@@ -104,8 +102,8 @@ class UdfpsControllerOverlay(
        fitInsetsTypes = 0
        fitInsetsTypes = 0
        gravity = android.view.Gravity.TOP or android.view.Gravity.LEFT
        gravity = android.view.Gravity.TOP or android.view.Gravity.LEFT
        layoutInDisplayCutoutMode = WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS
        layoutInDisplayCutoutMode = WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS
        flags = (Utils.FINGERPRINT_OVERLAY_LAYOUT_PARAM_FLAGS
        flags =
            or WindowManager.LayoutParams.FLAG_SPLIT_TOUCH)
            (Utils.FINGERPRINT_OVERLAY_LAYOUT_PARAM_FLAGS or WindowManager.LayoutParams.FLAG_SPLIT_TOUCH)
        privateFlags = WindowManager.LayoutParams.PRIVATE_FLAG_TRUSTED_OVERLAY
        privateFlags = WindowManager.LayoutParams.PRIVATE_FLAG_TRUSTED_OVERLAY
        // Avoid announcing window title.
        // Avoid announcing window title.
        accessibilityTitle = " "
        accessibilityTitle = " "
@@ -227,7 +225,6 @@ class UdfpsControllerOverlay(
                    statusBarStateController,
                    statusBarStateController,
                    panelExpansionStateManager,
                    panelExpansionStateManager,
                    dialogManager,
                    dialogManager,
                    broadcastSender,
                    dumpManager
                    dumpManager
                )
                )
            }
            }
+0 −118
Original line number Original line Diff line number Diff line
/*
 * Copyright (C) 2022 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.android.systemui.biometrics

import android.app.Instrumentation
import android.testing.AndroidTestingRunner
import android.testing.TestableLooper
import android.testing.ViewUtils
import androidx.test.filters.SmallTest
import androidx.test.platform.app.InstrumentationRegistry.getInstrumentation
import com.android.internal.jank.InteractionJankMonitor
import com.android.internal.logging.testing.UiEventLoggerFake
import com.android.systemui.R
import com.android.systemui.SysuiTestCase
import com.android.systemui.broadcast.BroadcastSender
import com.android.systemui.dump.DumpManager
import com.android.systemui.statusbar.StatusBarStateControllerImpl
import com.android.systemui.statusbar.phone.SystemUIDialogManager
import com.android.systemui.statusbar.phone.panelstate.PanelExpansionStateManager
import com.android.systemui.util.mockito.any
import org.junit.After
import org.junit.Before
import org.junit.Rule
import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.Mock
import org.mockito.Mockito.spy
import org.mockito.Mockito.times
import org.mockito.Mockito.verify
import org.mockito.junit.MockitoJUnit

@SmallTest
@RunWith(AndroidTestingRunner::class)
@TestableLooper.RunWithLooper
class UdfpsBpViewControllerTest : SysuiTestCase() {

    @JvmField @Rule var rule = MockitoJUnit.rule()

    @Mock lateinit var dumpManager: DumpManager
    @Mock lateinit var systemUIDialogManager: SystemUIDialogManager
    @Mock lateinit var broadcastSender: BroadcastSender
    @Mock lateinit var interactionJankMonitor: InteractionJankMonitor
    @Mock lateinit var panelExpansionStateManager: PanelExpansionStateManager

    private lateinit var instrumentation: Instrumentation
    private lateinit var uiEventLogger: UiEventLoggerFake
    private lateinit var udfpsBpView: UdfpsBpView
    private lateinit var statusBarStateController: StatusBarStateControllerImpl
    private lateinit var udfpsBpViewController: UdfpsBpViewController

    @Before
    fun setup() {
        instrumentation = getInstrumentation()
        instrumentation.runOnMainSync { createUdfpsView() }
        instrumentation.waitForIdleSync()

        uiEventLogger = UiEventLoggerFake()
        statusBarStateController =
            StatusBarStateControllerImpl(uiEventLogger, dumpManager, interactionJankMonitor)
        udfpsBpViewController = UdfpsBpViewController(
            udfpsBpView,
            statusBarStateController,
            panelExpansionStateManager,
            systemUIDialogManager,
            broadcastSender,
            dumpManager)
        udfpsBpViewController.init()
    }

    @After
    fun tearDown() {
        if (udfpsBpViewController.isAttachedToWindow) {
            instrumentation.runOnMainSync { ViewUtils.detachView(udfpsBpView) }
            instrumentation.waitForIdleSync()
        }
    }

    private fun createUdfpsView() {
        context.setTheme(R.style.Theme_AppCompat)
        context.orCreateTestableResources.addOverride(
            com.android.internal.R.integer.config_udfps_illumination_transition_ms, 0)
        udfpsBpView = UdfpsBpView(context, null)
    }

    @Test
    fun addExpansionListener() {
        instrumentation.runOnMainSync { ViewUtils.attachView(udfpsBpView) }
        instrumentation.waitForIdleSync()

        // Both UdfpsBpViewController & UdfpsAnimationViewController add listener
        verify(panelExpansionStateManager, times(2)).addExpansionListener(any())
    }

    @Test
    fun removeExpansionListener() {
        instrumentation.runOnMainSync { ViewUtils.attachView(udfpsBpView) }
        instrumentation.waitForIdleSync()
        instrumentation.runOnMainSync { ViewUtils.detachView(udfpsBpView) }
        instrumentation.waitForIdleSync()

        // Both UdfpsBpViewController & UdfpsAnimationViewController remove listener
        verify(panelExpansionStateManager, times(2)).removeExpansionListener(any())
    }
}
+1 −4
Original line number Original line Diff line number Diff line
@@ -40,7 +40,6 @@ import com.android.keyguard.KeyguardUpdateMonitor
import com.android.systemui.R
import com.android.systemui.R
import com.android.systemui.SysuiTestCase
import com.android.systemui.SysuiTestCase
import com.android.systemui.animation.ActivityLaunchAnimator
import com.android.systemui.animation.ActivityLaunchAnimator
import com.android.systemui.broadcast.BroadcastSender
import com.android.systemui.dump.DumpManager
import com.android.systemui.dump.DumpManager
import com.android.systemui.plugins.statusbar.StatusBarStateController
import com.android.systemui.plugins.statusbar.StatusBarStateController
import com.android.systemui.statusbar.LockscreenShadeTransitionController
import com.android.systemui.statusbar.LockscreenShadeTransitionController
@@ -103,7 +102,6 @@ class UdfpsControllerOverlayTest : SysuiTestCase() {
    @Mock private lateinit var udfpsView: UdfpsView
    @Mock private lateinit var udfpsView: UdfpsView
    @Mock private lateinit var udfpsEnrollView: UdfpsEnrollView
    @Mock private lateinit var udfpsEnrollView: UdfpsEnrollView
    @Mock private lateinit var activityLaunchAnimator: ActivityLaunchAnimator
    @Mock private lateinit var activityLaunchAnimator: ActivityLaunchAnimator
    @Mock private lateinit var broadcastSender: BroadcastSender
    @Captor private lateinit var layoutParamsCaptor: ArgumentCaptor<WindowManager.LayoutParams>
    @Captor private lateinit var layoutParamsCaptor: ArgumentCaptor<WindowManager.LayoutParams>


    private val onTouch = { _: View, _: MotionEvent, _: Boolean -> true }
    private val onTouch = { _: View, _: MotionEvent, _: Boolean -> true }
@@ -133,8 +131,7 @@ class UdfpsControllerOverlayTest : SysuiTestCase() {
            keyguardUpdateMonitor, dialogManager, dumpManager, transitionController,
            keyguardUpdateMonitor, dialogManager, dumpManager, transitionController,
            configurationController, systemClock, keyguardStateController,
            configurationController, systemClock, keyguardStateController,
            unlockedScreenOffAnimationController, HAL_CONTROLS_ILLUMINATION, hbmProvider,
            unlockedScreenOffAnimationController, HAL_CONTROLS_ILLUMINATION, hbmProvider,
            REQUEST_ID, reason, controllerCallback, onTouch, activityLaunchAnimator,
            REQUEST_ID, reason, controllerCallback, onTouch, activityLaunchAnimator)
            broadcastSender)
        block()
        block()
    }
    }


Loading