From 3d5d3b30e377102a9a14b76bad3a9cd965bec858 Mon Sep 17 00:00:00 2001 From: Winson Chung Date: Wed, 24 Apr 2019 16:52:47 -0700 Subject: [PATCH] Only migrate 2-button setting if set - We have only shipped configurations with: default=3 button + setting to opt in default=2 button + no setting to opt out So to prevent migrating in the case where a user has restored from a device (1) to a device (2) where the setting may be false (but previously showed 2 button nav), we only migrate the nav bar mode to the 2 button overlay whenever the setting is set. This means that the user will fallback to the device default nav bar mode which corresponds to the previous default modes for each device. - Also remove temporary nav bar mode migration for dogfood users Bug: 128548249 Test: Migrate from P to Q with swipe up setting set to false Change-Id: I7218eeb13fec50b2fe3e89f75ef0d2d4ab67aff1 --- .../providers/settings/SettingsProvider.java | 53 +++---------------- 1 file changed, 8 insertions(+), 45 deletions(-) diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java index cd97ce88f500a..29cb6f35d03d2 100644 --- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java +++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java @@ -20,12 +20,7 @@ import static android.os.Process.INVALID_UID; 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; @@ -41,7 +36,6 @@ 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; @@ -4321,50 +4315,19 @@ public class SettingsProvider extends ContentProvider { if (currentVersion == 176) { // Version 176: Migrate the existing swipe up setting into the resource overlay - // for the navigation bar interaction mode. + // for the navigation bar interaction mode. We do so only if the + // setting is set. - 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( "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) { - String overlayPackage = ""; + if (swipeUpSetting != null && !swipeUpSetting.isNull() + && swipeUpSetting.getValue().equals("1")) { + final IOverlayManager overlayManager = IOverlayManager.Stub.asInterface( + ServiceManager.getService(Context.OVERLAY_SERVICE)); try { - switch (navBarMode) { - case NAV_BAR_MODE_3BUTTON: - overlayPackage = NAV_BAR_MODE_3BUTTON_OVERLAY; - break; - case NAV_BAR_MODE_2BUTTON: - overlayPackage = NAV_BAR_MODE_2BUTTON_OVERLAY; - break; - case NAV_BAR_MODE_GESTURAL: - overlayPackage = NAV_BAR_MODE_GESTURAL_OVERLAY; - break; - } - overlayManager.setEnabledExclusiveInCategory(overlayPackage, - UserHandle.USER_CURRENT); + overlayManager.setEnabledExclusiveInCategory( + NAV_BAR_MODE_2BUTTON_OVERLAY, UserHandle.USER_CURRENT); } catch (RemoteException e) { throw new IllegalStateException( "Failed to set nav bar interaction mode overlay");