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

Commit 190feaf5 authored by Evan Rosky's avatar Evan Rosky Committed by Automerger Merge Worker
Browse files

Merge "Fix some shell transitions bugs breaking splashscreen cts" into...

Merge "Fix some shell transitions bugs breaking splashscreen cts" into sc-v2-dev am: 317e6698 am: 795aea96

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/15340839

Change-Id: I88013acc91747d50a3c6fe029570e2edfe2dfeb3
parents a0bf4d89 795aea96
Loading
Loading
Loading
Loading
+16 −1
Original line number Original line Diff line number Diff line
@@ -21,7 +21,9 @@ import static android.app.WindowConfiguration.ACTIVITY_TYPE_UNDEFINED;
import android.annotation.IntDef;
import android.annotation.IntDef;
import android.annotation.NonNull;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.Nullable;
import android.app.ActivityManager;
import android.app.WindowConfiguration;
import android.app.WindowConfiguration;
import android.content.ComponentName;
import android.os.Parcel;
import android.os.Parcel;
import android.os.Parcelable;
import android.os.Parcelable;


@@ -140,6 +142,7 @@ public final class TransitionFilter implements Parcelable {
        public int mActivityType = ACTIVITY_TYPE_UNDEFINED;
        public int mActivityType = ACTIVITY_TYPE_UNDEFINED;
        public int[] mModes = null;
        public int[] mModes = null;
        public @ContainerOrder int mOrder = CONTAINER_ORDER_ANY;
        public @ContainerOrder int mOrder = CONTAINER_ORDER_ANY;
        public ComponentName mTopActivity;


        public Requirement() {
        public Requirement() {
        }
        }
@@ -148,6 +151,7 @@ public final class TransitionFilter implements Parcelable {
            mActivityType = in.readInt();
            mActivityType = in.readInt();
            mModes = in.createIntArray();
            mModes = in.createIntArray();
            mOrder = in.readInt();
            mOrder = in.readInt();
            mTopActivity = in.readTypedObject(ComponentName.CREATOR);
        }
        }


        /** Go through changes and find if at-least one change matches this filter */
        /** Go through changes and find if at-least one change matches this filter */
@@ -167,6 +171,7 @@ public final class TransitionFilter implements Parcelable {
                        continue;
                        continue;
                    }
                    }
                }
                }
                if (!matchesTopActivity(change.getTaskInfo())) continue;
                if (mModes != null) {
                if (mModes != null) {
                    boolean pass = false;
                    boolean pass = false;
                    for (int m = 0; m < mModes.length; ++m) {
                    for (int m = 0; m < mModes.length; ++m) {
@@ -182,12 +187,20 @@ public final class TransitionFilter implements Parcelable {
            return false;
            return false;
        }
        }


        private boolean matchesTopActivity(ActivityManager.RunningTaskInfo info) {
            if (mTopActivity == null) return true;
            if (info == null) return false;
            final ComponentName component = info.topActivity;
            return mTopActivity.equals(component);
        }

        /** Check if the request matches this filter. It may generate false positives */
        /** Check if the request matches this filter. It may generate false positives */
        boolean matches(@NonNull TransitionRequestInfo request) {
        boolean matches(@NonNull TransitionRequestInfo request) {
            // Can't check modes/order since the transition hasn't been built at this point.
            // Can't check modes/order since the transition hasn't been built at this point.
            if (mActivityType == ACTIVITY_TYPE_UNDEFINED) return true;
            if (mActivityType == ACTIVITY_TYPE_UNDEFINED) return true;
            return request.getTriggerTask() != null
            return request.getTriggerTask() != null
                    && request.getTriggerTask().getActivityType() == mActivityType;
                    && request.getTriggerTask().getActivityType() == mActivityType
                    && matchesTopActivity(request.getTriggerTask());
        }
        }


        @Override
        @Override
@@ -196,6 +209,7 @@ public final class TransitionFilter implements Parcelable {
            dest.writeInt(mActivityType);
            dest.writeInt(mActivityType);
            dest.writeIntArray(mModes);
            dest.writeIntArray(mModes);
            dest.writeInt(mOrder);
            dest.writeInt(mOrder);
            dest.writeTypedObject(mTopActivity, flags);
        }
        }


        @NonNull
        @NonNull
@@ -230,6 +244,7 @@ public final class TransitionFilter implements Parcelable {
            }
            }
            out.append("]").toString();
            out.append("]").toString();
            out.append(" order=" + containerOrderToString(mOrder));
            out.append(" order=" + containerOrderToString(mOrder));
            out.append(" topActivity=").append(mTopActivity);
            return out.toString();
            return out.toString();
        }
        }
    }
    }
+3 −1
Original line number Original line Diff line number Diff line
@@ -29,6 +29,7 @@ import android.annotation.Nullable;
import android.annotation.SuppressLint;
import android.annotation.SuppressLint;
import android.app.ActivityManager;
import android.app.ActivityManager;
import android.app.ActivityTaskManager;
import android.app.ActivityTaskManager;
import android.content.ComponentName;
import android.graphics.Rect;
import android.graphics.Rect;
import android.os.IBinder;
import android.os.IBinder;
import android.os.Parcelable;
import android.os.Parcelable;
@@ -166,7 +167,7 @@ public class RemoteTransitionCompat implements Parcelable {
    }
    }


    /** Adds a filter check that restricts this remote transition to home open transitions. */
    /** Adds a filter check that restricts this remote transition to home open transitions. */
    public void addHomeOpenCheck() {
    public void addHomeOpenCheck(ComponentName homeActivity) {
        if (mFilter == null) {
        if (mFilter == null) {
            mFilter = new TransitionFilter();
            mFilter = new TransitionFilter();
        }
        }
@@ -174,6 +175,7 @@ public class RemoteTransitionCompat implements Parcelable {
                new TransitionFilter.Requirement[]{new TransitionFilter.Requirement(),
                new TransitionFilter.Requirement[]{new TransitionFilter.Requirement(),
                        new TransitionFilter.Requirement()};
                        new TransitionFilter.Requirement()};
        mFilter.mRequirements[0].mActivityType = ACTIVITY_TYPE_HOME;
        mFilter.mRequirements[0].mActivityType = ACTIVITY_TYPE_HOME;
        mFilter.mRequirements[0].mTopActivity = homeActivity;
        mFilter.mRequirements[0].mModes = new int[]{TRANSIT_OPEN, TRANSIT_TO_FRONT};
        mFilter.mRequirements[0].mModes = new int[]{TRANSIT_OPEN, TRANSIT_TO_FRONT};
        mFilter.mRequirements[0].mOrder = CONTAINER_ORDER_TOP;
        mFilter.mRequirements[0].mOrder = CONTAINER_ORDER_TOP;
        mFilter.mRequirements[1].mActivityType = ACTIVITY_TYPE_STANDARD;
        mFilter.mRequirements[1].mActivityType = ACTIVITY_TYPE_STANDARD;