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

Commit 6b4b9b5d authored by Sunny Goyal's avatar Sunny Goyal
Browse files

Removing extra binder call on state or visibility change

> fixing a bug where we do not match task events against managed user

Bug: 78585335
Change-Id: I9183e81ea63f8ab51f45d5140301d281234caf2b
parent cf4f8c0c
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -15,6 +15,8 @@
 */
package com.android.quickstep;

import static com.android.quickstep.TaskUtils.checkCurrentOrManagedUserId;

import android.annotation.TargetApi;
import android.app.ActivityManager;
import android.content.ComponentCallbacks2;
@@ -190,7 +192,7 @@ public class RecentsModel extends TaskStackChangeListener {
    @Override
    public void onTaskStackChangedBackground() {
        int userId = UserHandle.myUserId();
        if (!mPreloadTasksInBackground || !checkCurrentUserId(userId, false /* debug */)) {
        if (!mPreloadTasksInBackground || !checkCurrentOrManagedUserId(userId, mContext)) {
            // TODO: Only register this for the current user
            return;
        }
+15 −0
Original line number Diff line number Diff line
@@ -47,6 +47,8 @@ import com.android.quickstep.views.TaskView;
import com.android.systemui.shared.recents.model.Task;
import com.android.systemui.shared.system.RemoteAnimationTargetCompat;

import java.util.List;

/**
 * Contains helpful methods for retrieving data from {@link Task}s.
 */
@@ -207,4 +209,17 @@ public class TaskUtils {
        }
        return false;
    }

    public static boolean checkCurrentOrManagedUserId(int currentUserId, Context context) {
        if (currentUserId == UserHandle.myUserId()) {
            return true;
        }
        List<UserHandle> allUsers = UserManagerCompat.getInstance(context).getUserProfiles();
        for (int i = allUsers.size() - 1; i >= 0; i--) {
            if (currentUserId == allUsers.get(i).getIdentifier()) {
                return true;
            }
        }
        return false;
    }
}
+21 −16
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@ import static com.android.launcher3.anim.Interpolators.ACCEL;
import static com.android.launcher3.anim.Interpolators.ACCEL_2;
import static com.android.launcher3.anim.Interpolators.FAST_OUT_SLOW_IN;
import static com.android.launcher3.anim.Interpolators.LINEAR;
import static com.android.quickstep.TaskUtils.checkCurrentOrManagedUserId;

import android.animation.AnimatorSet;
import android.animation.ObjectAnimator;
@@ -122,13 +123,19 @@ public abstract class RecentsView<T extends BaseActivity> extends PagedView impl
    private final TaskStackChangeListener mTaskStackListener = new TaskStackChangeListener() {
        @Override
        public void onTaskSnapshotChanged(int taskId, ThumbnailData snapshot) {
            if (!mHandleTaskStackChanges) {
                return;
            }
            updateThumbnail(taskId, snapshot);
        }

        @Override
        public void onActivityPinned(String packageName, int userId, int taskId, int stackId) {
            if (!mHandleTaskStackChanges) {
                return;
            }
            // Check this is for the right user
            if (!checkCurrentUserId(userId, false /* debug */)) {
            if (!checkCurrentOrManagedUserId(userId, getContext())) {
                return;
            }

@@ -141,20 +148,24 @@ public abstract class RecentsView<T extends BaseActivity> extends PagedView impl

        @Override
        public void onActivityUnpinned() {
            if (!mHandleTaskStackChanges) {
                return;
            }
            // TODO: Re-enable layout transitions for addition of the unpinned task
            reloadIfNeeded();
        }

        @Override
        public void onTaskRemoved(int taskId) {
            if (!mHandleTaskStackChanges) {
                return;
            }
            TaskView taskView = getTaskView(taskId);
            if (taskView != null) {
                dismissTask(taskView, true /* animate */, false /* removeTask */);
            }
        }
    };

    private TaskStackChangeListener mTaskStackClearFlagListener = new TaskStackChangeListener() {
        @Override
        public void onPinnedStackAnimationStarted() {
            // Needed for activities that auto-enter PiP, which will not trigger a remote
@@ -173,7 +184,7 @@ public abstract class RecentsView<T extends BaseActivity> extends PagedView impl
    private boolean mRunningTaskIconScaledDown = false;

    private boolean mOverviewStateEnabled;
    private boolean mTaskStackListenerRegistered;
    private boolean mHandleTaskStackChanges;
    private Runnable mNextPageSwitchRunnable;
    private boolean mSwipeDownShouldLaunchApp;

@@ -260,7 +271,7 @@ public abstract class RecentsView<T extends BaseActivity> extends PagedView impl
        super.onAttachedToWindow();
        updateTaskStackListenerState();
        mActivity.addMultiWindowModeChangedListener(mMultiWindowModeChangedListener);
        ActivityManagerWrapper.getInstance().registerTaskStackListener(mTaskStackClearFlagListener);
        ActivityManagerWrapper.getInstance().registerTaskStackListener(mTaskStackListener);
    }

    @Override
@@ -268,8 +279,7 @@ public abstract class RecentsView<T extends BaseActivity> extends PagedView impl
        super.onDetachedFromWindow();
        updateTaskStackListenerState();
        mActivity.removeMultiWindowModeChangedListener(mMultiWindowModeChangedListener);
        ActivityManagerWrapper.getInstance().unregisterTaskStackListener(
                mTaskStackClearFlagListener);
        ActivityManagerWrapper.getInstance().unregisterTaskStackListener(mTaskStackListener);
    }

    @Override
@@ -433,18 +443,13 @@ public abstract class RecentsView<T extends BaseActivity> extends PagedView impl
    }

    private void updateTaskStackListenerState() {
        boolean registerStackListener = mOverviewStateEnabled && isAttachedToWindow()
        boolean handleTaskStackChanges = mOverviewStateEnabled && isAttachedToWindow()
                && getWindowVisibility() == VISIBLE;
        if (registerStackListener != mTaskStackListenerRegistered) {
            if (registerStackListener) {
                ActivityManagerWrapper.getInstance()
                        .registerTaskStackListener(mTaskStackListener);
        if (handleTaskStackChanges != mHandleTaskStackChanges) {
            mHandleTaskStackChanges = handleTaskStackChanges;
            if (handleTaskStackChanges) {
                reloadIfNeeded();
            } else {
                ActivityManagerWrapper.getInstance()
                        .unregisterTaskStackListener(mTaskStackListener);
            }
            mTaskStackListenerRegistered = registerStackListener;
        }
    }