Merge "Add udfpsTransitionProgress and qsExpansion to the ShadeRepository" into udc-dev am: 741ed97ad4
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/22836861 Change-Id: I9a057abe86598f6c5bcc16cc993745b3654860c3 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -70,6 +70,7 @@ import com.android.systemui.media.controls.ui.MediaHierarchyManager;
|
|||||||
import com.android.systemui.plugins.FalsingManager;
|
import com.android.systemui.plugins.FalsingManager;
|
||||||
import com.android.systemui.plugins.qs.QS;
|
import com.android.systemui.plugins.qs.QS;
|
||||||
import com.android.systemui.screenrecord.RecordingController;
|
import com.android.systemui.screenrecord.RecordingController;
|
||||||
|
import com.android.systemui.shade.data.repository.ShadeRepository;
|
||||||
import com.android.systemui.shade.transition.ShadeTransitionController;
|
import com.android.systemui.shade.transition.ShadeTransitionController;
|
||||||
import com.android.systemui.shared.system.QuickStepContract;
|
import com.android.systemui.shared.system.QuickStepContract;
|
||||||
import com.android.systemui.statusbar.LockscreenShadeTransitionController;
|
import com.android.systemui.statusbar.LockscreenShadeTransitionController;
|
||||||
@@ -136,6 +137,7 @@ public class QuickSettingsController {
|
|||||||
private final KeyguardFaceAuthInteractor mKeyguardFaceAuthInteractor;
|
private final KeyguardFaceAuthInteractor mKeyguardFaceAuthInteractor;
|
||||||
private final FeatureFlags mFeatureFlags;
|
private final FeatureFlags mFeatureFlags;
|
||||||
private final InteractionJankMonitor mInteractionJankMonitor;
|
private final InteractionJankMonitor mInteractionJankMonitor;
|
||||||
|
private final ShadeRepository mShadeRepository;
|
||||||
private final FalsingManager mFalsingManager;
|
private final FalsingManager mFalsingManager;
|
||||||
private final AccessibilityManager mAccessibilityManager;
|
private final AccessibilityManager mAccessibilityManager;
|
||||||
private final MetricsLogger mMetricsLogger;
|
private final MetricsLogger mMetricsLogger;
|
||||||
@@ -321,7 +323,8 @@ public class QuickSettingsController {
|
|||||||
FeatureFlags featureFlags,
|
FeatureFlags featureFlags,
|
||||||
InteractionJankMonitor interactionJankMonitor,
|
InteractionJankMonitor interactionJankMonitor,
|
||||||
ShadeLogger shadeLog,
|
ShadeLogger shadeLog,
|
||||||
KeyguardFaceAuthInteractor keyguardFaceAuthInteractor
|
KeyguardFaceAuthInteractor keyguardFaceAuthInteractor,
|
||||||
|
ShadeRepository shadeRepository
|
||||||
) {
|
) {
|
||||||
mPanelViewControllerLazy = panelViewControllerLazy;
|
mPanelViewControllerLazy = panelViewControllerLazy;
|
||||||
mPanelView = panelView;
|
mPanelView = panelView;
|
||||||
@@ -363,6 +366,7 @@ public class QuickSettingsController {
|
|||||||
mKeyguardFaceAuthInteractor = keyguardFaceAuthInteractor;
|
mKeyguardFaceAuthInteractor = keyguardFaceAuthInteractor;
|
||||||
mFeatureFlags = featureFlags;
|
mFeatureFlags = featureFlags;
|
||||||
mInteractionJankMonitor = interactionJankMonitor;
|
mInteractionJankMonitor = interactionJankMonitor;
|
||||||
|
mShadeRepository = shadeRepository;
|
||||||
|
|
||||||
mLockscreenShadeTransitionController.addCallback(new LockscreenShadeTransitionCallback());
|
mLockscreenShadeTransitionController.addCallback(new LockscreenShadeTransitionCallback());
|
||||||
}
|
}
|
||||||
@@ -1001,6 +1005,7 @@ public class QuickSettingsController {
|
|||||||
|
|
||||||
mDepthController.setQsPanelExpansion(qsExpansionFraction);
|
mDepthController.setQsPanelExpansion(qsExpansionFraction);
|
||||||
mStatusBarKeyguardViewManager.setQsExpansion(qsExpansionFraction);
|
mStatusBarKeyguardViewManager.setQsExpansion(qsExpansionFraction);
|
||||||
|
mShadeRepository.setQsExpansion(qsExpansionFraction);
|
||||||
|
|
||||||
// TODO (b/265193930): remove dependency on NPVC
|
// TODO (b/265193930): remove dependency on NPVC
|
||||||
float shadeExpandedFraction = mBarState == KEYGUARD
|
float shadeExpandedFraction = mBarState == KEYGUARD
|
||||||
|
|||||||
@@ -25,11 +25,23 @@ import com.android.systemui.shade.domain.model.ShadeModel
|
|||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
import kotlinx.coroutines.channels.awaitClose
|
import kotlinx.coroutines.channels.awaitClose
|
||||||
import kotlinx.coroutines.flow.Flow
|
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
|
import kotlinx.coroutines.flow.distinctUntilChanged
|
||||||
|
|
||||||
interface ShadeRepository {
|
interface ShadeRepository {
|
||||||
/** ShadeModel information regarding shade expansion events */
|
/** ShadeModel information regarding shade expansion events */
|
||||||
val shadeModel: Flow<ShadeModel>
|
val shadeModel: Flow<ShadeModel>
|
||||||
|
|
||||||
|
/** Amount qs has expanded. Quick Settings can be expanded without the full shade expansion. */
|
||||||
|
val qsExpansion: StateFlow<Float>
|
||||||
|
|
||||||
|
/** Amount shade has expanded with regard to the UDFPS location */
|
||||||
|
val udfpsTransitionToFullShadeProgress: StateFlow<Float>
|
||||||
|
|
||||||
|
fun setQsExpansion(qsExpansion: Float)
|
||||||
|
fun setUdfpsTransitionToFullShadeProgress(progress: Float)
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Business logic for shade interactions */
|
/** Business logic for shade interactions */
|
||||||
@@ -62,6 +74,20 @@ constructor(shadeExpansionStateManager: ShadeExpansionStateManager) : ShadeRepos
|
|||||||
}
|
}
|
||||||
.distinctUntilChanged()
|
.distinctUntilChanged()
|
||||||
|
|
||||||
|
private val _qsExpansion = MutableStateFlow(0f)
|
||||||
|
override val qsExpansion: StateFlow<Float> = _qsExpansion.asStateFlow()
|
||||||
|
|
||||||
|
private var _udfpsTransitionToFullShadeProgress = MutableStateFlow(0f)
|
||||||
|
override val udfpsTransitionToFullShadeProgress: StateFlow<Float> =
|
||||||
|
_udfpsTransitionToFullShadeProgress.asStateFlow()
|
||||||
|
override fun setQsExpansion(qsExpansion: Float) {
|
||||||
|
_qsExpansion.value = qsExpansion
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun setUdfpsTransitionToFullShadeProgress(progress: Float) {
|
||||||
|
_udfpsTransitionToFullShadeProgress.value = progress
|
||||||
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
private const val TAG = "ShadeRepository"
|
private const val TAG = "ShadeRepository"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,6 +32,7 @@ import com.android.systemui.plugins.FalsingManager
|
|||||||
import com.android.systemui.plugins.qs.QS
|
import com.android.systemui.plugins.qs.QS
|
||||||
import com.android.systemui.plugins.statusbar.StatusBarStateController
|
import com.android.systemui.plugins.statusbar.StatusBarStateController
|
||||||
import com.android.systemui.shade.ShadeViewController
|
import com.android.systemui.shade.ShadeViewController
|
||||||
|
import com.android.systemui.shade.data.repository.ShadeRepository
|
||||||
import com.android.systemui.statusbar.notification.collection.NotificationEntry
|
import com.android.systemui.statusbar.notification.collection.NotificationEntry
|
||||||
import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow
|
import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow
|
||||||
import com.android.systemui.statusbar.notification.row.ExpandableView
|
import com.android.systemui.statusbar.notification.row.ExpandableView
|
||||||
@@ -74,6 +75,7 @@ class LockscreenShadeTransitionController @Inject constructor(
|
|||||||
falsingManager: FalsingManager,
|
falsingManager: FalsingManager,
|
||||||
dumpManager: DumpManager,
|
dumpManager: DumpManager,
|
||||||
qsTransitionControllerFactory: LockscreenShadeQsTransitionController.Factory,
|
qsTransitionControllerFactory: LockscreenShadeQsTransitionController.Factory,
|
||||||
|
private val shadeRepository: ShadeRepository,
|
||||||
) : Dumpable {
|
) : Dumpable {
|
||||||
private var pulseHeight: Float = 0f
|
private var pulseHeight: Float = 0f
|
||||||
@get:VisibleForTesting
|
@get:VisibleForTesting
|
||||||
@@ -449,6 +451,7 @@ class LockscreenShadeTransitionController @Inject constructor(
|
|||||||
}
|
}
|
||||||
|
|
||||||
val udfpsProgress = MathUtils.saturate(dragDownAmount / udfpsTransitionDistance)
|
val udfpsProgress = MathUtils.saturate(dragDownAmount / udfpsTransitionDistance)
|
||||||
|
shadeRepository.setUdfpsTransitionToFullShadeProgress(udfpsProgress)
|
||||||
udfpsKeyguardViewController?.setTransitionToFullShadeProgress(udfpsProgress)
|
udfpsKeyguardViewController?.setTransitionToFullShadeProgress(udfpsProgress)
|
||||||
|
|
||||||
val statusBarProgress = MathUtils.saturate(dragDownAmount / statusBarTransitionDistance)
|
val statusBarProgress = MathUtils.saturate(dragDownAmount / statusBarTransitionDistance)
|
||||||
|
|||||||
@@ -115,6 +115,7 @@ import com.android.systemui.plugins.FalsingManager;
|
|||||||
import com.android.systemui.plugins.qs.QS;
|
import com.android.systemui.plugins.qs.QS;
|
||||||
import com.android.systemui.qs.QSFragment;
|
import com.android.systemui.qs.QSFragment;
|
||||||
import com.android.systemui.screenrecord.RecordingController;
|
import com.android.systemui.screenrecord.RecordingController;
|
||||||
|
import com.android.systemui.shade.data.repository.ShadeRepository;
|
||||||
import com.android.systemui.shade.transition.ShadeTransitionController;
|
import com.android.systemui.shade.transition.ShadeTransitionController;
|
||||||
import com.android.systemui.statusbar.CommandQueue;
|
import com.android.systemui.statusbar.CommandQueue;
|
||||||
import com.android.systemui.statusbar.KeyguardIndicationController;
|
import com.android.systemui.statusbar.KeyguardIndicationController;
|
||||||
@@ -304,6 +305,7 @@ public class NotificationPanelViewControllerBaseTest extends SysuiTestCase {
|
|||||||
mEmptySpaceClickListenerCaptor;
|
mEmptySpaceClickListenerCaptor;
|
||||||
@Mock protected ActivityStarter mActivityStarter;
|
@Mock protected ActivityStarter mActivityStarter;
|
||||||
@Mock protected KeyguardFaceAuthInteractor mKeyguardFaceAuthInteractor;
|
@Mock protected KeyguardFaceAuthInteractor mKeyguardFaceAuthInteractor;
|
||||||
|
@Mock protected ShadeRepository mShadeRepository;
|
||||||
|
|
||||||
protected final int mMaxUdfpsBurnInOffsetY = 5;
|
protected final int mMaxUdfpsBurnInOffsetY = 5;
|
||||||
protected KeyguardBottomAreaInteractor mKeyguardBottomAreaInteractor;
|
protected KeyguardBottomAreaInteractor mKeyguardBottomAreaInteractor;
|
||||||
@@ -672,7 +674,8 @@ public class NotificationPanelViewControllerBaseTest extends SysuiTestCase {
|
|||||||
mFeatureFlags,
|
mFeatureFlags,
|
||||||
mInteractionJankMonitor,
|
mInteractionJankMonitor,
|
||||||
mShadeLog,
|
mShadeLog,
|
||||||
mKeyguardFaceAuthInteractor
|
mKeyguardFaceAuthInteractor,
|
||||||
|
mShadeRepository
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -69,6 +69,7 @@ import com.android.systemui.plugins.FalsingManager;
|
|||||||
import com.android.systemui.plugins.qs.QS;
|
import com.android.systemui.plugins.qs.QS;
|
||||||
import com.android.systemui.qs.QSFragment;
|
import com.android.systemui.qs.QSFragment;
|
||||||
import com.android.systemui.screenrecord.RecordingController;
|
import com.android.systemui.screenrecord.RecordingController;
|
||||||
|
import com.android.systemui.shade.data.repository.ShadeRepository;
|
||||||
import com.android.systemui.shade.transition.ShadeTransitionController;
|
import com.android.systemui.shade.transition.ShadeTransitionController;
|
||||||
import com.android.systemui.statusbar.LockscreenShadeTransitionController;
|
import com.android.systemui.statusbar.LockscreenShadeTransitionController;
|
||||||
import com.android.systemui.statusbar.NotificationRemoteInputManager;
|
import com.android.systemui.statusbar.NotificationRemoteInputManager;
|
||||||
@@ -88,6 +89,8 @@ import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager;
|
|||||||
import com.android.systemui.statusbar.phone.StatusBarTouchableRegionManager;
|
import com.android.systemui.statusbar.phone.StatusBarTouchableRegionManager;
|
||||||
import com.android.systemui.statusbar.policy.KeyguardStateController;
|
import com.android.systemui.statusbar.policy.KeyguardStateController;
|
||||||
|
|
||||||
|
import dagger.Lazy;
|
||||||
|
|
||||||
import org.junit.After;
|
import org.junit.After;
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
@@ -98,8 +101,6 @@ import org.mockito.MockitoAnnotations;
|
|||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import dagger.Lazy;
|
|
||||||
|
|
||||||
@SmallTest
|
@SmallTest
|
||||||
@RunWith(AndroidTestingRunner.class)
|
@RunWith(AndroidTestingRunner.class)
|
||||||
@TestableLooper.RunWithLooper(setAsMainLooper = true)
|
@TestableLooper.RunWithLooper(setAsMainLooper = true)
|
||||||
@@ -241,7 +242,8 @@ public class QuickSettingsControllerTest extends SysuiTestCase {
|
|||||||
mFeatureFlags,
|
mFeatureFlags,
|
||||||
mInteractionJankMonitor,
|
mInteractionJankMonitor,
|
||||||
mShadeLogger,
|
mShadeLogger,
|
||||||
mock(KeyguardFaceAuthInteractor.class)
|
mock(KeyguardFaceAuthInteractor.class),
|
||||||
|
mock(ShadeRepository.class)
|
||||||
);
|
);
|
||||||
|
|
||||||
mFragmentListener = mQsController.getQsFragmentListener();
|
mFragmentListener = mQsController.getQsFragmentListener();
|
||||||
|
|||||||
@@ -0,0 +1,133 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2023 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.data.repository
|
||||||
|
|
||||||
|
import androidx.test.ext.junit.runners.AndroidJUnit4
|
||||||
|
import androidx.test.filters.SmallTest
|
||||||
|
import com.android.systemui.RoboPilotTest
|
||||||
|
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.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.MockitoAnnotations
|
||||||
|
|
||||||
|
@OptIn(ExperimentalCoroutinesApi::class)
|
||||||
|
@SmallTest
|
||||||
|
@RoboPilotTest
|
||||||
|
@RunWith(AndroidJUnit4::class)
|
||||||
|
class ShadeRepositoryImplTest : SysuiTestCase() {
|
||||||
|
|
||||||
|
@Mock private lateinit var shadeExpansionStateManager: ShadeExpansionStateManager
|
||||||
|
private val testDispatcher = StandardTestDispatcher()
|
||||||
|
private val testScope = TestScope(testDispatcher)
|
||||||
|
|
||||||
|
private lateinit var underTest: ShadeRepositoryImpl
|
||||||
|
|
||||||
|
@Before
|
||||||
|
fun setUp() {
|
||||||
|
MockitoAnnotations.initMocks(this)
|
||||||
|
|
||||||
|
underTest = ShadeRepositoryImpl(shadeExpansionStateManager)
|
||||||
|
}
|
||||||
|
|
||||||
|
@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)
|
||||||
|
|
||||||
|
underTest.setQsExpansion(.5f)
|
||||||
|
assertThat(underTest.qsExpansion.value).isEqualTo(.5f)
|
||||||
|
|
||||||
|
underTest.setQsExpansion(.82f)
|
||||||
|
assertThat(underTest.qsExpansion.value).isEqualTo(.82f)
|
||||||
|
|
||||||
|
underTest.setQsExpansion(1f)
|
||||||
|
assertThat(underTest.qsExpansion.value).isEqualTo(1f)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun updateUdfpsTransitionToFullShadeProgress() =
|
||||||
|
testScope.runTest {
|
||||||
|
assertThat(underTest.udfpsTransitionToFullShadeProgress.value).isEqualTo(0f)
|
||||||
|
|
||||||
|
underTest.setUdfpsTransitionToFullShadeProgress(.5f)
|
||||||
|
assertThat(underTest.udfpsTransitionToFullShadeProgress.value).isEqualTo(.5f)
|
||||||
|
|
||||||
|
underTest.setUdfpsTransitionToFullShadeProgress(.82f)
|
||||||
|
assertThat(underTest.udfpsTransitionToFullShadeProgress.value).isEqualTo(.82f)
|
||||||
|
|
||||||
|
underTest.setUdfpsTransitionToFullShadeProgress(1f)
|
||||||
|
assertThat(underTest.udfpsTransitionToFullShadeProgress.value).isEqualTo(1f)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -15,6 +15,7 @@ import com.android.systemui.plugins.ActivityStarter
|
|||||||
import com.android.systemui.plugins.FalsingManager
|
import com.android.systemui.plugins.FalsingManager
|
||||||
import com.android.systemui.plugins.qs.QS
|
import com.android.systemui.plugins.qs.QS
|
||||||
import com.android.systemui.shade.ShadeViewController
|
import com.android.systemui.shade.ShadeViewController
|
||||||
|
import com.android.systemui.shade.data.repository.FakeShadeRepository
|
||||||
import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow
|
import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow
|
||||||
import com.android.systemui.statusbar.notification.row.NotificationTestHelper
|
import com.android.systemui.statusbar.notification.row.NotificationTestHelper
|
||||||
import com.android.systemui.statusbar.notification.stack.AmbientState
|
import com.android.systemui.statusbar.notification.stack.AmbientState
|
||||||
@@ -127,6 +128,7 @@ class LockscreenShadeTransitionControllerTest : SysuiTestCase() {
|
|||||||
},
|
},
|
||||||
qsTransitionControllerFactory = { qsTransitionController },
|
qsTransitionControllerFactory = { qsTransitionController },
|
||||||
activityStarter = activityStarter,
|
activityStarter = activityStarter,
|
||||||
|
shadeRepository = FakeShadeRepository(),
|
||||||
)
|
)
|
||||||
transitionController.addCallback(transitionControllerCallback)
|
transitionController.addCallback(transitionControllerCallback)
|
||||||
whenever(nsslController.view).thenReturn(stackscroller)
|
whenever(nsslController.view).thenReturn(stackscroller)
|
||||||
|
|||||||
@@ -21,13 +21,27 @@ import com.android.systemui.shade.domain.model.ShadeModel
|
|||||||
import kotlinx.coroutines.flow.Flow
|
import kotlinx.coroutines.flow.Flow
|
||||||
import kotlinx.coroutines.flow.MutableStateFlow
|
import kotlinx.coroutines.flow.MutableStateFlow
|
||||||
|
|
||||||
/** Fake implementation of [KeyguardRepository] */
|
/** Fake implementation of [ShadeRepository] */
|
||||||
class FakeShadeRepository : ShadeRepository {
|
class FakeShadeRepository : ShadeRepository {
|
||||||
|
|
||||||
private val _shadeModel = MutableStateFlow(ShadeModel())
|
private val _shadeModel = MutableStateFlow(ShadeModel())
|
||||||
override val shadeModel: Flow<ShadeModel> = _shadeModel
|
override val shadeModel: Flow<ShadeModel> = _shadeModel
|
||||||
|
|
||||||
|
private val _qsExpansion = MutableStateFlow(0f)
|
||||||
|
override val qsExpansion = _qsExpansion
|
||||||
|
|
||||||
|
private val _udfpsTransitionToFullShadeProgress = MutableStateFlow(0f)
|
||||||
|
override val udfpsTransitionToFullShadeProgress = _udfpsTransitionToFullShadeProgress
|
||||||
|
|
||||||
fun setShadeModel(model: ShadeModel) {
|
fun setShadeModel(model: ShadeModel) {
|
||||||
_shadeModel.value = model
|
_shadeModel.value = model
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun setQsExpansion(qsExpansion: Float) {
|
||||||
|
_qsExpansion.value = qsExpansion
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun setUdfpsTransitionToFullShadeProgress(progress: Float) {
|
||||||
|
_udfpsTransitionToFullShadeProgress.value = progress
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user