| Differences between
and this patch
- a/LayoutTests/TestExpectations -15 / +9 lines
Lines 3554-3578 webkit.org/b/203583 imported/w3c/web-platform-tests/css/css-sizing/aspect-ratio- a/LayoutTests/TestExpectations_sec1
3554
# wpt css-text-decor failures
3554
# wpt css-text-decor failures
3555
webkit.org/b/230041 imported/w3c/web-platform-tests/css/css-text-decor/text-decoration-color-selection-001.html [ ImageOnlyFailure ]
3555
webkit.org/b/230041 imported/w3c/web-platform-tests/css/css-text-decor/text-decoration-color-selection-001.html [ ImageOnlyFailure ]
3556
webkit.org/b/230041 imported/w3c/web-platform-tests/css/css-text-decor/text-decoration-color-selection-pseudo-01.html [ ImageOnlyFailure ]
3556
webkit.org/b/230041 imported/w3c/web-platform-tests/css/css-text-decor/text-decoration-color-selection-pseudo-01.html [ ImageOnlyFailure ]
3557
webkit.org/b/203530 imported/w3c/web-platform-tests/css/css-text-decor/text-decoration-line-recalc.html [ ImageOnlyFailure ]
3558
webkit.org/b/203528 imported/w3c/web-platform-tests/css/css-text-decor/text-decoration-thickness-linethrough-001.html [ ImageOnlyFailure ]
3557
webkit.org/b/203528 imported/w3c/web-platform-tests/css/css-text-decor/text-decoration-thickness-linethrough-001.html [ ImageOnlyFailure ]
3559
webkit.org/b/203528 imported/w3c/web-platform-tests/css/css-text-decor/text-decoration-thickness-overline-001.html [ ImageOnlyFailure ]
3560
webkit.org/b/203528 imported/w3c/web-platform-tests/css/css-text-decor/text-decoration-thickness-scroll-001.html [ ImageOnlyFailure ]
3561
webkit.org/b/203528 imported/w3c/web-platform-tests/css/css-text-decor/text-decoration-thickness-underline-001.html [ ImageOnlyFailure ]
3562
webkit.org/b/203528 imported/w3c/web-platform-tests/css/css-text-decor/text-decoration-thickness-vertical-001.html [ ImageOnlyFailure ]
3563
webkit.org/b/203528 imported/w3c/web-platform-tests/css/css-text-decor/text-decoration-thickness-vertical-002.html [ ImageOnlyFailure ]
3558
webkit.org/b/203528 imported/w3c/web-platform-tests/css/css-text-decor/text-decoration-thickness-vertical-002.html [ ImageOnlyFailure ]
3564
webkit.org/b/203528 imported/w3c/web-platform-tests/css/css-text-decor/text-decoration-thickness-percent-001.html [ ImageOnlyFailure ]
3565
webkit.org/b/203529 imported/w3c/web-platform-tests/css/css-text-decor/text-decoration-underline-position-vertical-ja.html [ ImageOnlyFailure ]
3559
webkit.org/b/203529 imported/w3c/web-platform-tests/css/css-text-decor/text-decoration-underline-position-vertical-ja.html [ ImageOnlyFailure ]
3566
webkit.org/b/203529 imported/w3c/web-platform-tests/css/css-text-decor/text-decoration-underline-position-vertical.html [ ImageOnlyFailure ]
3560
webkit.org/b/203529 imported/w3c/web-platform-tests/css/css-text-decor/text-decoration-underline-position-vertical.html [ ImageOnlyFailure ]
3567
imported/w3c/web-platform-tests/css/css-text-decor/text-decoration-propagation-display-contents.html [ ImageOnlyFailure ]
3561
imported/w3c/web-platform-tests/css/css-text-decor/text-decoration-propagation-display-contents.html [ ImageOnlyFailure ]
3568
webkit.org/b/230083 imported/w3c/web-platform-tests/css/css-text-decor/text-decoration-skip-ink-001.html [ ImageOnlyFailure ]
3569
webkit.org/b/230083 imported/w3c/web-platform-tests/css/css-text-decor/text-decoration-skip-ink-004.html [ ImageOnlyFailure ]
3570
imported/w3c/web-platform-tests/css/css-text-decor/text-decoration-skip-ink-005.html [ ImageOnlyFailure ]
3562
imported/w3c/web-platform-tests/css/css-text-decor/text-decoration-skip-ink-005.html [ ImageOnlyFailure ]
3571
webkit.org/b/230083 imported/w3c/web-platform-tests/css/css-text-decor/text-decoration-skip-ink-sidewayslr-001.html [ ImageOnlyFailure ]
3572
webkit.org/b/230083 imported/w3c/web-platform-tests/css/css-text-decor/text-decoration-skip-ink-sidewaysrl-001.html [ ImageOnlyFailure ]
3573
imported/w3c/web-platform-tests/css/css-text-decor/text-decoration-skip-ink-upright-001.html [ ImageOnlyFailure ]
3574
imported/w3c/web-platform-tests/css/css-text-decor/text-decoration-skip-ink-vertical-001.html [ ImageOnlyFailure ]
3575
webkit.org/b/230083 imported/w3c/web-platform-tests/css/css-text-decor/text-decoration-thickness-001.html [ ImageOnlyFailure ]
3576
imported/w3c/web-platform-tests/css/css-text-decor/text-emphasis-position-over-left-001.xht [ ImageOnlyFailure ]
3563
imported/w3c/web-platform-tests/css/css-text-decor/text-emphasis-position-over-left-001.xht [ ImageOnlyFailure ]
3577
imported/w3c/web-platform-tests/css/css-text-decor/text-emphasis-position-over-left-002.xht [ ImageOnlyFailure ]
3564
imported/w3c/web-platform-tests/css/css-text-decor/text-emphasis-position-over-left-002.xht [ ImageOnlyFailure ]
3578
imported/w3c/web-platform-tests/css/css-text-decor/text-emphasis-position-over-right-001.xht [ ImageOnlyFailure ]
3565
imported/w3c/web-platform-tests/css/css-text-decor/text-emphasis-position-over-right-001.xht [ ImageOnlyFailure ]
Lines 3592-3598 imported/w3c/web-platform-tests/css/css-text-decor/text-emphasis-style-filled-00 a/LayoutTests/TestExpectations_sec2
3592
imported/w3c/web-platform-tests/css/css-text-decor/text-emphasis-style-open-001.xht [ ImageOnlyFailure ]
3579
imported/w3c/web-platform-tests/css/css-text-decor/text-emphasis-style-open-001.xht [ ImageOnlyFailure ]
3593
imported/w3c/web-platform-tests/css/css-text-decor/text-emphasis-style-shape-001.xht [ ImageOnlyFailure ]
3580
imported/w3c/web-platform-tests/css/css-text-decor/text-emphasis-style-shape-001.xht [ ImageOnlyFailure ]
3594
imported/w3c/web-platform-tests/css/css-text-decor/text-emphasis-style-string-001.xht [ ImageOnlyFailure ]
3581
imported/w3c/web-platform-tests/css/css-text-decor/text-emphasis-style-string-001.xht [ ImageOnlyFailure ]
3595
webkit.org/b/230083 imported/w3c/web-platform-tests/css/css-text-decor/text-underline-offset-001.html [ ImageOnlyFailure ]
3596
3582
3597
# wpt css-position failures
3583
# wpt css-position failures
3598
webkit.org/b/203445 [ Debug ] imported/w3c/web-platform-tests/css/css-position/position-absolute-container-dynamic-002.html [ Skip ]
3584
webkit.org/b/203445 [ Debug ] imported/w3c/web-platform-tests/css/css-position/position-absolute-container-dynamic-002.html [ Skip ]
Lines 4753-4758 webkit.org/b/214463 imported/w3c/web-platform-tests/css/css-sizing/intrinsic-per a/LayoutTests/TestExpectations_sec3
4753
webkit.org/b/214464 imported/w3c/web-platform-tests/css/css-text-decor/text-decoration-thickness-fixed.html [ ImageOnlyFailure ]
4739
webkit.org/b/214464 imported/w3c/web-platform-tests/css/css-text-decor/text-decoration-thickness-fixed.html [ ImageOnlyFailure ]
4754
webkit.org/b/214464 imported/w3c/web-platform-tests/css/css-text-decor/text-decoration-thickness-ink-skip-dilation.html [ ImageOnlyFailure ]
4740
webkit.org/b/214464 imported/w3c/web-platform-tests/css/css-text-decor/text-decoration-thickness-ink-skip-dilation.html [ ImageOnlyFailure ]
4755
4741
4742
# writing-mode: sideways-lr not supported
4743
imported/w3c/web-platform-tests/css/css-text-decor/text-underline-offset-vertical-002.html [ ImageOnlyFailure ]
4744
4745
# text-underline-position: right; not supported
4746
webkit.org/b/112615 imported/w3c/web-platform-tests/css/css-text-decor/text-underline-offset-vertical-003.html [ ImageOnlyFailure ]
4747
4756
webkit.org/b/214465 imported/w3c/web-platform-tests/css/mediaqueries/aspect-ratio-004.html [ ImageOnlyFailure ]
4748
webkit.org/b/214465 imported/w3c/web-platform-tests/css/mediaqueries/aspect-ratio-004.html [ ImageOnlyFailure ]
4757
webkit.org/b/214465 imported/w3c/web-platform-tests/css/mediaqueries/aspect-ratio-005.html [ ImageOnlyFailure ]
4749
webkit.org/b/214465 imported/w3c/web-platform-tests/css/mediaqueries/aspect-ratio-005.html [ ImageOnlyFailure ]
4758
webkit.org/b/214465 imported/w3c/web-platform-tests/css/mediaqueries/aspect-ratio-006.html [ ImageOnlyFailure ]
4750
webkit.org/b/214465 imported/w3c/web-platform-tests/css/mediaqueries/aspect-ratio-006.html [ ImageOnlyFailure ]
Lines 5168-5174 webkit.org/b/230004 imported/w3c/web-platform-tests/css/css-pseudo/selection-int a/LayoutTests/TestExpectations_sec4
5168
webkit.org/b/230004 imported/w3c/web-platform-tests/css/css-pseudo/selection-overlay-and-grammar-001.html [ ImageOnlyFailure ]
5160
webkit.org/b/230004 imported/w3c/web-platform-tests/css/css-pseudo/selection-overlay-and-grammar-001.html [ ImageOnlyFailure ]
5169
webkit.org/b/230004 imported/w3c/web-platform-tests/css/css-pseudo/selection-overlay-and-spelling-001.html [ ImageOnlyFailure ]
5161
webkit.org/b/230004 imported/w3c/web-platform-tests/css/css-pseudo/selection-overlay-and-spelling-001.html [ ImageOnlyFailure ]
5170
webkit.org/b/230004 imported/w3c/web-platform-tests/css/css-pseudo/selection-textarea-011.html [ ImageOnlyFailure ]
5162
webkit.org/b/230004 imported/w3c/web-platform-tests/css/css-pseudo/selection-textarea-011.html [ ImageOnlyFailure ]
5171
5163
webkit.org/b/233927 imported/w3c/web-platform-tests/css/css-pseudo/highlight-painting-003.html [ ImageOnlyFailure ]
5164
webkit.org/b/233927 imported/w3c/web-platform-tests/css/css-pseudo/highlight-painting-004.html [ ImageOnlyFailure ]
5165
webkit.org/b/233927 imported/w3c/web-platform-tests/css/css-pseudo/selection-originating-decoration-color.html [ ImageOnlyFailure ]
5172
5166
5173
# css/filter-effects
5167
# css/filter-effects
5174
webkit.org/b/235000 [ Debug ] imported/w3c/web-platform-tests/css/filter-effects/animation/filter-interpolation-003.html [ Skip ]
5168
webkit.org/b/235000 [ Debug ] imported/w3c/web-platform-tests/css/filter-effects/animation/filter-interpolation-003.html [ Skip ]
- a/LayoutTests/fast/css3-text/css3-text-decoration/text-decoration-dashed.html -1 / +1 lines
Lines 3-8 a/LayoutTests/fast/css3-text/css3-text-decoration/text-decoration-dashed.html_sec1
3
<head>
3
<head>
4
</head>
4
</head>
5
<body>
5
<body>
6
<div style="font-size: 40px; -webkit-text-decoration-style: dashed; text-decoration: underline;">dotyedgdesc</div>
6
<div style="font-size: 40px; text-decoration: underline; -webkit-text-decoration-style: dashed;">dotyedgdesc</div>
7
</body>
7
</body>
8
</html>
8
</html>
- a/LayoutTests/fast/css3-text/css3-text-decoration/text-decoration-dotted-dashed.html -1 / +1 lines
Lines 3-8 a/LayoutTests/fast/css3-text/css3-text-decoration/text-decoration-dotted-dashed.html_sec1
3
<head>
3
<head>
4
</head>
4
</head>
5
<body>
5
<body>
6
<div style="font-size: 40px; -webkit-text-decoration-style: dotted; text-decoration: underline;">dotyedgdesc</div>
6
<div style="font-size: 40px; text-decoration: underline; -webkit-text-decoration-style: dotted;">dotyedgdesc</div>
7
</body>
7
</body>
8
</html>
8
</html>
- a/LayoutTests/fast/css3-text/css3-text-decoration/text-decoration-dotted.html -1 / +1 lines
Lines 3-8 a/LayoutTests/fast/css3-text/css3-text-decoration/text-decoration-dotted.html_sec1
3
<head>
3
<head>
4
</head>
4
</head>
5
<body>
5
<body>
6
<div style="font-size: 40px; -webkit-text-decoration-style: dotted; text-decoration: underline;">dotyedgdesc</div>
6
<div style="font-size: 40px; text-decoration: underline; -webkit-text-decoration-style: dotted;">dotyedgdesc</div>
7
</body>
7
</body>
8
</html>
8
</html>
- a/LayoutTests/imported/w3c/web-platform-tests/css/css-pseudo/first-letter-allowed-properties-expected.txt -1 / +1 lines
Lines 24-30 PASS letterSpacing should be applied to first-letter pseudo elements. a/LayoutTests/imported/w3c/web-platform-tests/css/css-pseudo/first-letter-allowed-properties-expected.txt_sec1
24
PASS margin should be applied to first-letter pseudo elements.
24
PASS margin should be applied to first-letter pseudo elements.
25
PASS padding should be applied to first-letter pseudo elements.
25
PASS padding should be applied to first-letter pseudo elements.
26
PASS opacity should be applied to first-letter pseudo elements.
26
PASS opacity should be applied to first-letter pseudo elements.
27
FAIL textDecoration should be applied to first-letter pseudo elements. assert_equals: expected "overline wavy rgb(10, 20, 30)" but got "none"
27
PASS textDecoration should be applied to first-letter pseudo elements.
28
PASS textJustify should be applied to first-letter pseudo elements.
28
PASS textJustify should be applied to first-letter pseudo elements.
29
PASS textShadow should be applied to first-letter pseudo elements.
29
PASS textShadow should be applied to first-letter pseudo elements.
30
PASS textTransform should be applied to first-letter pseudo elements.
30
PASS textTransform should be applied to first-letter pseudo elements.
- a/LayoutTests/imported/w3c/web-platform-tests/css/css-pseudo/first-line-allowed-properties-expected.txt -1 / +1 lines
Lines 21-27 PASS fontWeight should be applied to first-line pseudo elements. a/LayoutTests/imported/w3c/web-platform-tests/css/css-pseudo/first-line-allowed-properties-expected.txt_sec1
21
PASS fontVariationSettings should be applied to first-line pseudo elements.
21
PASS fontVariationSettings should be applied to first-line pseudo elements.
22
PASS letterSpacing should be applied to first-line pseudo elements.
22
PASS letterSpacing should be applied to first-line pseudo elements.
23
PASS opacity should be applied to first-line pseudo elements.
23
PASS opacity should be applied to first-line pseudo elements.
24
FAIL textDecoration should be applied to first-line pseudo elements. assert_equals: expected "overline wavy rgb(10, 20, 30)" but got "none"
24
PASS textDecoration should be applied to first-line pseudo elements.
25
PASS textJustify should be applied to first-line pseudo elements.
25
PASS textJustify should be applied to first-line pseudo elements.
26
PASS textShadow should be applied to first-line pseudo elements.
26
PASS textShadow should be applied to first-line pseudo elements.
27
PASS textTransform should be applied to first-line pseudo elements.
27
PASS textTransform should be applied to first-line pseudo elements.
- a/LayoutTests/imported/w3c/web-platform-tests/css/css-text-decor/parsing/text-decoration-computed-expected.txt -12 / +12 lines
Lines 1-14 a/LayoutTests/imported/w3c/web-platform-tests/css/css-text-decor/parsing/text-decoration-computed-expected.txt_sec1
1
1
2
FAIL Property text-decoration value 'none' assert_equals: expected "rgb(0, 0, 255)" but got "none"
2
PASS Property text-decoration value 'none'
3
FAIL Property text-decoration value 'line-through' assert_equals: expected "line-through rgb(0, 0, 255)" but got "line-through"
3
PASS Property text-decoration value 'line-through'
4
FAIL Property text-decoration value 'solid' assert_true: 'solid' is a supported value for text-decoration. expected true got false
4
PASS Property text-decoration value 'solid'
5
FAIL Property text-decoration value 'currentcolor' assert_true: 'currentcolor' is a supported value for text-decoration. expected true got false
5
PASS Property text-decoration value 'currentcolor'
6
FAIL Property text-decoration value 'double overline underline' assert_true: 'double overline underline' is a supported value for text-decoration. expected true got false
6
PASS Property text-decoration value 'double overline underline'
7
FAIL Property text-decoration value 'underline overline line-through red' assert_true: 'underline overline line-through red' is a supported value for text-decoration. expected true got false
7
PASS Property text-decoration value 'underline overline line-through red'
8
FAIL Property text-decoration value 'rgba(10, 20, 30, 0.4) dotted' assert_true: 'rgba(10, 20, 30, 0.4) dotted' is a supported value for text-decoration. expected true got false
8
PASS Property text-decoration value 'rgba(10, 20, 30, 0.4) dotted'
9
FAIL Property text-decoration value 'underline dashed rgb(0, 255, 0)' assert_true: 'underline dashed rgb(0, 255, 0)' is a supported value for text-decoration. expected true got false
9
PASS Property text-decoration value 'underline dashed rgb(0, 255, 0)'
10
FAIL Property text-decoration value 'auto' assert_true: 'auto' is a supported value for text-decoration. expected true got false
10
PASS Property text-decoration value 'auto'
11
FAIL Property text-decoration value 'from-font' assert_true: 'from-font' is a supported value for text-decoration. expected true got false
11
PASS Property text-decoration value 'from-font'
12
FAIL Property text-decoration value '10px' assert_true: '10px' is a supported value for text-decoration. expected true got false
12
PASS Property text-decoration value '10px'
13
FAIL Property text-decoration value 'underline red from-font' assert_true: 'underline red from-font' is a supported value for text-decoration. expected true got false
13
PASS Property text-decoration value 'underline red from-font'
14
14
- a/LayoutTests/imported/w3c/web-platform-tests/css/css-text-decor/parsing/text-decoration-shorthand-expected.txt -5 / +5 lines
Lines 1-7 a/LayoutTests/imported/w3c/web-platform-tests/css/css-text-decor/parsing/text-decoration-shorthand-expected.txt_sec1
1
1
2
FAIL e.style['text-decoration'] = "overline from-font dotted green" should set text-decoration-color assert_equals: text-decoration-color should be canonical expected "green" but got ""
2
PASS e.style['text-decoration'] = "overline from-font dotted green" should set text-decoration-color
3
FAIL e.style['text-decoration'] = "overline from-font dotted green" should set text-decoration-line assert_equals: text-decoration-line should be canonical expected "overline" but got ""
3
PASS e.style['text-decoration'] = "overline from-font dotted green" should set text-decoration-line
4
FAIL e.style['text-decoration'] = "overline from-font dotted green" should set text-decoration-style assert_equals: text-decoration-style should be canonical expected "dotted" but got ""
4
PASS e.style['text-decoration'] = "overline from-font dotted green" should set text-decoration-style
5
FAIL e.style['text-decoration'] = "overline from-font dotted green" should set text-decoration-thickness assert_equals: text-decoration-thickness should be canonical expected "from-font" but got ""
5
PASS e.style['text-decoration'] = "overline from-font dotted green" should set text-decoration-thickness
6
FAIL e.style['text-decoration'] = "overline from-font dotted green" should not set unrelated longhands assert_true: expected true got false
6
PASS e.style['text-decoration'] = "overline from-font dotted green" should not set unrelated longhands
7
7
- a/LayoutTests/imported/w3c/web-platform-tests/css/css-text-decor/parsing/text-decoration-valid-expected.txt -13 / +13 lines
Lines 1-17 a/LayoutTests/imported/w3c/web-platform-tests/css/css-text-decor/parsing/text-decoration-valid-expected.txt_sec1
1
1
2
PASS e.style['text-decoration'] = "none" should set the property value
2
PASS e.style['text-decoration'] = "none" should set the property value
3
PASS e.style['text-decoration'] = "line-through" should set the property value
3
PASS e.style['text-decoration'] = "line-through" should set the property value
4
FAIL e.style['text-decoration'] = "solid" should set the property value assert_not_equals: property should be set got disallowed value ""
4
FAIL e.style['text-decoration'] = "solid" should set the property value assert_equals: serialization should be canonical expected "none" but got "solid"
5
FAIL e.style['text-decoration'] = "currentcolor" should set the property value assert_not_equals: property should be set got disallowed value ""
5
FAIL e.style['text-decoration'] = "currentcolor" should set the property value assert_equals: serialization should be canonical expected "none" but got "currentcolor"
6
FAIL e.style['text-decoration'] = "auto" should set the property value assert_not_equals: property should be set got disallowed value ""
6
FAIL e.style['text-decoration'] = "auto" should set the property value assert_equals: serialization should be canonical expected "none" but got "auto"
7
FAIL e.style['text-decoration'] = "from-font" should set the property value assert_not_equals: property should be set got disallowed value ""
7
PASS e.style['text-decoration'] = "from-font" should set the property value
8
FAIL e.style['text-decoration'] = "10px" should set the property value assert_not_equals: property should be set got disallowed value ""
8
PASS e.style['text-decoration'] = "10px" should set the property value
9
FAIL e.style['text-decoration'] = "double overline underline" should set the property value assert_not_equals: property should be set got disallowed value ""
9
FAIL e.style['text-decoration'] = "double overline underline" should set the property value assert_equals: serialization should be canonical expected "underline overline double" but got "overline underline double"
10
FAIL e.style['text-decoration'] = "underline overline line-through red" should set the property value assert_not_equals: property should be set got disallowed value ""
10
PASS e.style['text-decoration'] = "underline overline line-through red" should set the property value
11
FAIL e.style['text-decoration'] = "rgba(10, 20, 30, 0.4) dotted" should set the property value assert_not_equals: property should be set got disallowed value ""
11
PASS e.style['text-decoration'] = "rgba(10, 20, 30, 0.4) dotted" should set the property value
12
FAIL e.style['text-decoration'] = "overline green from-font" should set the property value assert_not_equals: property should be set got disallowed value ""
12
PASS e.style['text-decoration'] = "overline green from-font" should set the property value
13
FAIL e.style['text-decoration'] = "underline dashed green" should set the property value assert_not_equals: property should be set got disallowed value ""
13
PASS e.style['text-decoration'] = "underline dashed green" should set the property value
14
FAIL e.style['text-decoration'] = "underline auto" should set the property value assert_not_equals: property should be set got disallowed value ""
14
FAIL e.style['text-decoration'] = "underline auto" should set the property value assert_equals: serialization should be canonical expected "underline" but got "underline auto"
15
FAIL e.style['text-decoration'] = "line-through 20px" should set the property value assert_not_equals: property should be set got disallowed value ""
15
PASS e.style['text-decoration'] = "line-through 20px" should set the property value
16
FAIL e.style['text-decoration'] = "overline 3em" should set the property value assert_not_equals: property should be set got disallowed value ""
16
PASS e.style['text-decoration'] = "overline 3em" should set the property value
17
17
- a/LayoutTests/imported/w3c/web-platform-tests/css/css-text-decor/text-decoration-serialization.tentative-expected.txt -1 / +1 lines
Lines 1-3 a/LayoutTests/imported/w3c/web-platform-tests/css/css-text-decor/text-decoration-serialization.tentative-expected.txt_sec1
1
1
2
FAIL text-decoration shorthand serialization assert_equals: expected "underline rgb(0, 0, 0)" but got "underline"
2
PASS text-decoration shorthand serialization
3
3
- a/Source/WebCore/animation/CSSPropertyAnimation.cpp -1 lines
Lines 3639-3645 CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap() a/Source/WebCore/animation/CSSPropertyAnimation.cpp_sec1
3639
        case CSSPropertyWebkitTapHighlightColor:
3639
        case CSSPropertyWebkitTapHighlightColor:
3640
#endif
3640
#endif
3641
        case CSSPropertyWebkitTextCombine:
3641
        case CSSPropertyWebkitTextCombine:
3642
        case CSSPropertyWebkitTextDecoration:
3643
        case CSSPropertyWebkitTextDecorationsInEffect:
3642
        case CSSPropertyWebkitTextDecorationsInEffect:
3644
        case CSSPropertyWebkitTextSecurity:
3643
        case CSSPropertyWebkitTextSecurity:
3645
        case CSSPropertyWebkitTextStroke:
3644
        case CSSPropertyWebkitTextStroke:
- a/Source/WebCore/css/CSSComputedStyleDeclaration.cpp -4 / +32 lines
Lines 3385-3396 RefPtr<CSSValue> ComputedStyleExtractor::valueForPropertyInStyle(const RenderSty a/Source/WebCore/css/CSSComputedStyleDeclaration.cpp_sec1
3385
            return cssValuePool.createValue(style.textAlign());
3385
            return cssValuePool.createValue(style.textAlign());
3386
        case CSSPropertyTextAlignLast:
3386
        case CSSPropertyTextAlignLast:
3387
            return cssValuePool.createValue(style.textAlignLast());
3387
            return cssValuePool.createValue(style.textAlignLast());
3388
        case CSSPropertyTextDecoration:
3389
            return renderTextDecorationLineFlagsToCSSValue(style.textDecorationLine());
3390
        case CSSPropertyTextJustify:
3388
        case CSSPropertyTextJustify:
3391
            return cssValuePool.createValue(style.textJustify());
3389
            return cssValuePool.createValue(style.textJustify());
3392
        case CSSPropertyWebkitTextDecoration:
3390
        case CSSPropertyTextDecoration:
3393
            return getCSSPropertyValuesForShorthandProperties(webkitTextDecorationShorthand());
3391
            return textDecorationShorthandValue(textDecorationShorthand(), style);
3394
        case CSSPropertyTextDecorationLine:
3392
        case CSSPropertyTextDecorationLine:
3395
            return renderTextDecorationLineFlagsToCSSValue(style.textDecorationLine());
3393
            return renderTextDecorationLineFlagsToCSSValue(style.textDecorationLine());
3396
        case CSSPropertyTextDecorationStyle:
3394
        case CSSPropertyTextDecorationStyle:
Lines 4299-4304 Ref<CSSValueList> ComputedStyleExtractor::getCSSPropertyValuesForGridShorthand(c a/Source/WebCore/css/CSSComputedStyleDeclaration.cpp_sec2
4299
    return list;
4297
    return list;
4300
}
4298
}
4301
4299
4300
Ref<CSSValueList> ComputedStyleExtractor::textDecorationShorthandValue(const StylePropertyShorthand& shorthand, const RenderStyle& style)
4301
{
4302
    auto list = CSSValueList::createSpaceSeparated();
4303
    for (size_t i = 0; i < shorthand.length(); ++i) {
4304
        auto property = shorthand.properties()[i];
4305
        switch (property) {
4306
        case CSSPropertyTextDecorationColor:
4307
            list->append(propertyValue(property, DoNotUpdateLayout).releaseNonNull());
4308
            break;
4309
        // For backwards compat, omit default values of longhand values
4310
        case CSSPropertyTextDecorationLine:
4311
            if (style.textDecorationLine() != RenderStyle::initialTextDecorationLine())
4312
                list->append(propertyValue(property, DoNotUpdateLayout).releaseNonNull());
4313
            break;
4314
        case CSSPropertyTextDecorationThickness:
4315
            if (style.textDecorationThickness() != RenderStyle::initialTextDecorationThickness())
4316
                list->append(propertyValue(property, DoNotUpdateLayout).releaseNonNull());
4317
            break;
4318
        case CSSPropertyTextDecorationStyle:
4319
            if (style.textDecorationStyle() != RenderStyle::initialTextDecorationStyle())
4320
                list->append(propertyValue(property, DoNotUpdateLayout).releaseNonNull());
4321
            break;
4322
        default:
4323
            ASSERT_NOT_REACHED();
4324
            break;
4325
        }
4326
    }
4327
    return list;
4328
}
4329
4302
Ref<MutableStyleProperties> ComputedStyleExtractor::copyPropertiesInSet(const CSSPropertyID* set, unsigned length)
4330
Ref<MutableStyleProperties> ComputedStyleExtractor::copyPropertiesInSet(const CSSPropertyID* set, unsigned length)
4303
{
4331
{
4304
    Vector<CSSProperty> list;
4332
    Vector<CSSProperty> list;
- a/Source/WebCore/css/CSSComputedStyleDeclaration.h +1 lines
Lines 101-106 private: a/Source/WebCore/css/CSSComputedStyleDeclaration.h_sec1
101
    Ref<CSSValue> getMaskShorthandValue();
101
    Ref<CSSValue> getMaskShorthandValue();
102
    Ref<CSSValueList> getCSSPropertyValuesForGridShorthand(const StylePropertyShorthand&);
102
    Ref<CSSValueList> getCSSPropertyValuesForGridShorthand(const StylePropertyShorthand&);
103
    Ref<CSSValue> fontVariantShorthandValue();
103
    Ref<CSSValue> fontVariantShorthandValue();
104
    Ref<CSSValueList> textDecorationShorthandValue(const StylePropertyShorthand&, const RenderStyle&);
104
105
105
    RefPtr<Element> m_element;
106
    RefPtr<Element> m_element;
106
    PseudoId m_pseudoElementSpecifier;
107
    PseudoId m_pseudoElementSpecifier;
- a/Source/WebCore/css/CSSProperties.json -25 / +15 lines
Lines 4590-4606 a/Source/WebCore/css/CSSProperties.json_sec1
4590
                "url": "https://www.w3.org/TR/SVG/text.html#TextAnchorProperty"
4590
                "url": "https://www.w3.org/TR/SVG/text.html#TextAnchorProperty"
4591
            }
4591
            }
4592
        },
4592
        },
4593
        "text-decoration": {
4594
            "codegen-properties": {
4595
                "longhands": [
4596
                    "text-decoration-line"
4597
                ]
4598
            },
4599
            "specification": {
4600
                "category": "css-22",
4601
                "url": "https://www.w3.org/TR/CSS2/text.html#propdef-text-decoration"
4602
            }
4603
        },
4604
        "text-indent": {
4593
        "text-indent": {
4605
            "inherited": true,
4594
            "inherited": true,
4606
            "codegen-properties": {
4595
            "codegen-properties": {
Lines 6841-6860 a/Source/WebCore/css/CSSProperties.json_sec2
6841
                "url": "https://www.w3.org/TR/css-writing-modes-3/#propdef-direction"
6830
                "url": "https://www.w3.org/TR/css-writing-modes-3/#propdef-direction"
6842
            }
6831
            }
6843
        },
6832
        },
6844
        "-webkit-text-decoration": {
6833
        "text-decoration": {
6845
            "codegen-properties": {
6834
            "codegen-properties": {
6846
                "longhands": [
6835
                "longhands": [
6847
                    "text-decoration-line",
6836
                    "text-decoration-line",
6837
                    "text-decoration-thickness",
6848
                    "text-decoration-style",
6838
                    "text-decoration-style",
6849
                    "text-decoration-color"
6839
                    "text-decoration-color"
6840
                ],
6841
                "aliases": [
6842
                    "-webkit-text-decoration"
6850
                ]
6843
                ]
6851
            },
6844
            },
6852
            "status": {
6853
                "status": "experimental"
6854
            },
6855
            "specification": {
6845
            "specification": {
6856
                "category": "css-text-decor",
6846
                "category": "css-text-decor",
6857
                "url": "https://www.w3.org/TR/css-text-decor-3/#text-decoration"
6847
                "url": "https://drafts.csswg.org/css-text-decor-4/#text-decoration-property"
6858
            }
6848
            }
6859
        },
6849
        },
6860
        "text-decoration-line": {
6850
        "text-decoration-line": {
Lines 6937-6942 a/Source/WebCore/css/CSSProperties.json_sec3
6937
                "url": "https://drafts.csswg.org/css-text-decor-4/#text-decoration-skip-ink-property"
6927
                "url": "https://drafts.csswg.org/css-text-decor-4/#text-decoration-skip-ink-property"
6938
            }
6928
            }
6939
        },
6929
        },
6930
        "text-decoration-thickness": {
6931
            "codegen-properties": {
6932
                "converter": "TextDecorationThickness"
6933
            },
6934
            "specification": {
6935
                "category": "css-text-decor",
6936
                "url": "https://www.w3.org/TR/css-text-decor-4/#text-decoration-thickness"
6937
            }
6938
        },
6940
        "text-underline-position": {
6939
        "text-underline-position": {
6941
            "codegen-properties": {
6940
            "codegen-properties": {
6942
                "aliases": [
6941
                "aliases": [
Lines 6959-6973 a/Source/WebCore/css/CSSProperties.json_sec4
6959
                "url": "https://www.w3.org/TR/css-text-decor-4/#underline-offset"
6958
                "url": "https://www.w3.org/TR/css-text-decor-4/#underline-offset"
6960
            }
6959
            }
6961
        },
6960
        },
6962
        "text-decoration-thickness": {
6963
            "codegen-properties": {
6964
                "converter": "TextDecorationThickness"
6965
            },
6966
            "specification": {
6967
                "category": "css-text-decor",
6968
                "url": "https://www.w3.org/TR/css-text-decor-4/#text-decoration-thickness"
6969
            }
6970
        },
6971
        "-webkit-text-decorations-in-effect": {
6961
        "-webkit-text-decorations-in-effect": {
6972
            "inherited": true,
6962
            "inherited": true,
6973
            "codegen-properties": {
6963
            "codegen-properties": {
- a/Source/WebCore/css/StyleProperties.cpp -6 / +9 lines
Lines 305-316 String StyleProperties::getPropertyValue(CSSPropertyID propertyID, Document* doc a/Source/WebCore/css/StyleProperties.cpp_sec1
305
        return fontValue();
305
        return fontValue();
306
    case CSSPropertyFontVariant:
306
    case CSSPropertyFontVariant:
307
        return fontVariantValue();
307
        return fontVariantValue();
308
    case CSSPropertyTextDecoration:
308
    case CSSPropertyTextDecoration: {
309
        if (auto line = getPropertyCSSValue(CSSPropertyTextDecorationLine))
309
        auto lineValue = getPropertyCSSValue(CSSPropertyTextDecorationLine);
310
            return line->cssText();
310
        if (is<CSSPrimitiveValue>(lineValue) && downcast<CSSPrimitiveValue>(*lineValue).valueID() == CSSValueNone)
311
        return String();
311
            return lineValue->cssText();
312
    case CSSPropertyWebkitTextDecoration:
312
        return getShorthandValue(textDecorationShorthand());
313
        return getShorthandValue(webkitTextDecorationShorthand());
313
    }
314
    case CSSPropertyTextDecorationSkip:
314
    case CSSPropertyTextDecorationSkip:
315
        return textDecorationSkipValue();
315
        return textDecorationSkipValue();
316
    case CSSPropertyInset:
316
    case CSSPropertyInset:
Lines 1684-1690 StringBuilder StyleProperties::asTextInternal() const a/Source/WebCore/css/StyleProperties.cpp_sec2
1684
            case CSSPropertyScrollPaddingInlineEnd:
1684
            case CSSPropertyScrollPaddingInlineEnd:
1685
                shorthandPropertyID = CSSPropertyScrollPaddingInline;
1685
                shorthandPropertyID = CSSPropertyScrollPaddingInline;
1686
                break;
1686
                break;
1687
            case CSSPropertyTextDecorationColor:
1687
            case CSSPropertyTextDecorationLine:
1688
            case CSSPropertyTextDecorationLine:
1689
            case CSSPropertyTextDecorationStyle:
1690
            case CSSPropertyTextDecorationThickness:
1688
                shorthandPropertyID = CSSPropertyTextDecoration;
1691
                shorthandPropertyID = CSSPropertyTextDecoration;
1689
                break;
1692
                break;
1690
            case CSSPropertyTransitionProperty:
1693
            case CSSPropertyTransitionProperty:
- a/Source/WebCore/css/parser/CSSPropertyParser.cpp -11 / +2 lines
Lines 6387-6403 bool CSSPropertyParser::parseShorthand(CSSPropertyID property, bool important) a/Source/WebCore/css/parser/CSSPropertyParser.cpp_sec1
6387
        return consumeAnimationShorthand(animationShorthandForParsing(), important);
6387
        return consumeAnimationShorthand(animationShorthandForParsing(), important);
6388
    case CSSPropertyTransition:
6388
    case CSSPropertyTransition:
6389
        return consumeAnimationShorthand(transitionShorthandForParsing(), important);
6389
        return consumeAnimationShorthand(transitionShorthandForParsing(), important);
6390
    case CSSPropertyTextDecoration: {
6390
    case CSSPropertyTextDecoration:
6391
        auto line = consumeTextDecorationLine(m_range);
6391
        return consumeShorthandGreedily(textDecorationShorthand(), important);
6392
        if (!line || !m_range.atEnd())
6393
            return false;
6394
        addProperty(CSSPropertyTextDecorationLine, property, line.releaseNonNull(), important);
6395
        return true;
6396
    }
6397
    case CSSPropertyWebkitTextDecoration:
6398
        // FIXME-NEWPARSER: We need to unprefix -line/-style/-color ASAP and get rid
6399
        // of -webkit-text-decoration completely.
6400
        return consumeShorthandGreedily(webkitTextDecorationShorthand(), important);
6401
    case CSSPropertyInset:
6392
    case CSSPropertyInset:
6402
        return consume4ValueShorthand(insetShorthand(), important);
6393
        return consume4ValueShorthand(insetShorthand(), important);
6403
    case CSSPropertyInsetBlock:
6394
    case CSSPropertyInsetBlock:
- a/Source/WebCore/editing/EditingStyle.cpp -23 / +55 lines
Lines 57-62 a/Source/WebCore/editing/EditingStyle.cpp_sec1
57
#include "SimpleRange.h"
57
#include "SimpleRange.h"
58
#include "StyleFontSizeFunctions.h"
58
#include "StyleFontSizeFunctions.h"
59
#include "StyleProperties.h"
59
#include "StyleProperties.h"
60
#include "StylePropertyShorthand.h"
60
#include "StyleResolver.h"
61
#include "StyleResolver.h"
61
#include "StyleRule.h"
62
#include "StyleRule.h"
62
#include "StyledElement.h"
63
#include "StyledElement.h"
Lines 96-105 static const CSSPropertyID editingProperties[] = { a/Source/WebCore/editing/EditingStyle.cpp_sec2
96
    // Non-inheritable properties
97
    // Non-inheritable properties
97
    CSSPropertyBackgroundColor,
98
    CSSPropertyBackgroundColor,
98
    CSSPropertyTextDecorationLine,
99
    CSSPropertyTextDecorationLine,
100
    CSSPropertyTextDecorationThickness,
101
    CSSPropertyTextDecorationStyle,
102
    CSSPropertyTextDecorationColor,
99
};
103
};
100
104
101
const unsigned numAllEditingProperties = WTF_ARRAY_LENGTH(editingProperties);
105
const unsigned numAllEditingProperties = WTF_ARRAY_LENGTH(editingProperties);
102
const unsigned numInheritableEditingProperties = numAllEditingProperties - 2;
106
const unsigned numInheritableEditingProperties = numAllEditingProperties - 5;
103
107
104
enum EditingPropertiesToInclude { OnlyInheritableEditingProperties, AllEditingProperties };
108
enum EditingPropertiesToInclude { OnlyInheritableEditingProperties, AllEditingProperties };
105
template <class StyleDeclarationType>
109
template <class StyleDeclarationType>
Lines 221-227 void HTMLElementEquivalent::addToStyle(Element*, EditingStyle* style) const a/Source/WebCore/editing/EditingStyle.cpp_sec3
221
class HTMLTextDecorationEquivalent : public HTMLElementEquivalent {
225
class HTMLTextDecorationEquivalent : public HTMLElementEquivalent {
222
public:
226
public:
223
    HTMLTextDecorationEquivalent(CSSValueID primitiveValue, const QualifiedName& tagName)
227
    HTMLTextDecorationEquivalent(CSSValueID primitiveValue, const QualifiedName& tagName)
224
        : HTMLElementEquivalent(CSSPropertyTextDecorationLine, primitiveValue, tagName)
228
        : HTMLElementEquivalent(CSSPropertyTextDecoration, primitiveValue, tagName)
225
        , m_isUnderline(primitiveValue == CSSValueUnderline)
229
        , m_isUnderline(primitiveValue == CSSValueUnderline)
226
    {
230
    {
227
    }
231
    }
Lines 516-522 void EditingStyle::init(Node* node, PropertiesToInclude propertiesToInclude) a/Source/WebCore/editing/EditingStyle.cpp_sec4
516
        if (RefPtr<CSSValue> value = backgroundColorInEffect(node))
520
        if (RefPtr<CSSValue> value = backgroundColorInEffect(node))
517
            m_mutableStyle->setProperty(CSSPropertyBackgroundColor, value->cssText());
521
            m_mutableStyle->setProperty(CSSPropertyBackgroundColor, value->cssText());
518
        if (RefPtr<CSSValue> value = computedStyleAtPosition.propertyValue(CSSPropertyWebkitTextDecorationsInEffect)) {
522
        if (RefPtr<CSSValue> value = computedStyleAtPosition.propertyValue(CSSPropertyWebkitTextDecorationsInEffect)) {
519
            m_mutableStyle->setProperty(CSSPropertyTextDecorationLine, value->cssText());
523
            m_mutableStyle->setProperty(CSSPropertyTextDecoration, value->cssText());
520
            m_mutableStyle->removeProperty(CSSPropertyWebkitTextDecorationsInEffect);
524
            m_mutableStyle->removeProperty(CSSPropertyWebkitTextDecorationsInEffect);
521
        }
525
        }
522
    }
526
    }
Lines 601-609 Ref<MutableStyleProperties> EditingStyle::styleWithResolvedTextDecorations() con a/Source/WebCore/editing/EditingStyle.cpp_sec5
601
        valueList->append(CSSValuePool::singleton().createIdentifierValue(CSSValueLineThrough));
605
        valueList->append(CSSValuePool::singleton().createIdentifierValue(CSSValueLineThrough));
602
606
603
    if (valueList->length())
607
    if (valueList->length())
604
        style->setProperty(CSSPropertyTextDecorationLine, valueList.ptr());
608
        style->setProperty(CSSPropertyTextDecoration, valueList->cssText());
605
    else
609
    else
606
        style->setProperty(CSSPropertyTextDecorationLine, CSSValuePool::singleton().createIdentifierValue(CSSValueNone));
610
        style->setProperty(CSSPropertyTextDecoration, CSSValuePool::singleton().createIdentifierValue(CSSValueNone));
607
611
608
    return style;
612
    return style;
609
}
613
}
Lines 785-793 void EditingStyle::collapseTextDecorationProperties() a/Source/WebCore/editing/EditingStyle.cpp_sec6
785
        return;
789
        return;
786
790
787
    if (textDecorationsInEffect->isValueList())
791
    if (textDecorationsInEffect->isValueList())
788
        m_mutableStyle->setProperty(CSSPropertyTextDecorationLine, textDecorationsInEffect->cssText(), m_mutableStyle->propertyIsImportant(CSSPropertyTextDecorationLine));
792
        m_mutableStyle->setProperty(CSSPropertyTextDecoration, textDecorationsInEffect->cssText(), m_mutableStyle->propertyIsImportant(CSSPropertyTextDecorationLine));
789
    else
793
    else
790
        m_mutableStyle->removeProperty(CSSPropertyTextDecorationLine);
794
        m_mutableStyle->removeProperty(CSSPropertyTextDecoration);
791
    m_mutableStyle->removeProperty(CSSPropertyWebkitTextDecorationsInEffect);
795
    m_mutableStyle->removeProperty(CSSPropertyWebkitTextDecorationsInEffect);
792
}
796
}
793
797
Lines 902-914 bool EditingStyle::conflictsWithInlineStyleOfElement(StyledElement& element, Ref a/Source/WebCore/editing/EditingStyle.cpp_sec7
902
            if (extractedValueList->length()) {
906
            if (extractedValueList->length()) {
903
                conflicts = true;
907
                conflicts = true;
904
                if (newValueList->length())
908
                if (newValueList->length())
905
                    newInlineStyle->setProperty(CSSPropertyTextDecorationLine, WTFMove(newValueList));
909
                    newInlineStyle->setProperty(CSSPropertyTextDecoration, WTFMove(newValueList));
906
                else
910
                else
907
                    newInlineStyle->removeProperty(CSSPropertyTextDecorationLine);
911
                    newInlineStyle->removeProperty(CSSPropertyTextDecorationLine);
908
912
909
                if (extractedStyle) {
913
                if (extractedStyle) {
910
                    bool isImportant = inlineStyle->propertyIsImportant(CSSPropertyTextDecorationLine);
914
                    bool isImportant = inlineStyle->propertyIsImportant(CSSPropertyTextDecorationLine);
911
                    extractedStyle->setProperty(CSSPropertyTextDecorationLine, extractedValueList->cssText(), isImportant);
915
                    extractedStyle->setProperty(CSSPropertyTextDecoration, extractedValueList->cssText(), isImportant);
912
                }
916
                }
913
            }
917
            }
914
        }
918
        }
Lines 926-934 bool EditingStyle::conflictsWithInlineStyleOfElement(StyledElement& element, Ref a/Source/WebCore/editing/EditingStyle.cpp_sec8
926
            if (!newInlineStyle)
930
            if (!newInlineStyle)
927
                return true;
931
                return true;
928
            conflicts = true;
932
            conflicts = true;
929
            newInlineStyle->removeProperty(CSSPropertyTextDecorationLine);
933
            newInlineStyle->removeProperty(CSSPropertyTextDecoration);
930
            if (extractedStyle)
934
            if (extractedStyle)
931
                extractedStyle->setProperty(CSSPropertyTextDecorationLine, inlineStyle->getPropertyValue(CSSPropertyTextDecorationLine), inlineStyle->propertyIsImportant(CSSPropertyTextDecorationLine));
935
                extractedStyle->setProperty(CSSPropertyTextDecoration, inlineStyle->getPropertyValue(CSSPropertyTextDecorationLine), inlineStyle->propertyIsImportant(CSSPropertyTextDecorationLine));
932
        }
936
        }
933
937
934
        if (!inlineStyle->getPropertyCSSValue(propertyID))
938
        if (!inlineStyle->getPropertyCSSValue(propertyID))
Lines 1469-1477 template<typename T> a/Source/WebCore/editing/EditingStyle.cpp_sec9
1469
void EditingStyle::removeEquivalentProperties(T& style)
1473
void EditingStyle::removeEquivalentProperties(T& style)
1470
{
1474
{
1471
    Vector<CSSPropertyID> propertiesToRemove;
1475
    Vector<CSSPropertyID> propertiesToRemove;
1476
    HashSet<CSSPropertyID> alreadyHandled;
1472
    for (auto& property : m_mutableStyle->m_propertyVector) {
1477
    for (auto& property : m_mutableStyle->m_propertyVector) {
1473
        if (style.propertyMatches(property.id(), property.value()))
1478
        CSSPropertyID id = property.id();
1479
        if (alreadyHandled.contains(id))
1480
            continue;
1481
        if (!style.propertyMatches(id, property.value()))
1482
            continue;
1483
        if (!property.isSetFromShorthand()) {
1474
            propertiesToRemove.append(property.id());
1484
            propertiesToRemove.append(property.id());
1485
            continue;
1486
        }
1487
        // Do not remove equivalent properties when they share a shorthand with non-equivalent ones, and the removal would prevent them from being serialized with the shorthand.
1488
        CSSPropertyID shorthandID = property.shorthandID();
1489
        if (m_mutableStyle->getPropertyValue(shorthandID).isEmpty()) {
1490
                propertiesToRemove.append(property.id());
1491
            continue;
1492
        }
1493
        auto shorthand = shorthandForProperty(shorthandID);
1494
        bool canRemoveAllLonghands = true;
1495
        for (CSSPropertyID longhandID : shorthand) {
1496
            if (id != longhandID && !style.propertyMatches(longhandID, m_mutableStyle->getPropertyCSSValue(longhandID).get())) {
1497
                canRemoveAllLonghands = false;
1498
                break;
1499
            }
1500
        }
1501
        for (CSSPropertyID longhandID : shorthand) {
1502
            if (canRemoveAllLonghands)
1503
                propertiesToRemove.append(longhandID);
1504
            alreadyHandled.add(longhandID);
1505
        }
1475
    }
1506
    }
1476
    // FIXME: This should use mass removal.
1507
    // FIXME: This should use mass removal.
1477
    for (auto& property : propertiesToRemove)
1508
    for (auto& property : propertiesToRemove)
Lines 1698-1711 static void reconcileTextDecorationProperties(MutableStyleProperties* style) a/Source/WebCore/editing/EditingStyle.cpp_sec10
1698
    // We shouldn't have both text-decoration and -webkit-text-decorations-in-effect because that wouldn't make sense.
1729
    // We shouldn't have both text-decoration and -webkit-text-decorations-in-effect because that wouldn't make sense.
1699
    ASSERT(!textDecorationsInEffect || !textDecoration);
1730
    ASSERT(!textDecorationsInEffect || !textDecoration);
1700
    if (textDecorationsInEffect) {
1731
    if (textDecorationsInEffect) {
1701
        style->setProperty(CSSPropertyTextDecorationLine, textDecorationsInEffect->cssText());
1732
        style->setProperty(CSSPropertyTextDecoration, textDecorationsInEffect->cssText());
1702
        style->removeProperty(CSSPropertyWebkitTextDecorationsInEffect);
1733
        style->removeProperty(CSSPropertyWebkitTextDecorationsInEffect);
1703
        textDecoration = textDecorationsInEffect;
1734
        textDecoration = textDecorationsInEffect;
1704
    }
1735
    }
1705
1736
1706
    // If text-decoration is set to "none", remove the property because we don't want to add redundant "text-decoration: none".
1737
    // If text-decoration is set to "none", remove the property because we don't want to add redundant "text-decoration: none".
1707
    if (textDecoration && !textDecoration->isValueList())
1738
    if (textDecoration && !textDecoration->isValueList())
1708
        style->removeProperty(CSSPropertyTextDecorationLine);
1739
        style->removeProperty(CSSPropertyTextDecoration);
1709
}
1740
}
1710
1741
1711
StyleChange::StyleChange(EditingStyle* style, const Position& position)
1742
StyleChange::StyleChange(EditingStyle* style, const Position& position)
Lines 1759-1765 StyleChange::StyleChange(EditingStyle* style, const Position& position) a/Source/WebCore/editing/EditingStyle.cpp_sec11
1759
                valueList->append(WTFMove(underline));
1790
                valueList->append(WTFMove(underline));
1760
            if (shouldAddStrikeThrough && !hasLineThrough)
1791
            if (shouldAddStrikeThrough && !hasLineThrough)
1761
                valueList->append(WTFMove(lineThrough));
1792
                valueList->append(WTFMove(lineThrough));
1762
            mutableStyle->setProperty(CSSPropertyTextDecorationLine, valueList.get());
1793
            mutableStyle->setProperty(CSSPropertyTextDecoration, valueList->cssText());
1763
        } else {
1794
        } else {
1764
            m_applyUnderline = shouldAddUnderline && !hasUnderline;
1795
            m_applyUnderline = shouldAddUnderline && !hasUnderline;
1765
            m_applyLineThrough = shouldAddStrikeThrough && !hasLineThrough;
1796
            m_applyLineThrough = shouldAddStrikeThrough && !hasLineThrough;
Lines 1798-1806 bool StyleChange::operator==(const StyleChange& other) a/Source/WebCore/editing/EditingStyle.cpp_sec12
1798
1829
1799
static void setTextDecorationProperty(MutableStyleProperties& style, const CSSValueList* newTextDecoration, CSSPropertyID propertyID)
1830
static void setTextDecorationProperty(MutableStyleProperties& style, const CSSValueList* newTextDecoration, CSSPropertyID propertyID)
1800
{
1831
{
1801
    if (newTextDecoration->length())
1832
    if (newTextDecoration->length()) {
1802
        style.setProperty(propertyID, newTextDecoration->cssText(), style.propertyIsImportant(propertyID));
1833
        bool isImportant = style.propertyIsImportant(propertyID == CSSPropertyTextDecoration ? CSSPropertyTextDecorationLine : propertyID);
1803
    else {
1834
        style.setProperty(propertyID, newTextDecoration->cssText(), isImportant);
1835
    } else {
1804
        // text-decoration: none is redundant since it does not remove any text decorations.
1836
        // text-decoration: none is redundant since it does not remove any text decorations.
1805
        style.removeProperty(propertyID);
1837
        style.removeProperty(propertyID);
1806
    }
1838
    }
Lines 1834-1840 void StyleChange::extractTextStyles(Document& document, MutableStyleProperties& a/Source/WebCore/editing/EditingStyle.cpp_sec13
1834
            m_applyLineThrough = true;
1866
            m_applyLineThrough = true;
1835
1867
1836
        // If trimTextDecorations, delete underline and line-through
1868
        // If trimTextDecorations, delete underline and line-through
1837
        setTextDecorationProperty(style, newTextDecoration.get(), CSSPropertyTextDecorationLine);
1869
        setTextDecorationProperty(style, newTextDecoration.get(), CSSPropertyTextDecoration);
1838
    }
1870
    }
1839
1871
1840
    int verticalAlign = identifierForStyleProperty(style, CSSPropertyVerticalAlign);
1872
    int verticalAlign = identifierForStyleProperty(style, CSSPropertyVerticalAlign);
Lines 1872-1880 void StyleChange::extractTextStyles(Document& document, MutableStyleProperties& a/Source/WebCore/editing/EditingStyle.cpp_sec14
1872
    }
1904
    }
1873
}
1905
}
1874
1906
1875
static void diffTextDecorations(MutableStyleProperties& style, CSSPropertyID propertID, CSSValue* refTextDecoration)
1907
static void diffTextDecorations(MutableStyleProperties& style, CSSPropertyID propertyID, CSSValue* refTextDecoration)
1876
{
1908
{
1877
    RefPtr<CSSValue> textDecoration = style.getPropertyCSSValue(propertID);
1909
    RefPtr<CSSValue> textDecoration = style.getPropertyCSSValue(propertyID == CSSPropertyTextDecoration ? CSSPropertyTextDecorationLine : propertyID);
1878
    if (!is<CSSValueList>(textDecoration) || !is<CSSValueList>(refTextDecoration))
1910
    if (!is<CSSValueList>(textDecoration) || !is<CSSValueList>(refTextDecoration))
1879
        return;
1911
        return;
1880
1912
Lines 1883-1889 static void diffTextDecorations(MutableStyleProperties& style, CSSPropertyID pro a/Source/WebCore/editing/EditingStyle.cpp_sec15
1883
    for (auto& value :  downcast<CSSValueList>(*refTextDecoration))
1915
    for (auto& value :  downcast<CSSValueList>(*refTextDecoration))
1884
        newTextDecoration->removeAll(&value.get());
1916
        newTextDecoration->removeAll(&value.get());
1885
1917
1886
    setTextDecorationProperty(style, newTextDecoration.get(), propertID);
1918
    setTextDecorationProperty(style, newTextDecoration.get(), propertyID);
1887
}
1919
}
1888
1920
1889
template<typename T>
1921
template<typename T>
Lines 1902-1908 static Ref<MutableStyleProperties> extractPropertiesNotIn(StyleProperties& style a/Source/WebCore/editing/EditingStyle.cpp_sec16
1902
    Ref<MutableStyleProperties> mutableStyle = *result->style();
1934
    Ref<MutableStyleProperties> mutableStyle = *result->style();
1903
1935
1904
    RefPtr<CSSValue> baseTextDecorationsInEffect = extractPropertyValue(baseStyle, CSSPropertyWebkitTextDecorationsInEffect);
1936
    RefPtr<CSSValue> baseTextDecorationsInEffect = extractPropertyValue(baseStyle, CSSPropertyWebkitTextDecorationsInEffect);
1905
    diffTextDecorations(mutableStyle, CSSPropertyTextDecorationLine, baseTextDecorationsInEffect.get());
1937
    diffTextDecorations(mutableStyle, CSSPropertyTextDecoration, baseTextDecorationsInEffect.get());
1906
    diffTextDecorations(mutableStyle, CSSPropertyWebkitTextDecorationsInEffect, baseTextDecorationsInEffect.get());
1938
    diffTextDecorations(mutableStyle, CSSPropertyWebkitTextDecorationsInEffect, baseTextDecorationsInEffect.get());
1907
1939
1908
    if (extractPropertyValue(baseStyle, CSSPropertyFontWeight) && fontWeightIsBold(mutableStyle) == fontWeightIsBold(baseStyle))
1940
    if (extractPropertyValue(baseStyle, CSSPropertyFontWeight) && fontWeightIsBold(mutableStyle) == fontWeightIsBold(baseStyle))
- a/Source/WebCore/editing/markup.cpp -2 / +1 lines
Lines 938-944 static String serializePreservingVisualAppearanceInternal(const Position& start, a/Source/WebCore/editing/markup.cpp_sec1
938
                    // This assertion is caused at least when we select all text of a <body> element whose
938
                    // This assertion is caused at least when we select all text of a <body> element whose
939
                    // 'text-decoration' property is "inherit", and copy it.
939
                    // 'text-decoration' property is "inherit", and copy it.
940
                    if (!propertyMissingOrEqualToNone(fullySelectedRootStyle->style(), CSSPropertyTextDecorationLine))
940
                    if (!propertyMissingOrEqualToNone(fullySelectedRootStyle->style(), CSSPropertyTextDecorationLine))
941
                        fullySelectedRootStyle->style()->setProperty(CSSPropertyTextDecorationLine, CSSValueNone);
941
                        fullySelectedRootStyle->style()->setProperty(CSSPropertyTextDecoration, CSSValueNone);
942
                    if (!propertyMissingOrEqualToNone(fullySelectedRootStyle->style(), CSSPropertyWebkitTextDecorationsInEffect))
942
                    if (!propertyMissingOrEqualToNone(fullySelectedRootStyle->style(), CSSPropertyWebkitTextDecorationsInEffect))
943
                        fullySelectedRootStyle->style()->setProperty(CSSPropertyWebkitTextDecorationsInEffect, CSSValueNone);
943
                        fullySelectedRootStyle->style()->setProperty(CSSPropertyWebkitTextDecorationsInEffect, CSSValueNone);
944
                    accumulator.wrapWithStyleNode(fullySelectedRootStyle->style(), document, true);
944
                    accumulator.wrapWithStyleNode(fullySelectedRootStyle->style(), document, true);
945
- 

Return to Bug 230083