Merge "StatusBarContentInsetsProvider: call start in init when flag is disabled" into main
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/StatusBarContentInsetsProviderTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/StatusBarContentInsetsProviderTest.kt
index a862fdf..778e822 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/StatusBarContentInsetsProviderTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/StatusBarContentInsetsProviderTest.kt
@@ -19,6 +19,8 @@
import android.content.Context
import android.content.res.Configuration
import android.graphics.Rect
+import android.platform.test.annotations.DisableFlags
+import android.platform.test.annotations.EnableFlags
import android.view.Display
import android.view.DisplayCutout
import androidx.test.ext.junit.runners.AndroidJUnit4
@@ -29,6 +31,7 @@
import com.android.systemui.SysuiTestCase
import com.android.systemui.dump.DumpManager
import com.android.systemui.statusbar.commandline.CommandRegistry
+import com.android.systemui.statusbar.core.StatusBarConnectedDisplays
import com.android.systemui.statusbar.policy.ConfigurationController
import com.android.systemui.util.leak.RotationUtils
import com.android.systemui.util.leak.RotationUtils.ROTATION_LANDSCAPE
@@ -1051,7 +1054,8 @@
}
@Test
- fun onMaxBoundsChanged_beforeStart_listenerNotNotified() {
+ @EnableFlags(StatusBarConnectedDisplays.FLAG_NAME)
+ fun onMaxBoundsChanged_beforeStart_flagEnabled_listenerNotNotified() {
// Start out with an existing configuration with bounds
configuration.windowConfiguration.setMaxBounds(0, 0, 100, 100)
configurationController.onConfigurationChanged(configuration)
@@ -1083,7 +1087,41 @@
}
@Test
- fun onDensityOrFontScaleChanged_beforeStart_listenerNotNotified() {
+ @DisableFlags(StatusBarConnectedDisplays.FLAG_NAME)
+ fun onMaxBoundsChanged_beforeStart_flagDisabled_listenerNotNotified() {
+ // Start out with an existing configuration with bounds
+ configuration.windowConfiguration.setMaxBounds(0, 0, 100, 100)
+ configurationController.onConfigurationChanged(configuration)
+ val provider =
+ StatusBarContentInsetsProviderImpl(
+ contextMock,
+ configurationController,
+ mock<DumpManager>(),
+ mock<CommandRegistry>(),
+ mock<SysUICutoutProvider>(),
+ )
+ val listener =
+ object : StatusBarContentInsetsChangedListener {
+ var triggered = false
+
+ override fun onStatusBarContentInsetsChanged() {
+ triggered = true
+ }
+ }
+ provider.addCallback(listener)
+
+ // WHEN the config is updated with new bounds
+ // but provider is not started
+ configuration.windowConfiguration.setMaxBounds(0, 0, 456, 789)
+ configurationController.onConfigurationChanged(configuration)
+
+ // THEN the listener is notified
+ assertThat(listener.triggered).isTrue()
+ }
+
+ @Test
+ @EnableFlags(StatusBarConnectedDisplays.FLAG_NAME)
+ fun onDensityOrFontScaleChanged_beforeStart_flagEnabled_listenerNotNotified() {
configuration.densityDpi = 12
val provider =
StatusBarContentInsetsProviderImpl(
@@ -1112,6 +1150,36 @@
}
@Test
+ @DisableFlags(StatusBarConnectedDisplays.FLAG_NAME)
+ fun onDensityOrFontScaleChanged_beforeStart_flagDisabled_listenerNotified() {
+ configuration.densityDpi = 12
+ val provider =
+ StatusBarContentInsetsProviderImpl(
+ contextMock,
+ configurationController,
+ mock<DumpManager>(),
+ mock<CommandRegistry>(),
+ mock<SysUICutoutProvider>(),
+ )
+ val listener =
+ object : StatusBarContentInsetsChangedListener {
+ var triggered = false
+
+ override fun onStatusBarContentInsetsChanged() {
+ triggered = true
+ }
+ }
+ provider.addCallback(listener)
+
+ // WHEN the config is updated, but the provider is not started
+ configuration.densityDpi = 20
+ configurationController.onConfigurationChanged(configuration)
+
+ // THEN the listener is notified
+ assertThat(listener.triggered).isTrue()
+ }
+
+ @Test
fun onDensityOrFontScaleChanged_afterStart_listenerNotified() {
configuration.densityDpi = 12
val provider =
@@ -1169,7 +1237,8 @@
}
@Test
- fun onThemeChanged_beforeStart_listenerNotNotified() {
+ @EnableFlags(StatusBarConnectedDisplays.FLAG_NAME)
+ fun onThemeChanged_beforeStart_flagEnabled_listenerNotNotified() {
val provider =
StatusBarContentInsetsProviderImpl(
contextMock,
@@ -1193,6 +1262,32 @@
assertThat(listener.triggered).isFalse()
}
+ @Test
+ @DisableFlags(StatusBarConnectedDisplays.FLAG_NAME)
+ fun onThemeChanged_beforeStart_flagDisabled_listenerNotified() {
+ val provider =
+ StatusBarContentInsetsProviderImpl(
+ contextMock,
+ configurationController,
+ mock<DumpManager>(),
+ mock<CommandRegistry>(),
+ mock<SysUICutoutProvider>(),
+ )
+ val listener =
+ object : StatusBarContentInsetsChangedListener {
+ var triggered = false
+
+ override fun onStatusBarContentInsetsChanged() {
+ triggered = true
+ }
+ }
+ provider.addCallback(listener)
+
+ configurationController.notifyThemeChanged()
+
+ assertThat(listener.triggered).isTrue()
+ }
+
private fun assertRects(
expected: Rect,
actual: Rect,
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarContentInsetsProvider.kt b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarContentInsetsProvider.kt
index d991b1d..41db5f4 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarContentInsetsProvider.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarContentInsetsProvider.kt
@@ -174,6 +174,14 @@
private val dumpableName = TAG + nameSuffix
private val commandName = StatusBarInsetsCommand.NAME + nameSuffix
+ init {
+ if (!StatusBarConnectedDisplays.isEnabled) {
+ // Call start(), since it is not called when the flag is disabled, to keep the old
+ // behavior as it was.
+ start()
+ }
+ }
+
override fun start() {
configurationController.addCallback(this)
dumpManager.registerDumpable(dumpableName, this)