| 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 e1cf8a2f928901493ad163d1cf42c37bad08f5dd..f2ab2e4bad5719c6d1a8ebb1f20fff4bb8511762 100644
|
| --- a/components/password_manager/core/browser/login_database.cc
|
| +++ b/components/password_manager/core/browser/login_database.cc
|
| @@ -27,7 +27,7 @@ using autofill::PasswordForm;
|
|
|
| namespace password_manager {
|
|
|
| -static const int kCurrentVersionNumber = 8;
|
| +static const int kCurrentVersionNumber = 9;
|
| static const int kCompatibleVersionNumber = 1;
|
|
|
| Pickle SerializeVector(const std::vector<base::string16>& vec) {
|
| @@ -91,7 +91,7 @@ void BindAddStatement(const PasswordForm& form,
|
| s->BindString(COLUMN_SIGNON_REALM, form.signon_realm);
|
| s->BindInt(COLUMN_SSL_VALID, form.ssl_valid);
|
| s->BindInt(COLUMN_PREFERRED, form.preferred);
|
| - s->BindInt64(COLUMN_DATE_CREATED, form.date_created.ToTimeT());
|
| + s->BindInt64(COLUMN_DATE_CREATED, form.date_created.ToInternalValue());
|
| s->BindInt(COLUMN_BLACKLISTED_BY_USER, form.blacklisted_by_user);
|
| s->BindInt(COLUMN_SCHEME, form.scheme);
|
| s->BindInt(COLUMN_PASSWORD_TYPE, form.type);
|
| @@ -257,6 +257,19 @@ bool LoginDatabase::MigrateOldVersionsAsNeeded() {
|
| // 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,
|
| + "UPDATE logins SET "
|
| + "date_created = "
|
| + "(date_created * ?) + ?"));
|
| + s.BindInt64(0, base::Time::kMicrosecondsPerSecond);
|
| + s.BindInt64(1, base::Time::kTimeTToMicrosecondsOffset);
|
| + if (!s.Run())
|
| + return false;
|
| + meta_table_.SetVersionNumber(9);
|
| + // Fall through.
|
| + }
|
| case kCurrentVersionNumber:
|
| // Already up to date
|
| return true;
|
| @@ -476,7 +489,7 @@ PasswordStoreChangeList LoginDatabase::UpdateLogin(const PasswordForm& form) {
|
| s.BindInt(5, form.times_used);
|
| s.BindString16(6, form.submit_element);
|
| s.BindInt64(7, form.date_synced.ToInternalValue());
|
| - s.BindInt64(8, form.date_created.ToTimeT());
|
| + s.BindInt64(8, form.date_created.ToInternalValue());
|
| s.BindInt(9, form.blacklisted_by_user);
|
| s.BindInt(10, form.scheme);
|
| s.BindInt(11, form.type);
|
| @@ -527,9 +540,9 @@ bool LoginDatabase::RemoveLoginsCreatedBetween(base::Time delete_begin,
|
| sql::Statement s(db_.GetCachedStatement(SQL_FROM_HERE,
|
| "DELETE FROM logins WHERE "
|
| "date_created >= ? AND date_created < ?"));
|
| - s.BindInt64(0, delete_begin.ToTimeT());
|
| + s.BindInt64(0, delete_begin.ToInternalValue());
|
| s.BindInt64(1, delete_end.is_null() ? std::numeric_limits<int64>::max()
|
| - : delete_end.ToTimeT());
|
| + : delete_end.ToInternalValue());
|
|
|
| return s.Run();
|
| }
|
| @@ -571,8 +584,8 @@ LoginDatabase::EncryptionResult LoginDatabase::InitPasswordFormFromStatement(
|
| form->signon_realm = tmp;
|
| form->ssl_valid = (s.ColumnInt(COLUMN_SSL_VALID) > 0);
|
| form->preferred = (s.ColumnInt(COLUMN_PREFERRED) > 0);
|
| - form->date_created = base::Time::FromTimeT(
|
| - s.ColumnInt64(COLUMN_DATE_CREATED));
|
| + form->date_created =
|
| + base::Time::FromInternalValue(s.ColumnInt64(COLUMN_DATE_CREATED));
|
| form->blacklisted_by_user = (s.ColumnInt(COLUMN_BLACKLISTED_BY_USER) > 0);
|
| int scheme_int = s.ColumnInt(COLUMN_SCHEME);
|
| DCHECK((scheme_int >= 0) && (scheme_int <= PasswordForm::SCHEME_OTHER));
|
| @@ -711,9 +724,9 @@ bool LoginDatabase::GetLoginsCreatedBetween(
|
| "federation_url, is_zero_click FROM logins "
|
| "WHERE date_created >= ? AND date_created < ?"
|
| "ORDER BY origin_url"));
|
| - s.BindInt64(0, begin.ToTimeT());
|
| + s.BindInt64(0, begin.ToInternalValue());
|
| s.BindInt64(1, end.is_null() ? std::numeric_limits<int64>::max()
|
| - : end.ToTimeT());
|
| + : end.ToInternalValue());
|
|
|
| while (s.Step()) {
|
| scoped_ptr<PasswordForm> new_form(new PasswordForm());
|
|
|