Chromium Code Reviews| Index: components/password_manager/core/browser/login_database.cc |
| diff --git a/components/password_manager/core/browser/login_database.cc b/components/password_manager/core/browser/login_database.cc |
| index c769481f532e512111f025245528ba05d1549e89..ac04d6786a4a568c5d827a202028129725455ca4 100644 |
| --- a/components/password_manager/core/browser/login_database.cc |
| +++ b/components/password_manager/core/browser/login_database.cc |
| @@ -28,7 +28,7 @@ using autofill::PasswordForm; |
| namespace password_manager { |
| -const int kCurrentVersionNumber = 9; |
| +const int kCurrentVersionNumber = 10; |
| static const int kCompatibleVersionNumber = 1; |
| Pickle SerializeVector(const std::vector<base::string16>& vec) { |
| @@ -269,13 +269,12 @@ bool LoginDatabase::MigrateOldVersionsAsNeeded() { |
| } |
| meta_table_.SetVersionNumber(7); |
| // Fall through. |
| - case 7: |
| + case 7: { |
| // Keep version 8 around even though no changes are made. See |
| // crbug.com/423716 for context. |
| meta_table_.SetVersionNumber(8); |
| // Fall through. |
| - // TODO(gcasto): Remove use_additional_auth by copying table. |
| - // https://www.sqlite.org/lang_altertable.html |
| + } |
| case 8: { |
| sql::Statement s; |
| s.Assign(db_.GetCachedStatement(SQL_FROM_HERE, |
| @@ -289,6 +288,36 @@ bool LoginDatabase::MigrateOldVersionsAsNeeded() { |
| meta_table_.SetVersionNumber(9); |
| // Fall through. |
| } |
| + case 9: { |
| + // Remove use_additional_auth column from database schema |
| + // crbug.com/423716 for context. |
| + std::string fields_to_copy = |
| + "origin_url, action_url, username_element, username_value, " |
| + "password_element, password_value, submit_element, " |
| + "signon_realm, ssl_valid, preferred, date_created, " |
| + "blacklisted_by_user, " |
|
Garrett Casto
2015/01/13 21:53:08
Any reason why this line is so short?
melandory
2015/01/14 08:47:10
git cl format decided so =)
melandory
2015/01/14 09:05:44
Oh, nope. It was me. Will format it better.
|
| + "scheme, password_type, possible_usernames, times_used, form_data, " |
| + "date_synced, display_name, avatar_url," |
| + "federation_url, is_zero_click"; |
| + auto copy_data_query = |
| + [&fields_to_copy](const std::string& from, const std::string& to) { |
| + return "INSERT INTO " + to + " SELECT " + fields_to_copy + " FROM " + |
| + from; |
| + }; |
| + |
| + if (!db_.Execute(("CREATE TEMPORARY TABLE logins_data(" + fields_to_copy + |
| + ")").c_str()) || |
| + !db_.Execute(copy_data_query("logins", "logins_data").c_str()) || |
| + !db_.Execute("DROP TABLE logins") || |
| + !db_.Execute( |
| + ("CREATE TABLE logins(" + fields_to_copy + ")").c_str()) || |
| + !db_.Execute(copy_data_query("logins_data", "logins").c_str()) || |
| + !db_.Execute("DROP TABLE logins_data") || |
| + !db_.Execute("CREATE INDEX logins_signon ON logins (signon_realm)")) |
| + return false; |
| + |
| + meta_table_.SetVersionNumber(10); |
| + } |
| case kCurrentVersionNumber: |
| // Already up to date |
| return true; |