Improve border images

Respect CSS border-image-width.
Properly support gradients as a border-image-source.
Only emit a border item if the border-width is non-zero
for simple borders but still emit one if the item is
an image as paint worklet that are not drawn cause servo
to hang and fail tests.

Add a new test and mark 4 more as passing.
This commit is contained in:
Pyfisch 2018-09-04 21:19:59 +02:00
parent 41a2010ee7
commit fabb70f874
9 changed files with 272 additions and 163 deletions

View file

@ -106531,6 +106531,18 @@
{}
]
],
"css/css-backgrounds/border-image-width-008.html": [
[
"/css/css-backgrounds/border-image-width-008.html",
[
[
"/css/css-backgrounds/border-image-width-008-ref.html",
"=="
]
],
{}
]
],
"css/css-backgrounds/border-radius-001.xht": [
[
"/css/css-backgrounds/border-radius-001.xht",
@ -243889,6 +243901,11 @@
{}
]
],
"css/css-backgrounds/border-image-width-008-ref.html": [
[
{}
]
],
"css/css-backgrounds/border-radius-001-ref.xht": [
[
{}
@ -518585,6 +518602,14 @@
"61726c00873739c076812f72645d8324494ff44c",
"reftest"
],
"css/css-backgrounds/border-image-width-008-ref.html": [
"9a066443920726b79d69a0301d814b5211b7df0a",
"support"
],
"css/css-backgrounds/border-image-width-008.html": [
"a35c3f65c54ef34b8bd83b5c18f483302e607a26",
"reftest"
],
"css/css-backgrounds/border-images.html": [
"930a1df3b7fda4098f36cc9691a544f46e2311d5",
"visual"

View file

@ -1,3 +0,0 @@
[border-image-width-005.xht]
type: reftest
expected: FAIL

View file

@ -1,3 +0,0 @@
[border-image-width-006.xht]
type: reftest
expected: FAIL

View file

@ -1,4 +0,0 @@
[geometry-border-image-002.https.html]
type: reftest
expected: FAIL
bug: https://github.com/servo/servo/issues/17860

View file

@ -1,4 +0,0 @@
[geometry-border-image-003.https.html]
type: reftest
expected: FAIL
bug: https://github.com/servo/servo/issues/17860

View file

@ -0,0 +1,16 @@
<!DOCTYPE html>
<meta charset="utf-8">
<title>border-image with different widths</title>
<style>
#ref {
width: 360px;
height: 240px;
border-style: solid;
border-width: 40px 40px 20px 0px;
border-image-source: url("support/border.png");
border-image-slice: 27;
}
</style>
<body>
<div id="ref"></div>
</body>

View file

@ -0,0 +1,20 @@
<!DOCTYPE html>
<meta charset="utf-8">
<title>border-image-width has the same effect as a border-width and the image is displayed even if border-width is zero</title>
<link rel="match" href="border-image-width-008-ref.html">
<link rel="help" href="https://drafts.csswg.org/css-backgrounds-3/#propdef-border-image-width" />
<style>
#test {
width: 400px;
height: 300px;
border-style: solid;
/* Note: Chrome does not display an image if border-width is 0 */
border-width: 0px;
border-image-source: url("support/border.png");
border-image-width: 40px 40px 20px 0px;
border-image-slice: 27;
}
</style>
<body>
<div id="test"></div>
</body>