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

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

Issue 312233003: Add fade eliding for Views Labels; related cleanup. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Refine alignment check; minor additional cleanup. Created 6 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 | Annotate | Revision Log
« no previous file with comments | « ui/views/controls/label.cc ('k') | ui/views/corewm/tooltip_aura.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 (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/accessibility/ax_view_state.h" 10 #include "ui/accessibility/ax_view_state.h"
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
130 base::string16 test_text = base::UTF8ToUTF16("\xF0\x9D\x84\x9E"); 130 base::string16 test_text = base::UTF8ToUTF16("\xF0\x9D\x84\x9E");
131 label.SetText(test_text); 131 label.SetText(test_text);
132 132
133 label.SetObscured(true); 133 label.SetObscured(true);
134 EXPECT_EQ(ASCIIToUTF16("*"), label.layout_text()); 134 EXPECT_EQ(ASCIIToUTF16("*"), label.layout_text());
135 EXPECT_EQ(test_text, label.text()); 135 EXPECT_EQ(test_text, label.text());
136 } 136 }
137 137
138 TEST(LabelTest, TooltipProperty) { 138 TEST(LabelTest, TooltipProperty) {
139 Label label; 139 Label label;
140 base::string16 test_text(ASCIIToUTF16("My cool string.")); 140 label.SetText(ASCIIToUTF16("My cool string."));
141 label.SetText(test_text);
142 141
143 base::string16 tooltip; 142 base::string16 tooltip;
144 EXPECT_TRUE(label.GetTooltipText(gfx::Point(), &tooltip)); 143 EXPECT_TRUE(label.GetTooltipText(gfx::Point(), &tooltip));
145 EXPECT_EQ(test_text, tooltip); 144 EXPECT_EQ(label.text(), tooltip);
146 145
147 base::string16 tooltip_text(ASCIIToUTF16("The tooltip!")); 146 base::string16 tooltip_text(ASCIIToUTF16("The tooltip!"));
148 label.SetTooltipText(tooltip_text); 147 label.SetTooltipText(tooltip_text);
149 EXPECT_TRUE(label.GetTooltipText(gfx::Point(), &tooltip)); 148 EXPECT_TRUE(label.GetTooltipText(gfx::Point(), &tooltip));
150 EXPECT_EQ(tooltip_text, tooltip); 149 EXPECT_EQ(tooltip_text, tooltip);
151 150
152 base::string16 empty_text; 151 label.SetTooltipText(base::string16());
153 label.SetTooltipText(empty_text);
154 EXPECT_TRUE(label.GetTooltipText(gfx::Point(), &tooltip)); 152 EXPECT_TRUE(label.GetTooltipText(gfx::Point(), &tooltip));
155 EXPECT_EQ(test_text, tooltip); 153 EXPECT_EQ(label.text(), tooltip);
156 154
157 // Make the label big enough to hold the text 155 // Make the label big enough to hold the text
158 // and expect there to be no tooltip. 156 // and expect there to be no tooltip.
159 label.SetBounds(0, 0, 1000, 40); 157 label.SetBounds(0, 0, 1000, 40);
160 EXPECT_FALSE(label.GetTooltipText(gfx::Point(), &tooltip)); 158 EXPECT_FALSE(label.GetTooltipText(gfx::Point(), &tooltip));
161 159
162 // Verify that setting the tooltip still shows it. 160 // Verify that setting the tooltip still shows it.
163 label.SetTooltipText(tooltip_text); 161 label.SetTooltipText(tooltip_text);
164 EXPECT_TRUE(label.GetTooltipText(gfx::Point(), &tooltip)); 162 EXPECT_TRUE(label.GetTooltipText(gfx::Point(), &tooltip));
165 EXPECT_EQ(tooltip_text, tooltip); 163 EXPECT_EQ(tooltip_text, tooltip);
166 // Clear out the tooltip. 164 // Clear out the tooltip.
167 label.SetTooltipText(empty_text); 165 label.SetTooltipText(base::string16());
168 166
169 // Shrink the bounds and the tooltip should come back. 167 // Shrink the bounds and the tooltip should come back.
170 label.SetBounds(0, 0, 1, 1); 168 label.SetBounds(0, 0, 1, 1);
171 EXPECT_TRUE(label.GetTooltipText(gfx::Point(), &tooltip)); 169 EXPECT_TRUE(label.GetTooltipText(gfx::Point(), &tooltip));
172 170
173 // Make the label obscured and there is no tooltip. 171 // Make the label obscured and there is no tooltip.
174 label.SetObscured(true); 172 label.SetObscured(true);
175 EXPECT_FALSE(label.GetTooltipText(gfx::Point(), &tooltip)); 173 EXPECT_FALSE(label.GetTooltipText(gfx::Point(), &tooltip));
176 174
177 // Obscuring the text shouldn't permanently clobber the tooltip. 175 // Obscuring the text shouldn't permanently clobber the tooltip.
178 label.SetObscured(false); 176 label.SetObscured(false);
179 EXPECT_TRUE(label.GetTooltipText(gfx::Point(), &tooltip)); 177 EXPECT_TRUE(label.GetTooltipText(gfx::Point(), &tooltip));
180 178
181 // Make the label multiline and there is no tooltip. 179 // Make the label multiline and there is no tooltip.
182 label.SetMultiLine(true); 180 label.SetMultiLine(true);
183 EXPECT_FALSE(label.GetTooltipText(gfx::Point(), &tooltip)); 181 EXPECT_FALSE(label.GetTooltipText(gfx::Point(), &tooltip));
184 182
185 // Verify that setting the tooltip still shows it. 183 // Verify that setting the tooltip still shows it.
186 label.SetTooltipText(tooltip_text); 184 label.SetTooltipText(tooltip_text);
187 EXPECT_TRUE(label.GetTooltipText(gfx::Point(), &tooltip)); 185 EXPECT_TRUE(label.GetTooltipText(gfx::Point(), &tooltip));
188 EXPECT_EQ(tooltip_text, tooltip); 186 EXPECT_EQ(tooltip_text, tooltip);
189 // Clear out the tooltip. 187 // Clear out the tooltip.
190 label.SetTooltipText(empty_text); 188 label.SetTooltipText(base::string16());
191 } 189 }
192 190
193 TEST(LabelTest, Accessibility) { 191 TEST(LabelTest, Accessibility) {
194 Label label; 192 Label label;
195 base::string16 test_text(ASCIIToUTF16("My special text.")); 193 label.SetText(ASCIIToUTF16("My special text."));
196 label.SetText(test_text);
197 194
198 ui::AXViewState state; 195 ui::AXViewState state;
199 label.GetAccessibleState(&state); 196 label.GetAccessibleState(&state);
200 EXPECT_EQ(ui::AX_ROLE_STATIC_TEXT, state.role); 197 EXPECT_EQ(ui::AX_ROLE_STATIC_TEXT, state.role);
201 EXPECT_EQ(test_text, state.name); 198 EXPECT_EQ(label.text(), state.name);
202 EXPECT_TRUE(state.HasStateFlag(ui::AX_STATE_READ_ONLY)); 199 EXPECT_TRUE(state.HasStateFlag(ui::AX_STATE_READ_ONLY));
203 } 200 }
204 201
205 TEST(LabelTest, SingleLineSizing) { 202 TEST(LabelTest, SingleLineSizing) {
206 Label label; 203 Label label;
207 base::string16 test_text(ASCIIToUTF16("A not so random string in one line.")); 204 label.SetText(ASCIIToUTF16("A not so random string in one line."));
208 label.SetText(test_text);
209 205
210 // GetPreferredSize 206 // GetPreferredSize
211 gfx::Size required_size = label.GetPreferredSize(); 207 gfx::Size required_size = label.GetPreferredSize();
212 EXPECT_GT(required_size.height(), kMinTextDimension); 208 EXPECT_GT(required_size.height(), kMinTextDimension);
213 EXPECT_GT(required_size.width(), kMinTextDimension); 209 EXPECT_GT(required_size.width(), kMinTextDimension);
214 210
215 // Test everything with borders. 211 // Test everything with borders.
216 gfx::Insets border(10, 20, 30, 40); 212 gfx::Insets border(10, 20, 30, 40);
217 label.SetBorder(Border::CreateEmptyBorder( 213 label.SetBorder(Border::CreateEmptyBorder(
218 border.top(), border.left(), border.bottom(), border.right())); 214 border.top(), border.left(), border.bottom(), border.right()));
219 215
220 // GetPreferredSize and borders. 216 // GetPreferredSize and borders.
221 label.SetBounds(0, 0, 0, 0); 217 label.SetBounds(0, 0, 0, 0);
222 gfx::Size required_size_with_border = label.GetPreferredSize(); 218 gfx::Size required_size_with_border = label.GetPreferredSize();
223 EXPECT_EQ(required_size_with_border.height(), 219 EXPECT_EQ(required_size_with_border.height(),
224 required_size.height() + border.height()); 220 required_size.height() + border.height());
225 EXPECT_EQ(required_size_with_border.width(), 221 EXPECT_EQ(required_size_with_border.width(),
226 required_size.width() + border.width()); 222 required_size.width() + border.width());
227 } 223 }
228 224
229 TEST(LabelTest, MultilineSmallAvailableWidthSizing) { 225 TEST(LabelTest, MultilineSmallAvailableWidthSizing) {
230 Label label; 226 Label label;
231 base::string16 test_text(ASCIIToUTF16("Too Wide."));
232
233 label.SetMultiLine(true); 227 label.SetMultiLine(true);
234 label.SetAllowCharacterBreak(true); 228 label.SetAllowCharacterBreak(true);
235 label.SetElideBehavior(Label::ELIDE_AT_END); 229 label.SetText(ASCIIToUTF16("Too Wide."));
236 label.SetText(test_text);
237 230
238 // Check that Label can be laid out at a variety of small sizes, 231 // Check that Label can be laid out at a variety of small sizes,
239 // splitting the words into up to one character per line if necessary. 232 // splitting the words into up to one character per line if necessary.
240 // Incorrect word splitting may cause infinite loops in text layout. 233 // Incorrect word splitting may cause infinite loops in text layout.
241 gfx::Size required_size = label.GetPreferredSize(); 234 gfx::Size required_size = label.GetPreferredSize();
242 for (int i = 1; i < required_size.width(); ++i) { 235 for (int i = 1; i < required_size.width(); ++i)
243 EXPECT_GT(label.GetHeightForWidth(i), 0); 236 EXPECT_GT(label.GetHeightForWidth(i), 0);
244 }
245 } 237 }
246 238
247 TEST(LabelTest, MultiLineSizing) { 239 TEST(LabelTest, MultiLineSizing) {
248 Label label; 240 Label label;
249 label.SetFocusable(false); 241 label.SetFocusable(false);
250 base::string16 test_text( 242 label.SetText(
251 ASCIIToUTF16("A random string\nwith multiple lines\nand returns!")); 243 ASCIIToUTF16("A random string\nwith multiple lines\nand returns!"));
252 label.SetText(test_text);
253 label.SetMultiLine(true); 244 label.SetMultiLine(true);
254 245
255 // GetPreferredSize 246 // GetPreferredSize
256 gfx::Size required_size = label.GetPreferredSize(); 247 gfx::Size required_size = label.GetPreferredSize();
257 EXPECT_GT(required_size.height(), kMinTextDimension); 248 EXPECT_GT(required_size.height(), kMinTextDimension);
258 EXPECT_GT(required_size.width(), kMinTextDimension); 249 EXPECT_GT(required_size.width(), kMinTextDimension);
259 250
260 // SizeToFit with unlimited width. 251 // SizeToFit with unlimited width.
261 label.SizeToFit(0); 252 label.SizeToFit(0);
262 int required_width = label.GetLocalBounds().width(); 253 int required_width = label.GetLocalBounds().width();
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
324 required_size.height() + border.height()); 315 required_size.height() + border.height());
325 EXPECT_EQ(required_size_with_border.width(), 316 EXPECT_EQ(required_size_with_border.width(),
326 required_size.width() + border.width()); 317 required_size.width() + border.width());
327 } 318 }
328 319
329 TEST(LabelTest, AutoDetectDirectionality) { 320 TEST(LabelTest, AutoDetectDirectionality) {
330 Label label; 321 Label label;
331 label.set_directionality_mode(Label::AUTO_DETECT_DIRECTIONALITY); 322 label.set_directionality_mode(Label::AUTO_DETECT_DIRECTIONALITY);
332 323
333 // Test text starts with RTL character. 324 // Test text starts with RTL character.
334 base::string16 test_text(base::WideToUTF16(L" \x5d0\x5d1\x5d2 abc")); 325 label.SetText(base::WideToUTF16(L" \x5d0\x5d1\x5d2 abc"));
335 label.SetText(test_text);
336 gfx::Size required_size(label.GetPreferredSize()); 326 gfx::Size required_size(label.GetPreferredSize());
337 gfx::Size extra(22, 8); 327 gfx::Size extra(22, 8);
338 label.SetBounds(0, 328 label.SetBounds(0, 0, required_size.width() + extra.width(),
339 0,
340 required_size.width() + extra.width(),
341 required_size.height() + extra.height()); 329 required_size.height() + extra.height());
342 330
343 base::string16 paint_text; 331 base::string16 paint_text;
344 gfx::Rect text_bounds; 332 gfx::Rect text_bounds;
345 int flags; 333 int flags;
346 label.CalculateDrawStringParams(&paint_text, &text_bounds, &flags); 334 label.CalculateDrawStringParams(&paint_text, &text_bounds, &flags);
347 EXPECT_EQ(gfx::Canvas::FORCE_RTL_DIRECTIONALITY, 335 EXPECT_EQ(gfx::Canvas::FORCE_RTL_DIRECTIONALITY,
348 flags & (gfx::Canvas::FORCE_RTL_DIRECTIONALITY | 336 flags & (gfx::Canvas::FORCE_RTL_DIRECTIONALITY |
349 gfx::Canvas::FORCE_LTR_DIRECTIONALITY)); 337 gfx::Canvas::FORCE_LTR_DIRECTIONALITY));
350 338
351 // Test text starts with LTR character. 339 // Test text starts with LTR character.
352 test_text = (base::WideToUTF16(L"ltr \x5d0\x5d1\x5d2 abc")); 340 label.SetText(base::WideToUTF16(L"ltr \x5d0\x5d1\x5d2 abc"));
353 label.SetText(test_text);
354 required_size = label.GetPreferredSize(); 341 required_size = label.GetPreferredSize();
355 label.SetBounds(0, 342 label.SetBounds(0, 0, required_size.width() + extra.width(),
356 0,
357 required_size.width() + extra.width(),
358 required_size.height() + extra.height()); 343 required_size.height() + extra.height());
359 344
360 label.CalculateDrawStringParams(&paint_text, &text_bounds, &flags); 345 label.CalculateDrawStringParams(&paint_text, &text_bounds, &flags);
361 EXPECT_EQ(gfx::Canvas::FORCE_LTR_DIRECTIONALITY, 346 EXPECT_EQ(gfx::Canvas::FORCE_LTR_DIRECTIONALITY,
362 flags & (gfx::Canvas::FORCE_RTL_DIRECTIONALITY | 347 flags & (gfx::Canvas::FORCE_RTL_DIRECTIONALITY |
363 gfx::Canvas::FORCE_LTR_DIRECTIONALITY)); 348 gfx::Canvas::FORCE_LTR_DIRECTIONALITY));
364 } 349 }
365 350
366 TEST(LabelTest, DrawSingleLineString) { 351 TEST(LabelTest, DrawSingleLineString) {
367 Label label; 352 Label label;
368 label.SetFocusable(false); 353 label.SetFocusable(false);
369 354
370 // Turn off mirroring so that we don't need to figure out if 355 // Turn off mirroring so that we don't need to figure out if
371 // align right really means align left. 356 // align right really means align left.
372 label.set_directionality_mode(Label::AUTO_DETECT_DIRECTIONALITY); 357 label.set_directionality_mode(Label::AUTO_DETECT_DIRECTIONALITY);
373 358
374 base::string16 test_text(ASCIIToUTF16("Here's a string with no returns.")); 359 label.SetText(ASCIIToUTF16("Here's a string with no returns."));
375 label.SetText(test_text);
376 gfx::Size required_size(label.GetPreferredSize()); 360 gfx::Size required_size(label.GetPreferredSize());
377 gfx::Size extra(22, 8); 361 gfx::Size extra(22, 8);
378 label.SetBounds(0, 362 label.SetBounds(0, 0, required_size.width() + extra.width(),
379 0,
380 required_size.width() + extra.width(),
381 required_size.height() + extra.height()); 363 required_size.height() + extra.height());
382 364
383 // Do some basic verifications for all three alignments. 365 // Do some basic verifications for all three alignments.
384 base::string16 paint_text; 366 base::string16 paint_text;
385 gfx::Rect text_bounds; 367 gfx::Rect text_bounds;
386 int flags; 368 int flags;
387 369
388 // Centered text. 370 // Centered text.
389 label.CalculateDrawStringParams(&paint_text, &text_bounds, &flags); 371 label.CalculateDrawStringParams(&paint_text, &text_bounds, &flags);
390 EXPECT_EQ(test_text, paint_text); 372 EXPECT_EQ(label.text(), paint_text);
391 // The text should be centered horizontally and vertically. 373 // The text should be centered horizontally and vertically.
392 EXPECT_EQ(extra.width() / 2, text_bounds.x()); 374 EXPECT_EQ(extra.width() / 2, text_bounds.x());
393 EXPECT_EQ(extra.height() / 2 , text_bounds.y()); 375 EXPECT_EQ(extra.height() / 2 , text_bounds.y());
394 EXPECT_EQ(required_size.width(), text_bounds.width()); 376 EXPECT_EQ(required_size.width(), text_bounds.width());
395 EXPECT_EQ(required_size.height(), text_bounds.height()); 377 EXPECT_EQ(required_size.height(), text_bounds.height());
396 EXPECT_EQ(gfx::Canvas::TEXT_ALIGN_CENTER, 378 EXPECT_EQ(gfx::Canvas::TEXT_ALIGN_CENTER,
397 flags & (gfx::Canvas::TEXT_ALIGN_LEFT | 379 flags & (gfx::Canvas::TEXT_ALIGN_LEFT |
398 gfx::Canvas::TEXT_ALIGN_CENTER | 380 gfx::Canvas::TEXT_ALIGN_CENTER |
399 gfx::Canvas::TEXT_ALIGN_RIGHT)); 381 gfx::Canvas::TEXT_ALIGN_RIGHT));
400 382
401 // Left aligned text. 383 // Left aligned text.
402 label.SetHorizontalAlignment(gfx::ALIGN_LEFT); 384 label.SetHorizontalAlignment(gfx::ALIGN_LEFT);
403 paint_text.clear(); 385 paint_text.clear();
404 text_bounds.SetRect(0, 0, 0, 0); 386 text_bounds.SetRect(0, 0, 0, 0);
405 label.CalculateDrawStringParams(&paint_text, &text_bounds, &flags); 387 label.CalculateDrawStringParams(&paint_text, &text_bounds, &flags);
406 EXPECT_EQ(test_text, paint_text); 388 EXPECT_EQ(label.text(), paint_text);
407 // The text should be left aligned horizontally and centered vertically. 389 // The text should be left aligned horizontally and centered vertically.
408 EXPECT_EQ(0, text_bounds.x()); 390 EXPECT_EQ(0, text_bounds.x());
409 EXPECT_EQ(extra.height() / 2 , text_bounds.y()); 391 EXPECT_EQ(extra.height() / 2 , text_bounds.y());
410 EXPECT_EQ(required_size.width(), text_bounds.width()); 392 EXPECT_EQ(required_size.width(), text_bounds.width());
411 EXPECT_EQ(required_size.height(), text_bounds.height()); 393 EXPECT_EQ(required_size.height(), text_bounds.height());
412 EXPECT_EQ(gfx::Canvas::TEXT_ALIGN_LEFT, 394 EXPECT_EQ(gfx::Canvas::TEXT_ALIGN_LEFT,
413 flags & (gfx::Canvas::TEXT_ALIGN_LEFT | 395 flags & (gfx::Canvas::TEXT_ALIGN_LEFT |
414 gfx::Canvas::TEXT_ALIGN_CENTER | 396 gfx::Canvas::TEXT_ALIGN_CENTER |
415 gfx::Canvas::TEXT_ALIGN_RIGHT)); 397 gfx::Canvas::TEXT_ALIGN_RIGHT));
416 398
417 // Right aligned text. 399 // Right aligned text.
418 label.SetHorizontalAlignment(gfx::ALIGN_RIGHT); 400 label.SetHorizontalAlignment(gfx::ALIGN_RIGHT);
419 paint_text.clear(); 401 paint_text.clear();
420 text_bounds.SetRect(0, 0, 0, 0); 402 text_bounds.SetRect(0, 0, 0, 0);
421 label.CalculateDrawStringParams(&paint_text, &text_bounds, &flags); 403 label.CalculateDrawStringParams(&paint_text, &text_bounds, &flags);
422 EXPECT_EQ(test_text, paint_text); 404 EXPECT_EQ(label.text(), paint_text);
423 // The text should be right aligned horizontally and centered vertically. 405 // The text should be right aligned horizontally and centered vertically.
424 EXPECT_EQ(extra.width(), text_bounds.x()); 406 EXPECT_EQ(extra.width(), text_bounds.x());
425 EXPECT_EQ(extra.height() / 2 , text_bounds.y()); 407 EXPECT_EQ(extra.height() / 2 , text_bounds.y());
426 EXPECT_EQ(required_size.width(), text_bounds.width()); 408 EXPECT_EQ(required_size.width(), text_bounds.width());
427 EXPECT_EQ(required_size.height(), text_bounds.height()); 409 EXPECT_EQ(required_size.height(), text_bounds.height());
428 EXPECT_EQ(gfx::Canvas::TEXT_ALIGN_RIGHT, 410 EXPECT_EQ(gfx::Canvas::TEXT_ALIGN_RIGHT,
429 flags & (gfx::Canvas::TEXT_ALIGN_LEFT | 411 flags & (gfx::Canvas::TEXT_ALIGN_LEFT |
430 gfx::Canvas::TEXT_ALIGN_CENTER | 412 gfx::Canvas::TEXT_ALIGN_CENTER |
431 gfx::Canvas::TEXT_ALIGN_RIGHT)); 413 gfx::Canvas::TEXT_ALIGN_RIGHT));
432 414
433 // Test single line drawing with a border. 415 // Test single line drawing with a border.
434 gfx::Insets border(39, 34, 8, 96); 416 gfx::Insets border(39, 34, 8, 96);
435 label.SetBorder(Border::CreateEmptyBorder( 417 label.SetBorder(Border::CreateEmptyBorder(
436 border.top(), border.left(), border.bottom(), border.right())); 418 border.top(), border.left(), border.bottom(), border.right()));
437 419
438 gfx::Size required_size_with_border(label.GetPreferredSize()); 420 gfx::Size required_size_with_border(label.GetPreferredSize());
439 EXPECT_EQ(required_size.width() + border.width(), 421 EXPECT_EQ(required_size.width() + border.width(),
440 required_size_with_border.width()); 422 required_size_with_border.width());
441 EXPECT_EQ(required_size.height() + border.height(), 423 EXPECT_EQ(required_size.height() + border.height(),
442 required_size_with_border.height()); 424 required_size_with_border.height());
443 label.SetBounds(0, 425 label.SetBounds(0, 0, required_size_with_border.width() + extra.width(),
444 0,
445 required_size_with_border.width() + extra.width(),
446 required_size_with_border.height() + extra.height()); 426 required_size_with_border.height() + extra.height());
447 427
448 // Centered text with border. 428 // Centered text with border.
449 label.SetHorizontalAlignment(gfx::ALIGN_CENTER); 429 label.SetHorizontalAlignment(gfx::ALIGN_CENTER);
450 paint_text.clear(); 430 paint_text.clear();
451 text_bounds.SetRect(0, 0, 0, 0); 431 text_bounds.SetRect(0, 0, 0, 0);
452 label.CalculateDrawStringParams(&paint_text, &text_bounds, &flags); 432 label.CalculateDrawStringParams(&paint_text, &text_bounds, &flags);
453 EXPECT_EQ(test_text, paint_text); 433 EXPECT_EQ(label.text(), paint_text);
454 // The text should be centered horizontally and vertically within the border. 434 // The text should be centered horizontally and vertically within the border.
455 EXPECT_EQ(border.left() + extra.width() / 2, text_bounds.x()); 435 EXPECT_EQ(border.left() + extra.width() / 2, text_bounds.x());
456 EXPECT_EQ(border.top() + extra.height() / 2 , text_bounds.y()); 436 EXPECT_EQ(border.top() + extra.height() / 2 , text_bounds.y());
457 EXPECT_EQ(required_size.width(), text_bounds.width()); 437 EXPECT_EQ(required_size.width(), text_bounds.width());
458 EXPECT_EQ(required_size.height(), text_bounds.height()); 438 EXPECT_EQ(required_size.height(), text_bounds.height());
459 EXPECT_EQ(gfx::Canvas::TEXT_ALIGN_CENTER, 439 EXPECT_EQ(gfx::Canvas::TEXT_ALIGN_CENTER,
460 flags & (gfx::Canvas::TEXT_ALIGN_LEFT | 440 flags & (gfx::Canvas::TEXT_ALIGN_LEFT |
461 gfx::Canvas::TEXT_ALIGN_CENTER | 441 gfx::Canvas::TEXT_ALIGN_CENTER |
462 gfx::Canvas::TEXT_ALIGN_RIGHT)); 442 gfx::Canvas::TEXT_ALIGN_RIGHT));
463 443
464 // Left aligned text with border. 444 // Left aligned text with border.
465 label.SetHorizontalAlignment(gfx::ALIGN_LEFT); 445 label.SetHorizontalAlignment(gfx::ALIGN_LEFT);
466 paint_text.clear(); 446 paint_text.clear();
467 text_bounds.SetRect(0, 0, 0, 0); 447 text_bounds.SetRect(0, 0, 0, 0);
468 label.CalculateDrawStringParams(&paint_text, &text_bounds, &flags); 448 label.CalculateDrawStringParams(&paint_text, &text_bounds, &flags);
469 EXPECT_EQ(test_text, paint_text); 449 EXPECT_EQ(label.text(), paint_text);
470 // The text should be left aligned horizontally and centered vertically. 450 // The text should be left aligned horizontally and centered vertically.
471 EXPECT_EQ(border.left(), text_bounds.x()); 451 EXPECT_EQ(border.left(), text_bounds.x());
472 EXPECT_EQ(border.top() + extra.height() / 2 , text_bounds.y()); 452 EXPECT_EQ(border.top() + extra.height() / 2 , text_bounds.y());
473 EXPECT_EQ(required_size.width(), text_bounds.width()); 453 EXPECT_EQ(required_size.width(), text_bounds.width());
474 EXPECT_EQ(required_size.height(), text_bounds.height()); 454 EXPECT_EQ(required_size.height(), text_bounds.height());
475 EXPECT_EQ(gfx::Canvas::TEXT_ALIGN_LEFT, 455 EXPECT_EQ(gfx::Canvas::TEXT_ALIGN_LEFT,
476 flags & (gfx::Canvas::TEXT_ALIGN_LEFT | 456 flags & (gfx::Canvas::TEXT_ALIGN_LEFT |
477 gfx::Canvas::TEXT_ALIGN_CENTER | 457 gfx::Canvas::TEXT_ALIGN_CENTER |
478 gfx::Canvas::TEXT_ALIGN_RIGHT)); 458 gfx::Canvas::TEXT_ALIGN_RIGHT));
479 459
480 // Right aligned text. 460 // Right aligned text.
481 label.SetHorizontalAlignment(gfx::ALIGN_RIGHT); 461 label.SetHorizontalAlignment(gfx::ALIGN_RIGHT);
482 paint_text.clear(); 462 paint_text.clear();
483 text_bounds.SetRect(0, 0, 0, 0); 463 text_bounds.SetRect(0, 0, 0, 0);
484 label.CalculateDrawStringParams(&paint_text, &text_bounds, &flags); 464 label.CalculateDrawStringParams(&paint_text, &text_bounds, &flags);
485 EXPECT_EQ(test_text, paint_text); 465 EXPECT_EQ(label.text(), paint_text);
486 // The text should be right aligned horizontally and centered vertically. 466 // The text should be right aligned horizontally and centered vertically.
487 EXPECT_EQ(border.left() + extra.width(), text_bounds.x()); 467 EXPECT_EQ(border.left() + extra.width(), text_bounds.x());
488 EXPECT_EQ(border.top() + extra.height() / 2 , text_bounds.y()); 468 EXPECT_EQ(border.top() + extra.height() / 2 , text_bounds.y());
489 EXPECT_EQ(required_size.width(), text_bounds.width()); 469 EXPECT_EQ(required_size.width(), text_bounds.width());
490 EXPECT_EQ(required_size.height(), text_bounds.height()); 470 EXPECT_EQ(required_size.height(), text_bounds.height());
491 EXPECT_EQ(gfx::Canvas::TEXT_ALIGN_RIGHT, 471 EXPECT_EQ(gfx::Canvas::TEXT_ALIGN_RIGHT,
492 flags & (gfx::Canvas::TEXT_ALIGN_LEFT | 472 flags & (gfx::Canvas::TEXT_ALIGN_LEFT |
493 gfx::Canvas::TEXT_ALIGN_CENTER | 473 gfx::Canvas::TEXT_ALIGN_CENTER |
494 gfx::Canvas::TEXT_ALIGN_RIGHT)); 474 gfx::Canvas::TEXT_ALIGN_RIGHT));
495 } 475 }
496 476
497 // On Linux the underlying pango routines require a max height in order to 477 // On Linux the underlying pango routines require a max height in order to
498 // ellide multiline text. So until that can be resolved, we set all 478 // ellide multiline text. So until that can be resolved, we set all
499 // multiline lables to not ellide in Linux only. 479 // multiline lables to not ellide in Linux only.
500 TEST(LabelTest, DrawMultiLineString) { 480 TEST(LabelTest, DrawMultiLineString) {
501 Label label; 481 Label label;
502 label.SetFocusable(false); 482 label.SetFocusable(false);
503 483
504 // Turn off mirroring so that we don't need to figure out if 484 // Turn off mirroring so that we don't need to figure out if
505 // align right really means align left. 485 // align right really means align left.
506 label.set_directionality_mode(Label::AUTO_DETECT_DIRECTIONALITY); 486 label.set_directionality_mode(Label::AUTO_DETECT_DIRECTIONALITY);
507 487
508 base::string16 test_text(ASCIIToUTF16("Another string\nwith returns\n\n!")); 488 label.SetText(ASCIIToUTF16("Another string\nwith returns\n\n!"));
509 label.SetText(test_text);
510 label.SetMultiLine(true); 489 label.SetMultiLine(true);
511 label.SizeToFit(0); 490 label.SizeToFit(0);
512 gfx::Size extra(50, 10); 491 gfx::Size extra(50, 10);
513 label.SetBounds(label.x(), 492 label.SetBounds(label.x(), label.y(),
514 label.y(),
515 label.width() + extra.width(), 493 label.width() + extra.width(),
516 label.height() + extra.height()); 494 label.height() + extra.height());
517 495
518 // Do some basic verifications for all three alignments. 496 // Do some basic verifications for all three alignments.
519 base::string16 paint_text; 497 base::string16 paint_text;
520 gfx::Rect text_bounds; 498 gfx::Rect text_bounds;
521 int flags; 499 int flags;
522 label.CalculateDrawStringParams(&paint_text, &text_bounds, &flags); 500 label.CalculateDrawStringParams(&paint_text, &text_bounds, &flags);
523 EXPECT_EQ(test_text, paint_text); 501 EXPECT_EQ(label.text(), paint_text);
524 EXPECT_EQ(extra.width() / 2, text_bounds.x()); 502 EXPECT_EQ(extra.width() / 2, text_bounds.x());
525 EXPECT_EQ(extra.height() / 2, text_bounds.y()); 503 EXPECT_EQ(extra.height() / 2, text_bounds.y());
526 EXPECT_GT(text_bounds.width(), kMinTextDimension); 504 EXPECT_GT(text_bounds.width(), kMinTextDimension);
527 EXPECT_GT(text_bounds.height(), kMinTextDimension); 505 EXPECT_GT(text_bounds.height(), kMinTextDimension);
528 int expected_flags = gfx::Canvas::MULTI_LINE | 506 int expected_flags = gfx::Canvas::MULTI_LINE |
529 gfx::Canvas::TEXT_ALIGN_CENTER | 507 gfx::Canvas::TEXT_ALIGN_CENTER |
530 gfx::Canvas::FORCE_LTR_DIRECTIONALITY; 508 gfx::Canvas::FORCE_LTR_DIRECTIONALITY;
531 #if !defined(OS_WIN) 509 #if !defined(OS_WIN)
532 expected_flags |= gfx::Canvas::NO_ELLIPSIS; 510 expected_flags |= gfx::Canvas::NO_ELLIPSIS;
533 #endif 511 #endif
534 EXPECT_EQ(expected_flags, expected_flags & flags); 512 EXPECT_EQ(expected_flags, expected_flags & flags);
535 gfx::Rect center_bounds(text_bounds); 513 gfx::Rect center_bounds(text_bounds);
536 514
537 label.SetHorizontalAlignment(gfx::ALIGN_LEFT); 515 label.SetHorizontalAlignment(gfx::ALIGN_LEFT);
538 paint_text.clear(); 516 paint_text.clear();
539 text_bounds.SetRect(0, 0, 0, 0); 517 text_bounds.SetRect(0, 0, 0, 0);
540 label.CalculateDrawStringParams(&paint_text, &text_bounds, &flags); 518 label.CalculateDrawStringParams(&paint_text, &text_bounds, &flags);
541 EXPECT_EQ(test_text, paint_text); 519 EXPECT_EQ(label.text(), paint_text);
542 EXPECT_EQ(0, text_bounds.x()); 520 EXPECT_EQ(0, text_bounds.x());
543 EXPECT_EQ(extra.height() / 2, text_bounds.y()); 521 EXPECT_EQ(extra.height() / 2, text_bounds.y());
544 EXPECT_GT(text_bounds.width(), kMinTextDimension); 522 EXPECT_GT(text_bounds.width(), kMinTextDimension);
545 EXPECT_GT(text_bounds.height(), kMinTextDimension); 523 EXPECT_GT(text_bounds.height(), kMinTextDimension);
546 expected_flags = gfx::Canvas::MULTI_LINE | 524 expected_flags = gfx::Canvas::MULTI_LINE |
547 gfx::Canvas::TEXT_ALIGN_LEFT | 525 gfx::Canvas::TEXT_ALIGN_LEFT |
548 gfx::Canvas::FORCE_LTR_DIRECTIONALITY; 526 gfx::Canvas::FORCE_LTR_DIRECTIONALITY;
549 #if !defined(OS_WIN) 527 #if !defined(OS_WIN)
550 expected_flags |= gfx::Canvas::NO_ELLIPSIS; 528 expected_flags |= gfx::Canvas::NO_ELLIPSIS;
551 #endif 529 #endif
552 EXPECT_EQ(expected_flags, expected_flags & flags); 530 EXPECT_EQ(expected_flags, expected_flags & flags);
553 531
554 label.SetHorizontalAlignment(gfx::ALIGN_RIGHT); 532 label.SetHorizontalAlignment(gfx::ALIGN_RIGHT);
555 paint_text.clear(); 533 paint_text.clear();
556 text_bounds.SetRect(0, 0, 0, 0); 534 text_bounds.SetRect(0, 0, 0, 0);
557 label.CalculateDrawStringParams(&paint_text, &text_bounds, &flags); 535 label.CalculateDrawStringParams(&paint_text, &text_bounds, &flags);
558 EXPECT_EQ(test_text, paint_text); 536 EXPECT_EQ(label.text(), paint_text);
559 EXPECT_EQ(extra.width(), text_bounds.x()); 537 EXPECT_EQ(extra.width(), text_bounds.x());
560 EXPECT_EQ(extra.height() / 2, text_bounds.y()); 538 EXPECT_EQ(extra.height() / 2, text_bounds.y());
561 EXPECT_GT(text_bounds.width(), kMinTextDimension); 539 EXPECT_GT(text_bounds.width(), kMinTextDimension);
562 EXPECT_GT(text_bounds.height(), kMinTextDimension); 540 EXPECT_GT(text_bounds.height(), kMinTextDimension);
563 expected_flags = gfx::Canvas::MULTI_LINE | 541 expected_flags = gfx::Canvas::MULTI_LINE |
564 gfx::Canvas::TEXT_ALIGN_RIGHT | 542 gfx::Canvas::TEXT_ALIGN_RIGHT |
565 gfx::Canvas::FORCE_LTR_DIRECTIONALITY; 543 gfx::Canvas::FORCE_LTR_DIRECTIONALITY;
566 #if !defined(OS_WIN) 544 #if !defined(OS_WIN)
567 expected_flags |= gfx::Canvas::NO_ELLIPSIS; 545 expected_flags |= gfx::Canvas::NO_ELLIPSIS;
568 #endif 546 #endif
569 EXPECT_EQ(expected_flags, expected_flags & flags); 547 EXPECT_EQ(expected_flags, expected_flags & flags);
570 548
571 // Test multiline drawing with a border. 549 // Test multiline drawing with a border.
572 gfx::Insets border(19, 92, 23, 2); 550 gfx::Insets border(19, 92, 23, 2);
573 label.SetBorder(Border::CreateEmptyBorder( 551 label.SetBorder(Border::CreateEmptyBorder(
574 border.top(), border.left(), border.bottom(), border.right())); 552 border.top(), border.left(), border.bottom(), border.right()));
575 label.SizeToFit(0); 553 label.SizeToFit(0);
576 label.SetBounds(label.x(), 554 label.SetBounds(label.x(), label.y(),
577 label.y(),
578 label.width() + extra.width(), 555 label.width() + extra.width(),
579 label.height() + extra.height()); 556 label.height() + extra.height());
580 557
581 label.SetHorizontalAlignment(gfx::ALIGN_CENTER); 558 label.SetHorizontalAlignment(gfx::ALIGN_CENTER);
582 paint_text.clear(); 559 paint_text.clear();
583 text_bounds.SetRect(0, 0, 0, 0); 560 text_bounds.SetRect(0, 0, 0, 0);
584 label.CalculateDrawStringParams(&paint_text, &text_bounds, &flags); 561 label.CalculateDrawStringParams(&paint_text, &text_bounds, &flags);
585 EXPECT_EQ(test_text, paint_text); 562 EXPECT_EQ(label.text(), paint_text);
586 EXPECT_EQ(border.left() + extra.width() / 2, text_bounds.x()); 563 EXPECT_EQ(border.left() + extra.width() / 2, text_bounds.x());
587 EXPECT_EQ(border.top() + extra.height() / 2, text_bounds.y()); 564 EXPECT_EQ(border.top() + extra.height() / 2, text_bounds.y());
588 EXPECT_EQ(center_bounds.width(), text_bounds.width()); 565 EXPECT_EQ(center_bounds.width(), text_bounds.width());
589 EXPECT_EQ(center_bounds.height(), text_bounds.height()); 566 EXPECT_EQ(center_bounds.height(), text_bounds.height());
590 expected_flags = gfx::Canvas::MULTI_LINE | 567 expected_flags = gfx::Canvas::MULTI_LINE |
591 gfx::Canvas::TEXT_ALIGN_CENTER | 568 gfx::Canvas::TEXT_ALIGN_CENTER |
592 gfx::Canvas::FORCE_LTR_DIRECTIONALITY; 569 gfx::Canvas::FORCE_LTR_DIRECTIONALITY;
593 #if !defined(OS_WIN) 570 #if !defined(OS_WIN)
594 expected_flags |= gfx::Canvas::NO_ELLIPSIS; 571 expected_flags |= gfx::Canvas::NO_ELLIPSIS;
595 #endif 572 #endif
596 EXPECT_EQ(expected_flags, expected_flags & flags); 573 EXPECT_EQ(expected_flags, expected_flags & flags);
597 574
598 label.SetHorizontalAlignment(gfx::ALIGN_LEFT); 575 label.SetHorizontalAlignment(gfx::ALIGN_LEFT);
599 paint_text.clear(); 576 paint_text.clear();
600 text_bounds.SetRect(0, 0, 0, 0); 577 text_bounds.SetRect(0, 0, 0, 0);
601 label.CalculateDrawStringParams(&paint_text, &text_bounds, &flags); 578 label.CalculateDrawStringParams(&paint_text, &text_bounds, &flags);
602 EXPECT_EQ(test_text, paint_text); 579 EXPECT_EQ(label.text(), paint_text);
603 EXPECT_EQ(border.left(), text_bounds.x()); 580 EXPECT_EQ(border.left(), text_bounds.x());
604 EXPECT_EQ(border.top() + extra.height() / 2, text_bounds.y()); 581 EXPECT_EQ(border.top() + extra.height() / 2, text_bounds.y());
605 EXPECT_EQ(center_bounds.width(), text_bounds.width()); 582 EXPECT_EQ(center_bounds.width(), text_bounds.width());
606 EXPECT_EQ(center_bounds.height(), text_bounds.height()); 583 EXPECT_EQ(center_bounds.height(), text_bounds.height());
607 expected_flags = gfx::Canvas::MULTI_LINE | 584 expected_flags = gfx::Canvas::MULTI_LINE |
608 gfx::Canvas::TEXT_ALIGN_LEFT | 585 gfx::Canvas::TEXT_ALIGN_LEFT |
609 gfx::Canvas::FORCE_LTR_DIRECTIONALITY; 586 gfx::Canvas::FORCE_LTR_DIRECTIONALITY;
610 #if !defined(OS_WIN) 587 #if !defined(OS_WIN)
611 expected_flags |= gfx::Canvas::NO_ELLIPSIS; 588 expected_flags |= gfx::Canvas::NO_ELLIPSIS;
612 #endif 589 #endif
613 EXPECT_EQ(expected_flags, expected_flags & flags); 590 EXPECT_EQ(expected_flags, expected_flags & flags);
614 591
615 label.SetHorizontalAlignment(gfx::ALIGN_RIGHT); 592 label.SetHorizontalAlignment(gfx::ALIGN_RIGHT);
616 paint_text.clear(); 593 paint_text.clear();
617 text_bounds.SetRect(0, 0, 0, 0); 594 text_bounds.SetRect(0, 0, 0, 0);
618 label.CalculateDrawStringParams(&paint_text, &text_bounds, &flags); 595 label.CalculateDrawStringParams(&paint_text, &text_bounds, &flags);
619 EXPECT_EQ(test_text, paint_text); 596 EXPECT_EQ(label.text(), paint_text);
620 EXPECT_EQ(extra.width() + border.left(), text_bounds.x()); 597 EXPECT_EQ(extra.width() + border.left(), text_bounds.x());
621 EXPECT_EQ(border.top() + extra.height() / 2, text_bounds.y()); 598 EXPECT_EQ(border.top() + extra.height() / 2, text_bounds.y());
622 EXPECT_EQ(center_bounds.width(), text_bounds.width()); 599 EXPECT_EQ(center_bounds.width(), text_bounds.width());
623 EXPECT_EQ(center_bounds.height(), text_bounds.height()); 600 EXPECT_EQ(center_bounds.height(), text_bounds.height());
624 expected_flags = gfx::Canvas::MULTI_LINE | 601 expected_flags = gfx::Canvas::MULTI_LINE |
625 gfx::Canvas::TEXT_ALIGN_RIGHT | 602 gfx::Canvas::TEXT_ALIGN_RIGHT |
626 gfx::Canvas::FORCE_LTR_DIRECTIONALITY; 603 gfx::Canvas::FORCE_LTR_DIRECTIONALITY;
627 #if !defined(OS_WIN) 604 #if !defined(OS_WIN)
628 expected_flags |= gfx::Canvas::NO_ELLIPSIS; 605 expected_flags |= gfx::Canvas::NO_ELLIPSIS;
629 #endif 606 #endif
630 EXPECT_EQ(expected_flags, expected_flags & flags); 607 EXPECT_EQ(expected_flags, expected_flags & flags);
631 } 608 }
632 609
633 TEST(LabelTest, DrawSingleLineStringInRTL) { 610 TEST(LabelTest, DrawSingleLineStringInRTL) {
634 Label label; 611 Label label;
635 label.SetFocusable(false); 612 label.SetFocusable(false);
636 613
637 std::string locale = l10n_util::GetApplicationLocale(""); 614 std::string locale = l10n_util::GetApplicationLocale("");
638 base::i18n::SetICUDefaultLocale("he"); 615 base::i18n::SetICUDefaultLocale("he");
639 616
640 base::string16 test_text(ASCIIToUTF16("Here's a string with no returns.")); 617 label.SetText(ASCIIToUTF16("Here's a string with no returns."));
641 label.SetText(test_text);
642 gfx::Size required_size(label.GetPreferredSize()); 618 gfx::Size required_size(label.GetPreferredSize());
643 gfx::Size extra(22, 8); 619 gfx::Size extra(22, 8);
644 label.SetBounds(0, 620 label.SetBounds(0, 0, required_size.width() + extra.width(),
645 0,
646 required_size.width() + extra.width(),
647 required_size.height() + extra.height()); 621 required_size.height() + extra.height());
648 622
649 // Do some basic verifications for all three alignments. 623 // Do some basic verifications for all three alignments.
650 base::string16 paint_text; 624 base::string16 paint_text;
651 gfx::Rect text_bounds; 625 gfx::Rect text_bounds;
652 int flags; 626 int flags;
653 627
654 // Centered text. 628 // Centered text.
655 label.CalculateDrawStringParams(&paint_text, &text_bounds, &flags); 629 label.CalculateDrawStringParams(&paint_text, &text_bounds, &flags);
656 EXPECT_EQ(test_text, paint_text); 630 EXPECT_EQ(label.text(), paint_text);
657 // The text should be centered horizontally and vertically. 631 // The text should be centered horizontally and vertically.
658 EXPECT_EQ(extra.width() / 2, text_bounds.x()); 632 EXPECT_EQ(extra.width() / 2, text_bounds.x());
659 EXPECT_EQ(extra.height() / 2 , text_bounds.y()); 633 EXPECT_EQ(extra.height() / 2 , text_bounds.y());
660 EXPECT_EQ(required_size.width(), text_bounds.width()); 634 EXPECT_EQ(required_size.width(), text_bounds.width());
661 EXPECT_EQ(required_size.height(), text_bounds.height()); 635 EXPECT_EQ(required_size.height(), text_bounds.height());
662 EXPECT_EQ(gfx::Canvas::TEXT_ALIGN_CENTER, 636 EXPECT_EQ(gfx::Canvas::TEXT_ALIGN_CENTER,
663 flags & (gfx::Canvas::TEXT_ALIGN_LEFT | 637 flags & (gfx::Canvas::TEXT_ALIGN_LEFT |
664 gfx::Canvas::TEXT_ALIGN_CENTER | 638 gfx::Canvas::TEXT_ALIGN_CENTER |
665 gfx::Canvas::TEXT_ALIGN_RIGHT)); 639 gfx::Canvas::TEXT_ALIGN_RIGHT));
666 640
667 // ALIGN_LEFT label. 641 // ALIGN_LEFT label.
668 label.SetHorizontalAlignment(gfx::ALIGN_LEFT); 642 label.SetHorizontalAlignment(gfx::ALIGN_LEFT);
669 paint_text.clear(); 643 paint_text.clear();
670 text_bounds.SetRect(0, 0, 0, 0); 644 text_bounds.SetRect(0, 0, 0, 0);
671 label.CalculateDrawStringParams(&paint_text, &text_bounds, &flags); 645 label.CalculateDrawStringParams(&paint_text, &text_bounds, &flags);
672 EXPECT_EQ(test_text, paint_text); 646 EXPECT_EQ(label.text(), paint_text);
673 // The text should be right aligned horizontally and centered vertically. 647 // The text should be right aligned horizontally and centered vertically.
674 EXPECT_EQ(extra.width(), text_bounds.x()); 648 EXPECT_EQ(extra.width(), text_bounds.x());
675 EXPECT_EQ(extra.height() / 2 , text_bounds.y()); 649 EXPECT_EQ(extra.height() / 2 , text_bounds.y());
676 EXPECT_EQ(required_size.width(), text_bounds.width()); 650 EXPECT_EQ(required_size.width(), text_bounds.width());
677 EXPECT_EQ(required_size.height(), text_bounds.height()); 651 EXPECT_EQ(required_size.height(), text_bounds.height());
678 EXPECT_EQ(gfx::Canvas::TEXT_ALIGN_RIGHT, 652 EXPECT_EQ(gfx::Canvas::TEXT_ALIGN_RIGHT,
679 flags & (gfx::Canvas::TEXT_ALIGN_LEFT | 653 flags & (gfx::Canvas::TEXT_ALIGN_LEFT |
680 gfx::Canvas::TEXT_ALIGN_CENTER | 654 gfx::Canvas::TEXT_ALIGN_CENTER |
681 gfx::Canvas::TEXT_ALIGN_RIGHT)); 655 gfx::Canvas::TEXT_ALIGN_RIGHT));
682 656
683 // ALIGN_RIGHT label. 657 // ALIGN_RIGHT label.
684 label.SetHorizontalAlignment(gfx::ALIGN_RIGHT); 658 label.SetHorizontalAlignment(gfx::ALIGN_RIGHT);
685 paint_text.clear(); 659 paint_text.clear();
686 text_bounds.SetRect(0, 0, 0, 0); 660 text_bounds.SetRect(0, 0, 0, 0);
687 label.CalculateDrawStringParams(&paint_text, &text_bounds, &flags); 661 label.CalculateDrawStringParams(&paint_text, &text_bounds, &flags);
688 EXPECT_EQ(test_text, paint_text); 662 EXPECT_EQ(label.text(), paint_text);
689 // The text should be left aligned horizontally and centered vertically. 663 // The text should be left aligned horizontally and centered vertically.
690 EXPECT_EQ(0, text_bounds.x()); 664 EXPECT_EQ(0, text_bounds.x());
691 EXPECT_EQ(extra.height() / 2 , text_bounds.y()); 665 EXPECT_EQ(extra.height() / 2 , text_bounds.y());
692 EXPECT_EQ(required_size.width(), text_bounds.width()); 666 EXPECT_EQ(required_size.width(), text_bounds.width());
693 EXPECT_EQ(required_size.height(), text_bounds.height()); 667 EXPECT_EQ(required_size.height(), text_bounds.height());
694 EXPECT_EQ(gfx::Canvas::TEXT_ALIGN_LEFT, 668 EXPECT_EQ(gfx::Canvas::TEXT_ALIGN_LEFT,
695 flags & (gfx::Canvas::TEXT_ALIGN_LEFT | 669 flags & (gfx::Canvas::TEXT_ALIGN_LEFT |
696 gfx::Canvas::TEXT_ALIGN_CENTER | 670 gfx::Canvas::TEXT_ALIGN_CENTER |
697 gfx::Canvas::TEXT_ALIGN_RIGHT)); 671 gfx::Canvas::TEXT_ALIGN_RIGHT));
698 672
699 673
700 // Test single line drawing with a border. 674 // Test single line drawing with a border.
701 gfx::Insets border(39, 34, 8, 96); 675 gfx::Insets border(39, 34, 8, 96);
702 label.SetBorder(Border::CreateEmptyBorder( 676 label.SetBorder(Border::CreateEmptyBorder(
703 border.top(), border.left(), border.bottom(), border.right())); 677 border.top(), border.left(), border.bottom(), border.right()));
704 678
705 gfx::Size required_size_with_border(label.GetPreferredSize()); 679 gfx::Size required_size_with_border(label.GetPreferredSize());
706 EXPECT_EQ(required_size.width() + border.width(), 680 EXPECT_EQ(required_size.width() + border.width(),
707 required_size_with_border.width()); 681 required_size_with_border.width());
708 EXPECT_EQ(required_size.height() + border.height(), 682 EXPECT_EQ(required_size.height() + border.height(),
709 required_size_with_border.height()); 683 required_size_with_border.height());
710 label.SetBounds(0, 684 label.SetBounds(0, 0, required_size_with_border.width() + extra.width(),
711 0,
712 required_size_with_border.width() + extra.width(),
713 required_size_with_border.height() + extra.height()); 685 required_size_with_border.height() + extra.height());
714 686
715 // Centered text with border. 687 // Centered text with border.
716 label.SetHorizontalAlignment(gfx::ALIGN_CENTER); 688 label.SetHorizontalAlignment(gfx::ALIGN_CENTER);
717 paint_text.clear(); 689 paint_text.clear();
718 text_bounds.SetRect(0, 0, 0, 0); 690 text_bounds.SetRect(0, 0, 0, 0);
719 label.CalculateDrawStringParams(&paint_text, &text_bounds, &flags); 691 label.CalculateDrawStringParams(&paint_text, &text_bounds, &flags);
720 EXPECT_EQ(test_text, paint_text); 692 EXPECT_EQ(label.text(), paint_text);
721 // The text should be centered horizontally and vertically within the border. 693 // The text should be centered horizontally and vertically within the border.
722 EXPECT_EQ(border.left() + extra.width() / 2, text_bounds.x()); 694 EXPECT_EQ(border.left() + extra.width() / 2, text_bounds.x());
723 EXPECT_EQ(border.top() + extra.height() / 2 , text_bounds.y()); 695 EXPECT_EQ(border.top() + extra.height() / 2 , text_bounds.y());
724 EXPECT_EQ(required_size.width(), text_bounds.width()); 696 EXPECT_EQ(required_size.width(), text_bounds.width());
725 EXPECT_EQ(required_size.height(), text_bounds.height()); 697 EXPECT_EQ(required_size.height(), text_bounds.height());
726 EXPECT_EQ(gfx::Canvas::TEXT_ALIGN_CENTER, 698 EXPECT_EQ(gfx::Canvas::TEXT_ALIGN_CENTER,
727 flags & (gfx::Canvas::TEXT_ALIGN_LEFT | 699 flags & (gfx::Canvas::TEXT_ALIGN_LEFT |
728 gfx::Canvas::TEXT_ALIGN_CENTER | 700 gfx::Canvas::TEXT_ALIGN_CENTER |
729 gfx::Canvas::TEXT_ALIGN_RIGHT)); 701 gfx::Canvas::TEXT_ALIGN_RIGHT));
730 702
731 // ALIGN_LEFT text with border. 703 // ALIGN_LEFT text with border.
732 label.SetHorizontalAlignment(gfx::ALIGN_LEFT); 704 label.SetHorizontalAlignment(gfx::ALIGN_LEFT);
733 paint_text.clear(); 705 paint_text.clear();
734 text_bounds.SetRect(0, 0, 0, 0); 706 text_bounds.SetRect(0, 0, 0, 0);
735 label.CalculateDrawStringParams(&paint_text, &text_bounds, &flags); 707 label.CalculateDrawStringParams(&paint_text, &text_bounds, &flags);
736 EXPECT_EQ(test_text, paint_text); 708 EXPECT_EQ(label.text(), paint_text);
737 // The text should be right aligned horizontally and centered vertically. 709 // The text should be right aligned horizontally and centered vertically.
738 EXPECT_EQ(border.left() + extra.width(), text_bounds.x()); 710 EXPECT_EQ(border.left() + extra.width(), text_bounds.x());
739 EXPECT_EQ(border.top() + extra.height() / 2 , text_bounds.y()); 711 EXPECT_EQ(border.top() + extra.height() / 2 , text_bounds.y());
740 EXPECT_EQ(required_size.width(), text_bounds.width()); 712 EXPECT_EQ(required_size.width(), text_bounds.width());
741 EXPECT_EQ(required_size.height(), text_bounds.height()); 713 EXPECT_EQ(required_size.height(), text_bounds.height());
742 EXPECT_EQ(gfx::Canvas::TEXT_ALIGN_RIGHT, 714 EXPECT_EQ(gfx::Canvas::TEXT_ALIGN_RIGHT,
743 flags & (gfx::Canvas::TEXT_ALIGN_LEFT | 715 flags & (gfx::Canvas::TEXT_ALIGN_LEFT |
744 gfx::Canvas::TEXT_ALIGN_CENTER | 716 gfx::Canvas::TEXT_ALIGN_CENTER |
745 gfx::Canvas::TEXT_ALIGN_RIGHT)); 717 gfx::Canvas::TEXT_ALIGN_RIGHT));
746 718
747 // ALIGN_RIGHT text. 719 // ALIGN_RIGHT text.
748 label.SetHorizontalAlignment(gfx::ALIGN_RIGHT); 720 label.SetHorizontalAlignment(gfx::ALIGN_RIGHT);
749 paint_text.clear(); 721 paint_text.clear();
750 text_bounds.SetRect(0, 0, 0, 0); 722 text_bounds.SetRect(0, 0, 0, 0);
751 label.CalculateDrawStringParams(&paint_text, &text_bounds, &flags); 723 label.CalculateDrawStringParams(&paint_text, &text_bounds, &flags);
752 EXPECT_EQ(test_text, paint_text); 724 EXPECT_EQ(label.text(), paint_text);
753 // The text should be left aligned horizontally and centered vertically. 725 // The text should be left aligned horizontally and centered vertically.
754 EXPECT_EQ(border.left(), text_bounds.x()); 726 EXPECT_EQ(border.left(), text_bounds.x());
755 EXPECT_EQ(border.top() + extra.height() / 2 , text_bounds.y()); 727 EXPECT_EQ(border.top() + extra.height() / 2 , text_bounds.y());
756 EXPECT_EQ(required_size.width(), text_bounds.width()); 728 EXPECT_EQ(required_size.width(), text_bounds.width());
757 EXPECT_EQ(required_size.height(), text_bounds.height()); 729 EXPECT_EQ(required_size.height(), text_bounds.height());
758 EXPECT_EQ(gfx::Canvas::TEXT_ALIGN_LEFT, 730 EXPECT_EQ(gfx::Canvas::TEXT_ALIGN_LEFT,
759 flags & (gfx::Canvas::TEXT_ALIGN_LEFT | 731 flags & (gfx::Canvas::TEXT_ALIGN_LEFT |
760 gfx::Canvas::TEXT_ALIGN_CENTER | 732 gfx::Canvas::TEXT_ALIGN_CENTER |
761 gfx::Canvas::TEXT_ALIGN_RIGHT)); 733 gfx::Canvas::TEXT_ALIGN_RIGHT));
762 734
763 // Reset locale. 735 // Reset locale.
764 base::i18n::SetICUDefaultLocale(locale); 736 base::i18n::SetICUDefaultLocale(locale);
765 } 737 }
766 738
767 // On Linux the underlying pango routines require a max height in order to 739 // On Linux the underlying pango routines require a max height in order to
768 // ellide multiline text. So until that can be resolved, we set all 740 // ellide multiline text. So until that can be resolved, we set all
769 // multiline lables to not ellide in Linux only. 741 // multiline lables to not ellide in Linux only.
770 TEST(LabelTest, DrawMultiLineStringInRTL) { 742 TEST(LabelTest, DrawMultiLineStringInRTL) {
771 Label label; 743 Label label;
772 label.SetFocusable(false); 744 label.SetFocusable(false);
773 745
774 // Test for RTL. 746 // Test for RTL.
775 std::string locale = l10n_util::GetApplicationLocale(""); 747 std::string locale = l10n_util::GetApplicationLocale("");
776 base::i18n::SetICUDefaultLocale("he"); 748 base::i18n::SetICUDefaultLocale("he");
777 749
778 base::string16 test_text(ASCIIToUTF16("Another string\nwith returns\n\n!")); 750 label.SetText(ASCIIToUTF16("Another string\nwith returns\n\n!"));
779 label.SetText(test_text);
780 label.SetMultiLine(true); 751 label.SetMultiLine(true);
781 label.SizeToFit(0); 752 label.SizeToFit(0);
782 gfx::Size extra(50, 10); 753 gfx::Size extra(50, 10);
783 label.SetBounds(label.x(), 754 label.SetBounds(label.x(), label.y(),
784 label.y(),
785 label.width() + extra.width(), 755 label.width() + extra.width(),
786 label.height() + extra.height()); 756 label.height() + extra.height());
787 757
788 // Do some basic verifications for all three alignments. 758 // Do some basic verifications for all three alignments.
789 base::string16 paint_text; 759 base::string16 paint_text;
790 gfx::Rect text_bounds; 760 gfx::Rect text_bounds;
791 int flags; 761 int flags;
792 label.CalculateDrawStringParams(&paint_text, &text_bounds, &flags); 762 label.CalculateDrawStringParams(&paint_text, &text_bounds, &flags);
793 EXPECT_EQ(test_text, paint_text); 763 EXPECT_EQ(label.text(), paint_text);
794 EXPECT_EQ(extra.width() / 2, text_bounds.x()); 764 EXPECT_EQ(extra.width() / 2, text_bounds.x());
795 EXPECT_EQ(extra.height() / 2, text_bounds.y()); 765 EXPECT_EQ(extra.height() / 2, text_bounds.y());
796 EXPECT_GT(text_bounds.width(), kMinTextDimension); 766 EXPECT_GT(text_bounds.width(), kMinTextDimension);
797 EXPECT_GT(text_bounds.height(), kMinTextDimension); 767 EXPECT_GT(text_bounds.height(), kMinTextDimension);
798 EXPECT_TRUE(gfx::Canvas::MULTI_LINE & flags); 768 EXPECT_TRUE(gfx::Canvas::MULTI_LINE & flags);
799 EXPECT_TRUE(gfx::Canvas::TEXT_ALIGN_CENTER & flags); 769 EXPECT_TRUE(gfx::Canvas::TEXT_ALIGN_CENTER & flags);
800 #if !defined(OS_WIN) 770 #if !defined(OS_WIN)
801 EXPECT_TRUE(gfx::Canvas::NO_ELLIPSIS & flags); 771 EXPECT_TRUE(gfx::Canvas::NO_ELLIPSIS & flags);
802 #endif 772 #endif
803 gfx::Rect center_bounds(text_bounds); 773 gfx::Rect center_bounds(text_bounds);
804 774
805 label.SetHorizontalAlignment(gfx::ALIGN_LEFT); 775 label.SetHorizontalAlignment(gfx::ALIGN_LEFT);
806 paint_text.clear(); 776 paint_text.clear();
807 text_bounds.SetRect(0, 0, 0, 0); 777 text_bounds.SetRect(0, 0, 0, 0);
808 label.CalculateDrawStringParams(&paint_text, &text_bounds, &flags); 778 label.CalculateDrawStringParams(&paint_text, &text_bounds, &flags);
809 EXPECT_EQ(test_text, paint_text); 779 EXPECT_EQ(label.text(), paint_text);
810 EXPECT_EQ(extra.width(), text_bounds.x()); 780 EXPECT_EQ(extra.width(), text_bounds.x());
811 EXPECT_EQ(extra.height() / 2, text_bounds.y()); 781 EXPECT_EQ(extra.height() / 2, text_bounds.y());
812 EXPECT_GT(text_bounds.width(), kMinTextDimension); 782 EXPECT_GT(text_bounds.width(), kMinTextDimension);
813 EXPECT_GT(text_bounds.height(), kMinTextDimension); 783 EXPECT_GT(text_bounds.height(), kMinTextDimension);
814 EXPECT_TRUE(gfx::Canvas::MULTI_LINE & flags); 784 EXPECT_TRUE(gfx::Canvas::MULTI_LINE & flags);
815 EXPECT_TRUE(gfx::Canvas::TEXT_ALIGN_RIGHT & flags); 785 EXPECT_TRUE(gfx::Canvas::TEXT_ALIGN_RIGHT & flags);
816 #if !defined(OS_WIN) 786 #if !defined(OS_WIN)
817 EXPECT_TRUE(gfx::Canvas::NO_ELLIPSIS & flags); 787 EXPECT_TRUE(gfx::Canvas::NO_ELLIPSIS & flags);
818 #endif 788 #endif
819 789
820 label.SetHorizontalAlignment(gfx::ALIGN_RIGHT); 790 label.SetHorizontalAlignment(gfx::ALIGN_RIGHT);
821 paint_text.clear(); 791 paint_text.clear();
822 text_bounds.SetRect(0, 0, 0, 0); 792 text_bounds.SetRect(0, 0, 0, 0);
823 label.CalculateDrawStringParams(&paint_text, &text_bounds, &flags); 793 label.CalculateDrawStringParams(&paint_text, &text_bounds, &flags);
824 EXPECT_EQ(test_text, paint_text); 794 EXPECT_EQ(label.text(), paint_text);
825 EXPECT_EQ(0, text_bounds.x()); 795 EXPECT_EQ(0, text_bounds.x());
826 EXPECT_EQ(extra.height() / 2, text_bounds.y()); 796 EXPECT_EQ(extra.height() / 2, text_bounds.y());
827 EXPECT_GT(text_bounds.width(), kMinTextDimension); 797 EXPECT_GT(text_bounds.width(), kMinTextDimension);
828 EXPECT_GT(text_bounds.height(), kMinTextDimension); 798 EXPECT_GT(text_bounds.height(), kMinTextDimension);
829 EXPECT_TRUE(gfx::Canvas::MULTI_LINE & flags); 799 EXPECT_TRUE(gfx::Canvas::MULTI_LINE & flags);
830 EXPECT_TRUE(gfx::Canvas::TEXT_ALIGN_LEFT & flags); 800 EXPECT_TRUE(gfx::Canvas::TEXT_ALIGN_LEFT & flags);
831 #if !defined(OS_WIN) 801 #if !defined(OS_WIN)
832 EXPECT_TRUE(gfx::Canvas::NO_ELLIPSIS & flags); 802 EXPECT_TRUE(gfx::Canvas::NO_ELLIPSIS & flags);
833 #endif 803 #endif
834 804
835 // Test multiline drawing with a border. 805 // Test multiline drawing with a border.
836 gfx::Insets border(19, 92, 23, 2); 806 gfx::Insets border(19, 92, 23, 2);
837 label.SetBorder(Border::CreateEmptyBorder( 807 label.SetBorder(Border::CreateEmptyBorder(
838 border.top(), border.left(), border.bottom(), border.right())); 808 border.top(), border.left(), border.bottom(), border.right()));
839 label.SizeToFit(0); 809 label.SizeToFit(0);
840 label.SetBounds(label.x(), 810 label.SetBounds(label.x(), label.y(),
841 label.y(),
842 label.width() + extra.width(), 811 label.width() + extra.width(),
843 label.height() + extra.height()); 812 label.height() + extra.height());
844 813
845 label.SetHorizontalAlignment(gfx::ALIGN_CENTER); 814 label.SetHorizontalAlignment(gfx::ALIGN_CENTER);
846 paint_text.clear(); 815 paint_text.clear();
847 text_bounds.SetRect(0, 0, 0, 0); 816 text_bounds.SetRect(0, 0, 0, 0);
848 label.CalculateDrawStringParams(&paint_text, &text_bounds, &flags); 817 label.CalculateDrawStringParams(&paint_text, &text_bounds, &flags);
849 EXPECT_EQ(test_text, paint_text); 818 EXPECT_EQ(label.text(), paint_text);
850 EXPECT_EQ(border.left() + extra.width() / 2, text_bounds.x()); 819 EXPECT_EQ(border.left() + extra.width() / 2, text_bounds.x());
851 EXPECT_EQ(border.top() + extra.height() / 2, text_bounds.y()); 820 EXPECT_EQ(border.top() + extra.height() / 2, text_bounds.y());
852 EXPECT_EQ(center_bounds.width(), text_bounds.width()); 821 EXPECT_EQ(center_bounds.width(), text_bounds.width());
853 EXPECT_EQ(center_bounds.height(), text_bounds.height()); 822 EXPECT_EQ(center_bounds.height(), text_bounds.height());
854 EXPECT_TRUE(gfx::Canvas::MULTI_LINE & flags); 823 EXPECT_TRUE(gfx::Canvas::MULTI_LINE & flags);
855 EXPECT_TRUE(gfx::Canvas::TEXT_ALIGN_CENTER & flags); 824 EXPECT_TRUE(gfx::Canvas::TEXT_ALIGN_CENTER & flags);
856 #if !defined(OS_WIN) 825 #if !defined(OS_WIN)
857 EXPECT_TRUE(gfx::Canvas::NO_ELLIPSIS & flags); 826 EXPECT_TRUE(gfx::Canvas::NO_ELLIPSIS & flags);
858 #endif 827 #endif
859 828
860 label.SetHorizontalAlignment(gfx::ALIGN_LEFT); 829 label.SetHorizontalAlignment(gfx::ALIGN_LEFT);
861 paint_text.clear(); 830 paint_text.clear();
862 text_bounds.SetRect(0, 0, 0, 0); 831 text_bounds.SetRect(0, 0, 0, 0);
863 label.CalculateDrawStringParams(&paint_text, &text_bounds, &flags); 832 label.CalculateDrawStringParams(&paint_text, &text_bounds, &flags);
864 EXPECT_EQ(test_text, paint_text); 833 EXPECT_EQ(label.text(), paint_text);
865 EXPECT_EQ(border.left() + extra.width(), text_bounds.x()); 834 EXPECT_EQ(border.left() + extra.width(), text_bounds.x());
866 EXPECT_EQ(border.top() + extra.height() / 2, text_bounds.y()); 835 EXPECT_EQ(border.top() + extra.height() / 2, text_bounds.y());
867 EXPECT_EQ(center_bounds.width(), text_bounds.width()); 836 EXPECT_EQ(center_bounds.width(), text_bounds.width());
868 EXPECT_EQ(center_bounds.height(), text_bounds.height()); 837 EXPECT_EQ(center_bounds.height(), text_bounds.height());
869 EXPECT_TRUE(gfx::Canvas::MULTI_LINE & flags); 838 EXPECT_TRUE(gfx::Canvas::MULTI_LINE & flags);
870 EXPECT_TRUE(gfx::Canvas::TEXT_ALIGN_RIGHT & flags); 839 EXPECT_TRUE(gfx::Canvas::TEXT_ALIGN_RIGHT & flags);
871 #if !defined(OS_WIN) 840 #if !defined(OS_WIN)
872 EXPECT_TRUE(gfx::Canvas::NO_ELLIPSIS & flags); 841 EXPECT_TRUE(gfx::Canvas::NO_ELLIPSIS & flags);
873 #endif 842 #endif
874 843
875 label.SetHorizontalAlignment(gfx::ALIGN_RIGHT); 844 label.SetHorizontalAlignment(gfx::ALIGN_RIGHT);
876 paint_text.clear(); 845 paint_text.clear();
877 text_bounds.SetRect(0, 0, 0, 0); 846 text_bounds.SetRect(0, 0, 0, 0);
878 label.CalculateDrawStringParams(&paint_text, &text_bounds, &flags); 847 label.CalculateDrawStringParams(&paint_text, &text_bounds, &flags);
879 EXPECT_EQ(test_text, paint_text); 848 EXPECT_EQ(label.text(), paint_text);
880 EXPECT_EQ(border.left(), text_bounds.x()); 849 EXPECT_EQ(border.left(), text_bounds.x());
881 EXPECT_EQ(border.top() + extra.height() / 2, text_bounds.y()); 850 EXPECT_EQ(border.top() + extra.height() / 2, text_bounds.y());
882 EXPECT_EQ(center_bounds.width(), text_bounds.width()); 851 EXPECT_EQ(center_bounds.width(), text_bounds.width());
883 EXPECT_EQ(center_bounds.height(), text_bounds.height()); 852 EXPECT_EQ(center_bounds.height(), text_bounds.height());
884 EXPECT_TRUE(gfx::Canvas::MULTI_LINE & flags); 853 EXPECT_TRUE(gfx::Canvas::MULTI_LINE & flags);
885 EXPECT_TRUE(gfx::Canvas::TEXT_ALIGN_LEFT & flags); 854 EXPECT_TRUE(gfx::Canvas::TEXT_ALIGN_LEFT & flags);
886 #if !defined(OS_WIN) 855 #if !defined(OS_WIN)
887 EXPECT_TRUE(gfx::Canvas::NO_ELLIPSIS & flags); 856 EXPECT_TRUE(gfx::Canvas::NO_ELLIPSIS & flags);
888 #endif 857 #endif
889 858
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
928 EXPECT_FALSE(label.GetTooltipHandlerForPoint(gfx::Point(2, 51))); 897 EXPECT_FALSE(label.GetTooltipHandlerForPoint(gfx::Point(2, 51)));
929 EXPECT_FALSE(label.GetTooltipHandlerForPoint(gfx::Point(-1, 20))); 898 EXPECT_FALSE(label.GetTooltipHandlerForPoint(gfx::Point(-1, 20)));
930 899
931 // GetTooltipHandlerForPoint works should work in child bounds. 900 // GetTooltipHandlerForPoint works should work in child bounds.
932 label.SetBounds(2, 2, 10, 10); 901 label.SetBounds(2, 2, 10, 10);
933 EXPECT_EQ(&label, label.GetTooltipHandlerForPoint(gfx::Point(1, 5))); 902 EXPECT_EQ(&label, label.GetTooltipHandlerForPoint(gfx::Point(1, 5)));
934 EXPECT_FALSE(label.GetTooltipHandlerForPoint(gfx::Point(3, 11))); 903 EXPECT_FALSE(label.GetTooltipHandlerForPoint(gfx::Point(3, 11)));
935 } 904 }
936 905
937 } // namespace views 906 } // namespace views
OLDNEW
« no previous file with comments | « ui/views/controls/label.cc ('k') | ui/views/corewm/tooltip_aura.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698