Skip to content

Commit

Permalink
[LayoutNG] Don't allow line height quirk inside list items.
Browse files Browse the repository at this point in the history
This makes us match legacy engine behavior more closely, and both Edge
and Firefox have something similar, although Firefox triggers based on
element type (LI), and not display type (list-item). There's currently
nothing in the spec [1] that suggests such special behavior for list
items.

[1] https://quirks.spec.whatwg.org/#the-line-height-calculation-quirk

This fix makes the line height differences go away in the test
tables/mozilla/bugs/bug23235.html (but note that it will still require
a rebaseline, because of minor text rendering differences between
legacy and NG).

See whatwg/quirks#38 for spec discussion.

Change-Id: I396c0c85454feeaa45a0a5953b9e6b7c475d131e
Reviewed-on: https://chromium-review.googlesource.com/c/1379897
Commit-Queue: Emil A Eklund <[email protected]>
Reviewed-by: Aleks Totic <[email protected]>
Reviewed-by: Koji Ishii <[email protected]>
Reviewed-by: Emil A Eklund <[email protected]>
Cr-Commit-Position: refs/heads/master@{#618304}
  • Loading branch information
mstensho authored and Commit Bot committed Dec 20, 2018
1 parent f99469b commit 09f60d6
Show file tree
Hide file tree
Showing 5 changed files with 21 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -191,10 +191,11 @@ void NGInlineLayoutAlgorithm::CreateLine(NGLineInfo* line_info,

bool has_out_of_flow_positioned_items = false;

// In order to match other browsers when list-style-type: none, pretend
// there's an invisible marker here.
if (line_style.Display() == EDisplay::kListItem &&
line_style.ListStyleType() == EListStyleType::kNone)
// List items trigger strict line height, i.e. we make room for the line box
// strut, for *every* line. This matches other browsers. The intention may
// have been to make sure that there's always room for the list item marker,
// but that doesn't explain why it's done for every line...
if (quirks_mode_ && line_style.Display() == EDisplay::kListItem)
box->ComputeTextMetrics(line_style, baseline_type_);

for (NGInlineItemResult& item_result : *line_items) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -298,7 +298,6 @@ crbug.com/591099 scrollbars/auto-scrollbar-fit-content.html [ Failure ]
crbug.com/591099 svg/zoom/page/zoom-svg-float-border-padding.xml [ Pass ]
crbug.com/591099 tables/mozilla/bugs/bug101674.html [ Failure ]
crbug.com/591099 tables/mozilla/bugs/bug14159-1.html [ Pass ]
crbug.com/591099 tables/mozilla/bugs/bug23235.html [ Failure ]
crbug.com/591099 tables/mozilla/bugs/bug2973.html [ Pass ]
crbug.com/591099 virtual/android/rootscroller/set-root-scroller.html [ Pass ]
crbug.com/591099 virtual/android/rootscroller/set-rootscroller-before-load.html [ Pass ]
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<!-- quirks mode -->
<link rel="author" title="Morten Stenshorne" href="[email protected]">
<link rel="help" href="https://quirks.spec.whatwg.org/#the-line-height-calculation-quirk">
<link rel="match" href="reference/green-100px-square-no-red.html">
<meta name="assert" content="List items force strict line height; see https://github.com/whatwg/quirks/issues/38">
<p>There should be a filled green square below, and no red.</p>
<div style="width:100px; height:100px; background:red;">
<li style="line-height:50px; color:green; background:green;">
<br>
<div style="display:inline-block; width:1px; height:1px;"></div>
</li>
</div>
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
<!-- quirks mode -->
<link rel="author" title="Morten Stenshorne" href="[email protected]">
<p>There should be a filled green square below, and no red.</p>
<div style="width:100px; height:100px; background:green;"></div>
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit 09f60d6

Please sign in to comment.