summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/SystemUI/shared/src/com/android/systemui/shared/recents/ISystemUiProxy.aidl1
-rw-r--r--packages/SystemUI/shared/src/com/android/systemui/shared/system/RemoteAnimationAdapterCompat.java258
-rw-r--r--packages/SystemUI/shared/src/com/android/systemui/shared/system/RemoteAnimationDefinitionCompat.java40
-rw-r--r--packages/SystemUI/shared/src/com/android/systemui/shared/system/RemoteAnimationRunnerCompat.java191
-rw-r--r--packages/SystemUI/shared/src/com/android/systemui/shared/system/RemoteTransitionCompat.aidl19
-rw-r--r--packages/SystemUI/shared/src/com/android/systemui/shared/system/RemoteTransitionCompat.java239
-rw-r--r--packages/SystemUI/shared/src/com/android/systemui/shared/system/RemoteTransitionRunner.java42
7 files changed, 192 insertions, 598 deletions
diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/recents/ISystemUiProxy.aidl b/packages/SystemUI/shared/src/com/android/systemui/shared/recents/ISystemUiProxy.aidl
index b99b72bb4275..1c532fe7a529 100644
--- a/packages/SystemUI/shared/src/com/android/systemui/shared/recents/ISystemUiProxy.aidl
+++ b/packages/SystemUI/shared/src/com/android/systemui/shared/recents/ISystemUiProxy.aidl
@@ -24,7 +24,6 @@ import android.os.UserHandle;
import android.view.MotionEvent;
import com.android.systemui.shared.recents.model.Task;
-import com.android.systemui.shared.system.RemoteTransitionCompat;
/**
* Temporary callbacks into SystemUI.
diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/system/RemoteAnimationAdapterCompat.java b/packages/SystemUI/shared/src/com/android/systemui/shared/system/RemoteAnimationAdapterCompat.java
deleted file mode 100644
index 37e706a9a4c9..000000000000
--- a/packages/SystemUI/shared/src/com/android/systemui/shared/system/RemoteAnimationAdapterCompat.java
+++ /dev/null
@@ -1,258 +0,0 @@
-/*
- * Copyright (C) 2018 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 com.android.systemui.shared.system;
-
-import static android.app.WindowConfiguration.ACTIVITY_TYPE_HOME;
-import static android.view.WindowManager.TRANSIT_CLOSE;
-import static android.view.WindowManager.TRANSIT_OLD_NONE;
-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.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;
-import android.util.Log;
-import android.view.IRemoteAnimationFinishedCallback;
-import android.view.IRemoteAnimationRunner;
-import android.view.RemoteAnimationAdapter;
-import android.view.RemoteAnimationTarget;
-import android.view.SurfaceControl;
-import android.window.IRemoteTransition;
-import android.window.IRemoteTransitionFinishedCallback;
-import android.window.RemoteTransition;
-import android.window.TransitionInfo;
-
-import com.android.wm.shell.util.CounterRotator;
-
-/**
- * @see RemoteAnimationAdapter
- */
-public class RemoteAnimationAdapterCompat {
-
- private final RemoteAnimationAdapter mWrapped;
- private final RemoteTransitionCompat mRemoteTransition;
-
- public RemoteAnimationAdapterCompat(RemoteAnimationRunnerCompat runner, long duration,
- long statusBarTransitionDelay, IApplicationThread appThread) {
- mWrapped = new RemoteAnimationAdapter(wrapRemoteAnimationRunner(runner), duration,
- statusBarTransitionDelay);
- mRemoteTransition = buildRemoteTransition(runner, appThread);
- }
-
- public RemoteAnimationAdapter getWrapped() {
- return mWrapped;
- }
-
- /** Helper to just build a remote transition. Use this if the legacy adapter isn't needed. */
- public static RemoteTransitionCompat buildRemoteTransition(RemoteAnimationRunnerCompat runner,
- IApplicationThread appThread) {
- return new RemoteTransitionCompat(
- new RemoteTransition(wrapRemoteTransition(runner), appThread));
- }
-
- public RemoteTransitionCompat getRemoteTransition() {
- return mRemoteTransition;
- }
-
- /** Wraps a RemoteAnimationRunnerCompat in an IRemoteAnimationRunner. */
- public static IRemoteAnimationRunner.Stub wrapRemoteAnimationRunner(
- final RemoteAnimationRunnerCompat remoteAnimationAdapter) {
- return new IRemoteAnimationRunner.Stub() {
- @Override
- public void onAnimationStart(@TransitionOldType int transit,
- RemoteAnimationTarget[] apps,
- RemoteAnimationTarget[] wallpapers,
- RemoteAnimationTarget[] nonApps,
- final IRemoteAnimationFinishedCallback finishedCallback) {
- final Runnable animationFinishedCallback = new Runnable() {
- @Override
- public void run() {
- try {
- finishedCallback.onAnimationFinished();
- } catch (RemoteException e) {
- Log.e("ActivityOptionsCompat", "Failed to call app controlled animation"
- + " finished callback", e);
- }
- }
- };
- remoteAnimationAdapter.onAnimationStart(transit, apps, wallpapers,
- nonApps, animationFinishedCallback);
- }
-
- @Override
- public void onAnimationCancelled(boolean isKeyguardOccluded) {
- remoteAnimationAdapter.onAnimationCancelled();
- }
- };
- }
-
- private static IRemoteTransition.Stub wrapRemoteTransition(
- final RemoteAnimationRunnerCompat remoteAnimationAdapter) {
- return new IRemoteTransition.Stub() {
- final ArrayMap<IBinder, Runnable> mFinishRunnables = new ArrayMap<>();
-
- @Override
- public void startAnimation(IBinder token, TransitionInfo info,
- SurfaceControl.Transaction t,
- IRemoteTransitionFinishedCallback finishCallback) {
- final ArrayMap<SurfaceControl, SurfaceControl> leashMap = new ArrayMap<>();
- final RemoteAnimationTarget[] apps =
- RemoteAnimationTargetCompat.wrapApps(info, t, leashMap);
- final RemoteAnimationTarget[] wallpapers =
- RemoteAnimationTargetCompat.wrapNonApps(
- info, true /* wallpapers */, t, leashMap);
- final RemoteAnimationTarget[] nonApps =
- RemoteAnimationTargetCompat.wrapNonApps(
- info, false /* wallpapers */, t, leashMap);
-
- // TODO(b/177438007): Move this set-up logic into launcher's animation impl.
- boolean isReturnToHome = false;
- TransitionInfo.Change launcherTask = null;
- TransitionInfo.Change wallpaper = null;
- int launcherLayer = 0;
- int rotateDelta = 0;
- float displayW = 0;
- float displayH = 0;
- for (int i = info.getChanges().size() - 1; i >= 0; --i) {
- final TransitionInfo.Change change = info.getChanges().get(i);
- // skip changes that we didn't wrap
- if (!leashMap.containsKey(change.getLeash())) continue;
- if (change.getTaskInfo() != null
- && change.getTaskInfo().getActivityType() == ACTIVITY_TYPE_HOME) {
- isReturnToHome = change.getMode() == TRANSIT_OPEN
- || change.getMode() == TRANSIT_TO_FRONT;
- launcherTask = change;
- launcherLayer = info.getChanges().size() - i;
- } else if ((change.getFlags() & FLAG_IS_WALLPAPER) != 0) {
- wallpaper = change;
- }
- if (change.getParent() == null && change.getEndRotation() >= 0
- && change.getEndRotation() != change.getStartRotation()) {
- rotateDelta = change.getEndRotation() - change.getStartRotation();
- displayW = change.getEndAbsBounds().width();
- displayH = change.getEndAbsBounds().height();
- }
- }
-
- // Prepare for rotation if there is one
- final CounterRotator counterLauncher = new CounterRotator();
- final CounterRotator counterWallpaper = new CounterRotator();
- if (launcherTask != null && rotateDelta != 0 && launcherTask.getParent() != null) {
- counterLauncher.setup(t, info.getChange(launcherTask.getParent()).getLeash(),
- rotateDelta, displayW, displayH);
- if (counterLauncher.getSurface() != null) {
- t.setLayer(counterLauncher.getSurface(), launcherLayer);
- }
- }
-
- if (isReturnToHome) {
- if (counterLauncher.getSurface() != null) {
- t.setLayer(counterLauncher.getSurface(), info.getChanges().size() * 3);
- }
- // Need to "boost" the closing things since that's what launcher expects.
- for (int i = info.getChanges().size() - 1; i >= 0; --i) {
- final TransitionInfo.Change change = info.getChanges().get(i);
- final SurfaceControl leash = leashMap.get(change.getLeash());
- // skip changes that we didn't wrap
- if (leash == null) continue;
- final int mode = info.getChanges().get(i).getMode();
- // Only deal with independent layers
- if (!TransitionInfo.isIndependent(change, info)) continue;
- if (mode == TRANSIT_CLOSE || mode == TRANSIT_TO_BACK) {
- t.setLayer(leash, info.getChanges().size() * 3 - i);
- counterLauncher.addChild(t, leash);
- }
- }
- // Make wallpaper visible immediately since launcher apparently won't do this.
- for (int i = wallpapers.length - 1; i >= 0; --i) {
- t.show(wallpapers[i].leash);
- t.setAlpha(wallpapers[i].leash, 1.f);
- }
- } else {
- if (launcherTask != null) {
- counterLauncher.addChild(t, leashMap.get(launcherTask.getLeash()));
- }
- if (wallpaper != null && rotateDelta != 0 && wallpaper.getParent() != null) {
- counterWallpaper.setup(t, info.getChange(wallpaper.getParent()).getLeash(),
- rotateDelta, displayW, displayH);
- if (counterWallpaper.getSurface() != null) {
- t.setLayer(counterWallpaper.getSurface(), -1);
- counterWallpaper.addChild(t, leashMap.get(wallpaper.getLeash()));
- }
- }
- }
- t.apply();
-
- final Runnable animationFinishedCallback = new Runnable() {
- @Override
- @SuppressLint("NewApi")
- public void run() {
- final SurfaceControl.Transaction finishTransaction =
- new SurfaceControl.Transaction();
- counterLauncher.cleanUp(finishTransaction);
- counterWallpaper.cleanUp(finishTransaction);
- // Release surface references now. This is apparently to free GPU memory
- // while doing quick operations (eg. during CTS).
- for (int i = info.getChanges().size() - 1; i >= 0; --i) {
- info.getChanges().get(i).getLeash().release();
- }
- // Don't release here since launcher might still be using them. Instead
- // let launcher release them (eg. via RemoteAnimationTargets)
- leashMap.clear();
- try {
- finishCallback.onTransitionFinished(null /* wct */, finishTransaction);
- } catch (RemoteException e) {
- Log.e("ActivityOptionsCompat", "Failed to call app controlled animation"
- + " finished callback", e);
- }
- }
- };
- synchronized (mFinishRunnables) {
- mFinishRunnables.put(token, animationFinishedCallback);
- }
- // TODO(bc-unlcok): Pass correct transit type.
- remoteAnimationAdapter.onAnimationStart(TRANSIT_OLD_NONE,
- apps, wallpapers, nonApps, () -> {
- synchronized (mFinishRunnables) {
- if (mFinishRunnables.remove(token) == null) return;
- }
- animationFinishedCallback.run();
- });
- }
-
- @Override
- public void mergeAnimation(IBinder token, TransitionInfo info,
- SurfaceControl.Transaction t, IBinder mergeTarget,
- IRemoteTransitionFinishedCallback finishCallback) {
- // TODO: hook up merge to recents onTaskAppeared if applicable. Until then, adapt
- // to legacy cancel.
- final Runnable finishRunnable;
- synchronized (mFinishRunnables) {
- finishRunnable = mFinishRunnables.remove(mergeTarget);
- }
- if (finishRunnable == null) return;
- remoteAnimationAdapter.onAnimationCancelled();
- finishRunnable.run();
- }
- };
- }
-}
diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/system/RemoteAnimationDefinitionCompat.java b/packages/SystemUI/shared/src/com/android/systemui/shared/system/RemoteAnimationDefinitionCompat.java
deleted file mode 100644
index ab55037159ef..000000000000
--- a/packages/SystemUI/shared/src/com/android/systemui/shared/system/RemoteAnimationDefinitionCompat.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright (C) 2018 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 com.android.systemui.shared.system;
-
-import android.view.RemoteAnimationDefinition;
-
-/**
- * @see RemoteAnimationDefinition
- */
-public class RemoteAnimationDefinitionCompat {
-
- private final RemoteAnimationDefinition mWrapped = new RemoteAnimationDefinition();
-
- public void addRemoteAnimation(int transition, RemoteAnimationAdapterCompat adapter) {
- mWrapped.addRemoteAnimation(transition, adapter.getWrapped());
- }
-
- public void addRemoteAnimation(int transition, int activityTypeFilter,
- RemoteAnimationAdapterCompat adapter) {
- mWrapped.addRemoteAnimation(transition, activityTypeFilter, adapter.getWrapped());
- }
-
- public RemoteAnimationDefinition getWrapped() {
- return mWrapped;
- }
-}
diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/system/RemoteAnimationRunnerCompat.java b/packages/SystemUI/shared/src/com/android/systemui/shared/system/RemoteAnimationRunnerCompat.java
index 5809c8124946..93c807352521 100644
--- a/packages/SystemUI/shared/src/com/android/systemui/shared/system/RemoteAnimationRunnerCompat.java
+++ b/packages/SystemUI/shared/src/com/android/systemui/shared/system/RemoteAnimationRunnerCompat.java
@@ -16,12 +16,197 @@
package com.android.systemui.shared.system;
+import static android.app.WindowConfiguration.ACTIVITY_TYPE_HOME;
+import static android.view.WindowManager.TRANSIT_CLOSE;
+import static android.view.WindowManager.TRANSIT_OLD_NONE;
+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.TransitionInfo.FLAG_IS_WALLPAPER;
+
+import android.os.IBinder;
+import android.os.RemoteException;
+import android.util.ArrayMap;
+import android.util.Log;
+import android.view.IRemoteAnimationFinishedCallback;
+import android.view.IRemoteAnimationRunner;
import android.view.RemoteAnimationTarget;
+import android.view.SurfaceControl;
import android.view.WindowManager;
+import android.view.WindowManager.TransitionOldType;
+import android.window.IRemoteTransition;
+import android.window.IRemoteTransitionFinishedCallback;
+import android.window.TransitionInfo;
+
+import com.android.wm.shell.util.CounterRotator;
+
+public abstract class RemoteAnimationRunnerCompat extends IRemoteAnimationRunner.Stub {
-public interface RemoteAnimationRunnerCompat {
- void onAnimationStart(@WindowManager.TransitionOldType int transit,
+ public abstract void onAnimationStart(@WindowManager.TransitionOldType int transit,
RemoteAnimationTarget[] apps, RemoteAnimationTarget[] wallpapers,
RemoteAnimationTarget[] nonApps, Runnable finishedCallback);
- void onAnimationCancelled();
+
+ @Override
+ public final void onAnimationStart(@TransitionOldType int transit,
+ RemoteAnimationTarget[] apps,
+ RemoteAnimationTarget[] wallpapers,
+ RemoteAnimationTarget[] nonApps,
+ final IRemoteAnimationFinishedCallback finishedCallback) {
+
+ onAnimationStart(transit, apps, wallpapers,
+ nonApps, () -> {
+ try {
+ finishedCallback.onAnimationFinished();
+ } catch (RemoteException e) {
+ Log.e("ActivityOptionsCompat", "Failed to call app controlled animation"
+ + " finished callback", e);
+ }
+ });
+ }
+
+ public IRemoteTransition toRemoteTransition() {
+ return new IRemoteTransition.Stub() {
+ final ArrayMap<IBinder, Runnable> mFinishRunnables = new ArrayMap<>();
+
+ @Override
+ public void startAnimation(IBinder token, TransitionInfo info,
+ SurfaceControl.Transaction t,
+ IRemoteTransitionFinishedCallback finishCallback) {
+ final ArrayMap<SurfaceControl, SurfaceControl> leashMap = new ArrayMap<>();
+ final RemoteAnimationTarget[] apps =
+ RemoteAnimationTargetCompat.wrapApps(info, t, leashMap);
+ final RemoteAnimationTarget[] wallpapers =
+ RemoteAnimationTargetCompat.wrapNonApps(
+ info, true /* wallpapers */, t, leashMap);
+ final RemoteAnimationTarget[] nonApps =
+ RemoteAnimationTargetCompat.wrapNonApps(
+ info, false /* wallpapers */, t, leashMap);
+
+ // TODO(b/177438007): Move this set-up logic into launcher's animation impl.
+ boolean isReturnToHome = false;
+ TransitionInfo.Change launcherTask = null;
+ TransitionInfo.Change wallpaper = null;
+ int launcherLayer = 0;
+ int rotateDelta = 0;
+ float displayW = 0;
+ float displayH = 0;
+ for (int i = info.getChanges().size() - 1; i >= 0; --i) {
+ final TransitionInfo.Change change = info.getChanges().get(i);
+ // skip changes that we didn't wrap
+ if (!leashMap.containsKey(change.getLeash())) continue;
+ if (change.getTaskInfo() != null
+ && change.getTaskInfo().getActivityType() == ACTIVITY_TYPE_HOME) {
+ isReturnToHome = change.getMode() == TRANSIT_OPEN
+ || change.getMode() == TRANSIT_TO_FRONT;
+ launcherTask = change;
+ launcherLayer = info.getChanges().size() - i;
+ } else if ((change.getFlags() & FLAG_IS_WALLPAPER) != 0) {
+ wallpaper = change;
+ }
+ if (change.getParent() == null && change.getEndRotation() >= 0
+ && change.getEndRotation() != change.getStartRotation()) {
+ rotateDelta = change.getEndRotation() - change.getStartRotation();
+ displayW = change.getEndAbsBounds().width();
+ displayH = change.getEndAbsBounds().height();
+ }
+ }
+
+ // Prepare for rotation if there is one
+ final CounterRotator counterLauncher = new CounterRotator();
+ final CounterRotator counterWallpaper = new CounterRotator();
+ if (launcherTask != null && rotateDelta != 0 && launcherTask.getParent() != null) {
+ counterLauncher.setup(t, info.getChange(launcherTask.getParent()).getLeash(),
+ rotateDelta, displayW, displayH);
+ if (counterLauncher.getSurface() != null) {
+ t.setLayer(counterLauncher.getSurface(), launcherLayer);
+ }
+ }
+
+ if (isReturnToHome) {
+ if (counterLauncher.getSurface() != null) {
+ t.setLayer(counterLauncher.getSurface(), info.getChanges().size() * 3);
+ }
+ // Need to "boost" the closing things since that's what launcher expects.
+ for (int i = info.getChanges().size() - 1; i >= 0; --i) {
+ final TransitionInfo.Change change = info.getChanges().get(i);
+ final SurfaceControl leash = leashMap.get(change.getLeash());
+ // skip changes that we didn't wrap
+ if (leash == null) continue;
+ final int mode = info.getChanges().get(i).getMode();
+ // Only deal with independent layers
+ if (!TransitionInfo.isIndependent(change, info)) continue;
+ if (mode == TRANSIT_CLOSE || mode == TRANSIT_TO_BACK) {
+ t.setLayer(leash, info.getChanges().size() * 3 - i);
+ counterLauncher.addChild(t, leash);
+ }
+ }
+ // Make wallpaper visible immediately since launcher apparently won't do this.
+ for (int i = wallpapers.length - 1; i >= 0; --i) {
+ t.show(wallpapers[i].leash);
+ t.setAlpha(wallpapers[i].leash, 1.f);
+ }
+ } else {
+ if (launcherTask != null) {
+ counterLauncher.addChild(t, leashMap.get(launcherTask.getLeash()));
+ }
+ if (wallpaper != null && rotateDelta != 0 && wallpaper.getParent() != null) {
+ counterWallpaper.setup(t, info.getChange(wallpaper.getParent()).getLeash(),
+ rotateDelta, displayW, displayH);
+ if (counterWallpaper.getSurface() != null) {
+ t.setLayer(counterWallpaper.getSurface(), -1);
+ counterWallpaper.addChild(t, leashMap.get(wallpaper.getLeash()));
+ }
+ }
+ }
+ t.apply();
+
+ final Runnable animationFinishedCallback = () -> {
+ final SurfaceControl.Transaction finishTransaction =
+ new SurfaceControl.Transaction();
+ counterLauncher.cleanUp(finishTransaction);
+ counterWallpaper.cleanUp(finishTransaction);
+ // Release surface references now. This is apparently to free GPU memory
+ // while doing quick operations (eg. during CTS).
+ for (int i = info.getChanges().size() - 1; i >= 0; --i) {
+ info.getChanges().get(i).getLeash().release();
+ }
+ // Don't release here since launcher might still be using them. Instead
+ // let launcher release them (eg. via RemoteAnimationTargets)
+ leashMap.clear();
+ try {
+ finishCallback.onTransitionFinished(null /* wct */, finishTransaction);
+ } catch (RemoteException e) {
+ Log.e("ActivityOptionsCompat", "Failed to call app controlled animation"
+ + " finished callback", e);
+ }
+ };
+ synchronized (mFinishRunnables) {
+ mFinishRunnables.put(token, animationFinishedCallback);
+ }
+ // TODO(bc-unlcok): Pass correct transit type.
+ onAnimationStart(TRANSIT_OLD_NONE,
+ apps, wallpapers, nonApps, () -> {
+ synchronized (mFinishRunnables) {
+ if (mFinishRunnables.remove(token) == null) return;
+ }
+ animationFinishedCallback.run();
+ });
+ }
+
+ @Override
+ public void mergeAnimation(IBinder token, TransitionInfo info,
+ SurfaceControl.Transaction t, IBinder mergeTarget,
+ IRemoteTransitionFinishedCallback finishCallback) throws RemoteException {
+ // TODO: hook up merge to recents onTaskAppeared if applicable. Until then, adapt
+ // to legacy cancel.
+ final Runnable finishRunnable;
+ synchronized (mFinishRunnables) {
+ finishRunnable = mFinishRunnables.remove(mergeTarget);
+ }
+ if (finishRunnable == null) return;
+ onAnimationCancelled(false /* isKeyguardOccluded */);
+ finishRunnable.run();
+ }
+ };
+ }
} \ No newline at end of file
diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/system/RemoteTransitionCompat.aidl b/packages/SystemUI/shared/src/com/android/systemui/shared/system/RemoteTransitionCompat.aidl
deleted file mode 100644
index 1550ab3bed63..000000000000
--- a/packages/SystemUI/shared/src/com/android/systemui/shared/system/RemoteTransitionCompat.aidl
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
- * Copyright (C) 2020 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 com.android.systemui.shared.system;
-
-parcelable RemoteTransitionCompat;
diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/system/RemoteTransitionCompat.java b/packages/SystemUI/shared/src/com/android/systemui/shared/system/RemoteTransitionCompat.java
index d6655a74219c..d4d3d2579b10 100644
--- a/packages/SystemUI/shared/src/com/android/systemui/shared/system/RemoteTransitionCompat.java
+++ b/packages/SystemUI/shared/src/com/android/systemui/shared/system/RemoteTransitionCompat.java
@@ -18,29 +18,22 @@ package com.android.systemui.shared.system;
import static android.app.WindowConfiguration.ACTIVITY_TYPE_HOME;
import static android.app.WindowConfiguration.ACTIVITY_TYPE_RECENTS;
-import static android.app.WindowConfiguration.ACTIVITY_TYPE_STANDARD;
import static android.view.RemoteAnimationTarget.MODE_CLOSING;
import static android.view.WindowManager.TRANSIT_CHANGE;
import static android.view.WindowManager.TRANSIT_CLOSE;
-import static android.view.WindowManager.TRANSIT_FLAG_KEYGUARD_GOING_AWAY;
import static android.view.WindowManager.TRANSIT_FLAG_KEYGUARD_LOCKED;
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.TransitionFilter.CONTAINER_ORDER_TOP;
import static com.android.systemui.shared.system.RemoteAnimationTargetCompat.newTarget;
-import android.annotation.NonNull;
-import android.annotation.Nullable;
import android.annotation.SuppressLint;
import android.app.ActivityManager;
import android.app.ActivityTaskManager;
import android.app.IApplicationThread;
-import android.content.ComponentName;
import android.graphics.Rect;
import android.os.IBinder;
-import android.os.Parcelable;
import android.os.RemoteException;
import android.util.ArrayMap;
import android.util.Log;
@@ -53,72 +46,23 @@ import android.window.IRemoteTransitionFinishedCallback;
import android.window.PictureInPictureSurfaceTransaction;
import android.window.RemoteTransition;
import android.window.TaskSnapshot;
-import android.window.TransitionFilter;
import android.window.TransitionInfo;
import android.window.WindowContainerToken;
import android.window.WindowContainerTransaction;
import com.android.internal.annotations.VisibleForTesting;
-import com.android.internal.util.DataClass;
import com.android.systemui.shared.recents.model.ThumbnailData;
import java.util.ArrayList;
-import java.util.concurrent.Executor;
/**
- * Wrapper to expose RemoteTransition (shell transitions) to Launcher.
- *
- * @see IRemoteTransition
- * @see TransitionFilter
+ * Helper class to build {@link RemoteTransition} objects
*/
-@DataClass
-public class RemoteTransitionCompat implements Parcelable {
+public class RemoteTransitionCompat {
private static final String TAG = "RemoteTransitionCompat";
- @NonNull final RemoteTransition mTransition;
- @Nullable TransitionFilter mFilter = null;
-
- RemoteTransitionCompat(RemoteTransition transition) {
- mTransition = transition;
- }
-
- public RemoteTransitionCompat(@NonNull RemoteTransitionRunner runner,
- @NonNull Executor executor, @Nullable IApplicationThread appThread) {
- IRemoteTransition remote = new IRemoteTransition.Stub() {
- @Override
- public void startAnimation(IBinder transition, TransitionInfo info,
- SurfaceControl.Transaction t,
- IRemoteTransitionFinishedCallback finishedCallback) {
- final Runnable finishAdapter = () -> {
- try {
- finishedCallback.onTransitionFinished(null /* wct */, null /* sct */);
- } catch (RemoteException e) {
- Log.e(TAG, "Failed to call transition finished callback", e);
- }
- };
- executor.execute(() -> runner.startAnimation(transition, info, t, finishAdapter));
- }
-
- @Override
- public void mergeAnimation(IBinder transition, TransitionInfo info,
- SurfaceControl.Transaction t, IBinder mergeTarget,
- IRemoteTransitionFinishedCallback finishedCallback) {
- final Runnable finishAdapter = () -> {
- try {
- finishedCallback.onTransitionFinished(null /* wct */, null /* sct */);
- } catch (RemoteException e) {
- Log.e(TAG, "Failed to call transition finished callback", e);
- }
- };
- executor.execute(() -> runner.mergeAnimation(transition, info, t, mergeTarget,
- finishAdapter));
- }
- };
- mTransition = new RemoteTransition(remote, appThread);
- }
-
/** Constructor specifically for recents animation */
- public RemoteTransitionCompat(RecentsAnimationListener recents,
+ public static RemoteTransition newRemoteTransition(RecentsAnimationListener recents,
RecentsAnimationControllerCompat controller, IApplicationThread appThread) {
IRemoteTransition remote = new IRemoteTransition.Stub() {
final RecentsControllerWrap mRecentsSession = new RecentsControllerWrap();
@@ -193,25 +137,7 @@ public class RemoteTransitionCompat implements Parcelable {
mRecentsSession.commitTasksAppearedIfNeeded(recents);
}
};
- mTransition = new RemoteTransition(remote, appThread);
- }
-
- /** Adds a filter check that restricts this remote transition to home open transitions. */
- public void addHomeOpenCheck(ComponentName homeActivity) {
- if (mFilter == null) {
- mFilter = new TransitionFilter();
- }
- // No need to handle the transition that also dismisses keyguard.
- mFilter.mNotFlags = TRANSIT_FLAG_KEYGUARD_GOING_AWAY;
- mFilter.mRequirements =
- new TransitionFilter.Requirement[]{new TransitionFilter.Requirement(),
- new TransitionFilter.Requirement()};
- mFilter.mRequirements[0].mActivityType = ACTIVITY_TYPE_HOME;
- mFilter.mRequirements[0].mTopActivity = homeActivity;
- mFilter.mRequirements[0].mModes = new int[]{TRANSIT_OPEN, TRANSIT_TO_FRONT};
- mFilter.mRequirements[0].mOrder = CONTAINER_ORDER_TOP;
- mFilter.mRequirements[1].mActivityType = ACTIVITY_TYPE_STANDARD;
- mFilter.mRequirements[1].mModes = new int[]{TRANSIT_CLOSE, TRANSIT_TO_BACK};
+ return new RemoteTransition(remote, appThread);
}
/**
@@ -505,161 +431,4 @@ public class RemoteTransitionCompat implements Parcelable {
@Override public void animateNavigationBarToApp(long duration) {
}
}
-
-
-
- // Code below generated by codegen v1.0.23.
- //
- // DO NOT MODIFY!
- // CHECKSTYLE:OFF Generated code
- //
- // To regenerate run:
- // $ codegen $ANDROID_BUILD_TOP/frameworks/base/packages/SystemUI/shared/src/com/android/systemui/shared/system/RemoteTransitionCompat.java
- //
- // To exclude the generated code from IntelliJ auto-formatting enable (one-time):
- // Settings > Editor > Code Style > Formatter Control
- //@formatter:off
-
-
- @DataClass.Generated.Member
- /* package-private */ RemoteTransitionCompat(
- @NonNull RemoteTransition transition,
- @Nullable TransitionFilter filter) {
- this.mTransition = transition;
- com.android.internal.util.AnnotationValidations.validate(
- NonNull.class, null, mTransition);
- this.mFilter = filter;
-
- // onConstructed(); // You can define this method to get a callback
- }
-
- @DataClass.Generated.Member
- public @NonNull RemoteTransition getTransition() {
- return mTransition;
- }
-
- @DataClass.Generated.Member
- public @Nullable TransitionFilter getFilter() {
- return mFilter;
- }
-
- @Override
- @DataClass.Generated.Member
- public void writeToParcel(@NonNull android.os.Parcel dest, int flags) {
- // You can override field parcelling by defining methods like:
- // void parcelFieldName(Parcel dest, int flags) { ... }
-
- byte flg = 0;
- if (mFilter != null) flg |= 0x2;
- dest.writeByte(flg);
- dest.writeTypedObject(mTransition, flags);
- if (mFilter != null) dest.writeTypedObject(mFilter, flags);
- }
-
- @Override
- @DataClass.Generated.Member
- public int describeContents() { return 0; }
-
- /** @hide */
- @SuppressWarnings({"unchecked", "RedundantCast"})
- @DataClass.Generated.Member
- protected RemoteTransitionCompat(@NonNull android.os.Parcel in) {
- // You can override field unparcelling by defining methods like:
- // static FieldType unparcelFieldName(Parcel in) { ... }
-
- byte flg = in.readByte();
- RemoteTransition transition = (RemoteTransition) in.readTypedObject(RemoteTransition.CREATOR);
- TransitionFilter filter = (flg & 0x2) == 0 ? null : (TransitionFilter) in.readTypedObject(TransitionFilter.CREATOR);
-
- this.mTransition = transition;
- com.android.internal.util.AnnotationValidations.validate(
- NonNull.class, null, mTransition);
- this.mFilter = filter;
-
- // onConstructed(); // You can define this method to get a callback
- }
-
- @DataClass.Generated.Member
- public static final @NonNull Parcelable.Creator<RemoteTransitionCompat> CREATOR
- = new Parcelable.Creator<RemoteTransitionCompat>() {
- @Override
- public RemoteTransitionCompat[] newArray(int size) {
- return new RemoteTransitionCompat[size];
- }
-
- @Override
- public RemoteTransitionCompat createFromParcel(@NonNull android.os.Parcel in) {
- return new RemoteTransitionCompat(in);
- }
- };
-
- /**
- * A builder for {@link RemoteTransitionCompat}
- */
- @SuppressWarnings("WeakerAccess")
- @DataClass.Generated.Member
- public static class Builder {
-
- private @NonNull RemoteTransition mTransition;
- private @Nullable TransitionFilter mFilter;
-
- private long mBuilderFieldsSet = 0L;
-
- public Builder(
- @NonNull RemoteTransition transition) {
- mTransition = transition;
- com.android.internal.util.AnnotationValidations.validate(
- NonNull.class, null, mTransition);
- }
-
- @DataClass.Generated.Member
- public @NonNull Builder setTransition(@NonNull RemoteTransition value) {
- checkNotUsed();
- mBuilderFieldsSet |= 0x1;
- mTransition = value;
- return this;
- }
-
- @DataClass.Generated.Member
- public @NonNull Builder setFilter(@NonNull TransitionFilter value) {
- checkNotUsed();
- mBuilderFieldsSet |= 0x2;
- mFilter = value;
- return this;
- }
-
- /** Builds the instance. This builder should not be touched after calling this! */
- public @NonNull RemoteTransitionCompat build() {
- checkNotUsed();
- mBuilderFieldsSet |= 0x4; // Mark builder used
-
- if ((mBuilderFieldsSet & 0x2) == 0) {
- mFilter = null;
- }
- RemoteTransitionCompat o = new RemoteTransitionCompat(
- mTransition,
- mFilter);
- return o;
- }
-
- private void checkNotUsed() {
- if ((mBuilderFieldsSet & 0x4) != 0) {
- throw new IllegalStateException(
- "This Builder should not be reused. Use a new Builder instance instead");
- }
- }
- }
-
- @DataClass.Generated(
- time = 1629321609807L,
- codegenVersion = "1.0.23",
- sourceFile = "frameworks/base/packages/SystemUI/shared/src/com/android/systemui/shared/system/RemoteTransitionCompat.java",
- inputSignatures = "private static final java.lang.String TAG\nfinal @android.annotation.NonNull android.window.RemoteTransition mTransition\n @android.annotation.Nullable android.window.TransitionFilter mFilter\npublic void addHomeOpenCheck(android.content.ComponentName)\nclass RemoteTransitionCompat extends java.lang.Object implements [android.os.Parcelable]\nprivate com.android.systemui.shared.system.RecentsAnimationControllerCompat mWrapped\nprivate android.window.IRemoteTransitionFinishedCallback mFinishCB\nprivate android.window.WindowContainerToken mPausingTask\nprivate android.window.WindowContainerToken mPipTask\nprivate android.window.TransitionInfo mInfo\nprivate android.view.SurfaceControl mOpeningLeash\nprivate android.util.ArrayMap<android.view.SurfaceControl,android.view.SurfaceControl> mLeashMap\nprivate android.window.PictureInPictureSurfaceTransaction mPipTransaction\nprivate android.os.IBinder mTransition\n void setup(com.android.systemui.shared.system.RecentsAnimationControllerCompat,android.window.TransitionInfo,android.window.IRemoteTransitionFinishedCallback,android.window.WindowContainerToken,android.window.WindowContainerToken,android.util.ArrayMap<android.view.SurfaceControl,android.view.SurfaceControl>,android.os.IBinder)\n @android.annotation.SuppressLint boolean merge(android.window.TransitionInfo,android.view.SurfaceControl.Transaction,com.android.systemui.shared.system.RecentsAnimationListener)\npublic @java.lang.Override com.android.systemui.shared.recents.model.ThumbnailData screenshotTask(int)\npublic @java.lang.Override void setInputConsumerEnabled(boolean)\npublic @java.lang.Override void setAnimationTargetsBehindSystemBars(boolean)\npublic @java.lang.Override void hideCurrentInputMethod()\npublic @java.lang.Override void setFinishTaskTransaction(int,android.window.PictureInPictureSurfaceTransaction,android.view.SurfaceControl)\npublic @java.lang.Override @android.annotation.SuppressLint void finish(boolean,boolean)\npublic @java.lang.Override void setDeferCancelUntilNextTransition(boolean,boolean)\npublic @java.lang.Override void cleanupScreenshot()\npublic @java.lang.Override void setWillFinishToHome(boolean)\npublic @java.lang.Override boolean removeTask(int)\npublic @java.lang.Override void detachNavigationBarFromApp(boolean)\npublic @java.lang.Override void animateNavigationBarToApp(long)\nclass RecentsControllerWrap extends com.android.systemui.shared.system.RecentsAnimationControllerCompat implements []\n@com.android.internal.util.DataClass")
- @Deprecated
- private void __metadata() {}
-
-
- //@formatter:on
- // End of generated code
-
}
diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/system/RemoteTransitionRunner.java b/packages/SystemUI/shared/src/com/android/systemui/shared/system/RemoteTransitionRunner.java
deleted file mode 100644
index accc456c4209..000000000000
--- a/packages/SystemUI/shared/src/com/android/systemui/shared/system/RemoteTransitionRunner.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright (C) 2021 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 com.android.systemui.shared.system;
-
-import android.os.IBinder;
-import android.view.SurfaceControl;
-import android.window.TransitionInfo;
-
-/** Interface for something that runs a remote transition animation. */
-public interface RemoteTransitionRunner {
- /**
- * Starts a transition animation. Once complete, the implementation should call
- * `finishCallback`.
- */
- void startAnimation(IBinder transition, TransitionInfo info, SurfaceControl.Transaction t,
- Runnable finishCallback);
-
- /**
- * Attempts to merge a transition into the currently-running animation. If merge is not
- * possible/supported, this should do nothing. Otherwise, the implementation should call
- * `finishCallback` immediately to indicate that it merged the transition.
- *
- * @param transition The transition that wants to be merged into the running animation.
- * @param mergeTarget The transition to merge into (that this runner is currently animating).
- */
- default void mergeAnimation(IBinder transition, TransitionInfo info,
- SurfaceControl.Transaction t, IBinder mergeTarget, Runnable finishCallback) { }
-}