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

Commit 9fe1f643 authored by Android Build Coastguard Worker's avatar Android Build Coastguard Worker
Browse files

Snap for 10871594 from 348d90c7 to udc-qpr1-release

Change-Id: I8001192cb37b1e7d1d419a40a9c9c776713798a9
parents b7bef0ec 348d90c7
Loading
Loading
Loading
Loading
+4 −3
Original line number Original line Diff line number Diff line
@@ -72,6 +72,7 @@ void HintSessionWrapper::destroy() {
        mSessionValid = true;
        mSessionValid = true;
        mHintSession = nullptr;
        mHintSession = nullptr;
    }
    }
    mResetsSinceLastReport = 0;
}
}


bool HintSessionWrapper::init() {
bool HintSessionWrapper::init() {
@@ -111,10 +112,10 @@ bool HintSessionWrapper::init() {


    // Use a placeholder target value to initialize,
    // Use a placeholder target value to initialize,
    // this will always be replaced elsewhere before it gets used
    // this will always be replaced elsewhere before it gets used
    int64_t defaultTargetDurationNanos = 16666667;
    int64_t targetDurationNanos =
            mLastTargetWorkDuration == 0 ? kDefaultTargetDuration : mLastTargetWorkDuration;
    mHintSessionFuture = CommonPool::async([=, this, tids = std::move(tids)] {
    mHintSessionFuture = CommonPool::async([=, this, tids = std::move(tids)] {
        return mBinding->createSession(manager, tids.data(), tids.size(),
        return mBinding->createSession(manager, tids.data(), tids.size(), targetDurationNanos);
                                       defaultTargetDurationNanos);
    });
    });
    return false;
    return false;
}
}
+1 −0
Original line number Original line Diff line number Diff line
@@ -65,6 +65,7 @@ private:
    static constexpr nsecs_t kResetHintTimeout = 100_ms;
    static constexpr nsecs_t kResetHintTimeout = 100_ms;
    static constexpr int64_t kSanityCheckLowerBound = 100_us;
    static constexpr int64_t kSanityCheckLowerBound = 100_us;
    static constexpr int64_t kSanityCheckUpperBound = 10_s;
    static constexpr int64_t kSanityCheckUpperBound = 10_s;
    static constexpr int64_t kDefaultTargetDuration = 16666667;


    // Allows easier stub when testing
    // Allows easier stub when testing
    class HintSessionBinding {
    class HintSessionBinding {
+14 −1
Original line number Original line Diff line number Diff line
@@ -41,6 +41,12 @@ import kotlinx.coroutines.flow.stateIn


/** Repository for the current state of the display */
/** Repository for the current state of the display */
interface DisplayStateRepository {
interface DisplayStateRepository {
    /**
     * Whether or not the direction rotation is applied to get to an application's requested
     * orientation is reversed.
     */
    val isReverseDefaultRotation: Boolean

    /** Provides the current rear display state. */
    /** Provides the current rear display state. */
    val isInRearDisplayMode: StateFlow<Boolean>
    val isInRearDisplayMode: StateFlow<Boolean>


@@ -59,6 +65,9 @@ constructor(
    @Main handler: Handler,
    @Main handler: Handler,
    @Main mainExecutor: Executor
    @Main mainExecutor: Executor
) : DisplayStateRepository {
) : DisplayStateRepository {
    override val isReverseDefaultRotation =
        context.resources.getBoolean(com.android.internal.R.bool.config_reverseDefaultRotation)

    override val isInRearDisplayMode: StateFlow<Boolean> =
    override val isInRearDisplayMode: StateFlow<Boolean> =
        conflatedCallbackFlow {
        conflatedCallbackFlow {
                val sendRearDisplayStateUpdate = { state: Boolean ->
                val sendRearDisplayStateUpdate = { state: Boolean ->
@@ -94,7 +103,11 @@ constructor(
    private fun getDisplayRotation(): DisplayRotation {
    private fun getDisplayRotation(): DisplayRotation {
        val cachedDisplayInfo = DisplayInfo()
        val cachedDisplayInfo = DisplayInfo()
        context.display?.getDisplayInfo(cachedDisplayInfo)
        context.display?.getDisplayInfo(cachedDisplayInfo)
        return cachedDisplayInfo.rotation.toDisplayRotation()
        var rotation = cachedDisplayInfo.rotation
        if (isReverseDefaultRotation) {
            rotation = (rotation + 1) % 4
        }
        return rotation.toDisplayRotation()
    }
    }


    override val currentRotation: StateFlow<DisplayRotation> =
    override val currentRotation: StateFlow<DisplayRotation> =
+3 −4
Original line number Original line Diff line number Diff line
@@ -17,7 +17,6 @@


package com.android.systemui.biometrics.ui.binder
package com.android.systemui.biometrics.ui.binder


import android.view.DisplayInfo
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.repeatOnLifecycle
import androidx.lifecycle.repeatOnLifecycle
import com.airbnb.lottie.LottieAnimationView
import com.airbnb.lottie.LottieAnimationView
@@ -33,14 +32,14 @@ object PromptFingerprintIconViewBinder {
    fun bind(view: LottieAnimationView, viewModel: PromptFingerprintIconViewModel) {
    fun bind(view: LottieAnimationView, viewModel: PromptFingerprintIconViewModel) {
        view.repeatWhenAttached {
        view.repeatWhenAttached {
            repeatOnLifecycle(Lifecycle.State.STARTED) {
            repeatOnLifecycle(Lifecycle.State.STARTED) {
                val displayInfo = DisplayInfo()
                view.context.display?.getDisplayInfo(displayInfo)
                viewModel.setRotation(displayInfo.rotation)
                viewModel.onConfigurationChanged(view.context.resources.configuration)
                viewModel.onConfigurationChanged(view.context.resources.configuration)
                launch {
                launch {
                    viewModel.iconAsset.collect { iconAsset ->
                    viewModel.iconAsset.collect { iconAsset ->
                        if (iconAsset != -1) {
                        if (iconAsset != -1) {
                            view.setAnimation(iconAsset)
                            view.setAnimation(iconAsset)
                            // TODO: must replace call below once non-sfps asset logic and
                            // shouldAnimateIconView logic is migrated to this ViewModel.
                            view.playAnimation()
                        }
                        }
                    }
                    }
                }
                }
+11 −12
Original line number Original line Diff line number Diff line
@@ -19,10 +19,10 @@ package com.android.systemui.biometrics.ui.viewmodel


import android.annotation.RawRes
import android.annotation.RawRes
import android.content.res.Configuration
import android.content.res.Configuration
import android.view.Surface
import com.android.systemui.R
import com.android.systemui.R
import com.android.systemui.biometrics.domain.interactor.DisplayStateInteractor
import com.android.systemui.biometrics.domain.interactor.DisplayStateInteractor
import com.android.systemui.biometrics.domain.interactor.PromptSelectorInteractor
import com.android.systemui.biometrics.domain.interactor.PromptSelectorInteractor
import com.android.systemui.biometrics.shared.model.DisplayRotation
import com.android.systemui.biometrics.shared.model.FingerprintSensorType
import com.android.systemui.biometrics.shared.model.FingerprintSensorType
import javax.inject.Inject
import javax.inject.Inject
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.Flow
@@ -35,19 +35,21 @@ constructor(
    private val displayStateInteractor: DisplayStateInteractor,
    private val displayStateInteractor: DisplayStateInteractor,
    promptSelectorInteractor: PromptSelectorInteractor,
    promptSelectorInteractor: PromptSelectorInteractor,
) {
) {
    /** Current device rotation. */
    private var rotation: Int = Surface.ROTATION_0

    /** Current BiometricPromptLayout.iconView asset. */
    /** Current BiometricPromptLayout.iconView asset. */
    val iconAsset: Flow<Int> =
    val iconAsset: Flow<Int> =
        combine(
        combine(
            displayStateInteractor.currentRotation,
            displayStateInteractor.isFolded,
            displayStateInteractor.isFolded,
            displayStateInteractor.isInRearDisplayMode,
            displayStateInteractor.isInRearDisplayMode,
            promptSelectorInteractor.sensorType,
            promptSelectorInteractor.sensorType,
        ) { isFolded: Boolean, isInRearDisplayMode: Boolean, sensorType: FingerprintSensorType ->
        ) {
            rotation: DisplayRotation,
            isFolded: Boolean,
            isInRearDisplayMode: Boolean,
            sensorType: FingerprintSensorType ->
            when (sensorType) {
            when (sensorType) {
                FingerprintSensorType.POWER_BUTTON ->
                FingerprintSensorType.POWER_BUTTON ->
                    getSideFpsAnimationAsset(isFolded, isInRearDisplayMode)
                    getSideFpsAnimationAsset(rotation, isFolded, isInRearDisplayMode)
                // Replace below when non-SFPS iconAsset logic is migrated to this ViewModel
                // Replace below when non-SFPS iconAsset logic is migrated to this ViewModel
                else -> -1
                else -> -1
            }
            }
@@ -55,11 +57,12 @@ constructor(


    @RawRes
    @RawRes
    private fun getSideFpsAnimationAsset(
    private fun getSideFpsAnimationAsset(
        rotation: DisplayRotation,
        isDeviceFolded: Boolean,
        isDeviceFolded: Boolean,
        isInRearDisplayMode: Boolean,
        isInRearDisplayMode: Boolean,
    ): Int =
    ): Int =
        when (rotation) {
        when (rotation) {
            Surface.ROTATION_90 ->
            DisplayRotation.ROTATION_90 ->
                if (isInRearDisplayMode) {
                if (isInRearDisplayMode) {
                    R.raw.biometricprompt_rear_portrait_reverse_base
                    R.raw.biometricprompt_rear_portrait_reverse_base
                } else if (isDeviceFolded) {
                } else if (isDeviceFolded) {
@@ -67,7 +70,7 @@ constructor(
                } else {
                } else {
                    R.raw.biometricprompt_portrait_base_topleft
                    R.raw.biometricprompt_portrait_base_topleft
                }
                }
            Surface.ROTATION_270 ->
            DisplayRotation.ROTATION_270 ->
                if (isInRearDisplayMode) {
                if (isInRearDisplayMode) {
                    R.raw.biometricprompt_rear_portrait_base
                    R.raw.biometricprompt_rear_portrait_base
                } else if (isDeviceFolded) {
                } else if (isDeviceFolded) {
@@ -89,8 +92,4 @@ constructor(
    fun onConfigurationChanged(newConfig: Configuration) {
    fun onConfigurationChanged(newConfig: Configuration) {
        displayStateInteractor.onConfigurationChanged(newConfig)
        displayStateInteractor.onConfigurationChanged(newConfig)
    }
    }

    fun setRotation(newRotation: Int) {
        rotation = newRotation
    }
}
}
Loading