diff options
9 files changed, 11 insertions, 139 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/scene/domain/interactor/SceneInteractor.kt b/packages/SystemUI/src/com/android/systemui/scene/domain/interactor/SceneInteractor.kt index 76d9b039e112..a7434c6ac797 100644 --- a/packages/SystemUI/src/com/android/systemui/scene/domain/interactor/SceneInteractor.kt +++ b/packages/SystemUI/src/com/android/systemui/scene/domain/interactor/SceneInteractor.kt @@ -21,16 +21,13 @@ import com.android.systemui.dagger.qualifiers.Application import com.android.systemui.scene.data.repository.SceneContainerRepository import com.android.systemui.scene.shared.logger.SceneLogger import com.android.systemui.scene.shared.model.ObservableTransitionState -import com.android.systemui.scene.shared.model.RemoteUserInput import com.android.systemui.scene.shared.model.SceneKey import com.android.systemui.scene.shared.model.SceneModel import javax.inject.Inject import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.Flow -import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.SharingStarted import kotlinx.coroutines.flow.StateFlow -import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.stateIn @@ -109,10 +106,6 @@ constructor( /** Whether the scene container is visible. */ val isVisible: StateFlow<Boolean> = repository.isVisible - private val _remoteUserInput: MutableStateFlow<RemoteUserInput?> = MutableStateFlow(null) - /** A flow of motion events originating from outside of the scene framework. */ - val remoteUserInput: StateFlow<RemoteUserInput?> = _remoteUserInput.asStateFlow() - /** * Returns the keys of all scenes in the container. * @@ -160,11 +153,6 @@ constructor( repository.setTransitionState(transitionState) } - /** Handles a remote user input. */ - fun onRemoteUserInput(input: RemoteUserInput) { - _remoteUserInput.value = input - } - /** * Notifies that the UI has transitioned sufficiently to the given scene. * diff --git a/packages/SystemUI/src/com/android/systemui/scene/shared/model/RemoteUserInput.kt b/packages/SystemUI/src/com/android/systemui/scene/shared/model/RemoteUserInput.kt deleted file mode 100644 index 680de590a3fc..000000000000 --- a/packages/SystemUI/src/com/android/systemui/scene/shared/model/RemoteUserInput.kt +++ /dev/null @@ -1,35 +0,0 @@ -package com.android.systemui.scene.shared.model - -import android.view.MotionEvent - -/** A representation of user input that is used by the scene framework. */ -data class RemoteUserInput( - val x: Float, - val y: Float, - val action: RemoteUserInputAction, -) { - companion object { - fun translateMotionEvent(event: MotionEvent): RemoteUserInput { - return RemoteUserInput( - x = event.x, - y = event.y, - action = - when (event.actionMasked) { - MotionEvent.ACTION_DOWN -> RemoteUserInputAction.DOWN - MotionEvent.ACTION_MOVE -> RemoteUserInputAction.MOVE - MotionEvent.ACTION_UP -> RemoteUserInputAction.UP - MotionEvent.ACTION_CANCEL -> RemoteUserInputAction.CANCEL - else -> RemoteUserInputAction.UNKNOWN - } - ) - } - } -} - -enum class RemoteUserInputAction { - DOWN, - MOVE, - UP, - CANCEL, - UNKNOWN, -} diff --git a/packages/SystemUI/src/com/android/systemui/scene/ui/view/SceneWindowRootView.kt b/packages/SystemUI/src/com/android/systemui/scene/ui/view/SceneWindowRootView.kt index 8601b3de2f7c..cdf50bab6b42 100644 --- a/packages/SystemUI/src/com/android/systemui/scene/ui/view/SceneWindowRootView.kt +++ b/packages/SystemUI/src/com/android/systemui/scene/ui/view/SceneWindowRootView.kt @@ -2,7 +2,6 @@ package com.android.systemui.scene.ui.view import android.content.Context import android.util.AttributeSet -import android.view.MotionEvent import android.view.View import com.android.systemui.scene.shared.model.Scene import com.android.systemui.scene.shared.model.SceneContainerConfig @@ -39,14 +38,6 @@ class SceneWindowRootView( ) } - override fun onTouchEvent(event: MotionEvent?): Boolean { - return event?.let { - viewModel.onRemoteUserInput(event) - true - } - ?: false - } - override fun setVisibility(visibility: Int) { // Do nothing. We don't want external callers to invoke this. Instead, we drive our own // visibility from our view-binder. diff --git a/packages/SystemUI/src/com/android/systemui/scene/ui/viewmodel/SceneContainerViewModel.kt b/packages/SystemUI/src/com/android/systemui/scene/ui/viewmodel/SceneContainerViewModel.kt index 3e9bbe464e2c..5c16fb54e3a0 100644 --- a/packages/SystemUI/src/com/android/systemui/scene/ui/viewmodel/SceneContainerViewModel.kt +++ b/packages/SystemUI/src/com/android/systemui/scene/ui/viewmodel/SceneContainerViewModel.kt @@ -16,11 +16,9 @@ package com.android.systemui.scene.ui.viewmodel -import android.view.MotionEvent import com.android.systemui.dagger.SysUISingleton import com.android.systemui.scene.domain.interactor.SceneInteractor import com.android.systemui.scene.shared.model.ObservableTransitionState -import com.android.systemui.scene.shared.model.RemoteUserInput import com.android.systemui.scene.shared.model.SceneKey import com.android.systemui.scene.shared.model.SceneModel import javax.inject.Inject @@ -34,9 +32,6 @@ class SceneContainerViewModel constructor( private val interactor: SceneInteractor, ) { - /** A flow of motion events originating from outside of the scene framework. */ - val remoteUserInput: StateFlow<RemoteUserInput?> = interactor.remoteUserInput - /** * Keys of all scenes in the container. * @@ -68,11 +63,6 @@ constructor( interactor.setTransitionState(transitionState) } - /** Handles a [MotionEvent] representing remote user input. */ - fun onRemoteUserInput(event: MotionEvent) { - interactor.onRemoteUserInput(RemoteUserInput.translateMotionEvent(event)) - } - companion object { private const val SCENE_TRANSITION_LOGGING_REASON = "user input" } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarViewController.kt b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarViewController.kt index 931aedd90542..4de669c0b34a 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarViewController.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarViewController.kt @@ -28,8 +28,7 @@ import com.android.systemui.Gefingerpoken import com.android.systemui.R import com.android.systemui.flags.FeatureFlags import com.android.systemui.flags.Flags -import com.android.systemui.scene.domain.interactor.SceneInteractor -import com.android.systemui.scene.shared.model.RemoteUserInput +import com.android.systemui.scene.ui.view.WindowRootView import com.android.systemui.shade.ShadeController import com.android.systemui.shade.ShadeLogger import com.android.systemui.shade.ShadeViewController @@ -56,7 +55,7 @@ class PhoneStatusBarViewController private constructor( private val centralSurfaces: CentralSurfaces, private val shadeController: ShadeController, private val shadeViewController: ShadeViewController, - private val sceneInteractor: Provider<SceneInteractor>, + private val windowRootView: Provider<WindowRootView>, private val shadeLogger: ShadeLogger, private val moveFromCenterAnimationController: StatusBarMoveFromCenterAnimationController?, private val userChipViewModel: StatusBarUserChipViewModel, @@ -80,7 +79,8 @@ class PhoneStatusBarViewController private constructor( statusOverlayHoverListenerFactory.createDarkAwareListener(statusContainer)) if (moveFromCenterAnimationController == null) return - val statusBarLeftSide: View = mView.requireViewById(R.id.status_bar_start_side_except_heads_up) + val statusBarLeftSide: View = + mView.requireViewById(R.id.status_bar_start_side_except_heads_up) val systemIconArea: ViewGroup = mView.requireViewById(R.id.status_bar_end_side_content) val viewsToAnimate = arrayOf( @@ -179,11 +179,8 @@ class PhoneStatusBarViewController private constructor( // If scene framework is enabled, route the touch to it and // ignore the rest of the gesture. if (featureFlags.isEnabled(Flags.SCENE_CONTAINER)) { - sceneInteractor.get() - .onRemoteUserInput(RemoteUserInput.translateMotionEvent(event)) - // TODO(b/291965119): remove once view is expanded to cover the status bar - sceneInteractor.get().setVisible(true, "swipe down from status bar") - return false + windowRootView.get().dispatchTouchEvent(event) + return true } if (event.action == MotionEvent.ACTION_DOWN) { @@ -247,7 +244,7 @@ class PhoneStatusBarViewController private constructor( private val centralSurfaces: CentralSurfaces, private val shadeController: ShadeController, private val shadeViewController: ShadeViewController, - private val sceneInteractor: Provider<SceneInteractor>, + private val windowRootView: Provider<WindowRootView>, private val shadeLogger: ShadeLogger, private val viewUtil: ViewUtil, private val configurationController: ConfigurationController, @@ -269,7 +266,7 @@ class PhoneStatusBarViewController private constructor( centralSurfaces, shadeController, shadeViewController, - sceneInteractor, + windowRootView, shadeLogger, statusBarMoveFromCenterAnimationController, userChipViewModel, diff --git a/packages/SystemUI/tests/src/com/android/systemui/scene/domain/interactor/SceneInteractorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/scene/domain/interactor/SceneInteractorTest.kt index 16cc924b5754..713c6027d642 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/scene/domain/interactor/SceneInteractorTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/scene/domain/interactor/SceneInteractorTest.kt @@ -147,16 +147,4 @@ class SceneInteractorTest : SysuiTestCase() { underTest.setVisible(true, "reason") assertThat(isVisible).isTrue() } - - @Test - fun remoteUserInput() = - testScope.runTest { - val remoteUserInput by collectLastValue(underTest.remoteUserInput) - assertThat(remoteUserInput).isNull() - - for (input in SceneTestUtils.REMOTE_INPUT_DOWN_GESTURE) { - underTest.onRemoteUserInput(input) - assertThat(remoteUserInput).isEqualTo(input) - } - } } diff --git a/packages/SystemUI/tests/src/com/android/systemui/scene/ui/viewmodel/SceneContainerViewModelTest.kt b/packages/SystemUI/tests/src/com/android/systemui/scene/ui/viewmodel/SceneContainerViewModelTest.kt index da6c42694666..88abb642f7c1 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/scene/ui/viewmodel/SceneContainerViewModelTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/scene/ui/viewmodel/SceneContainerViewModelTest.kt @@ -18,19 +18,14 @@ package com.android.systemui.scene.ui.viewmodel -import android.view.MotionEvent import androidx.test.filters.SmallTest import com.android.systemui.SysuiTestCase import com.android.systemui.coroutines.collectLastValue import com.android.systemui.scene.SceneTestUtils -import com.android.systemui.scene.shared.model.RemoteUserInput -import com.android.systemui.scene.shared.model.RemoteUserInputAction import com.android.systemui.scene.shared.model.SceneKey import com.android.systemui.scene.shared.model.SceneModel import com.google.common.truth.Truth.assertThat import kotlinx.coroutines.ExperimentalCoroutinesApi -import kotlinx.coroutines.test.TestScope -import kotlinx.coroutines.test.currentTime import kotlinx.coroutines.test.runTest import org.junit.Test import org.junit.runner.RunWith @@ -73,35 +68,4 @@ class SceneContainerViewModelTest : SysuiTestCase() { assertThat(currentScene).isEqualTo(SceneModel(SceneKey.Shade)) } - - @Test - fun onRemoteUserInput() = runTest { - val remoteUserInput by collectLastValue(underTest.remoteUserInput) - assertThat(remoteUserInput).isNull() - - val inputs = - SceneTestUtils.REMOTE_INPUT_DOWN_GESTURE.map { remoteUserInputToMotionEvent(it) } - - inputs.forEachIndexed { index, input -> - underTest.onRemoteUserInput(input) - assertThat(remoteUserInput).isEqualTo(SceneTestUtils.REMOTE_INPUT_DOWN_GESTURE[index]) - } - } - - private fun TestScope.remoteUserInputToMotionEvent(input: RemoteUserInput): MotionEvent { - return MotionEvent.obtain( - currentTime, - currentTime, - when (input.action) { - RemoteUserInputAction.DOWN -> MotionEvent.ACTION_DOWN - RemoteUserInputAction.MOVE -> MotionEvent.ACTION_MOVE - RemoteUserInputAction.UP -> MotionEvent.ACTION_UP - RemoteUserInputAction.CANCEL -> MotionEvent.ACTION_CANCEL - RemoteUserInputAction.UNKNOWN -> MotionEvent.ACTION_OUTSIDE - }, - input.x, - input.y, - 0 - ) - } } diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/PhoneStatusBarViewControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/PhoneStatusBarViewControllerTest.kt index 2e92bb948c60..0b31523e9b98 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/PhoneStatusBarViewControllerTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/PhoneStatusBarViewControllerTest.kt @@ -27,7 +27,7 @@ import com.android.systemui.R import com.android.systemui.SysuiTestCase import com.android.systemui.flags.FeatureFlags import com.android.systemui.flags.Flags -import com.android.systemui.scene.domain.interactor.SceneInteractor +import com.android.systemui.scene.ui.view.WindowRootView import com.android.systemui.shade.ShadeControllerImpl import com.android.systemui.shade.ShadeLogger import com.android.systemui.shade.ShadeViewController @@ -77,7 +77,7 @@ class PhoneStatusBarViewControllerTest : SysuiTestCase() { @Mock private lateinit var shadeControllerImpl: ShadeControllerImpl @Mock - private lateinit var sceneInteractor: Provider<SceneInteractor> + private lateinit var windowRootView: Provider<WindowRootView> @Mock private lateinit var shadeLogger: ShadeLogger @Mock @@ -203,7 +203,7 @@ class PhoneStatusBarViewControllerTest : SysuiTestCase() { centralSurfacesImpl, shadeControllerImpl, shadeViewController, - sceneInteractor, + windowRootView, shadeLogger, viewUtil, configurationController, diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/scene/SceneTestUtils.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/scene/SceneTestUtils.kt index dd45331df4b3..f0e1111c6e12 100644 --- a/packages/SystemUI/tests/utils/src/com/android/systemui/scene/SceneTestUtils.kt +++ b/packages/SystemUI/tests/utils/src/com/android/systemui/scene/SceneTestUtils.kt @@ -39,8 +39,6 @@ import com.android.systemui.keyguard.shared.model.WakefulnessModel import com.android.systemui.keyguard.shared.model.WakefulnessState import com.android.systemui.scene.data.repository.SceneContainerRepository import com.android.systemui.scene.domain.interactor.SceneInteractor -import com.android.systemui.scene.shared.model.RemoteUserInput -import com.android.systemui.scene.shared.model.RemoteUserInputAction import com.android.systemui.scene.shared.model.SceneContainerConfig import com.android.systemui.scene.shared.model.SceneKey import com.android.systemui.user.data.repository.FakeUserRepository @@ -196,15 +194,6 @@ class SceneTestUtils( } companion object { - val REMOTE_INPUT_DOWN_GESTURE = - listOf( - RemoteUserInput(10f, 10f, RemoteUserInputAction.DOWN), - RemoteUserInput(10f, 20f, RemoteUserInputAction.MOVE), - RemoteUserInput(10f, 30f, RemoteUserInputAction.MOVE), - RemoteUserInput(10f, 40f, RemoteUserInputAction.MOVE), - RemoteUserInput(10f, 40f, RemoteUserInputAction.UP), - ) - fun DomainLayerAuthenticationMethodModel.toDataLayer(): DataLayerAuthenticationMethodModel { return when (this) { DomainLayerAuthenticationMethodModel.None -> DataLayerAuthenticationMethodModel.None |