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