Merge "Hook up EdgeBackGestureHandler with TaskbarDelegate" into sc-v2-dev

This commit is contained in:
Tracy Zhou
2021-08-21 22:53:45 +00:00
committed by Android (Google) Code Review
2 changed files with 41 additions and 8 deletions

View File

@@ -191,8 +191,8 @@ public class NavigationBarController implements Callbacks,
mNavMode = mNavigationModeController.addListener(this);
mNavigationModeController.addListener(this);
mTaskbarDelegate = taskbarDelegate;
mTaskbarDelegate.setOverviewProxyService(overviewProxyService,
navigationBarA11yHelper, mSysUiFlagsContainer);
mTaskbarDelegate.setOverviewProxyService(commandQueue, overviewProxyService,
navigationBarA11yHelper, navigationModeController, sysUiFlagsContainer);
mIsTablet = isTablet(mContext);
mUserTracker = userTracker;
}
@@ -252,12 +252,10 @@ public class NavigationBarController implements Callbacks,
/** @return {@code true} if taskbar is enabled, false otherwise */
private boolean initializeTaskbarIfNecessary() {
if (mIsTablet) {
// Remove navigation bar when taskbar is showing, currently only for 3 button mode
// Remove navigation bar when taskbar is showing
removeNavigationBar(mContext.getDisplayId());
mCommandQueue.addCallback(mTaskbarDelegate);
mTaskbarDelegate.init(mContext.getDisplayId());
} else {
mCommandQueue.removeCallback(mTaskbarDelegate);
mTaskbarDelegate.destroy();
}
return mIsTablet;

View File

@@ -27,13 +27,16 @@ import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_I
import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_IME_SWITCHER_SHOWING;
import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_OVERVIEW_DISABLED;
import android.content.Context;
import android.inputmethodservice.InputMethodService;
import android.os.IBinder;
import android.view.InsetsVisibilities;
import android.view.View;
import com.android.internal.view.AppearanceRegion;
import com.android.systemui.Dependency;
import com.android.systemui.model.SysUiState;
import com.android.systemui.navigationbar.gestural.EdgeBackGestureHandler;
import com.android.systemui.recents.OverviewProxyService;
import com.android.systemui.shared.recents.utilities.Utilities;
import com.android.systemui.statusbar.CommandQueue;
@@ -42,10 +45,15 @@ import javax.inject.Inject;
import javax.inject.Singleton;
@Singleton
public class TaskbarDelegate implements CommandQueue.Callbacks {
public class TaskbarDelegate implements CommandQueue.Callbacks,
OverviewProxyService.OverviewProxyListener, NavigationModeController.ModeChangedListener {
private final EdgeBackGestureHandler mEdgeBackGestureHandler;
private CommandQueue mCommandQueue;
private OverviewProxyService mOverviewProxyService;
private NavigationBarA11yHelper mNavigationBarA11yHelper;
private NavigationModeController mNavigationModeController;
private SysUiState mSysUiState;
private int mDisplayId;
private int mNavigationIconHints;
@@ -54,23 +62,36 @@ public class TaskbarDelegate implements CommandQueue.Callbacks {
private int mDisabledFlags;
@Inject
public TaskbarDelegate() { /* no-op */ }
public TaskbarDelegate(Context context) {
mEdgeBackGestureHandler = Dependency.get(EdgeBackGestureHandler.Factory.class)
.create(context);
}
public void setOverviewProxyService(OverviewProxyService overviewProxyService,
public void setOverviewProxyService(CommandQueue commandQueue,
OverviewProxyService overviewProxyService,
NavigationBarA11yHelper navigationBarA11yHelper,
NavigationModeController navigationModeController,
SysUiState sysUiState) {
// TODO: adding this in the ctor results in a dagger dependency cycle :(
mCommandQueue = commandQueue;
mOverviewProxyService = overviewProxyService;
mNavigationBarA11yHelper = navigationBarA11yHelper;
mNavigationModeController = navigationModeController;
mSysUiState = sysUiState;
}
public void destroy() {
mCommandQueue.removeCallback(this);
mOverviewProxyService.removeCallback(this);
mNavigationModeController.removeListener(this);
mNavigationBarA11yHelper.removeA11yEventListener(mNavA11yEventListener);
}
public void init(int displayId) {
mDisplayId = displayId;
mCommandQueue.addCallback(this);
mOverviewProxyService.addCallback(this);
mNavigationModeController.addListener(this);
mNavigationBarA11yHelper.registerA11yEventListener(mNavA11yEventListener);
// Set initial state for any listeners
updateSysuiFlags();
@@ -126,4 +147,18 @@ public class TaskbarDelegate implements CommandQueue.Callbacks {
InsetsVisibilities requestedVisibilities, String packageName) {
mOverviewProxyService.onSystemBarAttributesChanged(displayId, behavior);
}
@Override
public void onTaskbarStatusUpdated(boolean visible, boolean stashed) {
if (visible) {
mEdgeBackGestureHandler.onNavBarAttached();
} else {
mEdgeBackGestureHandler.onNavBarDetached();
}
}
@Override
public void onNavigationModeChanged(int mode) {
mEdgeBackGestureHandler.onNavigationModeChanged(mode);
}
}