| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/label.h" | 5 #include "ui/views/controls/label.h" |
| 6 | 6 |
| 7 #include "base/i18n/rtl.h" | 7 #include "base/i18n/rtl.h" |
| 8 #include "base/strings/utf_string_conversions.h" | 8 #include "base/strings/utf_string_conversions.h" |
| 9 #include "testing/gtest/include/gtest/gtest.h" | 9 #include "testing/gtest/include/gtest/gtest.h" |
| 10 #include "ui/base/accessibility/accessible_view_state.h" | 10 #include "ui/base/accessibility/accessible_view_state.h" |
| (...skipping 21 matching lines...) Expand all Loading... |
| 32 std::string font_name("arial"); | 32 std::string font_name("arial"); |
| 33 gfx::Font font(font_name, 30); | 33 gfx::Font font(font_name, 30); |
| 34 label.SetFontList(gfx::FontList(font)); | 34 label.SetFontList(gfx::FontList(font)); |
| 35 gfx::Font font_used = label.font_list().GetPrimaryFont(); | 35 gfx::Font font_used = label.font_list().GetPrimaryFont(); |
| 36 EXPECT_EQ(font_name, font_used.GetFontName()); | 36 EXPECT_EQ(font_name, font_used.GetFontName()); |
| 37 EXPECT_EQ(30, font_used.GetFontSize()); | 37 EXPECT_EQ(30, font_used.GetFontSize()); |
| 38 } | 38 } |
| 39 | 39 |
| 40 TEST(LabelTest, TextProperty) { | 40 TEST(LabelTest, TextProperty) { |
| 41 Label label; | 41 Label label; |
| 42 string16 test_text(ASCIIToUTF16("A random string.")); | 42 base::string16 test_text(ASCIIToUTF16("A random string.")); |
| 43 label.SetText(test_text); | 43 label.SetText(test_text); |
| 44 EXPECT_EQ(test_text, label.text()); | 44 EXPECT_EQ(test_text, label.text()); |
| 45 } | 45 } |
| 46 | 46 |
| 47 TEST(LabelTest, ColorProperty) { | 47 TEST(LabelTest, ColorProperty) { |
| 48 Label label; | 48 Label label; |
| 49 SkColor color = SkColorSetARGB(20, 40, 10, 5); | 49 SkColor color = SkColorSetARGB(20, 40, 10, 5); |
| 50 label.SetAutoColorReadabilityEnabled(false); | 50 label.SetAutoColorReadabilityEnabled(false); |
| 51 label.SetEnabledColor(color); | 51 label.SetEnabledColor(color); |
| 52 EXPECT_EQ(color, label.enabled_color()); | 52 EXPECT_EQ(color, label.enabled_color()); |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 91 Label label; | 91 Label label; |
| 92 EXPECT_FALSE(label.is_multi_line()); | 92 EXPECT_FALSE(label.is_multi_line()); |
| 93 label.SetMultiLine(true); | 93 label.SetMultiLine(true); |
| 94 EXPECT_TRUE(label.is_multi_line()); | 94 EXPECT_TRUE(label.is_multi_line()); |
| 95 label.SetMultiLine(false); | 95 label.SetMultiLine(false); |
| 96 EXPECT_FALSE(label.is_multi_line()); | 96 EXPECT_FALSE(label.is_multi_line()); |
| 97 } | 97 } |
| 98 | 98 |
| 99 TEST(LabelTest, TooltipProperty) { | 99 TEST(LabelTest, TooltipProperty) { |
| 100 Label label; | 100 Label label; |
| 101 string16 test_text(ASCIIToUTF16("My cool string.")); | 101 base::string16 test_text(ASCIIToUTF16("My cool string.")); |
| 102 label.SetText(test_text); | 102 label.SetText(test_text); |
| 103 | 103 |
| 104 string16 tooltip; | 104 base::string16 tooltip; |
| 105 EXPECT_TRUE(label.GetTooltipText(gfx::Point(), &tooltip)); | 105 EXPECT_TRUE(label.GetTooltipText(gfx::Point(), &tooltip)); |
| 106 EXPECT_EQ(test_text, tooltip); | 106 EXPECT_EQ(test_text, tooltip); |
| 107 | 107 |
| 108 string16 tooltip_text(ASCIIToUTF16("The tooltip!")); | 108 base::string16 tooltip_text(ASCIIToUTF16("The tooltip!")); |
| 109 label.SetTooltipText(tooltip_text); | 109 label.SetTooltipText(tooltip_text); |
| 110 EXPECT_TRUE(label.GetTooltipText(gfx::Point(), &tooltip)); | 110 EXPECT_TRUE(label.GetTooltipText(gfx::Point(), &tooltip)); |
| 111 EXPECT_EQ(tooltip_text, tooltip); | 111 EXPECT_EQ(tooltip_text, tooltip); |
| 112 | 112 |
| 113 string16 empty_text; | 113 base::string16 empty_text; |
| 114 label.SetTooltipText(empty_text); | 114 label.SetTooltipText(empty_text); |
| 115 EXPECT_TRUE(label.GetTooltipText(gfx::Point(), &tooltip)); | 115 EXPECT_TRUE(label.GetTooltipText(gfx::Point(), &tooltip)); |
| 116 EXPECT_EQ(test_text, tooltip); | 116 EXPECT_EQ(test_text, tooltip); |
| 117 | 117 |
| 118 // Make the label big enough to hold the text | 118 // Make the label big enough to hold the text |
| 119 // and expect there to be no tooltip. | 119 // and expect there to be no tooltip. |
| 120 label.SetBounds(0, 0, 1000, 40); | 120 label.SetBounds(0, 0, 1000, 40); |
| 121 EXPECT_FALSE(label.GetTooltipText(gfx::Point(), &tooltip)); | 121 EXPECT_FALSE(label.GetTooltipText(gfx::Point(), &tooltip)); |
| 122 | 122 |
| 123 // Verify that setting the tooltip still shows it. | 123 // Verify that setting the tooltip still shows it. |
| (...skipping 14 matching lines...) Expand all Loading... |
| 138 // Verify that setting the tooltip still shows it. | 138 // Verify that setting the tooltip still shows it. |
| 139 label.SetTooltipText(tooltip_text); | 139 label.SetTooltipText(tooltip_text); |
| 140 EXPECT_TRUE(label.GetTooltipText(gfx::Point(), &tooltip)); | 140 EXPECT_TRUE(label.GetTooltipText(gfx::Point(), &tooltip)); |
| 141 EXPECT_EQ(tooltip_text, tooltip); | 141 EXPECT_EQ(tooltip_text, tooltip); |
| 142 // Clear out the tooltip. | 142 // Clear out the tooltip. |
| 143 label.SetTooltipText(empty_text); | 143 label.SetTooltipText(empty_text); |
| 144 } | 144 } |
| 145 | 145 |
| 146 TEST(LabelTest, Accessibility) { | 146 TEST(LabelTest, Accessibility) { |
| 147 Label label; | 147 Label label; |
| 148 string16 test_text(ASCIIToUTF16("My special text.")); | 148 base::string16 test_text(ASCIIToUTF16("My special text.")); |
| 149 label.SetText(test_text); | 149 label.SetText(test_text); |
| 150 | 150 |
| 151 ui::AccessibleViewState state; | 151 ui::AccessibleViewState state; |
| 152 label.GetAccessibleState(&state); | 152 label.GetAccessibleState(&state); |
| 153 EXPECT_EQ(ui::AccessibilityTypes::ROLE_STATICTEXT, state.role); | 153 EXPECT_EQ(ui::AccessibilityTypes::ROLE_STATICTEXT, state.role); |
| 154 EXPECT_EQ(test_text, state.name); | 154 EXPECT_EQ(test_text, state.name); |
| 155 EXPECT_TRUE(ui::AccessibilityTypes::STATE_READONLY & state.state); | 155 EXPECT_TRUE(ui::AccessibilityTypes::STATE_READONLY & state.state); |
| 156 } | 156 } |
| 157 | 157 |
| 158 TEST(LabelTest, SingleLineSizing) { | 158 TEST(LabelTest, SingleLineSizing) { |
| 159 Label label; | 159 Label label; |
| 160 string16 test_text(ASCIIToUTF16("A not so random string in one line.")); | 160 base::string16 test_text(ASCIIToUTF16("A not so random string in one line.")); |
| 161 label.SetText(test_text); | 161 label.SetText(test_text); |
| 162 | 162 |
| 163 // GetPreferredSize | 163 // GetPreferredSize |
| 164 gfx::Size required_size = label.GetPreferredSize(); | 164 gfx::Size required_size = label.GetPreferredSize(); |
| 165 EXPECT_GT(required_size.height(), kMinTextDimension); | 165 EXPECT_GT(required_size.height(), kMinTextDimension); |
| 166 EXPECT_GT(required_size.width(), kMinTextDimension); | 166 EXPECT_GT(required_size.width(), kMinTextDimension); |
| 167 | 167 |
| 168 // Test everything with borders. | 168 // Test everything with borders. |
| 169 gfx::Insets border(10, 20, 30, 40); | 169 gfx::Insets border(10, 20, 30, 40); |
| 170 label.set_border(Border::CreateEmptyBorder(border.top(), | 170 label.set_border(Border::CreateEmptyBorder(border.top(), |
| 171 border.left(), | 171 border.left(), |
| 172 border.bottom(), | 172 border.bottom(), |
| 173 border.right())); | 173 border.right())); |
| 174 | 174 |
| 175 // GetPreferredSize and borders. | 175 // GetPreferredSize and borders. |
| 176 label.SetBounds(0, 0, 0, 0); | 176 label.SetBounds(0, 0, 0, 0); |
| 177 gfx::Size required_size_with_border = label.GetPreferredSize(); | 177 gfx::Size required_size_with_border = label.GetPreferredSize(); |
| 178 EXPECT_EQ(required_size_with_border.height(), | 178 EXPECT_EQ(required_size_with_border.height(), |
| 179 required_size.height() + border.height()); | 179 required_size.height() + border.height()); |
| 180 EXPECT_EQ(required_size_with_border.width(), | 180 EXPECT_EQ(required_size_with_border.width(), |
| 181 required_size.width() + border.width()); | 181 required_size.width() + border.width()); |
| 182 } | 182 } |
| 183 | 183 |
| 184 TEST(LabelTest, MultilineSmallAvailableWidthSizing) { | 184 TEST(LabelTest, MultilineSmallAvailableWidthSizing) { |
| 185 Label label; | 185 Label label; |
| 186 string16 test_text(ASCIIToUTF16("Too Wide.")); | 186 base::string16 test_text(ASCIIToUTF16("Too Wide.")); |
| 187 | 187 |
| 188 label.SetMultiLine(true); | 188 label.SetMultiLine(true); |
| 189 label.SetAllowCharacterBreak(true); | 189 label.SetAllowCharacterBreak(true); |
| 190 label.SetElideBehavior(Label::ELIDE_AT_END); | 190 label.SetElideBehavior(Label::ELIDE_AT_END); |
| 191 label.SetText(test_text); | 191 label.SetText(test_text); |
| 192 | 192 |
| 193 // Check that Label can be laid out at a variety of small sizes, | 193 // Check that Label can be laid out at a variety of small sizes, |
| 194 // splitting the words into up to one character per line if necessary. | 194 // splitting the words into up to one character per line if necessary. |
| 195 // Incorrect word splitting may cause infinite loops in text layout. | 195 // Incorrect word splitting may cause infinite loops in text layout. |
| 196 gfx::Size required_size = label.GetPreferredSize(); | 196 gfx::Size required_size = label.GetPreferredSize(); |
| 197 for (int i = 1; i < required_size.width(); ++i) { | 197 for (int i = 1; i < required_size.width(); ++i) { |
| 198 EXPECT_GT(label.GetHeightForWidth(i), 0); | 198 EXPECT_GT(label.GetHeightForWidth(i), 0); |
| 199 } | 199 } |
| 200 } | 200 } |
| 201 | 201 |
| 202 TEST(LabelTest, MultiLineSizing) { | 202 TEST(LabelTest, MultiLineSizing) { |
| 203 Label label; | 203 Label label; |
| 204 label.SetFocusable(false); | 204 label.SetFocusable(false); |
| 205 string16 test_text( | 205 base::string16 test_text( |
| 206 ASCIIToUTF16("A random string\nwith multiple lines\nand returns!")); | 206 ASCIIToUTF16("A random string\nwith multiple lines\nand returns!")); |
| 207 label.SetText(test_text); | 207 label.SetText(test_text); |
| 208 label.SetMultiLine(true); | 208 label.SetMultiLine(true); |
| 209 | 209 |
| 210 // GetPreferredSize | 210 // GetPreferredSize |
| 211 gfx::Size required_size = label.GetPreferredSize(); | 211 gfx::Size required_size = label.GetPreferredSize(); |
| 212 EXPECT_GT(required_size.height(), kMinTextDimension); | 212 EXPECT_GT(required_size.height(), kMinTextDimension); |
| 213 EXPECT_GT(required_size.width(), kMinTextDimension); | 213 EXPECT_GT(required_size.width(), kMinTextDimension); |
| 214 | 214 |
| 215 // SizeToFit with unlimited width. | 215 // SizeToFit with unlimited width. |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 281 required_size.height() + border.height()); | 281 required_size.height() + border.height()); |
| 282 EXPECT_EQ(required_size_with_border.width(), | 282 EXPECT_EQ(required_size_with_border.width(), |
| 283 required_size.width() + border.width()); | 283 required_size.width() + border.width()); |
| 284 } | 284 } |
| 285 | 285 |
| 286 TEST(LabelTest, AutoDetectDirectionality) { | 286 TEST(LabelTest, AutoDetectDirectionality) { |
| 287 Label label; | 287 Label label; |
| 288 label.set_directionality_mode(Label::AUTO_DETECT_DIRECTIONALITY); | 288 label.set_directionality_mode(Label::AUTO_DETECT_DIRECTIONALITY); |
| 289 | 289 |
| 290 // Test text starts with RTL character. | 290 // Test text starts with RTL character. |
| 291 string16 test_text(WideToUTF16(L" \x5d0\x5d1\x5d2 abc")); | 291 base::string16 test_text(WideToUTF16(L" \x5d0\x5d1\x5d2 abc")); |
| 292 label.SetText(test_text); | 292 label.SetText(test_text); |
| 293 gfx::Size required_size(label.GetPreferredSize()); | 293 gfx::Size required_size(label.GetPreferredSize()); |
| 294 gfx::Size extra(22, 8); | 294 gfx::Size extra(22, 8); |
| 295 label.SetBounds(0, | 295 label.SetBounds(0, |
| 296 0, | 296 0, |
| 297 required_size.width() + extra.width(), | 297 required_size.width() + extra.width(), |
| 298 required_size.height() + extra.height()); | 298 required_size.height() + extra.height()); |
| 299 | 299 |
| 300 string16 paint_text; | 300 base::string16 paint_text; |
| 301 gfx::Rect text_bounds; | 301 gfx::Rect text_bounds; |
| 302 int flags; | 302 int flags; |
| 303 label.CalculateDrawStringParams(&paint_text, &text_bounds, &flags); | 303 label.CalculateDrawStringParams(&paint_text, &text_bounds, &flags); |
| 304 EXPECT_EQ(gfx::Canvas::FORCE_RTL_DIRECTIONALITY, | 304 EXPECT_EQ(gfx::Canvas::FORCE_RTL_DIRECTIONALITY, |
| 305 flags & (gfx::Canvas::FORCE_RTL_DIRECTIONALITY | | 305 flags & (gfx::Canvas::FORCE_RTL_DIRECTIONALITY | |
| 306 gfx::Canvas::FORCE_LTR_DIRECTIONALITY)); | 306 gfx::Canvas::FORCE_LTR_DIRECTIONALITY)); |
| 307 | 307 |
| 308 // Test text starts with LTR character. | 308 // Test text starts with LTR character. |
| 309 test_text = (WideToUTF16(L"ltr \x5d0\x5d1\x5d2 abc")); | 309 test_text = (WideToUTF16(L"ltr \x5d0\x5d1\x5d2 abc")); |
| 310 label.SetText(test_text); | 310 label.SetText(test_text); |
| (...skipping 10 matching lines...) Expand all Loading... |
| 321 } | 321 } |
| 322 | 322 |
| 323 TEST(LabelTest, DrawSingleLineString) { | 323 TEST(LabelTest, DrawSingleLineString) { |
| 324 Label label; | 324 Label label; |
| 325 label.SetFocusable(false); | 325 label.SetFocusable(false); |
| 326 | 326 |
| 327 // Turn off mirroring so that we don't need to figure out if | 327 // Turn off mirroring so that we don't need to figure out if |
| 328 // align right really means align left. | 328 // align right really means align left. |
| 329 label.set_directionality_mode(Label::AUTO_DETECT_DIRECTIONALITY); | 329 label.set_directionality_mode(Label::AUTO_DETECT_DIRECTIONALITY); |
| 330 | 330 |
| 331 string16 test_text(ASCIIToUTF16("Here's a string with no returns.")); | 331 base::string16 test_text(ASCIIToUTF16("Here's a string with no returns.")); |
| 332 label.SetText(test_text); | 332 label.SetText(test_text); |
| 333 gfx::Size required_size(label.GetPreferredSize()); | 333 gfx::Size required_size(label.GetPreferredSize()); |
| 334 gfx::Size extra(22, 8); | 334 gfx::Size extra(22, 8); |
| 335 label.SetBounds(0, | 335 label.SetBounds(0, |
| 336 0, | 336 0, |
| 337 required_size.width() + extra.width(), | 337 required_size.width() + extra.width(), |
| 338 required_size.height() + extra.height()); | 338 required_size.height() + extra.height()); |
| 339 | 339 |
| 340 // Do some basic verifications for all three alignments. | 340 // Do some basic verifications for all three alignments. |
| 341 string16 paint_text; | 341 base::string16 paint_text; |
| 342 gfx::Rect text_bounds; | 342 gfx::Rect text_bounds; |
| 343 int flags; | 343 int flags; |
| 344 | 344 |
| 345 // Centered text. | 345 // Centered text. |
| 346 label.CalculateDrawStringParams(&paint_text, &text_bounds, &flags); | 346 label.CalculateDrawStringParams(&paint_text, &text_bounds, &flags); |
| 347 EXPECT_EQ(test_text, paint_text); | 347 EXPECT_EQ(test_text, paint_text); |
| 348 // The text should be centered horizontally and vertically. | 348 // The text should be centered horizontally and vertically. |
| 349 EXPECT_EQ(extra.width() / 2, text_bounds.x()); | 349 EXPECT_EQ(extra.width() / 2, text_bounds.x()); |
| 350 EXPECT_EQ(extra.height() / 2 , text_bounds.y()); | 350 EXPECT_EQ(extra.height() / 2 , text_bounds.y()); |
| 351 EXPECT_EQ(required_size.width(), text_bounds.width()); | 351 EXPECT_EQ(required_size.width(), text_bounds.width()); |
| (...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 457 // ellide multiline text. So until that can be resolved, we set all | 457 // ellide multiline text. So until that can be resolved, we set all |
| 458 // multiline lables to not ellide in Linux only. | 458 // multiline lables to not ellide in Linux only. |
| 459 TEST(LabelTest, DrawMultiLineString) { | 459 TEST(LabelTest, DrawMultiLineString) { |
| 460 Label label; | 460 Label label; |
| 461 label.SetFocusable(false); | 461 label.SetFocusable(false); |
| 462 | 462 |
| 463 // Turn off mirroring so that we don't need to figure out if | 463 // Turn off mirroring so that we don't need to figure out if |
| 464 // align right really means align left. | 464 // align right really means align left. |
| 465 label.set_directionality_mode(Label::AUTO_DETECT_DIRECTIONALITY); | 465 label.set_directionality_mode(Label::AUTO_DETECT_DIRECTIONALITY); |
| 466 | 466 |
| 467 string16 test_text(ASCIIToUTF16("Another string\nwith returns\n\n!")); | 467 base::string16 test_text(ASCIIToUTF16("Another string\nwith returns\n\n!")); |
| 468 label.SetText(test_text); | 468 label.SetText(test_text); |
| 469 label.SetMultiLine(true); | 469 label.SetMultiLine(true); |
| 470 label.SizeToFit(0); | 470 label.SizeToFit(0); |
| 471 gfx::Size extra(50, 10); | 471 gfx::Size extra(50, 10); |
| 472 label.SetBounds(label.x(), | 472 label.SetBounds(label.x(), |
| 473 label.y(), | 473 label.y(), |
| 474 label.width() + extra.width(), | 474 label.width() + extra.width(), |
| 475 label.height() + extra.height()); | 475 label.height() + extra.height()); |
| 476 | 476 |
| 477 // Do some basic verifications for all three alignments. | 477 // Do some basic verifications for all three alignments. |
| 478 string16 paint_text; | 478 base::string16 paint_text; |
| 479 gfx::Rect text_bounds; | 479 gfx::Rect text_bounds; |
| 480 int flags; | 480 int flags; |
| 481 label.CalculateDrawStringParams(&paint_text, &text_bounds, &flags); | 481 label.CalculateDrawStringParams(&paint_text, &text_bounds, &flags); |
| 482 EXPECT_EQ(test_text, paint_text); | 482 EXPECT_EQ(test_text, paint_text); |
| 483 EXPECT_EQ(extra.width() / 2, text_bounds.x()); | 483 EXPECT_EQ(extra.width() / 2, text_bounds.x()); |
| 484 EXPECT_EQ(extra.height() / 2, text_bounds.y()); | 484 EXPECT_EQ(extra.height() / 2, text_bounds.y()); |
| 485 EXPECT_GT(text_bounds.width(), kMinTextDimension); | 485 EXPECT_GT(text_bounds.width(), kMinTextDimension); |
| 486 EXPECT_GT(text_bounds.height(), kMinTextDimension); | 486 EXPECT_GT(text_bounds.height(), kMinTextDimension); |
| 487 int expected_flags = gfx::Canvas::MULTI_LINE | | 487 int expected_flags = gfx::Canvas::MULTI_LINE | |
| 488 gfx::Canvas::TEXT_ALIGN_CENTER | | 488 gfx::Canvas::TEXT_ALIGN_CENTER | |
| (...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 597 #endif | 597 #endif |
| 598 } | 598 } |
| 599 | 599 |
| 600 TEST(LabelTest, DrawSingleLineStringInRTL) { | 600 TEST(LabelTest, DrawSingleLineStringInRTL) { |
| 601 Label label; | 601 Label label; |
| 602 label.SetFocusable(false); | 602 label.SetFocusable(false); |
| 603 | 603 |
| 604 std::string locale = l10n_util::GetApplicationLocale(""); | 604 std::string locale = l10n_util::GetApplicationLocale(""); |
| 605 base::i18n::SetICUDefaultLocale("he"); | 605 base::i18n::SetICUDefaultLocale("he"); |
| 606 | 606 |
| 607 string16 test_text(ASCIIToUTF16("Here's a string with no returns.")); | 607 base::string16 test_text(ASCIIToUTF16("Here's a string with no returns.")); |
| 608 label.SetText(test_text); | 608 label.SetText(test_text); |
| 609 gfx::Size required_size(label.GetPreferredSize()); | 609 gfx::Size required_size(label.GetPreferredSize()); |
| 610 gfx::Size extra(22, 8); | 610 gfx::Size extra(22, 8); |
| 611 label.SetBounds(0, | 611 label.SetBounds(0, |
| 612 0, | 612 0, |
| 613 required_size.width() + extra.width(), | 613 required_size.width() + extra.width(), |
| 614 required_size.height() + extra.height()); | 614 required_size.height() + extra.height()); |
| 615 | 615 |
| 616 // Do some basic verifications for all three alignments. | 616 // Do some basic verifications for all three alignments. |
| 617 string16 paint_text; | 617 base::string16 paint_text; |
| 618 gfx::Rect text_bounds; | 618 gfx::Rect text_bounds; |
| 619 int flags; | 619 int flags; |
| 620 | 620 |
| 621 // Centered text. | 621 // Centered text. |
| 622 label.CalculateDrawStringParams(&paint_text, &text_bounds, &flags); | 622 label.CalculateDrawStringParams(&paint_text, &text_bounds, &flags); |
| 623 EXPECT_EQ(test_text, paint_text); | 623 EXPECT_EQ(test_text, paint_text); |
| 624 // The text should be centered horizontally and vertically. | 624 // The text should be centered horizontally and vertically. |
| 625 EXPECT_EQ(extra.width() / 2, text_bounds.x()); | 625 EXPECT_EQ(extra.width() / 2, text_bounds.x()); |
| 626 EXPECT_EQ(extra.height() / 2 , text_bounds.y()); | 626 EXPECT_EQ(extra.height() / 2 , text_bounds.y()); |
| 627 EXPECT_EQ(required_size.width(), text_bounds.width()); | 627 EXPECT_EQ(required_size.width(), text_bounds.width()); |
| (...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 737 // ellide multiline text. So until that can be resolved, we set all | 737 // ellide multiline text. So until that can be resolved, we set all |
| 738 // multiline lables to not ellide in Linux only. | 738 // multiline lables to not ellide in Linux only. |
| 739 TEST(LabelTest, DrawMultiLineStringInRTL) { | 739 TEST(LabelTest, DrawMultiLineStringInRTL) { |
| 740 Label label; | 740 Label label; |
| 741 label.SetFocusable(false); | 741 label.SetFocusable(false); |
| 742 | 742 |
| 743 // Test for RTL. | 743 // Test for RTL. |
| 744 std::string locale = l10n_util::GetApplicationLocale(""); | 744 std::string locale = l10n_util::GetApplicationLocale(""); |
| 745 base::i18n::SetICUDefaultLocale("he"); | 745 base::i18n::SetICUDefaultLocale("he"); |
| 746 | 746 |
| 747 string16 test_text(ASCIIToUTF16("Another string\nwith returns\n\n!")); | 747 base::string16 test_text(ASCIIToUTF16("Another string\nwith returns\n\n!")); |
| 748 label.SetText(test_text); | 748 label.SetText(test_text); |
| 749 label.SetMultiLine(true); | 749 label.SetMultiLine(true); |
| 750 label.SizeToFit(0); | 750 label.SizeToFit(0); |
| 751 gfx::Size extra(50, 10); | 751 gfx::Size extra(50, 10); |
| 752 label.SetBounds(label.x(), | 752 label.SetBounds(label.x(), |
| 753 label.y(), | 753 label.y(), |
| 754 label.width() + extra.width(), | 754 label.width() + extra.width(), |
| 755 label.height() + extra.height()); | 755 label.height() + extra.height()); |
| 756 | 756 |
| 757 // Do some basic verifications for all three alignments. | 757 // Do some basic verifications for all three alignments. |
| 758 string16 paint_text; | 758 base::string16 paint_text; |
| 759 gfx::Rect text_bounds; | 759 gfx::Rect text_bounds; |
| 760 int flags; | 760 int flags; |
| 761 label.CalculateDrawStringParams(&paint_text, &text_bounds, &flags); | 761 label.CalculateDrawStringParams(&paint_text, &text_bounds, &flags); |
| 762 EXPECT_EQ(test_text, paint_text); | 762 EXPECT_EQ(test_text, paint_text); |
| 763 EXPECT_EQ(extra.width() / 2, text_bounds.x()); | 763 EXPECT_EQ(extra.width() / 2, text_bounds.x()); |
| 764 EXPECT_EQ(extra.height() / 2, text_bounds.y()); | 764 EXPECT_EQ(extra.height() / 2, text_bounds.y()); |
| 765 EXPECT_GT(text_bounds.width(), kMinTextDimension); | 765 EXPECT_GT(text_bounds.width(), kMinTextDimension); |
| 766 EXPECT_GT(text_bounds.height(), kMinTextDimension); | 766 EXPECT_GT(text_bounds.height(), kMinTextDimension); |
| 767 #if defined(OS_WIN) | 767 #if defined(OS_WIN) |
| 768 EXPECT_EQ(gfx::Canvas::MULTI_LINE | gfx::Canvas::TEXT_ALIGN_CENTER, flags); | 768 EXPECT_EQ(gfx::Canvas::MULTI_LINE | gfx::Canvas::TEXT_ALIGN_CENTER, flags); |
| (...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 923 EXPECT_FALSE(label.GetTooltipHandlerForPoint(gfx::Point(2, 51))); | 923 EXPECT_FALSE(label.GetTooltipHandlerForPoint(gfx::Point(2, 51))); |
| 924 EXPECT_FALSE(label.GetTooltipHandlerForPoint(gfx::Point(-1, 20))); | 924 EXPECT_FALSE(label.GetTooltipHandlerForPoint(gfx::Point(-1, 20))); |
| 925 | 925 |
| 926 // GetTooltipHandlerForPoint works should work in child bounds. | 926 // GetTooltipHandlerForPoint works should work in child bounds. |
| 927 label.SetBounds(2, 2, 10, 10); | 927 label.SetBounds(2, 2, 10, 10); |
| 928 EXPECT_EQ(&label, label.GetTooltipHandlerForPoint(gfx::Point(1, 5))); | 928 EXPECT_EQ(&label, label.GetTooltipHandlerForPoint(gfx::Point(1, 5))); |
| 929 EXPECT_FALSE(label.GetTooltipHandlerForPoint(gfx::Point(3, 11))); | 929 EXPECT_FALSE(label.GetTooltipHandlerForPoint(gfx::Point(3, 11))); |
| 930 } | 930 } |
| 931 | 931 |
| 932 } // namespace views | 932 } // namespace views |
| OLD | NEW |