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

Unified Diff: chrome/browser/managed_mode/managed_user_registration_utility.cc

Issue 23691045: Update managed user registration to allow updating the avatar (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: bauerb@+ Created 7 years, 3 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/managed_mode/managed_user_registration_utility.cc
diff --git a/chrome/browser/managed_mode/managed_user_registration_utility.cc b/chrome/browser/managed_mode/managed_user_registration_utility.cc
index 0b9104d45eb96777aa8ced04e8c182b12a78b0bc..ce7277215b086ebcfca26bd5bd2dcd21c09a4db4 100644
--- a/chrome/browser/managed_mode/managed_user_registration_utility.cc
+++ b/chrome/browser/managed_mode/managed_user_registration_utility.cc
@@ -50,10 +50,12 @@ class ManagedUserRegistrationUtilityImpl
// Registers a new managed user with the server. |managed_user_id| is a new
// unique ID for the new managed user. If its value is the same as that of
// of one of the existing managed users, then the same user will be created
- // on this machine. |info| contains necessary information like the display
- // name of the the user. |callback| is called with the result of the
- // registration. We use the info here and not the profile, because on
- // Chrome OS the profile of the managed user does not yet exist.
+ // on this machine (and if he has no avatar in sync, his avatar will
+ // be updated). |info| contains necessary information like
+ // the display name of the user and his avatar. |callback| is called
+ // with the result of the registration. We use the info here and not the
+ // profile, because on Chrome OS the profile of the managed user does not
+ // yet exist.
virtual void Register(const std::string& managed_user_id,
const ManagedUserRegistrationInfo& info,
const RegistrationCallback& callback) OVERRIDE;
@@ -100,6 +102,7 @@ class ManagedUserRegistrationUtilityImpl
std::string pending_managed_user_token_;
bool pending_managed_user_acknowledged_;
bool is_existing_managed_user_;
+ bool avatar_updated_;
RegistrationCallback callback_;
DISALLOW_COPY_AND_ASSIGN(ManagedUserRegistrationUtilityImpl);
@@ -182,7 +185,8 @@ ManagedUserRegistrationUtilityImpl::ManagedUserRegistrationUtilityImpl(
token_fetcher_(token_fetcher.Pass()),
managed_user_sync_service_(service),
pending_managed_user_acknowledged_(false),
- is_existing_managed_user_(false) {
+ is_existing_managed_user_(false),
+ avatar_updated_(false) {
managed_user_sync_service_->AddObserver(this);
}
@@ -207,6 +211,11 @@ void ManagedUserRegistrationUtilityImpl::Register(
info.master_key,
info.avatar_index);
} else {
+ avatar_updated_ =
+ managed_user_sync_service_->UpdateManagedUserAvatarIfNeeded(
+ managed_user_id,
+ info.avatar_index);
+
// User already exists, don't wait for acknowledgment.
OnManagedUserAcknowledged(managed_user_id);
}
@@ -282,17 +291,21 @@ void ManagedUserRegistrationUtilityImpl::CompleteRegistration(
if (callback_.is_null())
return;
- // We check that the user being registered is not an existing managed
- // user before deleting it from sync to avoid accidental deletion of
- // existing managed users by just canceling the registration for example.
- if (pending_managed_user_token_.empty() && !is_existing_managed_user_) {
+ if (pending_managed_user_token_.empty()) {
DCHECK(!pending_managed_user_id_.empty());
- // Remove the pending managed user if we weren't successful.
- DictionaryPrefUpdate update(prefs_, prefs::kManagedUsers);
- bool success =
- update->RemoveWithoutPathExpansion(pending_managed_user_id_, NULL);
- DCHECK(success);
- managed_user_sync_service_->DeleteManagedUser(pending_managed_user_id_);
+
+ if (!is_existing_managed_user_) {
+ // Remove the pending managed user if we weren't successful.
+ // However, check that we are not importing a managed user
+ // before deleting it from sync to avoid accidental deletion of
+ // existing managed users by just canceling the registration for example.
+ managed_user_sync_service_->DeleteManagedUser(pending_managed_user_id_);
+ } else if (avatar_updated_) {
+ // Canceling (or failing) a managed user import that did set the avatar
+ // should undo this change.
+ managed_user_sync_service_->ClearManagedUserAvatar(
+ pending_managed_user_id_);
+ }
}
if (run_callback)

Powered by Google App Engine
This is Rietveld 408576698