| 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, IDS_LOGIN_DEFAULT_USER_DESC_20, | |
| 49 IDS_LOGIN_DEFAULT_USER_DESC_21, IDS_LOGIN_DEFAULT_USER_DESC_22, | |
| 50 IDS_LOGIN_DEFAULT_USER_DESC_23, IDS_LOGIN_DEFAULT_USER_DESC_24, | |
| 51 IDS_LOGIN_DEFAULT_USER_DESC_25, IDS_LOGIN_DEFAULT_USER_DESC_26, | |
| 52 IDS_LOGIN_DEFAULT_USER_DESC_27, IDS_LOGIN_DEFAULT_USER_DESC_28, | |
| 53 IDS_LOGIN_DEFAULT_USER_DESC_29, IDS_LOGIN_DEFAULT_USER_DESC_30, | |
| 54 IDS_LOGIN_DEFAULT_USER_DESC_31, IDS_LOGIN_DEFAULT_USER_DESC_32, | |
| 55 }; | |
| 56 | |
| 57 // Returns a string consisting of the prefix specified and the index of the | |
| 58 // image if its valid. | |
| 59 std::string GetDefaultImageString(int index, const std::string& prefix) { | |
| 60 if (index < 0 || index >= kDefaultImagesCount) { | |
| 61 DCHECK(!base::SysInfo::IsRunningOnChromeOS()); | |
| 62 return std::string(); | |
| 63 } | |
| 64 return base::StringPrintf("%s%d", prefix.c_str(), index); | |
| 65 } | |
| 66 | |
| 67 // Returns true if the string specified consists of the prefix and one of | |
| 68 // the default images indices. Returns the index of the image in |image_id| | |
| 69 // variable. | |
| 70 bool IsDefaultImageString(const std::string& s, | |
| 71 const std::string& prefix, | |
| 72 int* image_id) { | |
| 73 DCHECK(image_id); | |
| 74 if (!StartsWithASCII(s, prefix, true)) | |
| 75 return false; | |
| 76 | |
| 77 int image_index = -1; | |
| 78 if (base::StringToInt(base::StringPiece(s.begin() + prefix.length(), s.end()), | |
| 79 &image_index)) { | |
| 80 if (image_index < 0 || image_index >= kDefaultImagesCount) | |
| 81 return false; | |
| 82 *image_id = image_index; | |
| 83 return true; | |
| 84 } | |
| 85 | |
| 86 return false; | |
| 87 } | |
| 88 } // namespace | |
| 89 | |
| 90 std::string GetDefaultImageUrl(int index) { | |
| 91 if (index == 0) | |
| 92 return kZeroDefaultUrl; | |
| 93 return GetDefaultImageString(index, kDefaultUrlPrefix); | |
| 94 } | |
| 95 | |
| 96 bool IsDefaultImageUrl(const std::string& url, int* image_id) { | |
| 97 if (url == kZeroDefaultUrl) { | |
| 98 *image_id = 0; | |
| 99 return true; | |
| 100 } | |
| 101 return IsDefaultImageString(url, kDefaultUrlPrefix, image_id); | |
| 102 } | |
| 103 | |
| 104 const gfx::ImageSkia& GetDefaultImage(int index) { | |
| 105 DCHECK(index >= 0 && index < kDefaultImagesCount); | |
| 106 return *ResourceBundle::GetSharedInstance().GetImageSkiaNamed( | |
| 107 kDefaultImageResourceIDs[index]); | |
| 108 } | |
| 109 | |
| 110 base::string16 GetDefaultImageDescription(int index) { | |
| 111 DCHECK(index >= 0 && index < kDefaultImagesCount); | |
| 112 int string_id = kDefaultImageDescriptions[index]; | |
| 113 if (string_id) | |
| 114 return l10n_util::GetStringUTF16(string_id); | |
| 115 else | |
| 116 return base::string16(); | |
| 117 } | |
| 118 | |
| 119 // Resource IDs of default user images. | |
| 120 const int kDefaultImageResourceIDs[] = { | |
| 121 IDR_LOGIN_DEFAULT_USER, IDR_LOGIN_DEFAULT_USER_1, | |
| 122 IDR_LOGIN_DEFAULT_USER_2, IDR_LOGIN_DEFAULT_USER_3, | |
| 123 IDR_LOGIN_DEFAULT_USER_4, IDR_LOGIN_DEFAULT_USER_5, | |
| 124 IDR_LOGIN_DEFAULT_USER_6, IDR_LOGIN_DEFAULT_USER_7, | |
| 125 IDR_LOGIN_DEFAULT_USER_8, IDR_LOGIN_DEFAULT_USER_9, | |
| 126 IDR_LOGIN_DEFAULT_USER_10, IDR_LOGIN_DEFAULT_USER_11, | |
| 127 IDR_LOGIN_DEFAULT_USER_12, IDR_LOGIN_DEFAULT_USER_13, | |
| 128 IDR_LOGIN_DEFAULT_USER_14, IDR_LOGIN_DEFAULT_USER_15, | |
| 129 IDR_LOGIN_DEFAULT_USER_16, IDR_LOGIN_DEFAULT_USER_17, | |
| 130 IDR_LOGIN_DEFAULT_USER_18, IDR_LOGIN_DEFAULT_USER_19, | |
| 131 IDR_LOGIN_DEFAULT_USER_20, IDR_LOGIN_DEFAULT_USER_21, | |
| 132 IDR_LOGIN_DEFAULT_USER_22, IDR_LOGIN_DEFAULT_USER_23, | |
| 133 IDR_LOGIN_DEFAULT_USER_24, IDR_LOGIN_DEFAULT_USER_25, | |
| 134 IDR_LOGIN_DEFAULT_USER_26, IDR_LOGIN_DEFAULT_USER_27, | |
| 135 IDR_LOGIN_DEFAULT_USER_28, IDR_LOGIN_DEFAULT_USER_29, | |
| 136 IDR_LOGIN_DEFAULT_USER_30, IDR_LOGIN_DEFAULT_USER_31, | |
| 137 IDR_LOGIN_DEFAULT_USER_32, | |
| 138 }; | |
| 139 | |
| 140 const int kDefaultImageAuthorIDs[] = { | |
| 141 IDS_LOGIN_DEFAULT_USER_AUTHOR, IDS_LOGIN_DEFAULT_USER_AUTHOR_1, | |
| 142 IDS_LOGIN_DEFAULT_USER_AUTHOR_2, IDS_LOGIN_DEFAULT_USER_AUTHOR_3, | |
| 143 IDS_LOGIN_DEFAULT_USER_AUTHOR_4, IDS_LOGIN_DEFAULT_USER_AUTHOR_5, | |
| 144 IDS_LOGIN_DEFAULT_USER_AUTHOR_6, IDS_LOGIN_DEFAULT_USER_AUTHOR_7, | |
| 145 IDS_LOGIN_DEFAULT_USER_AUTHOR_8, IDS_LOGIN_DEFAULT_USER_AUTHOR_9, | |
| 146 IDS_LOGIN_DEFAULT_USER_AUTHOR_10, IDS_LOGIN_DEFAULT_USER_AUTHOR_11, | |
| 147 IDS_LOGIN_DEFAULT_USER_AUTHOR_12, IDS_LOGIN_DEFAULT_USER_AUTHOR_13, | |
| 148 IDS_LOGIN_DEFAULT_USER_AUTHOR_14, IDS_LOGIN_DEFAULT_USER_AUTHOR_15, | |
| 149 IDS_LOGIN_DEFAULT_USER_AUTHOR_16, IDS_LOGIN_DEFAULT_USER_AUTHOR_17, | |
| 150 IDS_LOGIN_DEFAULT_USER_AUTHOR_18, IDS_LOGIN_DEFAULT_USER_AUTHOR_19, | |
| 151 IDS_LOGIN_DEFAULT_USER_AUTHOR_20, IDS_LOGIN_DEFAULT_USER_AUTHOR_21, | |
| 152 IDS_LOGIN_DEFAULT_USER_AUTHOR_22, IDS_LOGIN_DEFAULT_USER_AUTHOR_23, | |
| 153 IDS_LOGIN_DEFAULT_USER_AUTHOR_24, IDS_LOGIN_DEFAULT_USER_AUTHOR_25, | |
| 154 IDS_LOGIN_DEFAULT_USER_AUTHOR_26, IDS_LOGIN_DEFAULT_USER_AUTHOR_27, | |
| 155 IDS_LOGIN_DEFAULT_USER_AUTHOR_28, IDS_LOGIN_DEFAULT_USER_AUTHOR_29, | |
| 156 IDS_LOGIN_DEFAULT_USER_AUTHOR_30, IDS_LOGIN_DEFAULT_USER_AUTHOR_31, | |
| 157 IDS_LOGIN_DEFAULT_USER_AUTHOR_32, | |
| 158 }; | |
| 159 | |
| 160 const int kDefaultImageWebsiteIDs[] = { | |
| 161 IDS_LOGIN_DEFAULT_USER_WEBSITE, IDS_LOGIN_DEFAULT_USER_WEBSITE_1, | |
| 162 IDS_LOGIN_DEFAULT_USER_WEBSITE_2, IDS_LOGIN_DEFAULT_USER_WEBSITE_3, | |
| 163 IDS_LOGIN_DEFAULT_USER_WEBSITE_4, IDS_LOGIN_DEFAULT_USER_WEBSITE_5, | |
| 164 IDS_LOGIN_DEFAULT_USER_WEBSITE_6, IDS_LOGIN_DEFAULT_USER_WEBSITE_7, | |
| 165 IDS_LOGIN_DEFAULT_USER_WEBSITE_8, IDS_LOGIN_DEFAULT_USER_WEBSITE_9, | |
| 166 IDS_LOGIN_DEFAULT_USER_WEBSITE_10, IDS_LOGIN_DEFAULT_USER_WEBSITE_11, | |
| 167 IDS_LOGIN_DEFAULT_USER_WEBSITE_12, IDS_LOGIN_DEFAULT_USER_WEBSITE_13, | |
| 168 IDS_LOGIN_DEFAULT_USER_WEBSITE_14, IDS_LOGIN_DEFAULT_USER_WEBSITE_15, | |
| 169 IDS_LOGIN_DEFAULT_USER_WEBSITE_16, IDS_LOGIN_DEFAULT_USER_WEBSITE_17, | |
| 170 IDS_LOGIN_DEFAULT_USER_WEBSITE_18, IDS_LOGIN_DEFAULT_USER_WEBSITE_19, | |
| 171 IDS_LOGIN_DEFAULT_USER_WEBSITE_20, IDS_LOGIN_DEFAULT_USER_WEBSITE_21, | |
| 172 IDS_LOGIN_DEFAULT_USER_WEBSITE_22, IDS_LOGIN_DEFAULT_USER_WEBSITE_23, | |
| 173 IDS_LOGIN_DEFAULT_USER_WEBSITE_24, IDS_LOGIN_DEFAULT_USER_WEBSITE_25, | |
| 174 IDS_LOGIN_DEFAULT_USER_WEBSITE_26, IDS_LOGIN_DEFAULT_USER_WEBSITE_27, | |
| 175 IDS_LOGIN_DEFAULT_USER_WEBSITE_28, IDS_LOGIN_DEFAULT_USER_WEBSITE_29, | |
| 176 IDS_LOGIN_DEFAULT_USER_WEBSITE_30, IDS_LOGIN_DEFAULT_USER_WEBSITE_31, | |
| 177 IDS_LOGIN_DEFAULT_USER_WEBSITE_32, | |
| 178 }; | |
| 179 | |
| 180 const int kDefaultImagesCount = arraysize(kDefaultImageResourceIDs); | |
| 181 | |
| 182 const int kFirstDefaultImageIndex = 19; | |
| 183 | |
| 184 // The order and the values of these constants are important for histograms | |
| 185 // of different Chrome OS versions to be merged smoothly. | |
| 186 const int kHistogramImageFromCamera = 19; | |
| 187 const int kHistogramImageFromFile = 20; | |
| 188 const int kHistogramImageOld = 21; | |
| 189 const int kHistogramImageFromProfile = 22; | |
| 190 const int kHistogramVideoFromCamera = 23; | |
| 191 const int kHistogramVideoFromFile = 24; | |
| 192 const int kHistogramImagesCount = kDefaultImagesCount + 6; | |
| 193 | |
| 194 int GetDefaultImageHistogramValue(int index) { | |
| 195 DCHECK(index >= 0 && index < kDefaultImagesCount); | |
| 196 // Create a gap in histogram values for | |
| 197 // [kHistogramImageFromCamera..kHistogramImageFromProfile] block to fit. | |
| 198 if (index < kHistogramImageFromCamera) | |
| 199 return index; | |
| 200 return index + 6; | |
| 201 } | |
| 202 | |
| 203 } // namespace user_manager | |
| OLD | NEW |