Loading services/core/java/com/android/server/wm/TaskFragmentOrganizerController.java +6 −3 Original line number Diff line number Diff line Loading @@ -540,9 +540,12 @@ public class TaskFragmentOrganizerController extends ITaskFragmentOrganizerContr synchronized (mGlobalLock) { final TaskFragmentOrganizerState organizerState = mTaskFragmentOrganizerState.get(organizer.asBinder()); return organizerState != null ? organizerState.mRemoteAnimationDefinition : null; if (organizerState == null) { Slog.e(TAG, "TaskFragmentOrganizer has been unregistered or died when trying" + " to play animation on its organized windows."); return null; } return organizerState.mRemoteAnimationDefinition; } } Loading services/core/java/com/android/server/wm/WindowOrganizerController.java +2 −0 Original line number Diff line number Diff line Loading @@ -1962,6 +1962,8 @@ class WindowOrganizerController extends IWindowOrganizerController.Stub ownerTask.addChild(taskFragment, position); taskFragment.setWindowingMode(creationParams.getWindowingMode()); taskFragment.setBounds(creationParams.getInitialBounds()); // Record the initial relative embedded bounds. taskFragment.updateRelativeEmbeddedBounds(); mLaunchTaskFragments.put(creationParams.getFragmentToken(), taskFragment); if (transition != null) transition.collectExistenceChange(taskFragment); Loading services/tests/wmtests/src/com/android/server/wm/TaskFragmentOrganizerControllerTest.java +32 −0 Original line number Diff line number Diff line Loading @@ -795,6 +795,38 @@ public class TaskFragmentOrganizerControllerTest extends WindowTestsBase { 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 public void testApplyTransaction_createTaskFragment_withPairedActivityToken() { final Task task = createTask(mDisplayContent); Loading Loading
services/core/java/com/android/server/wm/TaskFragmentOrganizerController.java +6 −3 Original line number Diff line number Diff line Loading @@ -540,9 +540,12 @@ public class TaskFragmentOrganizerController extends ITaskFragmentOrganizerContr synchronized (mGlobalLock) { final TaskFragmentOrganizerState organizerState = mTaskFragmentOrganizerState.get(organizer.asBinder()); return organizerState != null ? organizerState.mRemoteAnimationDefinition : null; if (organizerState == null) { Slog.e(TAG, "TaskFragmentOrganizer has been unregistered or died when trying" + " to play animation on its organized windows."); return null; } return organizerState.mRemoteAnimationDefinition; } } Loading
services/core/java/com/android/server/wm/WindowOrganizerController.java +2 −0 Original line number Diff line number Diff line Loading @@ -1962,6 +1962,8 @@ class WindowOrganizerController extends IWindowOrganizerController.Stub ownerTask.addChild(taskFragment, position); taskFragment.setWindowingMode(creationParams.getWindowingMode()); taskFragment.setBounds(creationParams.getInitialBounds()); // Record the initial relative embedded bounds. taskFragment.updateRelativeEmbeddedBounds(); mLaunchTaskFragments.put(creationParams.getFragmentToken(), taskFragment); if (transition != null) transition.collectExistenceChange(taskFragment); Loading
services/tests/wmtests/src/com/android/server/wm/TaskFragmentOrganizerControllerTest.java +32 −0 Original line number Diff line number Diff line Loading @@ -795,6 +795,38 @@ public class TaskFragmentOrganizerControllerTest extends WindowTestsBase { 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 public void testApplyTransaction_createTaskFragment_withPairedActivityToken() { final Task task = createTask(mDisplayContent); Loading