Index: chrome/browser/chromeos/login/user_image_sync_observer.cc |
diff --git a/chrome/browser/chromeos/login/user_image_sync_observer.cc b/chrome/browser/chromeos/login/user_image_sync_observer.cc |
deleted file mode 100644 |
index c699a6030554213869341573525a205f803e8b8d..0000000000000000000000000000000000000000 |
--- a/chrome/browser/chromeos/login/user_image_sync_observer.cc |
+++ /dev/null |
@@ -1,212 +0,0 @@ |
-// Copyright 2013 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "chrome/browser/chromeos/login/user_image_sync_observer.h" |
- |
-#include "base/bind.h" |
-#include "base/prefs/pref_change_registrar.h" |
-#include "base/prefs/scoped_user_pref_update.h" |
-#include "chrome/browser/browser_process.h" |
-#include "chrome/browser/chrome_notification_types.h" |
-#include "chrome/browser/chromeos/login/default_user_images.h" |
-#include "chrome/browser/chromeos/login/screens/user_image_screen.h" |
-#include "chrome/browser/chromeos/login/user.h" |
-#include "chrome/browser/chromeos/login/user_image_manager.h" |
-#include "chrome/browser/chromeos/login/wizard_controller.h" |
-#include "chrome/browser/chromeos/profiles/profile_helper.h" |
-#include "chrome/browser/prefs/pref_service_syncable.h" |
-#include "chrome/browser/profiles/profile.h" |
-#include "chrome/browser/profiles/profile_manager.h" |
-#include "chrome/common/pref_names.h" |
-#include "content/public/browser/notification_registrar.h" |
-#include "content/public/browser/notification_service.h" |
- |
-namespace chromeos { |
-namespace { |
- |
-// A dictionary containing info about user image. |
-const char kUserImageInfo[] = "user_image_info"; |
-// Path to value with image index. |
-const char kImageIndex[] = "image_index"; |
- |
-bool IsIndexSupported(int index) { |
- return (index >= kFirstDefaultImageIndex && index < kDefaultImagesCount) || |
- (index == User::kProfileImageIndex); |
-} |
- |
-Profile* GetUserProfile() { |
- ProfileManager* profile_manager = g_browser_process->profile_manager(); |
- if (!profile_manager || !profile_manager->IsLoggedIn()) |
- return NULL; |
- base::FilePath profile_path = profile_manager->user_data_dir().Append( |
- profile_manager->GetInitialProfileDir()); |
- return profile_manager->GetProfileByPath(profile_path); |
-} |
- |
-} // anonymous namespace |
- |
-UserImageSyncObserver::Observer::~Observer() {} |
- |
-UserImageSyncObserver::UserImageSyncObserver(const User* user) |
- : user_(user), |
- prefs_(NULL), |
- is_synced_(false), |
- local_image_changed_(false) { |
- notification_registrar_.reset(new content::NotificationRegistrar); |
- notification_registrar_->Add(this, |
- chrome::NOTIFICATION_LOGIN_USER_IMAGE_CHANGED, |
- content::NotificationService::AllSources()); |
- Profile* profile = GetUserProfile(); |
- if (profile) { |
- OnProfileGained(profile); |
- } else { |
- notification_registrar_->Add(this, |
- chrome::NOTIFICATION_LOGIN_USER_PROFILE_PREPARED, |
- content::NotificationService::AllSources()); |
- } |
-} |
- |
-UserImageSyncObserver::~UserImageSyncObserver() { |
- if (!is_synced_ && prefs_) |
- prefs_->RemoveObserver(this); |
- if (pref_change_registrar_) |
- pref_change_registrar_->RemoveAll(); |
-} |
- |
-// static |
-void UserImageSyncObserver::RegisterProfilePrefs( |
- user_prefs::PrefRegistrySyncable* registry_) { |
- registry_->RegisterDictionaryPref( |
- kUserImageInfo, |
- user_prefs::PrefRegistrySyncable::SYNCABLE_PRIORITY_PREF); |
-} |
- |
-void UserImageSyncObserver::AddObserver(Observer* observer) { |
- observer_list_.AddObserver(observer); |
-} |
- |
-void UserImageSyncObserver::RemoveObserver(Observer* observer) { |
- observer_list_.RemoveObserver(observer); |
-} |
- |
-void UserImageSyncObserver::OnProfileGained(Profile* profile) { |
- prefs_ = PrefServiceSyncable::FromProfile(profile); |
- pref_change_registrar_.reset(new PrefChangeRegistrar); |
- pref_change_registrar_->Init(prefs_); |
- pref_change_registrar_->Add(kUserImageInfo, |
- base::Bind(&UserImageSyncObserver::OnPreferenceChanged, |
- base::Unretained(this))); |
- is_synced_ = prefs_->IsPrioritySyncing(); |
- if (!is_synced_) { |
- prefs_->AddObserver(this); |
- } else { |
- OnInitialSync(); |
- } |
-} |
- |
-void UserImageSyncObserver::OnInitialSync() { |
- int synced_index; |
- bool local_image_updated = false; |
- if (!GetSyncedImageIndex(&synced_index) || local_image_changed_) { |
- UpdateSyncedImageFromLocal(); |
- } else if (IsIndexSupported(synced_index) && CanUpdateLocalImageNow()) { |
- UpdateLocalImageFromSynced(); |
- local_image_updated = true; |
- } |
- FOR_EACH_OBSERVER(UserImageSyncObserver::Observer, observer_list_, |
- OnInitialSync(local_image_updated)); |
-} |
- |
-void UserImageSyncObserver::OnPreferenceChanged(const std::string& pref_name) { |
- // OnPreferenceChanged can be called before OnIsSyncingChanged. |
- if (!is_synced_) { |
- is_synced_ = true; |
- prefs_->RemoveObserver(this); |
- OnInitialSync(); |
- } else if (CanUpdateLocalImageNow()) { |
- UpdateLocalImageFromSynced(); |
- } |
-} |
- |
-void UserImageSyncObserver::Observe( |
- int type, |
- const content::NotificationSource& source, |
- const content::NotificationDetails& details) { |
- if (type == chrome::NOTIFICATION_LOGIN_USER_PROFILE_PREPARED) { |
- Profile* profile = content::Details<Profile>(details).ptr(); |
- if (GetUserProfile() != profile) |
- return; |
- notification_registrar_->Remove( |
- this, |
- chrome::NOTIFICATION_LOGIN_USER_PROFILE_PREPARED, |
- content::NotificationService::AllSources()); |
- OnProfileGained(profile); |
- } else if (type == chrome::NOTIFICATION_LOGIN_USER_IMAGE_CHANGED) { |
- if (is_synced_) |
- UpdateSyncedImageFromLocal(); |
- else |
- local_image_changed_ = true; |
- } else { |
- NOTREACHED(); |
- } |
-} |
- |
-void UserImageSyncObserver::OnIsSyncingChanged() { |
- is_synced_ = prefs_->IsPrioritySyncing(); |
- if (is_synced_) { |
- prefs_->RemoveObserver(this); |
- OnInitialSync(); |
- } |
-} |
- |
-void UserImageSyncObserver::UpdateSyncedImageFromLocal() { |
- int local_index = user_->image_index(); |
- if (!IsIndexSupported(local_index)) { |
- local_index = User::kInvalidImageIndex; |
- } |
- int synced_index; |
- if (GetSyncedImageIndex(&synced_index) && (synced_index == local_index)) |
- return; |
- DictionaryPrefUpdate update(prefs_, kUserImageInfo); |
- base::DictionaryValue* dict = update.Get(); |
- dict->SetInteger(kImageIndex, local_index); |
- VLOG(1) << "Saved avatar index " << local_index << " to sync."; |
-} |
- |
-void UserImageSyncObserver::UpdateLocalImageFromSynced() { |
- int synced_index; |
- GetSyncedImageIndex(&synced_index); |
- int local_index = user_->image_index(); |
- if ((synced_index == local_index) || !IsIndexSupported(synced_index)) |
- return; |
- UserImageManager* image_manager = |
- UserManager::Get()->GetUserImageManager(user_->email()); |
- if (synced_index == User::kProfileImageIndex) { |
- image_manager->SaveUserImageFromProfileImage(); |
- } else { |
- image_manager->SaveUserDefaultImageIndex(synced_index); |
- } |
- VLOG(1) << "Loaded avatar index " << synced_index << " from sync."; |
-} |
- |
-bool UserImageSyncObserver::GetSyncedImageIndex(int* index) { |
- *index = User::kInvalidImageIndex; |
- const base::DictionaryValue* dict = prefs_->GetDictionary(kUserImageInfo); |
- return dict && dict->GetInteger(kImageIndex, index); |
-} |
- |
-bool UserImageSyncObserver::CanUpdateLocalImageNow() { |
- if (WizardController* wizard_controller = |
- WizardController::default_controller()) { |
- UserImageScreen* screen = wizard_controller->GetUserImageScreen(); |
- if (wizard_controller->current_screen() == screen) { |
- if (screen->user_selected_image()) |
- return false; |
- } |
- } |
- return true; |
-} |
- |
-} // namespace chromeos |
- |