Loading core/java/android/window/RemoteTransition.java +42 −4 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package android.window; import android.annotation.NonNull; import android.annotation.Nullable; import android.app.IApplicationThread; import android.os.IBinder; import android.os.Parcelable; Loading @@ -34,6 +35,14 @@ public class RemoteTransition implements Parcelable { /** The actual remote-transition interface used to run the transition animation. */ private @NonNull IRemoteTransition mRemoteTransition; /** The application thread that will be running the remote transition. */ private @Nullable IApplicationThread mAppThread; /** Constructs with no app thread (animation runs in shell). */ public RemoteTransition(@NonNull IRemoteTransition remoteTransition) { this(remoteTransition, null /* appThread */); } /** Get the IBinder associated with the underlying IRemoteTransition. */ public @Nullable IBinder asBinder() { return mRemoteTransition.asBinder(); Loading @@ -59,13 +68,17 @@ public class RemoteTransition implements Parcelable { * * @param remoteTransition * The actual remote-transition interface used to run the transition animation. * @param appThread * The application thread that will be running the remote transition. */ @DataClass.Generated.Member public RemoteTransition( @NonNull IRemoteTransition remoteTransition) { @NonNull IRemoteTransition remoteTransition, @Nullable IApplicationThread appThread) { this.mRemoteTransition = remoteTransition; com.android.internal.util.AnnotationValidations.validate( NonNull.class, null, mRemoteTransition); this.mAppThread = appThread; // onConstructed(); // You can define this method to get a callback } Loading @@ -78,6 +91,14 @@ public class RemoteTransition implements Parcelable { return mRemoteTransition; } /** * The application thread that will be running the remote transition. */ @DataClass.Generated.Member public @Nullable IApplicationThread getAppThread() { return mAppThread; } /** * The actual remote-transition interface used to run the transition animation. */ Loading @@ -89,6 +110,15 @@ public class RemoteTransition implements Parcelable { return this; } /** * The application thread that will be running the remote transition. */ @DataClass.Generated.Member public @NonNull RemoteTransition setAppThread(@NonNull IApplicationThread value) { mAppThread = value; return this; } @Override @DataClass.Generated.Member public String toString() { Loading @@ -96,7 +126,8 @@ public class RemoteTransition implements Parcelable { // String fieldNameToString() { ... } return "RemoteTransition { " + "remoteTransition = " + mRemoteTransition + "remoteTransition = " + mRemoteTransition + ", " + "appThread = " + mAppThread + " }"; } Loading @@ -106,7 +137,11 @@ public class RemoteTransition implements Parcelable { // You can override field parcelling by defining methods like: // void parcelFieldName(Parcel dest, int flags) { ... } byte flg = 0; if (mAppThread != null) flg |= 0x2; dest.writeByte(flg); dest.writeStrongInterface(mRemoteTransition); if (mAppThread != null) dest.writeStrongInterface(mAppThread); } @Override Loading @@ -120,11 +155,14 @@ public class RemoteTransition implements Parcelable { // You can override field unparcelling by defining methods like: // static FieldType unparcelFieldName(Parcel in) { ... } byte flg = in.readByte(); IRemoteTransition remoteTransition = IRemoteTransition.Stub.asInterface(in.readStrongBinder()); IApplicationThread appThread = (flg & 0x2) == 0 ? null : IApplicationThread.Stub.asInterface(in.readStrongBinder()); this.mRemoteTransition = remoteTransition; com.android.internal.util.AnnotationValidations.validate( NonNull.class, null, mRemoteTransition); this.mAppThread = appThread; // onConstructed(); // You can define this method to get a callback } Loading @@ -144,10 +182,10 @@ public class RemoteTransition implements Parcelable { }; @DataClass.Generated( time = 1630613039043L, time = 1630690027011L, codegenVersion = "1.0.23", sourceFile = "frameworks/base/core/java/android/window/RemoteTransition.java", inputSignatures = "private @android.annotation.NonNull android.window.IRemoteTransition mRemoteTransition\npublic @android.annotation.Nullable android.os.IBinder asBinder()\nclass RemoteTransition extends java.lang.Object implements [android.os.Parcelable]\n@com.android.internal.util.DataClass(genToString=true, genSetters=true, genAidl=true)") inputSignatures = "private @android.annotation.NonNull android.window.IRemoteTransition mRemoteTransition\nprivate @android.annotation.Nullable android.app.IApplicationThread mAppThread\npublic @android.annotation.Nullable android.os.IBinder asBinder()\nclass RemoteTransition extends java.lang.Object implements [android.os.Parcelable]\n@com.android.internal.util.DataClass(genToString=true, genSetters=true, genAidl=true)") @Deprecated private void __metadata() {} Loading libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java +7 −2 Original line number Diff line number Diff line Loading @@ -339,9 +339,14 @@ class StageCoordinator implements SplitLayout.SplitLayoutHandler, augmentedNonApps[i] = nonApps[i]; } augmentedNonApps[augmentedNonApps.length - 1] = getDividerBarLegacyTarget(); try { try { ActivityTaskManager.getService().setRunningRemoteTransitionDelegate( adapter.getCallingApplication()); } catch (SecurityException e) { Slog.e(TAG, "Unable to boost animation thread. This should only happen" + " during unit tests"); } adapter.getRunner().onAnimationStart(transit, apps, wallpapers, nonApps, finishedCallback); } catch (RemoteException e) { Loading libs/WindowManager/Shell/src/com/android/wm/shell/transition/OneShotRemoteHandler.java +9 −0 Original line number Diff line number Diff line Loading @@ -18,9 +18,11 @@ package com.android.wm.shell.transition; import android.annotation.NonNull; import android.annotation.Nullable; import android.app.ActivityTaskManager; import android.os.IBinder; import android.os.RemoteException; import android.util.Log; import android.util.Slog; import android.view.SurfaceControl; import android.window.IRemoteTransition; import android.window.IRemoteTransitionFinishedCallback; Loading Loading @@ -89,6 +91,13 @@ public class OneShotRemoteHandler implements Transitions.TransitionHandler { if (mRemote.asBinder() != null) { mRemote.asBinder().linkToDeath(remoteDied, 0 /* flags */); } try { ActivityTaskManager.getService().setRunningRemoteTransitionDelegate( mRemote.getAppThread()); } catch (SecurityException e) { Slog.e(Transitions.TAG, "Unable to boost animation thread. This should only happen" + " during unit tests"); } mRemote.getRemoteTransition().startAnimation(transition, info, startTransaction, cb); } catch (RemoteException e) { Log.e(Transitions.TAG, "Error running remote transition.", e); Loading libs/WindowManager/Shell/src/com/android/wm/shell/transition/RemoteTransitionHandler.java +8 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package com.android.wm.shell.transition; import android.annotation.NonNull; import android.annotation.Nullable; import android.app.ActivityTaskManager; import android.os.IBinder; import android.os.RemoteException; import android.util.ArrayMap; Loading Loading @@ -130,6 +131,13 @@ public class RemoteTransitionHandler implements Transitions.TransitionHandler { }; try { handleDeath(remote.asBinder(), finishCallback); try { ActivityTaskManager.getService().setRunningRemoteTransitionDelegate( remote.getAppThread()); } catch (SecurityException e) { Log.e(Transitions.TAG, "Unable to boost animation thread. This should only happen" + " during unit tests"); } remote.getRemoteTransition().startAnimation(transition, info, startTransaction, cb); } catch (RemoteException e) { Log.e(Transitions.TAG, "Error running remote transition.", e); Loading packages/SystemUI/shared/src/com/android/systemui/shared/system/RemoteAnimationAdapterCompat.java +6 −4 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ import static android.view.WindowManager.TransitionOldType; import static android.window.TransitionInfo.FLAG_IS_WALLPAPER; import android.annotation.SuppressLint; import android.app.IApplicationThread; import android.os.IBinder; import android.os.RemoteException; import android.util.ArrayMap; Loading @@ -51,10 +52,10 @@ public class RemoteAnimationAdapterCompat { private final RemoteTransitionCompat mRemoteTransition; public RemoteAnimationAdapterCompat(RemoteAnimationRunnerCompat runner, long duration, long statusBarTransitionDelay) { long statusBarTransitionDelay, IApplicationThread appThread) { mWrapped = new RemoteAnimationAdapter(wrapRemoteAnimationRunner(runner), duration, statusBarTransitionDelay); mRemoteTransition = buildRemoteTransition(runner); mRemoteTransition = buildRemoteTransition(runner, appThread); } RemoteAnimationAdapter getWrapped() { Loading @@ -62,9 +63,10 @@ public class RemoteAnimationAdapterCompat { } /** Helper to just build a remote transition. Use this if the legacy adapter isn't needed. */ public static RemoteTransitionCompat buildRemoteTransition(RemoteAnimationRunnerCompat runner) { public static RemoteTransitionCompat buildRemoteTransition(RemoteAnimationRunnerCompat runner, IApplicationThread appThread) { return new RemoteTransitionCompat( new RemoteTransition(wrapRemoteTransition(runner))); new RemoteTransition(wrapRemoteTransition(runner), appThread)); } public RemoteTransitionCompat getRemoteTransition() { Loading Loading
core/java/android/window/RemoteTransition.java +42 −4 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package android.window; import android.annotation.NonNull; import android.annotation.Nullable; import android.app.IApplicationThread; import android.os.IBinder; import android.os.Parcelable; Loading @@ -34,6 +35,14 @@ public class RemoteTransition implements Parcelable { /** The actual remote-transition interface used to run the transition animation. */ private @NonNull IRemoteTransition mRemoteTransition; /** The application thread that will be running the remote transition. */ private @Nullable IApplicationThread mAppThread; /** Constructs with no app thread (animation runs in shell). */ public RemoteTransition(@NonNull IRemoteTransition remoteTransition) { this(remoteTransition, null /* appThread */); } /** Get the IBinder associated with the underlying IRemoteTransition. */ public @Nullable IBinder asBinder() { return mRemoteTransition.asBinder(); Loading @@ -59,13 +68,17 @@ public class RemoteTransition implements Parcelable { * * @param remoteTransition * The actual remote-transition interface used to run the transition animation. * @param appThread * The application thread that will be running the remote transition. */ @DataClass.Generated.Member public RemoteTransition( @NonNull IRemoteTransition remoteTransition) { @NonNull IRemoteTransition remoteTransition, @Nullable IApplicationThread appThread) { this.mRemoteTransition = remoteTransition; com.android.internal.util.AnnotationValidations.validate( NonNull.class, null, mRemoteTransition); this.mAppThread = appThread; // onConstructed(); // You can define this method to get a callback } Loading @@ -78,6 +91,14 @@ public class RemoteTransition implements Parcelable { return mRemoteTransition; } /** * The application thread that will be running the remote transition. */ @DataClass.Generated.Member public @Nullable IApplicationThread getAppThread() { return mAppThread; } /** * The actual remote-transition interface used to run the transition animation. */ Loading @@ -89,6 +110,15 @@ public class RemoteTransition implements Parcelable { return this; } /** * The application thread that will be running the remote transition. */ @DataClass.Generated.Member public @NonNull RemoteTransition setAppThread(@NonNull IApplicationThread value) { mAppThread = value; return this; } @Override @DataClass.Generated.Member public String toString() { Loading @@ -96,7 +126,8 @@ public class RemoteTransition implements Parcelable { // String fieldNameToString() { ... } return "RemoteTransition { " + "remoteTransition = " + mRemoteTransition + "remoteTransition = " + mRemoteTransition + ", " + "appThread = " + mAppThread + " }"; } Loading @@ -106,7 +137,11 @@ public class RemoteTransition implements Parcelable { // You can override field parcelling by defining methods like: // void parcelFieldName(Parcel dest, int flags) { ... } byte flg = 0; if (mAppThread != null) flg |= 0x2; dest.writeByte(flg); dest.writeStrongInterface(mRemoteTransition); if (mAppThread != null) dest.writeStrongInterface(mAppThread); } @Override Loading @@ -120,11 +155,14 @@ public class RemoteTransition implements Parcelable { // You can override field unparcelling by defining methods like: // static FieldType unparcelFieldName(Parcel in) { ... } byte flg = in.readByte(); IRemoteTransition remoteTransition = IRemoteTransition.Stub.asInterface(in.readStrongBinder()); IApplicationThread appThread = (flg & 0x2) == 0 ? null : IApplicationThread.Stub.asInterface(in.readStrongBinder()); this.mRemoteTransition = remoteTransition; com.android.internal.util.AnnotationValidations.validate( NonNull.class, null, mRemoteTransition); this.mAppThread = appThread; // onConstructed(); // You can define this method to get a callback } Loading @@ -144,10 +182,10 @@ public class RemoteTransition implements Parcelable { }; @DataClass.Generated( time = 1630613039043L, time = 1630690027011L, codegenVersion = "1.0.23", sourceFile = "frameworks/base/core/java/android/window/RemoteTransition.java", inputSignatures = "private @android.annotation.NonNull android.window.IRemoteTransition mRemoteTransition\npublic @android.annotation.Nullable android.os.IBinder asBinder()\nclass RemoteTransition extends java.lang.Object implements [android.os.Parcelable]\n@com.android.internal.util.DataClass(genToString=true, genSetters=true, genAidl=true)") inputSignatures = "private @android.annotation.NonNull android.window.IRemoteTransition mRemoteTransition\nprivate @android.annotation.Nullable android.app.IApplicationThread mAppThread\npublic @android.annotation.Nullable android.os.IBinder asBinder()\nclass RemoteTransition extends java.lang.Object implements [android.os.Parcelable]\n@com.android.internal.util.DataClass(genToString=true, genSetters=true, genAidl=true)") @Deprecated private void __metadata() {} Loading
libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java +7 −2 Original line number Diff line number Diff line Loading @@ -339,9 +339,14 @@ class StageCoordinator implements SplitLayout.SplitLayoutHandler, augmentedNonApps[i] = nonApps[i]; } augmentedNonApps[augmentedNonApps.length - 1] = getDividerBarLegacyTarget(); try { try { ActivityTaskManager.getService().setRunningRemoteTransitionDelegate( adapter.getCallingApplication()); } catch (SecurityException e) { Slog.e(TAG, "Unable to boost animation thread. This should only happen" + " during unit tests"); } adapter.getRunner().onAnimationStart(transit, apps, wallpapers, nonApps, finishedCallback); } catch (RemoteException e) { Loading
libs/WindowManager/Shell/src/com/android/wm/shell/transition/OneShotRemoteHandler.java +9 −0 Original line number Diff line number Diff line Loading @@ -18,9 +18,11 @@ package com.android.wm.shell.transition; import android.annotation.NonNull; import android.annotation.Nullable; import android.app.ActivityTaskManager; import android.os.IBinder; import android.os.RemoteException; import android.util.Log; import android.util.Slog; import android.view.SurfaceControl; import android.window.IRemoteTransition; import android.window.IRemoteTransitionFinishedCallback; Loading Loading @@ -89,6 +91,13 @@ public class OneShotRemoteHandler implements Transitions.TransitionHandler { if (mRemote.asBinder() != null) { mRemote.asBinder().linkToDeath(remoteDied, 0 /* flags */); } try { ActivityTaskManager.getService().setRunningRemoteTransitionDelegate( mRemote.getAppThread()); } catch (SecurityException e) { Slog.e(Transitions.TAG, "Unable to boost animation thread. This should only happen" + " during unit tests"); } mRemote.getRemoteTransition().startAnimation(transition, info, startTransaction, cb); } catch (RemoteException e) { Log.e(Transitions.TAG, "Error running remote transition.", e); Loading
libs/WindowManager/Shell/src/com/android/wm/shell/transition/RemoteTransitionHandler.java +8 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package com.android.wm.shell.transition; import android.annotation.NonNull; import android.annotation.Nullable; import android.app.ActivityTaskManager; import android.os.IBinder; import android.os.RemoteException; import android.util.ArrayMap; Loading Loading @@ -130,6 +131,13 @@ public class RemoteTransitionHandler implements Transitions.TransitionHandler { }; try { handleDeath(remote.asBinder(), finishCallback); try { ActivityTaskManager.getService().setRunningRemoteTransitionDelegate( remote.getAppThread()); } catch (SecurityException e) { Log.e(Transitions.TAG, "Unable to boost animation thread. This should only happen" + " during unit tests"); } remote.getRemoteTransition().startAnimation(transition, info, startTransaction, cb); } catch (RemoteException e) { Log.e(Transitions.TAG, "Error running remote transition.", e); Loading
packages/SystemUI/shared/src/com/android/systemui/shared/system/RemoteAnimationAdapterCompat.java +6 −4 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ import static android.view.WindowManager.TransitionOldType; import static android.window.TransitionInfo.FLAG_IS_WALLPAPER; import android.annotation.SuppressLint; import android.app.IApplicationThread; import android.os.IBinder; import android.os.RemoteException; import android.util.ArrayMap; Loading @@ -51,10 +52,10 @@ public class RemoteAnimationAdapterCompat { private final RemoteTransitionCompat mRemoteTransition; public RemoteAnimationAdapterCompat(RemoteAnimationRunnerCompat runner, long duration, long statusBarTransitionDelay) { long statusBarTransitionDelay, IApplicationThread appThread) { mWrapped = new RemoteAnimationAdapter(wrapRemoteAnimationRunner(runner), duration, statusBarTransitionDelay); mRemoteTransition = buildRemoteTransition(runner); mRemoteTransition = buildRemoteTransition(runner, appThread); } RemoteAnimationAdapter getWrapped() { Loading @@ -62,9 +63,10 @@ public class RemoteAnimationAdapterCompat { } /** Helper to just build a remote transition. Use this if the legacy adapter isn't needed. */ public static RemoteTransitionCompat buildRemoteTransition(RemoteAnimationRunnerCompat runner) { public static RemoteTransitionCompat buildRemoteTransition(RemoteAnimationRunnerCompat runner, IApplicationThread appThread) { return new RemoteTransitionCompat( new RemoteTransition(wrapRemoteTransition(runner))); new RemoteTransition(wrapRemoteTransition(runner), appThread)); } public RemoteTransitionCompat getRemoteTransition() { Loading