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

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

Merge "Move logDroppedHuns to background" into main

parents c2ce120f 7afcba06
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@
package com.android.systemui.statusbar.policy

import android.app.Notification
import android.os.Handler
import android.platform.test.annotations.EnableFlags
import android.testing.TestableLooper.RunWithLooper
import androidx.test.ext.junit.runners.AndroidJUnit4
@@ -59,6 +60,9 @@ class AvalancheControllerTest : SysuiTestCase() {
    // For creating TestableHeadsUpManager
    @Mock private val mAccessibilityMgr: AccessibilityManagerWrapper? = null
    private val mUiEventLoggerFake = UiEventLoggerFake()

    @Mock private lateinit var mBgHandler: Handler

    private val mLogger = Mockito.spy(HeadsUpManagerLogger(logcatLogBuffer()))
    private val mGlobalSettings = FakeGlobalSettings()
    private val mSystemClock = FakeSystemClock()
@@ -78,7 +82,7 @@ class AvalancheControllerTest : SysuiTestCase() {

        // Initialize AvalancheController and TestableHeadsUpManager during setUp instead of
        // declaration, where mocks are null
        mAvalancheController = AvalancheController(dumpManager, mUiEventLoggerFake)
        mAvalancheController = AvalancheController(dumpManager, mUiEventLoggerFake, mBgHandler)

        testableHeadsUpManager =
            TestableHeadsUpManager(
+3 −2
Original line number Diff line number Diff line
@@ -38,6 +38,7 @@ import static org.mockito.Mockito.when;
import android.app.Notification;
import android.app.PendingIntent;
import android.app.Person;
import android.os.Handler;
import android.platform.test.annotations.DisableFlags;
import android.platform.test.annotations.EnableFlags;
import android.platform.test.flag.junit.FlagsParameterization;
@@ -81,7 +82,7 @@ public class BaseHeadsUpManagerTest extends SysuiTestCase {

    private UiEventLoggerFake mUiEventLoggerFake = new UiEventLoggerFake();
    private final HeadsUpManagerLogger mLogger = spy(new HeadsUpManagerLogger(logcatLogBuffer()));

    @Mock private Handler mBgHandler;
    @Mock private DumpManager dumpManager;
    private AvalancheController mAvalancheController;

@@ -148,7 +149,7 @@ public class BaseHeadsUpManagerTest extends SysuiTestCase {
    @Override
    public void SysuiSetup() throws Exception {
        super.SysuiSetup();
        mAvalancheController = new AvalancheController(dumpManager, mUiEventLoggerFake);
        mAvalancheController = new AvalancheController(dumpManager, mUiEventLoggerFake, mBgHandler);
    }

    @Test
+4 −7
Original line number Diff line number Diff line
@@ -104,8 +104,7 @@ public class HeadsUpManagerPhoneTest extends BaseHeadsUpManagerTest {
                UiEventLogger uiEventLogger,
                JavaAdapter javaAdapter,
                ShadeInteractor shadeInteractor,
                AvalancheController avalancheController,
                Handler bgHandler
                AvalancheController avalancheController
        ) {
            super(
                    context,
@@ -123,8 +122,7 @@ public class HeadsUpManagerPhoneTest extends BaseHeadsUpManagerTest {
                    uiEventLogger,
                    javaAdapter,
                    shadeInteractor,
                    avalancheController,
                    bgHandler
                    avalancheController
            );
            mMinimumDisplayTime = TEST_MINIMUM_DISPLAY_TIME;
            mAutoDismissTime = TEST_AUTO_DISMISS_TIME;
@@ -147,8 +145,7 @@ public class HeadsUpManagerPhoneTest extends BaseHeadsUpManagerTest {
                mUiEventLogger,
                mJavaAdapter,
                mShadeInteractor,
                mAvalancheController,
                mBgHandler
                mAvalancheController
        );
    }

@@ -173,7 +170,7 @@ public class HeadsUpManagerPhoneTest extends BaseHeadsUpManagerTest {
        mContext.getOrCreateTestableResources().addOverride(
                R.integer.ambient_notification_extension_time, 500);

        mAvalancheController = new AvalancheController(dumpManager, mUiEventLogger);
        mAvalancheController = new AvalancheController(dumpManager, mUiEventLogger, mBgHandler);
    }

    @Test
+3 −9
Original line number Diff line number Diff line
@@ -107,7 +107,6 @@ public class HeadsUpManagerPhone extends BaseHeadsUpManager implements
    private int mStatusBarState;
    private AnimationStateHandler mAnimationStateHandler;

    private Handler mBgHandler;
    private int mHeadsUpInset;

    // Used for determining the region for touch interaction
@@ -152,8 +151,7 @@ public class HeadsUpManagerPhone extends BaseHeadsUpManager implements
            UiEventLogger uiEventLogger,
            JavaAdapter javaAdapter,
            ShadeInteractor shadeInteractor,
            AvalancheController avalancheController,
            @Background Handler bgHandler) {
            AvalancheController avalancheController) {
        super(context, logger, handler, globalSettings, systemClock, executor,
                accessibilityManagerWrapper, uiEventLogger, avalancheController);
        Resources resources = mContext.getResources();
@@ -163,7 +161,6 @@ public class HeadsUpManagerPhone extends BaseHeadsUpManager implements
        mGroupMembershipManager = groupMembershipManager;
        mVisualStabilityProvider = visualStabilityProvider;
        mAvalancheController = avalancheController;
        mBgHandler = bgHandler;
        updateResources();
        configurationController.addCallback(new ConfigurationController.ConfigurationListener() {
            @Override
@@ -405,11 +402,8 @@ 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.
            int waitingKeysSize = mAvalancheController.getWaitingKeys().size();
            mBgHandler.post(() -> {
                // Do this in the background to avoid missing frames when closing the shade
                mAvalancheController.logDroppedHuns(waitingKeysSize);
            });
            final int numDropped = mAvalancheController.getWaitingKeys().size();
            mAvalancheController.logDroppedHunsInBackground(numDropped);
            mAvalancheController.clearNext();

            // In open shade the first HUN is pinned, and visual stability logic prevents us from
+14 −6
Original line number Diff line number Diff line
@@ -15,12 +15,14 @@
 */
package com.android.systemui.statusbar.policy

import android.os.Handler
import android.util.Log
import androidx.annotation.VisibleForTesting
import com.android.internal.logging.UiEvent
import com.android.internal.logging.UiEventLogger
import com.android.systemui.Dumpable
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Background
import com.android.systemui.dump.DumpManager
import com.android.systemui.statusbar.notification.shared.NotificationThrottleHun
import com.android.systemui.statusbar.policy.BaseHeadsUpManager.HeadsUpEntry
@@ -35,7 +37,10 @@ import javax.inject.Inject
@SysUISingleton
class AvalancheController
@Inject
constructor(dumpManager: DumpManager, private val uiEventLogger: UiEventLogger) : Dumpable {
constructor(dumpManager: DumpManager,
            private val uiEventLogger: UiEventLogger,
            @Background private val bgHandler: Handler
) : Dumpable {

    private val tag = "AvalancheController"
    private val debug = Compile.IS_DEBUG && Log.isLoggable(tag, Log.DEBUG)
@@ -315,7 +320,7 @@ constructor(dumpManager: DumpManager, private val uiEventLogger: UiEventLogger)

        // Remove runnable labels for dropped huns
        val listToDrop = nextList.subList(1, nextList.size)
        logDroppedHuns(listToDrop.size)
        logDroppedHunsInBackground(listToDrop.size)

        if (debug) {
            // Clear runnable labels
@@ -332,10 +337,13 @@ constructor(dumpManager: DumpManager, private val uiEventLogger: UiEventLogger)
        showNow(headsUpEntryShowing!!, headsUpEntryShowingRunnableList)
    }

    fun logDroppedHuns(numDropped: Int) {
    fun logDroppedHunsInBackground(numDropped: Int) {
        bgHandler.post(Runnable {
            // Do this in the background to avoid missing frames when closing the shade
            for (n in 1..numDropped) {
                uiEventLogger.log(ThrottleEvent.AVALANCHE_THROTTLING_HUN_DROPPED)
            }
        })
    }

    fun clearNext() {