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

Commit 07ccadf6 authored by Andreas Miko's avatar Andreas Miko
Browse files

Remove isFinishedInStateWhereValue() and verify deviceIsAsleepInState()

Bug: 349785004
Flag: com.android.systemui.scene_container
Test: New unit test
Change-Id: Iea75430f440703a2d1fe28518c43b3db8b14d98f
parent f0982acb
Loading
Loading
Loading
Loading
+52 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2024 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.keyguard.shared.model

import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase
import com.android.systemui.flags.EnableSceneContainer
import com.google.common.truth.Truth.assertThat
import org.junit.Test
import org.junit.runner.RunWith

@SmallTest
@RunWith(AndroidJUnit4::class)
class KeyguardStateTest : SysuiTestCase() {

    /**
     * This test makes sure that the result of [deviceIsAwakeInState] are equal for all the states
     * that are obsolete with scene container enabled and UNDEFINED. This means for example that if
     * GONE is transformed to UNDEFINED it makes sure that GONE and UNDEFINED need to have the same
     * value. This assumption is important as with scene container flag enabled call sites will only
     * check the result passing in UNDEFINED.
     *
     * This is true today, but as more states may become obsolete this assumption may not be true
     * anymore and therefore [deviceIsAwakeInState] would need to be rewritten to factor in the
     * scene state.
     */
    @Test
    @EnableSceneContainer
    fun assertUndefinedResultMatchesObsoleteStateResults() {
        for (state in KeyguardState.entries) {
            val isAwakeInSceneContainer =
                KeyguardState.deviceIsAwakeInState(state.mapToSceneContainerState())
            val isAwake = KeyguardState.deviceIsAwakeInState(state)
            assertThat(isAwakeInSceneContainer).isEqualTo(isAwake)
        }
    }
}
+0 −7
Original line number Diff line number Diff line
@@ -548,13 +548,6 @@ constructor(
        return finishedKeyguardState.map { it == state }.distinctUntilChanged()
    }

    /**
     * Whether we've FINISHED a transition to a state that matches the given predicate. Consider
     * using [isFinishedInStateWhere] whenever possible instead
     */
    fun isFinishedInStateWhereValue(stateMatcher: (KeyguardState) -> Boolean) =
        stateMatcher(finishedKeyguardState.replayCache.last())

    fun getCurrentState(): KeyguardState {
        return currentKeyguardState.replayCache.last()
    }
+1 −0
Original line number Diff line number Diff line
@@ -157,6 +157,7 @@ enum class KeyguardState {
         * keyguard state.
         */
        fun deviceIsAwakeInState(state: KeyguardState): Boolean {
            state.checkValidState()
            return when (state) {
                OFF -> false
                DOZING -> false
+2 −2
Original line number Diff line number Diff line
@@ -202,8 +202,8 @@ public class ThemeOverlayController implements CoreStartable, Dumpable {
            }
            boolean currentUser = userId == mUserTracker.getUserId();
            boolean isAsleep = themeOverlayControllerWakefulnessDeprecation()
                    ? mKeyguardTransitionInteractor.isFinishedInStateWhereValue(
                    KeyguardState.Companion::deviceIsAsleepInState)
                    ? KeyguardState.Companion.deviceIsAsleepInState(
                            mKeyguardTransitionInteractor.getFinishedState())
                    : mWakefulnessLifecycle.getWakefulness() != WAKEFULNESS_ASLEEP;

            if (currentUser && !mAcceptColorEvents && isAsleep) {