TaskbarManager now sets TaskbarUIController for RecentsWindowManager

- FallbackTaskbarUIController can take in a generic
  RecentsViewContainer parameter, i.e. RecentsActivity or
  RecentsWindowManager.
- When changing Overview targets to RecentsWindowManager, which is not
  an Activity, we still update the TaskbarUIController

Test: Switch between default Home activities with the flag on and off,
ensure Taskbar works as expected in each case (3P vs 1P launcher).
Flag: com.android.launcher3.enable_fallback_overview_in_window
Fixes: 368030750
Fixes: 365775636

Change-Id: Ife775e8c226f8c73ec9e1f97b4a6f2972f6c905f
This commit is contained in:
Tony Wickham
2024-10-23 04:39:17 +00:00
parent e6b473a284
commit 87455f28fc
8 changed files with 99 additions and 33 deletions
@@ -25,20 +25,24 @@ import androidx.annotation.Nullable;
import com.android.launcher3.popup.SystemShortcut;
import com.android.launcher3.statemanager.StateManager;
import com.android.quickstep.RecentsActivity;
import com.android.launcher3.statemanager.StatefulContainer;
import com.android.quickstep.TopTaskTracker;
import com.android.quickstep.fallback.RecentsState;
import com.android.quickstep.util.TISBindHelper;
import com.android.quickstep.views.RecentsView;
import com.android.quickstep.views.RecentsViewContainer;
import java.util.stream.Stream;
/**
* A data source which integrates with the fallback RecentsActivity instance (for 3P launchers).
* @param <T> The type of the RecentsViewContainer that will handle Recents state changes.
*/
public class FallbackTaskbarUIController extends TaskbarUIController {
public class FallbackTaskbarUIController
<T extends RecentsViewContainer & StatefulContainer<RecentsState>>
extends TaskbarUIController {
private final RecentsActivity mRecentsActivity;
private final T mRecentsContainer;
private final StateManager.StateListener<RecentsState> mStateListener =
new StateManager.StateListener<RecentsState>() {
@@ -63,23 +67,23 @@ public class FallbackTaskbarUIController extends TaskbarUIController {
}
};
public FallbackTaskbarUIController(RecentsActivity recentsActivity) {
mRecentsActivity = recentsActivity;
public FallbackTaskbarUIController(T recentsContainer) {
mRecentsContainer = recentsContainer;
}
@Override
protected void init(TaskbarControllers taskbarControllers) {
super.init(taskbarControllers);
mRecentsActivity.setTaskbarUIController(this);
mRecentsActivity.getStateManager().addStateListener(mStateListener);
mRecentsContainer.setTaskbarUIController(this);
mRecentsContainer.getStateManager().addStateListener(mStateListener);
}
@Override
protected void onDestroy() {
super.onDestroy();
getRecentsView().setTaskLaunchListener(null);
mRecentsActivity.setTaskbarUIController(null);
mRecentsActivity.getStateManager().removeStateListener(mStateListener);
mRecentsContainer.setTaskbarUIController(null);
mRecentsContainer.getStateManager().removeStateListener(mStateListener);
}
/**
@@ -109,7 +113,7 @@ public class FallbackTaskbarUIController extends TaskbarUIController {
@Override
public RecentsView getRecentsView() {
return mRecentsActivity.getOverviewPanel();
return mRecentsContainer.getOverviewPanel();
}
@Override
@@ -131,11 +135,11 @@ public class FallbackTaskbarUIController extends TaskbarUIController {
@Nullable
@Override
protected TISBindHelper getTISBindHelper() {
return mRecentsActivity.getTISBindHelper();
return mRecentsContainer.getTISBindHelper();
}
@Override
protected String getTaskbarUIControllerName() {
return "FallbackTaskbarUIController";
return "FallbackTaskbarUIController<" + mRecentsContainer.getClass().getSimpleName() + ">";
}
}