OSDN Git Service

Some logging for settings reset
authorAmith Yamasani <yamasani@google.com>
Tue, 21 Mar 2017 22:23:47 +0000 (15:23 -0700)
committerAmith Yamasani <yamasani@google.com>
Fri, 24 Mar 2017 00:43:39 +0000 (17:43 -0700)
If settings db gets reset because it disappeared/got corrupted,
then write the Build.ID of the OTA, so we know when it was reset.

Bug: 36365648
Test: manual
Change-Id: I499a7f65f07a61c0e4651dbd046fc5b16408c09d

core/java/android/provider/Settings.java
core/tests/coretests/src/android/provider/SettingsBackupTest.java
packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java

index 146d2d3..8352874 100755 (executable)
@@ -9741,6 +9741,16 @@ public final class Settings {
         public static final String DATABASE_DOWNGRADE_REASON = "database_downgrade_reason";
 
         /**
+         * The build id of when the settings database was first created (or re-created due it
+         * being missing).
+         *
+         * Type: string
+         *
+         * @hide
+         */
+        public static final String DATABASE_CREATION_BUILDID = "database_creation_buildid";
+
+        /**
          * Flag to toggle journal mode WAL on or off for the contacts database. WAL is enabled by
          * default. Set to 0 to disable.
          *
index 0cfdaf5..3e33dd8 100644 (file)
@@ -141,6 +141,7 @@ public class SettingsBackupTest {
                     Settings.Global.CONTACTS_DATABASE_WAL_ENABLED,
                     Settings.Global.DATA_ACTIVITY_TIMEOUT_MOBILE,
                     Settings.Global.DATA_ACTIVITY_TIMEOUT_WIFI,
+                    Settings.Global.DATABASE_CREATION_BUILDID,
                     Settings.Global.DATABASE_DOWNGRADE_REASON,
                     Settings.Global.DATA_ROAMING,
                     Settings.Global.DATA_STALL_ALARM_AGGRESSIVE_DELAY_IN_MS,
index 1f1c189..1a752f9 100644 (file)
@@ -2037,6 +2037,8 @@ public class SettingsProvider extends ContentProvider {
 
         private final BackupManager mBackupManager;
 
+        private String mSettingsCreationBuildId;
+
         public SettingsRegistry() {
             mHandler = new MyHandler(getContext().getMainLooper());
             mGenerationRegistry = new GenerationRegistry(mLock);
@@ -2502,6 +2504,8 @@ public class SettingsProvider extends ContentProvider {
                     return;
                 }
 
+                mSettingsCreationBuildId = Build.ID;
+
                 final long identity = Binder.clearCallingIdentity();
                 try {
                     List<UserInfo> users = mUserManager.getUsers(true);
@@ -2570,6 +2574,12 @@ public class SettingsProvider extends ContentProvider {
                 ensureSettingsStateLocked(globalKey);
                 SettingsState globalSettings = mSettingsStates.get(globalKey);
                 migrateLegacySettingsLocked(globalSettings, database, TABLE_GLOBAL);
+                // If this was just created
+                if (mSettingsCreationBuildId != null) {
+                    globalSettings.insertSettingLocked(Settings.Global.DATABASE_CREATION_BUILDID,
+                            mSettingsCreationBuildId, null, true,
+                            SettingsState.SYSTEM_PACKAGE_NAME);
+                }
                 globalSettings.persistSyncLocked();
             }