Merge "Fix broken transition when caceling enter split screen" into tm-qpr-dev
This commit is contained in:
@@ -18,6 +18,7 @@ package com.android.wm.shell.splitscreen;
|
|||||||
|
|
||||||
import static android.app.ActivityManager.START_SUCCESS;
|
import static android.app.ActivityManager.START_SUCCESS;
|
||||||
import static android.app.ActivityManager.START_TASK_TO_FRONT;
|
import static android.app.ActivityManager.START_TASK_TO_FRONT;
|
||||||
|
import static android.app.ActivityTaskManager.INVALID_TASK_ID;
|
||||||
import static android.content.Intent.FLAG_ACTIVITY_MULTIPLE_TASK;
|
import static android.content.Intent.FLAG_ACTIVITY_MULTIPLE_TASK;
|
||||||
import static android.content.Intent.FLAG_ACTIVITY_NO_USER_ACTION;
|
import static android.content.Intent.FLAG_ACTIVITY_NO_USER_ACTION;
|
||||||
import static android.view.Display.DEFAULT_DISPLAY;
|
import static android.view.Display.DEFAULT_DISPLAY;
|
||||||
@@ -535,17 +536,11 @@ public class SplitScreenController implements DragAndDropPolicy.Starter,
|
|||||||
fillInIntent.addFlags(FLAG_ACTIVITY_MULTIPLE_TASK);
|
fillInIntent.addFlags(FLAG_ACTIVITY_MULTIPLE_TASK);
|
||||||
ProtoLog.v(ShellProtoLogGroup.WM_SHELL_SPLIT_SCREEN, "Adding MULTIPLE_TASK");
|
ProtoLog.v(ShellProtoLogGroup.WM_SHELL_SPLIT_SCREEN, "Adding MULTIPLE_TASK");
|
||||||
} else {
|
} else {
|
||||||
try {
|
taskId = INVALID_TASK_ID;
|
||||||
adapter.getRunner().onAnimationCancelled(false /* isKeyguardOccluded */);
|
|
||||||
ActivityTaskManager.getService().startActivityFromRecents(taskId, options2);
|
|
||||||
} catch (RemoteException e) {
|
|
||||||
Slog.e(TAG, "Error starting remote animation", e);
|
|
||||||
}
|
|
||||||
ProtoLog.v(ShellProtoLogGroup.WM_SHELL_SPLIT_SCREEN,
|
ProtoLog.v(ShellProtoLogGroup.WM_SHELL_SPLIT_SCREEN,
|
||||||
"Cancel entering split as not supporting multi-instances");
|
"Cancel entering split as not supporting multi-instances");
|
||||||
Toast.makeText(mContext, R.string.dock_multi_instances_not_supported_text,
|
Toast.makeText(mContext, R.string.dock_multi_instances_not_supported_text,
|
||||||
Toast.LENGTH_SHORT).show();
|
Toast.LENGTH_SHORT).show();
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
mStageCoordinator.startIntentAndTaskWithLegacyTransition(pendingIntent, fillInIntent,
|
mStageCoordinator.startIntentAndTaskWithLegacyTransition(pendingIntent, fillInIntent,
|
||||||
@@ -586,17 +581,11 @@ public class SplitScreenController implements DragAndDropPolicy.Starter,
|
|||||||
fillInIntent2.addFlags(FLAG_ACTIVITY_MULTIPLE_TASK);
|
fillInIntent2.addFlags(FLAG_ACTIVITY_MULTIPLE_TASK);
|
||||||
ProtoLog.v(ShellProtoLogGroup.WM_SHELL_SPLIT_SCREEN, "Adding MULTIPLE_TASK");
|
ProtoLog.v(ShellProtoLogGroup.WM_SHELL_SPLIT_SCREEN, "Adding MULTIPLE_TASK");
|
||||||
} else {
|
} else {
|
||||||
try {
|
pendingIntent2 = null;
|
||||||
adapter.getRunner().onAnimationCancelled(false /* isKeyguardOccluded */);
|
|
||||||
pendingIntent1.send();
|
|
||||||
} catch (RemoteException | PendingIntent.CanceledException e) {
|
|
||||||
Slog.e(TAG, "Error starting remote animation", e);
|
|
||||||
}
|
|
||||||
ProtoLog.v(ShellProtoLogGroup.WM_SHELL_SPLIT_SCREEN,
|
ProtoLog.v(ShellProtoLogGroup.WM_SHELL_SPLIT_SCREEN,
|
||||||
"Cancel entering split as not supporting multi-instances");
|
"Cancel entering split as not supporting multi-instances");
|
||||||
Toast.makeText(mContext, R.string.dock_multi_instances_not_supported_text,
|
Toast.makeText(mContext, R.string.dock_multi_instances_not_supported_text,
|
||||||
Toast.LENGTH_SHORT).show();
|
Toast.LENGTH_SHORT).show();
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
mStageCoordinator.startIntentsWithLegacyTransition(pendingIntent1, fillInIntent1, options1,
|
mStageCoordinator.startIntentsWithLegacyTransition(pendingIntent1, fillInIntent1, options1,
|
||||||
|
|||||||
@@ -629,9 +629,19 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler,
|
|||||||
RemoteAnimationAdapter adapter, InstanceId instanceId) {
|
RemoteAnimationAdapter adapter, InstanceId instanceId) {
|
||||||
final WindowContainerTransaction wct = new WindowContainerTransaction();
|
final WindowContainerTransaction wct = new WindowContainerTransaction();
|
||||||
if (options1 == null) options1 = new Bundle();
|
if (options1 == null) options1 = new Bundle();
|
||||||
|
if (pendingIntent2 == null) {
|
||||||
|
// Launching a solo task.
|
||||||
|
ActivityOptions activityOptions = ActivityOptions.fromBundle(options1);
|
||||||
|
activityOptions.update(ActivityOptions.makeRemoteAnimation(adapter));
|
||||||
|
options1 = activityOptions.toBundle();
|
||||||
|
addActivityOptions(options1, null /* launchTarget */);
|
||||||
|
wct.sendPendingIntent(pendingIntent1, fillInIntent1, options1);
|
||||||
|
mSyncQueue.queue(wct);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
addActivityOptions(options1, mSideStage);
|
addActivityOptions(options1, mSideStage);
|
||||||
wct.sendPendingIntent(pendingIntent1, fillInIntent1, options1);
|
wct.sendPendingIntent(pendingIntent1, fillInIntent1, options1);
|
||||||
|
|
||||||
startWithLegacyTransition(wct, pendingIntent2, fillInIntent2, options2, splitPosition,
|
startWithLegacyTransition(wct, pendingIntent2, fillInIntent2, options2, splitPosition,
|
||||||
splitRatio, adapter, instanceId);
|
splitRatio, adapter, instanceId);
|
||||||
}
|
}
|
||||||
@@ -666,9 +676,19 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler,
|
|||||||
InstanceId instanceId) {
|
InstanceId instanceId) {
|
||||||
final WindowContainerTransaction wct = new WindowContainerTransaction();
|
final WindowContainerTransaction wct = new WindowContainerTransaction();
|
||||||
if (options1 == null) options1 = new Bundle();
|
if (options1 == null) options1 = new Bundle();
|
||||||
|
if (taskId == INVALID_TASK_ID) {
|
||||||
|
// Launching a solo task.
|
||||||
|
ActivityOptions activityOptions = ActivityOptions.fromBundle(options1);
|
||||||
|
activityOptions.update(ActivityOptions.makeRemoteAnimation(adapter));
|
||||||
|
options1 = activityOptions.toBundle();
|
||||||
|
addActivityOptions(options1, null /* launchTarget */);
|
||||||
|
wct.startShortcut(mContext.getPackageName(), shortcutInfo, options1);
|
||||||
|
mSyncQueue.queue(wct);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
addActivityOptions(options1, mSideStage);
|
addActivityOptions(options1, mSideStage);
|
||||||
wct.startShortcut(mContext.getPackageName(), shortcutInfo, options1);
|
wct.startShortcut(mContext.getPackageName(), shortcutInfo, options1);
|
||||||
|
|
||||||
startWithLegacyTransition(wct, taskId, options2, splitPosition, splitRatio, adapter,
|
startWithLegacyTransition(wct, taskId, options2, splitPosition, splitRatio, adapter,
|
||||||
instanceId);
|
instanceId);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user