Merge "Replace ShadeRepository.shadeModel" into main
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromLockscreenTransitionInteractor.kt b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromLockscreenTransitionInteractor.kt
index cbfd17ff..9fe5c3f 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromLockscreenTransitionInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromLockscreenTransitionInteractor.kt
@@ -214,7 +214,7 @@
private fun listenForLockscreenToPrimaryBouncerDragging() {
var transitionId: UUID? = null
scope.launch("$TAG#listenForLockscreenToPrimaryBouncerDragging") {
- shadeRepository.shadeModel
+ shadeRepository.legacyShadeExpansion
.sample(
combine(
transitionInteractor.startedKeyguardTransitionStep,
@@ -224,23 +224,23 @@
),
::toQuad
)
- .collect { (shadeModel, keyguardState, statusBarState, isKeyguardUnlocked) ->
+ .collect { (shadeExpansion, keyguardState, statusBarState, isKeyguardUnlocked) ->
val id = transitionId
if (id != null) {
if (keyguardState.to == KeyguardState.PRIMARY_BOUNCER) {
// An existing `id` means a transition is started, and calls to
// `updateTransition` will control it until FINISHED or CANCELED
var nextState =
- if (shadeModel.expansionAmount == 0f) {
+ if (shadeExpansion == 0f) {
TransitionState.FINISHED
- } else if (shadeModel.expansionAmount == 1f) {
+ } else if (shadeExpansion == 1f) {
TransitionState.CANCELED
} else {
TransitionState.RUNNING
}
transitionRepository.updateTransition(
id,
- 1f - shadeModel.expansionAmount,
+ 1f - shadeExpansion,
nextState,
)
@@ -274,7 +274,7 @@
// integrated into KeyguardTransitionRepository
if (
keyguardState.to == KeyguardState.LOCKSCREEN &&
- shadeModel.isUserDragging &&
+ shadeRepository.legacyShadeTracking.value &&
!isKeyguardUnlocked &&
statusBarState == KEYGUARD
) {
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardInteractor.kt b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardInteractor.kt
index 702386d..c12efe8 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardInteractor.kt
@@ -224,8 +224,8 @@
configurationInteractor
.dimensionPixelSize(R.dimen.keyguard_translate_distance_on_swipe_up)
.flatMapLatest { translationDistance ->
- shadeRepository.shadeModel.map {
- if (it.expansionAmount == 0f) {
+ shadeRepository.legacyShadeExpansion.map {
+ if (it == 0f) {
// Reset the translation value
0f
} else {
@@ -233,7 +233,7 @@
MathUtils.lerp(
translationDistance,
0,
- Interpolators.FAST_OUT_LINEAR_IN.getInterpolation(it.expansionAmount)
+ Interpolators.FAST_OUT_LINEAR_IN.getInterpolation(it)
)
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/shade/data/repository/ShadeRepository.kt b/packages/SystemUI/src/com/android/systemui/shade/data/repository/ShadeRepository.kt
index e94a3eb..2445bdb 100644
--- a/packages/SystemUI/src/com/android/systemui/shade/data/repository/ShadeRepository.kt
+++ b/packages/SystemUI/src/com/android/systemui/shade/data/repository/ShadeRepository.kt
@@ -15,25 +15,14 @@
*/
package com.android.systemui.shade.data.repository
-import com.android.systemui.common.coroutine.ChannelExt.trySendWithFailureLogging
-import com.android.systemui.common.coroutine.ConflatedCallbackFlow.conflatedCallbackFlow
import com.android.systemui.dagger.SysUISingleton
-import com.android.systemui.shade.ShadeExpansionChangeEvent
-import com.android.systemui.shade.ShadeExpansionListener
-import com.android.systemui.shade.ShadeExpansionStateManager
-import com.android.systemui.shade.domain.model.ShadeModel
import javax.inject.Inject
-import kotlinx.coroutines.channels.awaitClose
-import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.asStateFlow
-import kotlinx.coroutines.flow.distinctUntilChanged
+/** Data for the shade, mostly related to expansion of the shade and quick settings. */
interface ShadeRepository {
- /** ShadeModel information regarding shade expansion events */
- val shadeModel: Flow<ShadeModel>
-
/**
* Amount qs has expanded, [0-1]. 0 means fully collapsed, 1 means fully expanded. Quick
* Settings can be expanded without the full shade expansion.
@@ -167,34 +156,7 @@
/** Business logic for shade interactions */
@SysUISingleton
-class ShadeRepositoryImpl
-@Inject
-constructor(shadeExpansionStateManager: ShadeExpansionStateManager) : ShadeRepository {
- override val shadeModel: Flow<ShadeModel> =
- conflatedCallbackFlow {
- val callback =
- object : ShadeExpansionListener {
- override fun onPanelExpansionChanged(event: ShadeExpansionChangeEvent) {
- // Don't propagate ShadeExpansionChangeEvent.dragDownPxAmount field.
- // It is too noisy and produces extra events that consumers won't care
- // about
- val info =
- ShadeModel(
- expansionAmount = event.fraction,
- isExpanded = event.expanded,
- isUserDragging = event.tracking
- )
- trySendWithFailureLogging(info, TAG, "updated shade expansion info")
- }
- }
-
- val currentState = shadeExpansionStateManager.addExpansionListener(callback)
- callback.onPanelExpansionChanged(currentState)
-
- awaitClose { shadeExpansionStateManager.removeExpansionListener(callback) }
- }
- .distinctUntilChanged()
-
+class ShadeRepositoryImpl @Inject constructor() : ShadeRepository {
private val _qsExpansion = MutableStateFlow(0f)
override val qsExpansion: StateFlow<Float> = _qsExpansion.asStateFlow()
diff --git a/packages/SystemUI/src/com/android/systemui/shade/domain/model/ShadeModel.kt b/packages/SystemUI/src/com/android/systemui/shade/domain/model/ShadeModel.kt
deleted file mode 100644
index ce0f4283..0000000
--- a/packages/SystemUI/src/com/android/systemui/shade/domain/model/ShadeModel.kt
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * 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.shade.domain.model
-
-import android.annotation.FloatRange
-
-/** Information about shade (NotificationPanel) expansion */
-data class ShadeModel(
- /** 0 when collapsed, 1 when fully expanded. */
- @FloatRange(from = 0.0, to = 1.0) val expansionAmount: Float = 0f,
- /** Whether the panel should be considered expanded */
- val isExpanded: Boolean = false,
- /** Whether the user is actively dragging the panel. */
- val isUserDragging: Boolean = false,
-)
diff --git a/packages/SystemUI/tests/src/com/android/systemui/biometrics/ui/viewmodel/DefaultUdfpsTouchOverlayViewModelTest.kt b/packages/SystemUI/tests/src/com/android/systemui/biometrics/ui/viewmodel/DefaultUdfpsTouchOverlayViewModelTest.kt
index 575d8bf..fa17672 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/biometrics/ui/viewmodel/DefaultUdfpsTouchOverlayViewModelTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/biometrics/ui/viewmodel/DefaultUdfpsTouchOverlayViewModelTest.kt
@@ -30,7 +30,6 @@
import com.android.systemui.runCurrent
import com.android.systemui.runTest
import com.android.systemui.shade.data.repository.FakeShadeRepository
-import com.android.systemui.shade.domain.model.ShadeModel
import com.android.systemui.statusbar.phone.SystemUIDialogManager
import com.android.systemui.user.domain.UserDomainLayerModule
import com.android.systemui.util.mockito.mock
@@ -83,23 +82,13 @@
private fun TestComponent.shadeExpanded(expanded: Boolean) {
if (expanded) {
- shadeRepository.setShadeModel(
- ShadeModel(
- expansionAmount = 1f,
- isExpanded = true,
- isUserDragging = false,
- )
- )
+ shadeRepository.setLegacyShadeExpansion(1f)
+ shadeRepository.setLegacyShadeTracking(false)
shadeRepository.setLegacyExpandedOrAwaitingInputTransfer(true)
} else {
keyguardRepository.setStatusBarState(StatusBarState.SHADE)
- shadeRepository.setShadeModel(
- ShadeModel(
- expansionAmount = 0f,
- isExpanded = false,
- isUserDragging = false,
- )
- )
+ shadeRepository.setLegacyShadeExpansion(0f)
+ shadeRepository.setLegacyShadeTracking(false)
shadeRepository.setLegacyExpandedOrAwaitingInputTransfer(false)
}
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/keyguard/domain/interactor/KeyguardTransitionScenariosTest.kt b/packages/SystemUI/tests/src/com/android/systemui/keyguard/domain/interactor/KeyguardTransitionScenariosTest.kt
index bf6d5c4..976dc5f 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/keyguard/domain/interactor/KeyguardTransitionScenariosTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/keyguard/domain/interactor/KeyguardTransitionScenariosTest.kt
@@ -43,7 +43,6 @@
import com.android.systemui.power.domain.interactor.PowerInteractor.Companion.setAwakeForTest
import com.android.systemui.power.domain.interactor.PowerInteractorFactory
import com.android.systemui.shade.data.repository.FakeShadeRepository
-import com.android.systemui.shade.domain.model.ShadeModel
import com.android.systemui.user.domain.interactor.SelectedUserInteractor
import com.android.systemui.util.mockito.any
import com.android.systemui.util.mockito.mock
@@ -1329,12 +1328,8 @@
// GIVEN the keyguard is showing locked
keyguardRepository.setStatusBarState(StatusBarState.KEYGUARD)
runCurrent()
- shadeRepository.setShadeModel(
- ShadeModel(
- expansionAmount = .9f,
- isUserDragging = true,
- )
- )
+ shadeRepository.setLegacyShadeTracking(true)
+ shadeRepository.setLegacyShadeExpansion(.9f)
runCurrent()
// THEN a transition from LOCKSCREEN => PRIMARY_BOUNCER should occur
@@ -1350,12 +1345,8 @@
// WHEN the user stops dragging and shade is back to expanded
clearInvocations(transitionRepository)
runTransitionAndSetWakefulness(KeyguardState.LOCKSCREEN, KeyguardState.PRIMARY_BOUNCER)
- shadeRepository.setShadeModel(
- ShadeModel(
- expansionAmount = 1f,
- isUserDragging = false,
- )
- )
+ shadeRepository.setLegacyShadeTracking(false)
+ shadeRepository.setLegacyShadeExpansion(1f)
runCurrent()
// THEN a transition from PRIMARY_BOUNCER => LOCKSCREEN should occur
diff --git a/packages/SystemUI/tests/src/com/android/systemui/shade/data/repository/ShadeRepositoryImplTest.kt b/packages/SystemUI/tests/src/com/android/systemui/shade/data/repository/ShadeRepositoryImplTest.kt
index f8aa359..750693c 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/shade/data/repository/ShadeRepositoryImplTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/shade/data/repository/ShadeRepositoryImplTest.kt
@@ -19,33 +19,20 @@
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase
-import com.android.systemui.shade.ShadeExpansionChangeEvent
-import com.android.systemui.shade.ShadeExpansionStateManager
-import com.android.systemui.shade.domain.model.ShadeModel
-import com.android.systemui.util.mockito.any
-import com.android.systemui.util.mockito.withArgCaptor
import com.google.common.truth.Truth.assertThat
import kotlinx.coroutines.ExperimentalCoroutinesApi
-import kotlinx.coroutines.flow.launchIn
-import kotlinx.coroutines.flow.onEach
import kotlinx.coroutines.test.StandardTestDispatcher
import kotlinx.coroutines.test.TestScope
-import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
-import org.mockito.Mock
-import org.mockito.Mockito.verify
-import org.mockito.Mockito.`when`
-import org.mockito.MockitoAnnotations
@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class ShadeRepositoryImplTest : SysuiTestCase() {
- @Mock private lateinit var shadeExpansionStateManager: ShadeExpansionStateManager
private val testDispatcher = StandardTestDispatcher()
private val testScope = TestScope(testDispatcher)
@@ -53,57 +40,10 @@
@Before
fun setUp() {
- MockitoAnnotations.initMocks(this)
-
- underTest = ShadeRepositoryImpl(shadeExpansionStateManager)
- `when`(shadeExpansionStateManager.addExpansionListener(any()))
- .thenReturn(ShadeExpansionChangeEvent(0f, false, false, 0f))
+ underTest = ShadeRepositoryImpl()
}
@Test
- fun shadeExpansionChangeEvent() =
- testScope.runTest {
- var latest: ShadeModel? = null
- val job = underTest.shadeModel.onEach { latest = it }.launchIn(this)
- runCurrent()
- assertThat(latest?.expansionAmount).isEqualTo(0f)
- assertThat(latest?.isExpanded).isEqualTo(false)
- assertThat(latest?.isUserDragging).isEqualTo(false)
-
- val captor = withArgCaptor {
- verify(shadeExpansionStateManager).addExpansionListener(capture())
- }
-
- captor.onPanelExpansionChanged(
- ShadeExpansionChangeEvent(
- fraction = 1f,
- expanded = true,
- tracking = false,
- dragDownPxAmount = 0f,
- )
- )
- runCurrent()
- assertThat(latest?.expansionAmount).isEqualTo(1f)
- assertThat(latest?.isExpanded).isEqualTo(true)
- assertThat(latest?.isUserDragging).isEqualTo(false)
-
- captor.onPanelExpansionChanged(
- ShadeExpansionChangeEvent(
- fraction = .67f,
- expanded = false,
- tracking = true,
- dragDownPxAmount = 0f,
- )
- )
- runCurrent()
- assertThat(latest?.expansionAmount).isEqualTo(.67f)
- assertThat(latest?.isExpanded).isEqualTo(false)
- assertThat(latest?.isUserDragging).isEqualTo(true)
-
- job.cancel()
- }
-
- @Test
fun updateQsExpansion() =
testScope.runTest {
assertThat(underTest.qsExpansion.value).isEqualTo(0f)
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/shade/data/repository/FakeShadeRepository.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/shade/data/repository/FakeShadeRepository.kt
index 9c10848..f7005ab 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/shade/data/repository/FakeShadeRepository.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/shade/data/repository/FakeShadeRepository.kt
@@ -18,21 +18,14 @@
package com.android.systemui.shade.data.repository
import com.android.systemui.dagger.SysUISingleton
-import com.android.systemui.shade.domain.model.ShadeModel
import dagger.Binds
import dagger.Module
import javax.inject.Inject
-import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.MutableStateFlow
-import kotlinx.coroutines.flow.StateFlow
/** Fake implementation of [ShadeRepository] */
@SysUISingleton
class FakeShadeRepository @Inject constructor() : ShadeRepository {
-
- private val _shadeModel = MutableStateFlow(ShadeModel())
- override val shadeModel: Flow<ShadeModel> = _shadeModel
-
private val _qsExpansion = MutableStateFlow(0f)
override val qsExpansion = _qsExpansion
@@ -114,10 +107,6 @@
_legacyIsClosing.value = isClosing
}
- fun setShadeModel(model: ShadeModel) {
- _shadeModel.value = model
- }
-
override fun setQsExpansion(qsExpansion: Float) {
_qsExpansion.value = qsExpansion
}