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

Unified Diff: components/signin/core/browser/about_signin_internals.cc

Issue 956363002: Add account id/gaia id to sign-in internals page. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebased Created 5 years, 9 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/signin/core/browser/about_signin_internals.cc
diff --git a/components/signin/core/browser/about_signin_internals.cc b/components/signin/core/browser/about_signin_internals.cc
index 47a28550cd640c0a9561b45cbd8af776625067cb..a693d5e8004d0fe75ea7daf6f71c7ad3b09e61ad 100644
--- a/components/signin/core/browser/about_signin_internals.cc
+++ b/components/signin/core/browser/about_signin_internals.cc
@@ -13,6 +13,7 @@
#include "base/strings/stringprintf.h"
#include "base/strings/utf_string_conversions.h"
#include "base/trace_event/trace_event.h"
+#include "components/signin/core/browser/account_tracker_service.h"
#include "components/signin/core/browser/profile_oauth2_token_service.h"
#include "components/signin/core/browser/signin_client.h"
#include "components/signin/core/browser/signin_internals_util.h"
@@ -67,8 +68,12 @@ void AddCookieEntry(base::ListValue* accounts_list,
std::string SigninStatusFieldToLabel(UntimedSigninStatusField field) {
switch (field) {
+ case ACCOUNT_ID:
+ return "Account Id";
+ case GAIA_ID:
+ return "Gaia Id";
case USERNAME:
- return "User Id";
+ return "Username";
case UNTIMED_FIELDS_END:
NOTREACHED();
return std::string();
@@ -80,18 +85,14 @@ std::string SigninStatusFieldToLabel(UntimedSigninStatusField field) {
#if !defined (OS_CHROMEOS)
std::string SigninStatusFieldToLabel(TimedSigninStatusField field) {
switch (field) {
- case SIGNIN_TYPE:
- return "Type";
case AUTHENTICATION_RESULT_RECEIVED:
- return "Last Authentication Result Received";
+ return "Gaia Authentication Result";
case REFRESH_TOKEN_RECEIVED:
- return "Last RefreshToken Received";
- case GET_USER_INFO_STATUS:
- return "Last OnGetUserInfo Received";
- case UBER_TOKEN_STATUS:
- return "Last OnUberToken Received";
- case MERGE_SESSION_STATUS:
- return "Last OnMergeSession Received";
+ return "RefreshToken Received";
+ case SIGNIN_STARTED:
+ return "SigninManager Started";
+ case SIGNIN_COMPLETED:
+ return "SigninManager Completed";
case TIMED_FIELDS_END:
NOTREACHED();
return "Error";
@@ -101,12 +102,41 @@ std::string SigninStatusFieldToLabel(TimedSigninStatusField field) {
}
#endif // !defined (OS_CHROMEOS)
+void SetPref(PrefService* prefs,
+ TimedSigninStatusField field,
+ const std::string& time,
+ const std::string& value) {
+ std::string value_pref = SigninStatusFieldToString(field) + ".value";
+ std::string time_pref = SigninStatusFieldToString(field) + ".time";
+ prefs->SetString(value_pref, value);
+ prefs->SetString(time_pref, time);
+}
+
+void GetPref(PrefService* prefs,
+ TimedSigninStatusField field,
+ std::string* time,
+ std::string* value) {
+ std::string value_pref = SigninStatusFieldToString(field) + ".value";
+ std::string time_pref = SigninStatusFieldToString(field) + ".time";
+ *value = prefs->GetString(value_pref);
+ *time = prefs->GetString(time_pref);
+}
+
+void ClearPref(PrefService* prefs, TimedSigninStatusField field) {
+ std::string value_pref = SigninStatusFieldToString(field) + ".value";
+ std::string time_pref = SigninStatusFieldToString(field) + ".time";
+ prefs->ClearPref(value_pref);
+ prefs->ClearPref(time_pref);
+}
+
} // anonymous namespace
AboutSigninInternals::AboutSigninInternals(
ProfileOAuth2TokenService* token_service,
+ AccountTrackerService* account_tracker,
SigninManagerBase* signin_manager)
: token_service_(token_service),
+ account_tracker_(account_tracker),
signin_manager_(signin_manager),
client_(NULL) {}
@@ -123,22 +153,6 @@ void AboutSigninInternals::RemoveSigninObserver(
}
void AboutSigninInternals::NotifySigninValueChanged(
- const UntimedSigninStatusField& field,
- const std::string& value) {
- unsigned int field_index = field - UNTIMED_FIELDS_BEGIN;
- DCHECK(field_index >= 0 &&
- field_index < signin_status_.untimed_signin_fields.size());
-
- signin_status_.untimed_signin_fields[field_index] = value;
-
- // Also persist these values in the prefs.
- const std::string pref_path = SigninStatusFieldToString(field);
- client_->GetPrefs()->SetString(pref_path.c_str(), value);
-
- NotifyObservers();
-}
-
-void AboutSigninInternals::NotifySigninValueChanged(
const TimedSigninStatusField& field,
const std::string& value) {
unsigned int field_index = field - TIMED_FIELDS_BEGIN;
@@ -153,46 +167,31 @@ void AboutSigninInternals::NotifySigninValueChanged(
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";
- client_->GetPrefs()->SetString(value_pref.c_str(), value);
- client_->GetPrefs()->SetString(time_pref.c_str(), time_as_str);
+ SetPref(client_->GetPrefs(), field, value, time_as_str);
+
+ // If the user is restarting a sign in process, clear the fields that are
+ // to come.
+ if (field == AUTHENTICATION_RESULT_RECEIVED) {
+ ClearPref(client_->GetPrefs(), REFRESH_TOKEN_RECEIVED);
+ ClearPref(client_->GetPrefs(), SIGNIN_STARTED);
+ ClearPref(client_->GetPrefs(), SIGNIN_COMPLETED);
+ }
NotifyObservers();
}
void AboutSigninInternals::RefreshSigninPrefs() {
- // Since the AboutSigninInternals has a dependency on the SigninManager
- // (as seen in the AboutSigninInternalsFactory) the SigninManager can have
- // the AuthenticatedUsername set before AboutSigninInternals can observe it.
- // For that scenario, read the AuthenticatedUsername if it exists.
- if (signin_manager_->IsAuthenticated()) {
- signin_status_.untimed_signin_fields[USERNAME] =
- signin_manager_->GetAuthenticatedUsername();
- }
-
// Return if no client exists. Can occur in unit tests.
if (!client_)
return;
PrefService* pref_service = client_->GetPrefs();
- for (int i = UNTIMED_FIELDS_BEGIN; i < UNTIMED_FIELDS_END; ++i) {
- const std::string pref_path =
- SigninStatusFieldToString(static_cast<UntimedSigninStatusField>(i));
-
- signin_status_.untimed_signin_fields[i - UNTIMED_FIELDS_BEGIN] =
- pref_service->GetString(pref_path.c_str());
- }
for (int i = TIMED_FIELDS_BEGIN; i < TIMED_FIELDS_END; ++i) {
- const std::string value_pref =
- SigninStatusFieldToString(static_cast<TimedSigninStatusField>(i)) +
- ".value";
- const std::string time_pref =
- SigninStatusFieldToString(static_cast<TimedSigninStatusField>(i)) +
- ".time";
-
- TimedSigninStatusValue value(pref_service->GetString(value_pref.c_str()),
- pref_service->GetString(time_pref.c_str()));
+ std::string time_str;
+ std::string value_str;
+ GetPref(pref_service, static_cast<TimedSigninStatusField>(i),
+ &time_str, &value_str);
+ TimedSigninStatusValue value(value_str, time_str);
signin_status_.timed_signin_fields[i - TIMED_FIELDS_BEGIN] = value;
}
@@ -241,7 +240,8 @@ void AboutSigninInternals::NotifyObservers() {
"422460 AboutSigninInternals::NotifyObservers 0.5"));
scoped_ptr<base::DictionaryValue> signin_status_value =
- signin_status_.ToValue(product_version);
+ signin_status_.ToValue(account_tracker_, signin_manager_,
+ product_version);
// TODO(robliao): Remove ScopedTracker below once https://crbug.com/422460 is
// fixed.
@@ -255,7 +255,8 @@ void AboutSigninInternals::NotifyObservers() {
}
scoped_ptr<base::DictionaryValue> AboutSigninInternals::GetSigninStatus() {
- return signin_status_.ToValue(client_->GetProductVersion()).Pass();
+ return signin_status_.ToValue(account_tracker_, signin_manager_,
+ client_->GetProductVersion()).Pass();
}
void AboutSigninInternals::OnAccessTokenRequested(
@@ -356,11 +357,27 @@ void AboutSigninInternals::OnListAccountsFailure(
VLOG(1) << "AboutSigninInternals::OnListAccountsFailure:" << error.ToString();
}
+void AboutSigninInternals::GoogleSigninFailed(
+ const GoogleServiceAuthError& error) {
+ NotifyObservers();
+}
+
+void AboutSigninInternals::GoogleSigninSucceeded(const std::string& account_id,
+ const std::string& username,
+ const std::string& password) {
+ NotifyObservers();
+}
+
+void AboutSigninInternals::GoogleSignedOut(const std::string& account_id,
+ const std::string& username) {
+ NotifyObservers();
+}
+
void AboutSigninInternals::OnListAccountsComplete(
std::vector<std::pair<std::string, bool> >& gaia_accounts) {
- base::DictionaryValue signin_status;
+ base::DictionaryValue cookie_status;
base::ListValue* cookie_info = new base::ListValue();
- signin_status.Set("cookie_info", cookie_info);
+ cookie_status.Set("cookie_info", cookie_info);
for (size_t i = 0; i < gaia_accounts.size(); ++i) {
AddCookieEntry(cookie_info,
@@ -374,7 +391,7 @@ void AboutSigninInternals::OnListAccountsComplete(
// Update the observers that the cookie's accounts are updated.
FOR_EACH_OBSERVER(AboutSigninInternals::Observer,
signin_observers_,
- OnCookieAccountsFetched(&signin_status));
+ OnCookieAccountsFetched(&cookie_status));
}
AboutSigninInternals::TokenInfo::TokenInfo(
@@ -437,8 +454,7 @@ base::DictionaryValue* AboutSigninInternals::TokenInfo::ToValue() const {
}
AboutSigninInternals::SigninStatus::SigninStatus()
- : untimed_signin_fields(UNTIMED_FIELDS_COUNT),
- timed_signin_fields(TIMED_FIELDS_COUNT) {}
+ : timed_signin_fields(TIMED_FIELDS_COUNT) {}
AboutSigninInternals::SigninStatus::~SigninStatus() {
for (TokenInfoMap::iterator it = token_info_map.begin();
@@ -461,7 +477,9 @@ AboutSigninInternals::TokenInfo* AboutSigninInternals::SigninStatus::FindToken(
}
scoped_ptr<base::DictionaryValue> AboutSigninInternals::SigninStatus::ToValue(
- std::string product_version) {
+ AccountTrackerService* account_tracker,
+ SigninManagerBase* signin_manager,
+ const std::string& product_version) {
// TODO(robliao): Remove ScopedTracker below once https://crbug.com/422460 is
// fixed.
tracked_objects::ScopedTracker tracking_profile1(
@@ -474,20 +492,17 @@ scoped_ptr<base::DictionaryValue> AboutSigninInternals::SigninStatus::ToValue(
// A summary of signin related info first.
base::ListValue* basic_info = AddSection(signin_info, "Basic Information");
- const std::string signin_status_string =
- untimed_signin_fields[USERNAME - UNTIMED_FIELDS_BEGIN].empty()
- ? "Not Signed In"
- : "Signed In";
AddSectionEntry(basic_info, "Chrome Version", product_version);
- AddSectionEntry(basic_info, "Signin Status", signin_status_string);
- AddSectionEntry(basic_info, "Webview Based Signin Enabled?",
- switches::IsEnableWebviewBasedSignin() == true ? "True" : "False");
- AddSectionEntry(basic_info, "New Avatar Menu Enabled?",
- switches::IsNewAvatarMenu() == true ? "True" : "False");
- AddSectionEntry(basic_info, "New Profile Management Enabled?",
- switches::IsNewProfileManagement() == true ? "True" : "False");
- AddSectionEntry(basic_info, "Account Consistency Enabled?",
- switches::IsEnableAccountConsistency() == true ? "True" : "False");
+ AddSectionEntry(basic_info, "Webview Based Signin?",
+ switches::IsEnableWebviewBasedSignin() == true ? "On" : "Off");
+ AddSectionEntry(basic_info, "New Avatar Menu?",
+ switches::IsNewAvatarMenu() == true ? "On" : "Off");
+ AddSectionEntry(basic_info, "New Profile Management?",
+ switches::IsNewProfileManagement() == true ? "On" : "Off");
+ AddSectionEntry(basic_info, "Account Consistency?",
+ switches::IsEnableAccountConsistency() == true ? "On" : "Off");
+ AddSectionEntry(basic_info, "Signin Status",
+ signin_manager->IsAuthenticated() ? "Signed In" : "Not Signed In");
// TODO(robliao): Remove ScopedTracker below once https://crbug.com/422460 is
// fixed.
@@ -495,12 +510,21 @@ scoped_ptr<base::DictionaryValue> AboutSigninInternals::SigninStatus::ToValue(
FROM_HERE_WITH_EXPLICIT_FUNCTION(
"422460 AboutSigninInternals::SigninStatus::ToValue2"));
- // Only add username. SID and LSID have moved to tokens section.
- const std::string field =
- SigninStatusFieldToLabel(static_cast<UntimedSigninStatusField>(USERNAME));
- AddSectionEntry(basic_info,
- field,
- untimed_signin_fields[USERNAME - UNTIMED_FIELDS_BEGIN]);
+ if (signin_manager->IsAuthenticated()) {
+ std::string account_id = signin_manager->GetAuthenticatedAccountId();
+ AddSectionEntry(basic_info,
+ SigninStatusFieldToLabel(
+ static_cast<UntimedSigninStatusField>(ACCOUNT_ID)),
+ account_id);
+ AddSectionEntry(basic_info,
+ SigninStatusFieldToLabel(
+ static_cast<UntimedSigninStatusField>(GAIA_ID)),
+ account_tracker->GetAccountInfo(account_id).gaia);
+ AddSectionEntry(basic_info,
+ SigninStatusFieldToLabel(
+ static_cast<UntimedSigninStatusField>(USERNAME)),
+ signin_manager->GetAuthenticatedUsername());
+ }
#if !defined(OS_CHROMEOS)
// TODO(robliao): Remove ScopedTracker below once https://crbug.com/422460 is
« no previous file with comments | « components/signin/core/browser/about_signin_internals.h ('k') | components/signin/core/browser/signin_internals_util.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698