Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(135)

Unified Diff: components/webdata/common/web_database.cc

Issue 207643002: Create new Autofill tables as part of DB migration. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: components/webdata/common/web_database.cc
diff --git a/components/webdata/common/web_database.cc b/components/webdata/common/web_database.cc
index 230eae1941640cd9813652eb117c202aa179361d..0f7b6c47be8c78e88f833c4d9105ea7da725fc52 100644
--- a/components/webdata/common/web_database.cc
+++ b/components/webdata/common/web_database.cc
@@ -101,13 +101,8 @@ sql::InitStatus WebDatabase::Init(const base::FilePath& db_name) {
}
// Initialize the tables.
- for (TableMap::iterator it = tables_.begin();
- it != tables_.end();
- ++it) {
- if (!it->second->Init(&db_, &meta_table_)) {
- LOG(WARNING) << "Unable to initialize the web database.";
- return sql::INIT_FAILURE;
- }
+ for (TableMap::iterator it = tables_.begin(); it != tables_.end(); ++it) {
+ it->second->Init(&db_, &meta_table_);
}
// If the file on disk is an older database version, bring it up to date.
@@ -117,6 +112,17 @@ sql::InitStatus WebDatabase::Init(const base::FilePath& db_name) {
if (migration_status != sql::INIT_OK)
return migration_status;
+ // Create the desired SQL tables if they do not already exist.
+ // It's important that this happen *after* the migration code runs.
+ // Otherwise, the migration code would have to explicitly check for empty
+ // tables created in the new format, and skip the migration in that case.
+ for (TableMap::iterator it = tables_.begin(); it != tables_.end(); ++it) {
+ if (!it->second->CreateTablesIfNecessary()) {
+ LOG(WARNING) << "Unable to initialize the web database.";
+ return sql::INIT_FAILURE;
+ }
+ }
+
return transaction.Commit() ? sql::INIT_OK : sql::INIT_FAILURE;
}
@@ -140,8 +146,8 @@ sql::InitStatus WebDatabase::MigrateOldVersionsAsNeeded() {
// migrate. If we do encounter such a legacy database, we will need a
// better solution to handle it (i.e., pop up a dialog to tell the user,
// erase all their prefs and start over, etc.).
- LOG(WARNING) << "Web database version " << current_version <<
- " is too old to handle.";
+ LOG(WARNING) << "Web database version " << current_version
+ << " is too old to handle.";
NOTREACHED();
return sql::INIT_FAILURE;
}
@@ -150,9 +156,7 @@ sql::InitStatus WebDatabase::MigrateOldVersionsAsNeeded() {
next_version <= kCurrentVersionNumber;
++next_version) {
// Give each table a chance to migrate to this version.
- for (TableMap::iterator it = tables_.begin();
- it != tables_.end();
- ++it) {
+ for (TableMap::iterator it = tables_.begin(); it != tables_.end(); ++it) {
// Any of the tables may set this to true, but by default it is false.
bool update_compatible_version = false;
if (!it->second->MigrateToVersion(next_version,
« no previous file with comments | « components/test/data/web_database/version_20.sql ('k') | components/webdata/common/web_database_migration_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698