Merge "Fix extra transition animation played after back gesture trigger." into udc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
58aab277ff
@@ -675,14 +675,29 @@ class BackNavigationController {
|
||||
private static final int TASK_SWITCH = 1;
|
||||
private static final int ACTIVITY_SWITCH = 2;
|
||||
|
||||
private static boolean isActivitySwitch(WindowContainer close, WindowContainer open) {
|
||||
if (close.asActivityRecord() == null || open.asActivityRecord() == null
|
||||
|| (close.asActivityRecord().getTask()
|
||||
!= open.asActivityRecord().getTask())) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
private static boolean isTaskSwitch(WindowContainer close, WindowContainer open) {
|
||||
if (close.asTask() == null || open.asTask() == null
|
||||
|| (close.asTask() == open.asTask())) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
private void initiate(WindowContainer close, WindowContainer open) {
|
||||
WindowContainer closeTarget;
|
||||
if (close.asActivityRecord() != null && open.asActivityRecord() != null
|
||||
&& (close.asActivityRecord().getTask() == open.asActivityRecord().getTask())) {
|
||||
if (isActivitySwitch(close, open)) {
|
||||
mSwitchType = ACTIVITY_SWITCH;
|
||||
closeTarget = close.asActivityRecord();
|
||||
} else if (close.asTask() != null && open.asTask() != null
|
||||
&& close.asTask() != open.asTask()) {
|
||||
} else if (isTaskSwitch(close, open)) {
|
||||
mSwitchType = TASK_SWITCH;
|
||||
closeTarget = close.asTask().getTopNonFinishingActivity();
|
||||
} else {
|
||||
@@ -757,15 +772,15 @@ class BackNavigationController {
|
||||
}
|
||||
|
||||
boolean isTarget(WindowContainer wc, boolean open) {
|
||||
if (open) {
|
||||
return wc == mOpenAdaptor.mTarget || mOpenAdaptor.mTarget.hasChild(wc);
|
||||
if (!mComposed) {
|
||||
return false;
|
||||
}
|
||||
|
||||
final WindowContainer target = open ? mOpenAdaptor.mTarget : mCloseAdaptor.mTarget;
|
||||
if (mSwitchType == TASK_SWITCH) {
|
||||
return wc == mCloseAdaptor.mTarget
|
||||
|| (wc.asTask() != null && wc.hasChild(mCloseAdaptor.mTarget));
|
||||
return wc == target
|
||||
|| (wc.asTask() != null && wc.hasChild(target));
|
||||
} else if (mSwitchType == ACTIVITY_SWITCH) {
|
||||
return wc == mCloseAdaptor.mTarget;
|
||||
return wc == target || (wc.asTaskFragment() != null && wc.hasChild(target));
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -2363,6 +2363,9 @@ class Transition implements BLASTSyncEngine.TransactionReadyListener {
|
||||
if (isTranslucent(wc)) {
|
||||
flags |= FLAG_TRANSLUCENT;
|
||||
}
|
||||
if (wc.mWmService.mAtmService.mBackNavigationController.isMonitorTransitionTarget(wc)) {
|
||||
flags |= TransitionInfo.FLAG_BACK_GESTURE_ANIMATED;
|
||||
}
|
||||
final Task task = wc.asTask();
|
||||
if (task != null) {
|
||||
final ActivityRecord topActivity = task.getTopNonFinishingActivity();
|
||||
@@ -2371,19 +2374,10 @@ class Transition implements BLASTSyncEngine.TransactionReadyListener {
|
||||
&& topActivity.mStartingData.hasImeSurface()) {
|
||||
flags |= FLAG_WILL_IME_SHOWN;
|
||||
}
|
||||
if (topActivity.mAtmService.mBackNavigationController
|
||||
.isMonitorTransitionTarget(topActivity)) {
|
||||
flags |= TransitionInfo.FLAG_BACK_GESTURE_ANIMATED;
|
||||
}
|
||||
if (topActivity != null && topActivity.mLaunchTaskBehind) {
|
||||
if (topActivity.mLaunchTaskBehind) {
|
||||
Slog.e(TAG, "Unexpected launch-task-behind operation in shell transition");
|
||||
flags |= FLAG_TASK_LAUNCHING_BEHIND;
|
||||
}
|
||||
} else {
|
||||
if (task.mAtmService.mBackNavigationController
|
||||
.isMonitorTransitionTarget(task)) {
|
||||
flags |= TransitionInfo.FLAG_BACK_GESTURE_ANIMATED;
|
||||
}
|
||||
}
|
||||
if (task.voiceSession != null) {
|
||||
flags |= FLAG_IS_VOICE_INTERACTION;
|
||||
@@ -2397,10 +2391,6 @@ class Transition implements BLASTSyncEngine.TransactionReadyListener {
|
||||
flags |= FLAG_IS_VOICE_INTERACTION;
|
||||
}
|
||||
flags |= record.mTransitionChangeFlags;
|
||||
if (record.mAtmService.mBackNavigationController
|
||||
.isMonitorTransitionTarget(record)) {
|
||||
flags |= TransitionInfo.FLAG_BACK_GESTURE_ANIMATED;
|
||||
}
|
||||
}
|
||||
final TaskFragment taskFragment = wc.asTaskFragment();
|
||||
if (taskFragment != null && task == null) {
|
||||
|
||||
Reference in New Issue
Block a user