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