OLD | NEW |
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 <stddef.h> | 5 #include <stddef.h> |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 | 8 |
9 #include "base/macros.h" | 9 #include "base/macros.h" |
10 #include "base/memory/scoped_ptr.h" | 10 #include "base/memory/scoped_ptr.h" |
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
177 styled()->SetBounds(0, 0, 1000, 1000); | 177 styled()->SetBounds(0, 0, 1000, 1000); |
178 styled()->Layout(); | 178 styled()->Layout(); |
179 EXPECT_EQ(7, styled()->child_count()); | 179 EXPECT_EQ(7, styled()->child_count()); |
180 } | 180 } |
181 | 181 |
182 TEST_F(StyledLabelTest, DontBreakLinks) { | 182 TEST_F(StyledLabelTest, DontBreakLinks) { |
183 const std::string text("This is a test block of text, "); | 183 const std::string text("This is a test block of text, "); |
184 const std::string link_text("and this should be a link"); | 184 const std::string link_text("and this should be a link"); |
185 InitStyledLabel(text + link_text); | 185 InitStyledLabel(text + link_text); |
186 styled()->AddStyleRange( | 186 styled()->AddStyleRange( |
187 gfx::Range(text.size(), text.size() + link_text.size()), | 187 gfx::Range(static_cast<uint32_t>(text.size()), |
| 188 static_cast<uint32_t>(text.size() + link_text.size())), |
188 StyledLabel::RangeStyleInfo::CreateForLink()); | 189 StyledLabel::RangeStyleInfo::CreateForLink()); |
189 | 190 |
190 Label label(ASCIIToUTF16(text + link_text.substr(0, link_text.size() / 2))); | 191 Label label(ASCIIToUTF16(text + link_text.substr(0, link_text.size() / 2))); |
191 gfx::Size label_preferred_size = label.GetPreferredSize(); | 192 gfx::Size label_preferred_size = label.GetPreferredSize(); |
192 int pref_height = styled()->GetHeightForWidth(label_preferred_size.width()); | 193 int pref_height = styled()->GetHeightForWidth(label_preferred_size.width()); |
193 EXPECT_EQ(label_preferred_size.height() * 2, | 194 EXPECT_EQ(label_preferred_size.height() * 2, |
194 pref_height - styled()->GetInsets().height()); | 195 pref_height - styled()->GetInsets().height()); |
195 | 196 |
196 styled()->SetBounds(0, 0, label_preferred_size.width(), pref_height); | 197 styled()->SetBounds(0, 0, label_preferred_size.width(), pref_height); |
197 styled()->Layout(); | 198 styled()->Layout(); |
198 ASSERT_EQ(2, styled()->child_count()); | 199 ASSERT_EQ(2, styled()->child_count()); |
199 // The label has no focus border while the link (and thus overall styled | 200 // The label has no focus border while the link (and thus overall styled |
200 // label) does, so the label should be inset by the width of the focus border. | 201 // label) does, so the label should be inset by the width of the focus border. |
201 EXPECT_EQ(Label::kFocusBorderPadding, styled()->child_at(0)->x()); | 202 EXPECT_EQ(Label::kFocusBorderPadding, styled()->child_at(0)->x()); |
202 EXPECT_EQ(0, styled()->child_at(1)->x()); | 203 EXPECT_EQ(0, styled()->child_at(1)->x()); |
203 } | 204 } |
204 | 205 |
205 TEST_F(StyledLabelTest, StyledRangeWithDisabledLineWrapping) { | 206 TEST_F(StyledLabelTest, StyledRangeWithDisabledLineWrapping) { |
206 const std::string text("This is a test block of text, "); | 207 const std::string text("This is a test block of text, "); |
207 const std::string unbreakable_text("and this should not be broken"); | 208 const std::string unbreakable_text("and this should not be broken"); |
208 InitStyledLabel(text + unbreakable_text); | 209 InitStyledLabel(text + unbreakable_text); |
209 StyledLabel::RangeStyleInfo style_info; | 210 StyledLabel::RangeStyleInfo style_info; |
210 style_info.disable_line_wrapping = true; | 211 style_info.disable_line_wrapping = true; |
211 styled()->AddStyleRange( | 212 styled()->AddStyleRange( |
212 gfx::Range(text.size(), text.size() + unbreakable_text.size()), | 213 gfx::Range(static_cast<uint32_t>(text.size()), |
| 214 static_cast<uint32_t>(text.size() + unbreakable_text.size())), |
213 style_info); | 215 style_info); |
214 | 216 |
215 Label label(ASCIIToUTF16( | 217 Label label(ASCIIToUTF16( |
216 text + unbreakable_text.substr(0, unbreakable_text.size() / 2))); | 218 text + unbreakable_text.substr(0, unbreakable_text.size() / 2))); |
217 gfx::Size label_preferred_size = label.GetPreferredSize(); | 219 gfx::Size label_preferred_size = label.GetPreferredSize(); |
218 int pref_height = styled()->GetHeightForWidth(label_preferred_size.width()); | 220 int pref_height = styled()->GetHeightForWidth(label_preferred_size.width()); |
219 EXPECT_EQ(label_preferred_size.height() * 2, | 221 EXPECT_EQ(label_preferred_size.height() * 2, |
220 pref_height - styled()->GetInsets().height()); | 222 pref_height - styled()->GetInsets().height()); |
221 | 223 |
222 styled()->SetBounds(0, 0, label_preferred_size.width(), pref_height); | 224 styled()->SetBounds(0, 0, label_preferred_size.width(), pref_height); |
223 styled()->Layout(); | 225 styled()->Layout(); |
224 ASSERT_EQ(2, styled()->child_count()); | 226 ASSERT_EQ(2, styled()->child_count()); |
225 EXPECT_EQ(0, styled()->child_at(0)->x()); | 227 EXPECT_EQ(0, styled()->child_at(0)->x()); |
226 EXPECT_EQ(0, styled()->child_at(1)->x()); | 228 EXPECT_EQ(0, styled()->child_at(1)->x()); |
227 } | 229 } |
228 | 230 |
229 TEST_F(StyledLabelTest, StyledRangeUnderlined) { | 231 TEST_F(StyledLabelTest, StyledRangeUnderlined) { |
230 const std::string text("This is a test block of text, "); | 232 const std::string text("This is a test block of text, "); |
231 const std::string underlined_text("and this should be undelined"); | 233 const std::string underlined_text("and this should be undelined"); |
232 InitStyledLabel(text + underlined_text); | 234 InitStyledLabel(text + underlined_text); |
233 StyledLabel::RangeStyleInfo style_info; | 235 StyledLabel::RangeStyleInfo style_info; |
234 style_info.font_style = gfx::Font::UNDERLINE; | 236 style_info.font_style = gfx::Font::UNDERLINE; |
235 styled()->AddStyleRange( | 237 styled()->AddStyleRange( |
236 gfx::Range(text.size(), text.size() + underlined_text.size()), | 238 gfx::Range(static_cast<uint32_t>(text.size()), |
| 239 static_cast<uint32_t>(text.size() + underlined_text.size())), |
237 style_info); | 240 style_info); |
238 | 241 |
239 styled()->SetBounds(0, 0, 1000, 1000); | 242 styled()->SetBounds(0, 0, 1000, 1000); |
240 styled()->Layout(); | 243 styled()->Layout(); |
241 | 244 |
242 ASSERT_EQ(2, styled()->child_count()); | 245 ASSERT_EQ(2, styled()->child_count()); |
243 ASSERT_EQ(std::string(Label::kViewClassName), | 246 ASSERT_EQ(std::string(Label::kViewClassName), |
244 styled()->child_at(1)->GetClassName()); | 247 styled()->child_at(1)->GetClassName()); |
245 EXPECT_EQ( | 248 EXPECT_EQ( |
246 gfx::Font::UNDERLINE, | 249 gfx::Font::UNDERLINE, |
247 static_cast<Label*>(styled()->child_at(1))->font_list().GetFontStyle()); | 250 static_cast<Label*>(styled()->child_at(1))->font_list().GetFontStyle()); |
248 } | 251 } |
249 | 252 |
250 TEST_F(StyledLabelTest, StyledRangeBold) { | 253 TEST_F(StyledLabelTest, StyledRangeBold) { |
251 const std::string bold_text( | 254 const std::string bold_text( |
252 "This is a block of text whose style will be set to BOLD in the test"); | 255 "This is a block of text whose style will be set to BOLD in the test"); |
253 const std::string text(" normal text"); | 256 const std::string text(" normal text"); |
254 InitStyledLabel(bold_text + text); | 257 InitStyledLabel(bold_text + text); |
255 | 258 |
256 StyledLabel::RangeStyleInfo style_info; | 259 StyledLabel::RangeStyleInfo style_info; |
257 style_info.font_style = gfx::Font::BOLD; | 260 style_info.font_style = gfx::Font::BOLD; |
258 styled()->AddStyleRange(gfx::Range(0, bold_text.size()), style_info); | 261 styled()->AddStyleRange( |
| 262 gfx::Range(0u, static_cast<uint32_t>(bold_text.size())), style_info); |
259 | 263 |
260 // Calculate the bold text width if it were a pure label view, both with bold | 264 // Calculate the bold text width if it were a pure label view, both with bold |
261 // and normal style. | 265 // and normal style. |
262 Label label(ASCIIToUTF16(bold_text)); | 266 Label label(ASCIIToUTF16(bold_text)); |
263 const gfx::Size normal_label_size = label.GetPreferredSize(); | 267 const gfx::Size normal_label_size = label.GetPreferredSize(); |
264 label.SetFontList(label.font_list().DeriveWithStyle(gfx::Font::BOLD)); | 268 label.SetFontList(label.font_list().DeriveWithStyle(gfx::Font::BOLD)); |
265 const gfx::Size bold_label_size = label.GetPreferredSize(); | 269 const gfx::Size bold_label_size = label.GetPreferredSize(); |
266 | 270 |
267 ASSERT_GE(bold_label_size.width(), normal_label_size.width()); | 271 ASSERT_GE(bold_label_size.width(), normal_label_size.width()); |
268 | 272 |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
308 } | 312 } |
309 | 313 |
310 TEST_F(StyledLabelTest, Color) { | 314 TEST_F(StyledLabelTest, Color) { |
311 const std::string text_red("RED"); | 315 const std::string text_red("RED"); |
312 const std::string text_link("link"); | 316 const std::string text_link("link"); |
313 const std::string text("word"); | 317 const std::string text("word"); |
314 InitStyledLabel(text_red + text_link + text); | 318 InitStyledLabel(text_red + text_link + text); |
315 | 319 |
316 StyledLabel::RangeStyleInfo style_info_red; | 320 StyledLabel::RangeStyleInfo style_info_red; |
317 style_info_red.color = SK_ColorRED; | 321 style_info_red.color = SK_ColorRED; |
318 styled()->AddStyleRange(gfx::Range(0, text_red.size()), style_info_red); | 322 styled()->AddStyleRange( |
| 323 gfx::Range(0u, static_cast<uint32_t>(text_red.size())), style_info_red); |
319 | 324 |
320 StyledLabel::RangeStyleInfo style_info_link = | 325 StyledLabel::RangeStyleInfo style_info_link = |
321 StyledLabel::RangeStyleInfo::CreateForLink(); | 326 StyledLabel::RangeStyleInfo::CreateForLink(); |
322 styled()->AddStyleRange(gfx::Range(text_red.size(), | 327 styled()->AddStyleRange( |
323 text_red.size() + text_link.size()), | 328 gfx::Range(static_cast<uint32_t>(text_red.size()), |
324 style_info_link); | 329 static_cast<uint32_t>(text_red.size() + text_link.size())), |
| 330 style_info_link); |
325 | 331 |
326 styled()->SetBounds(0, 0, 1000, 1000); | 332 styled()->SetBounds(0, 0, 1000, 1000); |
327 styled()->Layout(); | 333 styled()->Layout(); |
328 | 334 |
329 Widget* widget = new Widget(); | 335 Widget* widget = new Widget(); |
330 Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP); | 336 Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP); |
331 widget->Init(params); | 337 widget->Init(params); |
332 View* container = new View(); | 338 View* container = new View(); |
333 widget->SetContentsView(container); | 339 widget->SetContentsView(container); |
334 container->AddChildView(styled()); | 340 container->AddChildView(styled()); |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
370 const std::string link_text("and this should be a link"); | 376 const std::string link_text("and this should be a link"); |
371 | 377 |
372 const size_t tooltip_start = text.size(); | 378 const size_t tooltip_start = text.size(); |
373 const size_t link_start = | 379 const size_t link_start = |
374 text.size() + tooltip_text.size() + normal_text.size(); | 380 text.size() + tooltip_text.size() + normal_text.size(); |
375 | 381 |
376 InitStyledLabel(text + tooltip_text + normal_text + link_text); | 382 InitStyledLabel(text + tooltip_text + normal_text + link_text); |
377 StyledLabel::RangeStyleInfo tooltip_style; | 383 StyledLabel::RangeStyleInfo tooltip_style; |
378 tooltip_style.tooltip = ASCIIToUTF16("tooltip"); | 384 tooltip_style.tooltip = ASCIIToUTF16("tooltip"); |
379 styled()->AddStyleRange( | 385 styled()->AddStyleRange( |
380 gfx::Range(tooltip_start, tooltip_start + tooltip_text.size()), | 386 gfx::Range(static_cast<uint32_t>(tooltip_start), |
| 387 static_cast<uint32_t>(tooltip_start + tooltip_text.size())), |
381 tooltip_style); | 388 tooltip_style); |
382 styled()->AddStyleRange(gfx::Range(link_start, link_start + link_text.size()), | 389 styled()->AddStyleRange( |
383 StyledLabel::RangeStyleInfo::CreateForLink()); | 390 gfx::Range(static_cast<uint32_t>(link_start), |
| 391 static_cast<uint32_t>(link_start + link_text.size())), |
| 392 StyledLabel::RangeStyleInfo::CreateForLink()); |
384 | 393 |
385 // Break line inside the range with the tooltip. | 394 // Break line inside the range with the tooltip. |
386 Label label(ASCIIToUTF16( | 395 Label label(ASCIIToUTF16( |
387 text + tooltip_text.substr(0, tooltip_text.size() - 3))); | 396 text + tooltip_text.substr(0, tooltip_text.size() - 3))); |
388 gfx::Size label_preferred_size = label.GetPreferredSize(); | 397 gfx::Size label_preferred_size = label.GetPreferredSize(); |
389 int pref_height = styled()->GetHeightForWidth(label_preferred_size.width()); | 398 int pref_height = styled()->GetHeightForWidth(label_preferred_size.width()); |
390 EXPECT_EQ(label_preferred_size.height() * 3, | 399 EXPECT_EQ(label_preferred_size.height() * 3, |
391 pref_height - styled()->GetInsets().height()); | 400 pref_height - styled()->GetInsets().height()); |
392 | 401 |
393 styled()->SetBounds(0, 0, label_preferred_size.width(), pref_height); | 402 styled()->SetBounds(0, 0, label_preferred_size.width(), pref_height); |
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
489 // all controls should be recreated | 498 // all controls should be recreated |
490 styled()->SetText(another_text); | 499 styled()->SetText(another_text); |
491 int updated_height = styled()->GetHeightForWidth(styled()->width()); | 500 int updated_height = styled()->GetHeightForWidth(styled()->width()); |
492 EXPECT_NE(updated_height, real_height); | 501 EXPECT_NE(updated_height, real_height); |
493 View* first_child_after_text_update = styled()->has_children() ? | 502 View* first_child_after_text_update = styled()->has_children() ? |
494 styled()->child_at(0) : nullptr; | 503 styled()->child_at(0) : nullptr; |
495 EXPECT_NE(first_child_after_text_update, first_child_after_layout); | 504 EXPECT_NE(first_child_after_text_update, first_child_after_layout); |
496 } | 505 } |
497 | 506 |
498 } // namespace views | 507 } // namespace views |
OLD | NEW |