mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-07 09:54:42 +00:00
Bug 1876640 - Fix offset* APIs on tables with captions. r=TYLin
The offset* APIs use the primary frame (the table wrapper frame) to choose an offset parent, so if we stop at the table frame we skip the offset between the wrapper and the table boxes. Differential Revision: https://phabricator.services.mozilla.com/D200948
This commit is contained in:
parent
c0cd4b85aa
commit
d4b845ca46
@ -275,7 +275,7 @@ static bool IsOffsetParent(nsIFrame* aFrame) {
|
||||
LayoutFrameType frameType = aFrame->Type();
|
||||
|
||||
if (frameType == LayoutFrameType::TableCell ||
|
||||
frameType == LayoutFrameType::Table) {
|
||||
frameType == LayoutFrameType::TableWrapper) {
|
||||
// Per the IDL for Element, only td, th, and table are acceptable
|
||||
// offsetParents apart from body or positioned elements; we need to check
|
||||
// the content type as well as the frame type so we ignore anonymous tables
|
||||
|
@ -0,0 +1,23 @@
|
||||
<!doctype html>
|
||||
<meta charset="utf-8">
|
||||
<link rel="help" href="https://drafts.csswg.org/cssom-view/#dom-htmlelement-offsetparent">
|
||||
<title>offset* APIs on tables with captions.</title>
|
||||
<script src=/resources/testharness.js></script>
|
||||
<script src=/resources/testharnessreport.js></script>
|
||||
<table style="border-spacing: 0px">
|
||||
<caption>I'm a <br>reasonably<br>tall caption.</caption>
|
||||
<tr><td><span>I'm a cell.</span>
|
||||
</table>
|
||||
<script>
|
||||
let td = document.querySelector("td");
|
||||
let span = document.querySelector("span");
|
||||
let caption = document.querySelector("caption");
|
||||
let table = document.querySelector("table");
|
||||
test(function() {
|
||||
assert_equals(span.offsetParent, td, "<td> should be an offset parent");
|
||||
assert_equals(td.offsetParent, table, "<table> should be an offset parent for <td>");
|
||||
assert_equals(caption.offsetParent, table, "<table> should be an offset parent for <caption>");
|
||||
assert_equals(caption.offsetTop, 0, "<caption> is at the top of its offsetParent");
|
||||
assert_equals(td.offsetTop, caption.offsetHeight, "<td> is under the caption");
|
||||
});
|
||||
</script>
|
Loading…
Reference in New Issue
Block a user