summaryrefslogtreecommitdiffstats
path: root/chrome
diff options
context:
space:
mode:
authormirandac@chromium.org <mirandac@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-08-30 20:55:26 +0000
committermirandac@chromium.org <mirandac@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-08-30 20:55:26 +0000
commitbf898dad1b57c6fd436bc8d8c8ef143e3d11755d (patch)
treea7f37c0ca8b97620ee88586d2dc4cd2c7f7891dd /chrome
parent63b9eb2c8d3bb29e814f7a0da90568e77a47a42f (diff)
downloadchromium_src-bf898dad1b57c6fd436bc8d8c8ef143e3d11755d.zip
chromium_src-bf898dad1b57c6fd436bc8d8c8ef143e3d11755d.tar.gz
chromium_src-bf898dad1b57c6fd436bc8d8c8ef143e3d11755d.tar.bz2
Fix credit card table migration step by ensuring that we're not trying to add a column which is already present. If we create a table as part of the init process, don't try to alter the table, because it already exists.
BUG=10913 TEST= search engine dialog works, search engines don't disappear. Review URL: http://codereview.chromium.org/3239006 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@57902 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome')
-rw-r--r--chrome/browser/webdata/web_database.cc38
-rw-r--r--chrome/browser/webdata/web_database.h5
2 files changed, 25 insertions, 18 deletions
diff --git a/chrome/browser/webdata/web_database.cc b/chrome/browser/webdata/web_database.cc
index 81582a1..fa325f3 100644
--- a/chrome/browser/webdata/web_database.cc
+++ b/chrome/browser/webdata/web_database.cc
@@ -446,16 +446,18 @@ sql::InitStatus WebDatabase::Init(const FilePath& db_name) {
}
// Initialize the tables.
+ bool credit_card_table_created = false;
if (!InitKeywordsTable() || !InitLoginsTable() || !InitWebAppIconsTable() ||
!InitWebAppsTable() || !InitAutofillTable() ||
!InitAutofillDatesTable() || !InitAutoFillProfilesTable() ||
- !InitCreditCardsTable() || !InitTokenServiceTable()) {
+ !InitCreditCardsTable(&credit_card_table_created) ||
+ !InitTokenServiceTable()) {
LOG(WARNING) << "Unable to initialize the web database.";
return sql::INIT_FAILURE;
}
// If the file on disk is an older database version, bring it up to date.
- MigrateOldVersionsAsNeeded();
+ MigrateOldVersionsAsNeeded(credit_card_table_created);
return transaction.Commit() ? sql::INIT_OK : sql::INIT_FAILURE;
}
@@ -759,7 +761,7 @@ bool WebDatabase::InitAutoFillProfilesTable() {
return true;
}
-bool WebDatabase::InitCreditCardsTable() {
+bool WebDatabase::InitCreditCardsTable(bool* table_was_created) {
if (!db_.DoesTableExist("credit_cards")) {
if (!db_.Execute("CREATE TABLE credit_cards ( "
"label VARCHAR, "
@@ -777,6 +779,7 @@ bool WebDatabase::InitCreditCardsTable() {
NOTREACHED();
return false;
}
+ *table_was_created = true;
if (!db_.Execute("CREATE INDEX credit_cards_label_index "
"ON credit_cards (label)")) {
NOTREACHED();
@@ -1870,7 +1873,7 @@ bool WebDatabase::RemoveFormElementForID(int64 pair_id) {
return false;
}
-void WebDatabase::MigrateOldVersionsAsNeeded() {
+void WebDatabase::MigrateOldVersionsAsNeeded(bool credit_card_table_created) {
// Migrate if necessary.
int current_version = meta_table_.GetVersionNumber();
switch (current_version) {
@@ -1907,18 +1910,21 @@ void WebDatabase::MigrateOldVersionsAsNeeded() {
// FALL THROUGH
case 22:
- // Add the card_number_encrypted column.
- if (!db_.Execute("ALTER TABLE credit_cards ADD COLUMN "
- "card_number_encrypted BLOB DEFAULT NULL")) {
- NOTREACHED();
- LOG(WARNING) << "Unable to update web database to version 23.";
- return;
- }
- if (!db_.Execute("ALTER TABLE credit_cards ADD COLUMN "
- "verification_code_encrypted BLOB DEFAULT NULL")) {
- NOTREACHED();
- LOG(WARNING) << "Unable to update web database to version 23.";
- return;
+ // Add the card_number_encrypted column if credit card table was not
+ // created in this build.
+ if (!credit_card_table_created) {
+ if (!db_.Execute("ALTER TABLE credit_cards ADD COLUMN "
+ "card_number_encrypted BLOB DEFAULT NULL")) {
+ NOTREACHED();
+ LOG(WARNING) << "Unable to update web database to version 23.";
+ return;
+ }
+ if (!db_.Execute("ALTER TABLE credit_cards ADD COLUMN "
+ "verification_code_encrypted BLOB DEFAULT NULL")) {
+ NOTREACHED();
+ LOG(WARNING) << "Unable to update web database to version 23.";
+ return;
+ }
}
meta_table_.SetVersionNumber(23);
diff --git a/chrome/browser/webdata/web_database.h b/chrome/browser/webdata/web_database.h
index 34b7aa6..23938a8 100644
--- a/chrome/browser/webdata/web_database.h
+++ b/chrome/browser/webdata/web_database.h
@@ -329,12 +329,13 @@ class WebDatabase {
bool InitAutofillTable();
bool InitAutofillDatesTable();
bool InitAutoFillProfilesTable();
- bool InitCreditCardsTable();
+ // Out parameter |credit_card_table_created| true if table created here.
+ bool InitCreditCardsTable(bool* table_was_created);
bool InitTokenServiceTable();
bool InitWebAppIconsTable();
bool InitWebAppsTable();
- void MigrateOldVersionsAsNeeded();
+ void MigrateOldVersionsAsNeeded(bool credit_card_table_created);
sql::Connection db_;
sql::MetaTable meta_table_;