Index: chrome/browser/net/sqlite_persistent_cookie_store.cc |
diff --git a/chrome/browser/net/sqlite_persistent_cookie_store.cc b/chrome/browser/net/sqlite_persistent_cookie_store.cc |
index e3007c6122b03ffeff17e67a729fe88620e2568e..9d3c10c0fa309ff108bd456826670e1f7285966d 100644 |
--- a/chrome/browser/net/sqlite_persistent_cookie_store.cc |
+++ b/chrome/browser/net/sqlite_persistent_cookie_store.cc |
@@ -768,10 +768,22 @@ bool SQLitePersistentCookieStore::Backend::EnsureDatabaseVersion() { |
// Put future migration cases here. |
- // When the version is too old, we just try to continue anyway, there should |
- // not be a released product that makes a database too old for us to handle. |
- LOG_IF(WARNING, cur_version < kCurrentVersionNumber) << |
- "Cookie database version " << cur_version << " is too old to handle."; |
+ if (cur_version < kCurrentVersionNumber) { |
+ UMA_HISTOGRAM_COUNTS_100("Cookie.CorruptMetaTable", 1); |
+ |
+ meta_table_.Reset(); |
+ db_.reset(new sql::Connection); |
+ if (!file_util::Delete(path_, false) || |
+ !db_->Open(path_) || |
+ !meta_table_.Init( |
+ db_.get(), kCurrentVersionNumber, kCompatibleVersionNumber)) { |
+ UMA_HISTOGRAM_COUNTS_100("Cookie.CorruptMetaTableRecoveryFailed", 1); |
+ NOTREACHED() << "Unable to reset the cookie DB."; |
+ meta_table_.Reset(); |
+ db_.reset(); |
+ return false; |
+ } |
+ } |
return true; |
} |