OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/profiles/profile_info_cache.h" | 5 #include "chrome/browser/profiles/profile_info_cache.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/file_util.h" | 8 #include "base/file_util.h" |
9 #include "base/format_macros.h" | 9 #include "base/format_macros.h" |
10 #include "base/i18n/case_conversion.h" | 10 #include "base/i18n/case_conversion.h" |
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
82 IDR_PROFILE_AVATAR_16, | 82 IDR_PROFILE_AVATAR_16, |
83 IDR_PROFILE_AVATAR_17, | 83 IDR_PROFILE_AVATAR_17, |
84 IDR_PROFILE_AVATAR_18, | 84 IDR_PROFILE_AVATAR_18, |
85 IDR_PROFILE_AVATAR_19, | 85 IDR_PROFILE_AVATAR_19, |
86 IDR_PROFILE_AVATAR_20, | 86 IDR_PROFILE_AVATAR_20, |
87 IDR_PROFILE_AVATAR_21, | 87 IDR_PROFILE_AVATAR_21, |
88 IDR_PROFILE_AVATAR_22, | 88 IDR_PROFILE_AVATAR_22, |
89 IDR_PROFILE_AVATAR_23, | 89 IDR_PROFILE_AVATAR_23, |
90 IDR_PROFILE_AVATAR_24, | 90 IDR_PROFILE_AVATAR_24, |
91 IDR_PROFILE_AVATAR_25, | 91 IDR_PROFILE_AVATAR_25, |
| 92 IDR_PROFILE_AVATAR_26, |
92 }; | 93 }; |
93 | 94 |
| 95 // This avatar does not exist on the server, the high res copy is in the build. |
| 96 const char* kNoHighResAvatar = "NothingToDownload"; |
| 97 |
94 // File names for the high-res avatar icon resources. In the same order as | 98 // File names for the high-res avatar icon resources. In the same order as |
95 // the avatars in kDefaultAvatarIconResources. | 99 // the avatars in kDefaultAvatarIconResources. |
96 const char* kDefaultAvatarIconResourceFileNames[] = { | 100 const char* kDefaultAvatarIconResourceFileNames[] = { |
97 "avatar_generic.png", | 101 "avatar_generic.png", |
98 "avatar_generic_aqua.png", | 102 "avatar_generic_aqua.png", |
99 "avatar_generic_blue.png", | 103 "avatar_generic_blue.png", |
100 "avatar_generic_green.png", | 104 "avatar_generic_green.png", |
101 "avatar_generic_orange.png", | 105 "avatar_generic_orange.png", |
102 "avatar_generic_purple.png", | 106 "avatar_generic_purple.png", |
103 "avatar_generic_red.png", | 107 "avatar_generic_red.png", |
104 "avatar_generic_yellow.png", | 108 "avatar_generic_yellow.png", |
105 "avatar_secret_agent.png", | 109 "avatar_secret_agent.png", |
106 "avatar_superhero.png", | 110 "avatar_superhero.png", |
107 "avatar_volley_ball.png", | 111 "avatar_volley_ball.png", |
108 "avatar_businessman.png", | 112 "avatar_businessman.png", |
109 "avatar_ninja.png", | 113 "avatar_ninja.png", |
110 "avatar_alien.png", | 114 "avatar_alien.png", |
111 "avatar_smiley.png", | 115 "avatar_smiley.png", |
112 "avatar_flower.png", | 116 "avatar_flower.png", |
113 "avatar_pizza.png", | 117 "avatar_pizza.png", |
114 "avatar_soccer.png", | 118 "avatar_soccer.png", |
115 "avatar_burger.png", | 119 "avatar_burger.png", |
116 "avatar_cat.png", | 120 "avatar_cat.png", |
117 "avatar_cupcake.png", | 121 "avatar_cupcake.png", |
118 "avatar_dog.png", | 122 "avatar_dog.png", |
119 "avatar_horse.png", | 123 "avatar_horse.png", |
120 "avatar_margarita.png", | 124 "avatar_margarita.png", |
121 "avatar_note.png", | 125 "avatar_note.png", |
122 "avatar_sun_cloud.png", | 126 "avatar_sun_cloud.png", |
| 127 kNoHighResAvatar, |
123 }; | 128 }; |
124 | 129 |
125 const size_t kDefaultAvatarIconsCount = arraysize(kDefaultAvatarIconResources); | 130 const size_t kDefaultAvatarIconsCount = arraysize(kDefaultAvatarIconResources); |
126 | 131 |
127 // The first 8 icons are generic. | 132 // The first 8 icons are generic. |
128 const size_t kGenericIconCount = 8; | 133 const size_t kGenericIconCount = 8; |
129 | 134 |
| 135 // The avatar used as a placeholder (grey silhouette). |
| 136 const int kPlaceholderAvatarIcon = 26; |
| 137 |
130 // First eight are generic icons, which use IDS_NUMBERED_PROFILE_NAME. | 138 // First eight are generic icons, which use IDS_NUMBERED_PROFILE_NAME. |
131 const int kDefaultNames[] = { | 139 const int kDefaultNames[] = { |
132 IDS_DEFAULT_AVATAR_NAME_8, | 140 IDS_DEFAULT_AVATAR_NAME_8, |
133 IDS_DEFAULT_AVATAR_NAME_9, | 141 IDS_DEFAULT_AVATAR_NAME_9, |
134 IDS_DEFAULT_AVATAR_NAME_10, | 142 IDS_DEFAULT_AVATAR_NAME_10, |
135 IDS_DEFAULT_AVATAR_NAME_11, | 143 IDS_DEFAULT_AVATAR_NAME_11, |
136 IDS_DEFAULT_AVATAR_NAME_12, | 144 IDS_DEFAULT_AVATAR_NAME_12, |
137 IDS_DEFAULT_AVATAR_NAME_13, | 145 IDS_DEFAULT_AVATAR_NAME_13, |
138 IDS_DEFAULT_AVATAR_NAME_14, | 146 IDS_DEFAULT_AVATAR_NAME_14, |
139 IDS_DEFAULT_AVATAR_NAME_15, | 147 IDS_DEFAULT_AVATAR_NAME_15, |
140 IDS_DEFAULT_AVATAR_NAME_16, | 148 IDS_DEFAULT_AVATAR_NAME_16, |
141 IDS_DEFAULT_AVATAR_NAME_17, | 149 IDS_DEFAULT_AVATAR_NAME_17, |
142 IDS_DEFAULT_AVATAR_NAME_18, | 150 IDS_DEFAULT_AVATAR_NAME_18, |
143 IDS_DEFAULT_AVATAR_NAME_19, | 151 IDS_DEFAULT_AVATAR_NAME_19, |
144 IDS_DEFAULT_AVATAR_NAME_20, | 152 IDS_DEFAULT_AVATAR_NAME_20, |
145 IDS_DEFAULT_AVATAR_NAME_21, | 153 IDS_DEFAULT_AVATAR_NAME_21, |
146 IDS_DEFAULT_AVATAR_NAME_22, | 154 IDS_DEFAULT_AVATAR_NAME_22, |
147 IDS_DEFAULT_AVATAR_NAME_23, | 155 IDS_DEFAULT_AVATAR_NAME_23, |
148 IDS_DEFAULT_AVATAR_NAME_24, | 156 IDS_DEFAULT_AVATAR_NAME_24, |
149 IDS_DEFAULT_AVATAR_NAME_25 | 157 IDS_DEFAULT_AVATAR_NAME_25, |
| 158 IDS_DEFAULT_AVATAR_NAME_26 |
150 }; | 159 }; |
151 | 160 |
152 typedef std::vector<unsigned char> ImageData; | 161 typedef std::vector<unsigned char> ImageData; |
153 | 162 |
154 // Writes |data| to disk and takes ownership of the pointer. On completion | 163 // Writes |data| to disk and takes ownership of the pointer. On completion |
155 // |success| is set to true on success and false on failure. | 164 // |success| is set to true on success and false on failure. |
156 void SaveBitmap(ImageData* data, | 165 void SaveBitmap(ImageData* data, |
157 const base::FilePath& image_path, | 166 const base::FilePath& image_path, |
158 bool* success) { | 167 bool* success) { |
159 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); | 168 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); |
(...skipping 297 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
457 | 466 |
458 base::FilePath image_path = path.AppendASCII(file_name); | 467 base::FilePath image_path = path.AppendASCII(file_name); |
459 return LoadAvatarPictureFromPath(key, image_path); | 468 return LoadAvatarPictureFromPath(key, image_path); |
460 } | 469 } |
461 | 470 |
462 const gfx::Image* ProfileInfoCache::GetHighResAvatarOfProfileAtIndex( | 471 const gfx::Image* ProfileInfoCache::GetHighResAvatarOfProfileAtIndex( |
463 size_t index) const { | 472 size_t index) const { |
464 int avatar_index = GetAvatarIconIndexOfProfileAtIndex(index); | 473 int avatar_index = GetAvatarIconIndexOfProfileAtIndex(index); |
465 std::string key = kDefaultAvatarIconResourceFileNames[avatar_index]; | 474 std::string key = kDefaultAvatarIconResourceFileNames[avatar_index]; |
466 | 475 |
| 476 if (!strcmp(key.c_str(), kNoHighResAvatar)) |
| 477 return NULL; |
| 478 |
467 base::FilePath user_data_dir; | 479 base::FilePath user_data_dir; |
468 PathService::Get(chrome::DIR_USER_DATA, &user_data_dir); | 480 PathService::Get(chrome::DIR_USER_DATA, &user_data_dir); |
469 base::FilePath image_path = | 481 base::FilePath image_path = |
470 user_data_dir.AppendASCII(kHighResAvatarFolderName).AppendASCII(key); | 482 user_data_dir.AppendASCII(kHighResAvatarFolderName).AppendASCII(key); |
471 return LoadAvatarPictureFromPath(key, image_path); | 483 return LoadAvatarPictureFromPath(key, image_path); |
472 } | 484 } |
473 | 485 |
474 const gfx::Image* ProfileInfoCache::LoadAvatarPictureFromPath( | 486 const gfx::Image* ProfileInfoCache::LoadAvatarPictureFromPath( |
475 const std::string& key, | 487 const std::string& key, |
476 const base::FilePath& image_path) const { | 488 const base::FilePath& image_path) const { |
(...skipping 446 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
923 | 935 |
924 const base::FilePath& ProfileInfoCache::GetUserDataDir() const { | 936 const base::FilePath& ProfileInfoCache::GetUserDataDir() const { |
925 return user_data_dir_; | 937 return user_data_dir_; |
926 } | 938 } |
927 | 939 |
928 // static | 940 // static |
929 size_t ProfileInfoCache::GetDefaultAvatarIconCount() { | 941 size_t ProfileInfoCache::GetDefaultAvatarIconCount() { |
930 return kDefaultAvatarIconsCount; | 942 return kDefaultAvatarIconsCount; |
931 } | 943 } |
932 | 944 |
| 945 |
| 946 int ProfileInfoCache::GetPlaceholderAvatarIndex() { |
| 947 return kPlaceholderAvatarIcon; |
| 948 } |
| 949 |
| 950 int ProfileInfoCache::GetPlaceholderAvatarIconResourceID() { |
| 951 return IDR_PROFILE_AVATAR_26; |
| 952 } |
| 953 |
933 // static | 954 // static |
934 int ProfileInfoCache::GetDefaultAvatarIconResourceIDAtIndex(size_t index) { | 955 int ProfileInfoCache::GetDefaultAvatarIconResourceIDAtIndex(size_t index) { |
935 DCHECK(IsDefaultAvatarIconIndex(index)); | 956 DCHECK(IsDefaultAvatarIconIndex(index)); |
936 return kDefaultAvatarIconResources[index]; | 957 return kDefaultAvatarIconResources[index]; |
937 } | 958 } |
938 | 959 |
939 // static | 960 // static |
940 std::string ProfileInfoCache::GetDefaultAvatarIconUrl(size_t index) { | 961 std::string ProfileInfoCache::GetDefaultAvatarIconUrl(size_t index) { |
941 DCHECK(IsDefaultAvatarIconIndex(index)); | 962 DCHECK(IsDefaultAvatarIconIndex(index)); |
942 return base::StringPrintf("%s%" PRIuS, kDefaultUrlPrefix, index); | 963 return base::StringPrintf("%s%" PRIuS, kDefaultUrlPrefix, index); |
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1053 info->GetString(kNameKey, &name); | 1074 info->GetString(kNameKey, &name); |
1054 names.push_back(name); | 1075 names.push_back(name); |
1055 } | 1076 } |
1056 return names; | 1077 return names; |
1057 } | 1078 } |
1058 | 1079 |
1059 // static | 1080 // static |
1060 void ProfileInfoCache::RegisterPrefs(PrefRegistrySimple* registry) { | 1081 void ProfileInfoCache::RegisterPrefs(PrefRegistrySimple* registry) { |
1061 registry->RegisterDictionaryPref(prefs::kProfileInfoCache); | 1082 registry->RegisterDictionaryPref(prefs::kProfileInfoCache); |
1062 } | 1083 } |
OLD | NEW |