Revert "Internal API for cross-task Activity used by assistant."
This reverts commit 04073dc5be4c8faad41f549617ed1c3ef999d6b2.
Bug: 29128683
Change-Id: I7d9bb7bb388f38e8e5ab159a211ee7f9f4fb7ab9
diff --git a/core/java/android/app/Activity.java b/core/java/android/app/Activity.java
index f5ef703..ac5f3ef 100644
--- a/core/java/android/app/Activity.java
+++ b/core/java/android/app/Activity.java
@@ -4219,7 +4219,6 @@
public void startActivityForResult(@RequiresPermission Intent intent, int requestCode,
@Nullable Bundle options) {
if (mParent == null) {
- options = transferSpringboardActivityOptions(options);
Instrumentation.ActivityResult ar =
mInstrumentation.execStartActivity(
this, mMainThread.getApplicationThread(), mToken, this,
@@ -4268,14 +4267,6 @@
}
}
- private Bundle transferSpringboardActivityOptions(Bundle options) {
- if (options == null && (mWindow != null && !mWindow.isActive())) {
- return mActivityTransitionState.transferEnterActivityOptions();
- } else {
- return options;
- }
- }
-
/**
* @hide Implement to provide correct calling token.
*/
@@ -4291,7 +4282,6 @@
if (mParent != null) {
throw new RuntimeException("Can't be called from a child");
}
- options = transferSpringboardActivityOptions(options);
Instrumentation.ActivityResult ar = mInstrumentation.execStartActivity(
this, mMainThread.getApplicationThread(), mToken, this, intent, requestCode,
options, user);
@@ -4327,7 +4317,6 @@
if (mParent != null) {
throw new RuntimeException("Can't be called from a child");
}
- options = transferSpringboardActivityOptions(options);
Instrumentation.ActivityResult ar =
mInstrumentation.execStartActivity(
this, mMainThread.getApplicationThread(), mToken, this,
@@ -4360,7 +4349,6 @@
if (mParent != null) {
throw new RuntimeException("Can't be called from a child");
}
- options = transferSpringboardActivityOptions(options);
Instrumentation.ActivityResult ar =
mInstrumentation.execStartActivityAsCaller(
this, mMainThread.getApplicationThread(), mToken, this,
@@ -4800,7 +4788,6 @@
*/
public void startActivityFromChild(@NonNull Activity child, @RequiresPermission Intent intent,
int requestCode, @Nullable Bundle options) {
- options = transferSpringboardActivityOptions(options);
Instrumentation.ActivityResult ar =
mInstrumentation.execStartActivity(
this, mMainThread.getApplicationThread(), mToken, child,
@@ -4866,7 +4853,6 @@
if (referrer != null) {
intent.putExtra(Intent.EXTRA_REFERRER, referrer);
}
- options = transferSpringboardActivityOptions(options);
Instrumentation.ActivityResult ar =
mInstrumentation.execStartActivity(
this, mMainThread.getApplicationThread(), mToken, who,
@@ -6664,11 +6650,11 @@
mVisibleFromClient = !mWindow.getWindowStyle().getBoolean(
com.android.internal.R.styleable.Window_windowNoDisplay, false);
mFragments.dispatchActivityCreated();
+ mActivityTransitionState.setEnterActivityOptions(this, getActivityOptions());
}
final void performCreate(Bundle icicle) {
restoreHasCurrentPermissionRequest(icicle);
- mActivityTransitionState.setEnterActivityOptions(this, getActivityOptions());
onCreate(icicle);
mActivityTransitionState.readState(icicle);
performCreateCommon();
@@ -6676,7 +6662,6 @@
final void performCreate(Bundle icicle, PersistableBundle persistentState) {
restoreHasCurrentPermissionRequest(icicle);
- mActivityTransitionState.setEnterActivityOptions(this, getActivityOptions());
onCreate(icicle, persistentState);
mActivityTransitionState.readState(icicle);
performCreateCommon();
diff --git a/core/java/android/app/ActivityOptions.java b/core/java/android/app/ActivityOptions.java
index ccc37d72..4c8ddc7 100644
--- a/core/java/android/app/ActivityOptions.java
+++ b/core/java/android/app/ActivityOptions.java
@@ -31,13 +31,10 @@
import android.os.Parcelable;
import android.os.RemoteException;
import android.os.ResultReceiver;
-import android.transition.Transition;
-import android.transition.TransitionManager;
import android.util.Pair;
import android.util.Slog;
import android.view.AppTransitionAnimationSpec;
import android.view.View;
-import android.view.ViewGroup;
import android.view.Window;
import java.util.ArrayList;
@@ -643,70 +640,9 @@
public static ActivityOptions makeSceneTransitionAnimation(Activity activity,
Pair<View, String>... sharedElements) {
ActivityOptions opts = new ActivityOptions();
- makeSceneTransitionAnimation(activity, activity.getWindow(), opts,
- activity.mExitTransitionListener, sharedElements);
- return opts;
- }
-
- /**
- * Call this immediately prior to startActivity to begin a shared element transition
- * from a non-Activity. The window must support Window.FEATURE_ACTIVITY_TRANSITIONS.
- * The exit transition will start immediately and the shared element transition will
- * start once the launched Activity's shared element is ready.
- * <p>
- * When all transitions have completed and the shared element has been transfered,
- * the window's decor View will have its visibility set to View.GONE.
- *
- * @hide
- */
- @SafeVarargs
- public static ActivityOptions startSharedElementAnimation(Window window,
- Pair<View, String>... sharedElements) {
- ActivityOptions opts = new ActivityOptions();
- final View decorView = window.getDecorView();
- if (decorView == null) {
- return opts;
- }
- final ExitTransitionCoordinator exit =
- makeSceneTransitionAnimation(null, window, opts, null, sharedElements);
- if (exit != null) {
- HideWindowListener listener = new HideWindowListener(window, exit);
- exit.setHideSharedElementsCallback(listener);
- exit.startExit();
- }
- return opts;
- }
-
- /**
- * This method should be called when the {@link #startSharedElementAnimation(Window, Pair[])}
- * animation must be stopped and the Views reset. This can happen if there was an error
- * from startActivity or a springboard activity and the animation should stop and reset.
- *
- * @hide
- */
- public static void stopSharedElementAnimation(Window window) {
- final View decorView = window.getDecorView();
- if (decorView == null) {
- return;
- }
- final ExitTransitionCoordinator exit = (ExitTransitionCoordinator)
- decorView.getTag(com.android.internal.R.id.cross_task_transition);
- if (exit != null) {
- exit.cancelPendingTransitions();
- decorView.setTagInternal(com.android.internal.R.id.cross_task_transition, null);
- TransitionManager.endTransitions((ViewGroup) decorView);
- exit.resetViews();
- exit.clearState();
- decorView.setVisibility(View.VISIBLE);
- }
- }
-
- static ExitTransitionCoordinator makeSceneTransitionAnimation(Activity activity, Window window,
- ActivityOptions opts, SharedElementCallback callback,
- Pair<View, String>[] sharedElements) {
- if (!window.hasFeature(Window.FEATURE_ACTIVITY_TRANSITIONS)) {
+ if (!activity.getWindow().hasFeature(Window.FEATURE_ACTIVITY_TRANSITIONS)) {
opts.mAnimationType = ANIM_DEFAULT;
- return null;
+ return opts;
}
opts.mAnimationType = ANIM_SCENE_TRANSITION;
@@ -729,22 +665,18 @@
}
}
- ExitTransitionCoordinator exit = new ExitTransitionCoordinator(activity, window,
- callback, names, names, views, false);
+ ExitTransitionCoordinator exit = new ExitTransitionCoordinator(activity, names, names,
+ views, false);
opts.mTransitionReceiver = exit;
opts.mSharedElementNames = names;
- opts.mIsReturning = (activity == null);
- if (activity == null) {
- opts.mExitCoordinatorIndex = -1;
- } else {
- opts.mExitCoordinatorIndex =
- activity.mActivityTransitionState.addExitTransitionCoordinator(exit);
- }
- return exit;
+ opts.mIsReturning = false;
+ opts.mExitCoordinatorIndex =
+ activity.mActivityTransitionState.addExitTransitionCoordinator(exit);
+ return opts;
}
/** @hide */
- static ActivityOptions makeSceneTransitionAnimation(Activity activity,
+ public static ActivityOptions makeSceneTransitionAnimation(Activity activity,
ExitTransitionCoordinator exitCoordinator, ArrayList<String> sharedElementNames,
int resultCode, Intent resultData) {
ActivityOptions opts = new ActivityOptions();
@@ -968,16 +900,6 @@
return mIsReturning;
}
- /**
- * Returns whether or not the ActivityOptions was created with
- * {@link #startSharedElementAnimation(Window, Pair[])}.
- *
- * @hide
- */
- boolean isCrossTask() {
- return mExitCoordinatorIndex < 0;
- }
-
/** @hide */
public ArrayList<String> getSharedElementNames() {
return mSharedElementNames;
@@ -1269,65 +1191,4 @@
+ ", mAnimationType=" + mAnimationType + ", mStartX=" + mStartX + ", mStartY="
+ mStartY + ", mWidth=" + mWidth + ", mHeight=" + mHeight;
}
-
- private static class HideWindowListener extends Transition.TransitionListenerAdapter
- implements ExitTransitionCoordinator.HideSharedElementsCallback {
- private final Window mWindow;
- private final ExitTransitionCoordinator mExit;
- private final boolean mWaitingForTransition;
- private boolean mTransitionEnded;
- private boolean mSharedElementHidden;
- private ArrayList<View> mSharedElements;
-
- public HideWindowListener(Window window, ExitTransitionCoordinator exit) {
- mWindow = window;
- mExit = exit;
- mSharedElements = new ArrayList<>(exit.mSharedElements);
- Transition transition = mWindow.getExitTransition();
- if (transition != null) {
- transition.addListener(this);
- mWaitingForTransition = true;
- } else {
- mWaitingForTransition = false;
- }
- View decorView = mWindow.getDecorView();
- if (decorView != null) {
- if (decorView.getTag(com.android.internal.R.id.cross_task_transition) != null) {
- throw new IllegalStateException(
- "Cannot start a transition while one is running");
- }
- decorView.setTagInternal(com.android.internal.R.id.cross_task_transition, exit);
- }
- }
-
- @Override
- public void onTransitionEnd(Transition transition) {
- mTransitionEnded = true;
- hideWhenDone();
- transition.removeListener(this);
- }
-
- @Override
- public void hideSharedElements() {
- mSharedElementHidden = true;
- hideWhenDone();
- }
-
- private void hideWhenDone() {
- if (mSharedElementHidden && (!mWaitingForTransition || mTransitionEnded)) {
- mExit.resetViews();
- int numSharedElements = mSharedElements.size();
- for (int i = 0; i < numSharedElements; i++) {
- View view = mSharedElements.get(i);
- view.requestLayout();
- }
- View decorView = mWindow.getDecorView();
- if (decorView != null) {
- decorView.setTagInternal(
- com.android.internal.R.id.cross_task_transition, null);
- decorView.setVisibility(View.GONE);
- }
- }
- }
- }
}
diff --git a/core/java/android/app/ActivityTransitionState.java b/core/java/android/app/ActivityTransitionState.java
index 88526fb..02eb4d3 100644
--- a/core/java/android/app/ActivityTransitionState.java
+++ b/core/java/android/app/ActivityTransitionState.java
@@ -105,12 +105,6 @@
private boolean mIsEnterTriggered;
- /**
- * The ActivityOptions Bundle. This is used to transfer ActivityOptions through a
- * springboard Activity.
- */
- private Bundle mEnterBundle;
-
public ActivityTransitionState() {
}
@@ -156,10 +150,6 @@
}
public void setEnterActivityOptions(Activity activity, ActivityOptions options) {
- if (options != null && mEnterBundle == null &&
- options.getAnimationType() == ActivityOptions.ANIM_SCENE_TRANSITION) {
- mEnterBundle = options.toBundle();
- }
final Window window = activity.getWindow();
if (window == null) {
return;
@@ -195,12 +185,7 @@
activity.getWindow().getDecorView().setVisibility(View.VISIBLE);
}
mEnterTransitionCoordinator = new EnterTransitionCoordinator(activity,
- resultReceiver, sharedElementNames, mEnterActivityOptions.isReturning(),
- mEnterActivityOptions.isCrossTask());
- if (mEnterActivityOptions.isCrossTask()) {
- mExitingFrom = new ArrayList<>(mEnterActivityOptions.getSharedElementNames());
- mExitingTo = new ArrayList<>(mEnterActivityOptions.getSharedElementNames());
- }
+ resultReceiver, sharedElementNames, mEnterActivityOptions.isReturning());
if (!mIsEnterPostponed) {
startEnter();
@@ -239,13 +224,6 @@
mEnterActivityOptions = null;
}
- Bundle transferEnterActivityOptions() {
- mEnterActivityOptions = null;
- Bundle options = mEnterBundle;
- mEnterBundle = null;
- return options;
- }
-
public void onStop() {
restoreExitedViews();
if (mEnterTransitionCoordinator != null) {
@@ -297,8 +275,7 @@
}
private void restoreReenteringViews() {
- if (mEnterTransitionCoordinator != null && mEnterTransitionCoordinator.isReturning() &&
- !mEnterTransitionCoordinator.isCrossTask()) {
+ if (mEnterTransitionCoordinator != null && mEnterTransitionCoordinator.isReturning()) {
mEnterTransitionCoordinator.forceViewsToAppear();
mExitingFrom = null;
mExitingTo = null;
@@ -325,9 +302,8 @@
}
}
- mReturnExitCoordinator = new ExitTransitionCoordinator(activity,
- activity.getWindow(), activity.mEnterTransitionListener, mEnteringNames,
- null, null, true);
+ mReturnExitCoordinator =
+ new ExitTransitionCoordinator(activity, mEnteringNames, null, null, true);
if (enterViewsTransition != null && decor != null) {
enterViewsTransition.resume(decor);
}
diff --git a/core/java/android/app/EnterTransitionCoordinator.java b/core/java/android/app/EnterTransitionCoordinator.java
index 5d12b0d..8bf1e9a 100644
--- a/core/java/android/app/EnterTransitionCoordinator.java
+++ b/core/java/android/app/EnterTransitionCoordinator.java
@@ -59,14 +59,12 @@
private boolean mIsViewsTransitionStarted;
private Transition mEnterViewsTransition;
private OnPreDrawListener mViewsReadyListener;
- private final boolean mIsCrossTask;
public EnterTransitionCoordinator(Activity activity, ResultReceiver resultReceiver,
- ArrayList<String> sharedElementNames, boolean isReturning, boolean isCrossTask) {
+ ArrayList<String> sharedElementNames, boolean isReturning) {
super(activity.getWindow(), sharedElementNames,
- getListener(activity, isReturning && !isCrossTask), isReturning);
+ getListener(activity, isReturning), isReturning);
mActivity = activity;
- mIsCrossTask = isCrossTask;
setResultReceiver(resultReceiver);
prepareEnter();
Bundle resultReceiverBundle = new Bundle();
@@ -87,10 +85,6 @@
}
}
- boolean isCrossTask() {
- return mIsCrossTask;
- }
-
public void viewInstancesReady(ArrayList<String> accepted, ArrayList<String> localNames,
ArrayList<View> localViews) {
boolean remap = false;
@@ -331,9 +325,7 @@
if (mActivity == null || decorView == null) {
return;
}
- if (!isCrossTask()) {
- mActivity.overridePendingTransition(0, 0);
- }
+ mActivity.overridePendingTransition(0, 0);
if (!mIsReturning) {
mWasOpaque = mActivity.convertToTranslucent(null, null);
Drawable background = decorView.getBackground();
diff --git a/core/java/android/app/ExitTransitionCoordinator.java b/core/java/android/app/ExitTransitionCoordinator.java
index 160c285..0404288 100644
--- a/core/java/android/app/ExitTransitionCoordinator.java
+++ b/core/java/android/app/ExitTransitionCoordinator.java
@@ -35,7 +35,6 @@
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewTreeObserver;
-import android.view.Window;
import java.util.ArrayList;
@@ -60,20 +59,18 @@
private Bundle mExitSharedElementBundle;
private boolean mIsExitStarted;
private boolean mSharedElementsHidden;
- private HideSharedElementsCallback mHideSharedElementsCallback;
- public ExitTransitionCoordinator(Activity activity, Window window,
- SharedElementCallback listener, ArrayList<String> names,
+ public ExitTransitionCoordinator(Activity activity, ArrayList<String> names,
ArrayList<String> accepted, ArrayList<View> mapped, boolean isReturning) {
- super(window, names, listener, isReturning);
+ super(activity.getWindow(), names, getListener(activity, isReturning), isReturning);
viewsReady(mapSharedElements(accepted, mapped));
stripOffscreenViews();
mIsBackgroundReady = !isReturning;
mActivity = activity;
}
- void setHideSharedElementsCallback(HideSharedElementsCallback callback) {
- mHideSharedElementsCallback = callback;
+ private static SharedElementCallback getListener(Activity activity, boolean isReturning) {
+ return isReturning ? activity.mEnterTransitionListener : activity.mExitTransitionListener;
}
@Override
@@ -191,9 +188,6 @@
private void hideSharedElements() {
moveSharedElementsFromOverlay();
- if (mHideSharedElementsCallback != null) {
- mHideSharedElementsCallback.hideSharedElements();
- }
if (!mIsHidden) {
hideViews(mSharedElements);
}
@@ -213,11 +207,7 @@
startTransition(new Runnable() {
@Override
public void run() {
- if (mActivity != null) {
- beginTransitions();
- } else {
- startExitTransition();
- }
+ beginTransitions();
}
});
}
@@ -518,8 +508,4 @@
return getWindow().getSharedElementExitTransition();
}
}
-
- interface HideSharedElementsCallback {
- void hideSharedElements();
- }
}
diff --git a/core/java/android/transition/Transition.java b/core/java/android/transition/Transition.java
index 8823605..316c7e3 100644
--- a/core/java/android/transition/Transition.java
+++ b/core/java/android/transition/Transition.java
@@ -1941,26 +1941,6 @@
}
/**
- * Force the transition to move to its end state, ending all the animators.
- *
- * @hide
- */
- void forceToEnd(ViewGroup sceneRoot) {
- ArrayMap<Animator, AnimationInfo> runningAnimators = getRunningAnimators();
- int numOldAnims = runningAnimators.size();
- if (sceneRoot != null) {
- WindowId windowId = sceneRoot.getWindowId();
- for (int i = numOldAnims - 1; i >= 0; i--) {
- AnimationInfo info = runningAnimators.valueAt(i);
- if (info.view != null && windowId != null && windowId.equals(info.windowId)) {
- Animator anim = runningAnimators.keyAt(i);
- anim.end();
- }
- }
- }
- }
-
- /**
* This method cancels a transition that is currently running.
*
* @hide
diff --git a/core/java/android/transition/TransitionManager.java b/core/java/android/transition/TransitionManager.java
index f2c871e3..71c8099 100644
--- a/core/java/android/transition/TransitionManager.java
+++ b/core/java/android/transition/TransitionManager.java
@@ -440,7 +440,7 @@
ArrayList<Transition> copy = new ArrayList(runningTransitions);
for (int i = copy.size() - 1; i >= 0; i--) {
final Transition transition = copy.get(i);
- transition.forceToEnd(sceneRoot);
+ transition.end();
}
}
diff --git a/core/java/android/transition/TransitionSet.java b/core/java/android/transition/TransitionSet.java
index a41fe64..583dc0f 100644
--- a/core/java/android/transition/TransitionSet.java
+++ b/core/java/android/transition/TransitionSet.java
@@ -16,6 +16,8 @@
package android.transition;
+import com.android.internal.R;
+
import android.animation.TimeInterpolator;
import android.content.Context;
import android.content.res.TypedArray;
@@ -24,8 +26,6 @@
import android.view.View;
import android.view.ViewGroup;
-import com.android.internal.R;
-
import java.util.ArrayList;
/**
@@ -498,16 +498,6 @@
}
}
- /** @hide */
- @Override
- void forceToEnd(ViewGroup sceneRoot) {
- super.forceToEnd(sceneRoot);
- int numTransitions = mTransitions.size();
- for (int i = 0; i < numTransitions; ++i) {
- mTransitions.get(i).forceToEnd(sceneRoot);
- }
- }
-
@Override
TransitionSet setSceneRoot(ViewGroup sceneRoot) {
super.setSceneRoot(sceneRoot);
diff --git a/core/res/res/values/ids.xml b/core/res/res/values/ids.xml
index 5c165e6..7f8acd3 100644
--- a/core/res/res/values/ids.xml
+++ b/core/res/res/values/ids.xml
@@ -122,11 +122,9 @@
<!-- Accessibility action identifier for {@link android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction#ACTION_SET_PROGRESS}. -->
<item type="id" name="accessibilityActionSetProgress" />
-
+
<!-- Accessibility action identifier for {@link android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction#ACTION_CONTEXT_CLICK}. -->
<item type="id" name="accessibilityActionContextClick" />
<item type="id" name="remote_input_tag" />
-
- <item type="id" name="cross_task_transition" />
</resources>
diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml
index 1009294..8edd9d1 100644
--- a/core/res/res/values/symbols.xml
+++ b/core/res/res/values/symbols.xml
@@ -2612,7 +2612,4 @@
<java-symbol type="array" name="config_defaultPinnerServiceFiles" />
<java-symbol type="string" name="suspended_widget_accessibility" />
-
- <!-- Used internally for assistant to launch activity transitions -->
- <java-symbol type="id" name="cross_task_transition" />
</resources>