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

Commit 1319de88 authored by Sunny Goyal's avatar Sunny Goyal
Browse files

Removing RemoteTransitionCompat and related wrappers

Bug: 221961069
Test: Presubmit
Change-Id: Ib93640d27a9eb0401882574e37b466163dafa5b3
Merged-In: Ib93640d27a9eb0401882574e37b466163dafa5b3
parent 1b14a732
Loading
Loading
Loading
Loading
+2 −18
Original line number Original line Diff line number Diff line
@@ -55,7 +55,7 @@ import java.lang.ref.WeakReference;
 * reference to the runner, leaving only the weak ref from the runner.
 * reference to the runner, leaving only the weak ref from the runner.
 */
 */
@TargetApi(Build.VERSION_CODES.P)
@TargetApi(Build.VERSION_CODES.P)
public class LauncherAnimationRunner implements RemoteAnimationRunnerCompat {
public class LauncherAnimationRunner extends RemoteAnimationRunnerCompat {


    private static final RemoteAnimationFactory DEFAULT_FACTORY =
    private static final RemoteAnimationFactory DEFAULT_FACTORY =
            (transit, appTargets, wallpaperTargets, nonAppTargets, result) ->
            (transit, appTargets, wallpaperTargets, nonAppTargets, result) ->
@@ -99,22 +99,6 @@ public class LauncherAnimationRunner implements RemoteAnimationRunnerCompat {
        }
        }
    }
    }


    // Called only in R platform
    @BinderThread
    public void onAnimationStart(RemoteAnimationTarget[] appTargets,
            RemoteAnimationTarget[] wallpaperTargets, Runnable runnable) {
        onAnimationStart(0 /* transit */, appTargets, wallpaperTargets,
                new RemoteAnimationTarget[0], runnable);
    }

    // Called only in Q platform
    @BinderThread
    @Deprecated
    public void onAnimationStart(RemoteAnimationTarget[] appTargets, Runnable runnable) {
        onAnimationStart(appTargets, new RemoteAnimationTarget[0], runnable);
    }


    private RemoteAnimationFactory getFactory() {
    private RemoteAnimationFactory getFactory() {
        RemoteAnimationFactory factory = mFactory.get();
        RemoteAnimationFactory factory = mFactory.get();
        return factory != null ? factory : DEFAULT_FACTORY;
        return factory != null ? factory : DEFAULT_FACTORY;
@@ -133,7 +117,7 @@ public class LauncherAnimationRunner implements RemoteAnimationRunnerCompat {
     */
     */
    @BinderThread
    @BinderThread
    @Override
    @Override
    public void onAnimationCancelled() {
    public void onAnimationCancelled(boolean isKeyguardOccluded) {
        postAsyncCallback(mHandler, () -> {
        postAsyncCallback(mHandler, () -> {
            finishExistingAnimation();
            finishExistingAnimation();
            getFactory().onAnimationCancelled();
            getFactory().onAnimationCancelled();
+40 −21
Original line number Original line Diff line number Diff line
@@ -16,11 +16,19 @@


package com.android.launcher3;
package com.android.launcher3;


import static android.app.WindowConfiguration.ACTIVITY_TYPE_HOME;
import static android.app.WindowConfiguration.ACTIVITY_TYPE_STANDARD;
import static android.provider.Settings.Secure.LAUNCHER_TASKBAR_EDUCATION_SHOWING;
import static android.provider.Settings.Secure.LAUNCHER_TASKBAR_EDUCATION_SHOWING;
import static android.view.RemoteAnimationTarget.MODE_CLOSING;
import static android.view.RemoteAnimationTarget.MODE_CLOSING;
import static android.view.RemoteAnimationTarget.MODE_OPENING;
import static android.view.RemoteAnimationTarget.MODE_OPENING;
import static android.view.WindowManager.TRANSIT_CLOSE;
import static android.view.WindowManager.TRANSIT_FLAG_KEYGUARD_GOING_AWAY;
import static android.view.WindowManager.TRANSIT_OPEN;
import static android.view.WindowManager.TRANSIT_TO_BACK;
import static android.view.WindowManager.TRANSIT_TO_FRONT;
import static android.window.StartingWindowInfo.STARTING_WINDOW_TYPE_NONE;
import static android.window.StartingWindowInfo.STARTING_WINDOW_TYPE_NONE;
import static android.window.StartingWindowInfo.STARTING_WINDOW_TYPE_SPLASH_SCREEN;
import static android.window.StartingWindowInfo.STARTING_WINDOW_TYPE_SPLASH_SCREEN;
import static android.window.TransitionFilter.CONTAINER_ORDER_TOP;


import static com.android.launcher3.BaseActivity.INVISIBLE_ALL;
import static com.android.launcher3.BaseActivity.INVISIBLE_ALL;
import static com.android.launcher3.BaseActivity.INVISIBLE_BY_APP_TRANSITIONS;
import static com.android.launcher3.BaseActivity.INVISIBLE_BY_APP_TRANSITIONS;
@@ -81,6 +89,8 @@ import android.provider.Settings;
import android.util.Pair;
import android.util.Pair;
import android.util.Size;
import android.util.Size;
import android.view.CrossWindowBlurListeners;
import android.view.CrossWindowBlurListeners;
import android.view.RemoteAnimationAdapter;
import android.view.RemoteAnimationDefinition;
import android.view.RemoteAnimationTarget;
import android.view.RemoteAnimationTarget;
import android.view.SurfaceControl;
import android.view.SurfaceControl;
import android.view.View;
import android.view.View;
@@ -90,6 +100,8 @@ import android.view.WindowManager;
import android.view.animation.AnimationUtils;
import android.view.animation.AnimationUtils;
import android.view.animation.Interpolator;
import android.view.animation.Interpolator;
import android.view.animation.PathInterpolator;
import android.view.animation.PathInterpolator;
import android.window.RemoteTransition;
import android.window.TransitionFilter;


import androidx.annotation.NonNull;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.Nullable;
@@ -134,10 +146,7 @@ import com.android.quickstep.views.RecentsView;
import com.android.systemui.shared.system.BlurUtils;
import com.android.systemui.shared.system.BlurUtils;
import com.android.systemui.shared.system.InteractionJankMonitorWrapper;
import com.android.systemui.shared.system.InteractionJankMonitorWrapper;
import com.android.systemui.shared.system.QuickStepContract;
import com.android.systemui.shared.system.QuickStepContract;
import com.android.systemui.shared.system.RemoteAnimationAdapterCompat;
import com.android.systemui.shared.system.RemoteAnimationDefinitionCompat;
import com.android.systemui.shared.system.RemoteAnimationRunnerCompat;
import com.android.systemui.shared.system.RemoteAnimationRunnerCompat;
import com.android.systemui.shared.system.RemoteTransitionCompat;
import com.android.wm.shell.startingsurface.IStartingWindowListener;
import com.android.wm.shell.startingsurface.IStartingWindowListener;


import java.util.ArrayList;
import java.util.ArrayList;
@@ -216,7 +225,7 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener
    private RemoteAnimationFactory mKeyguardGoingAwayRunner;
    private RemoteAnimationFactory mKeyguardGoingAwayRunner;


    private RemoteAnimationFactory mWallpaperOpenTransitionRunner;
    private RemoteAnimationFactory mWallpaperOpenTransitionRunner;
    private RemoteTransitionCompat mLauncherOpenTransition;
    private RemoteTransition mLauncherOpenTransition;


    private LauncherBackAnimationController mBackAnimationController;
    private LauncherBackAnimationController mBackAnimationController;
    private final AnimatorListenerAdapter mForceInvisibleListener = new AnimatorListenerAdapter() {
    private final AnimatorListenerAdapter mForceInvisibleListener = new AnimatorListenerAdapter() {
@@ -293,12 +302,10 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener


        long statusBarTransitionDelay = duration - STATUS_BAR_TRANSITION_DURATION
        long statusBarTransitionDelay = duration - STATUS_BAR_TRANSITION_DURATION
                - STATUS_BAR_TRANSITION_PRE_DELAY;
                - STATUS_BAR_TRANSITION_PRE_DELAY;
        RemoteAnimationAdapterCompat adapterCompat =
                new RemoteAnimationAdapterCompat(runner, duration, statusBarTransitionDelay,
                        mLauncher.getIApplicationThread());
        ActivityOptions options = ActivityOptions.makeRemoteAnimation(
        ActivityOptions options = ActivityOptions.makeRemoteAnimation(
                adapterCompat.getWrapped(),
                new RemoteAnimationAdapter(runner, duration, statusBarTransitionDelay),
                adapterCompat.getRemoteTransition().getTransition());
                new RemoteTransition(runner.toRemoteTransition(),
                        mLauncher.getIApplicationThread()));
        return new ActivityOptionsWrapper(options, onEndCallback);
        return new ActivityOptionsWrapper(options, onEndCallback);
    }
    }


@@ -1095,28 +1102,26 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener
        if (hasControlRemoteAppTransitionPermission()) {
        if (hasControlRemoteAppTransitionPermission()) {
            mWallpaperOpenRunner = createWallpaperOpenRunner(false /* fromUnlock */);
            mWallpaperOpenRunner = createWallpaperOpenRunner(false /* fromUnlock */);


            RemoteAnimationDefinitionCompat definition = new RemoteAnimationDefinitionCompat();
            RemoteAnimationDefinition definition = new RemoteAnimationDefinition();
            definition.addRemoteAnimation(WindowManager.TRANSIT_OLD_WALLPAPER_OPEN,
            definition.addRemoteAnimation(WindowManager.TRANSIT_OLD_WALLPAPER_OPEN,
                    WindowConfiguration.ACTIVITY_TYPE_STANDARD,
                    WindowConfiguration.ACTIVITY_TYPE_STANDARD,
                    new RemoteAnimationAdapterCompat(
                    new RemoteAnimationAdapter(
                            new LauncherAnimationRunner(mHandler, mWallpaperOpenRunner,
                            new LauncherAnimationRunner(mHandler, mWallpaperOpenRunner,
                                    false /* startAtFrontOfQueue */),
                                    false /* startAtFrontOfQueue */),
                            CLOSING_TRANSITION_DURATION_MS, 0 /* statusBarTransitionDelay */,
                            CLOSING_TRANSITION_DURATION_MS, 0 /* statusBarTransitionDelay */));
                            mLauncher.getIApplicationThread()));


            if (KEYGUARD_ANIMATION.get()) {
            if (KEYGUARD_ANIMATION.get()) {
                mKeyguardGoingAwayRunner = createWallpaperOpenRunner(true /* fromUnlock */);
                mKeyguardGoingAwayRunner = createWallpaperOpenRunner(true /* fromUnlock */);
                definition.addRemoteAnimation(
                definition.addRemoteAnimation(
                        WindowManager.TRANSIT_OLD_KEYGUARD_GOING_AWAY_ON_WALLPAPER,
                        WindowManager.TRANSIT_OLD_KEYGUARD_GOING_AWAY_ON_WALLPAPER,
                        new RemoteAnimationAdapterCompat(
                        new RemoteAnimationAdapter(
                                new LauncherAnimationRunner(
                                new LauncherAnimationRunner(
                                        mHandler, mKeyguardGoingAwayRunner,
                                        mHandler, mKeyguardGoingAwayRunner,
                                        true /* startAtFrontOfQueue */),
                                        true /* startAtFrontOfQueue */),
                                CLOSING_TRANSITION_DURATION_MS, 0 /* statusBarTransitionDelay */,
                                CLOSING_TRANSITION_DURATION_MS, 0 /* statusBarTransitionDelay */));
                                mLauncher.getIApplicationThread()));
            }
            }


            mLauncher.registerRemoteAnimations(definition.getWrapped());
            mLauncher.registerRemoteAnimations(definition);
        }
        }
    }
    }


@@ -1129,11 +1134,25 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener
        }
        }
        if (hasControlRemoteAppTransitionPermission()) {
        if (hasControlRemoteAppTransitionPermission()) {
            mWallpaperOpenTransitionRunner = createWallpaperOpenRunner(false /* fromUnlock */);
            mWallpaperOpenTransitionRunner = createWallpaperOpenRunner(false /* fromUnlock */);
            mLauncherOpenTransition = RemoteAnimationAdapterCompat.buildRemoteTransition(
            mLauncherOpenTransition = new RemoteTransition(
                    new LauncherAnimationRunner(mHandler, mWallpaperOpenTransitionRunner,
                    new LauncherAnimationRunner(mHandler, mWallpaperOpenTransitionRunner,
                            false /* startAtFrontOfQueue */), mLauncher.getIApplicationThread());
                            false /* startAtFrontOfQueue */).toRemoteTransition(),
            mLauncherOpenTransition.addHomeOpenCheck(mLauncher.getComponentName());
                    mLauncher.getIApplicationThread());
            SystemUiProxy.INSTANCE.get(mLauncher).registerRemoteTransition(mLauncherOpenTransition);

            TransitionFilter homeCheck = new TransitionFilter();
            // No need to handle the transition that also dismisses keyguard.
            homeCheck.mNotFlags = TRANSIT_FLAG_KEYGUARD_GOING_AWAY;
            homeCheck.mRequirements =
                    new TransitionFilter.Requirement[]{new TransitionFilter.Requirement(),
                            new TransitionFilter.Requirement()};
            homeCheck.mRequirements[0].mActivityType = ACTIVITY_TYPE_HOME;
            homeCheck.mRequirements[0].mTopActivity = mLauncher.getComponentName();
            homeCheck.mRequirements[0].mModes = new int[]{TRANSIT_OPEN, TRANSIT_TO_FRONT};
            homeCheck.mRequirements[0].mOrder = CONTAINER_ORDER_TOP;
            homeCheck.mRequirements[1].mActivityType = ACTIVITY_TYPE_STANDARD;
            homeCheck.mRequirements[1].mModes = new int[]{TRANSIT_CLOSE, TRANSIT_TO_BACK};
            SystemUiProxy.INSTANCE.get(mLauncher)
                    .registerRemoteTransition(mLauncherOpenTransition, homeCheck);
        }
        }
        if (mBackAnimationController != null) {
        if (mBackAnimationController != null) {
            mBackAnimationController.registerBackCallbacks(mHandler);
            mBackAnimationController.registerBackCallbacks(mHandler);
+8 −12
Original line number Original line Diff line number Diff line
@@ -37,9 +37,11 @@ import android.os.Bundle;
import android.os.Handler;
import android.os.Handler;
import android.os.Looper;
import android.os.Looper;
import android.view.Display;
import android.view.Display;
import android.view.RemoteAnimationAdapter;
import android.view.RemoteAnimationTarget;
import android.view.RemoteAnimationTarget;
import android.view.SurfaceControl.Transaction;
import android.view.SurfaceControl.Transaction;
import android.view.View;
import android.view.View;
import android.window.RemoteTransition;
import android.window.SplashScreen;
import android.window.SplashScreen;


import androidx.annotation.Nullable;
import androidx.annotation.Nullable;
@@ -79,7 +81,6 @@ import com.android.quickstep.util.TISBindHelper;
import com.android.quickstep.views.OverviewActionsView;
import com.android.quickstep.views.OverviewActionsView;
import com.android.quickstep.views.RecentsView;
import com.android.quickstep.views.RecentsView;
import com.android.quickstep.views.TaskView;
import com.android.quickstep.views.TaskView;
import com.android.systemui.shared.system.RemoteAnimationAdapterCompat;


import java.io.FileDescriptor;
import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.io.PrintWriter;
@@ -259,13 +260,11 @@ public final class RecentsActivity extends StatefulActivity<RecentsState> {


        final LauncherAnimationRunner wrapper = new LauncherAnimationRunner(
        final LauncherAnimationRunner wrapper = new LauncherAnimationRunner(
                mUiHandler, mActivityLaunchAnimationRunner, true /* startAtFrontOfQueue */);
                mUiHandler, mActivityLaunchAnimationRunner, true /* startAtFrontOfQueue */);
        RemoteAnimationAdapterCompat adapterCompat = new RemoteAnimationAdapterCompat(
                wrapper, RECENTS_LAUNCH_DURATION,
                RECENTS_LAUNCH_DURATION - STATUS_BAR_TRANSITION_DURATION
                        - STATUS_BAR_TRANSITION_PRE_DELAY, getIApplicationThread());
        final ActivityOptions options = ActivityOptions.makeRemoteAnimation(
        final ActivityOptions options = ActivityOptions.makeRemoteAnimation(
                adapterCompat.getWrapped(),
                new RemoteAnimationAdapter(wrapper, RECENTS_LAUNCH_DURATION,
                adapterCompat.getRemoteTransition().getTransition());
                        RECENTS_LAUNCH_DURATION - STATUS_BAR_TRANSITION_DURATION
                                - STATUS_BAR_TRANSITION_PRE_DELAY),
                new RemoteTransition(wrapper.toRemoteTransition(), getIApplicationThread()));
        final ActivityOptionsWrapper activityOptions = new ActivityOptionsWrapper(options,
        final ActivityOptionsWrapper activityOptions = new ActivityOptionsWrapper(options,
                onEndCallback);
                onEndCallback);
        activityOptions.options.setSplashScreenStyle(SplashScreen.SPLASH_SCREEN_STYLE_ICON);
        activityOptions.options.setSplashScreenStyle(SplashScreen.SPLASH_SCREEN_STYLE_ICON);
@@ -401,12 +400,9 @@ public final class RecentsActivity extends StatefulActivity<RecentsState> {
    private void startHomeInternal() {
    private void startHomeInternal() {
        LauncherAnimationRunner runner = new LauncherAnimationRunner(
        LauncherAnimationRunner runner = new LauncherAnimationRunner(
                getMainThreadHandler(), mAnimationToHomeFactory, true);
                getMainThreadHandler(), mAnimationToHomeFactory, true);
        RemoteAnimationAdapterCompat adapterCompat =
                new RemoteAnimationAdapterCompat(runner, HOME_APPEAR_DURATION, 0,
                        getIApplicationThread());
        ActivityOptions options = ActivityOptions.makeRemoteAnimation(
        ActivityOptions options = ActivityOptions.makeRemoteAnimation(
                adapterCompat.getWrapped(),
                new RemoteAnimationAdapter(runner, HOME_APPEAR_DURATION, 0),
                adapterCompat.getRemoteTransition().getTransition());
                new RemoteTransition(runner.toRemoteTransition(), getIApplicationThread()));
        startHomeIntentSafely(this, options.toBundle());
        startHomeIntentSafely(this, options.toBundle());
    }
    }


+19 −18
Original line number Original line Diff line number Diff line
@@ -44,6 +44,8 @@ import android.view.RemoteAnimationAdapter;
import android.view.RemoteAnimationTarget;
import android.view.RemoteAnimationTarget;
import android.view.SurfaceControl;
import android.view.SurfaceControl;
import android.window.IOnBackInvokedCallback;
import android.window.IOnBackInvokedCallback;
import android.window.RemoteTransition;
import android.window.TransitionFilter;


import androidx.annotation.Nullable;
import androidx.annotation.Nullable;
import androidx.annotation.WorkerThread;
import androidx.annotation.WorkerThread;
@@ -53,7 +55,6 @@ import com.android.launcher3.util.MainThreadInitializedObject;
import com.android.launcher3.util.SplitConfigurationOptions;
import com.android.launcher3.util.SplitConfigurationOptions;
import com.android.systemui.shared.recents.ISystemUiProxy;
import com.android.systemui.shared.recents.ISystemUiProxy;
import com.android.systemui.shared.recents.model.Task;
import com.android.systemui.shared.recents.model.Task;
import com.android.systemui.shared.system.RemoteTransitionCompat;
import com.android.systemui.shared.system.smartspace.ILauncherUnlockAnimationController;
import com.android.systemui.shared.system.smartspace.ILauncherUnlockAnimationController;
import com.android.systemui.shared.system.smartspace.ISysuiUnlockAnimationController;
import com.android.systemui.shared.system.smartspace.ISysuiUnlockAnimationController;
import com.android.systemui.shared.system.smartspace.SmartspaceState;
import com.android.systemui.shared.system.smartspace.SmartspaceState;
@@ -73,6 +74,7 @@ import com.android.wm.shell.util.GroupedRecentTaskInfo;


import java.util.ArrayList;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Arrays;
import java.util.LinkedHashMap;


/**
/**
 * Holds the reference to SystemUI.
 * Holds the reference to SystemUI.
@@ -108,7 +110,8 @@ public class SystemUiProxy implements ISystemUiProxy {
    private IStartingWindowListener mStartingWindowListener;
    private IStartingWindowListener mStartingWindowListener;
    private ILauncherUnlockAnimationController mLauncherUnlockAnimationController;
    private ILauncherUnlockAnimationController mLauncherUnlockAnimationController;
    private IRecentTasksListener mRecentTasksListener;
    private IRecentTasksListener mRecentTasksListener;
    private final ArrayList<RemoteTransitionCompat> mRemoteTransitions = new ArrayList<>();
    private final LinkedHashMap<RemoteTransition, TransitionFilter> mRemoteTransitions =
            new LinkedHashMap<>();
    private IOnBackInvokedCallback mBackToLauncherCallback;
    private IOnBackInvokedCallback mBackToLauncherCallback;


    // Used to dedupe calls to SystemUI
    // Used to dedupe calls to SystemUI
@@ -195,9 +198,7 @@ public class SystemUiProxy implements ISystemUiProxy {
        if (mSysuiUnlockAnimationController != null && mLauncherUnlockAnimationController != null) {
        if (mSysuiUnlockAnimationController != null && mLauncherUnlockAnimationController != null) {
            setLauncherUnlockAnimationController(mLauncherUnlockAnimationController);
            setLauncherUnlockAnimationController(mLauncherUnlockAnimationController);
        }
        }
        for (int i = mRemoteTransitions.size() - 1; i >= 0; --i) {
        new LinkedHashMap<>(mRemoteTransitions).forEach(this::registerRemoteTransition);
            registerRemoteTransition(mRemoteTransitions.get(i));
        }
        if (mRecentTasksListener != null && mRecentTasks != null) {
        if (mRecentTasksListener != null && mRecentTasks != null) {
            registerRecentTasksListener(mRecentTasksListener);
            registerRecentTasksListener(mRecentTasksListener);
        }
        }
@@ -547,11 +548,11 @@ public class SystemUiProxy implements ISystemUiProxy {
    /** Start multiple tasks in split-screen simultaneously. */
    /** Start multiple tasks in split-screen simultaneously. */
    public void startTasks(int taskId1, Bundle options1, int taskId2, Bundle options2,
    public void startTasks(int taskId1, Bundle options1, int taskId2, Bundle options2,
            @SplitConfigurationOptions.StagePosition int splitPosition, float splitRatio,
            @SplitConfigurationOptions.StagePosition int splitPosition, float splitRatio,
            RemoteTransitionCompat remoteTransition, InstanceId instanceId) {
            RemoteTransition remoteTransition, InstanceId instanceId) {
        if (mSystemUiProxy != null) {
        if (mSystemUiProxy != null) {
            try {
            try {
                mSplitScreen.startTasks(taskId1, options1, taskId2, options2, splitPosition,
                mSplitScreen.startTasks(taskId1, options1, taskId2, options2, splitPosition,
                        splitRatio, remoteTransition.getTransition(), instanceId);
                        splitRatio, remoteTransition, instanceId);
            } catch (RemoteException e) {
            } catch (RemoteException e) {
                Log.w(TAG, "Failed call startTasks");
                Log.w(TAG, "Failed call startTasks");
            }
            }
@@ -561,12 +562,12 @@ public class SystemUiProxy implements ISystemUiProxy {
    public void startIntentAndTask(PendingIntent pendingIntent, Intent fillInIntent,
    public void startIntentAndTask(PendingIntent pendingIntent, Intent fillInIntent,
            Bundle options1, int taskId, Bundle options2,
            Bundle options1, int taskId, Bundle options2,
            @SplitConfigurationOptions.StagePosition int splitPosition, float splitRatio,
            @SplitConfigurationOptions.StagePosition int splitPosition, float splitRatio,
            RemoteTransitionCompat remoteTransition, InstanceId instanceId) {
            RemoteTransition remoteTransition, InstanceId instanceId) {
        if (mSystemUiProxy != null) {
        if (mSystemUiProxy != null) {
            try {
            try {
                mSplitScreen.startIntentAndTask(pendingIntent, fillInIntent, options1,
                mSplitScreen.startIntentAndTask(pendingIntent, fillInIntent, options1,
                        taskId, options2, splitPosition, splitRatio,
                        taskId, options2, splitPosition, splitRatio,
                        remoteTransition.getTransition(), instanceId);
                        remoteTransition, instanceId);
            } catch (RemoteException e) {
            } catch (RemoteException e) {
                Log.w(TAG, "Failed call startIntentAndTask");
                Log.w(TAG, "Failed call startIntentAndTask");
            }
            }
@@ -575,11 +576,11 @@ public class SystemUiProxy implements ISystemUiProxy {


    public void startShortcutAndTask(ShortcutInfo shortcutInfo, Bundle options1, int taskId,
    public void startShortcutAndTask(ShortcutInfo shortcutInfo, Bundle options1, int taskId,
            Bundle options2, @SplitConfigurationOptions.StagePosition int splitPosition,
            Bundle options2, @SplitConfigurationOptions.StagePosition int splitPosition,
            float splitRatio, RemoteTransitionCompat remoteTransition, InstanceId instanceId) {
            float splitRatio, RemoteTransition remoteTransition, InstanceId instanceId) {
        if (mSystemUiProxy != null) {
        if (mSystemUiProxy != null) {
            try {
            try {
                mSplitScreen.startShortcutAndTask(shortcutInfo, options1, taskId, options2,
                mSplitScreen.startShortcutAndTask(shortcutInfo, options1, taskId, options2,
                        splitPosition, splitRatio, remoteTransition.getTransition(), instanceId);
                        splitPosition, splitRatio, remoteTransition, instanceId);
            } catch (RemoteException e) {
            } catch (RemoteException e) {
                Log.w(TAG, "Failed call startShortcutAndTask");
                Log.w(TAG, "Failed call startShortcutAndTask");
            }
            }
@@ -720,24 +721,24 @@ public class SystemUiProxy implements ISystemUiProxy {
    // Remote transitions
    // Remote transitions
    //
    //


    public void registerRemoteTransition(RemoteTransitionCompat remoteTransition) {
    public void registerRemoteTransition(
            RemoteTransition remoteTransition, TransitionFilter filter) {
        if (mShellTransitions != null) {
        if (mShellTransitions != null) {
            try {
            try {
                mShellTransitions.registerRemote(remoteTransition.getFilter(),
                mShellTransitions.registerRemote(filter, remoteTransition);
                        remoteTransition.getTransition());
            } catch (RemoteException e) {
            } catch (RemoteException e) {
                Log.w(TAG, "Failed call registerRemoteTransition");
                Log.w(TAG, "Failed call registerRemoteTransition");
            }
            }
        }
        }
        if (!mRemoteTransitions.contains(remoteTransition)) {
        if (!mRemoteTransitions.containsKey(remoteTransition)) {
            mRemoteTransitions.add(remoteTransition);
            mRemoteTransitions.put(remoteTransition, filter);
        }
        }
    }
    }


    public void unregisterRemoteTransition(RemoteTransitionCompat remoteTransition) {
    public void unregisterRemoteTransition(RemoteTransition remoteTransition) {
        if (mShellTransitions != null) {
        if (mShellTransitions != null) {
            try {
            try {
                mShellTransitions.unregisterRemote(remoteTransition.getTransition());
                mShellTransitions.unregisterRemote(remoteTransition);
            } catch (RemoteException e) {
            } catch (RemoteException e) {
                Log.w(TAG, "Failed call registerRemoteTransition");
                Log.w(TAG, "Failed call registerRemoteTransition");
            }
            }
+4 −4
Original line number Original line Diff line number Diff line
@@ -21,6 +21,7 @@ import static com.android.launcher3.util.Executors.MAIN_EXECUTOR;
import static com.android.launcher3.util.Executors.UI_HELPER_EXECUTOR;
import static com.android.launcher3.util.Executors.UI_HELPER_EXECUTOR;
import static com.android.quickstep.GestureState.STATE_RECENTS_ANIMATION_INITIALIZED;
import static com.android.quickstep.GestureState.STATE_RECENTS_ANIMATION_INITIALIZED;
import static com.android.quickstep.GestureState.STATE_RECENTS_ANIMATION_STARTED;
import static com.android.quickstep.GestureState.STATE_RECENTS_ANIMATION_STARTED;
import static com.android.systemui.shared.system.RemoteTransitionCompat.newRemoteTransition;


import android.app.ActivityManager;
import android.app.ActivityManager;
import android.app.ActivityOptions;
import android.app.ActivityOptions;
@@ -29,6 +30,7 @@ import android.content.Intent;
import android.os.SystemProperties;
import android.os.SystemProperties;
import android.util.Log;
import android.util.Log;
import android.view.RemoteAnimationTarget;
import android.view.RemoteAnimationTarget;
import android.window.RemoteTransition;


import androidx.annotation.Nullable;
import androidx.annotation.Nullable;
import androidx.annotation.UiThread;
import androidx.annotation.UiThread;
@@ -39,7 +41,6 @@ import com.android.quickstep.TopTaskTracker.CachedTaskInfo;
import com.android.quickstep.views.RecentsView;
import com.android.quickstep.views.RecentsView;
import com.android.systemui.shared.recents.model.ThumbnailData;
import com.android.systemui.shared.recents.model.ThumbnailData;
import com.android.systemui.shared.system.ActivityManagerWrapper;
import com.android.systemui.shared.system.ActivityManagerWrapper;
import com.android.systemui.shared.system.RemoteTransitionCompat;
import com.android.systemui.shared.system.TaskStackChangeListener;
import com.android.systemui.shared.system.TaskStackChangeListener;
import com.android.systemui.shared.system.TaskStackChangeListeners;
import com.android.systemui.shared.system.TaskStackChangeListeners;


@@ -223,11 +224,10 @@ public class TaskAnimationManager implements RecentsAnimationCallbacks.RecentsAn
        mCallbacks.addListener(listener);
        mCallbacks.addListener(listener);


        if (ENABLE_SHELL_TRANSITIONS) {
        if (ENABLE_SHELL_TRANSITIONS) {
            RemoteTransitionCompat transition = new RemoteTransitionCompat(mCallbacks,
            RemoteTransition transition = newRemoteTransition(mCallbacks,
                    mController != null ? mController.getController() : null,
                    mController != null ? mController.getController() : null,
                    mCtx.getIApplicationThread());
                    mCtx.getIApplicationThread());
            final ActivityOptions options = ActivityOptions.makeRemoteTransition(
            final ActivityOptions options = ActivityOptions.makeRemoteTransition(transition);
                    transition.getTransition());
            // Allowing to pause Home if Home is top activity and Recents is not Home. So when user
            // Allowing to pause Home if Home is top activity and Recents is not Home. So when user
            // start home when recents animation is playing, the home activity can be resumed again
            // start home when recents animation is playing, the home activity can be resumed again
            // to let the transition controller collect Home activity.
            // to let the transition controller collect Home activity.
Loading