Loading core/java/android/view/WindowManagerPolicyConstants.java +10 −0 Original line number Diff line number Diff line Loading @@ -54,6 +54,16 @@ public interface WindowManagerPolicyConstants { int NAV_BAR_RIGHT = 1 << 1; int NAV_BAR_BOTTOM = 1 << 2; // Navigation bar interaction modes int NAV_BAR_MODE_3BUTTON = 0; int NAV_BAR_MODE_2BUTTON = 1; int NAV_BAR_MODE_GESTURAL = 2; // Associated overlays for each nav bar mode String NAV_BAR_MODE_3BUTTON_OVERLAY = "com.android.internal.systemui.navbar.threebutton"; String NAV_BAR_MODE_2BUTTON_OVERLAY = "com.android.internal.systemui.navbar.twobutton"; String NAV_BAR_MODE_GESTURAL_OVERLAY = "com.android.internal.systemui.navbar.gestural"; /** * Broadcast sent when a user activity is detected. */ Loading core/res/res/values/config.xml +6 −0 Original line number Diff line number Diff line Loading @@ -3222,6 +3222,12 @@ --> <integer name="config_navBarOpacityMode">0</integer> <!-- Controls the navigation bar interaction mode: 0: 3 button mode (back, home, overview buttons) 1: 2 button mode (back, home buttons + swipe up for overview) 2: gestures only for back, home and overview --> <integer name="config_navBarInteractionMode">0</integer> <!-- Default insets [LEFT/RIGHTxTOP/BOTTOM] from the screen edge for picture-in-picture windows. These values are in DPs and will be converted to pixel sizes internally. --> <string translatable="false" name="config_defaultPictureInPictureScreenEdgeInsets">16x16</string> Loading core/res/res/values/symbols.xml +1 −0 Original line number Diff line number Diff line Loading @@ -2832,6 +2832,7 @@ <java-symbol type="string" name="config_packagedKeyboardName" /> <java-symbol type="bool" name="config_forceWindowDrawsStatusBarBackground" /> <java-symbol type="integer" name="config_navBarOpacityMode" /> <java-symbol type="integer" name="config_navBarInteractionMode" /> <java-symbol type="color" name="system_bar_background_semi_transparent" /> <!-- EditText suggestion popup. --> Loading packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java +60 −1 Original line number Diff line number Diff line Loading @@ -19,6 +19,12 @@ package com.android.providers.settings; import static android.os.Process.ROOT_UID; import static android.os.Process.SHELL_UID; import static android.os.Process.SYSTEM_UID; import static android.view.WindowManagerPolicyConstants.NAV_BAR_MODE_2BUTTON; import static android.view.WindowManagerPolicyConstants.NAV_BAR_MODE_2BUTTON_OVERLAY; import static android.view.WindowManagerPolicyConstants.NAV_BAR_MODE_3BUTTON; import static android.view.WindowManagerPolicyConstants.NAV_BAR_MODE_3BUTTON_OVERLAY; import static android.view.WindowManagerPolicyConstants.NAV_BAR_MODE_GESTURAL; import static android.view.WindowManagerPolicyConstants.NAV_BAR_MODE_GESTURAL_OVERLAY; import android.Manifest; import android.annotation.NonNull; Loading @@ -33,6 +39,8 @@ import android.content.ContentValues; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.content.om.IOverlayManager; import android.content.om.OverlayInfo; import android.content.pm.ApplicationInfo; import android.content.pm.IPackageManager; import android.content.pm.PackageInfo; Loading Loading @@ -3235,7 +3243,7 @@ public class SettingsProvider extends ContentProvider { } private final class UpgradeController { private static final int SETTINGS_VERSION = 176; private static final int SETTINGS_VERSION = 177; private final int mUserId; Loading Loading @@ -4311,6 +4319,57 @@ public class SettingsProvider extends ContentProvider { currentVersion = 176; } if (currentVersion == 176) { // Version 176: Migrate the existing swipe up setting into the resource overlay // for the navigation bar interaction mode. final IOverlayManager overlayManager = IOverlayManager.Stub.asInterface( ServiceManager.getService(Context.OVERLAY_SERVICE)); int navBarMode = -1; // Migrate the swipe up setting only if it is set final SettingsState secureSettings = getSecureSettingsLocked(userId); final Setting swipeUpSetting = secureSettings.getSettingLocked( Secure.SWIPE_UP_TO_SWITCH_APPS_ENABLED); if (swipeUpSetting != null && !swipeUpSetting.isNull()) { navBarMode = swipeUpSetting.getValue().equals("1") ? NAV_BAR_MODE_2BUTTON : NAV_BAR_MODE_3BUTTON; } // Temporary: Only for migration for dogfooders, to be removed try { final OverlayInfo info = overlayManager.getOverlayInfo( "com.android.internal.experiment.navbar.type.inset", UserHandle.USER_CURRENT); if (info != null && info.isEnabled()) { navBarMode = NAV_BAR_MODE_GESTURAL; } } catch (RemoteException e) { // Ingore, fall through } if (navBarMode != -1) { try { overlayManager.setEnabled(NAV_BAR_MODE_3BUTTON_OVERLAY, navBarMode == NAV_BAR_MODE_3BUTTON, UserHandle.USER_CURRENT); overlayManager.setEnabled(NAV_BAR_MODE_2BUTTON_OVERLAY, navBarMode == NAV_BAR_MODE_2BUTTON, UserHandle.USER_CURRENT); overlayManager.setEnabled(NAV_BAR_MODE_GESTURAL_OVERLAY, navBarMode == NAV_BAR_MODE_GESTURAL, UserHandle.USER_CURRENT); } catch (RemoteException e) { throw new IllegalStateException( "Failed to set nav bar interaction mode overlay"); } } currentVersion = 177; } // vXXX: Add new settings above this point. if (currentVersion != newVersion) { Loading packages/overlays/Android.mk +4 −1 Original line number Diff line number Diff line Loading @@ -39,7 +39,10 @@ LOCAL_REQUIRED_MODULES := \ IconShapeRoundedRectOverlay \ IconShapeSquareOverlay \ IconShapeSquircleOverlay \ IconShapeTeardropOverlay IconShapeTeardropOverlay \ NavigationBarMode3ButtonOverlay \ NavigationBarMode2ButtonOverlay \ NavigationBarModeGesturalOverlay include $(BUILD_PHONY_PACKAGE) include $(CLEAR_VARS) Loading Loading
core/java/android/view/WindowManagerPolicyConstants.java +10 −0 Original line number Diff line number Diff line Loading @@ -54,6 +54,16 @@ public interface WindowManagerPolicyConstants { int NAV_BAR_RIGHT = 1 << 1; int NAV_BAR_BOTTOM = 1 << 2; // Navigation bar interaction modes int NAV_BAR_MODE_3BUTTON = 0; int NAV_BAR_MODE_2BUTTON = 1; int NAV_BAR_MODE_GESTURAL = 2; // Associated overlays for each nav bar mode String NAV_BAR_MODE_3BUTTON_OVERLAY = "com.android.internal.systemui.navbar.threebutton"; String NAV_BAR_MODE_2BUTTON_OVERLAY = "com.android.internal.systemui.navbar.twobutton"; String NAV_BAR_MODE_GESTURAL_OVERLAY = "com.android.internal.systemui.navbar.gestural"; /** * Broadcast sent when a user activity is detected. */ Loading
core/res/res/values/config.xml +6 −0 Original line number Diff line number Diff line Loading @@ -3222,6 +3222,12 @@ --> <integer name="config_navBarOpacityMode">0</integer> <!-- Controls the navigation bar interaction mode: 0: 3 button mode (back, home, overview buttons) 1: 2 button mode (back, home buttons + swipe up for overview) 2: gestures only for back, home and overview --> <integer name="config_navBarInteractionMode">0</integer> <!-- Default insets [LEFT/RIGHTxTOP/BOTTOM] from the screen edge for picture-in-picture windows. These values are in DPs and will be converted to pixel sizes internally. --> <string translatable="false" name="config_defaultPictureInPictureScreenEdgeInsets">16x16</string> Loading
core/res/res/values/symbols.xml +1 −0 Original line number Diff line number Diff line Loading @@ -2832,6 +2832,7 @@ <java-symbol type="string" name="config_packagedKeyboardName" /> <java-symbol type="bool" name="config_forceWindowDrawsStatusBarBackground" /> <java-symbol type="integer" name="config_navBarOpacityMode" /> <java-symbol type="integer" name="config_navBarInteractionMode" /> <java-symbol type="color" name="system_bar_background_semi_transparent" /> <!-- EditText suggestion popup. --> Loading
packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java +60 −1 Original line number Diff line number Diff line Loading @@ -19,6 +19,12 @@ package com.android.providers.settings; import static android.os.Process.ROOT_UID; import static android.os.Process.SHELL_UID; import static android.os.Process.SYSTEM_UID; import static android.view.WindowManagerPolicyConstants.NAV_BAR_MODE_2BUTTON; import static android.view.WindowManagerPolicyConstants.NAV_BAR_MODE_2BUTTON_OVERLAY; import static android.view.WindowManagerPolicyConstants.NAV_BAR_MODE_3BUTTON; import static android.view.WindowManagerPolicyConstants.NAV_BAR_MODE_3BUTTON_OVERLAY; import static android.view.WindowManagerPolicyConstants.NAV_BAR_MODE_GESTURAL; import static android.view.WindowManagerPolicyConstants.NAV_BAR_MODE_GESTURAL_OVERLAY; import android.Manifest; import android.annotation.NonNull; Loading @@ -33,6 +39,8 @@ import android.content.ContentValues; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.content.om.IOverlayManager; import android.content.om.OverlayInfo; import android.content.pm.ApplicationInfo; import android.content.pm.IPackageManager; import android.content.pm.PackageInfo; Loading Loading @@ -3235,7 +3243,7 @@ public class SettingsProvider extends ContentProvider { } private final class UpgradeController { private static final int SETTINGS_VERSION = 176; private static final int SETTINGS_VERSION = 177; private final int mUserId; Loading Loading @@ -4311,6 +4319,57 @@ public class SettingsProvider extends ContentProvider { currentVersion = 176; } if (currentVersion == 176) { // Version 176: Migrate the existing swipe up setting into the resource overlay // for the navigation bar interaction mode. final IOverlayManager overlayManager = IOverlayManager.Stub.asInterface( ServiceManager.getService(Context.OVERLAY_SERVICE)); int navBarMode = -1; // Migrate the swipe up setting only if it is set final SettingsState secureSettings = getSecureSettingsLocked(userId); final Setting swipeUpSetting = secureSettings.getSettingLocked( Secure.SWIPE_UP_TO_SWITCH_APPS_ENABLED); if (swipeUpSetting != null && !swipeUpSetting.isNull()) { navBarMode = swipeUpSetting.getValue().equals("1") ? NAV_BAR_MODE_2BUTTON : NAV_BAR_MODE_3BUTTON; } // Temporary: Only for migration for dogfooders, to be removed try { final OverlayInfo info = overlayManager.getOverlayInfo( "com.android.internal.experiment.navbar.type.inset", UserHandle.USER_CURRENT); if (info != null && info.isEnabled()) { navBarMode = NAV_BAR_MODE_GESTURAL; } } catch (RemoteException e) { // Ingore, fall through } if (navBarMode != -1) { try { overlayManager.setEnabled(NAV_BAR_MODE_3BUTTON_OVERLAY, navBarMode == NAV_BAR_MODE_3BUTTON, UserHandle.USER_CURRENT); overlayManager.setEnabled(NAV_BAR_MODE_2BUTTON_OVERLAY, navBarMode == NAV_BAR_MODE_2BUTTON, UserHandle.USER_CURRENT); overlayManager.setEnabled(NAV_BAR_MODE_GESTURAL_OVERLAY, navBarMode == NAV_BAR_MODE_GESTURAL, UserHandle.USER_CURRENT); } catch (RemoteException e) { throw new IllegalStateException( "Failed to set nav bar interaction mode overlay"); } } currentVersion = 177; } // vXXX: Add new settings above this point. if (currentVersion != newVersion) { Loading
packages/overlays/Android.mk +4 −1 Original line number Diff line number Diff line Loading @@ -39,7 +39,10 @@ LOCAL_REQUIRED_MODULES := \ IconShapeRoundedRectOverlay \ IconShapeSquareOverlay \ IconShapeSquircleOverlay \ IconShapeTeardropOverlay IconShapeTeardropOverlay \ NavigationBarMode3ButtonOverlay \ NavigationBarMode2ButtonOverlay \ NavigationBarModeGesturalOverlay include $(BUILD_PHONY_PACKAGE) include $(CLEAR_VARS) Loading