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

Commit ef66d07b authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge changes I57116ece,I938a19a2 into udc-qpr-dev

* changes:
  Remove flag LARGE_SHADE_GRANULAR_ALPHA_INTERPOLATION - Part 2      This CL actually removes the flag.      Fixes: 272036292 Test: The flag has been enabled for some time
  Remove flag LARGE_SHADE_GRANULAR_ALPHA_INTERPOLATION - Part 1
parents b465dfa7 3f89a871
Loading
Loading
Loading
Loading
+0 −5
Original line number Diff line number Diff line
@@ -713,11 +713,6 @@ object Flags {
    val KEYBOARD_EDUCATION =
        unreleasedFlag(2603, "keyboard_education", teamfood = false)

    // TODO(b/272036292): Tracking Bug
    @JvmField
    val LARGE_SHADE_GRANULAR_ALPHA_INTERPOLATION =
            releasedFlag(2602, "large_shade_granular_alpha_interpolation")

    // TODO(b/277201412): Tracking Bug
    @JvmField
    val SPLIT_SHADE_SUBPIXEL_OPTIMIZATION =
+1 −3
Original line number Diff line number Diff line
@@ -52,7 +52,6 @@ import com.android.systemui.animation.ShadeInterpolation;
import com.android.systemui.compose.ComposeFacade;
import com.android.systemui.dump.DumpManager;
import com.android.systemui.flags.FeatureFlags;
import com.android.systemui.flags.Flags;
import com.android.systemui.media.controls.ui.MediaHost;
import com.android.systemui.plugins.qs.QS;
import com.android.systemui.plugins.qs.QSContainerController;
@@ -755,8 +754,7 @@ public class QSFragment extends LifecycleFragment implements QS, CommandQueue.Ca
            // Alpha progress should be linear on lockscreen shade expansion.
            return progress;
        }
        if (mIsSmallScreen || !mFeatureFlags.isEnabled(
                Flags.LARGE_SHADE_GRANULAR_ALPHA_INTERPOLATION)) {
        if (mIsSmallScreen) {
            return ShadeInterpolation.getContentAlpha(progress);
        } else {
            return mLargeScreenShadeInterpolator.getQsAlpha(progress);
+1 −3
Original line number Diff line number Diff line
@@ -2906,9 +2906,7 @@ public final class NotificationPanelViewController implements ShadeSurface, Dump
        float scrimMinFraction;
        if (mSplitShadeEnabled) {
            boolean highHun = mHeadsUpStartHeight * 2.5
                    >
                    (mFeatureFlags.isEnabled(Flags.LARGE_SHADE_GRANULAR_ALPHA_INTERPOLATION)
                    ? mSplitShadeFullTransitionDistance : mSplitShadeScrimTransitionDistance);
                    > mSplitShadeFullTransitionDistance;
            // if HUN height is higher than 40% of predefined transition distance, it means HUN
            // is too high for regular transition. In that case we need to calculate transition
            // distance - here we take scrim transition distance as equal to shade transition
+9 −61
Original line number Diff line number Diff line
@@ -16,24 +16,11 @@

package com.android.systemui.shade.transition

import android.content.res.Configuration
import android.content.res.Resources
import android.util.MathUtils.constrain
import com.android.systemui.R
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Main
import com.android.systemui.dump.DumpManager
import com.android.systemui.flags.FeatureFlags
import com.android.systemui.flags.Flags
import com.android.systemui.shade.PanelState
import com.android.systemui.shade.STATE_OPENING
import com.android.systemui.shade.ShadeExpansionChangeEvent
import com.android.systemui.statusbar.StatusBarState
import com.android.systemui.statusbar.SysuiStatusBarStateController
import com.android.systemui.statusbar.phone.ScrimController
import com.android.systemui.statusbar.policy.ConfigurationController
import com.android.systemui.statusbar.policy.HeadsUpManager
import com.android.systemui.util.LargeScreenUtils
import java.io.PrintWriter
import javax.inject.Inject

@@ -42,37 +29,19 @@ import javax.inject.Inject
class ScrimShadeTransitionController
@Inject
constructor(
    configurationController: ConfigurationController,
    dumpManager: DumpManager,
    private val scrimController: ScrimController,
    @Main private val resources: Resources,
    private val statusBarStateController: SysuiStatusBarStateController,
    private val headsUpManager: HeadsUpManager,
    private val featureFlags: FeatureFlags,
) {

    private var inSplitShade = false
    private var splitShadeScrimTransitionDistance = 0
    private var lastExpansionFraction: Float? = null
    private var lastExpansionEvent: ShadeExpansionChangeEvent? = null
    private var currentPanelState: Int? = null

    init {
        updateResources()
        configurationController.addCallback(
            object : ConfigurationController.ConfigurationListener {
                override fun onConfigChanged(newConfig: Configuration?) {
                    updateResources()
                }
            })
        dumpManager.registerDumpable(
            ScrimShadeTransitionController::class.java.simpleName, this::dump)
    }

    private fun updateResources() {
        inSplitShade = LargeScreenUtils.shouldUseSplitNotificationShade(resources)
        splitShadeScrimTransitionDistance =
            resources.getDimensionPixelSize(R.dimen.split_shade_scrim_transition_distance)
            ScrimShadeTransitionController::class.java.simpleName,
            this::dump
        )
    }

    fun onPanelStateChanged(@PanelState state: Int) {
@@ -87,46 +56,25 @@ constructor(

    private fun onStateChanged() {
        val expansionEvent = lastExpansionEvent ?: return
        val panelState = currentPanelState
        val expansionFraction = calculateScrimExpansionFraction(expansionEvent, panelState)
        val expansionFraction = calculateScrimExpansionFraction(expansionEvent)
        scrimController.setRawPanelExpansionFraction(expansionFraction)
        lastExpansionFraction = expansionFraction
    }

    private fun calculateScrimExpansionFraction(
        expansionEvent: ShadeExpansionChangeEvent,
        @PanelState panelState: Int?
    ): Float {
        return if (canUseCustomFraction(panelState)) {
            constrain(expansionEvent.dragDownPxAmount / splitShadeScrimTransitionDistance, 0f, 1f)
        } else {
            expansionEvent.fraction
        }
    private fun calculateScrimExpansionFraction(expansionEvent: ShadeExpansionChangeEvent): Float {
        return expansionEvent.fraction
    }

    private fun canUseCustomFraction(panelState: Int?) =
        inSplitShade && isScreenUnlocked() && panelState == STATE_OPENING &&
                // in case of HUN we can't always use predefined distances to manage scrim
                // transition because dragDownPxAmount can start from value bigger than
                // splitShadeScrimTransitionDistance
                !headsUpManager.isTrackingHeadsUp &&
                !featureFlags.isEnabled(Flags.LARGE_SHADE_GRANULAR_ALPHA_INTERPOLATION)

    private fun isScreenUnlocked() =
        statusBarStateController.currentOrUpcomingState == StatusBarState.SHADE

    private fun dump(printWriter: PrintWriter, args: Array<String>) {
        printWriter.println(
            """
                ScrimShadeTransitionController:
                  Resources:
                    inSplitShade: $inSplitShade
                    isScreenUnlocked: ${isScreenUnlocked()}
                    splitShadeScrimTransitionDistance: $splitShadeScrimTransitionDistance
                  State:
                    currentPanelState: $currentPanelState
                    lastExpansionFraction: $lastExpansionFraction
                    lastExpansionEvent: $lastExpansionEvent
            """.trimIndent())
            """
                .trimIndent()
        )
    }
}
+1 −5
Original line number Diff line number Diff line
@@ -40,8 +40,6 @@ import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.policy.SystemBarUtils;
import com.android.systemui.R;
import com.android.systemui.animation.ShadeInterpolation;
import com.android.systemui.flags.FeatureFlags;
import com.android.systemui.flags.Flags;
import com.android.systemui.plugins.statusbar.StatusBarStateController.StateListener;
import com.android.systemui.shade.transition.LargeScreenShadeInterpolator;
import com.android.systemui.statusbar.notification.NotificationUtils;
@@ -226,9 +224,7 @@ public class NotificationShelf extends ActivatableNotificationView implements St
                if (ambientState.isBouncerInTransit()) {
                    viewState.setAlpha(aboutToShowBouncerProgress(expansion));
                } else {
                    FeatureFlags flags = ambientState.getFeatureFlags();
                    if (ambientState.isSmallScreen() || !flags.isEnabled(
                            Flags.LARGE_SHADE_GRANULAR_ALPHA_INTERPOLATION)) {
                    if (ambientState.isSmallScreen()) {
                        viewState.setAlpha(ShadeInterpolation.getContentAlpha(expansion));
                    } else {
                        LargeScreenShadeInterpolator interpolator =
Loading