Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d3e1d7ba authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Fixes to allow enabling of enable_refactor_task_thumbnail flag" into main

parents bfe4d6b4 61e6cb27
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@
<com.android.quickstep.task.thumbnail.TaskThumbnailView
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/snapshot"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

+9 −3
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@
package com.android.quickstep.recents.data

import android.graphics.drawable.Drawable
import android.util.Log
import com.android.launcher3.util.coroutines.DispatcherProvider
import com.android.quickstep.recents.data.TaskVisualsChangedDelegate.TaskIconChangedCallback
import com.android.quickstep.recents.data.TaskVisualsChangedDelegate.TaskThumbnailChangedCallback
@@ -106,7 +107,7 @@ class TasksRepository(
                }
            }
            .flowOn(dispatcherProvider.io)
            .shareIn(recentsCoroutineScope, SharingStarted.WhileSubscribed(), replay = 1)
            .shareIn(recentsCoroutineScope, SharingStarted.WhileSubscribed(5000), replay = 1)

    override fun getAllTaskData(forceRefresh: Boolean): Flow<List<Task>> {
        if (forceRefresh) {
@@ -122,6 +123,7 @@ class TasksRepository(
        getTaskDataById(taskId).map { it?.thumbnail }.distinctUntilChangedBy { it?.snapshotId }

    override fun setVisibleTasks(visibleTaskIdList: List<Int>) {
        Log.d(TAG, "setVisibleTasks: $visibleTaskIdList")
        this.visibleTaskIds.value = visibleTaskIdList.toSet()
    }

@@ -185,7 +187,7 @@ class TasksRepository(
                                TaskIconQueryResponse(
                                    it.newDrawable().mutate(),
                                    contentDescription,
                                    title
                                    title,
                                )
                            )
                        }
@@ -193,12 +195,16 @@ class TasksRepository(
                continuation.invokeOnCancellation { cancellableTask?.cancel() }
            }
        }

    companion object {
        private const val TAG = "TasksRepository"
    }
}

data class TaskIconQueryResponse(
    val icon: Drawable,
    val contentDescription: String,
    val title: String
    val title: String,
)

private fun Task.getTaskIconQueryResponse(): TaskIconQueryResponse? {
+14 −12
Original line number Diff line number Diff line
@@ -66,7 +66,7 @@ class RecentsDependencies private constructor(private val appContext: Context) {
            val taskVisualsChangedDelegate =
                TaskVisualsChangedDelegateImpl(
                    recentsModel,
                    recentsModel.thumbnailCache.highResLoadingState
                    recentsModel.thumbnailCache.highResLoadingState,
                )
            set(TaskVisualsChangedDelegate::class.java.simpleName, taskVisualsChangedDelegate)

@@ -79,7 +79,7 @@ class RecentsDependencies private constructor(private val appContext: Context) {
                        iconCache,
                        taskVisualsChangedDelegate,
                        recentsCoroutineScope,
                        ProductionDispatchers
                        ProductionDispatchers,
                    )
                }
            set(RecentTasksRepository::class.java.simpleName, recentTasksRepository)
@@ -155,7 +155,8 @@ class RecentsDependencies private constructor(private val appContext: Context) {
        scopeId: RecentsScopeId,
        extras: RecentsDependenciesExtras,
    ): T {
        log("createDependency ${modelClass.simpleName} with $scopeId and $extras", Log.WARN)
        log("createDependency ${modelClass.simpleName} with $scopeId and $extras started", Log.WARN)
        log("linked scopes: ${getScope(scopeId).scopeIdsLinked}")
        val instance: Any =
            when (modelClass) {
                RecentTasksRepository::class.java -> {
@@ -166,7 +167,7 @@ class RecentsDependencies private constructor(private val appContext: Context) {
                            iconCache,
                            get(),
                            get(),
                            ProductionDispatchers
                            ProductionDispatchers,
                        )
                    }
                }
@@ -193,7 +194,7 @@ class RecentsDependencies private constructor(private val appContext: Context) {
                        task = task,
                        recentsViewData = inject(),
                        recentTasksRepository = inject(),
                        getThumbnailPositionUseCase = inject()
                        getThumbnailPositionUseCase = inject(),
                    )
                }
                GetThumbnailUseCase::class.java -> GetThumbnailUseCase(taskRepository = inject())
@@ -203,7 +204,7 @@ class RecentsDependencies private constructor(private val appContext: Context) {
                    GetThumbnailPositionUseCase(
                        deviceProfileRepository = inject(),
                        rotationStateRepository = inject(),
                        tasksRepository = inject()
                        tasksRepository = inject(),
                    )
                SplashAlphaUseCase::class.java ->
                    SplashAlphaUseCase(
@@ -218,7 +219,12 @@ class RecentsDependencies private constructor(private val appContext: Context) {
                    error("Factory for ${modelClass.simpleName} not defined!")
                }
            }
        return instance as T
        return (instance as T).also {
            log(
                "createDependency ${modelClass.simpleName} with $scopeId and $extras completed",
                Log.WARN,
            )
        }
    }

    private fun createScope(scopeId: RecentsScopeId): RecentsDependenciesScope {
@@ -247,11 +253,7 @@ class RecentsDependencies private constructor(private val appContext: Context) {
        fun initialize(view: View): RecentsDependencies = initialize(view.context)

        fun initialize(context: Context): RecentsDependencies {
            synchronized(this) {
                if (!Companion::instance.isInitialized) {
                    instance = RecentsDependencies(context.applicationContext)
                }
            }
            synchronized(this) { instance = RecentsDependencies(context.applicationContext) }
            return instance
        }

+7 −1
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@ import android.graphics.Color
import android.graphics.Outline
import android.graphics.Rect
import android.util.AttributeSet
import android.util.Log
import android.view.View
import android.view.ViewOutlineProvider
import androidx.annotation.ColorInt
@@ -92,6 +93,7 @@ class TaskThumbnailView : ConstraintLayout, ViewPool.Reusable {
            CoroutineScope(SupervisorJob() + Dispatchers.Main + CoroutineName("TaskThumbnailView"))
        viewModel.uiState
            .onEach { viewModelUiState ->
                Log.d(TAG, "viewModelUiState changed from $uiState to: $viewModelUiState")
                uiState = viewModelUiState
                resetViews()
                when (viewModelUiState) {
@@ -211,6 +213,10 @@ class TaskThumbnailView : ConstraintLayout, ViewPool.Reusable {
        Utilities.mapRange(
            viewModel.cornerRadiusProgress.value,
            overviewCornerRadius,
            fullscreenCornerRadius
            fullscreenCornerRadius,
        ) / inheritedScale

    private companion object {
        const val TAG = "TaskThumbnailView"
    }
}
+11 −1
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ package com.android.quickstep.task.viewmodel
import android.annotation.ColorInt
import android.app.ActivityTaskManager.INVALID_TASK_ID
import android.graphics.Matrix
import android.util.Log
import androidx.core.graphics.ColorUtils
import com.android.quickstep.recents.data.RecentTasksRepository
import com.android.quickstep.recents.usecase.GetThumbnailPositionUseCase
@@ -82,7 +83,7 @@ class TaskThumbnailViewModel(
        combine(
                task.flatMapLatest { it }.map { it?.key?.id }.distinctUntilChanged(),
                recentsViewData.runningTaskIds,
                recentsViewData.runningTaskShowScreenshot
                recentsViewData.runningTaskShowScreenshot,
            ) { taskId, runningTaskIds, runningTaskShowScreenshot ->
                runningTaskIds.contains(taskId) && !runningTaskShowScreenshot
            }
@@ -90,6 +91,13 @@ class TaskThumbnailViewModel(

    val uiState: Flow<TaskThumbnailUiState> =
        combine(task.flatMapLatest { it }, isLiveTile) { taskVal, isRunning ->
                // TODO(b/369339561) This log is firing a lot. Reduce emissions from TasksRepository
                //  then re-enable this log.
                //                Log.d(
                //                    TAG,
                //                    "Received task and / or live tile update. taskVal: $taskVal"
                //                    + " isRunning: $isRunning.",
                //                )
                when {
                    taskVal == null -> Uninitialized
                    isRunning -> LiveTile
@@ -103,6 +111,7 @@ class TaskThumbnailViewModel(
            .distinctUntilChanged()

    fun bind(taskId: Int) {
        Log.d(TAG, "bind taskId: $taskId")
        this.taskId = taskId
        task.value = tasksRepository.getTaskDataById(taskId)
        splashProgress.value = splashAlphaUseCase.execute(taskId)
@@ -139,5 +148,6 @@ class TaskThumbnailViewModel(

    private companion object {
        const val MAX_SCRIM_ALPHA = 0.4f
        const val TAG = "TaskThumbnailViewModel"
    }
}
Loading