diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java index fecb7f15a021b..dd3942e084cd2 100644 --- a/core/java/android/provider/Settings.java +++ b/core/java/android/provider/Settings.java @@ -4192,73 +4192,6 @@ public final class Settings { * the setting value. See an example above. */ - /** - * Settings to backup. This is here so that it's in the same place as the settings - * keys and easy to update. - * - * NOTE: Settings are backed up and restored in the order they appear - * in this array. If you have one setting depending on another, - * make sure that they are ordered appropriately. - * - * @hide - */ - @UnsupportedAppUsage - public static final String[] SETTINGS_TO_BACKUP = { - STAY_ON_WHILE_PLUGGED_IN, // moved to global - WIFI_USE_STATIC_IP, - WIFI_STATIC_IP, - WIFI_STATIC_GATEWAY, - WIFI_STATIC_NETMASK, - WIFI_STATIC_DNS1, - WIFI_STATIC_DNS2, - BLUETOOTH_DISCOVERABILITY, - BLUETOOTH_DISCOVERABILITY_TIMEOUT, - FONT_SCALE, - DIM_SCREEN, - SCREEN_OFF_TIMEOUT, - SCREEN_BRIGHTNESS_MODE, - SCREEN_AUTO_BRIGHTNESS_ADJ, - SCREEN_BRIGHTNESS_FOR_VR, - ADAPTIVE_SLEEP, - VIBRATE_INPUT_DEVICES, - MODE_RINGER_STREAMS_AFFECTED, - TEXT_AUTO_REPLACE, - TEXT_AUTO_CAPS, - TEXT_AUTO_PUNCTUATE, - TEXT_SHOW_PASSWORD, - AUTO_TIME, // moved to global - AUTO_TIME_ZONE, // moved to global - TIME_12_24, - DATE_FORMAT, - DTMF_TONE_WHEN_DIALING, - DTMF_TONE_TYPE_WHEN_DIALING, - HEARING_AID, - TTY_MODE, - MASTER_MONO, - MASTER_BALANCE, - SOUND_EFFECTS_ENABLED, - HAPTIC_FEEDBACK_ENABLED, - POWER_SOUNDS_ENABLED, // moved to global - DOCK_SOUNDS_ENABLED, // moved to global - LOCKSCREEN_SOUNDS_ENABLED, - SHOW_WEB_SUGGESTIONS, - SIP_CALL_OPTIONS, - SIP_RECEIVE_CALLS, - POINTER_SPEED, - VIBRATE_WHEN_RINGING, - RINGTONE, - LOCK_TO_APP_ENABLED, - NOTIFICATION_SOUND, - ACCELEROMETER_ROTATION, - SHOW_BATTERY_PERCENT, - NOTIFICATION_VIBRATION_INTENSITY, - RING_VIBRATION_INTENSITY, - HAPTIC_FEEDBACK_INTENSITY, - DISPLAY_COLOR_MODE, - ALARM_ALERT, - NOTIFICATION_LIGHT_PULSE, - }; - /** * Keys we no longer back up under the current schema, but want to continue to * process when restoring historical backup datasets. @@ -8170,152 +8103,6 @@ public final class Settings { */ public static final String AWARE_LOCK_ENABLED = "aware_lock_enabled"; - /** - * This are the settings to be backed up. - * - * NOTE: Settings are backed up and restored in the order they appear - * in this array. If you have one setting depending on another, - * make sure that they are ordered appropriately. - * - * @hide - */ - @UnsupportedAppUsage - public static final String[] SETTINGS_TO_BACKUP = { - BUGREPORT_IN_POWER_MENU, // moved to global - ALLOW_MOCK_LOCATION, - USB_MASS_STORAGE_ENABLED, // moved to global - ACCESSIBILITY_DISPLAY_INVERSION_ENABLED, - ACCESSIBILITY_DISPLAY_DALTONIZER, - ACCESSIBILITY_DISPLAY_DALTONIZER_ENABLED, - ACCESSIBILITY_DISPLAY_MAGNIFICATION_ENABLED, - ACCESSIBILITY_DISPLAY_MAGNIFICATION_NAVBAR_ENABLED, - AUTOFILL_SERVICE, - ACCESSIBILITY_DISPLAY_MAGNIFICATION_SCALE, - ENABLED_ACCESSIBILITY_SERVICES, - ENABLED_VR_LISTENERS, - TOUCH_EXPLORATION_GRANTED_ACCESSIBILITY_SERVICES, - TOUCH_EXPLORATION_ENABLED, - ACCESSIBILITY_ENABLED, - ACCESSIBILITY_SHORTCUT_TARGET_SERVICE, - ACCESSIBILITY_BUTTON_TARGET_COMPONENT, - ACCESSIBILITY_SHORTCUT_DIALOG_SHOWN, - ACCESSIBILITY_SHORTCUT_ENABLED, - ACCESSIBILITY_SHORTCUT_ON_LOCK_SCREEN, - ACCESSIBILITY_HIGH_TEXT_CONTRAST_ENABLED, - ACCESSIBILITY_CAPTIONING_PRESET, - ACCESSIBILITY_CAPTIONING_ENABLED, - ACCESSIBILITY_CAPTIONING_LOCALE, - ACCESSIBILITY_CAPTIONING_BACKGROUND_COLOR, - ACCESSIBILITY_CAPTIONING_FOREGROUND_COLOR, - ACCESSIBILITY_CAPTIONING_EDGE_TYPE, - ACCESSIBILITY_CAPTIONING_EDGE_COLOR, - ACCESSIBILITY_CAPTIONING_TYPEFACE, - ACCESSIBILITY_CAPTIONING_FONT_SCALE, - ACCESSIBILITY_CAPTIONING_WINDOW_COLOR, - TTS_DEFAULT_RATE, - TTS_DEFAULT_PITCH, - TTS_DEFAULT_SYNTH, - TTS_ENABLED_PLUGINS, - TTS_DEFAULT_LOCALE, - SHOW_IME_WITH_HARD_KEYBOARD, - WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON, // moved to global - WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY, // moved to global - WIFI_NUM_OPEN_NETWORKS_KEPT, // moved to global - MOUNT_PLAY_NOTIFICATION_SND, - MOUNT_UMS_AUTOSTART, - MOUNT_UMS_PROMPT, - MOUNT_UMS_NOTIFY_ENABLED, - DOUBLE_TAP_TO_WAKE, - WAKE_GESTURE_ENABLED, - LONG_PRESS_TIMEOUT, - CAMERA_GESTURE_DISABLED, - ACCESSIBILITY_AUTOCLICK_ENABLED, - ACCESSIBILITY_AUTOCLICK_DELAY, - ACCESSIBILITY_LARGE_POINTER_ICON, - PREFERRED_TTY_MODE, - ENHANCED_VOICE_PRIVACY_ENABLED, - TTY_MODE_ENABLED, - RTT_CALLING_MODE, - INCALL_POWER_BUTTON_BEHAVIOR, - NIGHT_DISPLAY_CUSTOM_START_TIME, - NIGHT_DISPLAY_CUSTOM_END_TIME, - NIGHT_DISPLAY_COLOR_TEMPERATURE, - NIGHT_DISPLAY_AUTO_MODE, - DISPLAY_WHITE_BALANCE_ENABLED, - SYNC_PARENT_SOUNDS, - CAMERA_DOUBLE_TWIST_TO_FLIP_ENABLED, - CAMERA_DOUBLE_TAP_POWER_GESTURE_DISABLED, - SYSTEM_NAVIGATION_KEYS_ENABLED, - QS_TILES, - DOZE_ENABLED, - DOZE_ALWAYS_ON, - DOZE_PICK_UP_GESTURE, - DOZE_DOUBLE_TAP_GESTURE, - DOZE_TAP_SCREEN_GESTURE, - DOZE_WAKE_LOCK_SCREEN_GESTURE, - DOZE_WAKE_DISPLAY_GESTURE, - NFC_PAYMENT_DEFAULT_COMPONENT, - AUTOMATIC_STORAGE_MANAGER_DAYS_TO_RETAIN, - FACE_UNLOCK_KEYGUARD_ENABLED, - SHOW_MEDIA_WHEN_BYPASSING, - FACE_UNLOCK_DISMISSES_KEYGUARD, - FACE_UNLOCK_APP_ENABLED, - FACE_UNLOCK_ALWAYS_REQUIRE_CONFIRMATION, - ASSIST_GESTURE_ENABLED, - ASSIST_GESTURE_SILENCE_ALERTS_ENABLED, - ASSIST_GESTURE_WAKE_ENABLED, - VR_DISPLAY_MODE, - NOTIFICATION_BADGING, - NOTIFICATION_BUBBLES, - NOTIFICATION_DISMISS_RTL, - QS_AUTO_ADDED_TILES, - SCREENSAVER_ENABLED, - SCREENSAVER_COMPONENTS, - SCREENSAVER_ACTIVATE_ON_DOCK, - SCREENSAVER_ACTIVATE_ON_SLEEP, - LOCKDOWN_IN_POWER_MENU, - SHOW_FIRST_CRASH_DIALOG_DEV_OPTION, - VOLUME_HUSH_GESTURE, - MANUAL_RINGER_TOGGLE_COUNT, - HUSH_GESTURE_USED, - IN_CALL_NOTIFICATION_ENABLED, - LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS, - LOCK_SCREEN_CUSTOM_CLOCK_FACE, - LOCK_SCREEN_SHOW_NOTIFICATIONS, - LOCK_SCREEN_SHOW_SILENT_NOTIFICATIONS, - SHOW_NOTIFICATION_SNOOZE, - ZEN_DURATION, - SHOW_ZEN_UPGRADE_NOTIFICATION, - SHOW_ZEN_SETTINGS_SUGGESTION, - ZEN_SETTINGS_UPDATED, - ZEN_SETTINGS_SUGGESTION_VIEWED, - CHARGING_SOUNDS_ENABLED, - CHARGING_VIBRATION_ENABLED, - ACCESSIBILITY_NON_INTERACTIVE_UI_TIMEOUT_MS, - ACCESSIBILITY_INTERACTIVE_UI_TIMEOUT_MS, - NOTIFICATION_NEW_INTERRUPTION_MODEL, - TRUST_AGENTS_EXTEND_UNLOCK, - UI_NIGHT_MODE, - LOCK_SCREEN_WHEN_TRUST_LOST, - SKIP_GESTURE, - SKIP_DIRECTION, - SILENCE_GESTURE, - THEME_CUSTOMIZATION_OVERLAY_PACKAGES, - NAVIGATION_MODE, - AWARE_ENABLED, - SKIP_GESTURE_COUNT, - SKIP_TOUCH_COUNT, - SILENCE_ALARMS_GESTURE_COUNT, - SILENCE_CALL_GESTURE_COUNT, - SILENCE_TIMER_GESTURE_COUNT, - SILENCE_ALARMS_TOUCH_COUNT, - SILENCE_CALL_TOUCH_COUNT, - SILENCE_TIMER_TOUCH_COUNT, - DARK_MODE_DIALOG_SEEN, - GLOBAL_ACTIONS_PANEL_ENABLED, - AWARE_LOCK_ENABLED - }; - /** * The settings values which should only be restored if the target device is the * same as the source device @@ -12687,59 +12474,6 @@ public final class Settings { public static final String POWER_BUTTON_VERY_LONG_PRESS = "power_button_very_long_press"; - /** - * Settings to backup. This is here so that it's in the same place as the settings - * keys and easy to update. - * - * These keys may be mentioned in the SETTINGS_TO_BACKUP arrays in System - * and Secure as well. This is because those tables drive both backup and - * restore, and restore needs to properly whitelist keys that used to live - * in those namespaces. The keys will only actually be backed up / restored - * if they are also mentioned in this table (Global.SETTINGS_TO_BACKUP). - * - * NOTE: Settings are backed up and restored in the order they appear - * in this array. If you have one setting depending on another, - * make sure that they are ordered appropriately. - * - * NOTE: This table should only be used for settings which should be restored - * between different types of devices {@see #DEVICE_SPECIFIC_SETTINGS_TO_BACKUP} - * - * @hide - */ - public static final String[] SETTINGS_TO_BACKUP = { - APPLY_RAMPING_RINGER, - BUGREPORT_IN_POWER_MENU, - STAY_ON_WHILE_PLUGGED_IN, - APP_AUTO_RESTRICTION_ENABLED, - AUTO_TIME, - AUTO_TIME_ZONE, - POWER_SOUNDS_ENABLED, - DOCK_SOUNDS_ENABLED, - CHARGING_SOUNDS_ENABLED, - USB_MASS_STORAGE_ENABLED, - NETWORK_RECOMMENDATIONS_ENABLED, - WIFI_WAKEUP_ENABLED, - WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON, - USE_OPEN_WIFI_PACKAGE, - WIFI_WATCHDOG_POOR_NETWORK_TEST_ENABLED, - EMERGENCY_TONE, - CALL_AUTO_RETRY, - DOCK_AUDIO_MEDIA_ENABLED, - ENABLE_AUTOMATIC_SYSTEM_SERVER_HEAP_DUMPS, - ENCODED_SURROUND_OUTPUT, - ENCODED_SURROUND_OUTPUT_ENABLED_FORMATS, - LOW_POWER_MODE_TRIGGER_LEVEL, - LOW_POWER_MODE_STICKY_AUTO_DISABLE_ENABLED, - LOW_POWER_MODE_STICKY_AUTO_DISABLE_LEVEL, - BLUETOOTH_ON, - PRIVATE_DNS_MODE, - PRIVATE_DNS_SPECIFIER, - SOFT_AP_TIMEOUT_ENABLED, - ZEN_DURATION, - CHARGING_VIBRATION_ENABLED, - AWARE_ALLOWED, - }; - /** * Global settings that shouldn't be persisted. * diff --git a/packages/SettingsProvider/Android.bp b/packages/SettingsProvider/Android.bp index 49908a334623b..681b4940a3c32 100644 --- a/packages/SettingsProvider/Android.bp +++ b/packages/SettingsProvider/Android.bp @@ -24,6 +24,7 @@ android_test { // because this test is not an instrumentation test. (because the target runs in the system process.) srcs: [ "test/**/*.java", + "src/android/provider/settings/backup/*", "src/android/provider/settings/validators/*", "src/com/android/providers/settings/SettingsBackupAgent.java", "src/com/android/providers/settings/SettingsState.java", diff --git a/packages/SettingsProvider/src/android/provider/settings/backup/GlobalSettings.java b/packages/SettingsProvider/src/android/provider/settings/backup/GlobalSettings.java new file mode 100644 index 0000000000000..0c49f635f5bdd --- /dev/null +++ b/packages/SettingsProvider/src/android/provider/settings/backup/GlobalSettings.java @@ -0,0 +1,73 @@ +/* + * Copyright (C) 2019 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.provider.settings.backup; + +import android.provider.Settings; + +/** Information related to the backup of Global settings */ +public class GlobalSettings { + + /** + * These keys may be mentioned in the SETTINGS_TO_BACKUP arrays in SystemSettings + * and SecureSettings as well. This is because those tables drive both backup and + * restore, and restore needs to properly whitelist keys that used to live + * in those namespaces. + * + * NOTE: Settings are backed up and restored in the order they appear + * in this array. If you have one setting depending on another, + * make sure that they are ordered appropriately. + * + * NOTE: This table should only be used for settings which should be restored + * between different types of devices + * {@see #Settings.Secure.DEVICE_SPECIFIC_SETTINGS_TO_BACKUP} + * + * NOTE: All settings which are backed up should have a corresponding validator. + */ + public static final String[] SETTINGS_TO_BACKUP = { + Settings.Global.APPLY_RAMPING_RINGER, + Settings.Global.BUGREPORT_IN_POWER_MENU, + Settings.Global.STAY_ON_WHILE_PLUGGED_IN, + Settings.Global.APP_AUTO_RESTRICTION_ENABLED, + Settings.Global.AUTO_TIME, + Settings.Global.AUTO_TIME_ZONE, + Settings.Global.POWER_SOUNDS_ENABLED, + Settings.Global.DOCK_SOUNDS_ENABLED, + Settings.Global.CHARGING_SOUNDS_ENABLED, + Settings.Global.USB_MASS_STORAGE_ENABLED, + Settings.Global.NETWORK_RECOMMENDATIONS_ENABLED, + Settings.Global.WIFI_WAKEUP_ENABLED, + Settings.Global.WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON, + Settings.Global.USE_OPEN_WIFI_PACKAGE, + Settings.Global.WIFI_WATCHDOG_POOR_NETWORK_TEST_ENABLED, + Settings.Global.EMERGENCY_TONE, + Settings.Global.CALL_AUTO_RETRY, + Settings.Global.DOCK_AUDIO_MEDIA_ENABLED, + Settings.Global.ENABLE_AUTOMATIC_SYSTEM_SERVER_HEAP_DUMPS, + Settings.Global.ENCODED_SURROUND_OUTPUT, + Settings.Global.ENCODED_SURROUND_OUTPUT_ENABLED_FORMATS, + Settings.Global.LOW_POWER_MODE_TRIGGER_LEVEL, + Settings.Global.LOW_POWER_MODE_STICKY_AUTO_DISABLE_ENABLED, + Settings.Global.LOW_POWER_MODE_STICKY_AUTO_DISABLE_LEVEL, + Settings.Global.BLUETOOTH_ON, + Settings.Global.PRIVATE_DNS_MODE, + Settings.Global.PRIVATE_DNS_SPECIFIER, + Settings.Global.SOFT_AP_TIMEOUT_ENABLED, + Settings.Global.ZEN_DURATION, + Settings.Global.CHARGING_VIBRATION_ENABLED, + Settings.Global.AWARE_ALLOWED, + }; +} diff --git a/packages/SettingsProvider/src/android/provider/settings/backup/SecureSettings.java b/packages/SettingsProvider/src/android/provider/settings/backup/SecureSettings.java new file mode 100644 index 0000000000000..8c2e43170cc2a --- /dev/null +++ b/packages/SettingsProvider/src/android/provider/settings/backup/SecureSettings.java @@ -0,0 +1,166 @@ +/* + * Copyright (C) 2019 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.provider.settings.backup; + +import android.annotation.UnsupportedAppUsage; +import android.provider.Settings; + +/** Information relating to the Secure settings which should be backed up */ +public class SecureSettings { + + /** + * NOTE: Settings are backed up and restored in the order they appear + * in this array. If you have one setting depending on another, + * make sure that they are ordered appropriately. + */ + @UnsupportedAppUsage + public static final String[] SETTINGS_TO_BACKUP = { + Settings.Secure.BUGREPORT_IN_POWER_MENU, // moved to global + Settings.Secure.ALLOW_MOCK_LOCATION, + Settings.Secure.USB_MASS_STORAGE_ENABLED, // moved to global + Settings.Secure.ACCESSIBILITY_DISPLAY_INVERSION_ENABLED, + Settings.Secure.ACCESSIBILITY_DISPLAY_DALTONIZER, + Settings.Secure.ACCESSIBILITY_DISPLAY_DALTONIZER_ENABLED, + Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_ENABLED, + Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_NAVBAR_ENABLED, + Settings.Secure.AUTOFILL_SERVICE, + Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_SCALE, + Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES, + Settings.Secure.ENABLED_VR_LISTENERS, + Settings.Secure.TOUCH_EXPLORATION_GRANTED_ACCESSIBILITY_SERVICES, + Settings.Secure.TOUCH_EXPLORATION_ENABLED, + Settings.Secure.ACCESSIBILITY_ENABLED, + Settings.Secure.ACCESSIBILITY_SHORTCUT_TARGET_SERVICE, + Settings.Secure.ACCESSIBILITY_BUTTON_TARGET_COMPONENT, + Settings.Secure.ACCESSIBILITY_SHORTCUT_DIALOG_SHOWN, + Settings.Secure.ACCESSIBILITY_SHORTCUT_ENABLED, + Settings.Secure.ACCESSIBILITY_SHORTCUT_ON_LOCK_SCREEN, + Settings.Secure.ACCESSIBILITY_HIGH_TEXT_CONTRAST_ENABLED, + Settings.Secure.ACCESSIBILITY_CAPTIONING_PRESET, + Settings.Secure.ACCESSIBILITY_CAPTIONING_ENABLED, + Settings.Secure.ACCESSIBILITY_CAPTIONING_LOCALE, + Settings.Secure.ACCESSIBILITY_CAPTIONING_BACKGROUND_COLOR, + Settings.Secure.ACCESSIBILITY_CAPTIONING_FOREGROUND_COLOR, + Settings.Secure.ACCESSIBILITY_CAPTIONING_EDGE_TYPE, + Settings.Secure.ACCESSIBILITY_CAPTIONING_EDGE_COLOR, + Settings.Secure.ACCESSIBILITY_CAPTIONING_TYPEFACE, + Settings.Secure.ACCESSIBILITY_CAPTIONING_FONT_SCALE, + Settings.Secure.ACCESSIBILITY_CAPTIONING_WINDOW_COLOR, + Settings.Secure.TTS_DEFAULT_RATE, + Settings.Secure.TTS_DEFAULT_PITCH, + Settings.Secure.TTS_DEFAULT_SYNTH, + Settings.Secure.TTS_ENABLED_PLUGINS, + Settings.Secure.TTS_DEFAULT_LOCALE, + Settings.Secure.SHOW_IME_WITH_HARD_KEYBOARD, + Settings.Secure.WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON, // moved to global + Settings.Secure.WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY, // moved to global + Settings.Secure.WIFI_NUM_OPEN_NETWORKS_KEPT, // moved to global + Settings.Secure.MOUNT_PLAY_NOTIFICATION_SND, + Settings.Secure.MOUNT_UMS_AUTOSTART, + Settings.Secure.MOUNT_UMS_PROMPT, + Settings.Secure.MOUNT_UMS_NOTIFY_ENABLED, + Settings.Secure.DOUBLE_TAP_TO_WAKE, + Settings.Secure.WAKE_GESTURE_ENABLED, + Settings.Secure.LONG_PRESS_TIMEOUT, + Settings.Secure.CAMERA_GESTURE_DISABLED, + Settings.Secure.ACCESSIBILITY_AUTOCLICK_ENABLED, + Settings.Secure.ACCESSIBILITY_AUTOCLICK_DELAY, + Settings.Secure.ACCESSIBILITY_LARGE_POINTER_ICON, + Settings.Secure.PREFERRED_TTY_MODE, + Settings.Secure.ENHANCED_VOICE_PRIVACY_ENABLED, + Settings.Secure.TTY_MODE_ENABLED, + Settings.Secure.RTT_CALLING_MODE, + Settings.Secure.INCALL_POWER_BUTTON_BEHAVIOR, + Settings.Secure.NIGHT_DISPLAY_CUSTOM_START_TIME, + Settings.Secure.NIGHT_DISPLAY_CUSTOM_END_TIME, + Settings.Secure.NIGHT_DISPLAY_COLOR_TEMPERATURE, + Settings.Secure.NIGHT_DISPLAY_AUTO_MODE, + Settings.Secure.DISPLAY_WHITE_BALANCE_ENABLED, + Settings.Secure.SYNC_PARENT_SOUNDS, + Settings.Secure.CAMERA_DOUBLE_TWIST_TO_FLIP_ENABLED, + Settings.Secure.CAMERA_DOUBLE_TAP_POWER_GESTURE_DISABLED, + Settings.Secure.SYSTEM_NAVIGATION_KEYS_ENABLED, + Settings.Secure.QS_TILES, + Settings.Secure.DOZE_ENABLED, + Settings.Secure.DOZE_ALWAYS_ON, + Settings.Secure.DOZE_PICK_UP_GESTURE, + Settings.Secure.DOZE_DOUBLE_TAP_GESTURE, + Settings.Secure.DOZE_TAP_SCREEN_GESTURE, + Settings.Secure.DOZE_WAKE_LOCK_SCREEN_GESTURE, + Settings.Secure.DOZE_WAKE_DISPLAY_GESTURE, + Settings.Secure.NFC_PAYMENT_DEFAULT_COMPONENT, + Settings.Secure.AUTOMATIC_STORAGE_MANAGER_DAYS_TO_RETAIN, + Settings.Secure.FACE_UNLOCK_KEYGUARD_ENABLED, + Settings.Secure.SHOW_MEDIA_WHEN_BYPASSING, + Settings.Secure.FACE_UNLOCK_DISMISSES_KEYGUARD, + Settings.Secure.FACE_UNLOCK_APP_ENABLED, + Settings.Secure.FACE_UNLOCK_ALWAYS_REQUIRE_CONFIRMATION, + Settings.Secure.ASSIST_GESTURE_ENABLED, + Settings.Secure.ASSIST_GESTURE_SILENCE_ALERTS_ENABLED, + Settings.Secure.ASSIST_GESTURE_WAKE_ENABLED, + Settings.Secure.VR_DISPLAY_MODE, + Settings.Secure.NOTIFICATION_BADGING, + Settings.Secure.NOTIFICATION_BUBBLES, + Settings.Secure.NOTIFICATION_DISMISS_RTL, + Settings.Secure.QS_AUTO_ADDED_TILES, + Settings.Secure.SCREENSAVER_ENABLED, + Settings.Secure.SCREENSAVER_COMPONENTS, + Settings.Secure.SCREENSAVER_ACTIVATE_ON_DOCK, + Settings.Secure.SCREENSAVER_ACTIVATE_ON_SLEEP, + Settings.Secure.LOCKDOWN_IN_POWER_MENU, + Settings.Secure.SHOW_FIRST_CRASH_DIALOG_DEV_OPTION, + Settings.Secure.VOLUME_HUSH_GESTURE, + Settings.Secure.MANUAL_RINGER_TOGGLE_COUNT, + Settings.Secure.HUSH_GESTURE_USED, + Settings.Secure.IN_CALL_NOTIFICATION_ENABLED, + Settings.Secure.LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS, + Settings.Secure.LOCK_SCREEN_CUSTOM_CLOCK_FACE, + Settings.Secure.LOCK_SCREEN_SHOW_NOTIFICATIONS, + Settings.Secure.LOCK_SCREEN_SHOW_SILENT_NOTIFICATIONS, + Settings.Secure.SHOW_NOTIFICATION_SNOOZE, + Settings.Secure.ZEN_DURATION, + Settings.Secure.SHOW_ZEN_UPGRADE_NOTIFICATION, + Settings.Secure.SHOW_ZEN_SETTINGS_SUGGESTION, + Settings.Secure.ZEN_SETTINGS_UPDATED, + Settings.Secure.ZEN_SETTINGS_SUGGESTION_VIEWED, + Settings.Secure.CHARGING_SOUNDS_ENABLED, + Settings.Secure.CHARGING_VIBRATION_ENABLED, + Settings.Secure.ACCESSIBILITY_NON_INTERACTIVE_UI_TIMEOUT_MS, + Settings.Secure.ACCESSIBILITY_INTERACTIVE_UI_TIMEOUT_MS, + Settings.Secure.NOTIFICATION_NEW_INTERRUPTION_MODEL, + Settings.Secure.TRUST_AGENTS_EXTEND_UNLOCK, + Settings.Secure.UI_NIGHT_MODE, + Settings.Secure.LOCK_SCREEN_WHEN_TRUST_LOST, + Settings.Secure.SKIP_GESTURE, + Settings.Secure.SKIP_DIRECTION, + Settings.Secure.SILENCE_GESTURE, + Settings.Secure.THEME_CUSTOMIZATION_OVERLAY_PACKAGES, + Settings.Secure.NAVIGATION_MODE, + Settings.Secure.AWARE_ENABLED, + Settings.Secure.SKIP_GESTURE_COUNT, + Settings.Secure.SKIP_TOUCH_COUNT, + Settings.Secure.SILENCE_ALARMS_GESTURE_COUNT, + Settings.Secure.SILENCE_CALL_GESTURE_COUNT, + Settings.Secure.SILENCE_TIMER_GESTURE_COUNT, + Settings.Secure.SILENCE_ALARMS_TOUCH_COUNT, + Settings.Secure.SILENCE_CALL_TOUCH_COUNT, + Settings.Secure.SILENCE_TIMER_TOUCH_COUNT, + Settings.Secure.DARK_MODE_DIALOG_SEEN, + Settings.Secure.GLOBAL_ACTIONS_PANEL_ENABLED, + Settings.Secure.AWARE_LOCK_ENABLED + }; +} diff --git a/packages/SettingsProvider/src/android/provider/settings/backup/SystemSettings.java b/packages/SettingsProvider/src/android/provider/settings/backup/SystemSettings.java new file mode 100644 index 0000000000000..89b19de8dfcb9 --- /dev/null +++ b/packages/SettingsProvider/src/android/provider/settings/backup/SystemSettings.java @@ -0,0 +1,88 @@ +/* + * Copyright (C) 2019 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.provider.settings.backup; + +import android.annotation.UnsupportedAppUsage; +import android.provider.Settings; + +/** Information about the system settings to back up */ +public class SystemSettings { + + /** + * Settings to backup. + * + * NOTE: Settings are backed up and restored in the order they appear + * in this array. If you have one setting depending on another, + * make sure that they are ordered appropriately. + */ + @UnsupportedAppUsage + public static final String[] SETTINGS_TO_BACKUP = { + Settings.System.STAY_ON_WHILE_PLUGGED_IN, // moved to global + Settings.System.WIFI_USE_STATIC_IP, + Settings.System.WIFI_STATIC_IP, + Settings.System.WIFI_STATIC_GATEWAY, + Settings.System.WIFI_STATIC_NETMASK, + Settings.System.WIFI_STATIC_DNS1, + Settings.System.WIFI_STATIC_DNS2, + Settings.System.BLUETOOTH_DISCOVERABILITY, + Settings.System.BLUETOOTH_DISCOVERABILITY_TIMEOUT, + Settings.System.FONT_SCALE, + Settings.System.DIM_SCREEN, + Settings.System.SCREEN_OFF_TIMEOUT, + Settings.System.SCREEN_BRIGHTNESS_MODE, + Settings.System.SCREEN_AUTO_BRIGHTNESS_ADJ, + Settings.System.SCREEN_BRIGHTNESS_FOR_VR, + Settings.System.ADAPTIVE_SLEEP, + Settings.System.VIBRATE_INPUT_DEVICES, + Settings.System.MODE_RINGER_STREAMS_AFFECTED, + Settings.System.TEXT_AUTO_REPLACE, + Settings.System.TEXT_AUTO_CAPS, + Settings.System.TEXT_AUTO_PUNCTUATE, + Settings.System.TEXT_SHOW_PASSWORD, + Settings.System.AUTO_TIME, // moved to global + Settings.System.AUTO_TIME_ZONE, // moved to global + Settings.System.TIME_12_24, + Settings.System.DATE_FORMAT, + Settings.System.DTMF_TONE_WHEN_DIALING, + Settings.System.DTMF_TONE_TYPE_WHEN_DIALING, + Settings.System.HEARING_AID, + Settings.System.TTY_MODE, + Settings.System.MASTER_MONO, + Settings.System.MASTER_BALANCE, + Settings.System.SOUND_EFFECTS_ENABLED, + Settings.System.HAPTIC_FEEDBACK_ENABLED, + Settings.System.POWER_SOUNDS_ENABLED, // moved to global + Settings.System.DOCK_SOUNDS_ENABLED, // moved to global + Settings.System.LOCKSCREEN_SOUNDS_ENABLED, + Settings.System.SHOW_WEB_SUGGESTIONS, + Settings.System.SIP_CALL_OPTIONS, + Settings.System.SIP_RECEIVE_CALLS, + Settings.System.POINTER_SPEED, + Settings.System.VIBRATE_WHEN_RINGING, + Settings.System.RINGTONE, + Settings.System.LOCK_TO_APP_ENABLED, + Settings.System.NOTIFICATION_SOUND, + Settings.System.ACCELEROMETER_ROTATION, + Settings.System.SHOW_BATTERY_PERCENT, + Settings.System.NOTIFICATION_VIBRATION_INTENSITY, + Settings.System.RING_VIBRATION_INTENSITY, + Settings.System.HAPTIC_FEEDBACK_INTENSITY, + Settings.System.DISPLAY_COLOR_MODE, + Settings.System.ALARM_ALERT, + Settings.System.NOTIFICATION_LIGHT_PULSE, + }; +} diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsBackupAgent.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsBackupAgent.java index 8446ad16e49a4..f545fa65fb901 100644 --- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsBackupAgent.java +++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsBackupAgent.java @@ -34,6 +34,9 @@ import android.os.Build; import android.os.ParcelFileDescriptor; import android.os.UserHandle; import android.provider.Settings; +import android.provider.settings.backup.GlobalSettings; +import android.provider.settings.backup.SecureSettings; +import android.provider.settings.backup.SystemSettings; import android.provider.settings.validators.GlobalSettingsValidators; import android.provider.settings.validators.SecureSettingsValidators; import android.provider.settings.validators.SystemSettingsValidators; @@ -545,7 +548,7 @@ public class SettingsBackupAgent extends BackupAgentHelper { Cursor cursor = getContentResolver().query(Settings.System.CONTENT_URI, PROJECTION, null, null, null); try { - return extractRelevantValues(cursor, Settings.System.SETTINGS_TO_BACKUP); + return extractRelevantValues(cursor, SystemSettings.SETTINGS_TO_BACKUP); } finally { cursor.close(); } @@ -555,7 +558,7 @@ public class SettingsBackupAgent extends BackupAgentHelper { Cursor cursor = getContentResolver().query(Settings.Secure.CONTENT_URI, PROJECTION, null, null, null); try { - return extractRelevantValues(cursor, Settings.Secure.SETTINGS_TO_BACKUP); + return extractRelevantValues(cursor, SecureSettings.SETTINGS_TO_BACKUP); } finally { cursor.close(); } @@ -565,7 +568,7 @@ public class SettingsBackupAgent extends BackupAgentHelper { Cursor cursor = getContentResolver().query(Settings.Global.CONTENT_URI, PROJECTION, null, null, null); try { - return extractRelevantValues(cursor, Settings.Global.SETTINGS_TO_BACKUP); + return extractRelevantValues(cursor, GlobalSettings.SETTINGS_TO_BACKUP); } finally { cursor.close(); } @@ -636,16 +639,16 @@ public class SettingsBackupAgent extends BackupAgentHelper { final String[] whitelist; Map validators = null; if (contentUri.equals(Settings.Secure.CONTENT_URI)) { - whitelist = ArrayUtils.concatElements(String.class, Settings.Secure.SETTINGS_TO_BACKUP, + whitelist = ArrayUtils.concatElements(String.class, SecureSettings.SETTINGS_TO_BACKUP, Settings.Secure.LEGACY_RESTORE_SETTINGS, Settings.Secure.DEVICE_SPECIFIC_SETTINGS_TO_BACKUP); validators = SecureSettingsValidators.VALIDATORS; } else if (contentUri.equals(Settings.System.CONTENT_URI)) { - whitelist = ArrayUtils.concatElements(String.class, Settings.System.SETTINGS_TO_BACKUP, + whitelist = ArrayUtils.concatElements(String.class, SystemSettings.SETTINGS_TO_BACKUP, Settings.System.LEGACY_RESTORE_SETTINGS); validators = SystemSettingsValidators.VALIDATORS; } else if (contentUri.equals(Settings.Global.CONTENT_URI)) { - whitelist = ArrayUtils.concatElements(String.class, Settings.Global.SETTINGS_TO_BACKUP, + whitelist = ArrayUtils.concatElements(String.class, GlobalSettings.SETTINGS_TO_BACKUP, Settings.Global.LEGACY_RESTORE_SETTINGS); validators = GlobalSettingsValidators.VALIDATORS; } else { diff --git a/core/tests/coretests/src/android/provider/SettingsBackupTest.java b/packages/SettingsProvider/test/src/android/provider/SettingsBackupTest.java similarity index 98% rename from core/tests/coretests/src/android/provider/SettingsBackupTest.java rename to packages/SettingsProvider/test/src/android/provider/SettingsBackupTest.java index eef780ac2efa9..d7eb7e955d8cd 100644 --- a/core/tests/coretests/src/android/provider/SettingsBackupTest.java +++ b/packages/SettingsProvider/test/src/android/provider/SettingsBackupTest.java @@ -18,15 +18,16 @@ package android.provider; import static com.google.android.collect.Sets.newHashSet; -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.empty; -import static org.hamcrest.Matchers.is; +import static junit.framework.Assert.assertTrue; import static java.lang.reflect.Modifier.isFinal; import static java.lang.reflect.Modifier.isPublic; import static java.lang.reflect.Modifier.isStatic; import android.platform.test.annotations.Presubmit; +import android.provider.settings.backup.GlobalSettings; +import android.provider.settings.backup.SecureSettings; +import android.provider.settings.backup.SystemSettings; import androidx.test.filters.SmallTest; import androidx.test.runner.AndroidJUnit4; @@ -727,45 +728,43 @@ public class SettingsBackupTest { public void systemSettingsBackedUpOrBlacklisted() { checkSettingsBackedUpOrBlacklisted( getCandidateSettings(Settings.System.class), - newHashSet(Settings.System.SETTINGS_TO_BACKUP), + newHashSet(SystemSettings.SETTINGS_TO_BACKUP), BACKUP_BLACKLISTED_SYSTEM_SETTINGS); } @Test public void globalSettingsBackedUpOrBlacklisted() { checkSettingsBackedUpOrBlacklisted( - getCandidateSettings(Settings.Global.class), - newHashSet(Settings.Global.SETTINGS_TO_BACKUP), - BACKUP_BLACKLISTED_GLOBAL_SETTINGS); + getCandidateSettings(Settings.Global.class), + newHashSet(GlobalSettings.SETTINGS_TO_BACKUP), + BACKUP_BLACKLISTED_GLOBAL_SETTINGS); } @Test public void secureSettingsBackedUpOrBlacklisted() { HashSet keys = new HashSet(); - Collections.addAll(keys, Settings.Secure.SETTINGS_TO_BACKUP); + Collections.addAll(keys, SecureSettings.SETTINGS_TO_BACKUP); Collections.addAll(keys, Settings.Secure.DEVICE_SPECIFIC_SETTINGS_TO_BACKUP); checkSettingsBackedUpOrBlacklisted( getCandidateSettings(Settings.Secure.class), keys, - BACKUP_BLACKLISTED_SECURE_SETTINGS); + BACKUP_BLACKLISTED_SECURE_SETTINGS); } private static void checkSettingsBackedUpOrBlacklisted( Set settings, Set settingsToBackup, Set blacklist) { Set settingsNotBackedUp = difference(settings, settingsToBackup); Set settingsNotBackedUpOrBlacklisted = difference(settingsNotBackedUp, blacklist); - assertThat( + assertTrue( "Settings not backed up or blacklisted", - settingsNotBackedUpOrBlacklisted, - is(empty())); + settingsNotBackedUpOrBlacklisted.isEmpty()); - assertThat( - "blacklisted settings backed up", - intersect(settingsToBackup, blacklist), - is(empty())); + assertTrue( + "blacklisted settings backed up", intersect(settingsToBackup, blacklist).isEmpty()); } - private static Set getCandidateSettings(Class clazz) { + private static Set getCandidateSettings( + Class clazz) { HashSet result = new HashSet(); for (Field field : clazz.getDeclaredFields()) { if (looksLikeValidSetting(field)) { diff --git a/packages/SettingsProvider/test/src/android/provider/settings/validators/SettingsValidatorsTest.java b/packages/SettingsProvider/test/src/android/provider/settings/validators/SettingsValidatorsTest.java index 6b18d48bf92d4..a3b08359860c1 100644 --- a/packages/SettingsProvider/test/src/android/provider/settings/validators/SettingsValidatorsTest.java +++ b/packages/SettingsProvider/test/src/android/provider/settings/validators/SettingsValidatorsTest.java @@ -24,6 +24,9 @@ import static org.junit.Assert.fail; import android.platform.test.annotations.Presubmit; import android.provider.Settings; +import android.provider.settings.backup.GlobalSettings; +import android.provider.settings.backup.SecureSettings; +import android.provider.settings.backup.SystemSettings; import androidx.test.filters.SmallTest; import androidx.test.runner.AndroidJUnit4; @@ -248,7 +251,7 @@ public class SettingsValidatorsTest { @Test public void ensureAllBackedUpSystemSettingsHaveValidators() { - String offenders = getOffenders(concat(Settings.System.SETTINGS_TO_BACKUP, + String offenders = getOffenders(concat(SystemSettings.SETTINGS_TO_BACKUP, Settings.System.LEGACY_RESTORE_SETTINGS), SystemSettingsValidators.VALIDATORS); failIfOffendersPresent(offenders, "Settings.System"); @@ -295,7 +298,7 @@ public class SettingsValidatorsTest { @Test public void ensureAllBackedUpGlobalSettingsHaveValidators() { - String offenders = getOffenders(concat(Settings.Global.SETTINGS_TO_BACKUP, + String offenders = getOffenders(concat(GlobalSettings.SETTINGS_TO_BACKUP, Settings.Global.LEGACY_RESTORE_SETTINGS), GlobalSettingsValidators.VALIDATORS); failIfOffendersPresent(offenders, "Settings.Global"); @@ -303,7 +306,7 @@ public class SettingsValidatorsTest { @Test public void ensureAllBackedUpSecureSettingsHaveValidators() { - String offenders = getOffenders(concat(Settings.Secure.SETTINGS_TO_BACKUP, + String offenders = getOffenders(concat(SecureSettings.SETTINGS_TO_BACKUP, Settings.Secure.LEGACY_RESTORE_SETTINGS), SecureSettingsValidators.VALIDATORS); failIfOffendersPresent(offenders, "Settings.Secure");