Loading packages/SystemUI/src/com/android/systemui/settings/brightness/BrightnessDialog.java +13 −0 Original line number Diff line number Diff line Loading @@ -21,6 +21,8 @@ import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; import static android.view.WindowManagerPolicyConstants.EXTRA_FROM_BRIGHTNESS_KEY; import static com.android.systemui.util.kotlin.JavaAdapterKt.collectFlow; import android.app.Activity; import android.content.res.Configuration; import android.graphics.Rect; Loading Loading @@ -87,6 +89,17 @@ public class BrightnessDialog extends Activity { if (mShadeInteractor.isQsExpanded().getValue()) { finish(); } View view = findViewById(R.id.brightness_mirror_container); if (view != null) { collectFlow(view, mShadeInteractor.isQsExpanded(), this::onShadeStateChange); } } private void onShadeStateChange(boolean isQsExpanded) { if (isQsExpanded) { requestFinish(); } } private void setWindowAttributes() { Loading packages/SystemUI/tests/src/com/android/systemui/settings/brightness/BrightnessDialogTest.kt +24 −6 Original line number Diff line number Diff line Loading @@ -36,8 +36,12 @@ import com.android.systemui.util.mockito.any import com.android.systemui.util.mockito.whenever import com.android.systemui.util.time.FakeSystemClock import com.google.common.truth.Truth.assertThat import dagger.Lazy import kotlin.time.Duration.Companion.milliseconds import kotlinx.coroutines.FlowPreview import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.takeWhile import kotlinx.coroutines.flow.timeout import kotlinx.coroutines.test.runTest import org.junit.After import org.junit.Before import org.junit.Rule Loading @@ -59,7 +63,6 @@ class BrightnessDialogTest : SysuiTestCase() { @Mock private lateinit var brightnessControllerFactory: BrightnessController.Factory @Mock private lateinit var brightnessController: BrightnessController @Mock private lateinit var accessibilityMgr: AccessibilityManagerWrapper @Mock private lateinit var shadeInteractorLazy: Lazy<ShadeInteractor> @Mock private lateinit var shadeInteractor: ShadeInteractor private val clock = FakeSystemClock() Loading Loading @@ -89,7 +92,6 @@ class BrightnessDialogTest : SysuiTestCase() { .thenReturn(brightnessSliderController) `when`(brightnessSliderController.rootView).thenReturn(View(context)) `when`(brightnessControllerFactory.create(any())).thenReturn(brightnessController) whenever(shadeInteractorLazy.get()).thenReturn(shadeInteractor) whenever(shadeInteractor.isQsExpanded).thenReturn(MutableStateFlow(false)) } Loading Loading @@ -180,6 +182,22 @@ class BrightnessDialogTest : SysuiTestCase() { assertThat(activityRule.activity.isFinishing()).isFalse() } @OptIn(FlowPreview::class) @Test fun testFinishOnQSExpanded() = runTest { val isQSExpanded = MutableStateFlow(false) `when`(shadeInteractor.isQsExpanded).thenReturn(isQSExpanded) activityRule.launchActivity(Intent(Intent.ACTION_SHOW_BRIGHTNESS_DIALOG)) assertThat(activityRule.activity.isFinishing()).isFalse() isQSExpanded.value = true // Observe the activity's state until is it finishing or the timeout is reached, whatever // comes first. This fixes the flakiness seen when using advanceUntilIdle(). activityRule.activity.finishing.timeout(100.milliseconds).takeWhile { !it }.collect {} assertThat(activityRule.activity.isFinishing()).isTrue() } class TestDialog( brightnessSliderControllerFactory: BrightnessSliderController.Factory, brightnessControllerFactory: BrightnessController.Factory, Loading @@ -194,14 +212,14 @@ class BrightnessDialogTest : SysuiTestCase() { accessibilityMgr, shadeInteractor ) { private var finishing = false var finishing = MutableStateFlow(false) override fun isFinishing(): Boolean { return finishing return finishing.value } override fun requestFinish() { finishing = true finishing.value = true } } } Loading
packages/SystemUI/src/com/android/systemui/settings/brightness/BrightnessDialog.java +13 −0 Original line number Diff line number Diff line Loading @@ -21,6 +21,8 @@ import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; import static android.view.WindowManagerPolicyConstants.EXTRA_FROM_BRIGHTNESS_KEY; import static com.android.systemui.util.kotlin.JavaAdapterKt.collectFlow; import android.app.Activity; import android.content.res.Configuration; import android.graphics.Rect; Loading Loading @@ -87,6 +89,17 @@ public class BrightnessDialog extends Activity { if (mShadeInteractor.isQsExpanded().getValue()) { finish(); } View view = findViewById(R.id.brightness_mirror_container); if (view != null) { collectFlow(view, mShadeInteractor.isQsExpanded(), this::onShadeStateChange); } } private void onShadeStateChange(boolean isQsExpanded) { if (isQsExpanded) { requestFinish(); } } private void setWindowAttributes() { Loading
packages/SystemUI/tests/src/com/android/systemui/settings/brightness/BrightnessDialogTest.kt +24 −6 Original line number Diff line number Diff line Loading @@ -36,8 +36,12 @@ import com.android.systemui.util.mockito.any import com.android.systemui.util.mockito.whenever import com.android.systemui.util.time.FakeSystemClock import com.google.common.truth.Truth.assertThat import dagger.Lazy import kotlin.time.Duration.Companion.milliseconds import kotlinx.coroutines.FlowPreview import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.takeWhile import kotlinx.coroutines.flow.timeout import kotlinx.coroutines.test.runTest import org.junit.After import org.junit.Before import org.junit.Rule Loading @@ -59,7 +63,6 @@ class BrightnessDialogTest : SysuiTestCase() { @Mock private lateinit var brightnessControllerFactory: BrightnessController.Factory @Mock private lateinit var brightnessController: BrightnessController @Mock private lateinit var accessibilityMgr: AccessibilityManagerWrapper @Mock private lateinit var shadeInteractorLazy: Lazy<ShadeInteractor> @Mock private lateinit var shadeInteractor: ShadeInteractor private val clock = FakeSystemClock() Loading Loading @@ -89,7 +92,6 @@ class BrightnessDialogTest : SysuiTestCase() { .thenReturn(brightnessSliderController) `when`(brightnessSliderController.rootView).thenReturn(View(context)) `when`(brightnessControllerFactory.create(any())).thenReturn(brightnessController) whenever(shadeInteractorLazy.get()).thenReturn(shadeInteractor) whenever(shadeInteractor.isQsExpanded).thenReturn(MutableStateFlow(false)) } Loading Loading @@ -180,6 +182,22 @@ class BrightnessDialogTest : SysuiTestCase() { assertThat(activityRule.activity.isFinishing()).isFalse() } @OptIn(FlowPreview::class) @Test fun testFinishOnQSExpanded() = runTest { val isQSExpanded = MutableStateFlow(false) `when`(shadeInteractor.isQsExpanded).thenReturn(isQSExpanded) activityRule.launchActivity(Intent(Intent.ACTION_SHOW_BRIGHTNESS_DIALOG)) assertThat(activityRule.activity.isFinishing()).isFalse() isQSExpanded.value = true // Observe the activity's state until is it finishing or the timeout is reached, whatever // comes first. This fixes the flakiness seen when using advanceUntilIdle(). activityRule.activity.finishing.timeout(100.milliseconds).takeWhile { !it }.collect {} assertThat(activityRule.activity.isFinishing()).isTrue() } class TestDialog( brightnessSliderControllerFactory: BrightnessSliderController.Factory, brightnessControllerFactory: BrightnessController.Factory, Loading @@ -194,14 +212,14 @@ class BrightnessDialogTest : SysuiTestCase() { accessibilityMgr, shadeInteractor ) { private var finishing = false var finishing = MutableStateFlow(false) override fun isFinishing(): Boolean { return finishing return finishing.value } override fun requestFinish() { finishing = true finishing.value = true } } }