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

Commit 527051b2 authored by Lyn's avatar Lyn Committed by Lyn Han
Browse files

Fix missing frames during shade close

Log dropped HUNs in the background

Fixes: 348114676
Test: treehugger
Flag: com.android.systemui.notification_avalanche_throttle_hun
Change-Id: Ifc748e7c168e3b61a3934fc17636b4178b73e724
parent 5b40ba28
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