Loading packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/shared/model/KeyguardStateTest.kt 0 → 100644 +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) } } } packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardTransitionInteractor.kt +0 −7 Original line number Diff line number Diff line Loading @@ -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() } Loading packages/SystemUI/src/com/android/systemui/keyguard/shared/model/KeyguardState.kt +1 −0 Original line number Diff line number Diff line Loading @@ -157,6 +157,7 @@ enum class KeyguardState { * keyguard state. */ fun deviceIsAwakeInState(state: KeyguardState): Boolean { state.checkValidState() return when (state) { OFF -> false DOZING -> false Loading packages/SystemUI/src/com/android/systemui/theme/ThemeOverlayController.java +2 −2 Original line number Diff line number Diff line Loading @@ -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) { Loading Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/shared/model/KeyguardStateTest.kt 0 → 100644 +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) } } }
packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardTransitionInteractor.kt +0 −7 Original line number Diff line number Diff line Loading @@ -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() } Loading
packages/SystemUI/src/com/android/systemui/keyguard/shared/model/KeyguardState.kt +1 −0 Original line number Diff line number Diff line Loading @@ -157,6 +157,7 @@ enum class KeyguardState { * keyguard state. */ fun deviceIsAwakeInState(state: KeyguardState): Boolean { state.checkValidState() return when (state) { OFF -> false DOZING -> false Loading
packages/SystemUI/src/com/android/systemui/theme/ThemeOverlayController.java +2 −2 Original line number Diff line number Diff line Loading @@ -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) { Loading