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

Unified Diff: chrome/browser/signin/about_signin_internals.cc

Issue 14888003: [Sync] Log age of auth tokens on authentication failure (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase Created 7 years, 7 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: chrome/browser/signin/about_signin_internals.cc
diff --git a/chrome/browser/signin/about_signin_internals.cc b/chrome/browser/signin/about_signin_internals.cc
index e58a013dd2e198286a570698047579962a3cce97..348ad7d9e0a78596c5858d16b07be0b910991873 100644
--- a/chrome/browser/signin/about_signin_internals.cc
+++ b/chrome/browser/signin/about_signin_internals.cc
@@ -18,6 +18,7 @@
#include "chrome/browser/ui/webui/signin_internals_ui.h"
#include "google_apis/gaia/gaia_constants.h"
+using base::Time;
using namespace signin_internals_util;
AboutSigninInternals::AboutSigninInternals() : profile_(NULL) {
@@ -25,8 +26,8 @@ AboutSigninInternals::AboutSigninInternals() : profile_(NULL) {
for (size_t i = 0; i < kNumTokenPrefs; ++i) {
signin_status_.token_info_map.insert(std::pair<std::string, TokenInfo>(
kTokenPrefsArray[i],
- TokenInfo(
- std::string(), "Not Loaded", std::string(), kTokenPrefsArray[i])));
+ TokenInfo(std::string(), "Not Loaded", std::string(), 0,
+ kTokenPrefsArray[i])));
}
}
@@ -66,15 +67,15 @@ void AboutSigninInternals::NotifySigninValueChanged(
DCHECK(field_index >= 0 &&
field_index < signin_status_.timed_signin_fields.size());
- std::string time_as_str = UTF16ToUTF8(base::TimeFormatFriendlyDateAndTime(
- base::Time::NowFromSystemTime()));
+ Time now = Time::NowFromSystemTime();
+ std::string time_as_str = UTF16ToUTF8(base::TimeFormatFriendlyDate(now));
TimedSigninStatusValue timed_value(value, time_as_str);
signin_status_.timed_signin_fields[field_index] = timed_value;
// Also persist these values in the prefs.
const std::string value_pref = SigninStatusFieldToString(field) + ".value";
- const std::string time_pref = SigninStatusFieldToString(field) + ".time";
+ const std::string time_pref = SigninStatusFieldToString(field) + ".time";
profile_->GetPrefs()->SetString(value_pref.c_str(), value);
profile_->GetPrefs()->SetString(time_pref.c_str(), time_as_str);
@@ -111,10 +112,12 @@ void AboutSigninInternals::RefreshSigninPrefs() {
const std::string value = pref + ".value";
const std::string status = pref + ".status";
const std::string time = pref + ".time";
+ const std::string time_internal = pref + ".time_internal";
TokenInfo token_info(pref_service->GetString(value.c_str()),
pref_service->GetString(status.c_str()),
pref_service->GetString(time.c_str()),
+ pref_service->GetInt64(time_internal.c_str()),
kTokenPrefsArray[i]);
signin_status_.token_info_map[kTokenPrefsArray[i]] = token_info;
@@ -137,16 +140,22 @@ void AboutSigninInternals::NotifyTokenReceivedSuccess(
// Also update preferences.
const std::string value_pref = TokenPrefPath(token_name) + ".value";
const std::string time_pref = TokenPrefPath(token_name) + ".time";
+ const std::string time_internal_pref =
+ TokenPrefPath(token_name) + ".time_internal";
const std::string status_pref = TokenPrefPath(token_name) + ".status";
profile_->GetPrefs()->SetString(value_pref.c_str(), token);
profile_->GetPrefs()->SetString(status_pref.c_str(), "Successful");
// Update timestamp if needed.
if (update_time) {
- const std::string time_as_str = UTF16ToUTF8(
- base::TimeFormatFriendlyDateAndTime(base::Time::NowFromSystemTime()));
+ Time now = Time::NowFromSystemTime();
+ int64 time_as_int = now.ToInternalValue();
+ const std::string time_as_str =
+ UTF16ToUTF8(base::TimeFormatFriendlyDate(now));
signin_status_.token_info_map[token_name].time = time_as_str;
+ signin_status_.token_info_map[token_name].time_internal = time_as_int;
profile_->GetPrefs()->SetString(time_pref.c_str(), time_as_str);
+ profile_->GetPrefs()->SetInt64(time_internal_pref.c_str(), time_as_int);
}
NotifyObservers();
@@ -156,9 +165,10 @@ void AboutSigninInternals::NotifyTokenReceivedSuccess(
void AboutSigninInternals::NotifyTokenReceivedFailure(
const std::string& token_name,
const std::string& error) {
+ Time now = Time::NowFromSystemTime();
+ int64 time_as_int = now.ToInternalValue();
const std::string time_as_str =
- UTF16ToUTF8(base::TimeFormatFriendlyDateAndTime(
- base::Time::NowFromSystemTime()));
+ UTF16ToUTF8(base::TimeFormatFriendlyDate(now));
// This should have been initialized already.
DCHECK(signin_status_.token_info_map.count(token_name));
@@ -166,13 +176,17 @@ void AboutSigninInternals::NotifyTokenReceivedFailure(
signin_status_.token_info_map[token_name].token.clear();
signin_status_.token_info_map[token_name].status = error;
signin_status_.token_info_map[token_name].time = time_as_str;
+ signin_status_.token_info_map[token_name].time_internal = time_as_int;
// Also update preferences.
const std::string value_pref = TokenPrefPath(token_name) + ".value";
const std::string time_pref = TokenPrefPath(token_name) + ".time";
+ const std::string time_internal_pref =
+ TokenPrefPath(token_name) + ".time_internal";
const std::string status_pref = TokenPrefPath(token_name) + ".status";
profile_->GetPrefs()->SetString(value_pref.c_str(), std::string());
profile_->GetPrefs()->SetString(time_pref.c_str(), time_as_str);
+ profile_->GetPrefs()->SetInt64(time_internal_pref.c_str(), time_as_int);
profile_->GetPrefs()->SetString(status_pref.c_str(), error);
NotifyObservers();
@@ -220,3 +234,12 @@ void AboutSigninInternals::NotifyObservers() {
scoped_ptr<DictionaryValue> AboutSigninInternals::GetSigninStatus() {
return signin_status_.ToValue().Pass();
}
+
+Time AboutSigninInternals::GetTokenTime(
+ const std::string& token_name) const {
+ TokenInfoMap::const_iterator iter =
+ signin_status_.token_info_map.find(token_name);
+ if (iter == signin_status_.token_info_map.end())
+ return base::Time();
+ return base::Time::FromInternalValue(iter->second.time_internal);
+}
« no previous file with comments | « chrome/browser/signin/about_signin_internals.h ('k') | chrome/browser/signin/about_signin_internals_factory.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698