Loading libs/WindowManager/Shell/src/com/android/wm/shell/draganddrop/DragAndDropPolicy.java +7 −8 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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. Loading Loading @@ -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); Loading libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SplitScreenController.java +7 −5 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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())); Loading libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/draganddrop/DragAndDropPolicyTest.java +3 −1 Original line number Diff line number Diff line Loading @@ -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(); Loading Loading
libs/WindowManager/Shell/src/com/android/wm/shell/draganddrop/DragAndDropPolicy.java +7 −8 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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. Loading Loading @@ -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); Loading
libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SplitScreenController.java +7 −5 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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())); Loading
libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/draganddrop/DragAndDropPolicyTest.java +3 −1 Original line number Diff line number Diff line Loading @@ -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(); Loading