Merge "Ignore task view task when loadAnimation" into tm-qpr-dev am: a1c41b0d01
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/20865522 Change-Id: If342783a6ca0da4b6077a020b5556f259ffec312 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -40,7 +40,8 @@ interface ITaskOrganizerController {
|
|||||||
void unregisterTaskOrganizer(ITaskOrganizer organizer);
|
void unregisterTaskOrganizer(ITaskOrganizer organizer);
|
||||||
|
|
||||||
/** Creates a persistent root task in WM for a particular windowing-mode. */
|
/** Creates a persistent root task in WM for a particular windowing-mode. */
|
||||||
void createRootTask(int displayId, int windowingMode, IBinder launchCookie);
|
void createRootTask(int displayId, int windowingMode, IBinder launchCookie,
|
||||||
|
boolean removeWithTaskOrganizer);
|
||||||
|
|
||||||
/** Deletes a persistent root task in WM */
|
/** Deletes a persistent root task in WM */
|
||||||
boolean deleteRootTask(in WindowContainerToken task);
|
boolean deleteRootTask(in WindowContainerToken task);
|
||||||
|
|||||||
@@ -146,6 +146,26 @@ public class TaskOrganizer extends WindowOrganizer {
|
|||||||
@BinderThread
|
@BinderThread
|
||||||
public void onImeDrawnOnTask(int taskId) {}
|
public void onImeDrawnOnTask(int taskId) {}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a persistent root task in WM for a particular windowing-mode.
|
||||||
|
* @param displayId The display to create the root task on.
|
||||||
|
* @param windowingMode Windowing mode to put the root task in.
|
||||||
|
* @param launchCookie Launch cookie to associate with the task so that is can be identified
|
||||||
|
* when the {@link ITaskOrganizer#onTaskAppeared} callback is called.
|
||||||
|
* @param removeWithTaskOrganizer True if this task should be removed when organizer destroyed.
|
||||||
|
* @hide
|
||||||
|
*/
|
||||||
|
@RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_TASKS)
|
||||||
|
public void createRootTask(int displayId, int windowingMode, @Nullable IBinder launchCookie,
|
||||||
|
boolean removeWithTaskOrganizer) {
|
||||||
|
try {
|
||||||
|
mTaskOrganizerController.createRootTask(displayId, windowingMode, launchCookie,
|
||||||
|
removeWithTaskOrganizer);
|
||||||
|
} catch (RemoteException e) {
|
||||||
|
throw e.rethrowFromSystemServer();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a persistent root task in WM for a particular windowing-mode.
|
* Creates a persistent root task in WM for a particular windowing-mode.
|
||||||
* @param displayId The display to create the root task on.
|
* @param displayId The display to create the root task on.
|
||||||
@@ -156,11 +176,7 @@ public class TaskOrganizer extends WindowOrganizer {
|
|||||||
@RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_TASKS)
|
@RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_TASKS)
|
||||||
@Nullable
|
@Nullable
|
||||||
public void createRootTask(int displayId, int windowingMode, @Nullable IBinder launchCookie) {
|
public void createRootTask(int displayId, int windowingMode, @Nullable IBinder launchCookie) {
|
||||||
try {
|
createRootTask(displayId, windowingMode, launchCookie, false /* removeWithTaskOrganizer */);
|
||||||
mTaskOrganizerController.createRootTask(displayId, windowingMode, launchCookie);
|
|
||||||
} catch (RemoteException e) {
|
|
||||||
throw e.rethrowFromSystemServer();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Deletes a persistent root task in WM */
|
/** Deletes a persistent root task in WM */
|
||||||
|
|||||||
@@ -256,12 +256,30 @@ public class ShellTaskOrganizer extends TaskOrganizer implements
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a persistent root task in WM for a particular windowing-mode.
|
||||||
|
* @param displayId The display to create the root task on.
|
||||||
|
* @param windowingMode Windowing mode to put the root task in.
|
||||||
|
* @param listener The listener to get the created task callback.
|
||||||
|
*/
|
||||||
public void createRootTask(int displayId, int windowingMode, TaskListener listener) {
|
public void createRootTask(int displayId, int windowingMode, TaskListener listener) {
|
||||||
ProtoLog.v(WM_SHELL_TASK_ORG, "createRootTask() displayId=%d winMode=%d listener=%s",
|
createRootTask(displayId, windowingMode, listener, false /* removeWithTaskOrganizer */);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a persistent root task in WM for a particular windowing-mode.
|
||||||
|
* @param displayId The display to create the root task on.
|
||||||
|
* @param windowingMode Windowing mode to put the root task in.
|
||||||
|
* @param listener The listener to get the created task callback.
|
||||||
|
* @param removeWithTaskOrganizer True if this task should be removed when organizer destroyed.
|
||||||
|
*/
|
||||||
|
public void createRootTask(int displayId, int windowingMode, TaskListener listener,
|
||||||
|
boolean removeWithTaskOrganizer) {
|
||||||
|
ProtoLog.v(WM_SHELL_TASK_ORG, "createRootTask() displayId=%d winMode=%d listener=%s" ,
|
||||||
displayId, windowingMode, listener.toString());
|
displayId, windowingMode, listener.toString());
|
||||||
final IBinder cookie = new Binder();
|
final IBinder cookie = new Binder();
|
||||||
setPendingLaunchCookieListener(cookie, listener);
|
setPendingLaunchCookieListener(cookie, listener);
|
||||||
super.createRootTask(displayId, windowingMode, cookie);
|
super.createRootTask(displayId, windowingMode, cookie, removeWithTaskOrganizer);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -892,7 +892,7 @@ public class AppTransitionController {
|
|||||||
*
|
*
|
||||||
* TODO(b/213312721): Remove this predicate and its callers once ShellTransition is enabled.
|
* TODO(b/213312721): Remove this predicate and its callers once ShellTransition is enabled.
|
||||||
*/
|
*/
|
||||||
private static boolean isTaskViewTask(WindowContainer wc) {
|
static boolean isTaskViewTask(WindowContainer wc) {
|
||||||
// We use Task#mRemoveWithTaskOrganizer to identify an embedded Task, but this is a hack and
|
// We use Task#mRemoveWithTaskOrganizer to identify an embedded Task, but this is a hack and
|
||||||
// it is not guaranteed to work this logic in the future version.
|
// it is not guaranteed to work this logic in the future version.
|
||||||
return wc instanceof Task && ((Task) wc).mRemoveWithTaskOrganizer;
|
return wc instanceof Task && ((Task) wc).mRemoveWithTaskOrganizer;
|
||||||
|
|||||||
@@ -6412,6 +6412,11 @@ class Task extends TaskFragment {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Builder setRemoveWithTaskOrganizer(boolean removeWithTaskOrganizer) {
|
||||||
|
mRemoveWithTaskOrganizer = removeWithTaskOrganizer;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
private Builder setUserId(int userId) {
|
private Builder setUserId(int userId) {
|
||||||
mUserId = userId;
|
mUserId = userId;
|
||||||
return this;
|
return this;
|
||||||
@@ -6609,7 +6614,7 @@ class Task extends TaskFragment {
|
|||||||
mCallingPackage = mActivityInfo.packageName;
|
mCallingPackage = mActivityInfo.packageName;
|
||||||
mResizeMode = mActivityInfo.resizeMode;
|
mResizeMode = mActivityInfo.resizeMode;
|
||||||
mSupportsPictureInPicture = mActivityInfo.supportsPictureInPicture();
|
mSupportsPictureInPicture = mActivityInfo.supportsPictureInPicture();
|
||||||
if (mActivityOptions != null) {
|
if (!mRemoveWithTaskOrganizer && mActivityOptions != null) {
|
||||||
mRemoveWithTaskOrganizer = mActivityOptions.getRemoveWithTaskOranizer();
|
mRemoveWithTaskOrganizer = mActivityOptions.getRemoveWithTaskOranizer();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -783,7 +783,8 @@ class TaskOrganizerController extends ITaskOrganizerController.Stub {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void createRootTask(int displayId, int windowingMode, @Nullable IBinder launchCookie) {
|
public void createRootTask(int displayId, int windowingMode, @Nullable IBinder launchCookie,
|
||||||
|
boolean removeWithTaskOrganizer) {
|
||||||
enforceTaskPermission("createRootTask()");
|
enforceTaskPermission("createRootTask()");
|
||||||
final long origId = Binder.clearCallingIdentity();
|
final long origId = Binder.clearCallingIdentity();
|
||||||
try {
|
try {
|
||||||
@@ -795,7 +796,7 @@ class TaskOrganizerController extends ITaskOrganizerController.Stub {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
createRootTask(display, windowingMode, launchCookie);
|
createRootTask(display, windowingMode, launchCookie, removeWithTaskOrganizer);
|
||||||
}
|
}
|
||||||
} finally {
|
} finally {
|
||||||
Binder.restoreCallingIdentity(origId);
|
Binder.restoreCallingIdentity(origId);
|
||||||
@@ -804,6 +805,12 @@ class TaskOrganizerController extends ITaskOrganizerController.Stub {
|
|||||||
|
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
Task createRootTask(DisplayContent display, int windowingMode, @Nullable IBinder launchCookie) {
|
Task createRootTask(DisplayContent display, int windowingMode, @Nullable IBinder launchCookie) {
|
||||||
|
return createRootTask(display, windowingMode, launchCookie,
|
||||||
|
false /* removeWithTaskOrganizer */);
|
||||||
|
}
|
||||||
|
|
||||||
|
Task createRootTask(DisplayContent display, int windowingMode, @Nullable IBinder launchCookie,
|
||||||
|
boolean removeWithTaskOrganizer) {
|
||||||
ProtoLog.v(WM_DEBUG_WINDOW_ORGANIZER, "Create root task displayId=%d winMode=%d",
|
ProtoLog.v(WM_DEBUG_WINDOW_ORGANIZER, "Create root task displayId=%d winMode=%d",
|
||||||
display.mDisplayId, windowingMode);
|
display.mDisplayId, windowingMode);
|
||||||
// We want to defer the task appear signal until the task is fully created and attached to
|
// We want to defer the task appear signal until the task is fully created and attached to
|
||||||
@@ -816,6 +823,7 @@ class TaskOrganizerController extends ITaskOrganizerController.Stub {
|
|||||||
.setDeferTaskAppear(true)
|
.setDeferTaskAppear(true)
|
||||||
.setLaunchCookie(launchCookie)
|
.setLaunchCookie(launchCookie)
|
||||||
.setParent(display.getDefaultTaskDisplayArea())
|
.setParent(display.getDefaultTaskDisplayArea())
|
||||||
|
.setRemoveWithTaskOrganizer(removeWithTaskOrganizer)
|
||||||
.build();
|
.build();
|
||||||
task.setDeferTaskAppear(false /* deferTaskAppear */);
|
task.setDeferTaskAppear(false /* deferTaskAppear */);
|
||||||
return task;
|
return task;
|
||||||
|
|||||||
@@ -3197,11 +3197,11 @@ class WindowContainer<E extends WindowContainer> extends ConfigurationContainer<
|
|||||||
|
|
||||||
private Animation loadAnimation(WindowManager.LayoutParams lp, int transit, boolean enter,
|
private Animation loadAnimation(WindowManager.LayoutParams lp, int transit, boolean enter,
|
||||||
boolean isVoiceInteraction) {
|
boolean isVoiceInteraction) {
|
||||||
if (isOrganized()
|
if (AppTransitionController.isTaskViewTask(this) || (isOrganized()
|
||||||
// TODO(b/161711458): Clean-up when moved to shell.
|
// TODO(b/161711458): Clean-up when moved to shell.
|
||||||
&& getWindowingMode() != WINDOWING_MODE_FULLSCREEN
|
&& getWindowingMode() != WINDOWING_MODE_FULLSCREEN
|
||||||
&& getWindowingMode() != WINDOWING_MODE_FREEFORM
|
&& getWindowingMode() != WINDOWING_MODE_FREEFORM
|
||||||
&& getWindowingMode() != WINDOWING_MODE_MULTI_WINDOW) {
|
&& getWindowingMode() != WINDOWING_MODE_MULTI_WINDOW)) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user