Merge "Fix incorrect animation direction for closing TaskFragment" into tm-qpr-dev am: 70a87992de

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/20953170

Change-Id: Ic075642b30dc390c792b6ba6cbb577c24623fbea
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Chris Li
2023-01-13 06:37:05 +00:00
committed by Automerger Merge Worker
3 changed files with 40 additions and 3 deletions

View File

@@ -540,9 +540,12 @@ public class TaskFragmentOrganizerController extends ITaskFragmentOrganizerContr
synchronized (mGlobalLock) { synchronized (mGlobalLock) {
final TaskFragmentOrganizerState organizerState = final TaskFragmentOrganizerState organizerState =
mTaskFragmentOrganizerState.get(organizer.asBinder()); mTaskFragmentOrganizerState.get(organizer.asBinder());
return organizerState != null if (organizerState == null) {
? organizerState.mRemoteAnimationDefinition Slog.e(TAG, "TaskFragmentOrganizer has been unregistered or died when trying"
: null; + " to play animation on its organized windows.");
return null;
}
return organizerState.mRemoteAnimationDefinition;
} }
} }

View File

@@ -1962,6 +1962,8 @@ class WindowOrganizerController extends IWindowOrganizerController.Stub
ownerTask.addChild(taskFragment, position); ownerTask.addChild(taskFragment, position);
taskFragment.setWindowingMode(creationParams.getWindowingMode()); taskFragment.setWindowingMode(creationParams.getWindowingMode());
taskFragment.setBounds(creationParams.getInitialBounds()); taskFragment.setBounds(creationParams.getInitialBounds());
// Record the initial relative embedded bounds.
taskFragment.updateRelativeEmbeddedBounds();
mLaunchTaskFragments.put(creationParams.getFragmentToken(), taskFragment); mLaunchTaskFragments.put(creationParams.getFragmentToken(), taskFragment);
if (transition != null) transition.collectExistenceChange(taskFragment); if (transition != null) transition.collectExistenceChange(taskFragment);

View File

@@ -795,6 +795,38 @@ public class TaskFragmentOrganizerControllerTest extends WindowTestsBase {
task.mChildren.indexOf(activityOnTop)); task.mChildren.indexOf(activityOnTop));
} }
@Test
public void testApplyTransaction_createTaskFragment_overrideBounds() {
final Task task = createTask(mDisplayContent);
final ActivityRecord activityAtBottom = createActivityRecord(task);
final int uid = Binder.getCallingUid();
activityAtBottom.info.applicationInfo.uid = uid;
activityAtBottom.getTask().effectiveUid = uid;
mTaskFragment = new TaskFragmentBuilder(mAtm)
.setParentTask(task)
.setFragmentToken(mFragmentToken)
.createActivityCount(1)
.build();
mWindowOrganizerController.mLaunchTaskFragments.put(mFragmentToken, mTaskFragment);
final IBinder fragmentToken1 = new Binder();
final Rect bounds = new Rect(100, 100, 500, 1000);
final TaskFragmentCreationParams params = new TaskFragmentCreationParams.Builder(
mOrganizerToken, fragmentToken1, activityAtBottom.token)
.setPairedActivityToken(activityAtBottom.token)
.setInitialBounds(bounds)
.build();
mTransaction.setTaskFragmentOrganizer(mIOrganizer);
mTransaction.createTaskFragment(params);
assertApplyTransactionAllowed(mTransaction);
// Successfully created a TaskFragment.
final TaskFragment taskFragment = mWindowOrganizerController.getTaskFragment(
fragmentToken1);
assertNotNull(taskFragment);
// The relative embedded bounds is updated to the initial requested bounds.
assertEquals(bounds, taskFragment.getRelativeEmbeddedBounds());
}
@Test @Test
public void testApplyTransaction_createTaskFragment_withPairedActivityToken() { public void testApplyTransaction_createTaskFragment_withPairedActivityToken() {
final Task task = createTask(mDisplayContent); final Task task = createTask(mDisplayContent);