Loading packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/AvalancheControllerTest.kt +5 −1 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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() Loading @@ -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( Loading packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/BaseHeadsUpManagerTest.java +3 −2 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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; Loading Loading @@ -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 Loading packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/HeadsUpManagerPhoneTest.java +4 −7 Original line number Diff line number Diff line Loading @@ -104,8 +104,7 @@ public class HeadsUpManagerPhoneTest extends BaseHeadsUpManagerTest { UiEventLogger uiEventLogger, JavaAdapter javaAdapter, ShadeInteractor shadeInteractor, AvalancheController avalancheController, Handler bgHandler AvalancheController avalancheController ) { super( context, Loading @@ -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; Loading @@ -147,8 +145,7 @@ public class HeadsUpManagerPhoneTest extends BaseHeadsUpManagerTest { mUiEventLogger, mJavaAdapter, mShadeInteractor, mAvalancheController, mBgHandler mAvalancheController ); } Loading @@ -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 Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/HeadsUpManagerPhone.java +3 −9 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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(); Loading @@ -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 Loading Loading @@ -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 Loading packages/SystemUI/src/com/android/systemui/statusbar/policy/AvalancheController.kt +14 −6 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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) Loading Loading @@ -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 Loading @@ -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() { Loading Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/AvalancheControllerTest.kt +5 −1 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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() Loading @@ -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( Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/BaseHeadsUpManagerTest.java +3 −2 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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; Loading Loading @@ -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 Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/HeadsUpManagerPhoneTest.java +4 −7 Original line number Diff line number Diff line Loading @@ -104,8 +104,7 @@ public class HeadsUpManagerPhoneTest extends BaseHeadsUpManagerTest { UiEventLogger uiEventLogger, JavaAdapter javaAdapter, ShadeInteractor shadeInteractor, AvalancheController avalancheController, Handler bgHandler AvalancheController avalancheController ) { super( context, Loading @@ -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; Loading @@ -147,8 +145,7 @@ public class HeadsUpManagerPhoneTest extends BaseHeadsUpManagerTest { mUiEventLogger, mJavaAdapter, mShadeInteractor, mAvalancheController, mBgHandler mAvalancheController ); } Loading @@ -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 Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/HeadsUpManagerPhone.java +3 −9 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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(); Loading @@ -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 Loading Loading @@ -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 Loading
packages/SystemUI/src/com/android/systemui/statusbar/policy/AvalancheController.kt +14 −6 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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) Loading Loading @@ -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 Loading @@ -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() { Loading