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

Commit f6f34ca4 authored by Uwais Ashraf's avatar Uwais Ashraf
Browse files

Add TasksRepository

Bug: 334825222
Test: TasksRepositoryTest
Flag: com.android.launcher3.enable_refactor_task_thumbnail
Change-Id: I3e08dea7b205df54f8bef456ead6466aa2ce45c6
parent e21d6b15
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -148,7 +148,7 @@ public final class KeyboardQuickSwitchController implements
        });
    }

    private void processLoadedTasks(ArrayList<GroupTask> tasks) {
    private void processLoadedTasks(List<GroupTask> tasks) {
        // Only store MAX_TASK tasks, from most to least recent
        Collections.reverse(tasks);
        mTasks = tasks.stream()
@@ -157,7 +157,7 @@ public final class KeyboardQuickSwitchController implements
        mNumHiddenTasks = Math.max(0, tasks.size() - MAX_TASKS);
    }

    private void processLoadedTasksOnDesktop(ArrayList<GroupTask> tasks) {
    private void processLoadedTasksOnDesktop(List<GroupTask> tasks) {
        // Find the single desktop task that contains a grouping of desktop tasks
        DesktopTask desktopTask = findDesktopTask(tasks);

@@ -173,7 +173,7 @@ public final class KeyboardQuickSwitchController implements
    }

    @Nullable
    private DesktopTask findDesktopTask(ArrayList<GroupTask> tasks) {
    private DesktopTask findDesktopTask(List<GroupTask> tasks) {
        return (DesktopTask) tasks.stream()
                .filter(t -> t instanceof DesktopTask)
                .findFirst()
+3 −1
Original line number Diff line number Diff line
@@ -31,6 +31,7 @@ import android.os.Process;
import android.os.RemoteException;
import android.util.SparseBooleanArray;

import androidx.annotation.Nullable;
import androidx.annotation.VisibleForTesting;

import com.android.launcher3.util.LooperExecutor;
@@ -44,6 +45,7 @@ import com.android.wm.shell.util.GroupedRecentTaskInfo;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.function.Consumer;
import java.util.function.Predicate;
import java.util.stream.Collectors;
@@ -137,7 +139,7 @@ public class RecentTasksList {
     * @return The change id of the current task list
     */
    public synchronized int getTasks(boolean loadKeysOnly,
            Consumer<ArrayList<GroupTask>> callback, Predicate<GroupTask> filter) {
            @Nullable Consumer<List<GroupTask>> callback, Predicate<GroupTask> filter) {
        final int requestLoadId = mChangeId;
        if (mResultsUi.isValidForRequest(requestLoadId, loadKeysOnly)) {
            // The list is up to date, send the callback on the next frame,
+7 −4
Original line number Diff line number Diff line
@@ -33,6 +33,7 @@ import android.os.Build;
import android.os.Process;
import android.os.UserHandle;

import androidx.annotation.Nullable;
import androidx.annotation.VisibleForTesting;

import com.android.launcher3.icons.IconProvider;
@@ -40,6 +41,7 @@ import com.android.launcher3.icons.IconProvider.IconChangeListener;
import com.android.launcher3.util.Executors.SimpleThreadFactory;
import com.android.launcher3.util.MainThreadInitializedObject;
import com.android.launcher3.util.SafeCloseable;
import com.android.quickstep.recents.data.RecentTasksDataSource;
import com.android.quickstep.util.GroupTask;
import com.android.quickstep.util.TaskVisualsChangeListener;
import com.android.systemui.shared.recents.model.Task;
@@ -60,8 +62,8 @@ import java.util.function.Predicate;
 * Singleton class to load and manage recents model.
 */
@TargetApi(Build.VERSION_CODES.O)
public class RecentsModel implements IconChangeListener, TaskStackChangeListener,
        TaskVisualsChangeListener, SafeCloseable {
public class RecentsModel implements RecentTasksDataSource, IconChangeListener,
        TaskStackChangeListener, TaskVisualsChangeListener, SafeCloseable {

    // We do not need any synchronization for this variable as its only written on UI thread.
    public static final MainThreadInitializedObject<RecentsModel> INSTANCE =
@@ -141,7 +143,8 @@ public class RecentsModel implements IconChangeListener, TaskStackChangeListener
     *                always called on the UI thread.
     * @return the request id associated with this call.
     */
    public int getTasks(Consumer<ArrayList<GroupTask>> callback) {
    @Override
    public int getTasks(@Nullable Consumer<List<GroupTask>> callback) {
        return mTaskList.getTasks(false /* loadKeysOnly */, callback,
                RecentsFilterState.DEFAULT_FILTER);
    }
@@ -155,7 +158,7 @@ public class RecentsModel implements IconChangeListener, TaskStackChangeListener
     *                callback.
     * @return the request id associated with this call.
     */
    public int getTasks(Consumer<ArrayList<GroupTask>> callback, Predicate<GroupTask> filter) {
    public int getTasks(@Nullable Consumer<List<GroupTask>> callback, Predicate<GroupTask> filter) {
        return mTaskList.getTasks(false /* loadKeysOnly */, callback, filter);
    }

+5 −2
Original line number Diff line number Diff line
@@ -21,11 +21,13 @@ import static com.android.launcher3.util.Executors.MAIN_EXECUTOR;
import android.content.Context;
import android.content.res.Resources;

import androidx.annotation.NonNull;
import androidx.annotation.VisibleForTesting;

import com.android.launcher3.R;
import com.android.launcher3.util.CancellableTask;
import com.android.launcher3.util.Preconditions;
import com.android.quickstep.task.thumbnail.data.TaskThumbnailDataSource;
import com.android.quickstep.util.TaskKeyByLastActiveTimeCache;
import com.android.quickstep.util.TaskKeyCache;
import com.android.quickstep.util.TaskKeyLruCache;
@@ -38,7 +40,7 @@ import java.util.ArrayList;
import java.util.concurrent.Executor;
import java.util.function.Consumer;

public class TaskThumbnailCache {
public class TaskThumbnailCache implements TaskThumbnailDataSource {

    private final Executor mBgExecutor;
    private final TaskKeyCache<ThumbnailData> mCache;
@@ -148,8 +150,9 @@ public class TaskThumbnailCache {
     * @param callback The callback to receive the task after its data has been populated.
     * @return A cancelable handle to the request
     */
    @Override
    public CancellableTask<ThumbnailData> updateThumbnailInBackground(
            Task task, Consumer<ThumbnailData> callback) {
            Task task, @NonNull Consumer<ThumbnailData> callback) {
        Preconditions.assertUIThread();

        boolean lowResolution = !mHighResLoadingState.isEnabled();
+2 −1
Original line number Diff line number Diff line
@@ -54,6 +54,7 @@ import com.android.systemui.shared.recents.model.Task;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class FallbackRecentsView extends RecentsView<RecentsActivity, RecentsState>
        implements StateListener<RecentsState> {
@@ -179,7 +180,7 @@ public class FallbackRecentsView extends RecentsView<RecentsActivity, RecentsSta
    }

    @Override
    protected void applyLoadPlan(ArrayList<GroupTask> taskGroups) {
    protected void applyLoadPlan(List<GroupTask> taskGroups) {
        // When quick-switching on 3p-launcher, we add a "stub" tile corresponding to Launcher
        // as well. This tile is never shown as we have setCurrentTaskHidden, but allows use to
        // track the index of the next task appropriately, as if we are switching on any other app.
Loading