Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(564)

Unified Diff: components/password_manager/core/browser/login_database.cc

Issue 920683002: [Password Generation] Add negative votes for crowdsourcing (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Test fixes Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 27cbcf71b8a28e8fe9a863fb6c989e88b0802bcb..99a138f871bea463ecdd17e7819a9a00fc53034f 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 = 11;
+const int kCurrentVersionNumber = 12;
static const int kCompatibleVersionNumber = 1;
Pickle SerializeVector(const std::vector<base::string16>& vec) {
@@ -76,6 +76,7 @@ enum LoginTableColumns {
COLUMN_AVATAR_URL,
COLUMN_FEDERATION_URL,
COLUMN_SKIP_ZERO_CLICK,
+ COLUMN_GENERATION_UPLOAD_STATUS,
};
void BindAddStatement(const PasswordForm& form,
@@ -111,6 +112,7 @@ void BindAddStatement(const PasswordForm& form,
s->BindString(COLUMN_AVATAR_URL, form.avatar_url.spec());
s->BindString(COLUMN_FEDERATION_URL, form.federation_url.spec());
s->BindInt(COLUMN_SKIP_ZERO_CLICK, form.skip_zero_click);
+ s->BindInt(COLUMN_GENERATION_UPLOAD_STATUS, form.generation_upload_status);
}
void AddCallback(int err, sql::Statement* /*stmt*/) {
@@ -152,7 +154,9 @@ void LogTimesUsedStat(const std::string& name, int sample) {
}
// Creates a table named |table_name| using our current schema.
-bool CreateNewTable(sql::Connection* db, const char* table_name) {
+bool CreateNewTable(sql::Connection* db,
+ const char* table_name,
+ const char* extra_columns) {
std::string query = base::StringPrintf(
"CREATE TABLE %s ("
"origin_url VARCHAR NOT NULL, "
@@ -177,8 +181,10 @@ bool CreateNewTable(sql::Connection* db, const char* table_name) {
"avatar_url VARCHAR,"
"federation_url VARCHAR,"
"skip_zero_click INTEGER,"
+ "%s"
"UNIQUE (origin_url, username_element, username_value, "
- "password_element, signon_realm))", table_name);
+ "password_element, signon_realm))",
+ table_name, extra_columns);
return db->Execute(query.c_str());
}
@@ -354,14 +360,19 @@ bool LoginDatabase::MigrateOldVersionsAsNeeded() {
"password_type, possible_usernames, times_used, form_data, "
"date_synced, display_name, avatar_url, federation_url, is_zero_click"
" FROM logins";
- if (!CreateNewTable(&db_, "logins_new") ||
- !db_.Execute(copy_query) ||
+ if (!CreateNewTable(&db_, "logins_new", "") || !db_.Execute(copy_query) ||
!db_.Execute("DROP TABLE logins") ||
!db_.Execute("ALTER TABLE logins_new RENAME TO logins") ||
!CreateIndexOnSignonRealm(&db_, "logins"))
return false;
meta_table_.SetVersionNumber(11);
}
+ case 11:
+ if (!db_.Execute(
+ "ALTER TABLE logins ADD COLUMN "
+ "generation_upload_status INTEGER"))
+ return false;
+ meta_table_.SetVersionNumber(12);
case kCurrentVersionNumber:
// Already up to date
return true;
@@ -373,7 +384,7 @@ bool LoginDatabase::MigrateOldVersionsAsNeeded() {
bool LoginDatabase::InitLoginsTable() {
if (!db_.DoesTableExist("logins")) {
- if (!CreateNewTable(&db_, "logins")) {
+ if (!CreateNewTable(&db_, "logins", "generation_upload_status INTEGER,")) {
NOTREACHED();
return false;
}
@@ -512,8 +523,8 @@ PasswordStoreChangeList LoginDatabase::AddLogin(const PasswordForm& form) {
" signon_realm, ssl_valid, preferred, date_created, blacklisted_by_user, "
" scheme, password_type, possible_usernames, times_used, form_data, "
" date_synced, display_name, avatar_url,"
- " federation_url, skip_zero_click) VALUES "
- "(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"));
+ " federation_url, skip_zero_click, generation_upload_status) VALUES "
+ "(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"));
BindAddStatement(form, encrypted_password, &s);
db_.set_error_callback(base::Bind(&AddCallback));
const bool success = s.Run();
@@ -531,8 +542,8 @@ PasswordStoreChangeList LoginDatabase::AddLogin(const PasswordForm& form) {
" signon_realm, ssl_valid, preferred, date_created, blacklisted_by_user, "
" scheme, password_type, possible_usernames, times_used, form_data, "
" date_synced, display_name, avatar_url,"
- " federation_url, skip_zero_click) VALUES "
- "(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"));
+ " federation_url, skip_zero_click, generation_upload_status) VALUES "
+ "(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"));
BindAddStatement(form, encrypted_password, &s);
if (s.Run()) {
list.push_back(PasswordStoreChange(PasswordStoreChange::REMOVE, form));
@@ -566,7 +577,8 @@ PasswordStoreChangeList LoginDatabase::UpdateLogin(const PasswordForm& form) {
"display_name = ?, "
"avatar_url = ?, "
"federation_url = ?, "
- "skip_zero_click = ? "
+ "skip_zero_click = ?, "
+ "generation_upload_status = ? "
"WHERE origin_url = ? AND "
"username_element = ? AND "
"username_value = ? AND "
@@ -590,13 +602,14 @@ PasswordStoreChangeList LoginDatabase::UpdateLogin(const PasswordForm& form) {
s.BindString(13, form.avatar_url.spec());
s.BindString(14, form.federation_url.spec());
s.BindInt(15, form.skip_zero_click);
+ s.BindInt(16, form.generation_upload_status);
// WHERE starts here.
- s.BindString(16, form.origin.spec());
- s.BindString16(17, form.username_element);
- s.BindString16(18, form.username_value);
- s.BindString16(19, form.password_element);
- s.BindString(20, form.signon_realm);
+ s.BindString(17, form.origin.spec());
+ s.BindString16(18, form.username_element);
+ s.BindString16(19, form.username_value);
+ s.BindString16(20, form.password_element);
+ s.BindString(21, form.signon_realm);
if (!s.Run())
return PasswordStoreChangeList();
@@ -711,6 +724,13 @@ LoginDatabase::EncryptionResult LoginDatabase::InitPasswordFormFromStatement(
form->avatar_url = GURL(s.ColumnString(COLUMN_AVATAR_URL));
form->federation_url = GURL(s.ColumnString(COLUMN_FEDERATION_URL));
form->skip_zero_click = (s.ColumnInt(COLUMN_SKIP_ZERO_CLICK) > 0);
+ int generation_upload_status_int =
+ s.ColumnInt(COLUMN_GENERATION_UPLOAD_STATUS);
+ DCHECK(generation_upload_status_int >= 0 &&
+ generation_upload_status_int <= PasswordForm::UNKNOWN_STATUS);
+ form->generation_upload_status =
+ static_cast<PasswordForm::GenerationUploadStatus>(
+ generation_upload_status_int);
return ENCRYPTION_RESULT_SUCCESS;
}
@@ -726,7 +746,7 @@ bool LoginDatabase::GetLogins(
"signon_realm, ssl_valid, preferred, date_created, blacklisted_by_user, "
"scheme, password_type, possible_usernames, times_used, form_data, "
"date_synced, display_name, avatar_url, "
- "federation_url, skip_zero_click "
+ "federation_url, skip_zero_click, generation_upload_status "
"FROM logins WHERE signon_realm == ? ";
sql::Statement s;
const GURL signon_realm(form.signon_realm);
@@ -824,7 +844,7 @@ bool LoginDatabase::GetLoginsCreatedBetween(
"signon_realm, ssl_valid, preferred, date_created, blacklisted_by_user, "
"scheme, password_type, possible_usernames, times_used, form_data, "
"date_synced, display_name, avatar_url, "
- "federation_url, skip_zero_click FROM logins "
+ "federation_url, skip_zero_click, generation_upload_status FROM logins "
"WHERE date_created >= ? AND date_created < ?"
"ORDER BY origin_url"));
s.BindInt64(0, begin.ToInternalValue());
@@ -856,7 +876,7 @@ bool LoginDatabase::GetLoginsSyncedBetween(
"ssl_valid, preferred, date_created, blacklisted_by_user, "
"scheme, password_type, possible_usernames, times_used, form_data, "
"date_synced, display_name, avatar_url, "
- "federation_url, skip_zero_click FROM logins "
+ "federation_url, skip_zero_click, generation_upload_status FROM logins "
"WHERE date_synced >= ? AND date_synced < ?"
"ORDER BY origin_url"));
s.BindInt64(0, begin.ToInternalValue());
@@ -900,7 +920,7 @@ bool LoginDatabase::GetAllLoginsWithBlacklistSetting(
"signon_realm, ssl_valid, preferred, date_created, blacklisted_by_user, "
"scheme, password_type, possible_usernames, times_used, form_data, "
"date_synced, display_name, avatar_url, "
- "federation_url, skip_zero_click FROM logins "
+ "federation_url, skip_zero_click, generation_upload_status FROM logins "
"WHERE blacklisted_by_user == ? ORDER BY origin_url"));
s.BindInt(0, blacklisted ? 1 : 0);
« no previous file with comments | « components/autofill/core/common/password_form.cc ('k') | components/password_manager/core/browser/password_form_manager.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698