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

Commit 825885d4 authored by Evan Rosky's avatar Evan Rosky Committed by Automerger Merge Worker
Browse files

Merge "Add a config to disable registering Shell Transitions in dagger" into...

Merge "Add a config to disable registering Shell Transitions in dagger" into tm-qpr-dev am: 188119cb am: 779cadc4

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



Change-Id: If1180cbb632f1b7c1db57e1add4370f2464c165e
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents 7e2ac785 779cadc4
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -23,6 +23,10 @@
         TODO(b/238217847): This config is temporary until we refactor the base WMComponent. -->
    <bool name="config_registerShellTaskOrganizerOnInit">true</bool>

    <!-- Determines whether to register the shell transitions on init.
         TODO(b/238217847): This config is temporary until we refactor the base WMComponent. -->
    <bool name="config_registerShellTransitionsOnInit">true</bool>

    <!-- Animation duration for PIP when entering. -->
    <integer name="config_pipEnterAnimationDuration">425</integer>

+1 −2
Original line number Diff line number Diff line
@@ -41,7 +41,6 @@ import android.window.WindowContainerToken;
import android.window.WindowContainerTransaction;

import com.android.wm.shell.common.SyncTransactionQueue;
import com.android.wm.shell.transition.Transitions;

import java.io.PrintWriter;
import java.util.concurrent.Executor;
@@ -122,7 +121,7 @@ public class TaskView extends SurfaceView implements SurfaceHolder.Callback,

    /** Until all users are converted, we may have mixed-use (eg. Car). */
    private boolean isUsingShellTransitions() {
        return mTaskViewTransitions != null && Transitions.ENABLE_SHELL_TRANSITIONS;
        return mTaskViewTransitions != null && mTaskViewTransitions.isEnabled();
    }

    /**
+4 −0
Original line number Diff line number Diff line
@@ -87,6 +87,10 @@ public class TaskViewTransitions implements Transitions.TransitionHandler {
        // Note: Don't unregister handler since this is a singleton with lifetime bound to Shell
    }

    boolean isEnabled() {
        return mTransitions.isRegistered();
    }

    /**
     * Looks through the pending transitions for one matching `taskView`.
     * @param taskView the pending transition should be for this.
+4 −0
Original line number Diff line number Diff line
@@ -507,6 +507,10 @@ public abstract class WMShellBaseModule {
            @ShellMainThread ShellExecutor mainExecutor,
            @ShellMainThread Handler mainHandler,
            @ShellAnimationThread ShellExecutor animExecutor) {
        if (!context.getResources().getBoolean(R.bool.config_registerShellTransitionsOnInit)) {
            // TODO(b/238217847): Force override shell init if registration is disabled
            shellInit = new ShellInit(mainExecutor);
        }
        return new Transitions(context, shellInit, shellController, organizer, pool,
                displayController, mainExecutor, mainHandler, animExecutor);
    }
+19 −8
Original line number Diff line number Diff line
@@ -122,6 +122,8 @@ public class Transitions implements RemoteCallable<Transitions> {
    private final ShellController mShellController;
    private final ShellTransitionImpl mImpl = new ShellTransitionImpl();

    private boolean mIsRegistered = false;

    /** List of possible handlers. Ordered by specificity (eg. tapped back to front). */
    private final ArrayList<TransitionHandler> mHandlers = new ArrayList<>();

@@ -163,19 +165,18 @@ public class Transitions implements RemoteCallable<Transitions> {
                displayController, pool, mainExecutor, mainHandler, animExecutor);
        mRemoteTransitionHandler = new RemoteTransitionHandler(mMainExecutor);
        mShellController = shellController;
        shellInit.addInitCallback(this::onInit, this);
    }

    private void onInit() {
        mShellController.addExternalInterface(KEY_EXTRA_SHELL_SHELL_TRANSITIONS,
                this::createExternalInterface, this);

        // The very last handler (0 in the list) should be the default one.
        mHandlers.add(mDefaultTransitionHandler);
        ProtoLog.v(ShellProtoLogGroup.WM_SHELL_TRANSITIONS, "addHandler: Default");
        // Next lowest priority is remote transitions.
        mHandlers.add(mRemoteTransitionHandler);
        ProtoLog.v(ShellProtoLogGroup.WM_SHELL_TRANSITIONS, "addHandler: Remote");
        shellInit.addInitCallback(this::onInit, this);
    }

    private void onInit() {
        mShellController.addExternalInterface(KEY_EXTRA_SHELL_SHELL_TRANSITIONS,
                this::createExternalInterface, this);

        ContentResolver resolver = mContext.getContentResolver();
        mTransitionAnimationScaleSetting = getTransitionAnimationScaleSetting();
@@ -186,13 +187,23 @@ public class Transitions implements RemoteCallable<Transitions> {
                new SettingsObserver());

        if (Transitions.ENABLE_SHELL_TRANSITIONS) {
            mIsRegistered = true;
            // Register this transition handler with Core
            try {
                mOrganizer.registerTransitionPlayer(mPlayerImpl);
            } catch (RuntimeException e) {
                mIsRegistered = false;
                throw e;
            }
            // Pre-load the instance.
            TransitionMetrics.getInstance();
        }
    }

    public boolean isRegistered() {
        return mIsRegistered;
    }

    private float getTransitionAnimationScaleSetting() {
        return fixScale(Settings.Global.getFloat(mContext.getContentResolver(),
                Settings.Global.TRANSITION_ANIMATION_SCALE, mContext.getResources().getFloat(