summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/AvalancheControllerTest.kt12
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/BaseHeadsUpManagerTest.java6
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/HeadsUpManagerPhoneTest.java6
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/AvalancheController.kt50
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()}")
+ }
}