summaryrefslogtreecommitdiffstats
path: root/chrome/browser/history/thumbnail_database.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/history/thumbnail_database.cc')
-rw-r--r--chrome/browser/history/thumbnail_database.cc45
1 files changed, 27 insertions, 18 deletions
diff --git a/chrome/browser/history/thumbnail_database.cc b/chrome/browser/history/thumbnail_database.cc
index 7cef980..106a45be 100644
--- a/chrome/browser/history/thumbnail_database.cc
+++ b/chrome/browser/history/thumbnail_database.cc
@@ -19,6 +19,7 @@ namespace history {
// Version number of the database.
static const int kCurrentVersionNumber = 3;
+static const int kCompatibleVersionNumber = 3;
ThumbnailDatabase::ThumbnailDatabase()
: db_(NULL),
@@ -64,7 +65,8 @@ InitStatus ThumbnailDatabase::Init(const std::wstring& db_name) {
transaction.Begin();
// Create the tables.
- if (!meta_table_.Init(std::string(), kCurrentVersionNumber, db_) ||
+ if (!meta_table_.Init(std::string(), kCurrentVersionNumber,
+ kCompatibleVersionNumber, db_) ||
!InitThumbnailTable() ||
!InitFavIconsTable(false))
return INIT_FAILURE;
@@ -72,16 +74,22 @@ InitStatus ThumbnailDatabase::Init(const std::wstring& db_name) {
// Version check. We should not encounter a database too old for us to handle
// in the wild, so we try to continue in that case.
- if (meta_table_.GetCompatibleVersionNumber() > kCurrentVersionNumber)
+ if (meta_table_.GetCompatibleVersionNumber() > kCurrentVersionNumber) {
+ LOG(WARNING) << "Thumbnail database is too new.";
return INIT_TOO_NEW;
+ }
+
int cur_version = meta_table_.GetVersionNumber();
if (cur_version == 2) {
- UpgradeToVersion3();
- cur_version = meta_table_.GetVersionNumber();
+ if (!UpgradeToVersion3()) {
+ LOG(WARNING) << "Unable to update to thumbnail database to version 3.";
+ return INIT_FAILURE;
+ }
+ ++cur_version;
}
- DLOG_IF(WARNING, cur_version < kCurrentVersionNumber) <<
- "Thumbnail database version " << cur_version << " is too old for us.";
+ LOG_IF(WARNING, cur_version < kCurrentVersionNumber) <<
+ "Thumbnail database version " << cur_version << " is too old to handle.";
// Initialization is complete.
if (transaction.Commit() != SQLITE_OK)
@@ -132,7 +140,7 @@ bool ThumbnailDatabase::InitThumbnailTable() {
return true;
}
-void ThumbnailDatabase::UpgradeToVersion3() {
+bool ThumbnailDatabase::UpgradeToVersion3() {
// sqlite doesn't like the "ALTER TABLE xxx ADD (column_one, two,
// three)" syntax, so list out the commands we need to execute:
const char* alterations[] = {
@@ -146,12 +154,14 @@ void ThumbnailDatabase::UpgradeToVersion3() {
for (int i = 0; alterations[i] != NULL; ++i) {
if (sqlite3_exec(db_, alterations[i],
NULL, NULL, NULL) != SQLITE_OK) {
- NOTREACHED() << "Failed to update to v3.";
- return;
+ NOTREACHED();
+ return false;
}
}
- meta_table_.SetVersionNumber(kCurrentVersionNumber);
+ meta_table_.SetVersionNumber(3);
+ meta_table_.SetCompatibleVersionNumber(std::min(3, kCompatibleVersionNumber));
+ return true;
}
bool ThumbnailDatabase::RecreateThumbnailTable() {
@@ -294,7 +304,7 @@ bool ThumbnailDatabase::ThumbnailScoreForId(
// aren't replacing a good thumbnail with one that's worse.
SQLITE_UNIQUE_STATEMENT(
select_statement, *statement_cache_,
- "SELECT boring_score,good_clipping,at_top,last_updated "
+ "SELECT boring_score, good_clipping, at_top, last_updated "
"FROM thumbnails WHERE url_id=?");
if (!select_statement.is_valid()) {
NOTREACHED() << "Couldn't build select statement!";
@@ -321,7 +331,7 @@ bool ThumbnailDatabase::SetFavIcon(URLID icon_id,
if (icon_data.size()) {
SQLITE_UNIQUE_STATEMENT(
statement, *statement_cache_,
- "UPDATE favicons SET image_data=?,last_updated=? WHERE id=?");
+ "UPDATE favicons SET image_data=?, last_updated=? WHERE id=?");
if (!statement.is_valid())
return 0;
@@ -333,7 +343,7 @@ bool ThumbnailDatabase::SetFavIcon(URLID icon_id,
} else {
SQLITE_UNIQUE_STATEMENT(
statement, *statement_cache_,
- "UPDATE favicons SET image_data=NULL,last_updated=? WHERE id=?");
+ "UPDATE favicons SET image_data=NULL, last_updated=? WHERE id=?");
if (!statement.is_valid())
return 0;
@@ -377,7 +387,7 @@ bool ThumbnailDatabase::GetFavIcon(
DCHECK(icon_id);
SQLITE_UNIQUE_STATEMENT(statement, *statement_cache_,
- "SELECT last_updated,image_data,url FROM favicons WHERE id=?");
+ "SELECT last_updated, image_data, url FROM favicons WHERE id=?");
if (!statement.is_valid())
return 0;
@@ -420,10 +430,9 @@ bool ThumbnailDatabase::DeleteFavIcon(FavIconID id) {
FavIconID ThumbnailDatabase::CopyToTemporaryFavIconTable(FavIconID source) {
SQLITE_UNIQUE_STATEMENT(statement, *statement_cache_,
- "INSERT INTO temp_favicons("
- "url, last_updated, image_data)"
- "SELECT url, last_updated, image_data "
- "FROM favicons WHERE id = ?");
+ "INSERT INTO temp_favicons (url, last_updated, image_data)"
+ "SELECT url, last_updated, image_data "
+ "FROM favicons WHERE id = ?");
if (!statement.is_valid())
return 0;
statement->bind_int64(0, source);