Chromium Code Reviews| Index: components/webdata/common/web_database.cc |
| diff --git a/components/webdata/common/web_database.cc b/components/webdata/common/web_database.cc |
| index 018663da75657c85126a5247476a69b9b3bcc3e4..f99f43713f82ebd670a4b3f073bcbff737a6167a 100644 |
| --- a/components/webdata/common/web_database.cc |
| +++ b/components/webdata/common/web_database.cc |
| @@ -16,6 +16,8 @@ |
| // static |
| const int WebDatabase::kCurrentVersionNumber = 62; |
| +const int WebDatabase::kDeprecatedVersionNumber = 51; |
| + |
| namespace { |
| const int kCompatibleVersionNumber = 61; |
| @@ -87,7 +89,12 @@ sql::InitStatus WebDatabase::Init(const base::FilePath& db_name) { |
| if (!db_.Open(db_name)) |
| return sql::INIT_FAILURE; |
| - // Initialize various tables |
| + // Clobber really old databases. |
| + DCHECK_LT(kDeprecatedVersionNumber, kCurrentVersionNumber); |
|
Peter Kasting
2015/02/26 22:33:19
I don't know that this DCHECK is really needed.
Evan Stade
2015/02/26 22:37:19
This is copied from TopSitesDatabase. I am ambival
Scott Hess - ex-Googler
2015/02/27 06:49:38
The rationale was that if someone accidentally got
Peter Kasting
2015/02/27 09:15:25
I didn't even think of that. Yes, please use a st
Evan Stade
2015/02/28 00:13:41
Done.
|
| + sql::MetaTable::RazeIfDeprecated(&db_, kDeprecatedVersionNumber); |
| + |
| + // Scope initialization in a transaction so we can't be partially |
| + // initialized. |
| sql::Transaction transaction(&db_); |
| if (!transaction.Begin()) |
| return sql::INIT_FAILURE; |
| @@ -135,20 +142,14 @@ sql::InitStatus WebDatabase::MigrateOldVersionsAsNeeded() { |
| if (current_version > meta_table_.GetVersionNumber()) |
| ChangeVersion(&meta_table_, current_version, false); |
| - if (current_version < 20) { |
| - // Versions 1 - 19 are unhandled. Version numbers greater than |
| + if (current_version < kDeprecatedVersionNumber) { |
|
Scott Hess - ex-Googler
2015/02/27 06:49:38
This case should not be possible anymore, right?
Peter Kasting
2015/02/27 09:15:25
I think not; even if the user manually copies old
Evan Stade
2015/02/28 00:13:41
Done.
|
| + // Deprecated versions are unhandled. Version numbers greater than |
| // kCurrentVersionNumber should have already been weeded out by the caller. |
| // |
| // When the version is too old, we return failure error code. The schema |
| // is too out of date to migrate. |
| - // |
| - // There should not be a released product that makes a database too old to |
| - // 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."; |
| - NOTREACHED(); |
| return sql::INIT_FAILURE; |
| } |