OLD | NEW |
(Empty) | |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. |
| 4 |
| 5 #include "components/user_manager/user_image/default_user_images.h" |
| 6 |
| 7 #include "base/basictypes.h" |
| 8 #include "base/logging.h" |
| 9 #include "base/strings/string_number_conversions.h" |
| 10 #include "base/strings/string_piece.h" |
| 11 #include "base/strings/string_util.h" |
| 12 #include "base/strings/stringprintf.h" |
| 13 #include "base/sys_info.h" |
| 14 #include "grit/ui_chromeos_resources.h" |
| 15 #include "grit/ui_chromeos_strings.h" |
| 16 #include "ui/base/l10n/l10n_util.h" |
| 17 #include "ui/base/resource/resource_bundle.h" |
| 18 #include "ui/gfx/image/image_skia.h" |
| 19 |
| 20 namespace user_manager { |
| 21 |
| 22 namespace { |
| 23 |
| 24 const char kDefaultUrlPrefix[] = "chrome://theme/IDR_LOGIN_DEFAULT_USER_"; |
| 25 const char kZeroDefaultUrl[] = "chrome://theme/IDR_LOGIN_DEFAULT_USER"; |
| 26 |
| 27 // IDs of default user image descriptions. |
| 28 const int kDefaultImageDescriptions[] = { |
| 29 0, // No description for deprecated user image 0. |
| 30 0, // No description for deprecated user image 1. |
| 31 0, // No description for deprecated user image 2. |
| 32 0, // No description for deprecated user image 3. |
| 33 0, // No description for deprecated user image 4. |
| 34 0, // No description for deprecated user image 5. |
| 35 0, // No description for deprecated user image 6. |
| 36 0, // No description for deprecated user image 7. |
| 37 0, // No description for deprecated user image 8. |
| 38 0, // No description for deprecated user image 9. |
| 39 0, // No description for deprecated user image 10. |
| 40 0, // No description for deprecated user image 11. |
| 41 0, // No description for deprecated user image 12. |
| 42 0, // No description for deprecated user image 13. |
| 43 0, // No description for deprecated user image 14. |
| 44 0, // No description for deprecated user image 15. |
| 45 0, // No description for deprecated user image 16. |
| 46 0, // No description for deprecated user image 17. |
| 47 0, // No description for deprecated user image 18. |
| 48 IDS_LOGIN_DEFAULT_USER_DESC_19, |
| 49 IDS_LOGIN_DEFAULT_USER_DESC_20, |
| 50 IDS_LOGIN_DEFAULT_USER_DESC_21, |
| 51 IDS_LOGIN_DEFAULT_USER_DESC_22, |
| 52 IDS_LOGIN_DEFAULT_USER_DESC_23, |
| 53 IDS_LOGIN_DEFAULT_USER_DESC_24, |
| 54 IDS_LOGIN_DEFAULT_USER_DESC_25, |
| 55 IDS_LOGIN_DEFAULT_USER_DESC_26, |
| 56 IDS_LOGIN_DEFAULT_USER_DESC_27, |
| 57 IDS_LOGIN_DEFAULT_USER_DESC_28, |
| 58 IDS_LOGIN_DEFAULT_USER_DESC_29, |
| 59 IDS_LOGIN_DEFAULT_USER_DESC_30, |
| 60 IDS_LOGIN_DEFAULT_USER_DESC_31, |
| 61 IDS_LOGIN_DEFAULT_USER_DESC_32, |
| 62 }; |
| 63 |
| 64 // Returns a string consisting of the prefix specified and the index of the |
| 65 // image if its valid. |
| 66 std::string GetDefaultImageString(int index, const std::string& prefix) { |
| 67 if (index < 0 || index >= kDefaultImagesCount) { |
| 68 DCHECK(!base::SysInfo::IsRunningOnChromeOS()); |
| 69 return std::string(); |
| 70 } |
| 71 return base::StringPrintf("%s%d", prefix.c_str(), index); |
| 72 } |
| 73 |
| 74 // Returns true if the string specified consists of the prefix and one of |
| 75 // the default images indices. Returns the index of the image in |image_id| |
| 76 // variable. |
| 77 bool IsDefaultImageString(const std::string& s, |
| 78 const std::string& prefix, |
| 79 int* image_id) { |
| 80 DCHECK(image_id); |
| 81 if (!StartsWithASCII(s, prefix, true)) |
| 82 return false; |
| 83 |
| 84 int image_index = -1; |
| 85 if (base::StringToInt(base::StringPiece(s.begin() + prefix.length(), s.end()), |
| 86 &image_index)) { |
| 87 if (image_index < 0 || image_index >= kDefaultImagesCount) |
| 88 return false; |
| 89 *image_id = image_index; |
| 90 return true; |
| 91 } |
| 92 |
| 93 return false; |
| 94 } |
| 95 } // namespace |
| 96 |
| 97 std::string GetDefaultImageUrl(int index) { |
| 98 if (index == 0) |
| 99 return kZeroDefaultUrl; |
| 100 return GetDefaultImageString(index, kDefaultUrlPrefix); |
| 101 } |
| 102 |
| 103 bool IsDefaultImageUrl(const std::string& url, int* image_id) { |
| 104 if (url == kZeroDefaultUrl) { |
| 105 *image_id = 0; |
| 106 return true; |
| 107 } |
| 108 return IsDefaultImageString(url, kDefaultUrlPrefix, image_id); |
| 109 } |
| 110 |
| 111 const gfx::ImageSkia& GetDefaultImage(int index) { |
| 112 DCHECK(index >= 0 && index < kDefaultImagesCount); |
| 113 return *ResourceBundle::GetSharedInstance().GetImageSkiaNamed( |
| 114 kDefaultImageResourceIDs[index]); |
| 115 } |
| 116 |
| 117 base::string16 GetDefaultImageDescription(int index) { |
| 118 DCHECK(index >= 0 && index < kDefaultImagesCount); |
| 119 int string_id = kDefaultImageDescriptions[index]; |
| 120 if (string_id) |
| 121 return l10n_util::GetStringUTF16(string_id); |
| 122 else |
| 123 return base::string16(); |
| 124 } |
| 125 |
| 126 // Resource IDs of default user images. |
| 127 const int kDefaultImageResourceIDs[] = { |
| 128 IDR_LOGIN_DEFAULT_USER, |
| 129 IDR_LOGIN_DEFAULT_USER_1, |
| 130 IDR_LOGIN_DEFAULT_USER_2, |
| 131 IDR_LOGIN_DEFAULT_USER_3, |
| 132 IDR_LOGIN_DEFAULT_USER_4, |
| 133 IDR_LOGIN_DEFAULT_USER_5, |
| 134 IDR_LOGIN_DEFAULT_USER_6, |
| 135 IDR_LOGIN_DEFAULT_USER_7, |
| 136 IDR_LOGIN_DEFAULT_USER_8, |
| 137 IDR_LOGIN_DEFAULT_USER_9, |
| 138 IDR_LOGIN_DEFAULT_USER_10, |
| 139 IDR_LOGIN_DEFAULT_USER_11, |
| 140 IDR_LOGIN_DEFAULT_USER_12, |
| 141 IDR_LOGIN_DEFAULT_USER_13, |
| 142 IDR_LOGIN_DEFAULT_USER_14, |
| 143 IDR_LOGIN_DEFAULT_USER_15, |
| 144 IDR_LOGIN_DEFAULT_USER_16, |
| 145 IDR_LOGIN_DEFAULT_USER_17, |
| 146 IDR_LOGIN_DEFAULT_USER_18, |
| 147 IDR_LOGIN_DEFAULT_USER_19, |
| 148 IDR_LOGIN_DEFAULT_USER_20, |
| 149 IDR_LOGIN_DEFAULT_USER_21, |
| 150 IDR_LOGIN_DEFAULT_USER_22, |
| 151 IDR_LOGIN_DEFAULT_USER_23, |
| 152 IDR_LOGIN_DEFAULT_USER_24, |
| 153 IDR_LOGIN_DEFAULT_USER_25, |
| 154 IDR_LOGIN_DEFAULT_USER_26, |
| 155 IDR_LOGIN_DEFAULT_USER_27, |
| 156 IDR_LOGIN_DEFAULT_USER_28, |
| 157 IDR_LOGIN_DEFAULT_USER_29, |
| 158 IDR_LOGIN_DEFAULT_USER_30, |
| 159 IDR_LOGIN_DEFAULT_USER_31, |
| 160 IDR_LOGIN_DEFAULT_USER_32, |
| 161 }; |
| 162 |
| 163 const int kDefaultImageAuthorIDs[] = { |
| 164 IDS_LOGIN_DEFAULT_USER_AUTHOR, |
| 165 IDS_LOGIN_DEFAULT_USER_AUTHOR_1, |
| 166 IDS_LOGIN_DEFAULT_USER_AUTHOR_2, |
| 167 IDS_LOGIN_DEFAULT_USER_AUTHOR_3, |
| 168 IDS_LOGIN_DEFAULT_USER_AUTHOR_4, |
| 169 IDS_LOGIN_DEFAULT_USER_AUTHOR_5, |
| 170 IDS_LOGIN_DEFAULT_USER_AUTHOR_6, |
| 171 IDS_LOGIN_DEFAULT_USER_AUTHOR_7, |
| 172 IDS_LOGIN_DEFAULT_USER_AUTHOR_8, |
| 173 IDS_LOGIN_DEFAULT_USER_AUTHOR_9, |
| 174 IDS_LOGIN_DEFAULT_USER_AUTHOR_10, |
| 175 IDS_LOGIN_DEFAULT_USER_AUTHOR_11, |
| 176 IDS_LOGIN_DEFAULT_USER_AUTHOR_12, |
| 177 IDS_LOGIN_DEFAULT_USER_AUTHOR_13, |
| 178 IDS_LOGIN_DEFAULT_USER_AUTHOR_14, |
| 179 IDS_LOGIN_DEFAULT_USER_AUTHOR_15, |
| 180 IDS_LOGIN_DEFAULT_USER_AUTHOR_16, |
| 181 IDS_LOGIN_DEFAULT_USER_AUTHOR_17, |
| 182 IDS_LOGIN_DEFAULT_USER_AUTHOR_18, |
| 183 IDS_LOGIN_DEFAULT_USER_AUTHOR_19, |
| 184 IDS_LOGIN_DEFAULT_USER_AUTHOR_20, |
| 185 IDS_LOGIN_DEFAULT_USER_AUTHOR_21, |
| 186 IDS_LOGIN_DEFAULT_USER_AUTHOR_22, |
| 187 IDS_LOGIN_DEFAULT_USER_AUTHOR_23, |
| 188 IDS_LOGIN_DEFAULT_USER_AUTHOR_24, |
| 189 IDS_LOGIN_DEFAULT_USER_AUTHOR_25, |
| 190 IDS_LOGIN_DEFAULT_USER_AUTHOR_26, |
| 191 IDS_LOGIN_DEFAULT_USER_AUTHOR_27, |
| 192 IDS_LOGIN_DEFAULT_USER_AUTHOR_28, |
| 193 IDS_LOGIN_DEFAULT_USER_AUTHOR_29, |
| 194 IDS_LOGIN_DEFAULT_USER_AUTHOR_30, |
| 195 IDS_LOGIN_DEFAULT_USER_AUTHOR_31, |
| 196 IDS_LOGIN_DEFAULT_USER_AUTHOR_32, |
| 197 }; |
| 198 |
| 199 const int kDefaultImageWebsiteIDs[] = { |
| 200 IDS_LOGIN_DEFAULT_USER_WEBSITE, |
| 201 IDS_LOGIN_DEFAULT_USER_WEBSITE_1, |
| 202 IDS_LOGIN_DEFAULT_USER_WEBSITE_2, |
| 203 IDS_LOGIN_DEFAULT_USER_WEBSITE_3, |
| 204 IDS_LOGIN_DEFAULT_USER_WEBSITE_4, |
| 205 IDS_LOGIN_DEFAULT_USER_WEBSITE_5, |
| 206 IDS_LOGIN_DEFAULT_USER_WEBSITE_6, |
| 207 IDS_LOGIN_DEFAULT_USER_WEBSITE_7, |
| 208 IDS_LOGIN_DEFAULT_USER_WEBSITE_8, |
| 209 IDS_LOGIN_DEFAULT_USER_WEBSITE_9, |
| 210 IDS_LOGIN_DEFAULT_USER_WEBSITE_10, |
| 211 IDS_LOGIN_DEFAULT_USER_WEBSITE_11, |
| 212 IDS_LOGIN_DEFAULT_USER_WEBSITE_12, |
| 213 IDS_LOGIN_DEFAULT_USER_WEBSITE_13, |
| 214 IDS_LOGIN_DEFAULT_USER_WEBSITE_14, |
| 215 IDS_LOGIN_DEFAULT_USER_WEBSITE_15, |
| 216 IDS_LOGIN_DEFAULT_USER_WEBSITE_16, |
| 217 IDS_LOGIN_DEFAULT_USER_WEBSITE_17, |
| 218 IDS_LOGIN_DEFAULT_USER_WEBSITE_18, |
| 219 IDS_LOGIN_DEFAULT_USER_WEBSITE_19, |
| 220 IDS_LOGIN_DEFAULT_USER_WEBSITE_20, |
| 221 IDS_LOGIN_DEFAULT_USER_WEBSITE_21, |
| 222 IDS_LOGIN_DEFAULT_USER_WEBSITE_22, |
| 223 IDS_LOGIN_DEFAULT_USER_WEBSITE_23, |
| 224 IDS_LOGIN_DEFAULT_USER_WEBSITE_24, |
| 225 IDS_LOGIN_DEFAULT_USER_WEBSITE_25, |
| 226 IDS_LOGIN_DEFAULT_USER_WEBSITE_26, |
| 227 IDS_LOGIN_DEFAULT_USER_WEBSITE_27, |
| 228 IDS_LOGIN_DEFAULT_USER_WEBSITE_28, |
| 229 IDS_LOGIN_DEFAULT_USER_WEBSITE_29, |
| 230 IDS_LOGIN_DEFAULT_USER_WEBSITE_30, |
| 231 IDS_LOGIN_DEFAULT_USER_WEBSITE_31, |
| 232 IDS_LOGIN_DEFAULT_USER_WEBSITE_32, |
| 233 }; |
| 234 |
| 235 const int kDefaultImagesCount = arraysize(kDefaultImageResourceIDs); |
| 236 |
| 237 const int kFirstDefaultImageIndex = 19; |
| 238 |
| 239 // The order and the values of these constants are important for histograms |
| 240 // of different Chrome OS versions to be merged smoothly. |
| 241 const int kHistogramImageFromCamera = 19; |
| 242 const int kHistogramImageFromFile = 20; |
| 243 const int kHistogramImageOld = 21; |
| 244 const int kHistogramImageFromProfile = 22; |
| 245 const int kHistogramVideoFromCamera = 23; |
| 246 const int kHistogramVideoFromFile = 24; |
| 247 const int kHistogramImagesCount = kDefaultImagesCount + 6; |
| 248 |
| 249 int GetDefaultImageHistogramValue(int index) { |
| 250 DCHECK(index >= 0 && index < kDefaultImagesCount); |
| 251 // Create a gap in histogram values for |
| 252 // [kHistogramImageFromCamera..kHistogramImageFromProfile] block to fit. |
| 253 if (index < kHistogramImageFromCamera) |
| 254 return index; |
| 255 return index + 6; |
| 256 } |
| 257 |
| 258 } // namespace user_manager |
OLD | NEW |