summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/model/SysUIStateDispatcherTest.kt4
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/model/SysUiStateExtTest.kt4
-rw-r--r--packages/SystemUI/src/com/android/systemui/model/SysUIStateChange.kt3
-rw-r--r--packages/SystemUI/src/com/android/systemui/model/SysUiState.kt31
4 files changed, 17 insertions, 25 deletions
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/model/SysUIStateDispatcherTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/model/SysUIStateDispatcherTest.kt
index b82f5fce9e14..ff2e13b51e14 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/model/SysUIStateDispatcherTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/model/SysUIStateDispatcherTest.kt
@@ -81,7 +81,7 @@ class SysUIStateDispatcherTest : SysuiTestCase() {
private companion object {
const val DISPLAY_1 = 1
const val DISPLAY_2 = 2
- const val FLAG_1 = 10L
- const val FLAG_2 = 20L
+ const val FLAG_1 = 1L
+ const val FLAG_2 = 2L
}
}
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/model/SysUiStateExtTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/model/SysUiStateExtTest.kt
index 09588f9f3751..d1b552906fbb 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/model/SysUiStateExtTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/model/SysUiStateExtTest.kt
@@ -35,10 +35,10 @@ class SysUiStateExtTest : SysuiTestCase() {
@Test
fun updateFlags() {
- underTest.updateFlags(Display.DEFAULT_DISPLAY, 1L to true, 2L to false, 3L to true)
+ underTest.updateFlags(Display.DEFAULT_DISPLAY, 1L to true, 2L to false, 4L to true)
assertThat(underTest.flags and 1L).isNotEqualTo(0L)
assertThat(underTest.flags and 2L).isEqualTo(0L)
- assertThat(underTest.flags and 3L).isNotEqualTo(0L)
+ assertThat(underTest.flags and 4L).isNotEqualTo(0L)
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/model/SysUIStateChange.kt b/packages/SystemUI/src/com/android/systemui/model/SysUIStateChange.kt
index aaed606f8fb2..cec846e84f01 100644
--- a/packages/SystemUI/src/com/android/systemui/model/SysUIStateChange.kt
+++ b/packages/SystemUI/src/com/android/systemui/model/SysUIStateChange.kt
@@ -43,8 +43,6 @@ class StateChange {
return this
}
- fun hasChanges() = flagsToSet != 0L || flagsToClear != 0L
-
/**
* Applies all changed flags to [sysUiState].
*
@@ -83,6 +81,7 @@ class StateChange {
iterateBits(flagsToSet or flagsToClear) { bit -> sysUiState.setFlag(bit, false) }
}
+ /** Resets all the pending changes. */
fun clear() {
flagsToSet = 0
flagsToClear = 0
diff --git a/packages/SystemUI/src/com/android/systemui/model/SysUiState.kt b/packages/SystemUI/src/com/android/systemui/model/SysUiState.kt
index e99ee7ddb919..71cb74543485 100644
--- a/packages/SystemUI/src/com/android/systemui/model/SysUiState.kt
+++ b/packages/SystemUI/src/com/android/systemui/model/SysUiState.kt
@@ -22,6 +22,7 @@ import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.display.data.repository.PerDisplayInstanceProviderWithTeardown
import com.android.systemui.dump.DumpManager
import com.android.systemui.model.SysUiState.SysUiStateCallback
+import com.android.systemui.shade.shared.flag.ShadeWindowGoesAround
import com.android.systemui.shared.system.QuickStepContract
import com.android.systemui.shared.system.QuickStepContract.SystemUiStateFlags
import dagger.assisted.Assisted
@@ -29,6 +30,7 @@ import dagger.assisted.AssistedFactory
import dagger.assisted.AssistedInject
import dalvik.annotation.optimization.NeverCompile
import java.io.PrintWriter
+import java.lang.Long.bitCount
import javax.inject.Inject
/** Contains sysUi state flags and notifies registered listeners whenever changes happen. */
@@ -111,8 +113,7 @@ constructor(
get() = _flags
private var _flags: Long = 0
- private var flagsToSet: Long = 0
- private var flagsToClear: Long = 0
+ private val stateChange = StateChange()
/**
* Add listener to be notified of changes made to SysUI state. The callback will also be called
@@ -132,13 +133,11 @@ constructor(
/** Methods to this call can be chained together before calling [.commitUpdate]. */
override fun setFlag(@SystemUiStateFlags flag: Long, enabled: Boolean): SysUiState {
- val toSet = flagWithOptionalOverrides(flag, enabled, displayId, sceneContainerPlugin)
-
- if (toSet) {
- flagsToSet = flagsToSet or flag
- } else {
- flagsToClear = flagsToClear or flag
+ if (ShadeWindowGoesAround.isEnabled && bitCount(flag) > 1) {
+ error("Flags should be a single bit.")
}
+ val toSet = flagWithOptionalOverrides(flag, enabled, displayId, sceneContainerPlugin)
+ stateChange.setFlag(flag, toSet)
return this
}
@@ -147,27 +146,19 @@ constructor(
ReplaceWith("commitUpdate()"),
)
override fun commitUpdate(displayId: Int) {
- // TODO b/398011576 - handle updates for different displays.
commitUpdate()
}
override fun commitUpdate() {
- updateFlags()
- flagsToSet = 0
- flagsToClear = 0
- }
-
- private fun updateFlags() {
- var newState = flags
- newState = newState or flagsToSet
- newState = newState and flagsToClear.inv()
+ val newState = stateChange.applyTo(flags)
notifyAndSetSystemUiStateChanged(newState, flags)
+ stateChange.clear()
}
/** Notify all those who are registered that the state has changed. */
private fun notifyAndSetSystemUiStateChanged(newFlags: Long, oldFlags: Long) {
if (SysUiState.DEBUG) {
- Log.d(TAG, "SysUiState changed: old=$oldFlags new=$newFlags")
+ Log.d(TAG, "SysUiState changed for displayId=$displayId: old=$oldFlags new=$newFlags")
}
if (newFlags != oldFlags) {
_flags = newFlags
@@ -185,6 +176,8 @@ constructor(
pw.println(QuickStepContract.isBackGestureDisabled(flags, false /* forTrackpad */))
pw.print(" assistantGestureDisabled=")
pw.println(QuickStepContract.isAssistantGestureDisabled(flags))
+ pw.print(" pendingStateChanges=")
+ pw.println(stateChange.toString())
}
override fun destroy() {