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 <string> | 5 #include <string> |
6 | 6 |
7 #include "base/basictypes.h" | 7 #include "base/basictypes.h" |
8 #include "base/memory/scoped_ptr.h" | 8 #include "base/memory/scoped_ptr.h" |
9 #include "base/strings/utf_string_conversions.h" | 9 #include "base/strings/utf_string_conversions.h" |
10 #include "testing/gtest/include/gtest/gtest.h" | 10 #include "testing/gtest/include/gtest/gtest.h" |
11 #include "third_party/skia/include/core/SkColor.h" | 11 #include "third_party/skia/include/core/SkColor.h" |
12 #include "ui/gfx/font_list.h" | 12 #include "ui/gfx/font_list.h" |
13 #include "ui/views/border.h" | 13 #include "ui/views/border.h" |
14 #include "ui/views/controls/link.h" | 14 #include "ui/views/controls/link.h" |
15 #include "ui/views/controls/styled_label.h" | 15 #include "ui/views/controls/styled_label.h" |
16 #include "ui/views/controls/styled_label_listener.h" | 16 #include "ui/views/controls/styled_label_listener.h" |
17 #include "ui/views/test/views_test_base.h" | |
18 #include "ui/views/widget/widget.h" | |
19 | 17 |
20 using base::ASCIIToUTF16; | 18 using base::ASCIIToUTF16; |
21 | 19 |
22 namespace views { | 20 namespace views { |
23 | 21 |
24 class StyledLabelTest : public ViewsTestBase, public StyledLabelListener { | 22 class StyledLabelTest : public testing::Test, public StyledLabelListener { |
25 public: | 23 public: |
26 StyledLabelTest() {} | 24 StyledLabelTest() {} |
27 virtual ~StyledLabelTest() {} | 25 virtual ~StyledLabelTest() {} |
28 | 26 |
29 // StyledLabelListener implementation. | 27 // StyledLabelListener implementation. |
30 virtual void StyledLabelLinkClicked(const gfx::Range& range, | 28 virtual void StyledLabelLinkClicked(const gfx::Range& range, |
31 int event_flags) OVERRIDE {} | 29 int event_flags) OVERRIDE {} |
32 | 30 |
33 protected: | 31 protected: |
34 StyledLabel* styled() { return styled_.get(); } | 32 StyledLabel* styled() { return styled_.get(); } |
(...skipping 252 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
287 StyledLabel::RangeStyleInfo style_info_red; | 285 StyledLabel::RangeStyleInfo style_info_red; |
288 style_info_red.color = SK_ColorRED; | 286 style_info_red.color = SK_ColorRED; |
289 styled()->AddStyleRange(gfx::Range(0, text_red.size()), style_info_red); | 287 styled()->AddStyleRange(gfx::Range(0, text_red.size()), style_info_red); |
290 | 288 |
291 StyledLabel::RangeStyleInfo style_info_link = | 289 StyledLabel::RangeStyleInfo style_info_link = |
292 StyledLabel::RangeStyleInfo::CreateForLink(); | 290 StyledLabel::RangeStyleInfo::CreateForLink(); |
293 styled()->AddStyleRange(gfx::Range(text_red.size(), | 291 styled()->AddStyleRange(gfx::Range(text_red.size(), |
294 text_red.size() + text_link.size()), | 292 text_red.size() + text_link.size()), |
295 style_info_link); | 293 style_info_link); |
296 | 294 |
| 295 // Obtain the default text color for a label. |
| 296 Label label(ASCIIToUTF16(text)); |
| 297 const SkColor kDefaultTextColor = label.enabled_color(); |
| 298 |
| 299 // Obtain the default text color for a link; |
| 300 Link link(ASCIIToUTF16(text_link)); |
| 301 const SkColor kDefaultLinkColor = link.enabled_color(); |
| 302 |
297 styled()->SetBounds(0, 0, 1000, 1000); | 303 styled()->SetBounds(0, 0, 1000, 1000); |
298 styled()->Layout(); | 304 styled()->Layout(); |
299 | 305 |
300 Widget* widget = new Widget(); | |
301 Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP); | |
302 widget->Init(params); | |
303 View* container = new View(); | |
304 widget->SetContentsView(container); | |
305 container->AddChildView(styled()); | |
306 | |
307 // Obtain the default text color for a label. | |
308 Label* label = new Label(ASCIIToUTF16(text)); | |
309 container->AddChildView(label); | |
310 const SkColor kDefaultTextColor = label->enabled_color(); | |
311 | |
312 // Obtain the default text color for a link; | |
313 Link* link = new Link(ASCIIToUTF16(text_link)); | |
314 container->AddChildView(link); | |
315 const SkColor kDefaultLinkColor = link->enabled_color(); | |
316 | |
317 EXPECT_EQ(SK_ColorRED, | 306 EXPECT_EQ(SK_ColorRED, |
318 static_cast<Label*>(styled()->child_at(0))->enabled_color()); | 307 static_cast<Label*>(styled()->child_at(0))->enabled_color()); |
319 EXPECT_EQ(kDefaultLinkColor, | 308 EXPECT_EQ(kDefaultLinkColor, |
320 static_cast<Label*>(styled()->child_at(1))->enabled_color()); | 309 static_cast<Label*>(styled()->child_at(1))->enabled_color()); |
321 EXPECT_EQ(kDefaultTextColor, | 310 EXPECT_EQ(kDefaultTextColor, |
322 static_cast<Label*>(styled()->child_at(2))->enabled_color()); | 311 static_cast<Label*>(styled()->child_at(2))->enabled_color()); |
| 312 } |
323 | 313 |
324 // Test adjusted color readability. | 314 TEST_F(StyledLabelTest, ColorReadability) { |
| 315 const std::string text( |
| 316 "This is a block of text that needs color adjustment."); |
| 317 InitStyledLabel(text); |
325 styled()->SetDisplayedOnBackgroundColor(SK_ColorBLACK); | 318 styled()->SetDisplayedOnBackgroundColor(SK_ColorBLACK); |
| 319 |
| 320 // Obtain the text color if it were a pure label. |
| 321 Label label(ASCIIToUTF16(text)); |
| 322 label.SetBackgroundColor(SK_ColorBLACK); |
| 323 |
| 324 styled()->SetBounds(0, 0, 1000, 1000); |
326 styled()->Layout(); | 325 styled()->Layout(); |
327 label->SetBackgroundColor(SK_ColorBLACK); | |
328 | 326 |
329 const SkColor kAdjustedTextColor = label->enabled_color(); | 327 EXPECT_EQ(label.enabled_color(), |
330 EXPECT_NE(kAdjustedTextColor, kDefaultTextColor); | 328 static_cast<Label*>(styled()->child_at(0))->enabled_color()); |
331 EXPECT_EQ(kAdjustedTextColor, | |
332 static_cast<Label*>(styled()->child_at(2))->enabled_color()); | |
333 | |
334 widget->CloseNow(); | |
335 } | 329 } |
336 | 330 |
337 TEST_F(StyledLabelTest, StyledRangeWithTooltip) { | 331 TEST_F(StyledLabelTest, StyledRangeWithTooltip) { |
338 const std::string text("This is a test block of text, "); | 332 const std::string text("This is a test block of text, "); |
339 const std::string tooltip_text("this should have a tooltip,"); | 333 const std::string tooltip_text("this should have a tooltip,"); |
340 const std::string normal_text(" this should not have a tooltip, "); | 334 const std::string normal_text(" this should not have a tooltip, "); |
341 const std::string link_text("and this should be a link"); | 335 const std::string link_text("and this should be a link"); |
342 | 336 |
343 const size_t tooltip_start = text.size(); | 337 const size_t tooltip_start = text.size(); |
344 const size_t link_start = | 338 const size_t link_start = |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
405 EXPECT_EQ(label.GetPreferredSize().width(), styled()->width()); | 399 EXPECT_EQ(label.GetPreferredSize().width(), styled()->width()); |
406 } | 400 } |
407 | 401 |
408 TEST_F(StyledLabelTest, HandleEmptyLayout) { | 402 TEST_F(StyledLabelTest, HandleEmptyLayout) { |
409 const std::string text("This is a test block of text."); | 403 const std::string text("This is a test block of text."); |
410 InitStyledLabel(text); | 404 InitStyledLabel(text); |
411 styled()->Layout(); | 405 styled()->Layout(); |
412 EXPECT_EQ(0, styled()->child_count()); | 406 EXPECT_EQ(0, styled()->child_count()); |
413 } | 407 } |
414 | 408 |
415 } // namespace views | 409 } // namespace |
OLD | NEW |