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

Side by Side Diff: ui/views/controls/styled_label_unittest.cc

Issue 1819753003: Allow various font weights in gfx. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Add a lost comment and modify a render text unittest to not test black because of test env font con… Created 4 years, 6 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
« no previous file with comments | « ui/views/controls/styled_label.cc ('k') | ui/views/controls/tabbed_pane/tabbed_pane.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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/views/controls/styled_label.h" 5 #include "ui/views/controls/styled_label.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <memory> 9 #include <memory>
10 #include <string> 10 #include <string>
(...skipping 211 matching lines...) Expand 10 before | Expand all | Expand 10 after
222 EXPECT_EQ(label_preferred_size.height() * 2, 222 EXPECT_EQ(label_preferred_size.height() * 2,
223 pref_height - styled()->GetInsets().height()); 223 pref_height - styled()->GetInsets().height());
224 224
225 styled()->SetBounds(0, 0, label_preferred_size.width(), pref_height); 225 styled()->SetBounds(0, 0, label_preferred_size.width(), pref_height);
226 styled()->Layout(); 226 styled()->Layout();
227 ASSERT_EQ(2, styled()->child_count()); 227 ASSERT_EQ(2, styled()->child_count());
228 EXPECT_EQ(0, styled()->child_at(0)->x()); 228 EXPECT_EQ(0, styled()->child_at(0)->x());
229 EXPECT_EQ(0, styled()->child_at(1)->x()); 229 EXPECT_EQ(0, styled()->child_at(1)->x());
230 } 230 }
231 231
232 TEST_F(StyledLabelTest, StyledRangeUnderlined) { 232 // TODO(mboc): Linux has never supported UNDERLINE, only virtually. Fix this.
233 #if defined(OS_LINUX)
234 #define MAYBE_StyledRangeUnderlined DISABLED_StyledRangeUnderlined
235 #else
236 #define MAYBE_StyledRangeUnderlined StyledRangeUnderlined
237 #endif
238 TEST_F(StyledLabelTest, MAYBE_StyledRangeUnderlined) {
233 const std::string text("This is a test block of text, "); 239 const std::string text("This is a test block of text, ");
234 const std::string underlined_text("and this should be undelined"); 240 const std::string underlined_text("and this should be undelined");
235 InitStyledLabel(text + underlined_text); 241 InitStyledLabel(text + underlined_text);
236 StyledLabel::RangeStyleInfo style_info; 242 StyledLabel::RangeStyleInfo style_info;
237 style_info.font_style = gfx::Font::UNDERLINE; 243 style_info.font_style = gfx::Font::UNDERLINE;
238 styled()->AddStyleRange( 244 styled()->AddStyleRange(
239 gfx::Range(static_cast<uint32_t>(text.size()), 245 gfx::Range(static_cast<uint32_t>(text.size()),
240 static_cast<uint32_t>(text.size() + underlined_text.size())), 246 static_cast<uint32_t>(text.size() + underlined_text.size())),
241 style_info); 247 style_info);
242 248
243 styled()->SetBounds(0, 0, 1000, 1000); 249 styled()->SetBounds(0, 0, 1000, 1000);
244 styled()->Layout(); 250 styled()->Layout();
245 251
246 ASSERT_EQ(2, styled()->child_count()); 252 ASSERT_EQ(2, styled()->child_count());
247 ASSERT_EQ(std::string(Label::kViewClassName), 253 ASSERT_EQ(std::string(Label::kViewClassName),
248 styled()->child_at(1)->GetClassName()); 254 styled()->child_at(1)->GetClassName());
249 EXPECT_EQ( 255 EXPECT_EQ(
250 gfx::Font::UNDERLINE, 256 gfx::Font::UNDERLINE,
251 static_cast<Label*>(styled()->child_at(1))->font_list().GetFontStyle()); 257 static_cast<Label*>(styled()->child_at(1))->font_list().GetFontStyle());
252 } 258 }
253 259
254 TEST_F(StyledLabelTest, StyledRangeBold) { 260 TEST_F(StyledLabelTest, StyledRangeBold) {
255 const std::string bold_text( 261 const std::string bold_text(
256 "This is a block of text whose style will be set to BOLD in the test"); 262 "This is a block of text whose style will be set to BOLD in the test");
257 const std::string text(" normal text"); 263 const std::string text(" normal text");
258 InitStyledLabel(bold_text + text); 264 InitStyledLabel(bold_text + text);
259 265
260 StyledLabel::RangeStyleInfo style_info; 266 StyledLabel::RangeStyleInfo style_info;
261 style_info.font_style = gfx::Font::BOLD; 267 style_info.weight = gfx::Font::Weight::BOLD;
262 styled()->AddStyleRange( 268 styled()->AddStyleRange(
263 gfx::Range(0u, static_cast<uint32_t>(bold_text.size())), style_info); 269 gfx::Range(0u, static_cast<uint32_t>(bold_text.size())), style_info);
264 270
265 // Calculate the bold text width if it were a pure label view, both with bold 271 // Calculate the bold text width if it were a pure label view, both with bold
266 // and normal style. 272 // and normal style.
267 Label label(ASCIIToUTF16(bold_text)); 273 Label label(ASCIIToUTF16(bold_text));
268 const gfx::Size normal_label_size = label.GetPreferredSize(); 274 const gfx::Size normal_label_size = label.GetPreferredSize();
269 label.SetFontList(label.font_list().DeriveWithStyle(gfx::Font::BOLD)); 275 label.SetFontList(
276 label.font_list().DeriveWithWeight(gfx::Font::Weight::BOLD));
270 const gfx::Size bold_label_size = label.GetPreferredSize(); 277 const gfx::Size bold_label_size = label.GetPreferredSize();
271 278
272 ASSERT_GE(bold_label_size.width(), normal_label_size.width()); 279 ASSERT_GE(bold_label_size.width(), normal_label_size.width());
273 280
274 // Set the width so |bold_text| doesn't fit on a single line with bold style, 281 // Set the width so |bold_text| doesn't fit on a single line with bold style,
275 // but does with normal font style. 282 // but does with normal font style.
276 int styled_width = (normal_label_size.width() + bold_label_size.width()) / 2; 283 int styled_width = (normal_label_size.width() + bold_label_size.width()) / 2;
277 int pref_height = styled()->GetHeightForWidth(styled_width); 284 int pref_height = styled()->GetHeightForWidth(styled_width);
278 285
279 // Sanity check that |bold_text| with normal font style would fit on a single 286 // Sanity check that |bold_text| with normal font style would fit on a single
280 // line in a styled label with width |styled_width|. 287 // line in a styled label with width |styled_width|.
281 StyledLabel unstyled(ASCIIToUTF16(bold_text), this); 288 StyledLabel unstyled(ASCIIToUTF16(bold_text), this);
282 unstyled.SetBounds(0, 0, styled_width, pref_height); 289 unstyled.SetBounds(0, 0, styled_width, pref_height);
283 unstyled.Layout(); 290 unstyled.Layout();
284 EXPECT_EQ(1, unstyled.child_count()); 291 EXPECT_EQ(1, unstyled.child_count());
285 292
286 styled()->SetBounds(0, 0, styled_width, pref_height); 293 styled()->SetBounds(0, 0, styled_width, pref_height);
287 styled()->Layout(); 294 styled()->Layout();
288 295
289 ASSERT_EQ(3, styled()->child_count()); 296 ASSERT_EQ(3, styled()->child_count());
290 297
291 // The bold text should be broken up into two parts. 298 // The bold text should be broken up into two parts.
292 ASSERT_EQ(std::string(Label::kViewClassName), 299 ASSERT_EQ(std::string(Label::kViewClassName),
293 styled()->child_at(0)->GetClassName()); 300 styled()->child_at(0)->GetClassName());
294 EXPECT_EQ( 301 EXPECT_EQ(
295 gfx::Font::BOLD, 302 gfx::Font::Weight::BOLD,
296 static_cast<Label*>(styled()->child_at(0))->font_list().GetFontStyle()); 303 static_cast<Label*>(styled()->child_at(0))->font_list().GetFontWeight());
297 ASSERT_EQ(std::string(Label::kViewClassName), 304 ASSERT_EQ(std::string(Label::kViewClassName),
298 styled()->child_at(1)->GetClassName()); 305 styled()->child_at(1)->GetClassName());
299 EXPECT_EQ( 306 EXPECT_EQ(
300 gfx::Font::BOLD, 307 gfx::Font::Weight::BOLD,
301 static_cast<Label*>(styled()->child_at(1))->font_list().GetFontStyle()); 308 static_cast<Label*>(styled()->child_at(1))->font_list().GetFontWeight());
302 ASSERT_EQ(std::string(Label::kViewClassName), 309 ASSERT_EQ(std::string(Label::kViewClassName),
303 styled()->child_at(2)->GetClassName()); 310 styled()->child_at(2)->GetClassName());
304 EXPECT_EQ( 311 EXPECT_EQ(
305 gfx::Font::NORMAL, 312 gfx::Font::NORMAL,
306 static_cast<Label*>(styled()->child_at(2))->font_list().GetFontStyle()); 313 static_cast<Label*>(styled()->child_at(2))->font_list().GetFontStyle());
307 314
308 // The second bold part should start on a new line. 315 // The second bold part should start on a new line.
309 EXPECT_EQ(0, styled()->child_at(0)->x()); 316 EXPECT_EQ(0, styled()->child_at(0)->x());
310 EXPECT_EQ(0, styled()->child_at(1)->x()); 317 EXPECT_EQ(0, styled()->child_at(1)->x());
311 EXPECT_EQ(styled()->child_at(1)->bounds().right(), 318 EXPECT_EQ(styled()->child_at(1)->bounds().right(),
(...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after
499 // all controls should be recreated 506 // all controls should be recreated
500 styled()->SetText(another_text); 507 styled()->SetText(another_text);
501 int updated_height = styled()->GetHeightForWidth(styled()->width()); 508 int updated_height = styled()->GetHeightForWidth(styled()->width());
502 EXPECT_NE(updated_height, real_height); 509 EXPECT_NE(updated_height, real_height);
503 View* first_child_after_text_update = styled()->has_children() ? 510 View* first_child_after_text_update = styled()->has_children() ?
504 styled()->child_at(0) : nullptr; 511 styled()->child_at(0) : nullptr;
505 EXPECT_NE(first_child_after_text_update, first_child_after_layout); 512 EXPECT_NE(first_child_after_text_update, first_child_after_layout);
506 } 513 }
507 514
508 } // namespace views 515 } // namespace views
OLDNEW
« no previous file with comments | « ui/views/controls/styled_label.cc ('k') | ui/views/controls/tabbed_pane/tabbed_pane.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698