Commit 50c8bd96 authored by Yoshifumi Inoue's avatar Yoshifumi Inoue Committed by Commit Bot

Make AssociateNextForSameLayoutObject() not to hit DCHECK for list marker

This patch changes |NGFragmentItemsBuilder::AssociateNextForSameLayoutObject()|
not to hit DCHECK about the first item in |NGFragmentItems| for list marker.

This is follow-up of the CL[1] introduced wrong DCHECK().

[1] http://crrev.com/c/1930370 [FragmentItem] Introduce next for same layout
object cache in NGFragmentItem

Bug: 982194
Change-Id: Ic37559dafb795c34529f72fef2c8dff95814094e
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1943651
Auto-Submit: Yoshifumi Inoue <yosin@chromium.org>
Reviewed-by: default avatarKoji Ishii <kojii@chromium.org>
Commit-Queue: Koji Ishii <kojii@chromium.org>
Commit-Queue: Yoshifumi Inoue <yosin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#720132}
parent ee3fc16e
...@@ -198,7 +198,10 @@ void NGFragmentItemsBuilder::ToFragmentItems(WritingMode writing_mode, ...@@ -198,7 +198,10 @@ void NGFragmentItemsBuilder::ToFragmentItems(WritingMode writing_mode,
} }
void NGFragmentItemsBuilder::AssociateNextForSameLayoutObject() { void NGFragmentItemsBuilder::AssociateNextForSameLayoutObject() {
DCHECK(items_.IsEmpty() || items_[0]->Type() == NGFragmentItem::kLine); // items_[0] can be:
// - kBox for list marker, e.g. <li>abc</li>
// - kLine for line, e.g. <div>abc</div>
DCHECK(items_.IsEmpty() || items_[0]->IsContainer()) << items_[0];
HashMap<const LayoutObject*, wtf_size_t> last_fragment_map; HashMap<const LayoutObject*, wtf_size_t> last_fragment_map;
for (wtf_size_t index = 1u; index < items_.size(); ++index) { for (wtf_size_t index = 1u; index < items_.size(); ++index) {
const NGFragmentItem& item = *items_[index]; const NGFragmentItem& item = *items_[index];
......
...@@ -431,6 +431,13 @@ TEST_P(NGInlineCursorTest, NextWithEllipsis) { ...@@ -431,6 +431,13 @@ TEST_P(NGInlineCursorTest, NextWithEllipsis) {
EXPECT_THAT(list, ElementsAre("#linebox", "abcdefghi", "abcd", u"#'\u2026'")); EXPECT_THAT(list, ElementsAre("#linebox", "abcdefghi", "abcd", u"#'\u2026'"));
} }
TEST_P(NGInlineCursorTest, NextWithListItem) {
NGInlineCursor cursor = SetupCursor("<ul><li id=root>abc</li></ul>");
Vector<String> list = ToDebugStringList(cursor);
EXPECT_THAT(list,
ElementsAre("LayoutNGListMarker (anonymous)", "#linebox", "abc"));
}
TEST_P(NGInlineCursorTest, NextWithSoftHyphens) { TEST_P(NGInlineCursorTest, NextWithSoftHyphens) {
// Use "Ahem" font to get U+2010 as soft hyphen instead of U+002D // Use "Ahem" font to get U+2010 as soft hyphen instead of U+002D
LoadAhem(); LoadAhem();
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment