Merge "Fix Accessibility button & gesture settings did not update correctly in Tablet device" into sc-v2-dev am: d920ef0613
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/16174513 Change-Id: Ie144f0704648f098c9645907375b548c51457028
This commit is contained in:
@@ -24,9 +24,6 @@ import static android.app.StatusBarManager.WindowType;
|
||||
import static android.app.StatusBarManager.WindowVisibleState;
|
||||
import static android.app.StatusBarManager.windowStateToString;
|
||||
import static android.app.WindowConfiguration.ROTATION_UNDEFINED;
|
||||
import static android.provider.Settings.Secure.ACCESSIBILITY_BUTTON_MODE_FLOATING_MENU;
|
||||
import static android.provider.Settings.Secure.ACCESSIBILITY_BUTTON_MODE_GESTURE;
|
||||
import static android.provider.Settings.Secure.ACCESSIBILITY_BUTTON_MODE_NAVIGATION_BAR;
|
||||
import static android.view.Display.DEFAULT_DISPLAY;
|
||||
import static android.view.InsetsState.ITYPE_NAVIGATION_BAR;
|
||||
import static android.view.InsetsState.containsType;
|
||||
@@ -131,10 +128,10 @@ import com.android.systemui.navigationbar.gestural.QuickswitchOrientedNavHandle;
|
||||
import com.android.systemui.plugins.statusbar.StatusBarStateController;
|
||||
import com.android.systemui.recents.OverviewProxyService;
|
||||
import com.android.systemui.recents.Recents;
|
||||
import com.android.systemui.shared.rotation.RotationButton;
|
||||
import com.android.systemui.shared.rotation.RotationButtonController;
|
||||
import com.android.systemui.settings.UserTracker;
|
||||
import com.android.systemui.shared.recents.utilities.Utilities;
|
||||
import com.android.systemui.shared.rotation.RotationButton;
|
||||
import com.android.systemui.shared.rotation.RotationButtonController;
|
||||
import com.android.systemui.shared.system.ActivityManagerWrapper;
|
||||
import com.android.systemui.shared.system.QuickStepContract;
|
||||
import com.android.systemui.statusbar.AutoHideUiElement;
|
||||
@@ -614,8 +611,6 @@ public class NavigationBar implements View.OnAttachStateChangeListener,
|
||||
mDeviceProvisionedController.addCallback(mUserSetupListener);
|
||||
mNotificationShadeDepthController.addListener(mDepthListener);
|
||||
|
||||
updateAccessibilityButtonModeIfNeeded();
|
||||
|
||||
return barView;
|
||||
}
|
||||
|
||||
@@ -1406,34 +1401,6 @@ public class NavigationBar implements View.OnAttachStateChangeListener,
|
||||
updateSystemUiStateFlags(a11yFlags);
|
||||
}
|
||||
|
||||
private void updateAccessibilityButtonModeIfNeeded() {
|
||||
final int mode = Settings.Secure.getIntForUser(mContentResolver,
|
||||
Settings.Secure.ACCESSIBILITY_BUTTON_MODE,
|
||||
ACCESSIBILITY_BUTTON_MODE_NAVIGATION_BAR, UserHandle.USER_CURRENT);
|
||||
|
||||
// ACCESSIBILITY_BUTTON_MODE_FLOATING_MENU is compatible under gestural or non-gestural
|
||||
// mode, so we don't need to update it.
|
||||
if (mode == ACCESSIBILITY_BUTTON_MODE_FLOATING_MENU) {
|
||||
return;
|
||||
}
|
||||
|
||||
// ACCESSIBILITY_BUTTON_MODE_NAVIGATION_BAR is incompatible under gestural mode. Need to
|
||||
// force update to ACCESSIBILITY_BUTTON_MODE_GESTURE.
|
||||
if (QuickStepContract.isGesturalMode(mNavBarMode)
|
||||
&& mode == ACCESSIBILITY_BUTTON_MODE_NAVIGATION_BAR) {
|
||||
Settings.Secure.putIntForUser(mContentResolver,
|
||||
Settings.Secure.ACCESSIBILITY_BUTTON_MODE, ACCESSIBILITY_BUTTON_MODE_GESTURE,
|
||||
UserHandle.USER_CURRENT);
|
||||
// ACCESSIBILITY_BUTTON_MODE_GESTURE is incompatible under non gestural mode. Need to
|
||||
// force update to ACCESSIBILITY_BUTTON_MODE_NAVIGATION_BAR.
|
||||
} else if (!QuickStepContract.isGesturalMode(mNavBarMode)
|
||||
&& mode == ACCESSIBILITY_BUTTON_MODE_GESTURE) {
|
||||
Settings.Secure.putIntForUser(mContentResolver,
|
||||
Settings.Secure.ACCESSIBILITY_BUTTON_MODE,
|
||||
ACCESSIBILITY_BUTTON_MODE_NAVIGATION_BAR, UserHandle.USER_CURRENT);
|
||||
}
|
||||
}
|
||||
|
||||
public void updateSystemUiStateFlags(int a11yFlags) {
|
||||
if (a11yFlags < 0) {
|
||||
a11yFlags = mNavigationBarA11yHelper.getA11yButtonState();
|
||||
@@ -1558,7 +1525,6 @@ public class NavigationBar implements View.OnAttachStateChangeListener,
|
||||
}
|
||||
}
|
||||
updateScreenPinningGestures();
|
||||
updateAccessibilityButtonModeIfNeeded();
|
||||
|
||||
if (!canShowSecondaryHandle()) {
|
||||
resetSecondaryHandle();
|
||||
|
||||
@@ -16,10 +16,14 @@
|
||||
|
||||
package com.android.systemui.navigationbar;
|
||||
|
||||
import static android.provider.Settings.Secure.ACCESSIBILITY_BUTTON_MODE_FLOATING_MENU;
|
||||
import static android.provider.Settings.Secure.ACCESSIBILITY_BUTTON_MODE_GESTURE;
|
||||
import static android.provider.Settings.Secure.ACCESSIBILITY_BUTTON_MODE_NAVIGATION_BAR;
|
||||
import static android.view.Display.DEFAULT_DISPLAY;
|
||||
|
||||
import static com.android.systemui.shared.recents.utilities.Utilities.isTablet;
|
||||
|
||||
import android.content.ContentResolver;
|
||||
import android.content.Context;
|
||||
import android.content.pm.ActivityInfo;
|
||||
import android.content.res.Configuration;
|
||||
@@ -27,6 +31,8 @@ import android.hardware.display.DisplayManager;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.os.RemoteException;
|
||||
import android.os.UserHandle;
|
||||
import android.provider.Settings;
|
||||
import android.util.Log;
|
||||
import android.util.SparseArray;
|
||||
import android.view.Display;
|
||||
@@ -46,6 +52,7 @@ import com.android.systemui.dagger.qualifiers.Main;
|
||||
import com.android.systemui.dump.DumpManager;
|
||||
import com.android.systemui.model.SysUiState;
|
||||
import com.android.systemui.recents.OverviewProxyService;
|
||||
import com.android.systemui.shared.system.QuickStepContract;
|
||||
import com.android.systemui.statusbar.CommandQueue;
|
||||
import com.android.systemui.statusbar.CommandQueue.Callbacks;
|
||||
import com.android.systemui.statusbar.phone.AutoHideController;
|
||||
@@ -142,6 +149,8 @@ public class NavigationBarController implements
|
||||
}
|
||||
final int oldMode = mNavMode;
|
||||
mNavMode = mode;
|
||||
updateAccessibilityButtonModeIfNeeded();
|
||||
|
||||
mHandler.post(() -> {
|
||||
// create/destroy nav bar based on nav mode only in unfolded state
|
||||
if (oldMode != mNavMode) {
|
||||
@@ -157,6 +166,35 @@ public class NavigationBarController implements
|
||||
});
|
||||
}
|
||||
|
||||
private void updateAccessibilityButtonModeIfNeeded() {
|
||||
ContentResolver contentResolver = mContext.getContentResolver();
|
||||
final int mode = Settings.Secure.getIntForUser(contentResolver,
|
||||
Settings.Secure.ACCESSIBILITY_BUTTON_MODE,
|
||||
ACCESSIBILITY_BUTTON_MODE_NAVIGATION_BAR, UserHandle.USER_CURRENT);
|
||||
|
||||
// ACCESSIBILITY_BUTTON_MODE_FLOATING_MENU is compatible under gestural or non-gestural
|
||||
// mode, so we don't need to update it.
|
||||
if (mode == ACCESSIBILITY_BUTTON_MODE_FLOATING_MENU) {
|
||||
return;
|
||||
}
|
||||
|
||||
// ACCESSIBILITY_BUTTON_MODE_NAVIGATION_BAR is incompatible under gestural mode. Need to
|
||||
// force update to ACCESSIBILITY_BUTTON_MODE_GESTURE.
|
||||
if (QuickStepContract.isGesturalMode(mNavMode)
|
||||
&& mode == ACCESSIBILITY_BUTTON_MODE_NAVIGATION_BAR) {
|
||||
Settings.Secure.putIntForUser(contentResolver,
|
||||
Settings.Secure.ACCESSIBILITY_BUTTON_MODE, ACCESSIBILITY_BUTTON_MODE_GESTURE,
|
||||
UserHandle.USER_CURRENT);
|
||||
// ACCESSIBILITY_BUTTON_MODE_GESTURE is incompatible under non gestural mode. Need to
|
||||
// force update to ACCESSIBILITY_BUTTON_MODE_NAVIGATION_BAR.
|
||||
} else if (!QuickStepContract.isGesturalMode(mNavMode)
|
||||
&& mode == ACCESSIBILITY_BUTTON_MODE_GESTURE) {
|
||||
Settings.Secure.putIntForUser(contentResolver,
|
||||
Settings.Secure.ACCESSIBILITY_BUTTON_MODE,
|
||||
ACCESSIBILITY_BUTTON_MODE_NAVIGATION_BAR, UserHandle.USER_CURRENT);
|
||||
}
|
||||
}
|
||||
|
||||
/** @see #initializeTaskbarIfNecessary() */
|
||||
private boolean updateNavbarForTaskbar() {
|
||||
boolean taskbarShown = initializeTaskbarIfNecessary();
|
||||
@@ -222,6 +260,8 @@ public class NavigationBarController implements
|
||||
*/
|
||||
public void createNavigationBars(final boolean includeDefaultDisplay,
|
||||
RegisterStatusBarResult result) {
|
||||
updateAccessibilityButtonModeIfNeeded();
|
||||
|
||||
// Don't need to create nav bar on the default display if we initialize TaskBar.
|
||||
final boolean shouldCreateDefaultNavbar = includeDefaultDisplay
|
||||
&& !initializeTaskbarIfNecessary();
|
||||
|
||||
Reference in New Issue
Block a user