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

Unified Diff: chrome/browser/policy/cros_user_policy_identity_strategy.cc

Issue 7233006: Store/Retrieve CrOS user policy in session_manager. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years, 6 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/policy/cros_user_policy_identity_strategy.cc
diff --git a/chrome/browser/policy/user_policy_identity_strategy.cc b/chrome/browser/policy/cros_user_policy_identity_strategy.cc
similarity index 55%
copy from chrome/browser/policy/user_policy_identity_strategy.cc
copy to chrome/browser/policy/cros_user_policy_identity_strategy.cc
index e599101b8b6c38af06fad286eadd71af07c11fc6..a0eab52589c835d73e561a28b7327b1c5f1585b0 100644
--- a/chrome/browser/policy/user_policy_identity_strategy.cc
+++ b/chrome/browser/policy/cros_user_policy_identity_strategy.cc
@@ -2,9 +2,11 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "chrome/browser/policy/user_policy_identity_strategy.h"
+#include "chrome/browser/policy/cros_user_policy_identity_strategy.h"
+#include "base/file_util.h"
#include "chrome/browser/browser_signin.h"
+#include "chrome/browser/chromeos/login/user_manager.h"
#include "chrome/browser/net/gaia/token_service.h"
#include "chrome/browser/policy/proto/device_management_backend.pb.h"
#include "chrome/browser/policy/proto/device_management_constants.h"
@@ -16,70 +18,70 @@
#include "content/common/notification_service.h"
#include "content/common/notification_source.h"
-#if defined(OS_CHROMEOS)
-#include "chrome/browser/chromeos/login/user_manager.h"
-#endif
-
namespace policy {
namespace em = enterprise_management;
-UserPolicyIdentityStrategy::UserPolicyIdentityStrategy(
- Profile* profile,
- const FilePath& cache_file)
- : profile_(profile),
- ALLOW_THIS_IN_INITIALIZER_LIST(weak_ptr_factory_(this)) {
- cache_ = new UserPolicyTokenCache(weak_ptr_factory_.GetWeakPtr(), cache_file);
+CrosUserPolicyIdentityStrategy::CrosUserPolicyIdentityStrategy(Profile* profile)
+ : should_register_(false),
+ profile_(profile) {
registrar_.Add(this,
NotificationType::TOKEN_AVAILABLE,
Source<TokenService>(profile->GetTokenService()));
// Register for the event of user login. The device management token won't
// be fetched until we know the domain of the currently logged in user.
-#if defined(OS_CHROMEOS)
- registrar_.Add(this,
+ registrar_.Add(this,
NotificationType::LOGIN_USER_CHANGED,
NotificationService::AllSources());
-#else
- registrar_.Add(this,
- NotificationType::GOOGLE_SIGNIN_SUCCESSFUL,
- Source<Profile>(profile_));
-#endif
}
-UserPolicyIdentityStrategy::~UserPolicyIdentityStrategy() {}
+CrosUserPolicyIdentityStrategy::~CrosUserPolicyIdentityStrategy() {}
+
+void CrosUserPolicyIdentityStrategy::SetDeviceCredentials(
+ const std::string& device_id,
+ const std::string& token) {
+ should_register_ = true;
+ device_id_ = device_id;
+ device_token_ = token;
+ NotifyDeviceTokenChanged();
+}
-void UserPolicyIdentityStrategy::LoadTokenCache() {
- cache_->Load();
+void CrosUserPolicyIdentityStrategy::EnableRegistration() {
+ should_register_ = true;
+ CheckAndTriggerFetch();
}
-std::string UserPolicyIdentityStrategy::GetDeviceToken() {
+std::string CrosUserPolicyIdentityStrategy::GetDeviceToken() {
return device_token_;
}
-std::string UserPolicyIdentityStrategy::GetDeviceID() {
+std::string CrosUserPolicyIdentityStrategy::GetDeviceID() {
return device_id_;
}
-std::string UserPolicyIdentityStrategy::GetMachineID() {
+std::string CrosUserPolicyIdentityStrategy::GetMachineID() {
return std::string();
}
-std::string UserPolicyIdentityStrategy::GetMachineModel() {
+std::string CrosUserPolicyIdentityStrategy::GetMachineModel() {
return std::string();
}
em::DeviceRegisterRequest_Type
-UserPolicyIdentityStrategy::GetPolicyRegisterType() {
+CrosUserPolicyIdentityStrategy::GetPolicyRegisterType() {
return em::DeviceRegisterRequest::USER;
}
-std::string UserPolicyIdentityStrategy::GetPolicyType() {
+std::string CrosUserPolicyIdentityStrategy::GetPolicyType() {
return kChromeUserPolicyType;
}
-bool UserPolicyIdentityStrategy::GetCredentials(std::string* username,
- std::string* auth_token) {
+bool CrosUserPolicyIdentityStrategy::GetCredentials(std::string* username,
+ std::string* auth_token) {
+ if (!should_register_)
+ return false;
+
*username = GetCurrentUser();
*auth_token = profile_->GetTokenService()->GetTokenForService(
GaiaConstants::kDeviceManagementService);
@@ -87,26 +89,20 @@ bool UserPolicyIdentityStrategy::GetCredentials(std::string* username,
return !username->empty() && !auth_token->empty() && !device_id_.empty();
}
-void UserPolicyIdentityStrategy::OnDeviceTokenAvailable(
+void CrosUserPolicyIdentityStrategy::OnDeviceTokenAvailable(
const std::string& token) {
DCHECK(!device_id_.empty());
device_token_ = token;
- cache_->Store(device_token_, device_id_);
NotifyDeviceTokenChanged();
}
-std::string UserPolicyIdentityStrategy::GetCurrentUser() {
-#if defined(OS_CHROMEOS)
- // TODO(mnissler) On CrOS it seems impossible to figure out what user belongs
- // to a profile. Revisit after multi-profile support landed.
+std::string CrosUserPolicyIdentityStrategy::GetCurrentUser() {
return chromeos::UserManager::Get()->logged_in_user().email();
-#else
- return profile_->GetBrowserSignin()->GetSignedInUsername();
-#endif
}
-void UserPolicyIdentityStrategy::CheckAndTriggerFetch() {
- if (!GetCurrentUser().empty() &&
+void CrosUserPolicyIdentityStrategy::CheckAndTriggerFetch() {
+ if (should_register_ &&
+ !GetCurrentUser().empty() &&
profile_->GetTokenService()->HasTokenForService(
GaiaConstants::kDeviceManagementService)) {
// For user tokens, there is no actual identifier. We generate a random
@@ -116,41 +112,25 @@ void UserPolicyIdentityStrategy::CheckAndTriggerFetch() {
}
}
-void UserPolicyIdentityStrategy::OnTokenCacheLoaded(
- const std::string& token,
- const std::string& device_id) {
- if (!token.empty() && !device_id.empty()) {
- device_token_ = token;
- device_id_ = device_id;
- NotifyDeviceTokenChanged();
- } else {
- CheckAndTriggerFetch();
- }
-}
-
-void UserPolicyIdentityStrategy::Observe(NotificationType type,
- const NotificationSource& source,
- const NotificationDetails& details) {
+void CrosUserPolicyIdentityStrategy::Observe(
+ NotificationType type,
+ const NotificationSource& source,
+ const NotificationDetails& details) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
if (type == NotificationType::TOKEN_AVAILABLE) {
if (Source<TokenService>(source).ptr() == profile_->GetTokenService()) {
const TokenService::TokenAvailableDetails* token_details =
Details<const TokenService::TokenAvailableDetails>(details).ptr();
- if (token_details->service() == GaiaConstants::kDeviceManagementService)
+ if (token_details->service() == GaiaConstants::kDeviceManagementService) {
if (device_token_.empty()) {
// Request a new device management server token, but only in case we
// don't already have it.
CheckAndTriggerFetch();
}
+ }
}
-#if defined(OS_CHROMEOS)
} else if (type == NotificationType::LOGIN_USER_CHANGED) {
CheckAndTriggerFetch();
-#else
- } else if (type == NotificationType::GOOGLE_SIGNIN_SUCCESSFUL) {
- if (profile_ == Source<Profile>(source).ptr())
- CheckAndTriggerFetch();
-#endif
} else {
NOTREACHED();
}

Powered by Google App Engine
This is Rietveld 408576698