Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f10daf64 authored by Ben Murdoch's avatar Ben Murdoch
Browse files

Fix a bug in the database upgrade process, and refactor slightly.

During upgrade from v9 -> v10 the database version was not
being updated.

Also remove conditionals based on what are effectively hardcoded
truth values to simplfiy the logic greatly.

Bug: 5560410
Change-Id: I31a01aa35a109a951d4e4c6d5b884bb666668b28
parent bd783684
Loading
Loading
Loading
Loading
+57 −49
Original line number Diff line number Diff line
@@ -327,15 +327,26 @@ public class WebViewDatabase {
    }

    private static void upgradeDatabase() {
        upgradeDatabaseToV10();
        // Add future database upgrade functions here, one version at a
        // time.
    }

    private static void upgradeDatabaseToV10() {
        int oldVersion = mDatabase.getVersion();

        if (oldVersion >= 10) {
            // Nothing to do.
            return;
        }

        if (oldVersion != 0) {
            Log.i(LOGTAG, "Upgrading database from version "
                    + oldVersion + " to "
                    + DATABASE_VERSION + ", which will destroy old data");
        }
        boolean justPasswords = 8 == oldVersion && 9 == DATABASE_VERSION;
        boolean justAuth = 9 == oldVersion && 10 == DATABASE_VERSION;
        if (justAuth) {

        if (9 == oldVersion) {
            mDatabase.execSQL("DROP TABLE IF EXISTS "
                    + mTableNames[TABLE_HTTPAUTH_ID]);
            mDatabase.execSQL("CREATE TABLE " + mTableNames[TABLE_HTTPAUTH_ID]
@@ -345,10 +356,10 @@ public class WebViewDatabase {
                    + HTTPAUTH_PASSWORD_COL + " TEXT," + " UNIQUE ("
                    + HTTPAUTH_HOST_COL + ", " + HTTPAUTH_REALM_COL
                    + ") ON CONFLICT REPLACE);");
            mDatabase.setVersion(DATABASE_VERSION);
            return;
        }

        if (!justPasswords) {
        mDatabase.execSQL("DROP TABLE IF EXISTS "
                + mTableNames[TABLE_COOKIES_ID]);
        mDatabase.execSQL("DROP TABLE IF EXISTS cache");
@@ -358,13 +369,9 @@ public class WebViewDatabase {
                + mTableNames[TABLE_FORMDATA_ID]);
        mDatabase.execSQL("DROP TABLE IF EXISTS "
                + mTableNames[TABLE_HTTPAUTH_ID]);
        }
        mDatabase.execSQL("DROP TABLE IF EXISTS "
                + mTableNames[TABLE_PASSWORD_ID]);

        mDatabase.setVersion(DATABASE_VERSION);

        if (!justPasswords) {
        // cookies
        mDatabase.execSQL("CREATE TABLE " + mTableNames[TABLE_COOKIES_ID]
                + " (" + ID_COL + " INTEGER PRIMARY KEY, "
@@ -396,7 +403,6 @@ public class WebViewDatabase {
                + HTTPAUTH_PASSWORD_COL + " TEXT," + " UNIQUE ("
                + HTTPAUTH_HOST_COL + ", " + HTTPAUTH_REALM_COL
                + ") ON CONFLICT REPLACE);");
        }
        // passwords
        mDatabase.execSQL("CREATE TABLE " + mTableNames[TABLE_PASSWORD_ID]
                + " (" + ID_COL + " INTEGER PRIMARY KEY, "
@@ -404,6 +410,8 @@ public class WebViewDatabase {
                + " TEXT, " + PASSWORD_PASSWORD_COL + " TEXT," + " UNIQUE ("
                + PASSWORD_HOST_COL + ", " + PASSWORD_USERNAME_COL
                + ") ON CONFLICT REPLACE);");

        mDatabase.setVersion(DATABASE_VERSION);
    }

    private static void upgradeCacheDatabase() {
@@ -411,7 +419,7 @@ public class WebViewDatabase {
        if (oldVersion != 0) {
            Log.i(LOGTAG, "Upgrading cache database from version "
                    + oldVersion + " to "
                    + DATABASE_VERSION + ", which will destroy all old data");
                    + CACHE_DATABASE_VERSION + ", which will destroy all old data");
        }
        mCacheDatabase.execSQL("DROP TABLE IF EXISTS cache");
        mCacheDatabase.setVersion(CACHE_DATABASE_VERSION);