Skip to content

Commit f10daf6

Browse files
author
Ben Murdoch
committed
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
1 parent bd78368 commit f10daf6

File tree

1 file changed

+57
-49
lines changed

1 file changed

+57
-49
lines changed

core/java/android/webkit/WebViewDatabase.java

Lines changed: 57 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -327,15 +327,26 @@ private void initCacheDatabase(Context context) {
327327
}
328328

329329
private static void upgradeDatabase() {
330+
upgradeDatabaseToV10();
331+
// Add future database upgrade functions here, one version at a
332+
// time.
333+
}
334+
335+
private static void upgradeDatabaseToV10() {
330336
int oldVersion = mDatabase.getVersion();
337+
338+
if (oldVersion >= 10) {
339+
// Nothing to do.
340+
return;
341+
}
342+
331343
if (oldVersion != 0) {
332344
Log.i(LOGTAG, "Upgrading database from version "
333345
+ oldVersion + " to "
334346
+ DATABASE_VERSION + ", which will destroy old data");
335347
}
336-
boolean justPasswords = 8 == oldVersion && 9 == DATABASE_VERSION;
337-
boolean justAuth = 9 == oldVersion && 10 == DATABASE_VERSION;
338-
if (justAuth) {
348+
349+
if (9 == oldVersion) {
339350
mDatabase.execSQL("DROP TABLE IF EXISTS "
340351
+ mTableNames[TABLE_HTTPAUTH_ID]);
341352
mDatabase.execSQL("CREATE TABLE " + mTableNames[TABLE_HTTPAUTH_ID]
@@ -345,73 +356,70 @@ private static void upgradeDatabase() {
345356
+ HTTPAUTH_PASSWORD_COL + " TEXT," + " UNIQUE ("
346357
+ HTTPAUTH_HOST_COL + ", " + HTTPAUTH_REALM_COL
347358
+ ") ON CONFLICT REPLACE);");
359+
mDatabase.setVersion(DATABASE_VERSION);
348360
return;
349361
}
350362

351-
if (!justPasswords) {
352-
mDatabase.execSQL("DROP TABLE IF EXISTS "
353-
+ mTableNames[TABLE_COOKIES_ID]);
354-
mDatabase.execSQL("DROP TABLE IF EXISTS cache");
355-
mDatabase.execSQL("DROP TABLE IF EXISTS "
356-
+ mTableNames[TABLE_FORMURL_ID]);
357-
mDatabase.execSQL("DROP TABLE IF EXISTS "
358-
+ mTableNames[TABLE_FORMDATA_ID]);
359-
mDatabase.execSQL("DROP TABLE IF EXISTS "
360-
+ mTableNames[TABLE_HTTPAUTH_ID]);
361-
}
363+
mDatabase.execSQL("DROP TABLE IF EXISTS "
364+
+ mTableNames[TABLE_COOKIES_ID]);
365+
mDatabase.execSQL("DROP TABLE IF EXISTS cache");
366+
mDatabase.execSQL("DROP TABLE IF EXISTS "
367+
+ mTableNames[TABLE_FORMURL_ID]);
368+
mDatabase.execSQL("DROP TABLE IF EXISTS "
369+
+ mTableNames[TABLE_FORMDATA_ID]);
370+
mDatabase.execSQL("DROP TABLE IF EXISTS "
371+
+ mTableNames[TABLE_HTTPAUTH_ID]);
362372
mDatabase.execSQL("DROP TABLE IF EXISTS "
363373
+ mTableNames[TABLE_PASSWORD_ID]);
364374

365-
mDatabase.setVersion(DATABASE_VERSION);
366-
367-
if (!justPasswords) {
368-
// cookies
369-
mDatabase.execSQL("CREATE TABLE " + mTableNames[TABLE_COOKIES_ID]
370-
+ " (" + ID_COL + " INTEGER PRIMARY KEY, "
371-
+ COOKIES_NAME_COL + " TEXT, " + COOKIES_VALUE_COL
372-
+ " TEXT, " + COOKIES_DOMAIN_COL + " TEXT, "
373-
+ COOKIES_PATH_COL + " TEXT, " + COOKIES_EXPIRES_COL
374-
+ " INTEGER, " + COOKIES_SECURE_COL + " INTEGER" + ");");
375-
mDatabase.execSQL("CREATE INDEX cookiesIndex ON "
376-
+ mTableNames[TABLE_COOKIES_ID] + " (path)");
377-
378-
// formurl
379-
mDatabase.execSQL("CREATE TABLE " + mTableNames[TABLE_FORMURL_ID]
380-
+ " (" + ID_COL + " INTEGER PRIMARY KEY, " + FORMURL_URL_COL
381-
+ " TEXT" + ");");
382-
383-
// formdata
384-
mDatabase.execSQL("CREATE TABLE " + mTableNames[TABLE_FORMDATA_ID]
385-
+ " (" + ID_COL + " INTEGER PRIMARY KEY, "
386-
+ FORMDATA_URLID_COL + " INTEGER, " + FORMDATA_NAME_COL
387-
+ " TEXT, " + FORMDATA_VALUE_COL + " TEXT," + " UNIQUE ("
388-
+ FORMDATA_URLID_COL + ", " + FORMDATA_NAME_COL + ", "
389-
+ FORMDATA_VALUE_COL + ") ON CONFLICT IGNORE);");
375+
// cookies
376+
mDatabase.execSQL("CREATE TABLE " + mTableNames[TABLE_COOKIES_ID]
377+
+ " (" + ID_COL + " INTEGER PRIMARY KEY, "
378+
+ COOKIES_NAME_COL + " TEXT, " + COOKIES_VALUE_COL
379+
+ " TEXT, " + COOKIES_DOMAIN_COL + " TEXT, "
380+
+ COOKIES_PATH_COL + " TEXT, " + COOKIES_EXPIRES_COL
381+
+ " INTEGER, " + COOKIES_SECURE_COL + " INTEGER" + ");");
382+
mDatabase.execSQL("CREATE INDEX cookiesIndex ON "
383+
+ mTableNames[TABLE_COOKIES_ID] + " (path)");
384+
385+
// formurl
386+
mDatabase.execSQL("CREATE TABLE " + mTableNames[TABLE_FORMURL_ID]
387+
+ " (" + ID_COL + " INTEGER PRIMARY KEY, " + FORMURL_URL_COL
388+
+ " TEXT" + ");");
389+
390+
// formdata
391+
mDatabase.execSQL("CREATE TABLE " + mTableNames[TABLE_FORMDATA_ID]
392+
+ " (" + ID_COL + " INTEGER PRIMARY KEY, "
393+
+ FORMDATA_URLID_COL + " INTEGER, " + FORMDATA_NAME_COL
394+
+ " TEXT, " + FORMDATA_VALUE_COL + " TEXT," + " UNIQUE ("
395+
+ FORMDATA_URLID_COL + ", " + FORMDATA_NAME_COL + ", "
396+
+ FORMDATA_VALUE_COL + ") ON CONFLICT IGNORE);");
390397

391-
// httpauth
392-
mDatabase.execSQL("CREATE TABLE " + mTableNames[TABLE_HTTPAUTH_ID]
393-
+ " (" + ID_COL + " INTEGER PRIMARY KEY, "
394-
+ HTTPAUTH_HOST_COL + " TEXT, " + HTTPAUTH_REALM_COL
395-
+ " TEXT, " + HTTPAUTH_USERNAME_COL + " TEXT, "
396-
+ HTTPAUTH_PASSWORD_COL + " TEXT," + " UNIQUE ("
397-
+ HTTPAUTH_HOST_COL + ", " + HTTPAUTH_REALM_COL
398-
+ ") ON CONFLICT REPLACE);");
399-
}
398+
// httpauth
399+
mDatabase.execSQL("CREATE TABLE " + mTableNames[TABLE_HTTPAUTH_ID]
400+
+ " (" + ID_COL + " INTEGER PRIMARY KEY, "
401+
+ HTTPAUTH_HOST_COL + " TEXT, " + HTTPAUTH_REALM_COL
402+
+ " TEXT, " + HTTPAUTH_USERNAME_COL + " TEXT, "
403+
+ HTTPAUTH_PASSWORD_COL + " TEXT," + " UNIQUE ("
404+
+ HTTPAUTH_HOST_COL + ", " + HTTPAUTH_REALM_COL
405+
+ ") ON CONFLICT REPLACE);");
400406
// passwords
401407
mDatabase.execSQL("CREATE TABLE " + mTableNames[TABLE_PASSWORD_ID]
402408
+ " (" + ID_COL + " INTEGER PRIMARY KEY, "
403409
+ PASSWORD_HOST_COL + " TEXT, " + PASSWORD_USERNAME_COL
404410
+ " TEXT, " + PASSWORD_PASSWORD_COL + " TEXT," + " UNIQUE ("
405411
+ PASSWORD_HOST_COL + ", " + PASSWORD_USERNAME_COL
406412
+ ") ON CONFLICT REPLACE);");
413+
414+
mDatabase.setVersion(DATABASE_VERSION);
407415
}
408416

409417
private static void upgradeCacheDatabase() {
410418
int oldVersion = mCacheDatabase.getVersion();
411419
if (oldVersion != 0) {
412420
Log.i(LOGTAG, "Upgrading cache database from version "
413421
+ oldVersion + " to "
414-
+ DATABASE_VERSION + ", which will destroy all old data");
422+
+ CACHE_DATABASE_VERSION + ", which will destroy all old data");
415423
}
416424
mCacheDatabase.execSQL("DROP TABLE IF EXISTS cache");
417425
mCacheDatabase.setVersion(CACHE_DATABASE_VERSION);

0 commit comments

Comments
 (0)