Migrates to the new component name for A11yMenu in SettingsProvider.
Bug: 261252772
Test: Enable Menu-in-AAS on device, with shortcuts enabled;
Ensure device's SettingsProvider database version is
smaller than SETTINGS_VERSION;
'adb sync' the new SettingsProvider and reboot;
Observe that all A11yMenu settings are migrated;
Change-Id: Ia8abb81694569d9701c8c02bf61676d35035020c
This commit is contained in:
@@ -33,6 +33,7 @@ import static android.view.WindowManagerPolicyConstants.NAV_BAR_MODE_GESTURAL;
|
||||
import static android.view.WindowManagerPolicyConstants.NAV_BAR_MODE_GESTURAL_OVERLAY;
|
||||
|
||||
import static com.android.internal.accessibility.AccessibilityShortcutController.MAGNIFICATION_CONTROLLER_NAME;
|
||||
import static com.android.internal.accessibility.util.AccessibilityUtils.ACCESSIBILITY_MENU_IN_SYSTEM;
|
||||
import static com.android.providers.settings.SettingsState.FALLBACK_FILE_SUFFIX;
|
||||
|
||||
import android.Manifest;
|
||||
@@ -107,6 +108,7 @@ import android.util.SparseArray;
|
||||
import android.util.SparseBooleanArray;
|
||||
import android.util.proto.ProtoOutputStream;
|
||||
|
||||
import com.android.internal.accessibility.util.AccessibilityUtils;
|
||||
import com.android.internal.annotations.GuardedBy;
|
||||
import com.android.internal.content.PackageMonitor;
|
||||
import com.android.internal.os.BackgroundThread;
|
||||
@@ -3712,7 +3714,7 @@ public class SettingsProvider extends ContentProvider {
|
||||
}
|
||||
|
||||
private final class UpgradeController {
|
||||
private static final int SETTINGS_VERSION = 213;
|
||||
private static final int SETTINGS_VERSION = 214;
|
||||
|
||||
private final int mUserId;
|
||||
|
||||
@@ -5646,6 +5648,27 @@ public class SettingsProvider extends ContentProvider {
|
||||
currentVersion = 213;
|
||||
}
|
||||
|
||||
if (currentVersion == 213) {
|
||||
final ComponentName accessibilityMenuToMigrate =
|
||||
AccessibilityUtils.getAccessibilityMenuComponentToMigrate(
|
||||
getContext().getPackageManager(), userId);
|
||||
if (accessibilityMenuToMigrate != null) {
|
||||
final SettingsState secureSettings = getSecureSettingsLocked(userId);
|
||||
final String toRemove = accessibilityMenuToMigrate.flattenToString();
|
||||
final String toAdd = ACCESSIBILITY_MENU_IN_SYSTEM.flattenToString();
|
||||
// Migrate the accessibility shortcuts and enabled state.
|
||||
migrateColonDelimitedStringSettingLocked(secureSettings,
|
||||
Secure.ACCESSIBILITY_BUTTON_TARGETS, toRemove, toAdd);
|
||||
migrateColonDelimitedStringSettingLocked(secureSettings,
|
||||
Secure.ACCESSIBILITY_BUTTON_TARGET_COMPONENT, toRemove, toAdd);
|
||||
migrateColonDelimitedStringSettingLocked(secureSettings,
|
||||
Secure.ACCESSIBILITY_SHORTCUT_TARGET_SERVICE, toRemove, toAdd);
|
||||
migrateColonDelimitedStringSettingLocked(secureSettings,
|
||||
Secure.ENABLED_ACCESSIBILITY_SERVICES, toRemove, toAdd);
|
||||
}
|
||||
currentVersion = 214;
|
||||
}
|
||||
|
||||
// vXXX: Add new settings above this point.
|
||||
|
||||
if (currentVersion != newVersion) {
|
||||
@@ -5867,6 +5890,22 @@ public class SettingsProvider extends ContentProvider {
|
||||
return items;
|
||||
}
|
||||
|
||||
@GuardedBy("mLock")
|
||||
private void migrateColonDelimitedStringSettingLocked(SettingsState settingsState,
|
||||
String setting, String toRemove, String toAdd) {
|
||||
final Set<String> componentNames = transformColonDelimitedStringToSet(
|
||||
settingsState.getSettingLocked(setting).getValue());
|
||||
if (componentNames != null && componentNames.contains(toRemove)) {
|
||||
componentNames.remove(toRemove);
|
||||
componentNames.add(toAdd);
|
||||
settingsState.insertSettingLocked(
|
||||
setting,
|
||||
TextUtils.join(":", componentNames),
|
||||
null /* tag */, false /* makeDefault */,
|
||||
SettingsState.SYSTEM_PACKAGE_NAME);
|
||||
}
|
||||
}
|
||||
|
||||
private boolean isAccessibilityButtonInNavigationBarOn(SettingsState secureSettings) {
|
||||
return hasValueInA11yButtonTargets(secureSettings) && !isGestureNavigateEnabled();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user