haikuwebkit/LayoutTests/fast/table/overflow-table-collapsed-bo...

114 lines
3.7 KiB
HTML
Raw Permalink Normal View History

Border drawing incorrect when using both border-collapse: collapse and overflow: hidden on a table https://bugs.webkit.org/show_bug.cgi?id=18305 Reviewed by David Hyatt. Source/WebCore: overflowClipRect() clips out the table's half of a collapsed border when there is an overflow clip on the table. This prevents the table's half of the border ever getting painted. To fix this, clip to the border box of tables when we're in the paint phase that gets the sections to draw the collapsed borders or when we're self painting. This will allow the table's half of the border to get painted. In the case where the table is self painting we ensure that content gets clipped to cell's side of the collapsed border by ensuring the clip passed to child layers from the table clips to the inside of the collapsed border. It's worth noting that a table's collapsed borders are painted by the table's layer using functions in RenderTableSection and RenderTableCell. So if a table section has a self-painting layer this patch still works, because the borders aren't painted by the section's layer. Tests: fast/table/overflow-table-collapsed-borders-cell-painting-table-self-painting-layer.html fast/table/overflow-table-collapsed-borders-cell-painting.html fast/table/overflow-table-collapsed-borders-section-layer-painting.html fast/table/overflow-table-collapsed-borders-section-layer-table-self-painting-layer.html fast/table/overflow-table-collapsed-borders-section-self-painting-layer-painting.html fast/table/overflow-table-collapsed-borders-section-self-painting-layer-table-self-painting-layer.html fast/table/table-overflow.html * rendering/RenderBox.cpp: (WebCore::RenderBox::pushContentsClip): (WebCore::RenderBox::overflowClipRect): * rendering/RenderBox.h: (WebCore::RenderBox::overflowClipRectForChildLayers): * rendering/RenderLayer.cpp: (WebCore::RenderLayer::calculateClipRects): * rendering/RenderTable.cpp: (WebCore::RenderTable::overflowClipRect): * rendering/RenderTable.h: (WebCore::RenderTable::overflowClipRectForChildLayers): LayoutTests: * fast/table/overflow-table-collapsed-borders-cell-painting-expected.png: Added. * fast/table/overflow-table-collapsed-borders-cell-painting-expected.txt: Added. * fast/table/overflow-table-collapsed-borders-cell-painting-table-self-painting-layer-expected.png: Added. * fast/table/overflow-table-collapsed-borders-cell-painting-table-self-painting-layer-expected.txt: Added. * fast/table/overflow-table-collapsed-borders-cell-painting-table-self-painting-layer.html: Added. * fast/table/overflow-table-collapsed-borders-cell-painting.html: Added. * fast/table/overflow-table-collapsed-borders-section-layer-painting-expected.png: Added. * fast/table/overflow-table-collapsed-borders-section-layer-painting-expected.txt: Added. * fast/table/overflow-table-collapsed-borders-section-layer-painting.html: Added. * fast/table/overflow-table-collapsed-borders-section-layer-table-self-painting-layer-expected.png: Added. * fast/table/overflow-table-collapsed-borders-section-layer-table-self-painting-layer-expected.txt: Added. * fast/table/overflow-table-collapsed-borders-section-layer-table-self-painting-layer.html: Added. * fast/table/overflow-table-collapsed-borders-section-self-painting-layer-painting-expected.png: Added. * fast/table/overflow-table-collapsed-borders-section-self-painting-layer-painting-expected.txt: Added. * fast/table/overflow-table-collapsed-borders-section-self-painting-layer-painting.html: Added. * fast/table/overflow-table-collapsed-borders-section-self-painting-layer-table-self-painting-layer-expected.png: Added. * fast/table/overflow-table-collapsed-borders-section-self-painting-layer-table-self-painting-layer-expected.txt: Added. * fast/table/overflow-table-collapsed-borders-section-self-painting-layer-table-self-painting-layer.html: Added. * fast/table/table-overflow-expected.html: Added. * fast/table/table-overflow.html: Added. * platform/qt/fast/table/overflowHidden-expected.txt: Canonical link: https://commits.webkit.org/136880@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@153089 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2013-07-24 18:02:13 +00:00
<!DOCTYPE html>
<html>
<head>
<style>
.table
{
border: 20px solid black;
color: green;
display: table;
font: 10px/1em Ahem;
height: 4em;
overflow: hidden;
table-layout: fixed;
width: 5em;
border-collapse: collapse;
}
.row
{
display: table-row;
}
.tbody
{
display: table-row-group;
}
.cell
{
display: table-cell;
white-space: nowrap;
}
.span2
{
color: blue;
}
.layer
{
opacity: 0.9;
}
.self-painting-layer
{
-webkit-box-reflect: left;
}
</style>
</head>
<body>
<!-- webkit.org/b/18305: In each table the blue bar should intrude halfway into the right-hand border. This tests that overflow:hidden on a table
still allows overflowing content to spill onto the cell's half of a collapsed border.-->
<div class="table self-painting-layer">
<div class="tbody self-painting-layer">
<div class="row">
<div class="cell"><span class="span2">XXXXXXX</span></div>
</div>
</div>
</div>
<div class="table self-painting-layer">
<div class="tbody self-painting-layer">
<div class="row">
<div class="cell self-painting-layer"><span class="span2">XXXXXXX</span></div>
</div>
</div>
</div>
<div class="table self-painting-layer">
<div class="tbody self-painting-layer">
<div class="row">
<div class="cell layer"><span class="span2">XXXXXXX</span></div>
</div>
</div>
</div>
<div class="table self-painting-layer">
<div class="tbody self-painting-layer">
<div class="row">
<div class="cell"><span class="span2 self-painting-layer">XXXXXXX</span></div>
</div>
</div>
</div>
<div class="table self-painting-layer">
<div class="tbody self-painting-layer">
<div class="row">
<div class="cell"><span class="span2 layer">XXXXXXX</span></div>
</div>
</div>
</div>
<div class="table self-painting-layer">
<div class="tbody self-painting-layer">
<div class="row">
<div class="cell self-painting-layer"><span class="span2 layer">XXXXXXX</span></div>
</div>
</div>
</div>
<div class="table self-painting-layer">
<div class="tbody self-painting-layer">
<div class="row">
<div class="cell self-painting-layer"><span class="span2 self-painting-layer">XXXXXXX</span></div>
</div>
</div>
</div>
<div class="table self-painting-layer">
<div class="tbody self-painting-layer">
<div class="row">
<div class="cell layer"><span class="span2 self-painting-layer">XXXXXXX</span></div>
</div>
</div>
</div>
<div class="table self-painting-layer">
<div class="tbody self-painting-layer">
<div class="row">
<div class="cell layer"><span class="span2 layer">XXXXXXX</span></div>
</div>
</div>
</div>
</body>
</html>