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 |