From 7eaa5e3d5c316297944e6d4d0cb0cec546a409c6 Mon Sep 17 00:00:00 2001 From: Anton Potapov Date: Tue, 9 May 2023 16:59:48 +0100 Subject: [PATCH] Use a separated Configuration instance to save the last state Test: manual Test: atest ControlsActivityTest Fixes: 280500001 Change-Id: I8975b28a68c34cd27d4e53646d2b034a8edb97f9 --- .../systemui/controls/ui/ControlsActivity.kt | 7 ++++--- .../systemui/controls/ui/ControlsActivityTest.kt | 13 +++++++++++++ 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/controls/ui/ControlsActivity.kt b/packages/SystemUI/src/com/android/systemui/controls/ui/ControlsActivity.kt index c964b9654955f..14817dcdc9354 100644 --- a/packages/SystemUI/src/com/android/systemui/controls/ui/ControlsActivity.kt +++ b/packages/SystemUI/src/com/android/systemui/controls/ui/ControlsActivity.kt @@ -57,14 +57,15 @@ open class ControlsActivity @Inject constructor( private val keyguardStateController: KeyguardStateController ) : ComponentActivity() { + private val lastConfiguration = Configuration() + private lateinit var parent: ViewGroup private lateinit var broadcastReceiver: BroadcastReceiver private var mExitToDream: Boolean = false - private lateinit var lastConfiguration: Configuration override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - lastConfiguration = resources.configuration + lastConfiguration.setTo(resources.configuration) if (featureFlags.isEnabled(Flags.USE_APP_PANELS)) { window.addPrivateFlags(WindowManager.LayoutParams.PRIVATE_FLAG_TRUSTED_OVERLAY) } @@ -105,7 +106,7 @@ open class ControlsActivity @Inject constructor( if (lastConfiguration.diff(newConfig) and interestingFlags != 0 ) { uiController.onSizeChange() } - lastConfiguration = newConfig + lastConfiguration.setTo(newConfig) } override fun onStart() { diff --git a/packages/SystemUI/tests/src/com/android/systemui/controls/ui/ControlsActivityTest.kt b/packages/SystemUI/tests/src/com/android/systemui/controls/ui/ControlsActivityTest.kt index 0f62b24bdb068..2d3e10e6f7e0a 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/controls/ui/ControlsActivityTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/controls/ui/ControlsActivityTest.kt @@ -34,6 +34,7 @@ import org.junit.Rule import org.junit.Test import org.junit.runner.RunWith import org.mockito.Mock +import org.mockito.Mockito.times import org.mockito.Mockito.verify import org.mockito.MockitoAnnotations @@ -108,6 +109,18 @@ class ControlsActivityTest : SysuiTestCase() { verify(uiController).onSizeChange() } + @Test + fun testConfigurationChangeSupportsInPlaceChange() { + val config = Configuration(activityRule.activity.resources.configuration) + + config.orientation = switchOrientation(config.orientation) + activityRule.runOnUiThread { activityRule.activity.onConfigurationChanged(config) } + config.orientation = switchOrientation(config.orientation) + activityRule.runOnUiThread { activityRule.activity.onConfigurationChanged(config) } + + verify(uiController, times(2)).onSizeChange() + } + private fun switchOrientation(orientation: Int): Int { return if (orientation == Configuration.ORIENTATION_LANDSCAPE) { Configuration.ORIENTATION_PORTRAIT