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

Side by Side Diff: ui/gfx/font_render_params_linux_unittest.cc

Issue 413003002: Add FontRenderParamsQuery. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: as usual, re-upload against correct branch Created 6 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 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 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 "ui/gfx/font_render_params.h" 5 #include "ui/gfx/font_render_params.h"
6 6
7 #include "base/files/file_path.h" 7 #include "base/files/file_path.h"
8 #include "base/files/scoped_temp_dir.h" 8 #include "base/files/scoped_temp_dir.h"
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "base/macros.h" 10 #include "base/macros.h"
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
91 std::string(kFontconfigFileHeader) + 91 std::string(kFontconfigFileHeader) +
92 kFontconfigMatchHeader + 92 kFontconfigMatchHeader +
93 CreateFontconfigEditStanza("antialias", "bool", "true") + 93 CreateFontconfigEditStanza("antialias", "bool", "true") +
94 CreateFontconfigEditStanza("autohint", "bool", "false") + 94 CreateFontconfigEditStanza("autohint", "bool", "false") +
95 CreateFontconfigEditStanza("hinting", "bool", "true") + 95 CreateFontconfigEditStanza("hinting", "bool", "true") +
96 CreateFontconfigEditStanza("hintstyle", "const", "hintfull") + 96 CreateFontconfigEditStanza("hintstyle", "const", "hintfull") +
97 CreateFontconfigEditStanza("rgba", "const", "rgb") + 97 CreateFontconfigEditStanza("rgba", "const", "rgb") +
98 kFontconfigMatchFooter + 98 kFontconfigMatchFooter +
99 kFontconfigFileFooter)); 99 kFontconfigFileFooter));
100 100
101 FontRenderParams params = GetDefaultFontRenderParams(); 101 FontRenderParams params = GetFontRenderParams(
102 FontRenderParamsQuery(true), NULL);
102 EXPECT_TRUE(params.antialiasing); 103 EXPECT_TRUE(params.antialiasing);
103 EXPECT_FALSE(params.autohinter); 104 EXPECT_FALSE(params.autohinter);
104 EXPECT_TRUE(params.use_bitmaps); 105 EXPECT_TRUE(params.use_bitmaps);
105 EXPECT_EQ(FontRenderParams::HINTING_FULL, params.hinting); 106 EXPECT_EQ(FontRenderParams::HINTING_FULL, params.hinting);
106 EXPECT_FALSE(params.subpixel_positioning); 107 EXPECT_FALSE(params.subpixel_positioning);
107 EXPECT_EQ(FontRenderParams::SUBPIXEL_RENDERING_RGB, 108 EXPECT_EQ(FontRenderParams::SUBPIXEL_RENDERING_RGB,
108 params.subpixel_rendering); 109 params.subpixel_rendering);
109 } 110 }
110 111
111 TEST_F(FontRenderParamsTest, Size) { 112 TEST_F(FontRenderParamsTest, Size) {
(...skipping 12 matching lines...) Expand all
124 kFontconfigMatchFooter + 125 kFontconfigMatchFooter +
125 kFontconfigMatchHeader + 126 kFontconfigMatchHeader +
126 CreateFontconfigTestStanza("size", "more_eq", "double", "20") + 127 CreateFontconfigTestStanza("size", "more_eq", "double", "20") +
127 CreateFontconfigEditStanza("hintstyle", "const", "hintslight") + 128 CreateFontconfigEditStanza("hintstyle", "const", "hintslight") +
128 CreateFontconfigEditStanza("rgba", "const", "rgb") + 129 CreateFontconfigEditStanza("rgba", "const", "rgb") +
129 kFontconfigMatchFooter + 130 kFontconfigMatchFooter +
130 kFontconfigFileFooter)); 131 kFontconfigFileFooter));
131 132
132 // The defaults should be used when the supplied size isn't matched by the 133 // The defaults should be used when the supplied size isn't matched by the
133 // second or third blocks. 134 // second or third blocks.
134 int pixel_size = 12; 135 FontRenderParamsQuery query(false);
135 FontRenderParams params = GetCustomFontRenderParams( 136 query.pixel_size = 12;
136 false, NULL, &pixel_size, NULL, NULL, NULL); 137 FontRenderParams params = GetFontRenderParams(query, NULL);
137 EXPECT_TRUE(params.antialiasing); 138 EXPECT_TRUE(params.antialiasing);
138 EXPECT_EQ(FontRenderParams::HINTING_FULL, params.hinting); 139 EXPECT_EQ(FontRenderParams::HINTING_FULL, params.hinting);
139 EXPECT_EQ(FontRenderParams::SUBPIXEL_RENDERING_NONE, 140 EXPECT_EQ(FontRenderParams::SUBPIXEL_RENDERING_NONE,
140 params.subpixel_rendering); 141 params.subpixel_rendering);
141 142
142 pixel_size = 10; 143 query.pixel_size = 10;
143 params = GetCustomFontRenderParams( 144 params = GetFontRenderParams(query, NULL);
144 false, NULL, &pixel_size, NULL, NULL, NULL);
145 EXPECT_FALSE(params.antialiasing); 145 EXPECT_FALSE(params.antialiasing);
146 EXPECT_EQ(FontRenderParams::HINTING_FULL, params.hinting); 146 EXPECT_EQ(FontRenderParams::HINTING_FULL, params.hinting);
147 EXPECT_EQ(FontRenderParams::SUBPIXEL_RENDERING_NONE, 147 EXPECT_EQ(FontRenderParams::SUBPIXEL_RENDERING_NONE,
148 params.subpixel_rendering); 148 params.subpixel_rendering);
149 149
150 int point_size = 20; 150 query.pixel_size = 0;
151 params = GetCustomFontRenderParams( 151 query.point_size = 20;
152 false, NULL, NULL, &point_size, NULL, NULL); 152 params = GetFontRenderParams(query, NULL);
153 EXPECT_TRUE(params.antialiasing); 153 EXPECT_TRUE(params.antialiasing);
154 EXPECT_EQ(FontRenderParams::HINTING_SLIGHT, params.hinting); 154 EXPECT_EQ(FontRenderParams::HINTING_SLIGHT, params.hinting);
155 EXPECT_EQ(FontRenderParams::SUBPIXEL_RENDERING_RGB, 155 EXPECT_EQ(FontRenderParams::SUBPIXEL_RENDERING_RGB,
156 params.subpixel_rendering); 156 params.subpixel_rendering);
157 } 157 }
158 158
159 TEST_F(FontRenderParamsTest, Style) { 159 TEST_F(FontRenderParamsTest, Style) {
160 ASSERT_TRUE(LoadSystemFont("arial.ttf")); 160 ASSERT_TRUE(LoadSystemFont("arial.ttf"));
161 // Load a config that disables antialiasing for bold text and disables 161 // Load a config that disables antialiasing for bold text and disables
162 // hinting for italic text. 162 // hinting for italic text.
163 ASSERT_TRUE(LoadConfigDataIntoFontconfig(temp_dir_.path(), 163 ASSERT_TRUE(LoadConfigDataIntoFontconfig(temp_dir_.path(),
164 std::string(kFontconfigFileHeader) + 164 std::string(kFontconfigFileHeader) +
165 kFontconfigMatchHeader + 165 kFontconfigMatchHeader +
166 CreateFontconfigEditStanza("antialias", "bool", "true") + 166 CreateFontconfigEditStanza("antialias", "bool", "true") +
167 CreateFontconfigEditStanza("hinting", "bool", "true") + 167 CreateFontconfigEditStanza("hinting", "bool", "true") +
168 CreateFontconfigEditStanza("hintstyle", "const", "hintfull") + 168 CreateFontconfigEditStanza("hintstyle", "const", "hintfull") +
169 kFontconfigMatchFooter + 169 kFontconfigMatchFooter +
170 kFontconfigMatchHeader + 170 kFontconfigMatchHeader +
171 CreateFontconfigTestStanza("weight", "eq", "const", "bold") + 171 CreateFontconfigTestStanza("weight", "eq", "const", "bold") +
172 CreateFontconfigEditStanza("antialias", "bool", "false") + 172 CreateFontconfigEditStanza("antialias", "bool", "false") +
173 kFontconfigMatchFooter + 173 kFontconfigMatchFooter +
174 kFontconfigMatchHeader + 174 kFontconfigMatchHeader +
175 CreateFontconfigTestStanza("slant", "eq", "const", "italic") + 175 CreateFontconfigTestStanza("slant", "eq", "const", "italic") +
176 CreateFontconfigEditStanza("hinting", "bool", "false") + 176 CreateFontconfigEditStanza("hinting", "bool", "false") +
177 kFontconfigMatchFooter + 177 kFontconfigMatchFooter +
178 kFontconfigFileFooter)); 178 kFontconfigFileFooter));
179 179
180 int style = Font::NORMAL; 180 FontRenderParamsQuery query(false);
181 FontRenderParams params = GetCustomFontRenderParams( 181 query.style = Font::NORMAL;
182 false, NULL, NULL, NULL, &style, NULL); 182 FontRenderParams params = GetFontRenderParams(query, NULL);
183 EXPECT_TRUE(params.antialiasing); 183 EXPECT_TRUE(params.antialiasing);
184 EXPECT_EQ(FontRenderParams::HINTING_FULL, params.hinting); 184 EXPECT_EQ(FontRenderParams::HINTING_FULL, params.hinting);
185 185
186 style = Font::BOLD; 186 query.style = Font::BOLD;
187 params = GetCustomFontRenderParams( 187 params = GetFontRenderParams(query, NULL);
188 false, NULL, NULL, NULL, &style, NULL);
189 EXPECT_FALSE(params.antialiasing); 188 EXPECT_FALSE(params.antialiasing);
190 EXPECT_EQ(FontRenderParams::HINTING_FULL, params.hinting); 189 EXPECT_EQ(FontRenderParams::HINTING_FULL, params.hinting);
191 190
192 style = Font::ITALIC; 191 query.style = Font::ITALIC;
193 params = GetCustomFontRenderParams( 192 params = GetFontRenderParams(query, NULL);
194 false, NULL, NULL, NULL, &style, NULL);
195 EXPECT_TRUE(params.antialiasing); 193 EXPECT_TRUE(params.antialiasing);
196 EXPECT_EQ(FontRenderParams::HINTING_NONE, params.hinting); 194 EXPECT_EQ(FontRenderParams::HINTING_NONE, params.hinting);
197 195
198 style = Font::BOLD | Font::ITALIC; 196 query.style = Font::BOLD | Font::ITALIC;
199 params = GetCustomFontRenderParams( 197 params = GetFontRenderParams(query, NULL);
200 false, NULL, NULL, NULL, &style, NULL);
201 EXPECT_FALSE(params.antialiasing); 198 EXPECT_FALSE(params.antialiasing);
202 EXPECT_EQ(FontRenderParams::HINTING_NONE, params.hinting); 199 EXPECT_EQ(FontRenderParams::HINTING_NONE, params.hinting);
203 } 200 }
204 201
205 TEST_F(FontRenderParamsTest, Scalable) { 202 TEST_F(FontRenderParamsTest, Scalable) {
206 ASSERT_TRUE(LoadSystemFont("arial.ttf")); 203 ASSERT_TRUE(LoadSystemFont("arial.ttf"));
207 // Load a config that only enables antialiasing for scalable fonts. 204 // Load a config that only enables antialiasing for scalable fonts.
208 ASSERT_TRUE(LoadConfigDataIntoFontconfig(temp_dir_.path(), 205 ASSERT_TRUE(LoadConfigDataIntoFontconfig(temp_dir_.path(),
209 std::string(kFontconfigFileHeader) + 206 std::string(kFontconfigFileHeader) +
210 kFontconfigMatchHeader + 207 kFontconfigMatchHeader +
211 CreateFontconfigEditStanza("antialias", "bool", "false") + 208 CreateFontconfigEditStanza("antialias", "bool", "false") +
212 kFontconfigMatchFooter + 209 kFontconfigMatchFooter +
213 kFontconfigMatchHeader + 210 kFontconfigMatchHeader +
214 CreateFontconfigTestStanza("scalable", "eq", "bool", "true") + 211 CreateFontconfigTestStanza("scalable", "eq", "bool", "true") +
215 CreateFontconfigEditStanza("antialias", "bool", "true") + 212 CreateFontconfigEditStanza("antialias", "bool", "true") +
216 kFontconfigMatchFooter + 213 kFontconfigMatchFooter +
217 kFontconfigFileFooter)); 214 kFontconfigFileFooter));
218 215
219 // Check that we specifically ask how scalable fonts should be rendered. 216 // Check that we specifically ask how scalable fonts should be rendered.
220 FontRenderParams params = GetCustomFontRenderParams( 217 FontRenderParams params = GetFontRenderParams(
221 false, NULL, NULL, NULL, NULL, NULL); 218 FontRenderParamsQuery(false), NULL);
222 EXPECT_TRUE(params.antialiasing); 219 EXPECT_TRUE(params.antialiasing);
223 } 220 }
224 221
225 TEST_F(FontRenderParamsTest, UseBitmaps) { 222 TEST_F(FontRenderParamsTest, UseBitmaps) {
226 ASSERT_TRUE(LoadSystemFont("arial.ttf")); 223 ASSERT_TRUE(LoadSystemFont("arial.ttf"));
227 // Load a config that enables embedded bitmaps for fonts <= 10 pixels. 224 // Load a config that enables embedded bitmaps for fonts <= 10 pixels.
228 ASSERT_TRUE(LoadConfigDataIntoFontconfig(temp_dir_.path(), 225 ASSERT_TRUE(LoadConfigDataIntoFontconfig(temp_dir_.path(),
229 std::string(kFontconfigFileHeader) + 226 std::string(kFontconfigFileHeader) +
230 kFontconfigMatchHeader + 227 kFontconfigMatchHeader +
231 CreateFontconfigEditStanza("embeddedbitmap", "bool", "false") + 228 CreateFontconfigEditStanza("embeddedbitmap", "bool", "false") +
232 kFontconfigMatchFooter + 229 kFontconfigMatchFooter +
233 kFontconfigMatchHeader + 230 kFontconfigMatchHeader +
234 CreateFontconfigTestStanza("pixelsize", "less_eq", "double", "10") + 231 CreateFontconfigTestStanza("pixelsize", "less_eq", "double", "10") +
235 CreateFontconfigEditStanza("embeddedbitmap", "bool", "true") + 232 CreateFontconfigEditStanza("embeddedbitmap", "bool", "true") +
236 kFontconfigMatchFooter + 233 kFontconfigMatchFooter +
237 kFontconfigFileFooter)); 234 kFontconfigFileFooter));
238 235
239 FontRenderParams params = GetCustomFontRenderParams( 236 FontRenderParamsQuery query(false);
240 false, NULL, NULL, NULL, NULL, NULL); 237 FontRenderParams params = GetFontRenderParams(query, NULL);
241 EXPECT_FALSE(params.use_bitmaps); 238 EXPECT_FALSE(params.use_bitmaps);
242 239
243 const int pixel_size = 5; 240 query.pixel_size = 5;
244 params = GetCustomFontRenderParams( 241 params = GetFontRenderParams(query, NULL);
245 false, NULL, &pixel_size, NULL, NULL, NULL);
246 EXPECT_TRUE(params.use_bitmaps); 242 EXPECT_TRUE(params.use_bitmaps);
247 } 243 }
248 244
249 TEST_F(FontRenderParamsTest, OnlySetConfiguredValues) { 245 TEST_F(FontRenderParamsTest, OnlySetConfiguredValues) {
250 // Configure the LinuxFontDelegate (which queries GtkSettings on desktop 246 // Configure the LinuxFontDelegate (which queries GtkSettings on desktop
251 // Linux) to request subpixel rendering. 247 // Linux) to request subpixel rendering.
252 FontRenderParams system_params; 248 FontRenderParams system_params;
253 system_params.subpixel_rendering = FontRenderParams::SUBPIXEL_RENDERING_RGB; 249 system_params.subpixel_rendering = FontRenderParams::SUBPIXEL_RENDERING_RGB;
254 test_font_delegate_.set_params(system_params); 250 test_font_delegate_.set_params(system_params);
255 251
256 // Load a Fontconfig config that enables antialiasing but doesn't say anything 252 // Load a Fontconfig config that enables antialiasing but doesn't say anything
257 // about subpixel rendering. 253 // about subpixel rendering.
258 ASSERT_TRUE(LoadSystemFont("arial.ttf")); 254 ASSERT_TRUE(LoadSystemFont("arial.ttf"));
259 ASSERT_TRUE(LoadConfigDataIntoFontconfig(temp_dir_.path(), 255 ASSERT_TRUE(LoadConfigDataIntoFontconfig(temp_dir_.path(),
260 std::string(kFontconfigFileHeader) + 256 std::string(kFontconfigFileHeader) +
261 kFontconfigMatchHeader + 257 kFontconfigMatchHeader +
262 CreateFontconfigEditStanza("antialias", "bool", "true") + 258 CreateFontconfigEditStanza("antialias", "bool", "true") +
263 kFontconfigMatchFooter + 259 kFontconfigMatchFooter +
264 kFontconfigFileFooter)); 260 kFontconfigFileFooter));
265 261
266 // The subpixel rendering setting from the delegate should make it through. 262 // The subpixel rendering setting from the delegate should make it through.
267 FontRenderParams params = GetCustomFontRenderParams( 263 FontRenderParams params = GetFontRenderParams(
268 false, NULL, NULL, NULL, NULL, NULL); 264 FontRenderParamsQuery(false), NULL);
269 EXPECT_EQ(system_params.subpixel_rendering, params.subpixel_rendering); 265 EXPECT_EQ(system_params.subpixel_rendering, params.subpixel_rendering);
270 } 266 }
271 267
272 TEST_F(FontRenderParamsTest, NoFontconfigMatch) { 268 TEST_F(FontRenderParamsTest, NoFontconfigMatch) {
273 // Don't load a Fontconfig configuration. 269 // Don't load a Fontconfig configuration.
274 FontRenderParams system_params; 270 FontRenderParams system_params;
275 system_params.antialiasing = true; 271 system_params.antialiasing = true;
276 system_params.hinting = FontRenderParams::HINTING_MEDIUM; 272 system_params.hinting = FontRenderParams::HINTING_MEDIUM;
277 system_params.subpixel_rendering = FontRenderParams::SUBPIXEL_RENDERING_RGB; 273 system_params.subpixel_rendering = FontRenderParams::SUBPIXEL_RENDERING_RGB;
278 test_font_delegate_.set_params(system_params); 274 test_font_delegate_.set_params(system_params);
279 275
280 std::vector<std::string> families; 276 FontRenderParamsQuery query(false);
281 families.push_back("Arial"); 277 query.families.push_back("Arial");
282 families.push_back("Times New Roman"); 278 query.families.push_back("Times New Roman");
283 const int pixel_size = 10; 279 query.pixel_size = 10;
284 std::string suggested_family; 280 std::string suggested_family;
285 FontRenderParams params = GetCustomFontRenderParams( 281 FontRenderParams params = GetFontRenderParams(query, &suggested_family);
msw 2014/07/23 22:16:35 nit: I just noticed that this is the only test tha
Daniel Erat 2014/07/23 22:47:18 sure, was planning to do this to check that we're
286 false, &families, &pixel_size, NULL, NULL, &suggested_family);
287 282
288 // The system params and the first requested family should be returned. 283 // The system params and the first requested family should be returned.
289 EXPECT_EQ(system_params.antialiasing, params.antialiasing); 284 EXPECT_EQ(system_params.antialiasing, params.antialiasing);
290 EXPECT_EQ(system_params.hinting, params.hinting); 285 EXPECT_EQ(system_params.hinting, params.hinting);
291 EXPECT_EQ(system_params.subpixel_rendering, params.subpixel_rendering); 286 EXPECT_EQ(system_params.subpixel_rendering, params.subpixel_rendering);
292 EXPECT_EQ("Arial", suggested_family); 287 EXPECT_EQ(query.families[0], suggested_family);
293 } 288 }
294 289
295 } // namespace gfx 290 } // namespace gfx
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698