Bug 1581767 [wpt PR 19115] - [LayoutNG] Correct overflow inside anonymous blocks inside %-insets., a=testonly

Automatic update from web-platform-tests
[LayoutNG] Correct overflow inside anonymous blocks inside %-insets.

NGPhysicalLineBoxFragment::ScrollableOverflow() compared the computed
style passed as container_style to the computed style of each child,
and it would calculate the child's relative offset only if they
differed. All element nodes have their own computed style, so this only
mattered for text nodes. However, if the container was an anonymous
block, they'd always differ, since the computed style of a text node
is the same as that of the parent DOM node. This is an implementation
detail; we save some memory by letting text nodes share computed style
objects with their containing DOM node. But that also means that extra
care is required when working with ComputedStyle objects associated
with text nodes: basically, treat all non-inherited-by-default
properties (such as 'position', 'top' and 'left') as if they were set
to their initial value.

Bug: 1002485
Change-Id: If77d79e45c2aa55ac30dc239c738e2a40f8326f9
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1807813
Reviewed-by: Aleks Totic <atotic@chromium.org>
Commit-Queue: Morten Stenshorne <mstensho@chromium.org>
Cr-Commit-Position: refs/heads/master@{#697324}

--

wpt-commits: 3472889e27404a9b3c893845156848a0c5fbda9b
wpt-pr: 19115
This commit is contained in:
Morten Stenshorne 2019-09-20 04:54:01 +00:00 committed by moz-wptsync-bot
parent 2144d6511c
commit 994e8be1bd

View File

@ -0,0 +1,23 @@
<!DOCTYPE html>
<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
<link rel="help" href="https://www.w3.org/TR/CSS22/visuren.html#propdef-left">
<link rel="help" href="https://www.w3.org/TR/CSS22/visuren.html#relative-positioning">
<link rel="help" href="https://www.w3.org/TR/CSS22/visuren.html#anonymous-block-level">
<link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=1002485">
<p>There should be no red, and no scrollbar.</p>
<div id="container" style="overflow:auto; width:500px; background:red;">
<div style="padding-right:90%; background:yellow;">
<div style="position:relative; left:900%; background:cyan;">
<div></div>
&nbsp;
</div>
</div>
</div>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script>
container.scrollLeft = 123456;
test(()=> {
assert_equals(container.scrollLeft, 0);
}, "Left percentage resolved correctly for overflow contribution");
</script>