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

Unified Diff: chrome/browser/profiles/profile_info_cache.cc

Issue 7155015: Store profile avatar to preferences (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: '' Created 9 years, 5 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
« no previous file with comments | « chrome/browser/profiles/profile_info_cache.h ('k') | chrome/browser/profiles/profile_manager.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/profiles/profile_info_cache.cc
===================================================================
--- chrome/browser/profiles/profile_info_cache.cc (revision 91576)
+++ chrome/browser/profiles/profile_info_cache.cc (working copy)
@@ -4,8 +4,10 @@
#include "chrome/browser/profiles/profile_info_cache.h"
+#include "base/format_macros.h"
#include "base/logging.h"
#include "base/memory/scoped_ptr.h"
+#include "base/rand_util.h"
#include "base/string_number_conversions.h"
#include "base/stringprintf.h"
#include "base/utf_string_conversions.h"
@@ -13,7 +15,10 @@
#include "chrome/browser/prefs/pref_service.h"
#include "chrome/browser/prefs/scoped_user_pref_update.h"
#include "chrome/common/pref_names.h"
+#include "content/common/notification_service.h"
+#include "grit/generated_resources.h"
#include "grit/theme_resources.h"
+#include "ui/base/l10n/l10n_util.h"
#include "ui/base/resource/resource_bundle.h"
namespace {
@@ -107,7 +112,7 @@
const FilePath& profile_path) const {
if (profile_path.DirName() != user_data_dir_)
return std::string::npos;
- std::string search_key = profile_path.BaseName().MaybeAsASCII();
+ std::string search_key = CacheKeyFromProfilePath(profile_path);
for (size_t i = 0; i < sorted_keys_.size(); ++i) {
if (sorted_keys_[i] == search_key)
return i;
@@ -166,6 +171,48 @@
SetInfoForProfileAtIndex(index, info.release());
}
+string16 ProfileInfoCache::ChooseNameForNewProfile() {
+ for (int name_index = 1; ; ++name_index) {
+ string16 name = l10n_util::GetStringFUTF16Int(
+ IDS_NUMBERED_PROFILE_NAME, name_index);
+ bool name_found = false;
+ for (size_t i = 0; i < GetNumberOfProfiles(); ++i) {
+ if (GetNameOfProfileAtIndex(i) == name) {
+ name_found = true;
+ break;
+ }
+ }
+ if (!name_found)
+ return name;
+ }
+}
+
+int ProfileInfoCache::ChooseAvatarIconIndexForNewProfile() {
+ // Start with a random icon to introduce variety.
+ size_t rand_start_index = base::RandInt(0, GetDefaultAvatarIconCount() - 1);
+ for (size_t icon_index = 0; icon_index < GetDefaultAvatarIconCount();
+ ++icon_index) {
+ size_t rand_icon_index =
+ (icon_index + rand_start_index) % GetDefaultAvatarIconCount();
+ bool icon_found = false;
+ for (size_t i = 0; i < GetNumberOfProfiles(); ++i) {
+ if (GetAvatarIconIndexOfProfileAtIndex(i) == rand_icon_index) {
+ icon_found = true;
+ break;
+ }
+ }
+ if (!icon_found)
+ return rand_icon_index;
+ }
+
+ // If there's no unique icon then just use the random one.
+ return rand_start_index;
+}
+
+const FilePath& ProfileInfoCache::GetUserDataDir() const {
+ return user_data_dir_;
+}
+
size_t ProfileInfoCache::GetDefaultAvatarIconCount() {
return kDefaultAvatarIconsCount;
}
@@ -177,7 +224,7 @@
std::string ProfileInfoCache::GetDefaultAvatarIconUrl(size_t index) {
DCHECK_LT(index, kDefaultAvatarIconsCount);
- return StringPrintf("%s%zu", kDefaultUrlPrefix, index);
+ return StringPrintf("%s%" PRIuS, kDefaultUrlPrefix, index);
}
const DictionaryValue* ProfileInfoCache::GetInfoForProfileAtIndex(
@@ -195,6 +242,11 @@
DictionaryPrefUpdate update(prefs_, prefs::kProfileInfoCache);
DictionaryValue* cache = update.Get();
cache->Set(sorted_keys_[index], info);
+
+ NotificationService::current()->Notify(
+ NotificationType::PROFILE_CACHED_INFO_CHANGED,
+ NotificationService::AllSources(),
+ NotificationService::NoDetails());
}
std::string ProfileInfoCache::CacheKeyFromProfilePath(
« no previous file with comments | « chrome/browser/profiles/profile_info_cache.h ('k') | chrome/browser/profiles/profile_manager.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698