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

Commit 5a87f0aa authored by Luca Zuccarini's avatar Luca Zuccarini
Browse files

Create a stubbed IRemoteTransition implementation.

This will make it easier to update the API in the future without having
to update too many files every time.

Bug: 323863002
Flag: NA
Test: NA
Change-Id: Id113a88692c6c4b5faff46e3131a6f259f0800c6
parent fc9264b4
Loading
Loading
Loading
Loading
+37 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2024 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package android.window;

import android.os.IBinder;
import android.os.RemoteException;
import android.view.SurfaceControl;

/**
 * Utility base implementation of {@link IRemoteTransition} that users can extend to avoid stubbing.
 *
 * @hide
 */
public abstract class RemoteTransitionStub extends IRemoteTransition.Stub {
    @Override
    public void mergeAnimation(IBinder transition, TransitionInfo info,
            SurfaceControl.Transaction t, IBinder mergeTarget,
            IRemoteTransitionFinishedCallback finishCallback) throws RemoteException {}

    @Override
    public void onTransitionConsumed(IBinder transition, boolean aborted)
            throws RemoteException {}
}
+4 −33
Original line number Diff line number Diff line
@@ -83,6 +83,7 @@ import android.window.IRemoteTransition;
import android.window.IRemoteTransitionFinishedCallback;
import android.window.IWindowContainerToken;
import android.window.RemoteTransition;
import android.window.RemoteTransitionStub;
import android.window.TransitionFilter;
import android.window.TransitionInfo;
import android.window.TransitionRequestInfo;
@@ -280,7 +281,7 @@ public class ShellTransitionTests extends ShellTestCase {

        final boolean[] remoteCalled = new boolean[]{false};
        final WindowContainerTransaction remoteFinishWCT = new WindowContainerTransaction();
        IRemoteTransition testRemote = new IRemoteTransition.Stub() {
        IRemoteTransition testRemote = new RemoteTransitionStub() {
            @Override
            public void startAnimation(IBinder token, TransitionInfo info,
                    SurfaceControl.Transaction t,
@@ -288,16 +289,6 @@ public class ShellTransitionTests extends ShellTestCase {
                remoteCalled[0] = true;
                finishCallback.onTransitionFinished(remoteFinishWCT, null /* sct */);
            }

            @Override
            public void mergeAnimation(IBinder token, TransitionInfo info,
                    SurfaceControl.Transaction t, IBinder mergeTarget,
                    IRemoteTransitionFinishedCallback finishCallback) throws RemoteException {
            }

            @Override
            public void onTransitionConsumed(IBinder iBinder, boolean b) throws RemoteException {
            }
        };
        IBinder transitToken = new Binder();
        transitions.requestStartTransition(transitToken,
@@ -450,7 +441,7 @@ public class ShellTransitionTests extends ShellTestCase {
        transitions.replaceDefaultHandlerForTest(mDefaultHandler);

        final boolean[] remoteCalled = new boolean[]{false};
        IRemoteTransition testRemote = new IRemoteTransition.Stub() {
        IRemoteTransition testRemote = new RemoteTransitionStub() {
            @Override
            public void startAnimation(IBinder token, TransitionInfo info,
                    SurfaceControl.Transaction t,
@@ -458,16 +449,6 @@ public class ShellTransitionTests extends ShellTestCase {
                remoteCalled[0] = true;
                finishCallback.onTransitionFinished(null /* wct */, null /* sct */);
            }

            @Override
            public void mergeAnimation(IBinder token, TransitionInfo info,
                    SurfaceControl.Transaction t, IBinder mergeTarget,
                    IRemoteTransitionFinishedCallback finishCallback) throws RemoteException {
            }

            @Override
            public void onTransitionConsumed(IBinder iBinder, boolean b) throws RemoteException {
            }
        };

        TransitionFilter filter = new TransitionFilter();
@@ -500,7 +481,7 @@ public class ShellTransitionTests extends ShellTestCase {

        final boolean[] remoteCalled = new boolean[]{false};
        final WindowContainerTransaction remoteFinishWCT = new WindowContainerTransaction();
        IRemoteTransition testRemote = new IRemoteTransition.Stub() {
        IRemoteTransition testRemote = new RemoteTransitionStub() {
            @Override
            public void startAnimation(IBinder token, TransitionInfo info,
                    SurfaceControl.Transaction t,
@@ -508,16 +489,6 @@ public class ShellTransitionTests extends ShellTestCase {
                remoteCalled[0] = true;
                finishCallback.onTransitionFinished(remoteFinishWCT, null /* sct */);
            }

            @Override
            public void mergeAnimation(IBinder token, TransitionInfo info,
                    SurfaceControl.Transaction t, IBinder mergeTarget,
                    IRemoteTransitionFinishedCallback finishCallback) throws RemoteException {
            }

            @Override
            public void onTransitionConsumed(IBinder iBinder, boolean b) throws RemoteException {
            }
        };

        final int transitType = TRANSIT_FIRST_CUSTOM + 1;
+2 −7
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ import android.os.RemoteException;
import android.view.SurfaceControl;
import android.window.IRemoteTransition;
import android.window.IRemoteTransitionFinishedCallback;
import android.window.RemoteTransitionStub;
import android.window.TransitionInfo;
import android.window.WindowContainerTransaction;

@@ -29,7 +30,7 @@ import android.window.WindowContainerTransaction;
 * {@link #startAnimation(IBinder, TransitionInfo, SurfaceControl.Transaction,
 * IRemoteTransitionFinishedCallback)} being called.
 */
public class TestRemoteTransition extends IRemoteTransition.Stub {
public class TestRemoteTransition extends RemoteTransitionStub {
    private boolean mCalled = false;
    private boolean mConsumed = false;
    final WindowContainerTransaction mRemoteFinishWCT = new WindowContainerTransaction();
@@ -43,12 +44,6 @@ public class TestRemoteTransition extends IRemoteTransition.Stub {
        finishCallback.onTransitionFinished(mRemoteFinishWCT, null /* sct */);
    }

    @Override
    public void mergeAnimation(IBinder transition, TransitionInfo info,
            SurfaceControl.Transaction t, IBinder mergeTarget,
            IRemoteTransitionFinishedCallback finishCallback) throws RemoteException {
    }

    @Override
    public void onTransitionConsumed(IBinder iBinder, boolean b) throws RemoteException {
        mConsumed = true;
+3 −7
Original line number Diff line number Diff line
@@ -36,6 +36,7 @@ import android.view.WindowManager;
import android.view.WindowManager.TransitionOldType;
import android.window.IRemoteTransition;
import android.window.IRemoteTransitionFinishedCallback;
import android.window.RemoteTransitionStub;
import android.window.TransitionInfo;

import com.android.wm.shell.shared.CounterRotator;
@@ -69,8 +70,8 @@ public abstract class RemoteAnimationRunnerCompat extends IRemoteAnimationRunner
    }

    /** Wraps a remote animation runner in a remote-transition. */
    public static IRemoteTransition.Stub wrap(IRemoteAnimationRunner runner) {
        return new IRemoteTransition.Stub() {
    public static RemoteTransitionStub wrap(IRemoteAnimationRunner runner) {
        return new RemoteTransitionStub() {
            final ArrayMap<IBinder, Runnable> mFinishRunnables = new ArrayMap<>();

            @Override
@@ -233,11 +234,6 @@ public abstract class RemoteAnimationRunnerCompat extends IRemoteAnimationRunner
                runner.onAnimationCancelled();
                finishRunnable.run();
            }

            @Override
            public void onTransitionConsumed(IBinder iBinder, boolean aborted)
                    throws RemoteException {
            }
        };
    }
}
+2 −6
Original line number Diff line number Diff line
@@ -63,6 +63,7 @@ import android.view.SurfaceControl;
import android.view.WindowManagerPolicyConstants;
import android.window.IRemoteTransition;
import android.window.IRemoteTransitionFinishedCallback;
import android.window.RemoteTransitionStub;
import android.window.TransitionInfo;

import com.android.internal.annotations.GuardedBy;
@@ -187,7 +188,7 @@ public class KeyguardService extends Service {
    // Note: Also used for wrapping occlude by Dream animation. It works (with some redundancy).
    public static IRemoteTransition wrap(final KeyguardViewMediator keyguardViewMediator,
            final IRemoteAnimationRunner runner) {
        return new IRemoteTransition.Stub() {
        return new RemoteTransitionStub() {

            @GuardedBy("mLeashMap")
            private final ArrayMap<SurfaceControl, SurfaceControl> mLeashMap = new ArrayMap<>();
@@ -253,11 +254,6 @@ public class KeyguardService extends Service {
                }
            }

            @Override
            public void onTransitionConsumed(IBinder transition, boolean aborted) {
                // No-op.
            }

            private static void initAlphaForAnimationTargets(@NonNull SurfaceControl.Transaction t,
                    @NonNull RemoteAnimationTarget[] targets) {
                for (RemoteAnimationTarget target : targets) {