Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c0effb99 authored by Evan Laird's avatar Evan Laird
Browse files

[sb] StatusBarVisibilityChangeListener is now optional

This allows us to skip launching a few collect jobs which gets rid of
some unnecessary coroutine jobs.

Test: all sysui tets; manual
Bug: 393610814
Flag: EXEMPT threading bugfix
Change-Id: I91a033c1b13bd39d300f88314d28b0be9dc60fd2
parent ab899bab
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -35,7 +35,7 @@ class FakeHomeStatusBarViewBinder : HomeStatusBarViewBinder {
        viewModel: HomeStatusBarViewModel,
        systemEventChipAnimateIn: ((View) -> Unit)?,
        systemEventChipAnimateOut: ((View) -> Unit)?,
        listener: StatusBarVisibilityChangeListener,
        listener: StatusBarVisibilityChangeListener?,
    ) {
        this.listener = listener
    }
+20 −14
Original line number Diff line number Diff line
@@ -67,7 +67,7 @@ interface HomeStatusBarViewBinder {
        viewModel: HomeStatusBarViewModel,
        systemEventChipAnimateIn: ((View) -> Unit)?,
        systemEventChipAnimateOut: ((View) -> Unit)?,
        listener: StatusBarVisibilityChangeListener,
        listener: StatusBarVisibilityChangeListener?,
    )
}

@@ -83,7 +83,7 @@ constructor(
        viewModel: HomeStatusBarViewModel,
        systemEventChipAnimateIn: ((View) -> Unit)?,
        systemEventChipAnimateOut: ((View) -> Unit)?,
        listener: StatusBarVisibilityChangeListener,
        listener: StatusBarVisibilityChangeListener?,
    ) {
        view.repeatWhenAttached {
            repeatOnLifecycle(Lifecycle.State.CREATED) {
@@ -95,17 +95,21 @@ constructor(
                    } else {
                        null
                    }
                listener?.let { listener ->
                    launch {
                        viewModel.isTransitioningFromLockscreenToOccluded.collect {
                            listener.onStatusBarVisibilityMaybeChanged()
                        }
                    }
                }

                listener?.let { listener ->
                    launch {
                        viewModel.transitionFromLockscreenToDreamStartedEvent.collect {
                            listener.onTransitionFromLockscreenToDreamStarted()
                        }
                    }
                }

                if (NotificationsLiveDataStoreRefactor.isEnabled) {
                    val lightsOutView: View = view.requireViewById(R.id.notification_lights_out)
@@ -155,14 +159,14 @@ constructor(
                            } else {
                                when (primaryChipModel) {
                                    is OngoingActivityChipModel.Shown ->
                                        listener.onOngoingActivityStatusChanged(
                                        listener?.onOngoingActivityStatusChanged(
                                            hasPrimaryOngoingActivity = true,
                                            hasSecondaryOngoingActivity = false,
                                            shouldAnimate = true,
                                        )

                                    is OngoingActivityChipModel.Hidden ->
                                        listener.onOngoingActivityStatusChanged(
                                        listener?.onOngoingActivityStatusChanged(
                                            hasPrimaryOngoingActivity = false,
                                            hasSecondaryOngoingActivity = false,
                                            shouldAnimate = primaryChipModel.shouldAnimate,
@@ -205,7 +209,7 @@ constructor(
                                    chips.secondary.toVisibilityModel()
                                )
                            } else {
                                listener.onOngoingActivityStatusChanged(
                                listener?.onOngoingActivityStatusChanged(
                                    hasPrimaryOngoingActivity =
                                        chips.primary is OngoingActivityChipModel.Shown,
                                    hasSecondaryOngoingActivity =
@@ -231,12 +235,14 @@ constructor(
                }

                if (SceneContainerFlag.isEnabled) {
                    listener?.let { listener ->
                        launch {
                            viewModel.isHomeStatusBarAllowedByScene.collect {
                                listener.onIsHomeStatusBarAllowedBySceneChanged(it)
                            }
                        }
                    }
                }

                if (StatusBarRootModernization.isEnabled) {
                    val operatorNameView = view.requireViewById<View>(R.id.operator_name_frame)
+1 −21
Original line number Diff line number Diff line
@@ -56,7 +56,6 @@ import com.android.systemui.statusbar.phone.ui.DarkIconManager
import com.android.systemui.statusbar.phone.ui.StatusBarIconController
import com.android.systemui.statusbar.pipeline.shared.ui.binder.HomeStatusBarIconBlockListBinder
import com.android.systemui.statusbar.pipeline.shared.ui.binder.HomeStatusBarViewBinder
import com.android.systemui.statusbar.pipeline.shared.ui.binder.StatusBarVisibilityChangeListener
import com.android.systemui.statusbar.pipeline.shared.ui.model.VisibilityModel
import com.android.systemui.statusbar.pipeline.shared.ui.viewmodel.HomeStatusBarViewModel
import com.android.systemui.statusbar.pipeline.shared.ui.viewmodel.HomeStatusBarViewModel.HomeStatusBarViewModelFactory
@@ -124,25 +123,6 @@ fun StatusBarRoot(
    eventAnimationInteractor: SystemStatusEventAnimationInteractor,
    onViewCreated: (ViewGroup) -> Unit,
) {
    // None of these methods are used when [StatusBarRootModernization] is on.
    // This can be deleted once the fragment is gone
    val nopVisibilityChangeListener =
        object : StatusBarVisibilityChangeListener {
            override fun onStatusBarVisibilityMaybeChanged() {}

            override fun onTransitionFromLockscreenToDreamStarted() {}

            override fun onOngoingActivityStatusChanged(
                hasPrimaryOngoingActivity: Boolean,
                hasSecondaryOngoingActivity: Boolean,
                shouldAnimate: Boolean,
            ) {}

            override fun onIsHomeStatusBarAllowedBySceneChanged(
                isHomeStatusBarAllowedByScene: Boolean
            ) {}
        }

    Box(Modifier.fillMaxSize()) {
        // TODO(b/364360986): remove this before rolling the flag forward
        if (StatusBarRootModernization.SHOW_DISAMBIGUATION) {
@@ -282,7 +262,7 @@ fun StatusBarRoot(
                            statusBarViewModel,
                            eventAnimationInteractor::animateStatusBarContentForChipEnter,
                            eventAnimationInteractor::animateStatusBarContentForChipExit,
                            nopVisibilityChangeListener,
                            listener = null,
                        )
                    }
                    onViewCreated(phoneStatusBarView)