Merge "Fix not able to launch multi-instance with drag and drop gesture" into tm-qpr-dev am: 5e5d3a1544
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/18670839 Change-Id: I905c076c1703665b3958e8ba2ef8d4f2716a1d10 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -67,6 +67,7 @@ import com.android.internal.logging.InstanceId;
|
|||||||
import com.android.internal.protolog.common.ProtoLog;
|
import com.android.internal.protolog.common.ProtoLog;
|
||||||
import com.android.wm.shell.R;
|
import com.android.wm.shell.R;
|
||||||
import com.android.wm.shell.common.DisplayLayout;
|
import com.android.wm.shell.common.DisplayLayout;
|
||||||
|
import com.android.wm.shell.common.split.SplitLayout;
|
||||||
import com.android.wm.shell.common.split.SplitScreenConstants.SplitPosition;
|
import com.android.wm.shell.common.split.SplitScreenConstants.SplitPosition;
|
||||||
import com.android.wm.shell.protolog.ShellProtoLogGroup;
|
import com.android.wm.shell.protolog.ShellProtoLogGroup;
|
||||||
import com.android.wm.shell.splitscreen.SplitScreenController;
|
import com.android.wm.shell.splitscreen.SplitScreenController;
|
||||||
@@ -75,6 +76,7 @@ import java.lang.annotation.Retention;
|
|||||||
import java.lang.annotation.RetentionPolicy;
|
import java.lang.annotation.RetentionPolicy;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The policy for handling drag and drop operations to shell.
|
* The policy for handling drag and drop operations to shell.
|
||||||
@@ -289,18 +291,15 @@ public class DragAndDropPolicy {
|
|||||||
final ComponentName currentActivity;
|
final ComponentName currentActivity;
|
||||||
if (!inSplitScreen) {
|
if (!inSplitScreen) {
|
||||||
currentActivity = mSession.runningTaskInfo != null
|
currentActivity = mSession.runningTaskInfo != null
|
||||||
? mSession.runningTaskInfo.baseActivity
|
? mSession.runningTaskInfo.baseIntent.getComponent()
|
||||||
: null;
|
: null;
|
||||||
} else {
|
} else {
|
||||||
final int nonReplacedSplitPosition = position == SPLIT_POSITION_TOP_OR_LEFT
|
final ActivityManager.RunningTaskInfo nonReplacedTaskInfo =
|
||||||
? SPLIT_POSITION_BOTTOM_OR_RIGHT
|
mSplitScreen.getTaskInfo(SplitLayout.reversePosition(position));
|
||||||
: SPLIT_POSITION_TOP_OR_LEFT;
|
currentActivity = nonReplacedTaskInfo.baseIntent.getComponent();
|
||||||
ActivityManager.RunningTaskInfo nonReplacedTaskInfo =
|
|
||||||
mSplitScreen.getTaskInfo(nonReplacedSplitPosition);
|
|
||||||
currentActivity = nonReplacedTaskInfo.baseActivity;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (currentActivity.equals(dragIntentActivity)) {
|
if (Objects.equals(currentActivity, dragIntentActivity)) {
|
||||||
// Only apply MULTIPLE_TASK if we are dragging the same activity
|
// Only apply MULTIPLE_TASK if we are dragging the same activity
|
||||||
final Intent fillInIntent = new Intent();
|
final Intent fillInIntent = new Intent();
|
||||||
fillInIntent.addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
|
fillInIntent.addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
|
||||||
|
|||||||
@@ -83,6 +83,7 @@ import java.io.PrintWriter;
|
|||||||
import java.lang.annotation.Retention;
|
import java.lang.annotation.Retention;
|
||||||
import java.lang.annotation.RetentionPolicy;
|
import java.lang.annotation.RetentionPolicy;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
import java.util.Objects;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
import java.util.concurrent.Executor;
|
import java.util.concurrent.Executor;
|
||||||
|
|
||||||
@@ -366,11 +367,12 @@ public class SplitScreenController implements DragAndDropPolicy.Starter,
|
|||||||
if (apps == null || apps.length == 0) {
|
if (apps == null || apps.length == 0) {
|
||||||
final ActivityManager.RunningTaskInfo pairedTaskInfo =
|
final ActivityManager.RunningTaskInfo pairedTaskInfo =
|
||||||
getTaskInfo(SplitLayout.reversePosition(position));
|
getTaskInfo(SplitLayout.reversePosition(position));
|
||||||
final ComponentName pairedActivity =
|
final ComponentName pairedActivity = pairedTaskInfo != null
|
||||||
pairedTaskInfo != null ? pairedTaskInfo.baseActivity : null;
|
? pairedTaskInfo.baseIntent.getComponent() : null;
|
||||||
final ComponentName intentActivity =
|
final ComponentName intentActivity = intent.getIntent() != null
|
||||||
intent.getIntent() != null ? intent.getIntent().getComponent() : null;
|
? intent.getIntent().getComponent() : null;
|
||||||
if (pairedActivity != null && pairedActivity.equals(intentActivity)) {
|
|
||||||
|
if (Objects.equals(pairedActivity, intentActivity)) {
|
||||||
// Switch split position if dragging the same activity to another side.
|
// Switch split position if dragging the same activity to another side.
|
||||||
setSideStagePosition(SplitLayout.reversePosition(
|
setSideStagePosition(SplitLayout.reversePosition(
|
||||||
mStageCoordinator.getSideStagePosition()));
|
mStageCoordinator.getSideStagePosition()));
|
||||||
|
|||||||
@@ -182,8 +182,10 @@ public class DragAndDropPolicyTest {
|
|||||||
info.configuration.windowConfiguration.setActivityType(actType);
|
info.configuration.windowConfiguration.setActivityType(actType);
|
||||||
info.configuration.windowConfiguration.setWindowingMode(winMode);
|
info.configuration.windowConfiguration.setWindowingMode(winMode);
|
||||||
info.isResizeable = true;
|
info.isResizeable = true;
|
||||||
info.baseActivity = new ComponentName(getInstrumentation().getContext().getPackageName(),
|
info.baseActivity = new ComponentName(getInstrumentation().getContext(),
|
||||||
".ActivityWithMode" + winMode);
|
".ActivityWithMode" + winMode);
|
||||||
|
info.baseIntent = new Intent();
|
||||||
|
info.baseIntent.setComponent(info.baseActivity);
|
||||||
ActivityInfo activityInfo = new ActivityInfo();
|
ActivityInfo activityInfo = new ActivityInfo();
|
||||||
activityInfo.packageName = info.baseActivity.getPackageName();
|
activityInfo.packageName = info.baseActivity.getPackageName();
|
||||||
activityInfo.name = info.baseActivity.getClassName();
|
activityInfo.name = info.baseActivity.getClassName();
|
||||||
|
|||||||
Reference in New Issue
Block a user