Get DesktopVisibilityController via dagger in TopTaskTracker

Bug: None
Test: m
Flag: EXEMPT refactor
Change-Id: I5adcf67be8a1afb6902820e30eec20630285f413
This commit is contained in:
minch
2025-04-18 05:31:56 +00:00
parent c496829044
commit 4b694fa2c4
2 changed files with 18 additions and 12 deletions

View File

@@ -100,10 +100,11 @@ public class TopTaskTracker extends ISplitScreenListener.Stub implements TaskSta
private ArrayMap<Integer, GroupedTaskInfo> mVisibleTasks = new ArrayMap<>();
private final Context mContext;
private final DesktopVisibilityController mDesktopVisibilityController;
@Inject
public TopTaskTracker(@ApplicationContext Context context, DaggerSingletonTracker tracker,
SystemUiProxy systemUiProxy) {
SystemUiProxy systemUiProxy, DesktopVisibilityController desktopVisibilityController) {
if (!enableShellTopTaskTracking()) {
mMainStagePosition.stageType = SplitConfigurationOptions.STAGE_TYPE_MAIN;
mSideStagePosition.stageType = SplitConfigurationOptions.STAGE_TYPE_SIDE;
@@ -122,6 +123,7 @@ public class TopTaskTracker extends ISplitScreenListener.Stub implements TaskSta
});
mContext = context;
mDesktopVisibilityController = desktopVisibilityController;
}
@Override
@@ -346,6 +348,7 @@ public class TopTaskTracker extends ISplitScreenListener.Stub implements TaskSta
// explicit)
return new CachedTaskInfo(mVisibleTasks.get(displayId));
} else {
int activeDeskId = mDesktopVisibilityController.getActiveDeskId(displayId);
if (filterOnlyVisibleRecents) {
// Since we only know about the top most task, any filtering may not be applied on
// the cache. The second to top task may change while the top task is still the
@@ -355,10 +358,10 @@ public class TopTaskTracker extends ISplitScreenListener.Stub implements TaskSta
if (enableOverviewOnConnectedDisplays()) {
return new CachedTaskInfo(Arrays.stream(tasks).filter(
info -> ExternalDisplaysKt.getSafeDisplayId(info)
== displayId).toList(), mContext, displayId);
== displayId).toList(), mContext, displayId, activeDeskId);
} else {
return new CachedTaskInfo(Arrays.asList(tasks), mContext,
displayId);
displayId, activeDeskId);
}
}
@@ -384,7 +387,7 @@ public class TopTaskTracker extends ISplitScreenListener.Stub implements TaskSta
taskInfo -> !DesksUtils.isDesktopWallpaperTask(taskInfo));
}
return new CachedTaskInfo(taskStream.toList(), mContext, displayId);
return new CachedTaskInfo(taskStream.toList(), mContext, displayId, activeDeskId);
}
}
@@ -416,22 +419,25 @@ public class TopTaskTracker extends ISplitScreenListener.Stub implements TaskSta
private final GroupedTaskInfo mVisibleTasks;
private Context mContext;
private final int mActiveDeskId;
// Only used when enableShellTopTaskTracking() is enabled
CachedTaskInfo(@Nullable GroupedTaskInfo visibleTasks) {
mAllCachedTasks = null;
mTopTask = null;
mVisibleTasks = visibleTasks;
mActiveDeskId = INACTIVE_DESK_ID;
}
// Only used when enableShellTopTaskTracking() is disabled
CachedTaskInfo(@NonNull List<TaskInfo> allCachedTasks, Context context,
int displayId) {
int displayId, int activeDeskId) {
mDisplayId = displayId;
mVisibleTasks = null;
mAllCachedTasks = allCachedTasks;
mTopTask = allCachedTasks.isEmpty() ? null : allCachedTasks.get(0);
mContext = context;
mActiveDeskId = activeDeskId;
}
/**
@@ -541,7 +547,8 @@ public class TopTaskTracker extends ISplitScreenListener.Stub implements TaskSta
&& t.getActivityType() != ACTIVITY_TYPE_RECENTS)
.toList();
return visibleNonExcludedTasks.isEmpty() ? null
: new CachedTaskInfo(visibleNonExcludedTasks, mContext, mDisplayId);
: new CachedTaskInfo(visibleNonExcludedTasks, mContext, mDisplayId,
mActiveDeskId);
}
/**
@@ -599,12 +606,9 @@ public class TopTaskTracker extends ISplitScreenListener.Stub implements TaskSta
} else {
final TaskInfo baseTaskInfo = getLegacyBaseTask();
if (enableMultipleDesktops(mContext)) {
DesktopVisibilityController desktopVisibilityController =
DesktopVisibilityController.INSTANCE.get(mContext);
if (desktopVisibilityController.isInDesktopMode(mDisplayId)) {
if (mActiveDeskId != INACTIVE_DESK_ID) {
return GroupedTaskInfo.forDeskTasks(
desktopVisibilityController.getActiveDeskId(mDisplayId),
mDisplayId, mAllCachedTasks,
mActiveDeskId, mDisplayId, mAllCachedTasks,
/* minimizedFreeformTaskIds = */ Collections.emptySet());
}
} else if (isDesktopTask(baseTaskInfo)) {

View File

@@ -18,6 +18,7 @@ package com.android.quickstep;
import static android.view.Display.DEFAULT_DISPLAY;
import static com.android.launcher3.statehandlers.DesktopVisibilityController.INACTIVE_DESK_ID;
import static com.android.quickstep.AbsSwipeUpHandler.STATE_HANDLER_INVALIDATED;
import static com.android.wm.shell.shared.ShellSharedConstants.KEY_EXTRA_SHELL_CAN_HAND_OFF_ANIMATION;
import static com.android.wm.shell.shared.split.SplitBounds.KEY_EXTRA_SPLIT_BOUNDS;
@@ -111,7 +112,8 @@ public abstract class AbsSwipeUpHandlerTestCase<
new ActivityManager.RunningTaskInfo();
protected final TopTaskTracker.CachedTaskInfo mCachedTaskInfo =
new TopTaskTracker.CachedTaskInfo(
Collections.singletonList(mRunningTaskInfo), mContext, DEFAULT_DISPLAY);
Collections.singletonList(mRunningTaskInfo), mContext, DEFAULT_DISPLAY,
INACTIVE_DESK_ID);
protected final RemoteAnimationTarget mRemoteAnimationTarget = new RemoteAnimationTarget(
/* taskId= */ 0,
/* mode= */ RemoteAnimationTarget.MODE_CLOSING,