| Index: webkit/browser/appcache/appcache_database.cc
|
| diff --git a/webkit/browser/appcache/appcache_database.cc b/webkit/browser/appcache/appcache_database.cc
|
| index a3dadd9eaf5515cc1f90381f636c5de6e645bfba..48b03e3f33bbe8a5863909f75905720eafd6ab3b 100644
|
| --- a/webkit/browser/appcache/appcache_database.cc
|
| +++ b/webkit/browser/appcache/appcache_database.cc
|
| @@ -1019,7 +1019,7 @@ bool AppCacheDatabase::LazyOpen(bool create_if_needed) {
|
| db_->Preload();
|
| }
|
|
|
| - if (!opened || !EnsureDatabaseVersion()) {
|
| + if (!opened || !QuickIntegrityCheck() || !EnsureDatabaseVersion()) {
|
| LOG(ERROR) << "Failed to open the appcache database.";
|
| AppCacheHistograms::CountInitResult(
|
| AppCacheHistograms::SQL_DATABASE_ERROR);
|
| @@ -1039,6 +1039,14 @@ bool AppCacheDatabase::LazyOpen(bool create_if_needed) {
|
| return true;
|
| }
|
|
|
| +bool AppCacheDatabase::QuickIntegrityCheck() {
|
| + DCHECK(db_.get());
|
| + std::vector<std::string> messages;
|
| + if (!db_->QuickIntegrityCheck(&messages))
|
| + return false;
|
| + return messages.size() == 1 && messages[0] == "ok";
|
| +}
|
| +
|
| bool AppCacheDatabase::EnsureDatabaseVersion() {
|
| if (!sql::MetaTable::DoesTableExist(db_.get()))
|
| return CreateSchema();
|
|
|