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

Commit 0da6081a 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: 2e6039cd

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



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

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

/**
@@ -30,7 +28,6 @@ class UdfpsBpViewController(
    statusBarStateController: StatusBarStateController,
    panelExpansionStateManager: PanelExpansionStateManager,
    systemUIDialogManager: SystemUIDialogManager,
    val broadcastSender: BroadcastSender,
    dumpManager: DumpManager
) : UdfpsAnimationViewController<UdfpsBpView>(
    view,
@@ -40,29 +37,4 @@ class UdfpsBpViewController(
    dumpManager
) {
    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 Diff line number Diff line
@@ -54,7 +54,6 @@ import com.android.internal.util.LatencyTracker;
import com.android.keyguard.KeyguardUpdateMonitor;
import com.android.systemui.animation.ActivityLaunchAnimator;
import com.android.systemui.biometrics.dagger.BiometricsBackground;
import com.android.systemui.broadcast.BroadcastSender;
import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.doze.DozeReceiver;
@@ -128,7 +127,6 @@ public class UdfpsController implements DozeReceiver {
    @NonNull private final UnlockedScreenOffAnimationController
            mUnlockedScreenOffAnimationController;
    @NonNull private final LatencyTracker mLatencyTracker;
    @NonNull private final BroadcastSender mBroadcastSender;
    @VisibleForTesting @NonNull final BiometricDisplayListener mOrientationListener;
    @NonNull private final ActivityLaunchAnimator mActivityLaunchAnimator;

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

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

        mOrientationListener = new BiometricDisplayListener(
+3 −6
Original line number Diff line number Diff line
@@ -41,7 +41,6 @@ import androidx.annotation.LayoutRes
import com.android.keyguard.KeyguardUpdateMonitor
import com.android.systemui.R
import com.android.systemui.animation.ActivityLaunchAnimator
import com.android.systemui.broadcast.BroadcastSender
import com.android.systemui.dump.DumpManager
import com.android.systemui.plugins.statusbar.StatusBarStateController
import com.android.systemui.statusbar.LockscreenShadeTransitionController
@@ -84,8 +83,7 @@ class UdfpsControllerOverlay(
    @ShowReason val requestReason: Int,
    private val controllerCallback: IUdfpsOverlayControllerCallback,
    private val onTouch: (View, MotionEvent, Boolean) -> Boolean,
    private val activityLaunchAnimator: ActivityLaunchAnimator,
    private val broadcastSender: BroadcastSender
    private val activityLaunchAnimator: ActivityLaunchAnimator
) {
    /** The view, when [isShowing], or null. */
    var overlayView: UdfpsView? = null
@@ -104,8 +102,8 @@ class UdfpsControllerOverlay(
        fitInsetsTypes = 0
        gravity = android.view.Gravity.TOP or android.view.Gravity.LEFT
        layoutInDisplayCutoutMode = WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS
        flags = (Utils.FINGERPRINT_OVERLAY_LAYOUT_PARAM_FLAGS
            or WindowManager.LayoutParams.FLAG_SPLIT_TOUCH)
        flags =
            (Utils.FINGERPRINT_OVERLAY_LAYOUT_PARAM_FLAGS or WindowManager.LayoutParams.FLAG_SPLIT_TOUCH)
        privateFlags = WindowManager.LayoutParams.PRIVATE_FLAG_TRUSTED_OVERLAY
        // Avoid announcing window title.
        accessibilityTitle = " "
@@ -227,7 +225,6 @@ class UdfpsControllerOverlay(
                    statusBarStateController,
                    panelExpansionStateManager,
                    dialogManager,
                    broadcastSender,
                    dumpManager
                )
            }
+0 −118
Original line number 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 Diff line number Diff line
@@ -40,7 +40,6 @@ import com.android.keyguard.KeyguardUpdateMonitor
import com.android.systemui.R
import com.android.systemui.SysuiTestCase
import com.android.systemui.animation.ActivityLaunchAnimator
import com.android.systemui.broadcast.BroadcastSender
import com.android.systemui.dump.DumpManager
import com.android.systemui.plugins.statusbar.StatusBarStateController
import com.android.systemui.statusbar.LockscreenShadeTransitionController
@@ -103,7 +102,6 @@ class UdfpsControllerOverlayTest : SysuiTestCase() {
    @Mock private lateinit var udfpsView: UdfpsView
    @Mock private lateinit var udfpsEnrollView: UdfpsEnrollView
    @Mock private lateinit var activityLaunchAnimator: ActivityLaunchAnimator
    @Mock private lateinit var broadcastSender: BroadcastSender
    @Captor private lateinit var layoutParamsCaptor: ArgumentCaptor<WindowManager.LayoutParams>

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

Loading