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:
@@ -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() + ">";
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user