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

Commit fbeeb934 authored by Lyn Han's avatar Lyn Han Committed by Android (Google) Code Review
Browse files

Merge "Fix missing frames during shade close" into main

parents eaee57ec 527051b2
Loading
Loading
Loading
Loading
+9 −3
Original line number Diff line number Diff line
@@ -26,6 +26,7 @@ import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.Mockito.when;

import android.content.Context;
import android.os.Handler;
import android.platform.test.flag.junit.FlagsParameterization;
import android.testing.TestableLooper;

@@ -85,6 +86,8 @@ public class HeadsUpManagerPhoneTest extends BaseHeadsUpManagerTest {
    @Mock private DumpManager dumpManager;
    private AvalancheController mAvalancheController;

    @Mock private Handler mBgHandler;

    private static final class TestableHeadsUpManagerPhone extends HeadsUpManagerPhone {
        TestableHeadsUpManagerPhone(
                Context context,
@@ -101,7 +104,8 @@ public class HeadsUpManagerPhoneTest extends BaseHeadsUpManagerTest {
                UiEventLogger uiEventLogger,
                JavaAdapter javaAdapter,
                ShadeInteractor shadeInteractor,
                AvalancheController avalancheController
                AvalancheController avalancheController,
                Handler bgHandler
        ) {
            super(
                    context,
@@ -119,7 +123,8 @@ public class HeadsUpManagerPhoneTest extends BaseHeadsUpManagerTest {
                    uiEventLogger,
                    javaAdapter,
                    shadeInteractor,
                    avalancheController
                    avalancheController,
                    bgHandler
            );
            mMinimumDisplayTime = TEST_MINIMUM_DISPLAY_TIME;
            mAutoDismissTime = TEST_AUTO_DISMISS_TIME;
@@ -142,7 +147,8 @@ public class HeadsUpManagerPhoneTest extends BaseHeadsUpManagerTest {
                mUiEventLogger,
                mJavaAdapter,
                mShadeInteractor,
                mAvalancheController
                mAvalancheController,
                mBgHandler
        );
    }

+11 −3
Original line number Diff line number Diff line
@@ -31,6 +31,7 @@ import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.logging.UiEventLogger;
import com.android.internal.policy.SystemBarUtils;
import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dagger.qualifiers.Background;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.plugins.statusbar.StatusBarStateController.StateListener;
@@ -105,6 +106,8 @@ public class HeadsUpManagerPhone extends BaseHeadsUpManager implements
    private boolean mIsExpanded;
    private int mStatusBarState;
    private AnimationStateHandler mAnimationStateHandler;

    private Handler mBgHandler;
    private int mHeadsUpInset;

    // Used for determining the region for touch interaction
@@ -149,7 +152,8 @@ public class HeadsUpManagerPhone extends BaseHeadsUpManager implements
            UiEventLogger uiEventLogger,
            JavaAdapter javaAdapter,
            ShadeInteractor shadeInteractor,
            AvalancheController avalancheController) {
            AvalancheController avalancheController,
            @Background Handler bgHandler) {
        super(context, logger, handler, globalSettings, systemClock, executor,
                accessibilityManagerWrapper, uiEventLogger, avalancheController);
        Resources resources = mContext.getResources();
@@ -159,7 +163,7 @@ public class HeadsUpManagerPhone extends BaseHeadsUpManager implements
        mGroupMembershipManager = groupMembershipManager;
        mVisualStabilityProvider = visualStabilityProvider;
        mAvalancheController = avalancheController;

        mBgHandler = bgHandler;
        updateResources();
        configurationController.addCallback(new ConfigurationController.ConfigurationListener() {
            @Override
@@ -401,7 +405,11 @@ public class HeadsUpManagerPhone extends BaseHeadsUpManager implements
            // Waiting HUNs in AvalancheController are still promoted to the HUN section and thus
            // seen in open shade; clear them so we don't show them again when the shade closes and
            // reordering is allowed again.
            mAvalancheController.logDroppedHuns(mAvalancheController.getWaitingKeys().size());
            int waitingKeysSize = mAvalancheController.getWaitingKeys().size();
            mBgHandler.post(() -> {
                // Do this in the background to avoid missing frames when closing the shade
                mAvalancheController.logDroppedHuns(waitingKeysSize);
            });
            mAvalancheController.clearNext();

            // In open shade the first HUN is pinned, and visual stability logic prevents us from