Commit b8c05310 authored by Oriol Brufau's avatar Oriol Brufau Committed by Commit Bot

[css-pseudo] Support 'content' in legacy ::marker

With this patch, legacy layout supports setting the 'content' property
of a ::marker to something different than 'normal' or 'none'.

Bug: 457718

TEST=external/wpt/css/css-pseudo/marker-computed-size.html
TEST=external/wpt/css/css-pseudo/marker-content-002.html
TEST=external/wpt/css/css-pseudo/marker-content-003.html
TEST=external/wpt/css/css-pseudo/marker-content-003b.html
TEST=external/wpt/css/css-pseudo/marker-content-004.html
TEST=external/wpt/css/css-pseudo/marker-content-005.html
TEST=external/wpt/css/css-pseudo/marker-content-006.html
TEST=external/wpt/css/css-pseudo/marker-content-012.html
TEST=external/wpt/css/css-pseudo/marker-content-015.html
TEST=external/wpt/css/css-pseudo/marker-content-017.html
TEST=external/wpt/css/css-pseudo/marker-content-021.html
TEST=external/wpt/css/css-pseudo/marker-hit-testing.html
TEST=external/wpt/css/css-pseudo/marker-intrinsic-contribution-001.html
TEST=fast/css/counters/counterValueForElementById.html

Change-Id: Ib4b9d5661ed2ae0b99e9489c5ce4595f5715f83c
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2246573
Commit-Queue: Oriol Brufau <obrufau@igalia.com>
Reviewed-by: default avatarRune Lillesveen <futhark@chromium.org>
Cr-Commit-Position: refs/heads/master@{#785942}
parent b1f0bd95
......@@ -201,13 +201,8 @@ void PseudoElement::AttachLayoutTree(AttachContext& context) {
const ComputedStyle& style = layout_object->StyleRef();
switch (pseudo_id_) {
case kPseudoIdMarker: {
if (ListMarker* marker = ListMarker::Get(layout_object)) {
if (ListMarker* marker = ListMarker::Get(layout_object))
marker->UpdateMarkerContentIfNeeded(*layout_object);
} else {
DCHECK(layout_object->IsListMarker());
// TODO(obrufau): support non-normal content in legacy markers.
return;
}
if (style.ContentBehavesAsNormal())
return;
break;
......
......@@ -149,12 +149,20 @@ LayoutObject* LayoutObjectFactory::CreateListMarker(Node& node,
bool is_inside =
parent_style->ListStylePosition() == EListStylePosition::kInside ||
(IsA<HTMLLIElement>(parent) && !parent_style->IsInsideListElement());
if (style.ContentBehavesAsNormal()) {
if (is_inside) {
return CreateObject<LayoutObject, LayoutNGInsideListMarker,
LayoutListMarker>(node, style, legacy);
}
return CreateObject<LayoutObject, LayoutNGOutsideListMarker,
LayoutListMarker>(node, style, legacy);
}
if (is_inside) {
return CreateObject<LayoutObject, LayoutNGInsideListMarker,
LayoutListMarker>(node, style, legacy);
LayoutInsideListMarker>(node, style, legacy);
}
return CreateObject<LayoutObject, LayoutNGOutsideListMarker,
LayoutListMarker>(node, style, legacy);
LayoutOutsideListMarker>(node, style, legacy);
}
LayoutBlock* LayoutObjectFactory::CreateTable(Node& node,
......
......@@ -81,19 +81,8 @@ crbug.com/591099 external/wpt/css/css-position/static-position/vrl-rtl-ltr.tenta
crbug.com/591099 external/wpt/css/css-position/static-position/vrl-rtl-rtl.html [ Failure ]
### external/wpt/css/css-pseudo/
crbug.com/457718 external/wpt/css/css-pseudo/marker-computed-size.html [ Failure ]
crbug.com/457718 external/wpt/css/css-pseudo/marker-content-002.html [ Failure ]
crbug.com/457718 external/wpt/css/css-pseudo/marker-content-003.html [ Failure ]
crbug.com/457718 external/wpt/css/css-pseudo/marker-content-003b.html [ Failure ]
crbug.com/457718 external/wpt/css/css-pseudo/marker-content-004.html [ Failure ]
crbug.com/457718 external/wpt/css/css-pseudo/marker-content-005.html [ Failure ]
crbug.com/457718 external/wpt/css/css-pseudo/marker-content-006.html [ Failure ]
crbug.com/457718 external/wpt/css/css-pseudo/marker-content-012.html [ Failure ]
crbug.com/457718 external/wpt/css/css-pseudo/marker-content-015.html [ Failure ]
crbug.com/1101040 external/wpt/css/css-pseudo/marker-content-016.html [ Failure ]
crbug.com/457718 external/wpt/css/css-pseudo/marker-content-017.html [ Failure ]
crbug.com/1101034 external/wpt/css/css-pseudo/marker-content-018.html [ Failure ]
crbug.com/457718 external/wpt/css/css-pseudo/marker-content-021.html [ Failure ]
crbug.com/1012289 external/wpt/css/css-pseudo/marker-unicode-bidi-default.html [ Failure ]
crbug.com/1012289 external/wpt/css/css-pseudo/marker-unicode-bidi-normal.html [ Failure ]
......
......@@ -6,8 +6,7 @@ PASS outside string ::marker's content
FAIL outside string ::marker assert_equals: event.target expected Element node <li class="string"></li> but got Element node <ol class="outside" data-x="-65">
<li class="image"></l...
PASS outside marker ::marker's content
FAIL outside marker ::marker assert_equals: event.target expected Element node <li class="marker"></li> but got Element node <ol class="outside" data-x="-65">
<li class="image"></l...
PASS outside marker ::marker
PASS outside nested image ::marker's content
FAIL outside nested image ::marker assert_equals: event.target expected Element node <li class="nested image"></li> but got Element node <ol class="outside" data-x="-65">
<li class="image"></l...
......
......@@ -6,6 +6,6 @@ PASS Intrinsic contribution of outside content marker
PASS Intrinsic contribution of inside symbol marker
PASS Intrinsic contribution of inside decimal marker
PASS Intrinsic contribution of inside string marker
FAIL Intrinsic contribution of inside content marker assert_equals: clientWidth expected 70 but got 30
PASS Intrinsic contribution of inside content marker
Harness: the test ran to completion.
This is the test for internals.counterValueForElementById
FAIL internals.counterValue(document.getElementById('marker')) should be 0. Was .
PASS internals.counterValue(document.getElementById('before')) is '0'
PASS internals.counterValue(document.getElementById('after')) is '0'
FAIL internals.counterValue(document.getElementById('marker_before')) should be 0 0. Was 0.
FAIL internals.counterValue(document.getElementById('marker_after')) should be 0 0. Was 0.
PASS internals.counterValue(document.getElementById('before_after')) is '0 0'
FAIL internals.counterValue(document.getElementById('marker_before_after')) should be 0 0 0. Was 0 0.
PASS internals.counterValue(document.getElementById('twice')) is '0 0'
PASS internals.counterValue(document.getElementById('point')) is '0.1'
PASS internals.counterValue(document.getElementById('two-points')) is '0.1.2'
PASS internals.counterValue(document.getElementById('greek')) is '0.α.β'
PASS internals.counterValue(document.getElementById('three-greeks')) is '0.α.β 0.α.β 0.α.β'
PASS successfullyParsed is true
TEST COMPLETE
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