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

Commit 380bdfe3 authored by Ben Lin's avatar Ben Lin Committed by Android (Google) Code Review
Browse files

Merge "Keyguard Shell Transitions: send keyguard/aod updates to all displays." into main

parents 2ac7514c eb30ed8e
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -95,6 +95,14 @@ public class DisplayController {
        return displayManager.getDisplay(displayId);
    }

    /**
     * Get all the displays from DisplayManager.
     */
    public Display[] getDisplays() {
        final DisplayManager displayManager = mContext.getSystemService(DisplayManager.class);
        return displayManager.getDisplays();
    }

    /**
     * Gets the DisplayLayout associated with a display.
     */
+3 −2
Original line number Diff line number Diff line
@@ -795,13 +795,14 @@ public abstract class WMShellBaseModule {
    static KeyguardTransitionHandler provideKeyguardTransitionHandler(
            ShellInit shellInit,
            ShellController shellController,
            DisplayController displayController,
            Transitions transitions,
            TaskStackListenerImpl taskStackListener,
            @ShellMainThread Handler mainHandler,
            @ShellMainThread ShellExecutor mainExecutor) {
        return new KeyguardTransitionHandler(
                shellInit, shellController, transitions, taskStackListener, mainHandler,
                mainExecutor);
                shellInit, shellController, displayController, transitions, taskStackListener,
                mainHandler, mainExecutor);
    }

    @WMSingleton
+10 −4
Original line number Diff line number Diff line
@@ -42,6 +42,7 @@ import android.os.IBinder;
import android.os.RemoteException;
import android.util.ArrayMap;
import android.util.Log;
import android.view.Display;
import android.view.SurfaceControl;
import android.view.WindowManager;
import android.window.IRemoteTransition;
@@ -54,6 +55,7 @@ import android.window.WindowContainerTransaction;

import com.android.internal.protolog.ProtoLog;
import com.android.window.flags.Flags;
import com.android.wm.shell.common.DisplayController;
import com.android.wm.shell.common.ShellExecutor;
import com.android.wm.shell.common.TaskStackListenerCallback;
import com.android.wm.shell.common.TaskStackListenerImpl;
@@ -80,6 +82,8 @@ public class KeyguardTransitionHandler

    private final Transitions mTransitions;
    private final ShellController mShellController;

    private final DisplayController mDisplayController;
    private final Handler mMainHandler;
    private final ShellExecutor mMainExecutor;

@@ -121,12 +125,14 @@ public class KeyguardTransitionHandler
    public KeyguardTransitionHandler(
            @NonNull ShellInit shellInit,
            @NonNull ShellController shellController,
            @NonNull DisplayController displayController,
            @NonNull Transitions transitions,
            @NonNull TaskStackListenerImpl taskStackListener,
            @NonNull Handler mainHandler,
            @NonNull ShellExecutor mainExecutor) {
        mTransitions = transitions;
        mShellController = shellController;
        mDisplayController = displayController;
        mMainHandler = mainHandler;
        mMainExecutor = mainExecutor;
        mTaskStackListener = taskStackListener;
@@ -429,10 +435,10 @@ public class KeyguardTransitionHandler
        @Override
        public void startKeyguardTransition(boolean keyguardShowing, boolean aodShowing) {
            final WindowContainerTransaction wct = new WindowContainerTransaction();
            final KeyguardState keyguardState =
                    new KeyguardState.Builder(android.view.Display.DEFAULT_DISPLAY)
                            .setKeyguardShowing(keyguardShowing).setAodShowing(aodShowing).build();
            wct.addKeyguardState(keyguardState);
            for (Display display : mDisplayController.getDisplays()) {
                wct.addKeyguardState(new KeyguardState.Builder(display.getDisplayId())
                        .setKeyguardShowing(keyguardShowing).setAodShowing(aodShowing).build());
            }
            mMainExecutor.execute(() -> {
                mTransitions.startTransition(keyguardShowing ? TRANSIT_TO_FRONT : TRANSIT_TO_BACK,
                        wct, KeyguardTransitionHandler.this);
+7 −4
Original line number Diff line number Diff line
@@ -2875,7 +2875,7 @@ public class KeyguardViewMediator implements CoreStartable, Dumpable,
            }

            if (ENABLE_NEW_KEYGUARD_SHELL_TRANSITIONS) {
                mKeyguardTransitions.startKeyguardTransition(showing, aodShowing);
                startKeyguardTransition(showing, aodShowing);
            } else {
                try {

@@ -3019,7 +3019,7 @@ public class KeyguardViewMediator implements CoreStartable, Dumpable,
                final int keyguardFlag = flags;
                mUiBgExecutor.execute(() -> {
                    if (ENABLE_NEW_KEYGUARD_SHELL_TRANSITIONS) {
                        mKeyguardTransitions.startKeyguardTransition(
                        startKeyguardTransition(
                                false /* keyguardShowing */, false /* aodShowing */);
                        return;
                    }
@@ -3035,6 +3035,10 @@ public class KeyguardViewMediator implements CoreStartable, Dumpable,
        }
    };

    private void startKeyguardTransition(boolean keyguardShowing, boolean aodShowing) {
        mKeyguardTransitions.startKeyguardTransition(keyguardShowing, aodShowing);
    }

    private final Runnable mHideAnimationFinishedRunnable = () -> {
        Log.e(TAG, "mHideAnimationFinishedRunnable#run");
        mHideAnimationRunning = false;
@@ -3490,8 +3494,7 @@ public class KeyguardViewMediator implements CoreStartable, Dumpable,
        mSurfaceBehindRemoteAnimationRequested = true;

        if (ENABLE_NEW_KEYGUARD_SHELL_TRANSITIONS) {
            mKeyguardTransitions.startKeyguardTransition(
                    false /* keyguardShowing */, false /* aodShowing */);
            startKeyguardTransition(false /* keyguardShowing */, false /* aodShowing */);
            return;
        }

+6 −5
Original line number Diff line number Diff line
@@ -122,10 +122,7 @@ constructor(

        if (visible) {
            if (enableNewKeyguardShellTransitions) {
                keyguardTransitions.startKeyguardTransition(
                    false /* keyguardShowing */,
                    false, /* aodShowing */
                )
                startKeyguardTransition(false, /* keyguardShowing */ false /* aodShowing */)
                isKeyguardGoingAway = true
                return
            }
@@ -233,7 +230,7 @@ constructor(
                "aodVisible=$aodVisible).",
        )
        if (enableNewKeyguardShellTransitions) {
            keyguardTransitions.startKeyguardTransition(lockscreenShowing, aodVisible)
            startKeyguardTransition(lockscreenShowing, aodVisible)
        } else {
            activityTaskManagerService.setLockScreenShown(lockscreenShowing, aodVisible)
        }
@@ -241,6 +238,10 @@ constructor(
        this.isAodVisible = aodVisible
    }

    private fun startKeyguardTransition(keyguardShowing: Boolean, aodShowing: Boolean) {
        keyguardTransitions.startKeyguardTransition(keyguardShowing, aodShowing)
    }

    private fun endKeyguardGoingAwayAnimation() {
        if (!isKeyguardGoingAway) {
            Log.d(