Merge "Fix how taskview is used by controlsUi" into udc-dev am: 646c4f254e

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/23753646

Change-Id: Ib6809b48deb9121415a27ad2b7f623cdbe0a9990
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Mady Mellor
2023-07-10 17:22:51 +00:00
committed by Automerger Merge Worker
3 changed files with 14 additions and 27 deletions

View File

@@ -279,7 +279,7 @@ class ControlsUiControllerImpl @Inject constructor (
controlsListingController.get().removeCallback(listingCallback) controlsListingController.get().removeCallback(listingCallback)
controlsController.get().unsubscribe() controlsController.get().unsubscribe()
taskViewController?.dismiss() taskViewController?.removeTask()
taskViewController = null taskViewController = null
val fadeAnim = ObjectAnimator.ofFloat(parent, "alpha", 1.0f, 0.0f) val fadeAnim = ObjectAnimator.ofFloat(parent, "alpha", 1.0f, 0.0f)
@@ -777,7 +777,7 @@ class ControlsUiControllerImpl @Inject constructor (
closeDialogs(true) closeDialogs(true)
controlsController.get().unsubscribe() controlsController.get().unsubscribe()
taskViewController?.dismiss() taskViewController?.removeTask()
taskViewController = null taskViewController = null
controlsById.clear() controlsById.clear()

View File

@@ -18,7 +18,6 @@
package com.android.systemui.controls.ui package com.android.systemui.controls.ui
import android.app.ActivityOptions import android.app.ActivityOptions
import android.app.ActivityTaskManager
import android.app.ActivityTaskManager.INVALID_TASK_ID import android.app.ActivityTaskManager.INVALID_TASK_ID
import android.app.PendingIntent import android.app.PendingIntent
import android.content.ComponentName import android.content.ComponentName
@@ -28,6 +27,7 @@ import android.graphics.Color
import android.graphics.drawable.ShapeDrawable import android.graphics.drawable.ShapeDrawable
import android.graphics.drawable.shapes.RoundRectShape import android.graphics.drawable.shapes.RoundRectShape
import android.os.Trace import android.os.Trace
import com.android.internal.annotations.VisibleForTesting
import com.android.systemui.R import com.android.systemui.R
import com.android.systemui.util.boundsOnScreen import com.android.systemui.util.boundsOnScreen
import com.android.wm.shell.taskview.TaskView import com.android.wm.shell.taskview.TaskView
@@ -54,12 +54,6 @@ class PanelTaskViewController(
addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK) addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK)
} }
private fun removeDetailTask() {
if (detailTaskId == INVALID_TASK_ID) return
ActivityTaskManager.getInstance().removeTask(detailTaskId)
detailTaskId = INVALID_TASK_ID
}
private val stateCallback = private val stateCallback =
object : TaskView.Listener { object : TaskView.Listener {
override fun onInitialized() { override fun onInitialized() {
@@ -95,7 +89,7 @@ class PanelTaskViewController(
override fun onTaskRemovalStarted(taskId: Int) { override fun onTaskRemovalStarted(taskId: Int) {
detailTaskId = INVALID_TASK_ID detailTaskId = INVALID_TASK_ID
dismiss() release()
} }
override fun onTaskCreated(taskId: Int, name: ComponentName?) { override fun onTaskCreated(taskId: Int, name: ComponentName?) {
@@ -103,12 +97,7 @@ class PanelTaskViewController(
taskView.alpha = 1f taskView.alpha = 1f
} }
override fun onReleased() {
removeDetailTask()
}
override fun onBackPressedOnTaskRoot(taskId: Int) { override fun onBackPressedOnTaskRoot(taskId: Int) {
dismiss()
hide() hide()
} }
} }
@@ -117,10 +106,17 @@ class PanelTaskViewController(
taskView.onLocationChanged() taskView.onLocationChanged()
} }
fun dismiss() { /** Call when the taskView is no longer being used, shouldn't be called before removeTask. */
@VisibleForTesting
fun release() {
taskView.release() taskView.release()
} }
/** Call to explicitly remove the task from window manager. */
fun removeTask() {
taskView.removeTask()
}
fun launchTaskView() { fun launchTaskView() {
taskView.setListener(uiExecutor, stateCallback) taskView.setListener(uiExecutor, stateCallback)
} }

View File

@@ -146,17 +146,8 @@ class PanelTaskViewControllerTest : SysuiTestCase() {
} }
@Test @Test
fun testTaskViewReleasedOnDismiss() { fun testTaskViewReleasedOnRelease() {
underTest.dismiss() underTest.release()
verify(taskView).release()
}
@Test
fun testTaskViewReleasedOnBackOnRoot() {
underTest.launchTaskView()
verify(taskView).setListener(any(), capture(listenerCaptor))
listenerCaptor.value.onBackPressedOnTaskRoot(0)
verify(taskView).release() verify(taskView).release()
} }