Merge "Fix not able to launch multi-instance with drag and drop gesture" into tm-qpr-dev
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.wm.shell.R;
|
||||
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.protolog.ShellProtoLogGroup;
|
||||
import com.android.wm.shell.splitscreen.SplitScreenController;
|
||||
@@ -75,6 +76,7 @@ import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* The policy for handling drag and drop operations to shell.
|
||||
@@ -289,18 +291,15 @@ public class DragAndDropPolicy {
|
||||
final ComponentName currentActivity;
|
||||
if (!inSplitScreen) {
|
||||
currentActivity = mSession.runningTaskInfo != null
|
||||
? mSession.runningTaskInfo.baseActivity
|
||||
? mSession.runningTaskInfo.baseIntent.getComponent()
|
||||
: null;
|
||||
} else {
|
||||
final int nonReplacedSplitPosition = position == SPLIT_POSITION_TOP_OR_LEFT
|
||||
? SPLIT_POSITION_BOTTOM_OR_RIGHT
|
||||
: SPLIT_POSITION_TOP_OR_LEFT;
|
||||
ActivityManager.RunningTaskInfo nonReplacedTaskInfo =
|
||||
mSplitScreen.getTaskInfo(nonReplacedSplitPosition);
|
||||
currentActivity = nonReplacedTaskInfo.baseActivity;
|
||||
final ActivityManager.RunningTaskInfo nonReplacedTaskInfo =
|
||||
mSplitScreen.getTaskInfo(SplitLayout.reversePosition(position));
|
||||
currentActivity = nonReplacedTaskInfo.baseIntent.getComponent();
|
||||
}
|
||||
|
||||
if (currentActivity.equals(dragIntentActivity)) {
|
||||
if (Objects.equals(currentActivity, dragIntentActivity)) {
|
||||
// Only apply MULTIPLE_TASK if we are dragging the same activity
|
||||
final Intent fillInIntent = new Intent();
|
||||
fillInIntent.addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
|
||||
|
||||
@@ -83,6 +83,7 @@ import java.io.PrintWriter;
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
import java.util.Arrays;
|
||||
import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
import java.util.concurrent.Executor;
|
||||
|
||||
@@ -366,11 +367,12 @@ public class SplitScreenController implements DragAndDropPolicy.Starter,
|
||||
if (apps == null || apps.length == 0) {
|
||||
final ActivityManager.RunningTaskInfo pairedTaskInfo =
|
||||
getTaskInfo(SplitLayout.reversePosition(position));
|
||||
final ComponentName pairedActivity =
|
||||
pairedTaskInfo != null ? pairedTaskInfo.baseActivity : null;
|
||||
final ComponentName intentActivity =
|
||||
intent.getIntent() != null ? intent.getIntent().getComponent() : null;
|
||||
if (pairedActivity != null && pairedActivity.equals(intentActivity)) {
|
||||
final ComponentName pairedActivity = pairedTaskInfo != null
|
||||
? pairedTaskInfo.baseIntent.getComponent() : null;
|
||||
final ComponentName intentActivity = intent.getIntent() != null
|
||||
? intent.getIntent().getComponent() : null;
|
||||
|
||||
if (Objects.equals(pairedActivity, intentActivity)) {
|
||||
// Switch split position if dragging the same activity to another side.
|
||||
setSideStagePosition(SplitLayout.reversePosition(
|
||||
mStageCoordinator.getSideStagePosition()));
|
||||
|
||||
@@ -182,8 +182,10 @@ public class DragAndDropPolicyTest {
|
||||
info.configuration.windowConfiguration.setActivityType(actType);
|
||||
info.configuration.windowConfiguration.setWindowingMode(winMode);
|
||||
info.isResizeable = true;
|
||||
info.baseActivity = new ComponentName(getInstrumentation().getContext().getPackageName(),
|
||||
info.baseActivity = new ComponentName(getInstrumentation().getContext(),
|
||||
".ActivityWithMode" + winMode);
|
||||
info.baseIntent = new Intent();
|
||||
info.baseIntent.setComponent(info.baseActivity);
|
||||
ActivityInfo activityInfo = new ActivityInfo();
|
||||
activityInfo.packageName = info.baseActivity.getPackageName();
|
||||
activityInfo.name = info.baseActivity.getClassName();
|
||||
|
||||
Reference in New Issue
Block a user