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

Commit 941a2e72 authored by Chris Li's avatar Chris Li Committed by Android (Google) Code Review
Browse files

Merge "Play ActivityEmbedding animation if all changes in Task with embedded" into tm-qpr-dev

parents db23075a 1efadcb9
Loading
Loading
Loading
Loading
+12 −12
Original line number Diff line number Diff line
@@ -110,8 +110,8 @@ public final class TransitionInfo implements Parcelable {
    /** The container is an input-method window. */
    public static final int FLAG_IS_INPUT_METHOD = 1 << 8;

    /** The container is ActivityEmbedding embedded. */
    public static final int FLAG_IS_EMBEDDED = 1 << 9;
    /** The container is in a Task with embedded activity. */
    public static final int FLAG_IN_TASK_WITH_EMBEDDED_ACTIVITY = 1 << 9;

    /** The first unused bit. This can be used by remotes to attach custom flags to this change. */
    public static final int FLAG_FIRST_CUSTOM = 1 << 10;
@@ -137,7 +137,7 @@ public final class TransitionInfo implements Parcelable {
            FLAG_OCCLUDES_KEYGUARD,
            FLAG_DISPLAY_HAS_ALERT_WINDOWS,
            FLAG_IS_INPUT_METHOD,
            FLAG_IS_EMBEDDED,
            FLAG_IN_TASK_WITH_EMBEDDED_ACTIVITY,
            FLAG_FIRST_CUSTOM,
            FLAG_WILL_IME_SHOWN
    })
@@ -322,28 +322,28 @@ public final class TransitionInfo implements Parcelable {
            sb.append("IS_INPUT_METHOD");
        }
        if ((flags & FLAG_TRANSLUCENT) != 0) {
            sb.append((sb.length() == 0 ? "" : "|") + "TRANSLUCENT");
            sb.append(sb.length() == 0 ? "" : "|").append("TRANSLUCENT");
        }
        if ((flags & FLAG_STARTING_WINDOW_TRANSFER_RECIPIENT) != 0) {
            sb.append((sb.length() == 0 ? "" : "|") + "STARTING_WINDOW_TRANSFER");
            sb.append(sb.length() == 0 ? "" : "|").append("STARTING_WINDOW_TRANSFER");
        }
        if ((flags & FLAG_IS_VOICE_INTERACTION) != 0) {
            sb.append((sb.length() == 0 ? "" : "|") + "IS_VOICE_INTERACTION");
            sb.append(sb.length() == 0 ? "" : "|").append("IS_VOICE_INTERACTION");
        }
        if ((flags & FLAG_IS_DISPLAY) != 0) {
            sb.append((sb.length() == 0 ? "" : "|") + "IS_DISPLAY");
            sb.append(sb.length() == 0 ? "" : "|").append("IS_DISPLAY");
        }
        if ((flags & FLAG_OCCLUDES_KEYGUARD) != 0) {
            sb.append((sb.length() == 0 ? "" : "|") + "OCCLUDES_KEYGUARD");
            sb.append(sb.length() == 0 ? "" : "|").append("OCCLUDES_KEYGUARD");
        }
        if ((flags & FLAG_DISPLAY_HAS_ALERT_WINDOWS) != 0) {
            sb.append((sb.length() == 0 ? "" : "|") + "DISPLAY_HAS_ALERT_WINDOWS");
            sb.append(sb.length() == 0 ? "" : "|").append("DISPLAY_HAS_ALERT_WINDOWS");
        }
        if ((flags & FLAG_IS_EMBEDDED) != 0) {
            sb.append((sb.length() == 0 ? "" : "|") + "IS_EMBEDDED");
        if ((flags & FLAG_IN_TASK_WITH_EMBEDDED_ACTIVITY) != 0) {
            sb.append(sb.length() == 0 ? "" : "|").append("IN_TASK_WITH_EMBEDDED_ACTIVITY");
        }
        if ((flags & FLAG_FIRST_CUSTOM) != 0) {
            sb.append((sb.length() == 0 ? "" : "|") + "FIRST_CUSTOM");
            sb.append(sb.length() == 0 ? "" : "|").append("FIRST_CUSTOM");
        }
        return sb.toString();
    }
+3 −7
Original line number Diff line number Diff line
@@ -16,7 +16,7 @@

package com.android.wm.shell.activityembedding;

import static android.window.TransitionInfo.FLAG_IS_EMBEDDED;
import static android.window.TransitionInfo.FLAG_IN_TASK_WITH_EMBEDDED_ACTIVITY;

import static java.util.Objects.requireNonNull;

@@ -85,9 +85,9 @@ public class ActivityEmbeddingController implements Transitions.TransitionHandle
            @NonNull SurfaceControl.Transaction finishTransaction,
            @NonNull Transitions.TransitionFinishCallback finishCallback) {
        // TODO(b/207070762) Handle AE animation as a part of other transitions.
        // Only handle the transition if all containers are embedded.
        for (TransitionInfo.Change change : info.getChanges()) {
            if (!isEmbedded(change)) {
            if (!change.hasFlags(FLAG_IN_TASK_WITH_EMBEDDED_ACTIVITY)) {
                // Only animate the transition if all changes are in a Task with ActivityEmbedding.
                return false;
            }
        }
@@ -119,8 +119,4 @@ public class ActivityEmbeddingController implements Transitions.TransitionHandle
        }
        callback.onTransitionFinished(null /* wct */, null /* wctCB */);
    }

    private static boolean isEmbedded(@NonNull TransitionInfo.Change change) {
        return (change.getFlags() & FLAG_IS_EMBEDDED) != 0;
    }
}
+2 −2
Original line number Diff line number Diff line
@@ -17,7 +17,7 @@
package com.android.wm.shell.activityembedding;

import static android.view.WindowManager.TRANSIT_OPEN;
import static android.window.TransitionInfo.FLAG_IS_EMBEDDED;
import static android.window.TransitionInfo.FLAG_IN_TASK_WITH_EMBEDDED_ACTIVITY;

import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.eq;
@@ -57,7 +57,7 @@ public class ActivityEmbeddingAnimationRunnerTests extends ActivityEmbeddingAnim
    public void testStartAnimation() {
        final TransitionInfo info = new TransitionInfo(TRANSIT_OPEN, 0);
        final TransitionInfo.Change embeddingChange = createChange();
        embeddingChange.setFlags(FLAG_IS_EMBEDDED);
        embeddingChange.setFlags(FLAG_IN_TASK_WITH_EMBEDDED_ACTIVITY);
        info.addChange(embeddingChange);
        doReturn(mAnimator).when(mAnimRunner).createAnimator(any(), any(), any(), any());

+4 −4
Original line number Diff line number Diff line
@@ -17,7 +17,7 @@
package com.android.wm.shell.activityembedding;

import static android.view.WindowManager.TRANSIT_OPEN;
import static android.window.TransitionInfo.FLAG_IS_EMBEDDED;
import static android.window.TransitionInfo.FLAG_IN_TASK_WITH_EMBEDDED_ACTIVITY;

import static com.android.dx.mockito.inline.extended.ExtendedMockito.never;

@@ -78,7 +78,7 @@ public class ActivityEmbeddingControllerTests extends ActivityEmbeddingAnimation
    public void testStartAnimation_containsNonActivityEmbeddingChange() {
        final TransitionInfo info = new TransitionInfo(TRANSIT_OPEN, 0);
        final TransitionInfo.Change embeddingChange = createChange();
        embeddingChange.setFlags(FLAG_IS_EMBEDDED);
        embeddingChange.setFlags(FLAG_IN_TASK_WITH_EMBEDDED_ACTIVITY);
        final TransitionInfo.Change nonEmbeddingChange = createChange();
        info.addChange(embeddingChange);
        info.addChange(nonEmbeddingChange);
@@ -96,7 +96,7 @@ public class ActivityEmbeddingControllerTests extends ActivityEmbeddingAnimation
    public void testStartAnimation_onlyActivityEmbeddingChange() {
        final TransitionInfo info = new TransitionInfo(TRANSIT_OPEN, 0);
        final TransitionInfo.Change embeddingChange = createChange();
        embeddingChange.setFlags(FLAG_IS_EMBEDDED);
        embeddingChange.setFlags(FLAG_IN_TASK_WITH_EMBEDDED_ACTIVITY);
        info.addChange(embeddingChange);

        // No-op
@@ -116,7 +116,7 @@ public class ActivityEmbeddingControllerTests extends ActivityEmbeddingAnimation

        final TransitionInfo info = new TransitionInfo(TRANSIT_OPEN, 0);
        final TransitionInfo.Change embeddingChange = createChange();
        embeddingChange.setFlags(FLAG_IS_EMBEDDED);
        embeddingChange.setFlags(FLAG_IN_TASK_WITH_EMBEDDED_ACTIVITY);
        info.addChange(embeddingChange);
        mController.startAnimation(mTransition, info, mStartTransaction,
                mFinishTransaction, mFinishCallback);
+12 −4
Original line number Diff line number Diff line
@@ -46,8 +46,8 @@ import static android.view.WindowManager.TransitionFlags;
import static android.view.WindowManager.TransitionType;
import static android.view.WindowManager.transitTypeToString;
import static android.window.TransitionInfo.FLAG_DISPLAY_HAS_ALERT_WINDOWS;
import static android.window.TransitionInfo.FLAG_IN_TASK_WITH_EMBEDDED_ACTIVITY;
import static android.window.TransitionInfo.FLAG_IS_DISPLAY;
import static android.window.TransitionInfo.FLAG_IS_EMBEDDED;
import static android.window.TransitionInfo.FLAG_IS_INPUT_METHOD;
import static android.window.TransitionInfo.FLAG_IS_VOICE_INTERACTION;
import static android.window.TransitionInfo.FLAG_IS_WALLPAPER;
@@ -1873,8 +1873,10 @@ class Transition extends Binder implements BLASTSyncEngine.TransactionReadyListe
                    flags |= FLAG_WILL_IME_SHOWN;
                }
            }
            Task parentTask = null;
            final ActivityRecord record = wc.asActivityRecord();
            if (record != null) {
                parentTask = record.getTask();
                if (record.mUseTransferredAnimation) {
                    flags |= FLAG_STARTING_WINDOW_TRANSFER_RECIPIENT;
                }
@@ -1882,6 +1884,15 @@ class Transition extends Binder implements BLASTSyncEngine.TransactionReadyListe
                    flags |= FLAG_IS_VOICE_INTERACTION;
                }
            }
            final TaskFragment taskFragment = wc.asTaskFragment();
            if (taskFragment != null && task == null) {
                parentTask = taskFragment.getTask();
            }
            if (parentTask != null
                    && parentTask.forAllLeafTaskFragments(TaskFragment::isEmbedded)) {
                // Whether this is in a Task with embedded activity.
                flags |= FLAG_IN_TASK_WITH_EMBEDDED_ACTIVITY;
            }
            final DisplayContent dc = wc.asDisplayContent();
            if (dc != null) {
                flags |= FLAG_IS_DISPLAY;
@@ -1898,9 +1909,6 @@ class Transition extends Binder implements BLASTSyncEngine.TransactionReadyListe
            if (occludesKeyguard(wc)) {
                flags |= FLAG_OCCLUDES_KEYGUARD;
            }
            if (wc.isEmbedded()) {
                flags |= FLAG_IS_EMBEDDED;
            }
            return flags;
        }
    }
Loading