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

Side by Side Diff: third_party/WebKit/Source/core/layout/LayoutTableCellTest.cpp

Issue 2861373003: Let table row and section's self visual overflow cover whole collapsed borders (Closed)
Patch Set: rebaseline-cl Created 3 years, 7 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
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2011 Google Inc. All rights reserved. 2 * Copyright (C) 2011 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 7 *
8 * 1. Redistributions of source code must retain the above copyright 8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright 10 * 2. Redistributions in binary form must reproduce the above copyright
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
72 #endif 72 #endif
73 73
74 class LayoutTableCellTest : public RenderingTest { 74 class LayoutTableCellTest : public RenderingTest {
75 protected: 75 protected:
76 bool HasStartBorderAdjoiningTable(const LayoutTableCell* cell) { 76 bool HasStartBorderAdjoiningTable(const LayoutTableCell* cell) {
77 return cell->HasStartBorderAdjoiningTable(); 77 return cell->HasStartBorderAdjoiningTable();
78 } 78 }
79 bool HasEndBorderAdjoiningTable(const LayoutTableCell* cell) { 79 bool HasEndBorderAdjoiningTable(const LayoutTableCell* cell) {
80 return cell->HasEndBorderAdjoiningTable(); 80 return cell->HasEndBorderAdjoiningTable();
81 } 81 }
82 LayoutRect LocalVisualRect(const LayoutTableCell* cell) {
83 return cell->LocalVisualRect();
84 }
82 85
83 LayoutTableCell* GetCellByElementId(const char* id) { 86 LayoutTableCell* GetCellByElementId(const char* id) {
84 return ToLayoutTableCell(GetLayoutObjectByElementId(id)); 87 return ToLayoutTableCell(GetLayoutObjectByElementId(id));
85 } 88 }
86 }; 89 };
87 90
88 TEST_F(LayoutTableCellTest, AbsoluteColumnIndex) { 91 TEST_F(LayoutTableCellTest, AbsoluteColumnIndex) {
89 auto* cell = LayoutTableCell::CreateAnonymous(&GetDocument()); 92 auto* cell = LayoutTableCell::CreateAnonymous(&GetDocument());
90 EXPECT_FALSE(cell->HasSetAbsoluteColumnIndex()); 93 EXPECT_FALSE(cell->HasSetAbsoluteColumnIndex());
91 cell->SetAbsoluteColumnIndex(kMaxColumnIndex); 94 cell->SetAbsoluteColumnIndex(kMaxColumnIndex);
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after
244 EXPECT_FALSE(HasEndBorderAdjoiningTable(cell22)); 247 EXPECT_FALSE(HasEndBorderAdjoiningTable(cell22));
245 EXPECT_TRUE(HasStartBorderAdjoiningTable(cell23)); 248 EXPECT_TRUE(HasStartBorderAdjoiningTable(cell23));
246 EXPECT_FALSE(HasEndBorderAdjoiningTable(cell23)); 249 EXPECT_FALSE(HasEndBorderAdjoiningTable(cell23));
247 250
248 EXPECT_FALSE(HasStartBorderAdjoiningTable(cell31)); 251 EXPECT_FALSE(HasStartBorderAdjoiningTable(cell31));
249 EXPECT_FALSE(HasEndBorderAdjoiningTable(cell31)); 252 EXPECT_FALSE(HasEndBorderAdjoiningTable(cell31));
250 EXPECT_FALSE(HasStartBorderAdjoiningTable(cell32)); 253 EXPECT_FALSE(HasStartBorderAdjoiningTable(cell32));
251 EXPECT_FALSE(HasEndBorderAdjoiningTable(cell32)); 254 EXPECT_FALSE(HasEndBorderAdjoiningTable(cell32));
252 } 255 }
253 256
257 TEST_F(LayoutTableCellTest, LocalVisualRectWithCollapsedBorders) {
258 SetBodyInnerHTML(
259 "<style>"
260 " table { border-collapse: collapse }"
261 " td { border: 0px solid blue; padding: 0 }"
262 " div { width: 100px; height: 100px }"
263 "</style>"
264 "<table>"
265 " <tr>"
266 " <td id='cell1' style='border-bottom-width: 10px;"
267 " outline: 3px solid blue'><div></div></td>"
268 " <td id='cell2' style='border-width: 3px 15px'><div></div></td>"
269 " </tr>"
270 "</table>");
271
272 auto* cell1 = GetCellByElementId("cell1");
273 auto* cell2 = GetCellByElementId("cell2");
274 EXPECT_TRUE(cell1->Table()->ShouldCollapseBorders());
275
276 EXPECT_EQ(0, cell1->BorderLeft());
277 EXPECT_EQ(7, cell1->BorderRight());
278 EXPECT_EQ(0, cell1->BorderTop());
279 EXPECT_EQ(5, cell1->BorderBottom());
280 EXPECT_EQ(8, cell2->BorderLeft());
281 EXPECT_EQ(7, cell2->BorderRight());
282 EXPECT_EQ(2, cell2->BorderTop());
283 EXPECT_EQ(1, cell2->BorderBottom());
284
285 LayoutRect expected_visual_rect1 = cell1->BorderBoxRect();
286 // Expand top, left for outline, right and bottom for collapsed border.
287 expected_visual_rect1.ExpandEdges(LayoutUnit(3), LayoutUnit(8), LayoutUnit(5),
288 LayoutUnit(3));
289 EXPECT_EQ(expected_visual_rect1, LocalVisualRect(cell1));
290
291 LayoutRect expected_visual_rect2 = cell2->BorderBoxRect();
292 // Expand outer half border width at each side. For the bottom side, expand
293 // more because the left border is lengthened to cover the joint with the
294 // bottom border of the cell to the left.
295 expected_visual_rect2.ExpandEdges(LayoutUnit(1), LayoutUnit(8), LayoutUnit(5),
296 LayoutUnit(7));
297 EXPECT_EQ(expected_visual_rect2, LocalVisualRect(cell2));
298 }
299
254 } // namespace blink 300 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/layout/LayoutTableCell.cpp ('k') | third_party/WebKit/Source/core/layout/LayoutTableRow.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698