diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java index 2a8cf21f1c8ec..3bbdf36550015 100644 --- a/core/java/android/provider/Settings.java +++ b/core/java/android/provider/Settings.java @@ -911,17 +911,20 @@ public final class Settings { } private static final HashSet MOVED_TO_GLOBAL; + private static final HashSet MOVED_TO_SECURE_THEN_GLOBAL; static { MOVED_TO_GLOBAL = new HashSet(); + MOVED_TO_SECURE_THEN_GLOBAL = new HashSet(); + // these were originally in system but migrated to secure in the past, // so are duplicated in the Secure.* namespace - MOVED_TO_GLOBAL.add(Global.ADB_ENABLED); - MOVED_TO_GLOBAL.add(Global.BLUETOOTH_ON); - MOVED_TO_GLOBAL.add(Global.DATA_ROAMING); - MOVED_TO_GLOBAL.add(Global.DEVICE_PROVISIONED); - MOVED_TO_GLOBAL.add(Global.INSTALL_NON_MARKET_APPS); - MOVED_TO_GLOBAL.add(Global.USB_MASS_STORAGE_ENABLED); - MOVED_TO_GLOBAL.add(Global.HTTP_PROXY); + MOVED_TO_SECURE_THEN_GLOBAL.add(Global.ADB_ENABLED); + MOVED_TO_SECURE_THEN_GLOBAL.add(Global.BLUETOOTH_ON); + MOVED_TO_SECURE_THEN_GLOBAL.add(Global.DATA_ROAMING); + MOVED_TO_SECURE_THEN_GLOBAL.add(Global.DEVICE_PROVISIONED); + MOVED_TO_SECURE_THEN_GLOBAL.add(Global.INSTALL_NON_MARKET_APPS); + MOVED_TO_SECURE_THEN_GLOBAL.add(Global.USB_MASS_STORAGE_ENABLED); + MOVED_TO_SECURE_THEN_GLOBAL.add(Global.HTTP_PROXY); // these are moving directly from system to global MOVED_TO_GLOBAL.add(Settings.Global.AIRPLANE_MODE_ON); @@ -954,6 +957,17 @@ public final class Settings { MOVED_TO_GLOBAL.add(Settings.Global.ALWAYS_FINISH_ACTIVITIES); } + /** @hide */ + public static void getMovedKeys(HashSet outKeySet) { + outKeySet.addAll(MOVED_TO_GLOBAL); + outKeySet.addAll(MOVED_TO_SECURE_THEN_GLOBAL); + } + + /** @hide */ + public static void getNonLegacyMovedKeys(HashSet outKeySet) { + outKeySet.addAll(MOVED_TO_GLOBAL); + } + /** * Look up a name in the database. * @param resolver to access the database with @@ -972,7 +986,7 @@ public final class Settings { + " to android.provider.Settings.Secure, returning read-only value."); return Secure.getStringForUser(resolver, name, userHandle); } - if (MOVED_TO_GLOBAL.contains(name)) { + if (MOVED_TO_GLOBAL.contains(name) || MOVED_TO_SECURE_THEN_GLOBAL.contains(name)) { Log.w(TAG, "Setting " + name + " has moved from android.provider.Settings.System" + " to android.provider.Settings.Global, returning read-only value."); return Global.getStringForUser(resolver, name, userHandle); @@ -999,7 +1013,7 @@ public final class Settings { + " to android.provider.Settings.Secure, value is unchanged."); return false; } - if (MOVED_TO_GLOBAL.contains(name)) { + if (MOVED_TO_GLOBAL.contains(name) || MOVED_TO_SECURE_THEN_GLOBAL.contains(name)) { Log.w(TAG, "Setting " + name + " has moved from android.provider.Settings.System" + " to android.provider.Settings.Global, value is unchanged."); return false; @@ -1019,7 +1033,7 @@ public final class Settings { + " to android.provider.Settings.Secure, returning Secure URI."); return Secure.getUriFor(Secure.CONTENT_URI, name); } - if (MOVED_TO_GLOBAL.contains(name)) { + if (MOVED_TO_GLOBAL.contains(name) || MOVED_TO_SECURE_THEN_GLOBAL.contains(name)) { Log.w(TAG, "Setting " + name + " has moved from android.provider.Settings.System" + " to android.provider.Settings.Global, returning read-only global URI."); return Global.getUriFor(Global.CONTENT_URI, name); @@ -2257,7 +2271,7 @@ public final class Settings { * @hide */ public static final String[] SETTINGS_TO_BACKUP = { - STAY_ON_WHILE_PLUGGED_IN, + STAY_ON_WHILE_PLUGGED_IN, // moved to global WIFI_USE_STATIC_IP, WIFI_STATIC_IP, WIFI_STATIC_GATEWAY, @@ -2272,7 +2286,7 @@ public final class Settings { SCREEN_BRIGHTNESS_MODE, SCREEN_AUTO_BRIGHTNESS_ADJ, VIBRATE_INPUT_DEVICES, - MODE_RINGER, + MODE_RINGER, // moved to global MODE_RINGER_STREAMS_AFFECTED, MUTE_STREAMS_AFFECTED, VOLUME_VOICE, @@ -2293,20 +2307,18 @@ public final class Settings { TEXT_AUTO_CAPS, TEXT_AUTO_PUNCTUATE, TEXT_SHOW_PASSWORD, - AUTO_TIME, - AUTO_TIME_ZONE, + 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, - Global.EMERGENCY_TONE, - Global.CALL_AUTO_RETRY, HEARING_AID, TTY_MODE, SOUND_EFFECTS_ENABLED, HAPTIC_FEEDBACK_ENABLED, - POWER_SOUNDS_ENABLED, - DOCK_SOUNDS_ENABLED, + POWER_SOUNDS_ENABLED, // moved to global + DOCK_SOUNDS_ENABLED, // moved to global LOCKSCREEN_SOUNDS_ENABLED, SHOW_WEB_SUGGESTIONS, NOTIFICATION_LIGHT_PULSE, @@ -2702,6 +2714,11 @@ public final class Settings { MOVED_TO_GLOBAL.add(Settings.Global.PREFERRED_CDMA_SUBSCRIPTION); } + /** @hide */ + public static void getMovedKeys(HashSet outKeySet) { + outKeySet.addAll(MOVED_TO_GLOBAL); + } + /** * Look up a name in the database. * @param resolver to access the database with @@ -3993,12 +4010,11 @@ public final class Settings { * @hide */ public static final String[] SETTINGS_TO_BACKUP = { - ADB_ENABLED, BUGREPORT_IN_POWER_MENU, ALLOW_MOCK_LOCATION, PARENTAL_CONTROL_ENABLED, PARENTAL_CONTROL_REDIRECT_URL, - USB_MASS_STORAGE_ENABLED, + USB_MASS_STORAGE_ENABLED, // moved to global ACCESSIBILITY_DISPLAY_MAGNIFICATION_ENABLED, ACCESSIBILITY_DISPLAY_MAGNIFICATION_SCALE, ACCESSIBILITY_DISPLAY_MAGNIFICATION_AUTO_UPDATE, @@ -4017,9 +4033,9 @@ public final class Settings { TTS_DEFAULT_COUNTRY, TTS_ENABLED_PLUGINS, TTS_DEFAULT_LOCALE, - WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON, - WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY, - WIFI_NUM_OPEN_NETWORKS_KEPT, + 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, @@ -5251,6 +5267,38 @@ public final class Settings { public static final String ALWAYS_FINISH_ACTIVITIES = "always_finish_activities"; + /** + * 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. + * + * @hide + */ + public static final String[] SETTINGS_TO_BACKUP = { + STAY_ON_WHILE_PLUGGED_IN, + MODE_RINGER, + AUTO_TIME, + AUTO_TIME_ZONE, + POWER_SOUNDS_ENABLED, + DOCK_SOUNDS_ENABLED, + USB_MASS_STORAGE_ENABLED, + ENABLE_ACCESSIBILITY_GLOBAL_GESTURE_ENABLED, + WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON, + WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY, + WIFI_NUM_OPEN_NETWORKS_KEPT, + EMERGENCY_TONE, + CALL_AUTO_RETRY, + }; + // Populated lazily, guarded by class object: private static NameValueCache sNameValueCache = new NameValueCache( SYS_PROP_SETTING_VERSION, diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsBackupAgent.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsBackupAgent.java index 1096540839874..ba7501b896cd7 100644 --- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsBackupAgent.java +++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsBackupAgent.java @@ -46,7 +46,6 @@ import java.io.FileWriter; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; -import java.io.Reader; import java.io.Writer; import java.util.ArrayList; import java.util.HashMap; @@ -64,25 +63,35 @@ public class SettingsBackupAgent extends BackupAgentHelper { private static final String KEY_SYSTEM = "system"; private static final String KEY_SECURE = "secure"; + private static final String KEY_GLOBAL = "global"; private static final String KEY_LOCALE = "locale"; - //Version 2 adds STATE_WIFI_CONFIG - private static final int STATE_VERSION_1 = 1; - private static final int STATE_VERSION_1_SIZE = 4; - // Versioning of the state file. Increment this version // number any time the set of state items is altered. - private static final int STATE_VERSION = 2; + private static final int STATE_VERSION = 3; + // Slots in the checksum array. Never insert new items in the middle + // of this array; new slots must be appended. private static final int STATE_SYSTEM = 0; private static final int STATE_SECURE = 1; private static final int STATE_LOCALE = 2; private static final int STATE_WIFI_SUPPLICANT = 3; private static final int STATE_WIFI_CONFIG = 4; - private static final int STATE_SIZE = 5; // The number of state items + private static final int STATE_GLOBAL = 5; + + private static final int STATE_SIZE = 6; // The current number of state items + + // Number of entries in the checksum array at various version numbers + private static final int STATE_SIZES[] = { + 0, + 4, // version 1 + 5, // version 2 added STATE_WIFI_CONFIG + STATE_SIZE // version 3 added STATE_GLOBAL + }; // Versioning of the 'full backup' format - private static final int FULL_BACKUP_VERSION = 1; + private static final int FULL_BACKUP_VERSION = 2; + private static final int FULL_BACKUP_ADDED_GLOBAL = 2; // added the "global" entry private static final int INTEGER_BYTE_COUNT = Integer.SIZE / Byte.SIZE; @@ -257,6 +266,7 @@ public class SettingsBackupAgent extends BackupAgentHelper { byte[] systemSettingsData = getSystemSettings(); byte[] secureSettingsData = getSecureSettings(); + byte[] globalSettingsData = getGlobalSettings(); byte[] locale = mSettingsHelper.getLocaleData(); byte[] wifiSupplicantData = getWifiSupplicant(FILE_WIFI_SUPPLICANT); byte[] wifiConfigData = getFileData(mWifiConfigFile); @@ -267,6 +277,8 @@ public class SettingsBackupAgent extends BackupAgentHelper { writeIfChanged(stateChecksums[STATE_SYSTEM], KEY_SYSTEM, systemSettingsData, data); stateChecksums[STATE_SECURE] = writeIfChanged(stateChecksums[STATE_SECURE], KEY_SECURE, secureSettingsData, data); + stateChecksums[STATE_GLOBAL] = + writeIfChanged(stateChecksums[STATE_GLOBAL], KEY_GLOBAL, secureSettingsData, data); stateChecksums[STATE_LOCALE] = writeIfChanged(stateChecksums[STATE_LOCALE], KEY_LOCALE, locale, data); stateChecksums[STATE_WIFI_SUPPLICANT] = @@ -283,14 +295,18 @@ public class SettingsBackupAgent extends BackupAgentHelper { public void onRestore(BackupDataInput data, int appVersionCode, ParcelFileDescriptor newState) throws IOException { + HashSet movedToGlobal = new HashSet(); + Settings.System.getMovedKeys(movedToGlobal); + Settings.Secure.getMovedKeys(movedToGlobal); + while (data.readNextHeader()) { final String key = data.getKey(); final int size = data.getDataSize(); if (KEY_SYSTEM.equals(key)) { - restoreSettings(data, Settings.System.CONTENT_URI); + restoreSettings(data, Settings.System.CONTENT_URI, movedToGlobal); mSettingsHelper.applyAudioSettings(); } else if (KEY_SECURE.equals(key)) { - restoreSettings(data, Settings.Secure.CONTENT_URI); + restoreSettings(data, Settings.Secure.CONTENT_URI, movedToGlobal); } else if (KEY_WIFI_SUPPLICANT.equals(key)) { int retainedWifiState = enableWifi(false); restoreWifiSupplicant(FILE_WIFI_SUPPLICANT, data); @@ -317,6 +333,7 @@ public class SettingsBackupAgent extends BackupAgentHelper { public void onFullBackup(FullBackupDataOutput data) throws IOException { byte[] systemSettingsData = getSystemSettings(); byte[] secureSettingsData = getSecureSettings(); + byte[] globalSettingsData = getGlobalSettings(); byte[] locale = mSettingsHelper.getLocaleData(); byte[] wifiSupplicantData = getWifiSupplicant(FILE_WIFI_SUPPLICANT); byte[] wifiConfigData = getFileData(mWifiConfigFile); @@ -339,6 +356,9 @@ public class SettingsBackupAgent extends BackupAgentHelper { if (DEBUG_BACKUP) Log.d(TAG, secureSettingsData.length + " bytes of secure settings data"); out.writeInt(secureSettingsData.length); out.write(secureSettingsData); + if (DEBUG_BACKUP) Log.d(TAG, globalSettingsData.length + " bytes of global settings data"); + out.writeInt(globalSettingsData.length); + out.write(globalSettingsData); if (DEBUG_BACKUP) Log.d(TAG, locale.length + " bytes of locale data"); out.writeInt(locale.length); out.write(locale); @@ -371,20 +391,35 @@ public class SettingsBackupAgent extends BackupAgentHelper { int version = in.readInt(); if (DEBUG_BACKUP) Log.d(TAG, "Flattened data version " + version); - if (version == FULL_BACKUP_VERSION) { + if (version <= FULL_BACKUP_VERSION) { + // Generate the moved-to-global lookup table + HashSet movedToGlobal = new HashSet(); + Settings.System.getMovedKeys(movedToGlobal); + Settings.Secure.getMovedKeys(movedToGlobal); + // system settings data first int nBytes = in.readInt(); if (DEBUG_BACKUP) Log.d(TAG, nBytes + " bytes of settings data"); byte[] buffer = new byte[nBytes]; in.readFully(buffer, 0, nBytes); - restoreSettings(buffer, nBytes, Settings.System.CONTENT_URI); + restoreSettings(buffer, nBytes, Settings.System.CONTENT_URI, movedToGlobal); // secure settings nBytes = in.readInt(); if (DEBUG_BACKUP) Log.d(TAG, nBytes + " bytes of secure settings data"); if (nBytes > buffer.length) buffer = new byte[nBytes]; in.readFully(buffer, 0, nBytes); - restoreSettings(buffer, nBytes, Settings.Secure.CONTENT_URI); + restoreSettings(buffer, nBytes, Settings.Secure.CONTENT_URI, movedToGlobal); + + // Global only if sufficiently new + if (version >= FULL_BACKUP_ADDED_GLOBAL) { + nBytes = in.readInt(); + if (DEBUG_BACKUP) Log.d(TAG, nBytes + " bytes of global settings data"); + if (nBytes > buffer.length) buffer = new byte[nBytes]; + in.readFully(buffer, 0, nBytes); + movedToGlobal.clear(); // no redirection; this *is* the global namespace + restoreSettings(buffer, nBytes, Settings.Global.CONTENT_URI, movedToGlobal); + } // locale nBytes = in.readInt(); @@ -430,14 +465,8 @@ public class SettingsBackupAgent extends BackupAgentHelper { try { int stateVersion = dataInput.readInt(); - if (stateVersion == STATE_VERSION_1) { - for (int i = 0; i < STATE_VERSION_1_SIZE; i++) { - stateChecksums[i] = dataInput.readLong(); - } - } else if (stateVersion == STATE_VERSION) { - for (int i = 0; i < STATE_SIZE; i++) { - stateChecksums[i] = dataInput.readLong(); - } + for (int i = 0; i < STATE_SIZES[stateVersion]; i++) { + stateChecksums[i] = dataInput.readLong(); } } catch (EOFException eof) { // With the default 0 checksum we'll wind up forcing a backup of @@ -496,7 +525,18 @@ public class SettingsBackupAgent extends BackupAgentHelper { } } - private void restoreSettings(BackupDataInput data, Uri contentUri) { + private byte[] getGlobalSettings() { + Cursor cursor = getContentResolver().query(Settings.Global.CONTENT_URI, PROJECTION, null, + null, null); + try { + return extractRelevantValues(cursor, Settings.Global.SETTINGS_TO_BACKUP); + } finally { + cursor.close(); + } + } + + private void restoreSettings(BackupDataInput data, Uri contentUri, + HashSet movedToGlobal) { byte[] settings = new byte[data.getDataSize()]; try { data.readEntityData(settings, 0, settings.length); @@ -504,20 +544,23 @@ public class SettingsBackupAgent extends BackupAgentHelper { Log.e(TAG, "Couldn't read entity data"); return; } - restoreSettings(settings, settings.length, contentUri); + restoreSettings(settings, settings.length, contentUri, movedToGlobal); } - private void restoreSettings(byte[] settings, int bytes, Uri contentUri) { + private void restoreSettings(byte[] settings, int bytes, Uri contentUri, + HashSet movedToGlobal) { if (DEBUG) { Log.i(TAG, "restoreSettings: " + contentUri); } - // Figure out the white list. + // Figure out the white list and redirects to the global table. String[] whitelist = null; if (contentUri.equals(Settings.Secure.CONTENT_URI)) { whitelist = Settings.Secure.SETTINGS_TO_BACKUP; } else if (contentUri.equals(Settings.System.CONTENT_URI)) { whitelist = Settings.System.SETTINGS_TO_BACKUP; + } else if (contentUri.equals(Settings.Global.CONTENT_URI)) { + whitelist = Settings.Global.SETTINGS_TO_BACKUP; } else { throw new IllegalArgumentException("Unknown URI: " + contentUri); } @@ -556,15 +599,20 @@ public class SettingsBackupAgent extends BackupAgentHelper { continue; } + final Uri destination = (movedToGlobal.contains(key)) + ? Settings.Global.CONTENT_URI + : contentUri; + + // The helper doesn't care what namespace the keys are in if (settingsHelper.restoreValue(key, value)) { contentValues.clear(); contentValues.put(Settings.NameValueTable.NAME, key); contentValues.put(Settings.NameValueTable.VALUE, value); - getContentResolver().insert(contentUri, contentValues); + getContentResolver().insert(destination, contentValues); } if (DEBUG || true) { - Log.d(TAG, "Restored setting: " + key + "=" + value); + Log.d(TAG, "Restored setting: " + destination + " : "+ key + "=" + value); } } } diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java index cc6656d0ad2b0..ad35f7ff12cec 100644 --- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java +++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java @@ -110,158 +110,12 @@ public class SettingsProvider extends ContentProvider { // table, shared across all users // These must match Settings.Secure.MOVED_TO_GLOBAL sSecureGlobalKeys = new HashSet(); - sSecureGlobalKeys.add(Settings.Global.ADB_ENABLED); - sSecureGlobalKeys.add(Settings.Global.ASSISTED_GPS_ENABLED); - sSecureGlobalKeys.add(Settings.Global.BLUETOOTH_ON); - sSecureGlobalKeys.add(Settings.Global.CDMA_CELL_BROADCAST_SMS); - sSecureGlobalKeys.add(Settings.Global.CDMA_ROAMING_MODE); - sSecureGlobalKeys.add(Settings.Global.CDMA_SUBSCRIPTION_MODE); - sSecureGlobalKeys.add(Settings.Global.DATA_ACTIVITY_TIMEOUT_MOBILE); - sSecureGlobalKeys.add(Settings.Global.DATA_ACTIVITY_TIMEOUT_WIFI); - sSecureGlobalKeys.add(Settings.Global.DATA_ROAMING); - sSecureGlobalKeys.add(Settings.Global.DEVELOPMENT_SETTINGS_ENABLED); - sSecureGlobalKeys.add(Settings.Global.DEVICE_PROVISIONED); - sSecureGlobalKeys.add(Settings.Global.DISPLAY_DENSITY_FORCED); - sSecureGlobalKeys.add(Settings.Global.DISPLAY_SIZE_FORCED); - sSecureGlobalKeys.add(Settings.Global.DOWNLOAD_MAX_BYTES_OVER_MOBILE); - sSecureGlobalKeys.add(Settings.Global.DOWNLOAD_RECOMMENDED_MAX_BYTES_OVER_MOBILE); - sSecureGlobalKeys.add(Settings.Global.INSTALL_NON_MARKET_APPS); - sSecureGlobalKeys.add(Settings.Global.MOBILE_DATA); - sSecureGlobalKeys.add(Settings.Global.NETSTATS_DEV_BUCKET_DURATION); - sSecureGlobalKeys.add(Settings.Global.NETSTATS_DEV_DELETE_AGE); - sSecureGlobalKeys.add(Settings.Global.NETSTATS_DEV_PERSIST_BYTES); - sSecureGlobalKeys.add(Settings.Global.NETSTATS_DEV_ROTATE_AGE); - sSecureGlobalKeys.add(Settings.Global.NETSTATS_ENABLED); - sSecureGlobalKeys.add(Settings.Global.NETSTATS_GLOBAL_ALERT_BYTES); - sSecureGlobalKeys.add(Settings.Global.NETSTATS_POLL_INTERVAL); - sSecureGlobalKeys.add(Settings.Global.NETSTATS_REPORT_XT_OVER_DEV); - sSecureGlobalKeys.add(Settings.Global.NETSTATS_SAMPLE_ENABLED); - sSecureGlobalKeys.add(Settings.Global.NETSTATS_TIME_CACHE_MAX_AGE); - sSecureGlobalKeys.add(Settings.Global.NETSTATS_UID_BUCKET_DURATION); - sSecureGlobalKeys.add(Settings.Global.NETSTATS_UID_DELETE_AGE); - sSecureGlobalKeys.add(Settings.Global.NETSTATS_UID_PERSIST_BYTES); - sSecureGlobalKeys.add(Settings.Global.NETSTATS_UID_ROTATE_AGE); - sSecureGlobalKeys.add(Settings.Global.NETSTATS_UID_TAG_BUCKET_DURATION); - sSecureGlobalKeys.add(Settings.Global.NETSTATS_UID_TAG_DELETE_AGE); - sSecureGlobalKeys.add(Settings.Global.NETSTATS_UID_TAG_PERSIST_BYTES); - sSecureGlobalKeys.add(Settings.Global.NETSTATS_UID_TAG_ROTATE_AGE); - sSecureGlobalKeys.add(Settings.Global.NETWORK_PREFERENCE); - sSecureGlobalKeys.add(Settings.Global.NITZ_UPDATE_DIFF); - sSecureGlobalKeys.add(Settings.Global.NITZ_UPDATE_SPACING); - sSecureGlobalKeys.add(Settings.Global.NTP_SERVER); - sSecureGlobalKeys.add(Settings.Global.NTP_TIMEOUT); - sSecureGlobalKeys.add(Settings.Global.PDP_WATCHDOG_ERROR_POLL_COUNT); - sSecureGlobalKeys.add(Settings.Global.PDP_WATCHDOG_LONG_POLL_INTERVAL_MS); - sSecureGlobalKeys.add(Settings.Global.PDP_WATCHDOG_MAX_PDP_RESET_FAIL_COUNT); - sSecureGlobalKeys.add(Settings.Global.PDP_WATCHDOG_POLL_INTERVAL_MS); - sSecureGlobalKeys.add(Settings.Global.PDP_WATCHDOG_TRIGGER_PACKET_COUNT); - sSecureGlobalKeys.add(Settings.Global.SAMPLING_PROFILER_MS); - sSecureGlobalKeys.add(Settings.Global.SETUP_PREPAID_DATA_SERVICE_URL); - sSecureGlobalKeys.add(Settings.Global.SETUP_PREPAID_DETECTION_REDIR_HOST); - sSecureGlobalKeys.add(Settings.Global.SETUP_PREPAID_DETECTION_TARGET_URL); - sSecureGlobalKeys.add(Settings.Global.TETHER_DUN_APN); - sSecureGlobalKeys.add(Settings.Global.TETHER_DUN_REQUIRED); - sSecureGlobalKeys.add(Settings.Global.TETHER_SUPPORTED); - sSecureGlobalKeys.add(Settings.Global.THROTTLE_HELP_URI); - sSecureGlobalKeys.add(Settings.Global.THROTTLE_MAX_NTP_CACHE_AGE_SEC); - sSecureGlobalKeys.add(Settings.Global.THROTTLE_NOTIFICATION_TYPE); - sSecureGlobalKeys.add(Settings.Global.THROTTLE_POLLING_SEC); - sSecureGlobalKeys.add(Settings.Global.THROTTLE_RESET_DAY); - sSecureGlobalKeys.add(Settings.Global.THROTTLE_THRESHOLD_BYTES); - sSecureGlobalKeys.add(Settings.Global.THROTTLE_VALUE_KBITSPS); - sSecureGlobalKeys.add(Settings.Global.USB_MASS_STORAGE_ENABLED); - sSecureGlobalKeys.add(Settings.Global.USE_GOOGLE_MAIL); - sSecureGlobalKeys.add(Settings.Global.WEB_AUTOFILL_QUERY_URL); - sSecureGlobalKeys.add(Settings.Global.WIFI_COUNTRY_CODE); - sSecureGlobalKeys.add(Settings.Global.WIFI_FRAMEWORK_SCAN_INTERVAL_MS); - sSecureGlobalKeys.add(Settings.Global.WIFI_FREQUENCY_BAND); - sSecureGlobalKeys.add(Settings.Global.WIFI_IDLE_MS); - sSecureGlobalKeys.add(Settings.Global.WIFI_MAX_DHCP_RETRY_COUNT); - sSecureGlobalKeys.add(Settings.Global.WIFI_MOBILE_DATA_TRANSITION_WAKELOCK_TIMEOUT_MS); - sSecureGlobalKeys.add(Settings.Global.WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON); - sSecureGlobalKeys.add(Settings.Global.WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY); - sSecureGlobalKeys.add(Settings.Global.WIFI_NUM_OPEN_NETWORKS_KEPT); - sSecureGlobalKeys.add(Settings.Global.WIFI_ON); - sSecureGlobalKeys.add(Settings.Global.WIFI_P2P_DEVICE_NAME); - sSecureGlobalKeys.add(Settings.Global.WIFI_SAVED_STATE); - sSecureGlobalKeys.add(Settings.Global.WIFI_SUPPLICANT_SCAN_INTERVAL_MS); - sSecureGlobalKeys.add(Settings.Global.WIFI_SUSPEND_OPTIMIZATIONS_ENABLED); - sSecureGlobalKeys.add(Settings.Global.WIFI_WATCHDOG_ON); - sSecureGlobalKeys.add(Settings.Global.WIFI_WATCHDOG_POOR_NETWORK_TEST_ENABLED); - sSecureGlobalKeys.add(Settings.Global.WIMAX_NETWORKS_AVAILABLE_NOTIFICATION_ON); - sSecureGlobalKeys.add(Settings.Global.PACKAGE_VERIFIER_ENABLE); - sSecureGlobalKeys.add(Settings.Global.PACKAGE_VERIFIER_TIMEOUT); - sSecureGlobalKeys.add(Settings.Global.PACKAGE_VERIFIER_DEFAULT_RESPONSE); - sSecureGlobalKeys.add(Settings.Global.DATA_STALL_ALARM_NON_AGGRESSIVE_DELAY_IN_MS); - sSecureGlobalKeys.add(Settings.Global.DATA_STALL_ALARM_AGGRESSIVE_DELAY_IN_MS); - sSecureGlobalKeys.add(Settings.Global.GPRS_REGISTER_CHECK_PERIOD_MS); - sSecureGlobalKeys.add(Settings.Global.WTF_IS_FATAL); - sSecureGlobalKeys.add(Settings.Global.BATTERY_DISCHARGE_DURATION_THRESHOLD); - sSecureGlobalKeys.add(Settings.Global.BATTERY_DISCHARGE_THRESHOLD); - sSecureGlobalKeys.add(Settings.Global.SEND_ACTION_APP_ERROR); - sSecureGlobalKeys.add(Settings.Global.DROPBOX_AGE_SECONDS); - sSecureGlobalKeys.add(Settings.Global.DROPBOX_MAX_FILES); - sSecureGlobalKeys.add(Settings.Global.DROPBOX_QUOTA_KB); - sSecureGlobalKeys.add(Settings.Global.DROPBOX_QUOTA_PERCENT); - sSecureGlobalKeys.add(Settings.Global.DROPBOX_RESERVE_PERCENT); - sSecureGlobalKeys.add(Settings.Global.DROPBOX_TAG_PREFIX); - sSecureGlobalKeys.add(Settings.Global.ERROR_LOGCAT_PREFIX); - sSecureGlobalKeys.add(Settings.Global.SYS_FREE_STORAGE_LOG_INTERVAL); - sSecureGlobalKeys.add(Settings.Global.DISK_FREE_CHANGE_REPORTING_THRESHOLD); - sSecureGlobalKeys.add(Settings.Global.SYS_STORAGE_THRESHOLD_PERCENTAGE); - sSecureGlobalKeys.add(Settings.Global.SYS_STORAGE_THRESHOLD_MAX_BYTES); - sSecureGlobalKeys.add(Settings.Global.SYS_STORAGE_FULL_THRESHOLD_BYTES); - sSecureGlobalKeys.add(Settings.Global.SYNC_MAX_RETRY_DELAY_IN_SECONDS); - sSecureGlobalKeys.add(Settings.Global.CONNECTIVITY_CHANGE_DELAY); - sSecureGlobalKeys.add(Settings.Global.CAPTIVE_PORTAL_DETECTION_ENABLED); - sSecureGlobalKeys.add(Settings.Global.CAPTIVE_PORTAL_SERVER); - sSecureGlobalKeys.add(Settings.Global.NSD_ON); - sSecureGlobalKeys.add(Settings.Global.SET_INSTALL_LOCATION); - sSecureGlobalKeys.add(Settings.Global.DEFAULT_INSTALL_LOCATION); - sSecureGlobalKeys.add(Settings.Global.INET_CONDITION_DEBOUNCE_UP_DELAY); - sSecureGlobalKeys.add(Settings.Global.INET_CONDITION_DEBOUNCE_DOWN_DELAY); - sSecureGlobalKeys.add(Settings.Global.READ_EXTERNAL_STORAGE_ENFORCED_DEFAULT); - sSecureGlobalKeys.add(Settings.Global.HTTP_PROXY); - sSecureGlobalKeys.add(Settings.Global.GLOBAL_HTTP_PROXY_HOST); - sSecureGlobalKeys.add(Settings.Global.GLOBAL_HTTP_PROXY_PORT); - sSecureGlobalKeys.add(Settings.Global.GLOBAL_HTTP_PROXY_EXCLUSION_LIST); - sSecureGlobalKeys.add(Settings.Global.SET_GLOBAL_HTTP_PROXY); - sSecureGlobalKeys.add(Settings.Global.DEFAULT_DNS_SERVER); - sSecureGlobalKeys.add(Settings.Global.PREFERRED_NETWORK_MODE); - sSecureGlobalKeys.add(Settings.Global.PREFERRED_CDMA_SUBSCRIPTION); + Settings.Secure.getMovedKeys(sSecureGlobalKeys); // Keys from the 'system' table now moved to 'global' // These must match Settings.System.MOVED_TO_GLOBAL sSystemGlobalKeys = new HashSet(); - - sSystemGlobalKeys.add(Settings.Global.AIRPLANE_MODE_ON); - sSystemGlobalKeys.add(Settings.Global.AIRPLANE_MODE_RADIOS); - sSystemGlobalKeys.add(Settings.Global.AIRPLANE_MODE_TOGGLEABLE_RADIOS); - sSystemGlobalKeys.add(Settings.Global.AUTO_TIME); - sSystemGlobalKeys.add(Settings.Global.AUTO_TIME_ZONE); - sSystemGlobalKeys.add(Settings.Global.CAR_DOCK_SOUND); - sSystemGlobalKeys.add(Settings.Global.CAR_UNDOCK_SOUND); - sSystemGlobalKeys.add(Settings.Global.DESK_DOCK_SOUND); - sSystemGlobalKeys.add(Settings.Global.DESK_UNDOCK_SOUND); - sSystemGlobalKeys.add(Settings.Global.DOCK_SOUNDS_ENABLED); - sSystemGlobalKeys.add(Settings.Global.LOCK_SOUND); - sSystemGlobalKeys.add(Settings.Global.UNLOCK_SOUND); - sSystemGlobalKeys.add(Settings.Global.LOW_BATTERY_SOUND); - sSystemGlobalKeys.add(Settings.Global.POWER_SOUNDS_ENABLED); - sSystemGlobalKeys.add(Settings.Global.STAY_ON_WHILE_PLUGGED_IN); - sSystemGlobalKeys.add(Settings.Global.WIFI_SLEEP_POLICY); - sSystemGlobalKeys.add(Settings.Global.MODE_RINGER); - sSystemGlobalKeys.add(Settings.Global.WINDOW_ANIMATION_SCALE); - sSystemGlobalKeys.add(Settings.Global.TRANSITION_ANIMATION_SCALE); - sSystemGlobalKeys.add(Settings.Global.ANIMATOR_DURATION_SCALE); - sSystemGlobalKeys.add(Settings.Global.FANCY_IME_ANIMATIONS); - sSystemGlobalKeys.add(Settings.Global.COMPATIBILITY_MODE); - sSystemGlobalKeys.add(Settings.Global.EMERGENCY_TONE); - sSystemGlobalKeys.add(Settings.Global.CALL_AUTO_RETRY); - sSystemGlobalKeys.add(Settings.Global.DEBUG_APP); - sSystemGlobalKeys.add(Settings.Global.WAIT_FOR_DEBUGGER); - sSystemGlobalKeys.add(Settings.Global.SHOW_PROCESSES); - sSystemGlobalKeys.add(Settings.Global.ALWAYS_FINISH_ACTIVITIES); + Settings.System.getNonLegacyMovedKeys(sSystemGlobalKeys); } private boolean settingMovedToGlobal(final String name) {