Merge "Revert^2 "Inflate TaskThumbnailViewDeprecated as TaskContentView"" into main

This commit is contained in:
Sam Cackett
2025-03-19 10:15:29 -07:00
committed by Android (Google) Code Review
10 changed files with 72 additions and 27 deletions
-1
View File
@@ -30,7 +30,6 @@
<ViewStub
android:id="@+id/task_content_view"
android:inflatedId="@id/task_content_view"
android:layout_width="match_parent"
android:layout_height="match_parent" />
-2
View File
@@ -35,13 +35,11 @@
<ViewStub
android:id="@+id/task_content_view"
android:inflatedId="@id/task_content_view"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<ViewStub
android:id="@+id/bottomright_task_content_view"
android:inflatedId="@id/bottomright_task_content_view"
android:layout_width="match_parent"
android:layout_height="match_parent" />
+2
View File
@@ -21,4 +21,6 @@
<item type="id" name="action_dismiss_all" />
<item type="id" name="bubble_bar_flyout_view" />
<!-- TODO(b/361500574): Delete with enableRefactorTaskThumbnail -->
<item type="id" name="bottomright_snapshot" />
</resources>
@@ -275,7 +275,7 @@ open class LandscapePagedViewHandler : RecentsPagedOrientationHandler {
desiredTaskId: Int,
banner: View,
): Pair<Float, Float> {
val snapshotParams = thumbnailViews[0].layoutParams as LinearLayout.LayoutParams
val snapshotParams = thumbnailViews[0].layoutParams as ViewGroup.MarginLayoutParams
val translationX = banner.height.toFloat()
val translationY: Float
if (splitBounds == null) {
@@ -255,7 +255,8 @@ class PortraitPagedViewHandler : DefaultPagedViewHandler(), RecentsPagedOrientat
}
} else {
if (desiredTaskId == splitBounds.leftTopTaskId) {
val snapshotParams = thumbnailViews[0].layoutParams as LinearLayout.LayoutParams
val snapshotParams =
thumbnailViews[0].layoutParams as ViewGroup.MarginLayoutParams
val bottomRightTaskPlusDividerPercent =
(splitBounds.rightBottomTaskPercent + splitBounds.dividerPercent)
translationY =
@@ -25,8 +25,8 @@ import android.view.Gravity
import android.view.Surface
import android.view.View
import android.view.View.MeasureSpec
import android.view.ViewGroup
import android.widget.FrameLayout
import android.widget.LinearLayout
import androidx.core.util.component1
import androidx.core.util.component2
import androidx.core.view.updateLayoutParams
@@ -152,7 +152,7 @@ class SeascapePagedViewHandler : LandscapePagedViewHandler() {
desiredTaskId: Int,
banner: View,
): Pair<Float, Float> {
val snapshotParams = thumbnailViews[0].layoutParams as LinearLayout.LayoutParams
val snapshotParams = thumbnailViews[0].layoutParams as ViewGroup.MarginLayoutParams
val translationX: Float = (taskViewWidth - banner.height).toFloat()
val translationY: Float
if (splitBounds == null) {
@@ -78,14 +78,27 @@ class DesktopTaskView @JvmOverloads constructor(context: Context, attrs: Attribu
private val contentViewFullscreenParams = FullscreenDrawParams(context)
private val taskThumbnailViewDeprecatedPool =
if (!enableRefactorTaskThumbnail()) {
ViewPool<TaskThumbnailViewDeprecated>(
context,
this,
R.layout.task_thumbnail_deprecated,
VIEW_POOL_MAX_SIZE,
VIEW_POOL_INITIAL_SIZE,
)
} else null
private val taskContentViewPool =
ViewPool<TaskContentView>(
context,
this,
R.layout.task_content_view,
VIEW_POOL_MAX_SIZE,
VIEW_POOL_INITIAL_SIZE,
)
if (enableRefactorTaskThumbnail()) {
ViewPool<TaskContentView>(
context,
this,
R.layout.task_content_view,
VIEW_POOL_MAX_SIZE,
VIEW_POOL_INITIAL_SIZE,
)
} else null
private val tempPointF = PointF()
private val lastComputedTaskSize = Rect()
@@ -262,7 +275,7 @@ class DesktopTaskView @JvmOverloads constructor(context: Context, attrs: Attribu
if (
enableDesktopRecentsTransitionsCornersBugfix() && enableRefactorTaskThumbnail()
) {
it.taskContentView?.outlineBounds =
(it.taskContentView as TaskContentView).outlineBounds =
if (intersects(overviewTaskPosition, screenRect))
Rect(overviewTaskPosition).apply {
intersectUnchecked(screenRect)
@@ -313,13 +326,15 @@ class DesktopTaskView @JvmOverloads constructor(context: Context, attrs: Attribu
val backgroundViewIndex = contentView.indexOfChild(backgroundView)
taskContainers =
tasks.map { task ->
val taskContentView = taskContentViewPool.view
val taskContentView =
if (enableRefactorTaskThumbnail()) taskContentViewPool!!.view
else taskThumbnailViewDeprecatedPool!!.view
contentView.addView(taskContentView, backgroundViewIndex + 1)
val snapshotView =
if (enableRefactorTaskThumbnail()) {
taskContentView.findViewById<TaskThumbnailView>(R.id.snapshot)
} else {
taskContentView.findViewById<TaskThumbnailViewDeprecated>(R.id.snapshot)
taskContentView
}
TaskContainer(
@@ -479,7 +494,11 @@ class DesktopTaskView @JvmOverloads constructor(context: Context, attrs: Attribu
private fun removeAndRecycleThumbnailView(taskContainer: TaskContainer) {
contentView.removeView(taskContainer.taskContentView)
taskContentViewPool.recycle(taskContainer.taskContentView)
if (enableRefactorTaskThumbnail()) {
taskContentViewPool!!.recycle(taskContainer.taskContentView as TaskContentView)
} else {
taskThumbnailViewDeprecatedPool!!.recycle(taskContainer.thumbnailViewDeprecated)
}
}
private fun updateTaskPositions() {
@@ -24,6 +24,7 @@ import android.view.View
import android.view.ViewStub
import com.android.internal.jank.Cuj
import com.android.launcher3.Flags.enableOverviewIconMenu
import com.android.launcher3.Flags.enableRefactorTaskThumbnail
import com.android.launcher3.R
import com.android.launcher3.Utilities
import com.android.launcher3.util.RunnableList
@@ -94,8 +95,16 @@ class GroupedTaskView @JvmOverloads constructor(context: Context, attrs: Attribu
override fun inflateViewStubs() {
super.inflateViewStubs()
val taskContentViewLayoutId =
if (enableRefactorTaskThumbnail()) R.layout.task_content_view
else R.layout.task_thumbnail_deprecated
findViewById<ViewStub>(R.id.bottomright_task_content_view)
?.apply { layoutResource = R.layout.task_content_view }
?.apply {
inflatedId =
if (enableRefactorTaskThumbnail()) R.id.bottomright_task_content_view
else R.id.bottomright_snapshot
layoutResource = taskContentViewLayoutId
}
?.inflate()
findViewById<ViewStub>(R.id.bottomRight_icon)
?.apply {
@@ -134,7 +143,7 @@ class GroupedTaskView @JvmOverloads constructor(context: Context, attrs: Attribu
createTaskContainer(
secondaryTask,
R.id.bottomright_task_content_view,
R.id.snapshot,
if (enableRefactorTaskThumbnail()) R.id.snapshot else R.id.bottomright_snapshot,
R.id.bottomRight_icon,
R.id.show_windows_right,
R.id.bottomRight_digital_wellbeing_toast,
@@ -40,7 +40,8 @@ import com.android.systemui.shared.recents.model.ThumbnailData
class TaskContainer(
val taskView: TaskView,
val task: Task,
val taskContentView: TaskContentView,
// TODO(b/361500574): Upon flag cleanup, use the TaskContentView type and remove the getter
val taskContentView: View,
val snapshotView: View,
val iconView: TaskViewIcon,
/**
@@ -62,8 +63,10 @@ class TaskContainer(
init {
if (enableRefactorTaskThumbnail()) {
require(taskContentView is TaskContentView)
require(snapshotView is TaskThumbnailView)
} else {
require(taskContentView is TaskThumbnailViewDeprecated)
require(snapshotView is TaskThumbnailViewDeprecated)
}
}
@@ -174,7 +177,7 @@ class TaskContainer(
clickCloseListener: OnClickListener?,
) =
traceSection("TaskContainer.setState") {
taskContentView.setState(
(taskContentView as TaskContentView).setState(
TaskUiStateMapper.toTaskHeaderState(state, hasHeader, clickCloseListener),
TaskUiStateMapper.toTaskThumbnailUiState(state, liveTile),
state?.taskId,
@@ -765,8 +765,16 @@ constructor(
}
protected open fun inflateViewStubs() {
val taskContentViewLayoutId =
if (enableRefactorTaskThumbnail()) R.layout.task_content_view
else R.layout.task_thumbnail_deprecated
findViewById<ViewStub>(R.id.task_content_view)
?.apply { layoutResource = R.layout.task_content_view }
?.apply {
inflatedId =
if (enableRefactorTaskThumbnail()) R.id.task_content_view else R.id.snapshot
layoutResource = taskContentViewLayoutId
}
?.inflate()
findViewById<ViewStub>(R.id.icon)
@@ -936,7 +944,7 @@ constructor(
taskContainers.forEach { container ->
container.bind()
if (enableRefactorTaskThumbnail()) {
container.taskContentView.cornerRadius =
(container.taskContentView as TaskContentView).cornerRadius =
thumbnailFullscreenParams.currentCornerRadius
container.taskContentView.doOnSizeChange { width, height ->
updateThumbnailValidity(container)
@@ -975,12 +983,17 @@ constructor(
): TaskContainer =
traceSection("TaskView.createTaskContainer") {
val iconView = findViewById<View>(iconViewId) as TaskViewIcon
val taskContentView = findViewById<TaskContentView>(taskContentViewId)
val taskContentView =
if (enableRefactorTaskThumbnail()) findViewById<View>(taskContentViewId)
else findViewById(thumbnailViewId)
val snapshotView =
if (enableRefactorTaskThumbnail()) taskContentView.findViewById(thumbnailViewId)
else taskContentView
return TaskContainer(
this,
task,
taskContentView,
taskContentView.findViewById(thumbnailViewId),
snapshotView,
iconView,
TransformingTouchDelegate(iconView.asView()),
stagePosition,
@@ -1801,7 +1814,8 @@ constructor(
updateFullscreenParams(thumbnailFullscreenParams)
taskContainers.forEach {
if (enableRefactorTaskThumbnail()) {
it.taskContentView.cornerRadius = thumbnailFullscreenParams.currentCornerRadius
(it.taskContentView as TaskContentView).cornerRadius =
thumbnailFullscreenParams.currentCornerRadius
} else {
it.thumbnailViewDeprecated.setFullscreenParams(thumbnailFullscreenParams)
}