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

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

Issue 459103005: Introduce new PasswordForm attributes for Credential Management API. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: compilation on Win Created 6 years, 4 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 4fbd3b2279808b2830ce08fe2a25c987f7337697..641d9a1f83adca91fe3ff73ec18d5908e724ae3f 100644
--- a/components/password_manager/core/browser/login_database.cc
+++ b/components/password_manager/core/browser/login_database.cc
@@ -25,7 +25,7 @@ using autofill::PasswordForm;
namespace password_manager {
-static const int kCurrentVersionNumber = 6;
+static const int kCurrentVersionNumber = 7;
static const int kCompatibleVersionNumber = 1;
Pickle SerializeVector(const std::vector<base::string16>& vec) {
@@ -69,7 +69,11 @@ enum LoginTableColumns {
COLUMN_TIMES_USED,
COLUMN_FORM_DATA,
COLUMN_USE_ADDITIONAL_AUTH,
- COLUMN_DATE_SYNCED
+ COLUMN_DATE_SYNCED,
+ COLUMN_DISPLAY_NAME,
+ COLUMN_AVATAR_URL,
+ COLUMN_FEDERATION_URL,
+ COLUMN_ZERO_CLICK,
};
void BindAddStatement(const PasswordForm& form,
@@ -102,6 +106,10 @@ void BindAddStatement(const PasswordForm& form,
form_data_pickle.size());
s->BindInt(COLUMN_USE_ADDITIONAL_AUTH, form.use_additional_authentication);
s->BindInt64(COLUMN_DATE_SYNCED, form.date_synced.ToInternalValue());
+ s->BindString16(COLUMN_DISPLAY_NAME, form.display_name);
+ s->BindString(COLUMN_AVATAR_URL, form.avatar_url.spec());
+ s->BindString(COLUMN_FEDERATION_URL, form.federation_url.spec());
Mike West 2014/08/18 18:52:11 How do we deal with invalid URLs here? Perhaps a D
vasilii 2014/08/20 11:45:34 GURL::spec() will assert and return the empty stri
+ s->BindInt(COLUMN_ZERO_CLICK, form.is_zero_click);
Mike West 2014/08/18 18:52:11 Nit: I'd suggest standardizing on either "zero cli
vasilii 2014/08/20 11:45:34 Done.
}
void AddCallback(int err, sql::Statement* /*stmt*/) {
@@ -203,12 +211,21 @@ bool LoginDatabase::MigrateOldVersionsAsNeeded() {
meta_table_.SetVersionNumber(5);
// Fall through.
case 5:
- if (!db_.Execute(
- "ALTER TABLE logins ADD COLUMN date_synced INTEGER")) {
+ if (!db_.Execute("ALTER TABLE logins ADD COLUMN date_synced INTEGER")) {
return false;
}
meta_table_.SetVersionNumber(6);
// Fall through.
+ case 6:
+ if (!db_.Execute("ALTER TABLE logins ADD COLUMN display_name VARCHAR") ||
+ !db_.Execute("ALTER TABLE logins ADD COLUMN avatar_url VARCHAR") ||
+ !db_.Execute("ALTER TABLE logins "
+ "ADD COLUMN federation_url VARCHAR") ||
+ !db_.Execute("ALTER TABLE logins ADD COLUMN is_zero_click INTEGER")) {
+ return false;
+ }
+ meta_table_.SetVersionNumber(7);
+ // Fall through.
case kCurrentVersionNumber:
// Already up to date
return true;
@@ -240,6 +257,10 @@ bool LoginDatabase::InitLoginsTable() {
"form_data BLOB,"
"use_additional_auth INTEGER,"
"date_synced INTEGER,"
+ "display_name VARCHAR,"
+ "avatar_url VARCHAR,"
+ "federation_url VARCHAR,"
+ "is_zero_click INTEGER,"
"UNIQUE "
"(origin_url, username_element, "
"username_value, password_element, "
@@ -344,8 +365,9 @@ PasswordStoreChangeList LoginDatabase::AddLogin(const PasswordForm& form) {
" password_element, password_value, submit_element, "
" signon_realm, ssl_valid, preferred, date_created, blacklisted_by_user, "
" scheme, password_type, possible_usernames, times_used, form_data, "
- " use_additional_auth, date_synced) VALUES "
- "(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"));
+ " use_additional_auth, date_synced, display_name, avatar_url,"
+ " federation_url, is_zero_click) VALUES "
+ "(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"));
BindAddStatement(form, encrypted_password, &s);
db_.set_error_callback(base::Bind(&AddCallback));
const bool success = s.Run();
@@ -361,8 +383,9 @@ PasswordStoreChangeList LoginDatabase::AddLogin(const PasswordForm& form) {
" password_element, password_value, submit_element, "
" signon_realm, ssl_valid, preferred, date_created, blacklisted_by_user, "
" scheme, password_type, possible_usernames, times_used, form_data, "
- " use_additional_auth, date_synced) VALUES "
- "(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"));
+ " use_additional_auth, date_synced, display_name, avatar_url,"
+ " federation_url, is_zero_click) VALUES "
+ "(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"));
BindAddStatement(form, encrypted_password, &s);
if (s.Run()) {
list.push_back(PasswordStoreChange(PasswordStoreChange::REMOVE, form));
@@ -392,7 +415,11 @@ PasswordStoreChangeList LoginDatabase::UpdateLogin(const PasswordForm& form) {
"date_created = ?, "
"blacklisted_by_user = ?, "
"scheme = ?, "
- "password_type = ? "
+ "password_type = ?, "
+ "display_name = ?, "
+ "avatar_url = ?, "
+ "federation_url = ?, "
+ "is_zero_click = ? "
"WHERE origin_url = ? AND "
"username_element = ? AND "
"username_value = ? AND "
@@ -412,12 +439,16 @@ PasswordStoreChangeList LoginDatabase::UpdateLogin(const PasswordForm& form) {
s.BindInt(9, form.blacklisted_by_user);
s.BindInt(10, form.scheme);
s.BindInt(11, form.type);
+ s.BindString16(12, form.display_name);
+ s.BindString(13, form.avatar_url.spec());
+ s.BindString(14, form.federation_url.spec());
+ s.BindInt(15, form.is_zero_click);
- s.BindString(12, form.origin.spec());
- s.BindString16(13, form.username_element);
- s.BindString16(14, form.username_value);
- s.BindString16(15, form.password_element);
- s.BindString(16, form.signon_realm);
+ s.BindString(16, form.origin.spec());
Mike West 2014/08/18 18:52:11 Nit: It's probably worth adding a "// WHERE starts
vasilii 2014/08/20 11:45:34 Done.
+ s.BindString16(17, form.username_element);
+ s.BindString16(18, form.username_value);
+ s.BindString16(19, form.password_element);
+ s.BindString(20, form.signon_realm);
if (!s.Run())
return PasswordStoreChangeList();
@@ -525,6 +556,10 @@ LoginDatabase::EncryptionResult LoginDatabase::InitPasswordFormFromStatement(
(s.ColumnInt(COLUMN_USE_ADDITIONAL_AUTH) > 0);
form->date_synced = base::Time::FromInternalValue(
s.ColumnInt64(COLUMN_DATE_SYNCED));
+ form->display_name = s.ColumnString16(COLUMN_DISPLAY_NAME);
+ form->avatar_url = GURL(s.ColumnString(COLUMN_AVATAR_URL));
+ form->federation_url = GURL(s.ColumnString(COLUMN_FEDERATION_URL));
Mike West 2014/08/18 18:52:11 Nit: Do we do error handling anywhere else for thi
vasilii 2014/08/20 11:45:34 But empty URLs are invalid too.
+ form->is_zero_click = (s.ColumnInt(COLUMN_ZERO_CLICK) > 0);
return ENCRYPTION_RESULT_SUCCESS;
}
@@ -537,7 +572,8 @@ bool LoginDatabase::GetLogins(const PasswordForm& form,
"password_element, password_value, submit_element, "
"signon_realm, ssl_valid, preferred, date_created, blacklisted_by_user, "
"scheme, password_type, possible_usernames, times_used, form_data, "
- "use_additional_auth, date_synced FROM logins WHERE signon_realm == ? ";
+ "use_additional_auth, date_synced, display_name, avatar_url, "
+ "federation_url, is_zero_click FROM logins WHERE signon_realm == ? ";
sql::Statement s;
const GURL signon_realm(form.signon_realm);
std::string registered_domain =
@@ -632,7 +668,8 @@ bool LoginDatabase::GetLoginsCreatedBetween(
"password_element, password_value, submit_element, "
"signon_realm, ssl_valid, preferred, date_created, blacklisted_by_user, "
"scheme, password_type, possible_usernames, times_used, form_data, "
- "use_additional_auth, date_synced FROM logins "
+ "use_additional_auth, date_synced, display_name, avatar_url, "
+ "federation_url, is_zero_click FROM logins "
"WHERE date_created >= ? AND date_created < ?"
"ORDER BY origin_url"));
s.BindInt64(0, begin.ToTimeT());
@@ -663,7 +700,8 @@ bool LoginDatabase::GetLoginsSyncedBetween(
"password_element, password_value, submit_element, signon_realm, "
"ssl_valid, preferred, date_created, blacklisted_by_user, "
"scheme, password_type, possible_usernames, times_used, form_data, "
- "use_additional_auth, date_synced FROM logins "
+ "use_additional_auth, date_synced, display_name, avatar_url, "
+ "federation_url, is_zero_click FROM logins "
"WHERE date_synced >= ? AND date_synced < ?"
"ORDER BY origin_url"));
s.BindInt64(0, begin.ToInternalValue());
@@ -704,7 +742,8 @@ bool LoginDatabase::GetAllLoginsWithBlacklistSetting(
"password_element, password_value, submit_element, "
"signon_realm, ssl_valid, preferred, date_created, blacklisted_by_user, "
"scheme, password_type, possible_usernames, times_used, form_data, "
- "use_additional_auth, date_synced FROM logins "
+ "use_additional_auth, date_synced, display_name, avatar_url, "
+ "federation_url, is_zero_click FROM logins "
"WHERE blacklisted_by_user == ? ORDER BY origin_url"));
s.BindInt(0, blacklisted ? 1 : 0);

Powered by Google App Engine
This is Rietveld 408576698