diff options
4 files changed, 50 insertions, 24 deletions
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/AvalancheControllerTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/AvalancheControllerTest.kt index 30564bb6eb84..29f286fd31fa 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/AvalancheControllerTest.kt +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/AvalancheControllerTest.kt @@ -22,6 +22,7 @@ import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest import com.android.internal.logging.testing.UiEventLoggerFake import com.android.systemui.SysuiTestCase +import com.android.systemui.dump.DumpManager import com.android.systemui.log.logcatLogBuffer import com.android.systemui.statusbar.notification.collection.NotificationEntryBuilder import com.android.systemui.statusbar.notification.shared.NotificationThrottleHun @@ -47,12 +48,14 @@ import org.mockito.junit.MockitoRule @EnableFlags(NotificationThrottleHun.FLAG_NAME) class AvalancheControllerTest : SysuiTestCase() { - private val mAvalancheController = AvalancheController() - // For creating mocks @get:Rule var rule: MockitoRule = MockitoJUnit.rule() @Mock private val runnableMock: Runnable? = null + // For creating AvalancheController + @Mock private lateinit var dumpManager: DumpManager + private lateinit var mAvalancheController: AvalancheController + // For creating TestableHeadsUpManager @Mock private val mAccessibilityMgr: AccessibilityManagerWrapper? = null private val mUiEventLoggerFake = UiEventLoggerFake() @@ -73,7 +76,10 @@ class AvalancheControllerTest : SysuiTestCase() { ) .then { i: InvocationOnMock -> i.getArgument(0) } - // Initialize TestableHeadsUpManager here instead of at declaration, when mocks will be null + // Initialize AvalancheController and TestableHeadsUpManager during setUp instead of + // declaration, where mocks are null + mAvalancheController = AvalancheController(dumpManager) + testableHeadsUpManager = TestableHeadsUpManager( mContext, diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/BaseHeadsUpManagerTest.java b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/BaseHeadsUpManagerTest.java index 3dc449514699..7c130be7849e 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/BaseHeadsUpManagerTest.java +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/BaseHeadsUpManagerTest.java @@ -45,6 +45,7 @@ import androidx.test.filters.SmallTest; import com.android.internal.logging.testing.UiEventLoggerFake; import com.android.systemui.SysuiTestCase; +import com.android.systemui.dump.DumpManager; import com.android.systemui.res.R; import com.android.systemui.statusbar.notification.collection.NotificationEntry; import com.android.systemui.statusbar.notification.collection.NotificationEntryBuilder; @@ -73,7 +74,9 @@ public class BaseHeadsUpManagerTest extends SysuiTestCase { private UiEventLoggerFake mUiEventLoggerFake = new UiEventLoggerFake(); private final HeadsUpManagerLogger mLogger = spy(new HeadsUpManagerLogger(logcatLogBuffer())); - private AvalancheController mAvalancheController = new AvalancheController(); + + @Mock private DumpManager dumpManager; + private AvalancheController mAvalancheController; @Mock private AccessibilityManagerWrapper mAccessibilityMgr; @@ -130,6 +133,7 @@ public class BaseHeadsUpManagerTest extends SysuiTestCase { public void SysuiSetup() throws Exception { super.SysuiSetup(); mSetFlagsRule.disableFlags(NotificationThrottleHun.FLAG_NAME); + mAvalancheController = new AvalancheController(dumpManager); } @Test diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/HeadsUpManagerPhoneTest.java b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/HeadsUpManagerPhoneTest.java index 61a79d897b0b..a8a75c052000 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/HeadsUpManagerPhoneTest.java +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/HeadsUpManagerPhoneTest.java @@ -32,6 +32,7 @@ import androidx.test.ext.junit.runners.AndroidJUnit4; import androidx.test.filters.SmallTest; import com.android.internal.logging.UiEventLogger; +import com.android.systemui.dump.DumpManager; import com.android.systemui.plugins.statusbar.StatusBarStateController; import com.android.systemui.res.R; import com.android.systemui.shade.domain.interactor.ShadeInteractor; @@ -76,7 +77,8 @@ public class HeadsUpManagerPhoneTest extends BaseHeadsUpManagerTest { @Mock private UiEventLogger mUiEventLogger; @Mock private JavaAdapter mJavaAdapter; @Mock private ShadeInteractor mShadeInteractor; - private AvalancheController mAvalancheController = new AvalancheController(); + @Mock private DumpManager dumpManager; + private AvalancheController mAvalancheController; private static final class TestableHeadsUpManagerPhone extends HeadsUpManagerPhone { TestableHeadsUpManagerPhone( @@ -154,6 +156,8 @@ public class HeadsUpManagerPhoneTest extends BaseHeadsUpManagerTest { mDependency.injectMockDependency(NotificationShadeWindowController.class); mContext.getOrCreateTestableResources().addOverride( R.integer.ambient_notification_extension_time, 500); + + mAvalancheController = new AvalancheController(dumpManager); } @Test diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/AvalancheController.kt b/packages/SystemUI/src/com/android/systemui/statusbar/policy/AvalancheController.kt index 55a0f59bf461..9cdecef3f6e8 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/AvalancheController.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/AvalancheController.kt @@ -17,9 +17,12 @@ package com.android.systemui.statusbar.policy import android.util.Log import androidx.annotation.VisibleForTesting +import com.android.systemui.Dumpable import com.android.systemui.dagger.SysUISingleton +import com.android.systemui.dump.DumpManager import com.android.systemui.statusbar.notification.shared.NotificationThrottleHun import com.android.systemui.statusbar.policy.BaseHeadsUpManager.HeadsUpEntry +import java.io.PrintWriter import javax.inject.Inject /* @@ -27,7 +30,9 @@ import javax.inject.Inject * succession, by delaying visual listener side effects and removal handling from BaseHeadsUpManager */ @SysUISingleton -class AvalancheController @Inject constructor() { +class AvalancheController @Inject constructor( + dumpManager: DumpManager, +) : Dumpable { private val tag = "AvalancheController" private val debug = false @@ -54,22 +59,26 @@ class AvalancheController @Inject constructor() { // For debugging only @VisibleForTesting var debugDropSet: MutableSet<HeadsUpEntry> = HashSet() - /** - * Run or delay Runnable for given HeadsUpEntry - */ - fun update(entry: HeadsUpEntry, runnable: Runnable, label: String) { + init { + dumpManager.registerNormalDumpable(tag, /* module */ this) + } + + /** Run or delay Runnable for given HeadsUpEntry */ + fun update(entry: HeadsUpEntry?, runnable: Runnable, label: String) { if (!NotificationThrottleHun.isEnabled) { runnable.run() return } val fn = "[$label] => AvalancheController.update ${getKey(entry)}" - + if (entry == null) { + log { "Entry is NULL, stop update." } + return; + } if (debug) { debugRunnableLabelMap[runnable] = label } - if (isShowing(entry)) { - log {"$fn => [update showing]" } + log { "$fn => [update showing]" } runnable.run() } else if (entry in nextMap) { log { "$fn => [update next]" } @@ -164,9 +173,7 @@ class AvalancheController @Inject constructor() { } } - /** - * Return true if entry is waiting to show. - */ + /** Return true if entry is waiting to show. */ fun isWaiting(key: String): Boolean { if (!NotificationThrottleHun.isEnabled) { return false @@ -179,9 +186,7 @@ class AvalancheController @Inject constructor() { return false } - /** - * Return list of keys for huns waiting - */ + /** Return list of keys for huns waiting */ fun getWaitingKeys(): MutableList<String> { if (!NotificationThrottleHun.isEnabled) { return mutableListOf() @@ -254,12 +259,15 @@ class AvalancheController @Inject constructor() { } } - // TODO(b/315362456) expose as dumpable for bugreports + private fun getStateStr(): String { + return "SHOWING: ${getKey(headsUpEntryShowing)}" + + "\tNEXT LIST: $nextListStr\tMAP: $nextMapStr" + + "\tDROP: $dropSetStr" + } + private fun logState(reason: String) { - log { "state $reason" } - log { "showing: " + getKey(headsUpEntryShowing) } - log { "next list: $nextListStr map: $nextMapStr" } - log { "drop: $dropSetStr" } + log { "REASON $reason" } + log { getStateStr() } } private val dropSetStr: String @@ -298,4 +306,8 @@ class AvalancheController @Inject constructor() { } return entry.mEntry!!.key } + + override fun dump(pw: PrintWriter, args: Array<out String>) { + pw.println("AvalancheController: ${getStateStr()}") + } } |