Merge "Add expansion fraction to ShadeInteractor" into main
diff --git a/packages/SystemUI/src/com/android/systemui/shade/NotificationPanelViewController.java b/packages/SystemUI/src/com/android/systemui/shade/NotificationPanelViewController.java
index 132cd61..90d99b8 100644
--- a/packages/SystemUI/src/com/android/systemui/shade/NotificationPanelViewController.java
+++ b/packages/SystemUI/src/com/android/systemui/shade/NotificationPanelViewController.java
@@ -163,6 +163,7 @@
import com.android.systemui.plugins.qs.QS;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.plugins.statusbar.StatusBarStateController.StateListener;
+import com.android.systemui.shade.domain.interactor.ShadeInteractor;
import com.android.systemui.shade.transition.ShadeTransitionController;
import com.android.systemui.shared.system.InteractionJankMonitorWrapper;
import com.android.systemui.shared.system.QuickStepContract;
@@ -355,6 +356,7 @@
private final AlternateBouncerInteractor mAlternateBouncerInteractor;
private final KeyguardRootView mKeyguardRootView;
private final QuickSettingsController mQsController;
+ private final ShadeInteractor mShadeInteractor;
private final TouchHandler mTouchHandler = new TouchHandler();
private long mDownTime;
@@ -559,7 +561,6 @@
private float mHintDistance;
private float mInitialOffsetOnTouch;
private boolean mCollapsedAndHeadsUpOnDown;
- private float mExpandedFraction = 0;
private float mExpansionDragDownAmountPx = 0;
private boolean mPanelClosedOnDown;
private boolean mHasLayoutedSinceDown;
@@ -709,10 +710,12 @@
VibratorHelper vibratorHelper,
LatencyTracker latencyTracker,
PowerManager powerManager,
- AccessibilityManager accessibilityManager, @DisplayId int displayId,
+ AccessibilityManager accessibilityManager,
+ @DisplayId int displayId,
KeyguardUpdateMonitor keyguardUpdateMonitor,
MetricsLogger metricsLogger,
ShadeLogger shadeLogger,
+ ShadeInteractor shadeInteractor,
ConfigurationController configurationController,
Provider<FlingAnimationUtils.Builder> flingAnimationUtilsBuilder,
StatusBarTouchableRegionManager statusBarTouchableRegionManager,
@@ -785,6 +788,7 @@
mView = view;
mStatusBarKeyguardViewManager = statusBarKeyguardViewManager;
mLockscreenGestureLogger = lockscreenGestureLogger;
+ mShadeInteractor = shadeInteractor;
mShadeExpansionStateManager = shadeExpansionStateManager;
mShadeLog = shadeLogger;
mGutsManager = gutsManager;
@@ -2244,7 +2248,7 @@
if (!isFalseTouch(x, y, interactionType)) {
mShadeLog.logFlingExpands(vel, vectorVel, interactionType,
this.mFlingAnimationUtils.getMinVelocityPxPerSecond(),
- mExpandedFraction > 0.5f, mAllowExpandForSmallExpansion);
+ getExpandedFraction() > 0.5f, mAllowExpandForSmallExpansion);
if (Math.abs(vectorVel) < this.mFlingAnimationUtils.getMinVelocityPxPerSecond()) {
expands = shouldExpandWhenNotFlinging();
} else {
@@ -2419,7 +2423,7 @@
void requestScrollerTopPaddingUpdate(boolean animate) {
mNotificationStackScrollLayoutController.updateTopPadding(
mQsController.calculateNotificationsTopPadding(mIsExpandingOrCollapsing,
- getKeyguardNotificationStaticPadding(), mExpandedFraction), animate);
+ getKeyguardNotificationStaticPadding(), getExpandedFraction()), animate);
if (isKeyguardShowing()
&& mKeyguardBypassController.getBypassEnabled()) {
// update the position of the header
@@ -2501,10 +2505,10 @@
private void onHeightUpdated(float expandedHeight) {
if (expandedHeight <= 0) {
mShadeLog.logExpansionChanged("onHeightUpdated: fully collapsed.",
- mExpandedFraction, isExpanded(), mTracking, mExpansionDragDownAmountPx);
+ getExpandedFraction(), isExpanded(), mTracking, mExpansionDragDownAmountPx);
} else if (isFullyExpanded()) {
mShadeLog.logExpansionChanged("onHeightUpdated: fully expanded.",
- mExpandedFraction, isExpanded(), mTracking, mExpansionDragDownAmountPx);
+ getExpandedFraction(), isExpanded(), mTracking, mExpansionDragDownAmountPx);
}
if (!mQsController.getExpanded() || mQsController.isExpandImmediate()
|| mIsExpandingOrCollapsing && mQsController.getExpandedWhenExpandingStarted()) {
@@ -3425,7 +3429,7 @@
ipw.print("mHintDistance="); ipw.println(mHintDistance);
ipw.print("mInitialOffsetOnTouch="); ipw.println(mInitialOffsetOnTouch);
ipw.print("mCollapsedAndHeadsUpOnDown="); ipw.println(mCollapsedAndHeadsUpOnDown);
- ipw.print("mExpandedFraction="); ipw.println(mExpandedFraction);
+ ipw.print("getExpandedFraction()="); ipw.println(getExpandedFraction());
ipw.print("mExpansionDragDownAmountPx="); ipw.println(mExpansionDragDownAmountPx);
ipw.print("mPanelClosedOnDown="); ipw.println(mPanelClosedOnDown);
ipw.print("mHasLayoutedSinceDown="); ipw.println(mHasLayoutedSinceDown);
@@ -3761,7 +3765,7 @@
// don't fling while in keyguard to avoid jump in shade expand animation;
// touch has been intercepted already so flinging here is redundant
- if (mBarState == KEYGUARD && mExpandedFraction >= 1.0) {
+ if (mBarState == KEYGUARD && getExpandedFraction() >= 1.0) {
mShadeLog.d("NPVC endMotionEvent - skipping fling on keyguard");
} else {
fling(vel, expand, isFalseTouch(x, y, interactionType));
@@ -3857,6 +3861,16 @@
@VisibleForTesting
void setExpandedHeight(float height) {
debugLog("setExpandedHeight(%.1f)", height);
+ int maxPanelTransitionDistance = getMaxPanelTransitionDistance();
+ if (maxPanelTransitionDistance == 0) {
+ setExpandedFracAndHeight(0, height);
+ } else {
+ setExpandedFracAndHeight(height / maxPanelTransitionDistance, height);
+ }
+ }
+
+ private void setExpandedFracAndHeight(float frac, float height) {
+ mShadeInteractor.setExpansion(frac);
setExpandedHeightInternal(height);
}
@@ -3912,11 +3926,9 @@
mHeightAnimator.end();
}
}
- mExpandedFraction = Math.min(1f,
- maxPanelHeight == 0 ? 0 : mExpandedHeight / maxPanelHeight);
- mQsController.setShadeExpansion(mExpandedHeight, mExpandedFraction);
+ mQsController.setShadeExpansion(mExpandedHeight, getExpandedFraction());
mExpansionDragDownAmountPx = h;
- mAmbientState.setExpansionFraction(mExpandedFraction);
+ mAmbientState.setExpansionFraction(getExpandedFraction());
onHeightUpdated(mExpandedHeight);
updateExpansionAndVisibility();
});
@@ -3944,8 +3956,7 @@
/** Sets the expanded height relative to a number from 0 to 1. */
@VisibleForTesting
void setExpandedFraction(float frac) {
- final int maxDist = getMaxPanelTransitionDistance();
- setExpandedHeight(maxDist * frac);
+ setExpandedFracAndHeight(frac, getMaxPanelTransitionDistance() * frac);
}
float getExpandedHeight() {
@@ -3953,7 +3964,7 @@
}
float getExpandedFraction() {
- return mExpandedFraction;
+ return mShadeInteractor.getExpansion().getValue();
}
@Override
@@ -3975,7 +3986,7 @@
@Override
public boolean isFullyCollapsed() {
- return mExpandedFraction <= 0.0f;
+ return getExpandedFraction() <= 0.0f;
}
@Override
@@ -4134,7 +4145,7 @@
animator.getAnimatedFraction()));
setOverExpansionInternal(expansion, false /* isFromGesture */);
}
- setExpandedHeightInternal((float) animation.getAnimatedValue());
+ setExpandedHeight((float) animation.getAnimatedValue());
});
return animator;
}
@@ -4148,14 +4159,14 @@
@Override
public void updateExpansionAndVisibility() {
mShadeExpansionStateManager.onPanelExpansionChanged(
- mExpandedFraction, isExpanded(), mTracking, mExpansionDragDownAmountPx);
+ getExpandedFraction(), isExpanded(), mTracking, mExpansionDragDownAmountPx);
updateVisibility();
}
@Override
public boolean isExpanded() {
- return mExpandedFraction > 0f
+ return getExpandedFraction() > 0f
|| mInstantExpanding
|| isPanelVisibleBecauseOfHeadsUp()
|| mTracking
@@ -4913,7 +4924,7 @@
mMotionAborted = false;
mPanelClosedOnDown = isFullyCollapsed();
mShadeLog.logPanelClosedOnDown("intercept down touch", mPanelClosedOnDown,
- mExpandedFraction);
+ getExpandedFraction());
mCollapsedAndHeadsUpOnDown = false;
mHasLayoutedSinceDown = false;
mUpdateFlingOnLayout = false;
@@ -5132,7 +5143,7 @@
mMinExpandHeight = 0.0f;
mPanelClosedOnDown = isFullyCollapsed();
mShadeLog.logPanelClosedOnDown("handle down touch", mPanelClosedOnDown,
- mExpandedFraction);
+ getExpandedFraction());
mHasLayoutedSinceDown = false;
mUpdateFlingOnLayout = false;
mMotionAborted = false;
@@ -5191,7 +5202,7 @@
if (isFullyCollapsed()) {
// If panel is fully collapsed, reset haptic effect before adding movement.
mHasVibratedOnOpen = false;
- mShadeLog.logHasVibrated(mHasVibratedOnOpen, mExpandedFraction);
+ mShadeLog.logHasVibrated(mHasVibratedOnOpen, getExpandedFraction());
}
addMovement(event);
if (!isFullyCollapsed()) {
@@ -5227,7 +5238,7 @@
// otherwise {@link NotificationStackScrollLayout}
// wrongly enables stack height updates at the start of lockscreen swipe-up
mAmbientState.setSwipingUp(h <= 0);
- setExpandedHeightInternal(newHeight);
+ setExpandedHeight(newHeight);
}
break;
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 ebb9935..76dca4c 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
@@ -34,13 +34,34 @@
/** ShadeModel information regarding shade expansion events */
val shadeModel: Flow<ShadeModel>
- /** Amount qs has expanded. Quick Settings can be expanded without the full shade expansion. */
+ /**
+ * Value from `0` to `1` representing the amount the shade has expanded where `1` is fully
+ * expanded and `0` is fully collapsed. Quick Settings can be expanded without a fully expanded
+ * shade.
+ */
val qsExpansion: StateFlow<Float>
+ /**
+ * Value from `0` to `1` representing the amount the shade has expanded where `1` is fully
+ * expanded and `0` is fully collapsed.
+ */
+ val expansion: StateFlow<Float>
+
/** Amount shade has expanded with regard to the UDFPS location */
val udfpsTransitionToFullShadeProgress: StateFlow<Float>
+ /**
+ * Set shade expansion to a value from `0` to `1` representing the amount the shade has expanded
+ * where `1` is fully expanded and `0` is fully collapsed.
+ */
+ fun setExpansion(expansion: Float)
+
+ /**
+ * Set quick settings expansion to a value from `0` to `1` representing the amount quick
+ * settings has expanded where `1` is fully expanded and `0` is fully collapsed.
+ */
fun setQsExpansion(qsExpansion: Float)
+
fun setUdfpsTransitionToFullShadeProgress(progress: Float)
}
@@ -78,9 +99,17 @@
private val _qsExpansion = MutableStateFlow(0f)
override val qsExpansion: StateFlow<Float> = _qsExpansion.asStateFlow()
+ private val _expansion = MutableStateFlow(0f)
+ override val expansion: StateFlow<Float> = _expansion.asStateFlow()
+
private var _udfpsTransitionToFullShadeProgress = MutableStateFlow(0f)
override val udfpsTransitionToFullShadeProgress: StateFlow<Float> =
_udfpsTransitionToFullShadeProgress.asStateFlow()
+
+ override fun setExpansion(expansion: Float) {
+ _expansion.value = expansion
+ }
+
override fun setQsExpansion(qsExpansion: Float) {
_qsExpansion.value = qsExpansion
}
diff --git a/packages/SystemUI/src/com/android/systemui/shade/domain/interactor/ShadeInteractor.kt b/packages/SystemUI/src/com/android/systemui/shade/domain/interactor/ShadeInteractor.kt
index 6fde84a..efe3eb4 100644
--- a/packages/SystemUI/src/com/android/systemui/shade/domain/interactor/ShadeInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/shade/domain/interactor/ShadeInteractor.kt
@@ -19,6 +19,7 @@
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Application
import com.android.systemui.keyguard.data.repository.KeyguardRepository
+import com.android.systemui.shade.data.repository.ShadeRepository
import com.android.systemui.statusbar.disableflags.data.repository.DisableFlagsRepository
import com.android.systemui.statusbar.pipeline.mobile.data.repository.UserSetupRepository
import com.android.systemui.statusbar.policy.DeviceProvisionedController
@@ -38,18 +39,29 @@
@Inject
constructor(
@Application scope: CoroutineScope,
+ private val shadeRepository: ShadeRepository,
disableFlagsRepository: DisableFlagsRepository,
keyguardRepository: KeyguardRepository,
userSetupRepository: UserSetupRepository,
deviceProvisionedController: DeviceProvisionedController,
userInteractor: UserInteractor,
) {
+ /**
+ * Value from `0` to `1` representing the amount the shade has expanded where `1` is fully
+ * expanded and `0` is fully collapsed.
+ */
+ val expansion = shadeRepository.expansion
+
/** Emits true if the shade is currently allowed and false otherwise. */
val isShadeEnabled: StateFlow<Boolean> =
disableFlagsRepository.disableFlags
.map { it.isShadeEnabled() }
.stateIn(scope, SharingStarted.Eagerly, initialValue = false)
+ fun setExpansion(expansion: Float) {
+ shadeRepository.setExpansion(expansion)
+ }
+
/** Emits true if the shade can be expanded from QQS to QS and false otherwise. */
val isExpandToQsEnabled: Flow<Boolean> =
combine(
diff --git a/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationPanelViewControllerBaseTest.java b/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationPanelViewControllerBaseTest.java
index 981e44b..5cad9f8 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationPanelViewControllerBaseTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationPanelViewControllerBaseTest.java
@@ -73,6 +73,7 @@
import com.android.keyguard.KeyguardStatusViewController;
import com.android.keyguard.KeyguardUpdateMonitor;
import com.android.keyguard.LockIconViewController;
+import com.android.keyguard.TestScopeProvider;
import com.android.keyguard.dagger.KeyguardQsUserSwitchComponent;
import com.android.keyguard.dagger.KeyguardStatusBarViewComponent;
import com.android.keyguard.dagger.KeyguardStatusViewComponent;
@@ -119,6 +120,7 @@
import com.android.systemui.plugins.qs.QS;
import com.android.systemui.qs.QSFragment;
import com.android.systemui.screenrecord.RecordingController;
+import com.android.systemui.shade.data.repository.FakeShadeRepository;
import com.android.systemui.shade.data.repository.ShadeRepository;
import com.android.systemui.shade.domain.interactor.ShadeInteractor;
import com.android.systemui.shade.transition.ShadeTransitionController;
@@ -134,6 +136,7 @@
import com.android.systemui.statusbar.StatusBarStateControllerImpl;
import com.android.systemui.statusbar.SysuiStatusBarStateController;
import com.android.systemui.statusbar.VibratorHelper;
+import com.android.systemui.statusbar.disableflags.data.repository.FakeDisableFlagsRepository;
import com.android.systemui.statusbar.notification.ConversationNotificationManager;
import com.android.systemui.statusbar.notification.DynamicPrivacyController;
import com.android.systemui.statusbar.notification.NotificationWakeUpCoordinator;
@@ -164,14 +167,17 @@
import com.android.systemui.statusbar.phone.StatusBarTouchableRegionManager;
import com.android.systemui.statusbar.phone.TapAgainViewController;
import com.android.systemui.statusbar.phone.UnlockedScreenOffAnimationController;
+import com.android.systemui.statusbar.pipeline.mobile.data.repository.FakeUserSetupRepository;
import com.android.systemui.statusbar.policy.CastController;
import com.android.systemui.statusbar.policy.ConfigurationController;
+import com.android.systemui.statusbar.policy.DeviceProvisionedController;
import com.android.systemui.statusbar.policy.KeyguardQsUserSwitchController;
import com.android.systemui.statusbar.policy.KeyguardStateController;
import com.android.systemui.statusbar.policy.KeyguardUserSwitcherController;
import com.android.systemui.statusbar.policy.KeyguardUserSwitcherView;
import com.android.systemui.statusbar.window.StatusBarWindowStateController;
import com.android.systemui.unfold.SysUIUnfoldComponent;
+import com.android.systemui.user.domain.interactor.UserInteractor;
import com.android.systemui.util.kotlin.JavaAdapter;
import com.android.systemui.util.time.FakeSystemClock;
import com.android.systemui.util.time.SystemClock;
@@ -358,6 +364,16 @@
mFakeKeyguardRepository = keyguardInteractorDeps.getRepository();
mKeyguardBottomAreaInteractor = new KeyguardBottomAreaInteractor(mFakeKeyguardRepository);
mKeyguardInteractor = keyguardInteractorDeps.getKeyguardInteractor();
+ mShadeRepository = new FakeShadeRepository();
+ mShadeInteractor = new ShadeInteractor(
+ TestScopeProvider.getTestScope(),
+ mShadeRepository,
+ new FakeDisableFlagsRepository(),
+ new FakeKeyguardRepository(),
+ new FakeUserSetupRepository(),
+ mock(DeviceProvisionedController.class),
+ mock(UserInteractor.class)
+ );
SystemClock systemClock = new FakeSystemClock();
mStatusBarStateController = new StatusBarStateControllerImpl(mUiEventLogger, mDumpManager,
@@ -584,19 +600,33 @@
mMainHandler,
mLayoutInflater,
mFeatureFlags,
- coordinator, expansionHandler, mDynamicPrivacyController, mKeyguardBypassController,
- mFalsingManager, new FalsingCollectorFake(),
+ coordinator,
+ expansionHandler,
+ mDynamicPrivacyController,
+ mKeyguardBypassController,
+ mFalsingManager,
+ new FalsingCollectorFake(),
mKeyguardStateController,
mStatusBarStateController,
mStatusBarWindowStateController,
mNotificationShadeWindowController,
- mDozeLog, mDozeParameters, mCommandQueue, mVibratorHelper,
- mLatencyTracker, mPowerManager, mAccessibilityManager, 0, mUpdateMonitor,
+ mDozeLog,
+ mDozeParameters,
+ mCommandQueue,
+ mVibratorHelper,
+ mLatencyTracker,
+ mPowerManager,
+ mAccessibilityManager,
+ 0,
+ mUpdateMonitor,
mMetricsLogger,
mShadeLog,
+ mShadeInteractor,
mConfigurationController,
- () -> flingAnimationUtilsBuilder, mStatusBarTouchableRegionManager,
- mConversationNotificationManager, mMediaHierarchyManager,
+ () -> flingAnimationUtilsBuilder,
+ mStatusBarTouchableRegionManager,
+ mConversationNotificationManager,
+ mMediaHierarchyManager,
mStatusBarKeyguardViewManager,
mGutsManager,
mNotificationsQSContainerController,
diff --git a/packages/SystemUI/tests/src/com/android/systemui/shade/QuickSettingsControllerBaseTest.java b/packages/SystemUI/tests/src/com/android/systemui/shade/QuickSettingsControllerBaseTest.java
index a2c2912..35a54d1 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/shade/QuickSettingsControllerBaseTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/shade/QuickSettingsControllerBaseTest.java
@@ -49,6 +49,7 @@
import com.android.systemui.plugins.qs.QS;
import com.android.systemui.qs.QSFragment;
import com.android.systemui.screenrecord.RecordingController;
+import com.android.systemui.shade.data.repository.FakeShadeRepository;
import com.android.systemui.shade.data.repository.ShadeRepository;
import com.android.systemui.shade.domain.interactor.ShadeInteractor;
import com.android.systemui.shade.transition.ShadeTransitionController;
@@ -170,6 +171,7 @@
mShadeInteractor =
new ShadeInteractor(
mTestScope.getBackgroundScope(),
+ new FakeShadeRepository(),
mDisableFlagsRepository,
mKeyguardRepository,
new FakeUserSetupRepository(),
diff --git a/packages/SystemUI/tests/src/com/android/systemui/shade/data/repository/ShadeInteractorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/shade/data/repository/ShadeInteractorTest.kt
index cdcd1a2..9e6c12f 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/shade/data/repository/ShadeInteractorTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/shade/data/repository/ShadeInteractorTest.kt
@@ -67,6 +67,7 @@
private val featureFlags = FakeFeatureFlags()
private val userSetupRepository = FakeUserSetupRepository()
private val userRepository = FakeUserRepository()
+ private val shadeRepository = FakeShadeRepository()
private val disableFlagsRepository = FakeDisableFlagsRepository()
private val keyguardRepository = FakeKeyguardRepository()
@@ -138,6 +139,7 @@
underTest =
ShadeInteractor(
testScope.backgroundScope,
+ shadeRepository,
disableFlagsRepository,
keyguardRepository,
userSetupRepository,
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/LockscreenShadeTransitionControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/LockscreenShadeTransitionControllerTest.kt
index 4a2518a..ec4367c 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/LockscreenShadeTransitionControllerTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/LockscreenShadeTransitionControllerTest.kt
@@ -102,8 +102,10 @@
@Mock lateinit var transitionControllerCallback: LockscreenShadeTransitionController.Callback
private val disableFlagsRepository = FakeDisableFlagsRepository()
private val keyguardRepository = FakeKeyguardRepository()
+ private val shadeRepository = FakeShadeRepository()
private val shadeInteractor = ShadeInteractor(
testScope.backgroundScope,
+ shadeRepository,
disableFlagsRepository,
keyguardRepository,
userSetupRepository = FakeUserSetupRepository(),
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 492e542..35a3fd0 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
@@ -30,6 +30,9 @@
private val _qsExpansion = MutableStateFlow(0f)
override val qsExpansion = _qsExpansion
+ private val _expansion = MutableStateFlow(0f)
+ override val expansion = _expansion
+
private val _udfpsTransitionToFullShadeProgress = MutableStateFlow(0f)
override val udfpsTransitionToFullShadeProgress = _udfpsTransitionToFullShadeProgress
@@ -41,6 +44,10 @@
_qsExpansion.value = qsExpansion
}
+ override fun setExpansion(expansion: Float) {
+ _expansion.value = expansion
+ }
+
override fun setUdfpsTransitionToFullShadeProgress(progress: Float) {
_udfpsTransitionToFullShadeProgress.value = progress
}