Chromium Code Reviews| Index: chrome/browser/password_manager/native_backend_gnome_x.cc |
| diff --git a/chrome/browser/password_manager/native_backend_gnome_x.cc b/chrome/browser/password_manager/native_backend_gnome_x.cc |
| index b3571d6b3384b2b690b2987418427bb155dae96d..9d6ead18909e0d35086550d2703c28fccf5f8bba 100644 |
| --- a/chrome/browser/password_manager/native_backend_gnome_x.cc |
| +++ b/chrome/browser/password_manager/native_backend_gnome_x.cc |
| @@ -31,6 +31,10 @@ using base::UTF8ToUTF16; |
| using base::UTF16ToUTF8; |
| using content::BrowserThread; |
| +namespace { |
| +const int kMaxPossibleTimeTValue = std::numeric_limits<int>::max(); |
| +} |
| + |
| #define GNOME_KEYRING_DEFINE_POINTER(name) \ |
| typeof(&::gnome_keyring_##name) GnomeKeyringLoader::gnome_keyring_##name; |
| GNOME_KEYRING_FOR_EACH_FUNC(GNOME_KEYRING_DEFINE_POINTER) |
| @@ -131,7 +135,15 @@ scoped_ptr<PasswordForm> FormFromAttributes(GnomeKeyringAttributeList* attrs) { |
| bool date_ok = base::StringToInt64(string_attr_map["date_created"], |
| &date_created); |
| DCHECK(date_ok); |
| - form->date_created = base::Time::FromTimeT(date_created); |
| + // In the past |date_created| was stored as time_t, currently is stored as |
|
vabr (Chromium)
2015/02/04 12:23:51
To improve my grammar, some punctuation and missin
dvadym
2015/02/04 14:24:00
Done.
|
| + // base::Time's internal value. We need to distinguish, which format the |
| + // number in |date_created| was stored in. We use tha fact that |
|
vabr (Chromium)
2015/02/04 12:23:51
Seems like I planted a typo in my suggestion. :)
t
dvadym
2015/02/04 14:24:00
Done.
|
| + // kMaxPossibleTimeTValue interpreted as the internal value corresponds to an |
| + // unlikely date back in 17th century, and anything above |
| + // kMaxPossibleTimeTValue clearly must be in the internal value format. |
| + form->date_created = date_created < kMaxPossibleTimeTValue |
| + ? base::Time::FromTimeT(date_created) |
| + : base::Time::FromInternalValue(date_created); |
| form->blacklisted_by_user = uint_attr_map["blacklisted_by_user"]; |
| form->type = static_cast<PasswordForm::Type>(uint_attr_map["type"]); |
| form->times_used = uint_attr_map["times_used"]; |
| @@ -317,11 +329,11 @@ class GKRMethod : public GnomeKeyringLoader { |
| void GKRMethod::AddLogin(const PasswordForm& form, const char* app_string) { |
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| - time_t date_created = form.date_created.ToTimeT(); |
| + int64 date_created = form.date_created.ToInternalValue(); |
| // If we are asked to save a password with 0 date, use the current time. |
| - // We don't want to actually save passwords as though on January 1, 1970. |
| + // We don't want to actually save passwords as though on January 1, 1601. |
| if (!date_created) |
| - date_created = time(NULL); |
| + date_created = base::Time::Now().ToInternalValue(); |
| int64 date_synced = form.date_synced.ToInternalValue(); |
| gnome_keyring_store_password( |
| &kGnomeSchema, |