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

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

Issue 1138143002: Pass Device ID in the oauth2/token request. Keep Device ID in local state on Chrome OS. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Added comment. Created 5 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/chrome_signin_client.cc
diff --git a/chrome/browser/signin/chrome_signin_client.cc b/chrome/browser/signin/chrome_signin_client.cc
index a98dd89930a065fbedb05edce03982d03b268889..cc4aed9dbfa6c2b27d9fda82358337ebe26ace7a 100644
--- a/chrome/browser/signin/chrome_signin_client.cc
+++ b/chrome/browser/signin/chrome_signin_client.cc
@@ -33,6 +33,7 @@
#if defined(OS_CHROMEOS)
#include "chrome/browser/chromeos/net/delay_network_call.h"
+#include "chrome/browser/chromeos/profiles/profile_helper.h"
#include "components/user_manager/user_manager.h"
#endif
@@ -40,6 +41,10 @@
#include "chrome/browser/first_run/first_run.h"
#endif
+namespace {
+const char kEphemeralUserDeviceIDPrefix[] = "t_";
+}
+
ChromeSigninClient::ChromeSigninClient(
Profile* profile, SigninErrorController* signin_error_controller)
: profile_(profile),
@@ -47,6 +52,33 @@ ChromeSigninClient::ChromeSigninClient(
signin_error_controller_->AddObserver(this);
#if !defined(OS_CHROMEOS)
net::NetworkChangeNotifier::AddNetworkChangeObserver(this);
+#else
+ // UserManager may not exist in unit_tests.
+ if (!user_manager::UserManager::IsInitialized())
+ return;
+
+ const user_manager::User* user =
+ chromeos::ProfileHelper::Get()->GetUserByProfile(profile_);
+ if (!user)
+ return;
+ auto* user_manager = user_manager::UserManager::Get();
+ const std::string& user_id = user->GetUserID();
+ if (user_manager->GetKnownUserDeviceId(user_id).empty()) {
+ const std::string legacy_device_id =
+ GetPrefs()->GetString(prefs::kGoogleServicesSigninScopedDeviceId);
+ if (!legacy_device_id.empty()) {
+ // Need to move device ID from the old location to the new one, if it has
+ // not been done yet.
+ user_manager->SetKnownUserDeviceId(user_id, legacy_device_id);
+ } else {
+ user_manager->SetKnownUserDeviceId(
+ user_id,
+ GenerateSigninScopedDeviceID(
+ user_manager->IsUserNonCryptohomeDataEphemeral(user_id)));
+ }
+ }
+ GetPrefs()->SetString(prefs::kGoogleServicesSigninScopedDeviceId,
+ std::string());
#endif
}
@@ -77,6 +109,13 @@ bool ChromeSigninClient::SettingsAllowSigninCookies(
cookie_settings->IsSettingCookieAllowed(google_url, google_url);
}
+// static
+std::string ChromeSigninClient::GenerateSigninScopedDeviceID(
+ bool for_ephemeral) {
+ std::string guid = base::GenerateGUID();
+ return for_ephemeral ? kEphemeralUserDeviceIDPrefix + guid : guid;
+}
+
PrefService* ChromeSigninClient::GetPrefs() { return profile_->GetPrefs(); }
scoped_refptr<TokenWebData> ChromeSigninClient::GetDatabase() {
@@ -113,16 +152,33 @@ std::string ChromeSigninClient::GetSigninScopedDeviceId() {
return std::string();
}
+#if !defined(OS_CHROMEOS)
std::string signin_scoped_device_id =
GetPrefs()->GetString(prefs::kGoogleServicesSigninScopedDeviceId);
if (signin_scoped_device_id.empty()) {
// If device_id doesn't exist then generate new and save in prefs.
- signin_scoped_device_id = base::GenerateGUID();
+ signin_scoped_device_id = GenerateSigninScopedDeviceID(false);
DCHECK(!signin_scoped_device_id.empty());
GetPrefs()->SetString(prefs::kGoogleServicesSigninScopedDeviceId,
signin_scoped_device_id);
}
return signin_scoped_device_id;
+#else
+ // UserManager may not exist in unit_tests.
+ if (!user_manager::UserManager::IsInitialized())
+ return std::string();
+
+ const user_manager::User* user =
+ chromeos::ProfileHelper::Get()->GetUserByProfile(profile_);
+ if (!user)
+ return std::string();
+
+ const std::string signin_scoped_device_id =
+ user_manager::UserManager::Get()->GetKnownUserDeviceId(user->GetUserID());
+ LOG_IF(ERROR, signin_scoped_device_id.empty())
+ << "Device ID is not set for user.";
+ return signin_scoped_device_id;
+#endif
}
void ChromeSigninClient::OnSignedOut() {
« no previous file with comments | « chrome/browser/signin/chrome_signin_client.h ('k') | chrome/browser/ui/webui/chromeos/login/gaia_screen_handler.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698