diff options
9 files changed, 29 insertions, 48 deletions
diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/keyguard/ui/composable/blueprint/BurnInState.kt b/packages/SystemUI/compose/features/src/com/android/systemui/keyguard/ui/composable/blueprint/BurnInState.kt index 7a73c58ba193..8129e41b4977 100644 --- a/packages/SystemUI/compose/features/src/com/android/systemui/keyguard/ui/composable/blueprint/BurnInState.kt +++ b/packages/SystemUI/compose/features/src/com/android/systemui/keyguard/ui/composable/blueprint/BurnInState.kt @@ -71,7 +71,6 @@ private fun rememberBurnInParameters( return remember(clock, topInset, topmostTop) { BurnInParameters( - clockControllerProvider = { clock }, topInset = topInset, minViewY = topmostTop, ) diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/AodBurnInViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/AodBurnInViewModelTest.kt index f517cec040a0..31337a635bfb 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/AodBurnInViewModelTest.kt +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/AodBurnInViewModelTest.kt @@ -23,6 +23,7 @@ import androidx.test.filters.SmallTest import com.android.systemui.Flags as AConfigFlags import com.android.systemui.SysuiTestCase import com.android.systemui.coroutines.collectLastValue +import com.android.systemui.keyguard.data.repository.fakeKeyguardClockRepository import com.android.systemui.keyguard.data.repository.fakeKeyguardTransitionRepository import com.android.systemui.keyguard.domain.interactor.BurnInInteractor import com.android.systemui.keyguard.domain.interactor.burnInInteractor @@ -60,10 +61,7 @@ class AodBurnInViewModelTest : SysuiTestCase() { private val keyguardTransitionRepository = kosmos.fakeKeyguardTransitionRepository private lateinit var underTest: AodBurnInViewModel - private var burnInParameters = - BurnInParameters( - clockControllerProvider = { clockController }, - ) + private var burnInParameters = BurnInParameters() private val burnInFlow = MutableStateFlow(BurnInModel()) @Before @@ -76,6 +74,7 @@ class AodBurnInViewModelTest : SysuiTestCase() { whenever(goneToAodTransitionViewModel.enterFromTopTranslationY(anyInt())) .thenReturn(emptyFlow()) kosmos.goneToAodTransitionViewModel = goneToAodTransitionViewModel + kosmos.fakeKeyguardClockRepository.setCurrentClock(clockController) underTest = kosmos.aodBurnInViewModel } diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewConfigurator.kt b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewConfigurator.kt index 9f7e0d43c3b5..e6e6ff6dcadb 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewConfigurator.kt +++ b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewConfigurator.kt @@ -208,7 +208,7 @@ constructor( chipbarCoordinator, screenOffAnimationController, shadeInteractor, - { keyguardStatusViewController!!.getClockController() }, + clockInteractor, interactionJankMonitor, deviceEntryHapticsInteractor, vibratorHelper, diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardClockInteractor.kt b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardClockInteractor.kt index 99b691ebd6ae..d551c9b9a4de 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardClockInteractor.kt +++ b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardClockInteractor.kt @@ -17,7 +17,9 @@ package com.android.systemui.keyguard.domain.interactor +import android.util.Log import com.android.keyguard.ClockEventController +import com.android.keyguard.KeyguardClockSwitch import com.android.keyguard.KeyguardClockSwitch.ClockSize import com.android.systemui.dagger.SysUISingleton import com.android.systemui.keyguard.data.repository.KeyguardClockRepository @@ -54,6 +56,15 @@ constructor( keyguardClockRepository.setClockSize(size) } + val renderedClockId: ClockId + get() { + return clock?.let { clock -> clock.config.id } + ?: run { + Log.e(TAG, "No clock is available") + KeyguardClockSwitch.MISSING_CLOCK_ID + } + } + fun animateFoldToAod(foldFraction: Float) { clock?.let { clock -> clock.smallClock.animations.fold(foldFraction) diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardRootViewBinder.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardRootViewBinder.kt index 5f50f7ec46e3..0249abd684cc 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardRootViewBinder.kt +++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardRootViewBinder.kt @@ -36,7 +36,6 @@ import com.android.app.animation.Interpolators import com.android.app.tracing.coroutines.launch import com.android.internal.jank.InteractionJankMonitor import com.android.internal.jank.InteractionJankMonitor.CUJ_SCREEN_OFF_SHOW_AOD -import com.android.keyguard.KeyguardClockSwitch.MISSING_CLOCK_ID import com.android.systemui.Flags.newAodTransition import com.android.systemui.common.shared.model.Icon import com.android.systemui.common.shared.model.Text @@ -47,6 +46,7 @@ import com.android.systemui.deviceentry.shared.DeviceEntryUdfpsRefactor import com.android.systemui.keyguard.KeyguardBottomAreaRefactor import com.android.systemui.keyguard.KeyguardViewMediator import com.android.systemui.keyguard.MigrateClocksToBlueprint +import com.android.systemui.keyguard.domain.interactor.KeyguardClockInteractor import com.android.systemui.keyguard.shared.model.KeyguardState import com.android.systemui.keyguard.shared.model.TransitionState import com.android.systemui.keyguard.ui.viewmodel.BurnInParameters @@ -55,7 +55,6 @@ import com.android.systemui.keyguard.ui.viewmodel.OccludingAppDeviceEntryMessage import com.android.systemui.keyguard.ui.viewmodel.ViewStateAccessor import com.android.systemui.lifecycle.repeatWhenAttached import com.android.systemui.plugins.FalsingManager -import com.android.systemui.plugins.clocks.ClockController import com.android.systemui.res.R import com.android.systemui.shade.domain.interactor.ShadeInteractor import com.android.systemui.statusbar.CrossFadeHelper @@ -69,7 +68,6 @@ import com.android.systemui.util.ui.AnimatedValue import com.android.systemui.util.ui.isAnimating import com.android.systemui.util.ui.stopAnimating import com.android.systemui.util.ui.value -import javax.inject.Provider import kotlin.math.min import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.DisposableHandle @@ -93,7 +91,7 @@ object KeyguardRootViewBinder { chipbarCoordinator: ChipbarCoordinator, screenOffAnimationController: ScreenOffAnimationController, shadeInteractor: ShadeInteractor, - clockControllerProvider: Provider<ClockController>?, + clockInteractor: KeyguardClockInteractor, interactionJankMonitor: InteractionJankMonitor?, deviceEntryHapticsInteractor: DeviceEntryHapticsInteractor?, vibratorHelper: VibratorHelper?, @@ -281,14 +279,11 @@ object KeyguardRootViewBinder { viewModel.goneToAodTransition.collect { when (it.transitionState) { TransitionState.STARTED -> { - val clockId = - clockControllerProvider?.get()?.config?.id - ?: MISSING_CLOCK_ID + val clockId = clockInteractor.renderedClockId val builder = InteractionJankMonitor.Configuration.Builder .withView(CUJ_SCREEN_OFF_SHOW_AOD, view) .setTag(clockId) - jankMonitor.begin(builder) } TransitionState.CANCELED -> @@ -345,12 +340,6 @@ object KeyguardRootViewBinder { } } - if (!MigrateClocksToBlueprint.isEnabled) { - burnInParams.update { current -> - current.copy(clockControllerProvider = clockControllerProvider) - } - } - if (MigrateClocksToBlueprint.isEnabled) { burnInParams.update { current -> current.copy(translationY = { childViews[burnInLayerId]?.translationY }) diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/preview/KeyguardPreviewRenderer.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/preview/KeyguardPreviewRenderer.kt index 9195b4f4e7fc..39df4c3182a2 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/preview/KeyguardPreviewRenderer.kt +++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/preview/KeyguardPreviewRenderer.kt @@ -60,6 +60,7 @@ import com.android.systemui.dagger.qualifiers.Background import com.android.systemui.dagger.qualifiers.Main import com.android.systemui.keyguard.KeyguardBottomAreaRefactor import com.android.systemui.keyguard.MigrateClocksToBlueprint +import com.android.systemui.keyguard.domain.interactor.KeyguardClockInteractor import com.android.systemui.keyguard.ui.binder.KeyguardPreviewClockViewBinder import com.android.systemui.keyguard.ui.binder.KeyguardPreviewSmartspaceViewBinder import com.android.systemui.keyguard.ui.binder.KeyguardQuickAffordanceViewBinder @@ -140,6 +141,7 @@ constructor( private val secureSettings: SecureSettings, private val communalTutorialViewModel: CommunalTutorialIndicatorViewModel, private val defaultShortcutsSection: DefaultShortcutsSection, + private val keyguardClockInteractor: KeyguardClockInteractor, ) { val hostToken: IBinder? = bundle.getBinder(KEY_HOST_TOKEN) private val width: Int = bundle.getInt(KEY_VIEW_WIDTH) @@ -364,6 +366,7 @@ constructor( ), ) } + @OptIn(ExperimentalCoroutinesApi::class) private fun setupKeyguardRootView(previewContext: Context, rootView: FrameLayout) { val keyguardRootView = KeyguardRootView(previewContext, null) @@ -377,7 +380,7 @@ constructor( chipbarCoordinator, screenOffAnimationController, shadeInteractor, - null, // clock provider only needed for burn in + keyguardClockInteractor, null, // jank monitor not required for preview mode null, // device entry haptics not required preview mode null, // device entry haptics not required for preview mode diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/AodBurnInViewModel.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/AodBurnInViewModel.kt index 20549328838f..4ddd57110b38 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/AodBurnInViewModel.kt +++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/AodBurnInViewModel.kt @@ -33,10 +33,8 @@ import com.android.systemui.keyguard.shared.model.TransitionState import com.android.systemui.keyguard.shared.model.TransitionState.RUNNING import com.android.systemui.keyguard.shared.model.TransitionState.STARTED import com.android.systemui.keyguard.ui.StateToValue -import com.android.systemui.plugins.clocks.ClockController import com.android.systemui.res.R import javax.inject.Inject -import javax.inject.Provider import kotlin.math.max import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.flow.Flow @@ -128,12 +126,12 @@ constructor( yDimenResourceId = R.dimen.burn_in_prevention_offset_y ), ) { interpolated, burnIn -> + val useAltAod = + keyguardClockViewModel.currentClock.value?.let { clock -> + clock.config.useAlternateSmartspaceAODTransition + } == true val useScaleOnly = - (clockController(params.clockControllerProvider) - ?.get() - ?.config - ?.useAlternateSmartspaceAODTransition - ?: false) && keyguardClockViewModel.clockSize.value == KeyguardClockSwitch.LARGE + useAltAod && keyguardClockViewModel.clockSize.value == KeyguardClockSwitch.LARGE if (useScaleOnly) { BurnInModel( @@ -164,21 +162,10 @@ constructor( } } } - - private fun clockController( - provider: Provider<ClockController>?, - ): Provider<ClockController>? { - return if (MigrateClocksToBlueprint.isEnabled) { - Provider { keyguardClockViewModel.currentClock.value } - } else { - provider - } - } } /** UI-sourced parameters to pass into the various methods of [AodBurnInViewModel]. */ data class BurnInParameters( - val clockControllerProvider: Provider<ClockController>? = null, /** System insets that keyguard needs to stay out of */ val topInset: Int = 0, /** The min y-value of the visible elements on lockscreen */ diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarStateControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarStateControllerImpl.java index 8ea29dd63487..aa6bec1f06f8 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarStateControllerImpl.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarStateControllerImpl.java @@ -49,7 +49,6 @@ import com.android.systemui.deviceentry.domain.interactor.DeviceUnlockedInteract import com.android.systemui.deviceentry.shared.model.DeviceUnlockStatus; import com.android.systemui.keyguard.MigrateClocksToBlueprint; import com.android.systemui.keyguard.domain.interactor.KeyguardClockInteractor; -import com.android.systemui.plugins.clocks.ClockController; import com.android.systemui.plugins.statusbar.StatusBarStateController.StateListener; import com.android.systemui.res.R; import com.android.systemui.scene.domain.interactor.SceneInteractor; @@ -469,13 +468,7 @@ public class StatusBarStateControllerImpl implements /** Returns the id of the currently rendering clock */ public String getClockId() { if (MigrateClocksToBlueprint.isEnabled()) { - ClockController clock = mKeyguardClockInteractorLazy.get() - .getCurrentClock().getValue(); - if (clock == null) { - Log.e(TAG, "No clock is available"); - return KeyguardClockSwitch.MISSING_CLOCK_ID; - } - return clock.getConfig().getId(); + return mKeyguardClockInteractorLazy.get().getRenderedClockId(); } if (mClockSwitchView == null) { diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/KeyguardClockInteractorKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/KeyguardClockInteractorKosmos.kt index d791e949f853..12165cdc5658 100644 --- a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/KeyguardClockInteractorKosmos.kt +++ b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/KeyguardClockInteractorKosmos.kt @@ -20,4 +20,4 @@ import com.android.systemui.keyguard.data.repository.keyguardClockRepository import com.android.systemui.kosmos.Kosmos val Kosmos.keyguardClockInteractor by - Kosmos.Fixture { KeyguardClockInteractor(keyguardClockRepository = keyguardClockRepository) } + Kosmos.Fixture { KeyguardClockInteractor(keyguardClockRepository) } |