Loading packages/SystemUI/compose/features/src/com/android/systemui/qs/ui/composable/QuickSettings.kt +2 −2 Original line number Diff line number Diff line Loading @@ -103,10 +103,10 @@ private fun SceneScope.stateForQuickSettingsContent( when { isSplitShade -> UnsquishingQS(squishiness) fromScene == Scenes.Shade && toScene == Scenes.QuickSettings -> { Expanding(progress) Expanding { progress } } fromScene == Scenes.QuickSettings && toScene == Scenes.Shade -> { Collapsing(progress) Collapsing { progress } } fromScene == Scenes.Shade || toScene == Scenes.Shade -> { UnsquishingQQS(squishiness) Loading packages/SystemUI/multivalentTests/src/com/android/systemui/qs/ui/adapter/QSSceneAdapterImplTest.kt +1 −1 Original line number Diff line number Diff line Loading @@ -255,7 +255,7 @@ class QSSceneAdapterImplTest : SysuiTestCase() { runCurrent() clearInvocations(qsImpl!!) underTest.setState(QSSceneAdapter.State.Expanding(progress)) underTest.setState(QSSceneAdapter.State.Expanding { progress }) with(qsImpl!!) { verify(this).setQsVisible(true) verify(this, never()) Loading packages/SystemUI/multivalentTests/src/com/android/systemui/qs/ui/adapter/QSSceneAdapterTest.kt +40 −9 Original line number Diff line number Diff line Loading @@ -20,7 +20,12 @@ import android.platform.test.annotations.EnabledOnRavenwood import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest import com.android.systemui.SysuiTestCase import com.android.systemui.qs.ui.adapter.ExpandingSubject.Companion.assertThatExpanding import com.android.systemui.qs.ui.adapter.QSSceneAdapter.State.Companion.Collapsing import com.google.common.truth.FailureMetadata import com.google.common.truth.Subject import com.google.common.truth.Subject.Factory import com.google.common.truth.Truth.assertAbout import com.google.common.truth.Truth.assertThat import org.junit.Test import org.junit.runner.RunWith Loading @@ -32,33 +37,59 @@ class QSSceneAdapterTest : SysuiTestCase() { @Test fun expanding_squishiness1() { assertThat(QSSceneAdapter.State.Expanding(0.3f).squishiness()).isEqualTo(1f) assertThat(QSSceneAdapter.State.Expanding { 0.3f }.squishiness()).isEqualTo(1f) } @Test fun expandingSpecialValues() { assertThat(QSSceneAdapter.State.QQS).isEqualTo(QSSceneAdapter.State.Expanding(0f)) assertThat(QSSceneAdapter.State.QS).isEqualTo(QSSceneAdapter.State.Expanding(1f)) assertThatExpanding(QSSceneAdapter.State.QQS) .isEqualTo(QSSceneAdapter.State.Expanding { 0f }) assertThatExpanding(QSSceneAdapter.State.QS) .isEqualTo(QSSceneAdapter.State.Expanding { 1f }) } @Test fun collapsing() { val collapsingProgress = 0.3f assertThat(Collapsing(collapsingProgress)) .isEqualTo(QSSceneAdapter.State.Expanding(1 - collapsingProgress)) assertThatExpanding(Collapsing { collapsingProgress }) .isEqualTo(QSSceneAdapter.State.Expanding { 1 - collapsingProgress }) } @Test fun unsquishingQQS_expansionSameAsQQS() { val squishiness = 0.6f assertThat(QSSceneAdapter.State.UnsquishingQQS { squishiness }.expansion) .isEqualTo(QSSceneAdapter.State.QQS.expansion) assertThat(QSSceneAdapter.State.UnsquishingQQS { squishiness }.expansion()) .isEqualTo(QSSceneAdapter.State.QQS.expansion()) } @Test fun unsquishingQS_expansionSameAsQS() { val squishiness = 0.6f assertThat(QSSceneAdapter.State.UnsquishingQS { squishiness }.expansion) .isEqualTo(QSSceneAdapter.State.QS.expansion) assertThat(QSSceneAdapter.State.UnsquishingQS { squishiness }.expansion()) .isEqualTo(QSSceneAdapter.State.QS.expansion()) } } private class ExpandingSubject( metadata: FailureMetadata, private val actual: QSSceneAdapter.State.Expanding? ) : Subject(metadata, actual) { fun isEqualTo(expected: QSSceneAdapter.State.Expanding) { isNotNull() check("expansion()") .that(actual?.expansion?.invoke()) .isEqualTo(expected.expansion.invoke()) } companion object { fun expanding(): Factory<ExpandingSubject, QSSceneAdapter.State.Expanding> { return Factory { metadata: FailureMetadata, actual: QSSceneAdapter.State.Expanding? -> ExpandingSubject(metadata, actual) } } fun assertThatExpanding(actual: QSSceneAdapter.State.Expanding): ExpandingSubject { return assertAbout(expanding()).that(actual) } } } packages/SystemUI/src/com/android/systemui/qs/ui/adapter/QSSceneAdapter.kt +10 −10 Original line number Diff line number Diff line Loading @@ -147,17 +147,17 @@ interface QSSceneAdapter { sealed interface State { val isVisible: Boolean val expansion: Float val expansion: () -> Float val squishiness: () -> Float data object CLOSED : State { override val isVisible = false override val expansion = 0f override val expansion = { 0f } override val squishiness = { 1f } } /** State for expanding between QQS and QS */ data class Expanding(override val expansion: Float) : State { class Expanding(override val expansion: () -> Float) : State { override val isVisible = true override val squishiness = { 1f } } Loading @@ -170,7 +170,7 @@ interface QSSceneAdapter { */ class UnsquishingQQS(override val squishiness: () -> Float) : State { override val isVisible = true override val expansion = 0f override val expansion = { 0f } } /** Loading @@ -181,16 +181,16 @@ interface QSSceneAdapter { */ class UnsquishingQS(override val squishiness: () -> Float) : State { override val isVisible = true override val expansion = 1f override val expansion = { 1f } } companion object { // These are special cases of the expansion. val QQS = Expanding(0f) val QS = Expanding(1f) val QQS = Expanding { 0f } val QS = Expanding { 1f } /** Collapsing from QS to QQS. [progress] is 0f in QS and 1f in QQS. */ fun Collapsing(progress: Float) = Expanding(1f - progress) fun Collapsing(progress: () -> Float) = Expanding { 1f - progress() } } } } Loading Loading @@ -418,14 +418,14 @@ constructor( private fun QSImpl.applyState(state: QSSceneAdapter.State) { setQsVisible(state.isVisible) setExpanded(state.isVisible && state.expansion > 0f) setExpanded(state.isVisible && state.expansion() > 0f) setListening(state.isVisible) } override fun applyLatestExpansionAndSquishiness() { val qsImpl = _qsImpl.value val state = state.value qsImpl?.setQsExpansion(state.expansion, 1f, 0f, state.squishiness()) qsImpl?.setQsExpansion(state.expansion(), 1f, 0f, state.squishiness()) } override fun dump(pw: PrintWriter, args: Array<out String>) { Loading Loading
packages/SystemUI/compose/features/src/com/android/systemui/qs/ui/composable/QuickSettings.kt +2 −2 Original line number Diff line number Diff line Loading @@ -103,10 +103,10 @@ private fun SceneScope.stateForQuickSettingsContent( when { isSplitShade -> UnsquishingQS(squishiness) fromScene == Scenes.Shade && toScene == Scenes.QuickSettings -> { Expanding(progress) Expanding { progress } } fromScene == Scenes.QuickSettings && toScene == Scenes.Shade -> { Collapsing(progress) Collapsing { progress } } fromScene == Scenes.Shade || toScene == Scenes.Shade -> { UnsquishingQQS(squishiness) Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/qs/ui/adapter/QSSceneAdapterImplTest.kt +1 −1 Original line number Diff line number Diff line Loading @@ -255,7 +255,7 @@ class QSSceneAdapterImplTest : SysuiTestCase() { runCurrent() clearInvocations(qsImpl!!) underTest.setState(QSSceneAdapter.State.Expanding(progress)) underTest.setState(QSSceneAdapter.State.Expanding { progress }) with(qsImpl!!) { verify(this).setQsVisible(true) verify(this, never()) Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/qs/ui/adapter/QSSceneAdapterTest.kt +40 −9 Original line number Diff line number Diff line Loading @@ -20,7 +20,12 @@ import android.platform.test.annotations.EnabledOnRavenwood import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest import com.android.systemui.SysuiTestCase import com.android.systemui.qs.ui.adapter.ExpandingSubject.Companion.assertThatExpanding import com.android.systemui.qs.ui.adapter.QSSceneAdapter.State.Companion.Collapsing import com.google.common.truth.FailureMetadata import com.google.common.truth.Subject import com.google.common.truth.Subject.Factory import com.google.common.truth.Truth.assertAbout import com.google.common.truth.Truth.assertThat import org.junit.Test import org.junit.runner.RunWith Loading @@ -32,33 +37,59 @@ class QSSceneAdapterTest : SysuiTestCase() { @Test fun expanding_squishiness1() { assertThat(QSSceneAdapter.State.Expanding(0.3f).squishiness()).isEqualTo(1f) assertThat(QSSceneAdapter.State.Expanding { 0.3f }.squishiness()).isEqualTo(1f) } @Test fun expandingSpecialValues() { assertThat(QSSceneAdapter.State.QQS).isEqualTo(QSSceneAdapter.State.Expanding(0f)) assertThat(QSSceneAdapter.State.QS).isEqualTo(QSSceneAdapter.State.Expanding(1f)) assertThatExpanding(QSSceneAdapter.State.QQS) .isEqualTo(QSSceneAdapter.State.Expanding { 0f }) assertThatExpanding(QSSceneAdapter.State.QS) .isEqualTo(QSSceneAdapter.State.Expanding { 1f }) } @Test fun collapsing() { val collapsingProgress = 0.3f assertThat(Collapsing(collapsingProgress)) .isEqualTo(QSSceneAdapter.State.Expanding(1 - collapsingProgress)) assertThatExpanding(Collapsing { collapsingProgress }) .isEqualTo(QSSceneAdapter.State.Expanding { 1 - collapsingProgress }) } @Test fun unsquishingQQS_expansionSameAsQQS() { val squishiness = 0.6f assertThat(QSSceneAdapter.State.UnsquishingQQS { squishiness }.expansion) .isEqualTo(QSSceneAdapter.State.QQS.expansion) assertThat(QSSceneAdapter.State.UnsquishingQQS { squishiness }.expansion()) .isEqualTo(QSSceneAdapter.State.QQS.expansion()) } @Test fun unsquishingQS_expansionSameAsQS() { val squishiness = 0.6f assertThat(QSSceneAdapter.State.UnsquishingQS { squishiness }.expansion) .isEqualTo(QSSceneAdapter.State.QS.expansion) assertThat(QSSceneAdapter.State.UnsquishingQS { squishiness }.expansion()) .isEqualTo(QSSceneAdapter.State.QS.expansion()) } } private class ExpandingSubject( metadata: FailureMetadata, private val actual: QSSceneAdapter.State.Expanding? ) : Subject(metadata, actual) { fun isEqualTo(expected: QSSceneAdapter.State.Expanding) { isNotNull() check("expansion()") .that(actual?.expansion?.invoke()) .isEqualTo(expected.expansion.invoke()) } companion object { fun expanding(): Factory<ExpandingSubject, QSSceneAdapter.State.Expanding> { return Factory { metadata: FailureMetadata, actual: QSSceneAdapter.State.Expanding? -> ExpandingSubject(metadata, actual) } } fun assertThatExpanding(actual: QSSceneAdapter.State.Expanding): ExpandingSubject { return assertAbout(expanding()).that(actual) } } }
packages/SystemUI/src/com/android/systemui/qs/ui/adapter/QSSceneAdapter.kt +10 −10 Original line number Diff line number Diff line Loading @@ -147,17 +147,17 @@ interface QSSceneAdapter { sealed interface State { val isVisible: Boolean val expansion: Float val expansion: () -> Float val squishiness: () -> Float data object CLOSED : State { override val isVisible = false override val expansion = 0f override val expansion = { 0f } override val squishiness = { 1f } } /** State for expanding between QQS and QS */ data class Expanding(override val expansion: Float) : State { class Expanding(override val expansion: () -> Float) : State { override val isVisible = true override val squishiness = { 1f } } Loading @@ -170,7 +170,7 @@ interface QSSceneAdapter { */ class UnsquishingQQS(override val squishiness: () -> Float) : State { override val isVisible = true override val expansion = 0f override val expansion = { 0f } } /** Loading @@ -181,16 +181,16 @@ interface QSSceneAdapter { */ class UnsquishingQS(override val squishiness: () -> Float) : State { override val isVisible = true override val expansion = 1f override val expansion = { 1f } } companion object { // These are special cases of the expansion. val QQS = Expanding(0f) val QS = Expanding(1f) val QQS = Expanding { 0f } val QS = Expanding { 1f } /** Collapsing from QS to QQS. [progress] is 0f in QS and 1f in QQS. */ fun Collapsing(progress: Float) = Expanding(1f - progress) fun Collapsing(progress: () -> Float) = Expanding { 1f - progress() } } } } Loading Loading @@ -418,14 +418,14 @@ constructor( private fun QSImpl.applyState(state: QSSceneAdapter.State) { setQsVisible(state.isVisible) setExpanded(state.isVisible && state.expansion > 0f) setExpanded(state.isVisible && state.expansion() > 0f) setListening(state.isVisible) } override fun applyLatestExpansionAndSquishiness() { val qsImpl = _qsImpl.value val state = state.value qsImpl?.setQsExpansion(state.expansion, 1f, 0f, state.squishiness()) qsImpl?.setQsExpansion(state.expansion(), 1f, 0f, state.squishiness()) } override fun dump(pw: PrintWriter, args: Array<out String>) { Loading