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:
@@ -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()
|
||||||
|
|||||||
@@ -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)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user