| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "components/password_manager/core/browser/login_database.h" | 5 #include "components/password_manager/core/browser/login_database.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <limits> | 8 #include <limits> |
| 9 | 9 |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| (...skipping 11 matching lines...) Expand all Loading... |
| 22 #include "google_apis/gaia/gaia_auth_util.h" | 22 #include "google_apis/gaia/gaia_auth_util.h" |
| 23 #include "google_apis/gaia/gaia_urls.h" | 23 #include "google_apis/gaia/gaia_urls.h" |
| 24 #include "sql/connection.h" | 24 #include "sql/connection.h" |
| 25 #include "sql/statement.h" | 25 #include "sql/statement.h" |
| 26 #include "sql/transaction.h" | 26 #include "sql/transaction.h" |
| 27 | 27 |
| 28 using autofill::PasswordForm; | 28 using autofill::PasswordForm; |
| 29 | 29 |
| 30 namespace password_manager { | 30 namespace password_manager { |
| 31 | 31 |
| 32 const int kCurrentVersionNumber = 12; | 32 const int kCurrentVersionNumber = 13; |
| 33 static const int kCompatibleVersionNumber = 1; | 33 static const int kCompatibleVersionNumber = 1; |
| 34 | 34 |
| 35 Pickle SerializeVector(const std::vector<base::string16>& vec) { | 35 Pickle SerializeVector(const std::vector<base::string16>& vec) { |
| 36 Pickle p; | 36 Pickle p; |
| 37 for (size_t i = 0; i < vec.size(); ++i) { | 37 for (size_t i = 0; i < vec.size(); ++i) { |
| 38 p.WriteString16(vec[i]); | 38 p.WriteString16(vec[i]); |
| 39 } | 39 } |
| 40 return p; | 40 return p; |
| 41 } | 41 } |
| 42 | 42 |
| (...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 226 return false; | 226 return false; |
| 227 } | 227 } |
| 228 if (meta_table_.GetCompatibleVersionNumber() > kCurrentVersionNumber) { | 228 if (meta_table_.GetCompatibleVersionNumber() > kCurrentVersionNumber) { |
| 229 LOG(WARNING) << "Password store database is too new."; | 229 LOG(WARNING) << "Password store database is too new."; |
| 230 db_.Close(); | 230 db_.Close(); |
| 231 return false; | 231 return false; |
| 232 } | 232 } |
| 233 | 233 |
| 234 // Initialize the tables. | 234 // Initialize the tables. |
| 235 if (!InitLoginsTable()) { | 235 if (!InitLoginsTable()) { |
| 236 LOG(WARNING) << "Unable to initialize the password store database."; | 236 LOG(WARNING) << "Unable to initialize the logins table."; |
| 237 db_.Close(); | 237 db_.Close(); |
| 238 return false; | 238 return false; |
| 239 } | 239 } |
| 240 |
| 241 if (!stats_table_.Init(&db_)) { |
| 242 LOG(WARNING) << "Unable to initialize the stats table."; |
| 243 db_.Close(); |
| 244 return false; |
| 245 } |
| 240 | 246 |
| 241 // If the file on disk is an older database version, bring it up to date. | 247 // If the file on disk is an older database version, bring it up to date. |
| 242 if (!MigrateOldVersionsAsNeeded()) { | 248 if (!MigrateOldVersionsAsNeeded()) { |
| 243 LOG(WARNING) << "Unable to migrate database"; | 249 LOG(WARNING) << "Unable to migrate database"; |
| 244 db_.Close(); | 250 db_.Close(); |
| 245 return false; | 251 return false; |
| 246 } | 252 } |
| 247 | 253 |
| 248 if (!transaction.Commit()) { | 254 if (!transaction.Commit()) { |
| 249 db_.Close(); | 255 db_.Close(); |
| (...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 367 !CreateIndexOnSignonRealm(&db_, "logins")) | 373 !CreateIndexOnSignonRealm(&db_, "logins")) |
| 368 return false; | 374 return false; |
| 369 meta_table_.SetVersionNumber(11); | 375 meta_table_.SetVersionNumber(11); |
| 370 } | 376 } |
| 371 case 11: | 377 case 11: |
| 372 if (!db_.Execute( | 378 if (!db_.Execute( |
| 373 "ALTER TABLE logins ADD COLUMN " | 379 "ALTER TABLE logins ADD COLUMN " |
| 374 "generation_upload_status INTEGER")) | 380 "generation_upload_status INTEGER")) |
| 375 return false; | 381 return false; |
| 376 meta_table_.SetVersionNumber(12); | 382 meta_table_.SetVersionNumber(12); |
| 383 case 12: |
| 384 // The stats table was added. Nothing to do really. |
| 385 meta_table_.SetVersionNumber(13); |
| 377 case kCurrentVersionNumber: | 386 case kCurrentVersionNumber: |
| 378 // Already up to date | 387 // Already up to date |
| 379 return true; | 388 return true; |
| 380 default: | 389 default: |
| 381 NOTREACHED(); | 390 NOTREACHED(); |
| 382 return false; | 391 return false; |
| 383 } | 392 } |
| 384 } | 393 } |
| 385 | 394 |
| 386 bool LoginDatabase::InitLoginsTable() { | 395 bool LoginDatabase::InitLoginsTable() { |
| (...skipping 558 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 945 UMA_HISTOGRAM_ENUMERATION("PasswordManager.PslDomainMatchTriggering", | 954 UMA_HISTOGRAM_ENUMERATION("PasswordManager.PslDomainMatchTriggering", |
| 946 psl_domain_match_metric, PSL_DOMAIN_MATCH_COUNT); | 955 psl_domain_match_metric, PSL_DOMAIN_MATCH_COUNT); |
| 947 } | 956 } |
| 948 | 957 |
| 949 if (!statement->Succeeded()) | 958 if (!statement->Succeeded()) |
| 950 return false; | 959 return false; |
| 951 return true; | 960 return true; |
| 952 } | 961 } |
| 953 | 962 |
| 954 } // namespace password_manager | 963 } // namespace password_manager |
| OLD | NEW |