Unreviewed, rolling out r177223 and r177226.
https://bugs.webkit.org/show_bug.cgi?id=139631
Multiple tests are flakily asserting in
StyleResolver::loadPendingResources (Requested by ap_ on
#webkit).
Reverted changesets:
"[SVG Masking] Enable the use of <mask> elements for -webkit-
mask-image"
https://bugs.webkit.org/show_bug.cgi?id=139294
http://trac.webkit.org/changeset/177223
"animations/cross-fade-webkit-mask-image.html is flaky"
https://bugs.webkit.org/show_bug.cgi?id=139590
http://trac.webkit.org/changeset/177226
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@177266 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog
index 1fb7db3..f420c5a 100644
--- a/LayoutTests/ChangeLog
+++ b/LayoutTests/ChangeLog
@@ -1,3 +1,23 @@
+2014-12-14 Commit Queue <commit-queue@webkit.org>
+
+ Unreviewed, rolling out r177223 and r177226.
+ https://bugs.webkit.org/show_bug.cgi?id=139631
+
+ Multiple tests are flakily asserting in
+ StyleResolver::loadPendingResources (Requested by ap_ on
+ #webkit).
+
+ Reverted changesets:
+
+ "[SVG Masking] Enable the use of <mask> elements for -webkit-
+ mask-image"
+ https://bugs.webkit.org/show_bug.cgi?id=139294
+ http://trac.webkit.org/changeset/177223
+
+ "animations/cross-fade-webkit-mask-image.html is flaky"
+ https://bugs.webkit.org/show_bug.cgi?id=139590
+ http://trac.webkit.org/changeset/177226
+
2014-12-14 Chris Dumez <cdumez@apple.com>
fast/images/animated-gif-body-outside-viewport.html is flaky
diff --git a/LayoutTests/TestExpectations b/LayoutTests/TestExpectations
index a6a80b5..978ee5f 100644
--- a/LayoutTests/TestExpectations
+++ b/LayoutTests/TestExpectations
@@ -37,8 +37,6 @@
webkit.org/b/124349 fast/hidpi/image-srcset-relative-svg-canvas-2x.html [ ImageOnlyFailure ]
webkit.org/b/124349 fast/hidpi/image-srcset-relative-svg-canvas.html [ Pass ImageOnlyFailure ]
-webkit.org/b/139590 animations/cross-fade-webkit-mask-image.html [ Pass Failure ]
-
# The test frequently times out, and is just unsuccessful at detecting incorrect behavior when it passes.
webkit.org/b/72698 media/audio-garbage-collect.html [ Skip ]
diff --git a/LayoutTests/css3/masking/mask-base64-expected.html b/LayoutTests/css3/masking/mask-base64-expected.html
deleted file mode 100644
index b48a41d..0000000
--- a/LayoutTests/css3/masking/mask-base64-expected.html
+++ /dev/null
@@ -1,46 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
- <head>
- <style>
- p {
- margin: 0px;
- }
- #front {
- width: 200px;
- height: 160px;
- background-color: green;
- -webkit-mask-repeat: no-repeat;
- -webkit-mask-origin: content-box;
- -webkit-mask-clip: content-box;
- }
- </style>
- <script>
- var sizeX = 50, sizeY = 40, spaceX = 0, spaceY = 0, width = 200, height = 160;
-
- var urls = Array(), size = Array(), position = Array();
-
- function addMasks() {
- for (var x = 0; x < width; x += sizeX + spaceX) {
- for (var y = 0; y < height; y += sizeY + spaceY) {
- urls.push("url(resources/circle.svg)");
- size.push(sizeX + "px " + sizeY + "px");
- position.push(x + "px " + y + "px");
- }
- }
-
- div = document.getElementById("front");
-
- div.style.cssText += "-webkit-mask-image: " + urls.join(", ") + ";" +
- "-webkit-mask-size: " + size.join(", ") + ";" +
- "-webkit-mask-position: " + position.join(", ") + ";";
- }
- </script>
- </head>
-
- <body onload="addMasks()">
- <p><a href="https://bugs.webkit.org/show_bug.cgi?id=129682">Bug 129682</a> - On success, you should see a 4x4 grid of green circles.</p>
- <p>This test sets the mask-image value using base64.</p>
- <div id="front"></div>
- </body>
-</html>
-
diff --git a/LayoutTests/css3/masking/mask-base64.html b/LayoutTests/css3/masking/mask-base64.html
deleted file mode 100644
index 19fb286..0000000
--- a/LayoutTests/css3/masking/mask-base64.html
+++ /dev/null
@@ -1,23 +0,0 @@
-<!DOCTYPE html>
-<html>
- <head>
- <style>
- p {
- margin: 0px;
- }
- #maskedElement {
- width: 200px;
- height: 160px;
- background-color: green;
- -webkit-mask-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgd2lkdGg9IjM2MCIgaGVpZ2h0PSIyODgiPgogICAgPGNpcmNsZSBjeD0iMTgwIiBjeT0iMTQ0IiByPSI4MCIgLz4KPC9zdmc+Cgo=);
- -webkit-mask-size: 50px 40px;
- }
- </style>
- </head>
-
- <body>
- <p><a href="https://bugs.webkit.org/show_bug.cgi?id=129682">Bug 129682</a> - On success, you should see a 4x4 grid of green circles.</p>
- <p>This test sets the mask-image value using base64.</p>
- <div id="maskedElement"></div>
- </body>
-</html>
\ No newline at end of file
diff --git a/LayoutTests/css3/masking/mask-multiple-values-expected.html b/LayoutTests/css3/masking/mask-multiple-values-expected.html
deleted file mode 100644
index 7a1b62b..0000000
--- a/LayoutTests/css3/masking/mask-multiple-values-expected.html
+++ /dev/null
@@ -1,57 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
- <head>
- <style>
- p {
- margin: 0px;
- }
- #back {
- width: 500px;
- height: 500px;
- background-color: green;
- }
- .front {
- position: absolute;
- width: 300px;
- height: 300px;
- background-color: black;
- border: 50px solid blue;
- padding: 50px;
- -webkit-mask-repeat: no-repeat;
- -webkit-mask-origin: content-box;
- -webkit-mask-clip: border-box;
- }
- #front1 {
- -webkit-mask-image: url('resources/circle.png');
- -webkit-mask-size: 150px 120px;
- -webkit-mask-position: -120px -110px;
- }
- #front2 {
- -webkit-mask-image: url('resources/masks.svg#lowerHalf');
- -webkit-mask-size: 300px 240px;
- -webkit-mask-position: 50px 0px;
- }
- #front3 {
- -webkit-mask-image: url('resources/masks.svg#upperHalf');
- -webkit-mask-size: 300px 240px;
- -webkit-mask-position: 50px 0px;
- }
- #front4 {
- -webkit-mask-image: url('resources/masks.svg#invalidId');
- -webkit-mask-size: 225px 180px;
- -webkit-mask-position: 160px 220px;
- }
- </style>
- </head>
-
- <body>
- <p><a href="https://bugs.webkit.org/show_bug.cgi?id=129682">Bug 129682</a> - This test uses multiple masks from multiple resources.</p>
- <div id="back">
- <div class="front" id="front1"></div>
- <div class="front" id="front2"></div>
- <div class="front" id="front3"></div>
- <div class="front" id="front4"></div>
- </div>
- </body>
-</html>
-
diff --git a/LayoutTests/css3/masking/mask-multiple-values.html b/LayoutTests/css3/masking/mask-multiple-values.html
deleted file mode 100644
index ed2d675..0000000
--- a/LayoutTests/css3/masking/mask-multiple-values.html
+++ /dev/null
@@ -1,36 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
- <head>
- <style>
- p {
- margin: 0px;
- }
- #back {
- width: 500px;
- height: 500px;
- background-color: green;
- }
- #front {
- width: 300px;
- height: 300px;
- background-color: black;
- border: 50px solid blue;
- padding: 50px;
- -webkit-mask-image: url('resources/circle.png'), url('resources/masks.svg#lowerHalf'), url('resources/masks.svg#upperHalf'), url('resources/masks.svg#invalidId');
- -webkit-mask-size: 150px 120px, 300px 240px, 300px 240px, 225px 180px;
- -webkit-mask-position: -120px -110px, 50px 0px, 50px 0px, 160px 220px;
- -webkit-mask-repeat: no-repeat;
- -webkit-mask-origin: content-box;
- -webkit-mask-clip: border-box;
- }
- </style>
- </head>
-
- <body>
- <p><a href="https://bugs.webkit.org/show_bug.cgi?id=129682">Bug 129682</a> - This test uses multiple masks from multiple resources.</p>
- <div id="back">
- <div id="front"></div>
- </div>
- </body>
-</html>
-
diff --git a/LayoutTests/css3/masking/mask-repeat-space-padding-expected.html b/LayoutTests/css3/masking/mask-repeat-space-padding-expected.html
index 3cce138..2be9836 100644
--- a/LayoutTests/css3/masking/mask-repeat-space-padding-expected.html
+++ b/LayoutTests/css3/masking/mask-repeat-space-padding-expected.html
@@ -26,7 +26,7 @@
function addMasks() {
for (var x = 0; x < width; x += sizeX + spaceX) {
for (var y = 0; y < height; y += sizeY + spaceY) {
- urls.push("url(resources/circle.svg)");
+ urls.push("url(resources/circle.png)");
size.push(sizeX + "px " + sizeY + "px");
position.push(x + "px " + y + "px");
}
diff --git a/LayoutTests/css3/masking/mask-repeat-space-padding.html b/LayoutTests/css3/masking/mask-repeat-space-padding.html
index e1c480a..e1c6d3b 100644
--- a/LayoutTests/css3/masking/mask-repeat-space-padding.html
+++ b/LayoutTests/css3/masking/mask-repeat-space-padding.html
@@ -13,7 +13,7 @@
background-color: red;
border: 50px solid blue;
padding: 50px;
- -webkit-mask-image: url("resources/circle.svg");
+ -webkit-mask-image: url("resources/circle.png");
-webkit-mask-size: 100px;
-webkit-mask-repeat: space;
-webkit-mask-origin: padding-box;
diff --git a/LayoutTests/css3/masking/mask-svg-clipped-fragmentId-expected.html b/LayoutTests/css3/masking/mask-svg-clipped-fragmentId-expected.html
deleted file mode 100644
index c7d9b83..0000000
--- a/LayoutTests/css3/masking/mask-svg-clipped-fragmentId-expected.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
- <head>
- <style>
- p {
- margin: 0px;
- }
- #back {
- width: 320px;
- height: 420px;
- background-color: green;
- overflow: hidden;
- }
- #blackSVG {
- position: relative;
- left: 60px;
- top: -35px;
- }
- #blueSVG {
- position: relative;
- left: 70px;
- top: -474px;
- }
- </style>
- </head>
-
- <body>
-
- <p><a href="https://bugs.webkit.org/show_bug.cgi?id=129682">Bug 129682</a> - This test used a <mask> element and paints it at the side of the masked element, causing it to be clipped.</p>
- <div id="back">
- <svg id="blackSVG" width="320px" height="420px">
- <path fill="black" d="M80,20 L280,20 L280,380 L240,380 L240,60 L80,60 L80,20"/>
- </svg>
- <svg id="blueSVG" width="320px" height="420px">
- <path fill="blue" d="M70,20 L280,20 L280,395 L240,395 L240,60 L70,60 L70,20"/>
- </svg>
- </div>
- </body>
-</html>
-
diff --git a/LayoutTests/css3/masking/mask-svg-clipped-fragmentId.html b/LayoutTests/css3/masking/mask-svg-clipped-fragmentId.html
deleted file mode 100644
index 2ab0941..0000000
--- a/LayoutTests/css3/masking/mask-svg-clipped-fragmentId.html
+++ /dev/null
@@ -1,35 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
- <head>
- <style>
- p {
- margin: 0px;
- }
- #back {
- width: 320px;
- height: 420px;
- background-color: green;
- }
- #front {
- width: 300px;
- height: 400px;
- background-color: black;
- border: 10px solid blue;
- -webkit-mask-image: url('resources/masks.svg#upperHalf');
- -webkit-mask-size: 320px 420px;
- -webkit-mask-position: 50px -45px;
- -webkit-mask-repeat: no-repeat;
- -webkit-mask-origin: content-box;
- -webkit-mask-clip: border-box;
- }
- </style>
- </head>
-
- <body>
- <p><a href="https://bugs.webkit.org/show_bug.cgi?id=129682">Bug 129682</a> - This test used a <mask> element and paints it at the side of the masked element, causing it to be clipped.</p>
- <div id="back">
- <div id="front"></div>
- </div>
- </body>
-</html>
-
diff --git a/LayoutTests/css3/masking/mask-svg-fragmentId-expected.html b/LayoutTests/css3/masking/mask-svg-fragmentId-expected.html
deleted file mode 100644
index 5a170cd..0000000
--- a/LayoutTests/css3/masking/mask-svg-fragmentId-expected.html
+++ /dev/null
@@ -1,17 +0,0 @@
-<!DOCTYPE html>
-<html>
- <head>
- <style>
- p {
- margin: 0px;
- }
- </style>
- </head>
- <body>
- <p><a href="https://bugs.webkit.org/show_bug.cgi?id=129682">Bug 129682</a> - On success, you should see a green inverted-L shape and no red.</p>
- <p>This test references a <mask> element from an external SVG</p>
- <svg width="300px" height="400px">
- <path fill="green" d="M80,20 L280,20 L280,380 L240,380 L240,60 L80,60 L80,20"/>
- </svg>
- </body>
-</html>
\ No newline at end of file
diff --git a/LayoutTests/css3/masking/mask-svg-fragmentId.html b/LayoutTests/css3/masking/mask-svg-fragmentId.html
deleted file mode 100644
index 00fd70e..0000000
--- a/LayoutTests/css3/masking/mask-svg-fragmentId.html
+++ /dev/null
@@ -1,28 +0,0 @@
-<!DOCTYPE html>
-<html>
- <head>
- <style>
- p {
- margin: 0px;
- }
- #maskedElement {
- width: 300px;
- height: 400px;
- background-color: green;
- -webkit-mask-image:url('resources/masks.svg#upperHalf');
- }
- #redSvg {
- position: absolute;
- }
- </style>
- </head>
-
- <body>
- <p><a href="https://bugs.webkit.org/show_bug.cgi?id=129682">Bug 129682</a> - On success, you should see a green inverted-L shape and no red.</p>
- <p>This test references a <mask> element from an external SVG</p>
- <svg id="redSvg" width="300px" height="400px">
- <path fill="red" d="M80,20 L280,20 L280,380 L240,380 L240,60 L80,60 L80,20"/>
- </svg>
- <div id="maskedElement"></div>
- </body>
-</html>
\ No newline at end of file
diff --git a/LayoutTests/css3/masking/mask-svg-inline-fragmentId-expected.html b/LayoutTests/css3/masking/mask-svg-inline-fragmentId-expected.html
deleted file mode 100644
index 82785a7..0000000
--- a/LayoutTests/css3/masking/mask-svg-inline-fragmentId-expected.html
+++ /dev/null
@@ -1,17 +0,0 @@
-<!DOCTYPE html>
-<html>
- <head>
- <style>
- p {
- margin: 0px;
- }
- </style>
- </head>
- <body>
- <p><a href="https://bugs.webkit.org/show_bug.cgi?id=129682">Bug 129682</a> - On success, you should see a green L shape and no red.</p>
- <p>This test references a <mask> element defined in the main HTML document</p>
- <svg width="300px" height="400px">
- <path fill="green" d="M20,20 L60,20 L60,340 L220,340 L220,380 L20,380 L20,20"/>
- </svg>
- </body>
-</html>
\ No newline at end of file
diff --git a/LayoutTests/css3/masking/mask-svg-inline-fragmentId.html b/LayoutTests/css3/masking/mask-svg-inline-fragmentId.html
deleted file mode 100644
index 225417b..0000000
--- a/LayoutTests/css3/masking/mask-svg-inline-fragmentId.html
+++ /dev/null
@@ -1,31 +0,0 @@
-<!DOCTYPE html>
-<html>
- <head>
- <style>
- p {
- margin: 0px;
- }
- #maskedElement {
- width: 300px;
- height: 400px;
- background-color: green;
- -webkit-mask-image:url('#lowerHalf');
- }
- #redSvg {
- position: absolute;
- }
- </style>
- </head>
-
- <body>
- <p><a href="https://bugs.webkit.org/show_bug.cgi?id=129682">Bug 129682</a> - On success, you should see a green L shape and no red.</p>
- <p>This test references a <mask> element defined in the main HTML document</p>
- <svg id="redSvg" width="300px" height="400px">
- <path fill="red" d="M20,20 L60,20 L60,340 L220,340 L220,380 L20,380 L20,20"/>
- <mask id="lowerHalf" maskUnits="objectBoundingBox">
- <path fill="#FFFFFF" d="M20,20 L60,20 L60,340 L220,340 L220,380 L20,380 L20,20"/>
- </mask>
- </svg>
- <div id="maskedElement"></div>
- </body>
-</html>
\ No newline at end of file
diff --git a/LayoutTests/css3/masking/mask-svg-inline-invalid-fragmentId-expected.html b/LayoutTests/css3/masking/mask-svg-inline-invalid-fragmentId-expected.html
deleted file mode 100644
index 43378ee..0000000
--- a/LayoutTests/css3/masking/mask-svg-inline-invalid-fragmentId-expected.html
+++ /dev/null
@@ -1,23 +0,0 @@
-<!DOCTYPE html>
-<html>
- <head>
- <style>
- p {
- margin: 0px;
- }
- #elementToNotBeCovered {
- width: 300px;
- height: 400px;
- background-color: #2222FF;
- position: absolute;
- left: 10px;
- top: 50px;
- }
- </style>
- </head>
- <body>
- <p><a href="https://bugs.webkit.org/show_bug.cgi?id=129682">Bug 129682</a> - On success, you should see a blue rectangle and no red.</p>
- <p>This test references an invalid fragment identifier.</p>
- <div id="elementToNotBeCovered"></div>
- </body>
-</html>
\ No newline at end of file
diff --git a/LayoutTests/css3/masking/mask-svg-inline-invalid-fragmentId.html b/LayoutTests/css3/masking/mask-svg-inline-invalid-fragmentId.html
deleted file mode 100644
index 6be3c06..0000000
--- a/LayoutTests/css3/masking/mask-svg-inline-invalid-fragmentId.html
+++ /dev/null
@@ -1,34 +0,0 @@
-<!DOCTYPE html>
-<html>
- <head>
- <style>
- p {
- margin: 0px;
- }
- #maskedElement {
- width: 300px;
- height: 400px;
- background-color: red;
- -webkit-mask-image:url('#invalidId');
- position: absolute;
- left: 10px;
- top: 50px;
- }
- #elementToNotBeCovered {
- width: 300px;
- height: 400px;
- background-color: #2222FF;
- position: absolute;
- left: 10px;
- top: 50px;
- }
- </style>
- </head>
-
- <body>
- <p><a href="https://bugs.webkit.org/show_bug.cgi?id=129682">Bug 129682</a> - On success, you should see a blue rectangle and no red.</p>
- <p>This test references an invalid fragment identifier.</p>
- <div id="elementToNotBeCovered"></div>
- <div id="maskedElement"></div>
- </body>
-</html>
\ No newline at end of file
diff --git a/LayoutTests/css3/masking/mask-svg-invalid-fragmentId-expected.html b/LayoutTests/css3/masking/mask-svg-invalid-fragmentId-expected.html
deleted file mode 100644
index c73ab7e..0000000
--- a/LayoutTests/css3/masking/mask-svg-invalid-fragmentId-expected.html
+++ /dev/null
@@ -1,21 +0,0 @@
-<!DOCTYPE html>
-<html>
- <head>
- <style>
- p {
- margin: 0px;
- }
- </style>
- </head>
-
- <body>
- <p><a href="https://bugs.webkit.org/show_bug.cgi?id=129682">Bug 129682</a> - On success, you should see 4 green rectangles and no red.</p>
- <p>This test references an invalid fragment identifier from an external SVG</p>
- <svg width="300px" height="400px">
- <rect x="5px" y="45px" width="140px" height="140px" fill="green"/>
- <rect x="155px" y="45px" width="140px" height="140px" fill="green"/>
- <rect x="155px" y="215px" width="140px" height="140px" fill="green"/>
- <rect x="5px" y="215px" width="140px" height="140px" fill="green"/>
- </svg>
- </body>
-</html>
\ No newline at end of file
diff --git a/LayoutTests/css3/masking/mask-svg-invalid-fragmentId.html b/LayoutTests/css3/masking/mask-svg-invalid-fragmentId.html
deleted file mode 100644
index 0b354ea..0000000
--- a/LayoutTests/css3/masking/mask-svg-invalid-fragmentId.html
+++ /dev/null
@@ -1,31 +0,0 @@
-<!DOCTYPE html>
-<html>
- <head>
- <style>
- p {
- margin: 0px;
- }
- #maskedElement {
- width: 300px;
- height: 400px;
- background-color: green;
- -webkit-mask-image:url('resources/masks.svg#invalidId');
- }
- #redSvg {
- position: absolute;
- }
- </style>
- </head>
-
- <body>
- <p><a href="https://bugs.webkit.org/show_bug.cgi?id=129682">Bug 129682</a> - On success, you should see 4 green rectangles and no red.</p>
- <p>This test references an invalid fragment identifier from an external SVG</p>
- <svg id="redSvg" width="300px" height="400px">
- <rect x="5px" y="45px" width="140px" height="140px" fill="red"/>
- <rect x="155px" y="45px" width="140px" height="140px" fill="red"/>
- <rect x="155px" y="215px" width="140px" height="140px" fill="red"/>
- <rect x="5px" y="215px" width="140px" height="140px" fill="red"/>
- </svg>
- <div id="maskedElement"></div>
- </body>
-</html>
\ No newline at end of file
diff --git a/LayoutTests/css3/masking/mask-svg-no-fragmentId-expected.html b/LayoutTests/css3/masking/mask-svg-no-fragmentId-expected.html
deleted file mode 100644
index d52a0f1..0000000
--- a/LayoutTests/css3/masking/mask-svg-no-fragmentId-expected.html
+++ /dev/null
@@ -1,21 +0,0 @@
-<!DOCTYPE html>
-<html>
- <head>
- <style>
- p {
- margin: 0px;
- }
- </style>
- </head>
-
- <body>
- <p><a href="https://bugs.webkit.org/show_bug.cgi?id=129682">Bug 129682</a> - On success, you should see 4 green rectangles and no red.</p>
- <p>This test references an external SVG without specifying a fragment id.</p>
- <svg width="300px" height="400px">
- <rect x="5px" y="45px" width="140px" height="140px" fill="green"/>
- <rect x="155px" y="45px" width="140px" height="140px" fill="green"/>
- <rect x="155px" y="215px" width="140px" height="140px" fill="green"/>
- <rect x="5px" y="215px" width="140px" height="140px" fill="green"/>
- </svg>
- </body>
-</html>
\ No newline at end of file
diff --git a/LayoutTests/css3/masking/mask-svg-no-fragmentId-tiled-expected.html b/LayoutTests/css3/masking/mask-svg-no-fragmentId-tiled-expected.html
deleted file mode 100644
index debfd33..0000000
--- a/LayoutTests/css3/masking/mask-svg-no-fragmentId-tiled-expected.html
+++ /dev/null
@@ -1,34 +0,0 @@
-<!DOCTYPE html>
-<html>
- <head>
- <style>
- p {
- margin: 0px;
- }
- #background {
- width: 400px;
- height: 500px;
- background-color: lightblue;
- }
- </style>
- </head>
-
- <body>
- <p><a href="https://bugs.webkit.org/show_bug.cgi?id=129682">Bug 129682</a> - On success, you should see a 4-rectangle green image painted tiled and no red.</p>
- <p>This test references an external SVG without specifying a fragment id and paints using multiple tiles.</p>
-
- <div id="background">
- <svg id="redSvg" width="400px" height="500px">
- <rect x="5px" y="45px" width="140px" height="140px" fill="green"/>
- <rect x="155px" y="45px" width="140px" height="140px" fill="green"/>
- <rect x="305px" y="45px" width="95px" height="140px" fill="green"/>
- <rect x="155px" y="215px" width="140px" height="140px" fill="green"/>
- <rect x="305px" y="215px" width="95px" height="140px" fill="green"/>
- <rect x="5px" y="215px" width="140px" height="140px" fill="green"/>
- <rect x="5px" y="445px" width="140px" height="55px" fill="green"/>
- <rect x="155px" y="445px" width="140px" height="55px" fill="green"/>
- <rect x="305px" y="445px" width="95px" height="55px" fill="green"/>
- </svg>
- </div>
- </body>
-</html>
\ No newline at end of file
diff --git a/LayoutTests/css3/masking/mask-svg-no-fragmentId-tiled.html b/LayoutTests/css3/masking/mask-svg-no-fragmentId-tiled.html
deleted file mode 100644
index 88ae563..0000000
--- a/LayoutTests/css3/masking/mask-svg-no-fragmentId-tiled.html
+++ /dev/null
@@ -1,43 +0,0 @@
-<!DOCTYPE html>
-<html>
- <head>
- <style>
- p {
- margin: 0px;
- }
- #background {
- width: 400px;
- height: 500px;
- background-color: lightblue;
- }
- #maskedElement {
- width: 400px;
- height: 500px;
- background-color: green;
- -webkit-mask-image:url('resources/masks.svg');
- }
- #redSvg {
- position: absolute;
- }
- </style>
- </head>
-
- <body>
- <p><a href="https://bugs.webkit.org/show_bug.cgi?id=129682">Bug 129682</a> - On success, you should see a 4-rectangle green image painted tiled and no red.</p>
- <p>This test references an external SVG without specifying a fragment id and paints using multiple tiles.</p>
- <svg id="redSvg" width="400px" height="500px">
- <rect x="5px" y="45px" width="140px" height="140px" fill="red"/>
- <rect x="155px" y="45px" width="140px" height="140px" fill="red"/>
- <rect x="305px" y="45px" width="95px" height="140px" fill="red"/>
- <rect x="155px" y="215px" width="140px" height="140px" fill="red"/>
- <rect x="305px" y="215px" width="95px" height="140px" fill="red"/>
- <rect x="5px" y="215px" width="140px" height="140px" fill="red"/>
- <rect x="5px" y="445px" width="140px" height="55px" fill="red"/>
- <rect x="155px" y="445px" width="140px" height="55px" fill="red"/>
- <rect x="305px" y="445px" width="95px" height="55px" fill="red"/>
- </svg>
- <div id="background">
- <div id="maskedElement"></div>
- </div>
- </body>
-</html>
\ No newline at end of file
diff --git a/LayoutTests/css3/masking/mask-svg-no-fragmentId.html b/LayoutTests/css3/masking/mask-svg-no-fragmentId.html
deleted file mode 100644
index 8e0d8fc..0000000
--- a/LayoutTests/css3/masking/mask-svg-no-fragmentId.html
+++ /dev/null
@@ -1,31 +0,0 @@
-<!DOCTYPE html>
-<html>
- <head>
- <style>
- p {
- margin: 0px;
- }
- #maskedElement {
- width: 300px;
- height: 400px;
- background-color: green;
- -webkit-mask-image:url('resources/masks.svg');
- }
- #redSvg {
- position: absolute;
- }
- </style>
- </head>
-
- <body>
- <p><a href="https://bugs.webkit.org/show_bug.cgi?id=129682">Bug 129682</a> - On success, you should see 4 green rectangles and no red.</p>
- <p>This test references an external SVG without specifying a fragment id.</p>
- <svg id="redSvg" width="300px" height="400px">
- <rect x="5px" y="45px" width="140px" height="140px" fill="red"/>
- <rect x="155px" y="45px" width="140px" height="140px" fill="red"/>
- <rect x="155px" y="215px" width="140px" height="140px" fill="red"/>
- <rect x="5px" y="215px" width="140px" height="140px" fill="red"/>
- </svg>
- <div id="maskedElement"></div>
- </body>
-</html>
\ No newline at end of file
diff --git a/LayoutTests/css3/masking/mask-svg-script-entire-svg-to-mask-expected.html b/LayoutTests/css3/masking/mask-svg-script-entire-svg-to-mask-expected.html
deleted file mode 100644
index 4f24ee9..0000000
--- a/LayoutTests/css3/masking/mask-svg-script-entire-svg-to-mask-expected.html
+++ /dev/null
@@ -1,17 +0,0 @@
-<!DOCTYPE html>
-<html>
- <head>
- <style>
- p {
- margin: 0px;
- }
- </style>
- </head>
- <body>
- <p><a href="https://bugs.webkit.org/show_bug.cgi?id=129682">Bug 129682</a> - On success, you should see a blue inverted-L shape and no red.</p>
- <p>This test sets the mask-image via CSS to the entire SVG and then changes it to a <mask> element from the SVG via a script.</p>
- <svg width="300px" height="400px">
- <path fill="blue" d="M80,20 L280,20 L280,380 L240,380 L240,60 L80,60 L80,20"/>
- </svg>
- </body>
-</html>
\ No newline at end of file
diff --git a/LayoutTests/css3/masking/mask-svg-script-entire-svg-to-mask.html b/LayoutTests/css3/masking/mask-svg-script-entire-svg-to-mask.html
deleted file mode 100644
index e21fd60..0000000
--- a/LayoutTests/css3/masking/mask-svg-script-entire-svg-to-mask.html
+++ /dev/null
@@ -1,33 +0,0 @@
-<!DOCTYPE html>
-<html>
- <head>
- <style>
- p {
- margin: 0px;
- }
- #maskedElement {
- width: 300px;
- height: 400px;
- background-color: green;
- -webkit-mask-image:url('resources/masks.svg');
- }
- #redSvg {
- position: absolute;
- }
- </style>
- </head>
-
- <body>
- <p><a href="https://bugs.webkit.org/show_bug.cgi?id=129682">Bug 129682</a> - On success, you should see a blue inverted-L shape and no red.</p>
- <p>This test sets the mask-image via CSS to the entire SVG and then changes it to a <mask> element from the SVG via a script.</p>
- <svg id="redSvg" width="300px" height="400px">
- <path fill="red" d="M80,20 L280,20 L280,380 L240,380 L240,60 L80,60 L80,20"/>
- </svg>
- <div id="maskedElement"></div>
-
- <script>
- var maskedElement = document.getElementById("maskedElement");
- maskedElement.style.cssText += "-webkit-mask-image:url('resources/masks.svg#upperHalf');background-color: blue";
- </script>
- </body>
-</html>
\ No newline at end of file
diff --git a/LayoutTests/css3/masking/mask-svg-script-mask-to-entire-svg-expected.html b/LayoutTests/css3/masking/mask-svg-script-mask-to-entire-svg-expected.html
deleted file mode 100644
index 5bbdbd0..0000000
--- a/LayoutTests/css3/masking/mask-svg-script-mask-to-entire-svg-expected.html
+++ /dev/null
@@ -1,21 +0,0 @@
-<!DOCTYPE html>
-<html>
- <head>
- <style>
- p {
- margin: 0px;
- }
- #maskedElement {
- width: 300px;
- height: 400px;
- background-color: blue;
- -webkit-mask-image:url('resources/masks.svg');
- }
- </style>
- </head>
- <body>
- <p><a href="https://bugs.webkit.org/show_bug.cgi?id=129682">Bug 129682</a> - On success, you should see four blue squares and no red.</p>
- <p>This test sets the mask-image via CSS to a <mask> element from an SVG file and then changes it to the entire SVG file via a script.</p>
- <div id="maskedElement"></div>
- </body>
-</html>
\ No newline at end of file
diff --git a/LayoutTests/css3/masking/mask-svg-script-mask-to-entire-svg.html b/LayoutTests/css3/masking/mask-svg-script-mask-to-entire-svg.html
deleted file mode 100644
index a0872e6..0000000
--- a/LayoutTests/css3/masking/mask-svg-script-mask-to-entire-svg.html
+++ /dev/null
@@ -1,36 +0,0 @@
-<!DOCTYPE html>
-<html>
- <head>
- <style>
- p {
- margin: 0px;
- }
- #maskedElement {
- width: 300px;
- height: 400px;
- background-color: green;
- -webkit-mask-image:url('resources/masks.svg#lowerHalf');
- }
- #redSvg {
- position: absolute;
- }
- </style>
- </head>
-
- <body>
- <p><a href="https://bugs.webkit.org/show_bug.cgi?id=129682">Bug 129682</a> - On success, you should see four blue squares and no red.</p>
- <p>This test sets the mask-image via CSS to a <mask> element from an SVG file and then changes it to the entire SVG file via a script.</p>
- <svg id="redSvg" width="300px" height="400px">
- <rect x="5px" y="45px" width="140px" height="140px" fill="red"/>
- <rect x="155px" y="45px" width="140px" height="140px" fill="red"/>
- <rect x="155px" y="215px" width="140px" height="140px" fill="red"/>
- <rect x="5px" y="215px" width="140px" height="140px" fill="red"/>
- </svg>
- <div id="maskedElement"></div>
-
- <script>
- var maskedElement = document.getElementById("maskedElement");
- maskedElement.style.cssText += "-webkit-mask-image:url('resources/masks.svg');background-color:blue";
- </script>
- </body>
-</html>
\ No newline at end of file
diff --git a/LayoutTests/css3/masking/mask-svg-script-mask-to-none-expected.html b/LayoutTests/css3/masking/mask-svg-script-mask-to-none-expected.html
deleted file mode 100644
index afc49d8..0000000
--- a/LayoutTests/css3/masking/mask-svg-script-mask-to-none-expected.html
+++ /dev/null
@@ -1,20 +0,0 @@
-<!DOCTYPE html>
-<html>
- <head>
- <style>
- p {
- margin: 0px;
- }
- #maskedElement {
- width: 400px;
- height: 400px;
- background-color: blue;
- }
- </style>
- </head>
- <body>
- <p><a href="https://bugs.webkit.org/show_bug.cgi?id=129682">Bug 129682</a> - On success, you should see a blue rectangle and no red.</p>
- <p>This test sets the mask-image via CSS to a <mask> element from an external SVG file and then changes it to 'none' via a script.</p>
- <div id="maskedElement"></div>
- </body>
-</html>
\ No newline at end of file
diff --git a/LayoutTests/css3/masking/mask-svg-script-mask-to-none.html b/LayoutTests/css3/masking/mask-svg-script-mask-to-none.html
deleted file mode 100644
index cd1c1bc..0000000
--- a/LayoutTests/css3/masking/mask-svg-script-mask-to-none.html
+++ /dev/null
@@ -1,34 +0,0 @@
-<!DOCTYPE html>
-<html>
- <head>
- <style>
- p {
- margin: 0px;
- }
- #maskedElement {
- width: 400px;
- height: 400px;
- background-color: green;
- -webkit-mask-image:url('resources/masks.svg#lowerHalf');
- }
- #redElement {
- width: 400px;
- height: 400px;
- background-color: red;
- position: absolute;
- z-index: -1;
- }
- </style>
- </head>
-
- <body>
- <p><a href="https://bugs.webkit.org/show_bug.cgi?id=129682">Bug 129682</a> - On success, you should see a blue rectangle and no red.</p>
- <p>This test sets the mask-image via CSS to a <mask> element from an external SVG file and then changes it to 'none' via a script.</p>
- <div id="redElement"></div>
- <div id="maskedElement"></div>
- <script>
- var maskedElement = document.getElementById("maskedElement");
- maskedElement.style.cssText += "-webkit-mask-image:none;background-color: blue";
- </script>
- </body>
-</html>
\ No newline at end of file
diff --git a/LayoutTests/css3/masking/mask-svg-script-mask-to-png-expected.html b/LayoutTests/css3/masking/mask-svg-script-mask-to-png-expected.html
deleted file mode 100644
index 82f526a..0000000
--- a/LayoutTests/css3/masking/mask-svg-script-mask-to-png-expected.html
+++ /dev/null
@@ -1,21 +0,0 @@
-<!DOCTYPE html>
-<html>
- <head>
- <style>
- p {
- margin: 0px;
- }
- #maskedElement {
- width: 360px;
- height: 288px;
- background-color: blue;
- -webkit-mask-image:url('resources/circle.png');
- }
- </style>
- </head>
- <body>
- <p><a href="https://bugs.webkit.org/show_bug.cgi?id=129682">Bug 129682</a> - On success, you should see a blue circle and no red.</p>
- <p>This test sets the mask-image via CSS to a <mask> element from an SVG file and then changes it to a PNG via a script.</p>
- <div id="maskedElement"></div>
- </body>
-</html>
\ No newline at end of file
diff --git a/LayoutTests/css3/masking/mask-svg-script-mask-to-png.html b/LayoutTests/css3/masking/mask-svg-script-mask-to-png.html
deleted file mode 100644
index d86b943..0000000
--- a/LayoutTests/css3/masking/mask-svg-script-mask-to-png.html
+++ /dev/null
@@ -1,36 +0,0 @@
-<!DOCTYPE html>
-<html>
- <head>
- <style>
- p {
- margin: 0px;
- }
- #maskedElement {
- width: 360px;
- height: 288px;
- background-color: red;
- -webkit-mask-image:url('resources/masks.svg#lowerHalf');
- }
- #redElement {
- position: absolute;
- width: 360px;
- height: 288px;
- background-color: red;
- -webkit-transform: scale(0.95, 0.95);
- -webkit-mask-image: url('resources/circle.png');
- }
- </style>
- </head>
-
- <body>
- <p><a href="https://bugs.webkit.org/show_bug.cgi?id=129682">Bug 129682</a> - On success, you should see a blue circle and no red.</p>
- <p>This test sets the mask-image via CSS to a <mask> element from an SVG file and then changes it to a PNG via a script.</p>
- <div id="redElement"></div>
- <div id="maskedElement"></div>
-
- <script>
- var maskedElement = document.getElementById("maskedElement");
- maskedElement.style.cssText += "-webkit-mask-image:url('resources/circle.png');background-color: blue";
- </script>
- </body>
-</html>
\ No newline at end of file
diff --git a/LayoutTests/css3/masking/mask-svg-script-none-to-mask-expected.html b/LayoutTests/css3/masking/mask-svg-script-none-to-mask-expected.html
deleted file mode 100644
index 5293ada..0000000
--- a/LayoutTests/css3/masking/mask-svg-script-none-to-mask-expected.html
+++ /dev/null
@@ -1,21 +0,0 @@
-<!DOCTYPE html>
-<html>
- <head>
- <style>
- p {
- margin: 0px;
- }
- #maskedElement {
- width: 400px;
- height: 400px;
- background-color: blue;
- -webkit-mask-image:url('resources/masks.svg#upperHalf');
- }
- </style>
- </head>
- <body>
- <p><a href="https://bugs.webkit.org/show_bug.cgi?id=129682">Bug 129682</a> - On success, you should see a blue inverted-L shape and no red.</p>
- <p>This test sets the mask-image value to a <mask> element from an external SVG via a script.</p>
- <div id="maskedElement"></div>
- </body>
-</html>
\ No newline at end of file
diff --git a/LayoutTests/css3/masking/mask-svg-script-none-to-mask.html b/LayoutTests/css3/masking/mask-svg-script-none-to-mask.html
deleted file mode 100644
index c971c91..0000000
--- a/LayoutTests/css3/masking/mask-svg-script-none-to-mask.html
+++ /dev/null
@@ -1,32 +0,0 @@
-<!DOCTYPE html>
-<html>
- <head>
- <style>
- p {
- margin: 0px;
- }
- #maskedElement {
- width: 400px;
- height: 400px;
- background-color: red;
- }
- #redSvg {
- position: absolute;
- }
- </style>
- </head>
-
- <body>
- <p><a href="https://bugs.webkit.org/show_bug.cgi?id=129682">Bug 129682</a> - On success, you should see a blue inverted-L shape and no red.</p>
- <p>This test sets the mask-image value to a <mask> element from an external SVG via a script.</p>
- <svg id="redSvg" width="300px" height="400px">
- <path fill="red" d="M80,20 L280,20 L280,380 L240,380 L240,60 L80,60 L80,20"/>
- </svg>
- <div id="maskedElement"></div>
-
- <script>
- var maskedElement = document.getElementById("maskedElement");
- maskedElement.style.cssText += "-webkit-mask-image:url('resources/masks.svg#upperHalf');background-color: blue";
- </script>
- </body>
-</html>
\ No newline at end of file
diff --git a/LayoutTests/css3/masking/mask-svg-script-none-to-png-expected.html b/LayoutTests/css3/masking/mask-svg-script-none-to-png-expected.html
deleted file mode 100644
index b70da4f..0000000
--- a/LayoutTests/css3/masking/mask-svg-script-none-to-png-expected.html
+++ /dev/null
@@ -1,22 +0,0 @@
-<!DOCTYPE html>
-<html>
- <head>
- <style>
- p {
- margin: 0px;
- }
- #maskedElement {
- width: 280px;
- height: 210px;
- background-color: blue;
- -webkit-mask-image:url('resources/dice.png');
- -webkit-mask-source-type:luminance;
- }
- </style>
- </head>
- <body>
- <p><a href="https://bugs.webkit.org/show_bug.cgi?id=129682">Bug 129682</a> - On success, you should see a blue-tinted image of 3 dice.</p>
- <p>This test sets the mask-image to a PNG image via a script.</p>
- <div id="maskedElement"></div>
- </body>
-</html>
\ No newline at end of file
diff --git a/LayoutTests/css3/masking/mask-svg-script-none-to-png.html b/LayoutTests/css3/masking/mask-svg-script-none-to-png.html
deleted file mode 100644
index 896cd80..0000000
--- a/LayoutTests/css3/masking/mask-svg-script-none-to-png.html
+++ /dev/null
@@ -1,25 +0,0 @@
-<!DOCTYPE html>
-<html>
- <head>
- <style>
- p {
- margin: 0px;
- }
- #maskedElement {
- width: 280px;
- height: 210px;
- background-color: green;
- }
- </style>
- </head>
-
- <body>
- <p><a href="https://bugs.webkit.org/show_bug.cgi?id=129682">Bug 129682</a> - On success, you should see a blue-tinted image of 3 dice.</p>
- <p>This test sets the mask-image to a PNG image via a script.</p>
- <div id="maskedElement"></div>
- <script>
- var maskedElement = document.getElementById("maskedElement");
- maskedElement.style.cssText += "-webkit-mask-image:url('resources/dice.png');-webkit-mask-source-type:luminance;background-color:blue";
- </script>
- </body>
-</html>
\ No newline at end of file
diff --git a/LayoutTests/css3/masking/mask-svg-script-png-to-mask-expected.html b/LayoutTests/css3/masking/mask-svg-script-png-to-mask-expected.html
deleted file mode 100644
index 16f4ce8..0000000
--- a/LayoutTests/css3/masking/mask-svg-script-png-to-mask-expected.html
+++ /dev/null
@@ -1,17 +0,0 @@
-<!DOCTYPE html>
-<html>
- <head>
- <style>
- p {
- margin: 0px;
- }
- </style>
- </head>
- <body>
- <p><a href="https://bugs.webkit.org/show_bug.cgi?id=129682">Bug 129682</a> - On success, you should see a blue inverted-L shape and no red.</p>
- <p>This test sets the mask-image via CSS to a PNG and then changes it to a <mask> element from an SVG file via a script.</p>
- <svg width="300px" height="400px">
- <path fill="blue" d="M80,20 L280,20 L280,380 L240,380 L240,60 L80,60 L80,20"/>
- </svg>
- </body>
-</html>
\ No newline at end of file
diff --git a/LayoutTests/css3/masking/mask-svg-script-png-to-mask.html b/LayoutTests/css3/masking/mask-svg-script-png-to-mask.html
deleted file mode 100644
index 43dd32f..0000000
--- a/LayoutTests/css3/masking/mask-svg-script-png-to-mask.html
+++ /dev/null
@@ -1,33 +0,0 @@
-<!DOCTYPE html>
-<html>
- <head>
- <style>
- p {
- margin: 0px;
- }
- #maskedElement {
- width: 300px;
- height: 400px;
- background-color: green;
- -webkit-mask-image:url('resources/circle.png');
- }
- #redSvg {
- position: absolute;
- }
- </style>
- </head>
-
- <body>
- <p><a href="https://bugs.webkit.org/show_bug.cgi?id=129682">Bug 129682</a> - On success, you should see a blue inverted-L shape and no red.</p>
- <p>This test sets the mask-image via CSS to a PNG and then changes it to a <mask> element from an SVG file via a script.</p>
- <svg id="redSvg" width="300px" height="400px">
- <path fill="red" d="M80,20 L280,20 L280,380 L240,380 L240,60 L80,60 L80,20"/>
- </svg>
- <div id="maskedElement"></div>
-
- <script>
- var maskedElement = document.getElementById("maskedElement");
- maskedElement.style.cssText += "-webkit-mask-image:url('resources/masks.svg#upperHalf');background-color: blue";
- </script>
- </body>
-</html>
\ No newline at end of file
diff --git a/LayoutTests/css3/masking/mask-svg-script-png-to-none-expected.html b/LayoutTests/css3/masking/mask-svg-script-png-to-none-expected.html
deleted file mode 100644
index b4f558c..0000000
--- a/LayoutTests/css3/masking/mask-svg-script-png-to-none-expected.html
+++ /dev/null
@@ -1,20 +0,0 @@
-<!DOCTYPE html>
-<html>
- <head>
- <style>
- p {
- margin: 0px;
- }
- #maskedElement {
- width: 280px;
- height: 210px;
- background-color: blue;
- }
- </style>
- </head>
- <body>
- <p><a href="https://bugs.webkit.org/show_bug.cgi?id=129682">Bug 129682</a> - On success, you should see a simple blue rectangle.</p>
- <p>This test sets the mask-image via CSS to a PNG image and then changes it to 'none' via a script.</p>
- <div id="maskedElement"></div>
- </body>
-</html>
\ No newline at end of file
diff --git a/LayoutTests/css3/masking/mask-svg-script-png-to-none.html b/LayoutTests/css3/masking/mask-svg-script-png-to-none.html
deleted file mode 100644
index 9bf07f3..0000000
--- a/LayoutTests/css3/masking/mask-svg-script-png-to-none.html
+++ /dev/null
@@ -1,27 +0,0 @@
-<!DOCTYPE html>
-<html>
- <head>
- <style>
- p {
- margin: 0px;
- }
- #maskedElement {
- width: 280px;
- height: 210px;
- background-color: green;
- -webkit-mask-image:url('resources/dice.png');
- -webkit-mask-source-type: luminance;
- }
- </style>
- </head>
-
- <body>
- <p><a href="https://bugs.webkit.org/show_bug.cgi?id=129682">Bug 129682</a> - On success, you should see a simple blue rectangle.</p>
- <p>This test sets the mask-image via CSS to a PNG image and then changes it to 'none' via a script.</p>
- <div id="maskedElement"></div>
- <script>
- var maskedElement = document.getElementById("maskedElement");
- maskedElement.style.cssText += "-webkit-mask-image:none;background-color: blue";
- </script>
- </body>
-</html>
\ No newline at end of file
diff --git a/LayoutTests/css3/masking/resources/masks.svg b/LayoutTests/css3/masking/resources/masks.svg
deleted file mode 100644
index 5d43705e..0000000
--- a/LayoutTests/css3/masking/resources/masks.svg
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 14.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 43363) -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
- width="300px" height="400px" viewBox="0 0 300 400" enable-background="new 0 0 300 400" xml:space="preserve">
-<defs>
- <mask id="upperHalf" maskUnits="objectBoundingBox">
- <path fill="#FFFFFF" d="M80,20 L280,20 L280,380 L240,380 L240,60 L80,60 L80,20"/>
- </mask>
- <mask id="lowerHalf" maskUnits="objectBoundingBox">
- <path fill="#FFFFFF" d="M20,20 L60,20 L60,340 L220,340 L220,380 L20,380 L20,20"/>
- </mask>
- <mask id="animatedCircle" maskUnits="objectBoundingBox">
- <circle cx="150" cy="150" r="40" fill="white">
- <animate attributeName="r" from="40" to="120" dur="10s" repeatCount="indefinite"/>
- </circle>
- </mask>
-</defs>
-
-<g>
- <rect x="5px" y="45px" width="140px" height="140px" fill="#C1553B"/>
- <rect x="155px" y="45px" width="140px" height="140px" fill="#71E5FF"/>
- <rect x="155px" y="215px" width="140px" height="140px" fill="#404041"/>
- <rect x="5px" y="215px" width="140px" height="140px" fill="#77D091"/>
-</g>
-
-</svg>
\ No newline at end of file
diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog
index 9f4fe57..fbf2e6a 100644
--- a/Source/WebCore/ChangeLog
+++ b/Source/WebCore/ChangeLog
@@ -1,3 +1,23 @@
+2014-12-14 Commit Queue <commit-queue@webkit.org>
+
+ Unreviewed, rolling out r177223 and r177226.
+ https://bugs.webkit.org/show_bug.cgi?id=139631
+
+ Multiple tests are flakily asserting in
+ StyleResolver::loadPendingResources (Requested by ap_ on
+ #webkit).
+
+ Reverted changesets:
+
+ "[SVG Masking] Enable the use of <mask> elements for -webkit-
+ mask-image"
+ https://bugs.webkit.org/show_bug.cgi?id=139294
+ http://trac.webkit.org/changeset/177223
+
+ "animations/cross-fade-webkit-mask-image.html is flaky"
+ https://bugs.webkit.org/show_bug.cgi?id=139590
+ http://trac.webkit.org/changeset/177226
+
2014-12-14 Andreas Kling <akling@apple.com>
Event construction helpers should return Ref instead of PassRefPtr.
diff --git a/Source/WebCore/css/CSSComputedStyleDeclaration.cpp b/Source/WebCore/css/CSSComputedStyleDeclaration.cpp
index 3bc4f2f..a6872ff 100644
--- a/Source/WebCore/css/CSSComputedStyleDeclaration.cpp
+++ b/Source/WebCore/css/CSSComputedStyleDeclaration.cpp
@@ -1793,8 +1793,9 @@
case CSSPropertyBackgroundColor:
return cssValuePool().createColorValue(m_allowVisitedStyle? style->visitedDependentColor(CSSPropertyBackgroundColor).rgb() : style->backgroundColor().rgb());
- case CSSPropertyBackgroundImage: {
- const FillLayer* layers = style->backgroundLayers();
+ case CSSPropertyBackgroundImage:
+ case CSSPropertyWebkitMaskImage: {
+ const FillLayer* layers = propertyID == CSSPropertyWebkitMaskImage ? style->maskLayers() : style->backgroundLayers();
if (!layers)
return cssValuePool().createIdentifierValue(CSSValueNone);
@@ -1814,27 +1815,6 @@
}
return list.release();
}
- case CSSPropertyWebkitMaskImage: {
- const FillLayer* layers = style->maskLayers();
- if (!layers)
- return cssValuePool().createIdentifierValue(CSSValueNone);
-
- if (!layers->next()) {
- if (layers->maskImage().get())
- return layers->maskImage()->cssValue();
-
- return cssValuePool().createIdentifierValue(CSSValueNone);
- }
-
- RefPtr<CSSValueList> list = CSSValueList::createCommaSeparated();
- for (const FillLayer* currLayer = layers; currLayer; currLayer = currLayer->next()) {
- if (currLayer->maskImage().get())
- list->append(*currLayer->maskImage()->cssValue());
- else
- list->append(cssValuePool().createIdentifierValue(CSSValueNone));
- }
- return list.release();
- }
case CSSPropertyBackgroundSize:
case CSSPropertyWebkitBackgroundSize:
case CSSPropertyWebkitMaskSize: {
diff --git a/Source/WebCore/css/CSSParser.cpp b/Source/WebCore/css/CSSParser.cpp
index 52fb722..7552a71 100644
--- a/Source/WebCore/css/CSSParser.cpp
+++ b/Source/WebCore/css/CSSParser.cpp
@@ -83,7 +83,6 @@
#include "TextEncoding.h"
#include "WebKitCSSFilterValue.h"
#include "WebKitCSSRegionRule.h"
-#include "WebKitCSSResourceValue.h"
#include "WebKitCSSTransformValue.h"
#include <bitset>
#include <limits.h>
@@ -3359,7 +3358,6 @@
RefPtr<CSSValue> val2;
CSSPropertyID propId1, propId2;
CSSParserValue& parserValue = *m_valueList->current();
-
if (parseFillProperty(properties[i], propId1, propId2, val1, val2)) {
parsedProperty[i] = found = true;
addFillValue(values[i], val1.releaseNonNull());
@@ -4448,11 +4446,8 @@
}
break;
case CSSPropertyBackgroundImage:
- if (parseFillImage(*m_valueList, currValue))
- m_valueList->next();
- break;
case CSSPropertyWebkitMaskImage:
- if (parseMaskImage(*m_valueList, currValue))
+ if (parseFillImage(*m_valueList, currValue))
m_valueList->next();
break;
case CSSPropertyWebkitBackgroundClip:
@@ -9432,23 +9427,6 @@
return true;
}
-bool CSSParser::parseMaskImage(CSSParserValueList& valueList, RefPtr<CSSValue>& outValue)
-{
- outValue = nullptr;
- CSSParserValue* value = valueList.current();
- if (value->id == CSSValueNone)
- outValue = WebKitCSSResourceValue::create(cssValuePool().createIdentifierValue(CSSValueNone));
- else if (value->unit == CSSPrimitiveValue::CSS_URI)
- outValue = WebKitCSSResourceValue::create(CSSPrimitiveValue::create(completeURL(value->string), CSSPrimitiveValue::CSS_URI));
- else {
- RefPtr<CSSValue> fillImageValue;
- if (parseFillImage(valueList, fillImageValue))
- outValue = WebKitCSSResourceValue::create(fillImageValue);
- }
-
- return outValue.get();
-}
-
#if ENABLE(CSS_REGIONS)
static bool validFlowName(const String& flowName)
{
diff --git a/Source/WebCore/css/CSSParser.h b/Source/WebCore/css/CSSParser.h
index 2988a6a..9ec7a96 100644
--- a/Source/WebCore/css/CSSParser.h
+++ b/Source/WebCore/css/CSSParser.h
@@ -117,8 +117,6 @@
PassRefPtr<CSSValue> parseBackgroundColor();
- // FIXME: Maybe these two methods could be combined into one.
- bool parseMaskImage(CSSParserValueList&, RefPtr<CSSValue>&);
bool parseFillImage(CSSParserValueList&, RefPtr<CSSValue>&);
enum FillPositionFlag { InvalidFillPosition = 0, AmbiguousFillPosition = 1, XFillPosition = 2, YFillPosition = 4 };
diff --git a/Source/WebCore/css/CSSValue.h b/Source/WebCore/css/CSSValue.h
index 632ef9a..36c2994 100644
--- a/Source/WebCore/css/CSSValue.h
+++ b/Source/WebCore/css/CSSValue.h
@@ -163,7 +163,6 @@
#endif
SVGColorClass,
SVGPaintClass,
- WebKitCSSResourceClass,
// List class types must appear after ValueListClass.
ValueListClass,
@@ -175,6 +174,7 @@
#if ENABLE(CSS_GRID_LAYOUT)
GridLineNamesClass,
#endif
+ WebKitCSSResourceClass
// Do not append non-list class types here.
};
diff --git a/Source/WebCore/css/DeprecatedStyleBuilder.cpp b/Source/WebCore/css/DeprecatedStyleBuilder.cpp
index 901c09a..98a525f 100644
--- a/Source/WebCore/css/DeprecatedStyleBuilder.cpp
+++ b/Source/WebCore/css/DeprecatedStyleBuilder.cpp
@@ -928,6 +928,7 @@
setPropertyHandler(CSSPropertyWebkitFontVariantLigatures, ApplyPropertyFontVariantLigatures::createHandler());
setPropertyHandler(CSSPropertyWebkitMaskClip, ApplyPropertyFillLayer<EFillBox, CSSPropertyWebkitMaskClip, MaskFillLayer, &RenderStyle::accessMaskLayers, &RenderStyle::maskLayers, &FillLayer::isClipSet, &FillLayer::clip, &FillLayer::setClip, &FillLayer::clearClip, &FillLayer::initialFillClip, &CSSToStyleMap::mapFillClip>::createHandler());
setPropertyHandler(CSSPropertyWebkitMaskComposite, ApplyPropertyFillLayer<CompositeOperator, CSSPropertyWebkitMaskComposite, MaskFillLayer, &RenderStyle::accessMaskLayers, &RenderStyle::maskLayers, &FillLayer::isCompositeSet, &FillLayer::composite, &FillLayer::setComposite, &FillLayer::clearComposite, &FillLayer::initialFillComposite, &CSSToStyleMap::mapFillComposite>::createHandler());
+ setPropertyHandler(CSSPropertyWebkitMaskImage, ApplyPropertyFillLayer<StyleImage*, CSSPropertyWebkitMaskImage, MaskFillLayer, &RenderStyle::accessMaskLayers, &RenderStyle::maskLayers, &FillLayer::isImageSet, &FillLayer::image, &FillLayer::setImage, &FillLayer::clearImage, &FillLayer::initialFillImage, &CSSToStyleMap::mapFillImage>::createHandler());
setPropertyHandler(CSSPropertyWebkitMaskOrigin, ApplyPropertyFillLayer<EFillBox, CSSPropertyWebkitMaskOrigin, MaskFillLayer, &RenderStyle::accessMaskLayers, &RenderStyle::maskLayers, &FillLayer::isOriginSet, &FillLayer::origin, &FillLayer::setOrigin, &FillLayer::clearOrigin, &FillLayer::initialFillOrigin, &CSSToStyleMap::mapFillOrigin>::createHandler());
setPropertyHandler(CSSPropertyWebkitMaskPositionX, ApplyPropertyFillLayer<Length, CSSPropertyWebkitMaskPositionX, MaskFillLayer, &RenderStyle::accessMaskLayers, &RenderStyle::maskLayers, &FillLayer::isXPositionSet, &FillLayer::xPosition, &FillLayer::setXPosition, &FillLayer::clearXPosition, &FillLayer::initialFillXPosition, &CSSToStyleMap::mapFillXPosition>::createHandler());
setPropertyHandler(CSSPropertyWebkitMaskPositionY, ApplyPropertyFillLayer<Length, CSSPropertyWebkitMaskPositionY, MaskFillLayer, &RenderStyle::accessMaskLayers, &RenderStyle::maskLayers, &FillLayer::isYPositionSet, &FillLayer::yPosition, &FillLayer::setYPosition, &FillLayer::clearYPosition, &FillLayer::initialFillYPosition, &CSSToStyleMap::mapFillYPosition>::createHandler());
diff --git a/Source/WebCore/css/StyleResolver.cpp b/Source/WebCore/css/StyleResolver.cpp
index c0913bc..fb7551f 100644
--- a/Source/WebCore/css/StyleResolver.cpp
+++ b/Source/WebCore/css/StyleResolver.cpp
@@ -1157,61 +1157,6 @@
style->setWritingMode(LeftToRightWritingMode);
}
-void StyleResolver::adjustStyleForMaskImages()
-{
- // If we already have the same mask image objects loaded on the old style,
- // use the old ones instead of loading new ones.
- RenderStyle* newStyle = m_state.style();
- RenderStyle* oldStyle = (m_state.element() ? m_state.element()->renderStyle() : nullptr);
-
- if (newStyle && oldStyle) {
- Vector<RefPtr<MaskImageOperation>> removedExternalResources;
-
- // Get all mask objects from the old style in a vector
- // so we can remove them as we match them, making the following steps faster.
- Vector<RefPtr<MaskImageOperation>> oldStyleMaskImages;
- const FillLayer* oldMaskLayer = oldStyle->maskLayers();
- while (oldMaskLayer) {
- RefPtr<MaskImageOperation> oldMaskImage = oldMaskLayer->maskImage();
- if (oldMaskImage.get())
- oldStyleMaskImages.append(oldMaskImage);
-
- oldMaskLayer = oldMaskLayer->next();
- }
-
- // Try to match the new mask objects through the list from the old style.
- // This should work perfectly and optimal when the list of masks remained
- // the same and also work correctly (but slower) when they were reordered.
- FillLayer* newMaskLayer = newStyle->accessMaskLayers();
- int countOldStyleMaskImages = oldStyleMaskImages.size();
- while (newMaskLayer && countOldStyleMaskImages) {
- RefPtr<MaskImageOperation> newMaskImage = newMaskLayer->maskImage();
- if (newMaskImage.get()) {
- for (int i = 0; i < countOldStyleMaskImages; i++) {
- RefPtr<MaskImageOperation> oldMaskImage = oldStyleMaskImages[i];
- if (*oldMaskImage == *newMaskImage) {
- newMaskLayer->setMaskImage(oldMaskImage);
- if (newMaskImage->isExternalDocument())
- removedExternalResources.append(newMaskImage);
-
- oldStyleMaskImages.remove(i);
- countOldStyleMaskImages--;
- break;
- }
- }
- }
-
- newMaskLayer = newMaskLayer->next();
- }
-
- Vector<RefPtr<MaskImageOperation>>& pendingResources = m_state.maskImagesWithPendingSVGDocuments();
- for (int i = pendingResources.size() - 1; i >= 0; i--) {
- if (removedExternalResources.contains(pendingResources[i]))
- pendingResources.remove(i);
- }
- }
-}
-
void StyleResolver::adjustRenderStyle(RenderStyle& style, const RenderStyle& parentStyle, Element *e)
{
// Cache our original display.
@@ -1818,8 +1763,6 @@
// There are some CSS properties that affect the same RenderStyle values,
// so to preserve behavior, we queue them up during cascade and flush here.
cascade.applyDeferredProperties(*this);
-
- adjustStyleForMaskImages();
// Start loading resources referenced by this style.
loadPendingResources();
@@ -2597,14 +2540,6 @@
}
#endif
- case CSSPropertyWebkitMaskImage: {
- Vector<RefPtr<MaskImageOperation>> operations;
- if (createMaskImageOperations(value, operations))
- state.style()->setMaskImage(operations);
-
- return;
- }
-
#if ENABLE(CSS_GRID_LAYOUT)
case CSSPropertyWebkitGridAutoColumns: {
HANDLE_INHERIT_AND_INITIAL(gridAutoColumns, GridAutoColumns);
@@ -3031,6 +2966,7 @@
case CSSPropertyWebkitMaskBoxImageWidth:
case CSSPropertyWebkitMaskClip:
case CSSPropertyWebkitMaskComposite:
+ case CSSPropertyWebkitMaskImage:
case CSSPropertyWebkitMaskOrigin:
case CSSPropertyWebkitMaskPositionX:
case CSSPropertyWebkitMaskPositionY:
@@ -3381,30 +3317,14 @@
// style is NULL. We don't know exactly why this happens. Our guess is
// reentering styleForElement().
ASSERT(state.style());
- if (!state.style())
- return;
-
- bool hasFilters = (state.style()->hasFilter() && !state.filtersWithPendingSVGDocuments().isEmpty());
- bool hasMasks = (state.style()->hasMask() && !state.maskImagesWithPendingSVGDocuments().isEmpty());
-
- if (!hasFilters && !hasMasks)
+ if (!state.style() || !state.style()->hasFilter() || state.filtersWithPendingSVGDocuments().isEmpty())
return;
CachedResourceLoader* cachedResourceLoader = state.document().cachedResourceLoader();
-
- if (hasFilters) {
- for (auto& filterOperation : state.filtersWithPendingSVGDocuments())
- filterOperation->getOrCreateCachedSVGDocumentReference()->load(cachedResourceLoader);
+ for (auto& filterOperation : state.filtersWithPendingSVGDocuments())
+ filterOperation->getOrCreateCachedSVGDocumentReference()->load(cachedResourceLoader);
- state.filtersWithPendingSVGDocuments().clear();
- }
-
- if (hasMasks) {
- for (auto& maskImageOperation : state.maskImagesWithPendingSVGDocuments())
- maskImageOperation->ensureCachedSVGDocumentReference()->load(cachedResourceLoader);
-
- state.maskImagesWithPendingSVGDocuments().clear();
- }
+ state.filtersWithPendingSVGDocuments().clear();
}
bool StyleResolver::createFilterOperations(CSSValue* inValue, FilterOperations& outOperations)
@@ -3552,22 +3472,16 @@
if (!inValue)
return false;
- RefPtr<WebKitCSSResourceValue> maskImageValue;
- RefPtr<CSSValueList> maskImagesList;
- CSSValueList::iterator listIterator;
- if (is<WebKitCSSResourceValue>(*inValue))
- maskImageValue = downcast<WebKitCSSResourceValue>(inValue);
- else if (is<CSSValueList>(*inValue)) {
- maskImagesList = downcast<CSSValueList>(inValue);
- listIterator = maskImagesList->begin();
- if (listIterator != maskImagesList->end())
- maskImageValue = &downcast<WebKitCSSResourceValue>(listIterator->get());
- }
+ ASSERT(is<CSSValueList>(*inValue));
- while (maskImageValue.get()) {
- RefPtr<CSSValue> maskInnerValue = maskImageValue->innerValue();
+ for (auto& currValue : downcast<CSSValueList>(*inValue)) {
+ if (!is<WebKitCSSResourceValue>(currValue.get()))
+ continue;
+
+ WebKitCSSResourceValue& maskImageValue = downcast<WebKitCSSResourceValue>(currValue.get());
+ RefPtr<CSSValue> maskInnerValue = maskImageValue.innerValue();
RefPtr<MaskImageOperation> newMaskImage;
-
+
if (is<CSSPrimitiveValue>(maskInnerValue.get())) {
RefPtr<CSSPrimitiveValue> primitiveValue = downcast<CSSPrimitiveValue>(maskInnerValue.get());
if (primitiveValue->isValueID() && primitiveValue->getValueID() == CSSValueNone)
@@ -3577,7 +3491,7 @@
URL url = m_state.document().completeURL(cssUrl);
bool isExternalDocument = (SVGURIReference::isExternalURIReference(cssUrl, m_state.document()));
- newMaskImage = MaskImageOperation::create(maskImageValue, cssUrl, url.fragmentIdentifier(), isExternalDocument, m_state.document().cachedResourceLoader());
+ newMaskImage = MaskImageOperation::create(&maskImageValue, cssUrl, url.fragmentIdentifier(), isExternalDocument, m_state.document().cachedResourceLoader());
if (isExternalDocument)
m_state.maskImagesWithPendingSVGDocuments().append(newMaskImage);
}
@@ -3592,12 +3506,6 @@
newMaskImage = MaskImageOperation::create();
outOperations.append(newMaskImage);
-
- if (maskImagesList.get()) {
- listIterator++;
- maskImageValue = (listIterator != maskImagesList->end() ? &downcast<WebKitCSSResourceValue>(listIterator->get()) : nullptr);
- } else
- maskImageValue = nullptr;
}
return true;
@@ -3721,10 +3629,9 @@
}
case CSSPropertyWebkitMaskImage: {
for (FillLayer* maskLayer = m_state.style()->accessMaskLayers(); maskLayer; maskLayer = maskLayer->next()) {
- RefPtr<MaskImageOperation> maskImage = maskLayer->maskImage();
- auto* styleImage = maskImage.get() ? maskImage->image() : nullptr;
+ auto* styleImage = maskLayer->image();
if (is<StylePendingImage>(styleImage))
- maskImage->setImage(loadPendingImage(downcast<StylePendingImage>(*styleImage)));
+ maskLayer->setImage(loadPendingImage(downcast<StylePendingImage>(*styleImage)));
}
break;
}
diff --git a/Source/WebCore/css/StyleResolver.h b/Source/WebCore/css/StyleResolver.h
index d88678e..d6083d5 100644
--- a/Source/WebCore/css/StyleResolver.h
+++ b/Source/WebCore/css/StyleResolver.h
@@ -301,7 +301,6 @@
#endif
void adjustStyleForInterCharacterRuby();
- void adjustStyleForMaskImages();
bool fastRejectSelector(const RuleData&) const;
diff --git a/Source/WebCore/page/FrameView.cpp b/Source/WebCore/page/FrameView.cpp
index f747057..0b6ab8e 100644
--- a/Source/WebCore/page/FrameView.cpp
+++ b/Source/WebCore/page/FrameView.cpp
@@ -4394,6 +4394,14 @@
return renderView->style().isFlippedBlocksWritingMode();
}
+bool FrameView::containsSVGDocument() const
+{
+ if (frame().document())
+ return frame().document()->isSVGDocument();
+
+ return false;
+}
+
void FrameView::notifyWidgetsInAllFrames(WidgetNotification notification)
{
for (Frame* frame = m_frame.get(); frame; frame = frame->tree().traverseNext(m_frame.get())) {
diff --git a/Source/WebCore/page/FrameView.h b/Source/WebCore/page/FrameView.h
index 077d169..a76170b 100644
--- a/Source/WebCore/page/FrameView.h
+++ b/Source/WebCore/page/FrameView.h
@@ -527,6 +527,7 @@
virtual bool isVerticalDocument() const override;
virtual bool isFlippedDocument() const override;
+ virtual bool containsSVGDocument() const override;
private:
explicit FrameView(Frame&);
diff --git a/Source/WebCore/page/animation/CSSPropertyAnimation.cpp b/Source/WebCore/page/animation/CSSPropertyAnimation.cpp
index 354354f..a977adb 100644
--- a/Source/WebCore/page/animation/CSSPropertyAnimation.cpp
+++ b/Source/WebCore/page/animation/CSSPropertyAnimation.cpp
@@ -42,7 +42,6 @@
#include "ClipPathOperation.h"
#include "FloatConversion.h"
#include "IdentityTransformOperation.h"
-#include "MaskImageOperation.h"
#include "Matrix3DTransformOperation.h"
#include "MatrixTransformOperation.h"
#include "RenderBox.h"
@@ -342,19 +341,6 @@
return to;
}
-static inline PassRefPtr<MaskImageOperation> blendFunc(const AnimationBase* anim, const RefPtr<MaskImageOperation> from, const RefPtr<MaskImageOperation> to, double progress)
-{
- if (!from.get() || !to.get())
- return to;
-
- // Only animates between masks using images (PNG, entire SVG, generated image).
- // It does not animate between <mask> elements (file.svg#identifier).
- if (from->image() && to->image())
- return MaskImageOperation::create(blendFunc(anim, from->image(), to->image(), progress));
-
- return to;
-}
-
static inline NinePieceImage blendFunc(const AnimationBase* anim, const NinePieceImage& from, const NinePieceImage& to, double progress)
{
if (!from.hasImage() || !to.hasImage())
@@ -514,30 +500,6 @@
}
};
-class MaskImagePropertyWrapper : public PropertyWrapper<const RefPtr<MaskImageOperation>> {
-public:
- MaskImagePropertyWrapper()
- : PropertyWrapper<const RefPtr<MaskImageOperation>>(CSSPropertyWebkitMaskImage, &RenderStyle::maskImage, &RenderStyle::setMaskImage)
- {
- }
-
- virtual bool equals(const RenderStyle* a, const RenderStyle* b) const
- {
- // If the style pointers are the same, don't bother doing the test.
- // If either is null, return false. If both are null, return true.
- if (a == b)
- return true;
- if (!a || !b)
- return false;
-
- const RefPtr<MaskImageOperation> maskImageA = (a->*m_getter)();
- const RefPtr<MaskImageOperation> maskImageB = (b->*m_getter)();
- StyleImage* styleImageA = (maskImageA ? maskImageA->image() : nullptr);
- StyleImage* styleImageB = (maskImageB ? maskImageB->image() : nullptr);
- return StyleImage::imagesEquivalent(styleImageA, styleImageB);
- }
-};
-
class PropertyWrapperColor : public PropertyWrapperGetter<Color> {
public:
PropertyWrapperColor(CSSPropertyID prop, Color (RenderStyle::*getter)() const, void (RenderStyle::*setter)(const Color&))
@@ -1190,7 +1152,7 @@
new FillLayersPropertyWrapper(CSSPropertyBackgroundImage, &RenderStyle::backgroundLayers, &RenderStyle::accessBackgroundLayers),
new StyleImagePropertyWrapper(CSSPropertyListStyleImage, &RenderStyle::listStyleImage, &RenderStyle::setListStyleImage),
- new MaskImagePropertyWrapper(),
+ new StyleImagePropertyWrapper(CSSPropertyWebkitMaskImage, &RenderStyle::maskImage, &RenderStyle::setMaskImage),
new StyleImagePropertyWrapper(CSSPropertyBorderImageSource, &RenderStyle::borderImageSource, &RenderStyle::setBorderImageSource),
new LengthPropertyWrapper<LengthBox>(CSSPropertyBorderImageSlice, &RenderStyle::borderImageSlices, &RenderStyle::setBorderImageSlices),
diff --git a/Source/WebCore/platform/ScrollView.h b/Source/WebCore/platform/ScrollView.h
index f2ef591..4846bde 100644
--- a/Source/WebCore/platform/ScrollView.h
+++ b/Source/WebCore/platform/ScrollView.h
@@ -410,6 +410,7 @@
// Subclassed by FrameView to check the writing-mode of the document.
virtual bool isVerticalDocument() const { return true; }
virtual bool isFlippedDocument() const { return false; }
+ virtual bool containsSVGDocument() const { return false; }
// Called to update the scrollbars to accurately reflect the state of the view.
void updateScrollbars(const IntSize& desiredOffset);
diff --git a/Source/WebCore/platform/graphics/MaskImageOperation.cpp b/Source/WebCore/platform/graphics/MaskImageOperation.cpp
index 4a7acd8..67af85c 100644
--- a/Source/WebCore/platform/graphics/MaskImageOperation.cpp
+++ b/Source/WebCore/platform/graphics/MaskImageOperation.cpp
@@ -82,15 +82,6 @@
MaskImageOperation::~MaskImageOperation()
{
- setRenderLayerImageClient(nullptr);
-}
-
-bool MaskImageOperation::operator==(const MaskImageOperation& other) const
-{
- if (m_url.length())
- return (m_url == other.m_url && m_fragment == other.m_fragment && m_isExternalDocument == other.m_isExternalDocument);
-
- return m_styleImage.get() == other.m_styleImage.get();
}
bool MaskImageOperation::isCSSValueNone() const
diff --git a/Source/WebCore/platform/graphics/MaskImageOperation.h b/Source/WebCore/platform/graphics/MaskImageOperation.h
index 6ea6079..48753bd 100644
--- a/Source/WebCore/platform/graphics/MaskImageOperation.h
+++ b/Source/WebCore/platform/graphics/MaskImageOperation.h
@@ -57,13 +57,9 @@
PassRefPtr<CSSValue> cssValue();
virtual ~MaskImageOperation();
-
- bool operator==(const MaskImageOperation&) const;
- inline bool operator!=(const MaskImageOperation& other) const { return !operator==(other); }
const String& url() const { return m_url; }
const String& fragment() const { return m_fragment; }
- bool isExternalDocument() const { return m_isExternalDocument; }
StyleImage* image() const { return m_styleImage.get(); }
void setImage(PassRefPtr<StyleImage> image) { m_styleImage = image; }
void setRenderLayerImageClient(CachedImageClient*);
diff --git a/Source/WebCore/rendering/RenderBox.cpp b/Source/WebCore/rendering/RenderBox.cpp
index f314ef4..42ca74f 100644
--- a/Source/WebCore/rendering/RenderBox.cpp
+++ b/Source/WebCore/rendering/RenderBox.cpp
@@ -1530,7 +1530,7 @@
LayoutRect result;
LayoutRect borderBox = borderBoxRect();
for (const FillLayer* maskLayer = style().maskLayers(); maskLayer; maskLayer = maskLayer->next()) {
- if (maskLayer->maskImage()) {
+ if (maskLayer->image()) {
BackgroundImageGeometry geometry;
// Masks should never have fixed attachment, so it's OK for paintContainer to be null.
calculateBackgroundImageGeometry(0, maskLayer, borderBox, geometry);
diff --git a/Source/WebCore/rendering/RenderBox.h b/Source/WebCore/rendering/RenderBox.h
index b548de9..f06c803 100644
--- a/Source/WebCore/rendering/RenderBox.h
+++ b/Source/WebCore/rendering/RenderBox.h
@@ -175,9 +175,6 @@
// Bounds of the outline box in absolute coords. Respects transforms
virtual LayoutRect outlineBoundsForRepaint(const RenderLayerModelObject* /*repaintContainer*/, const RenderGeometryMap*) const override final;
virtual void addFocusRingRects(Vector<IntRect>&, const LayoutPoint& additionalOffset, const RenderLayerModelObject* paintContainer = 0) override;
-
- virtual FloatRect repaintRectInLocalCoordinates() const override { return borderBoxRect(); }
- virtual FloatRect objectBoundingBox() const override { return borderBoxRect(); }
// Use this with caution! No type checking is done!
RenderBox* previousSiblingBox() const;
diff --git a/Source/WebCore/rendering/RenderBoxModelObject.cpp b/Source/WebCore/rendering/RenderBoxModelObject.cpp
index ddde6e5..d38ec1f 100644
--- a/Source/WebCore/rendering/RenderBoxModelObject.cpp
+++ b/Source/WebCore/rendering/RenderBoxModelObject.cpp
@@ -27,8 +27,6 @@
#include "RenderBoxModelObject.h"
#include "BorderEdge.h"
-#include "CachedImage.h"
-#include "CachedSVGDocument.h"
#include "FloatRoundedRect.h"
#include "Frame.h"
#include "FrameView.h"
@@ -49,17 +47,13 @@
#include "RenderNamedFlowFragment.h"
#include "RenderNamedFlowThread.h"
#include "RenderRegion.h"
-#include "RenderSVGResourceMasker.h"
#include "RenderTable.h"
#include "RenderTableRow.h"
#include "RenderText.h"
#include "RenderTextFragment.h"
#include "RenderView.h"
-#include "SVGImageForContainer.h"
-#include "SVGSVGElement.h"
#include "ScrollingConstraints.h"
#include "Settings.h"
-#include "StyleCachedImage.h"
#include "TransformState.h"
#include <wtf/NeverDestroyed.h>
@@ -682,7 +676,7 @@
FloatRect pixelSnappedRect = snapRectToDevicePixels(rect, deviceScaleFactor);
// Fast path for drawing simple color backgrounds.
- if (!isRoot && !clippedWithLocalScrolling && !shouldPaintBackgroundImage && isBorderFill && !bgLayer->hasMaskImage() && !bgLayer->next()) {
+ if (!isRoot && !clippedWithLocalScrolling && !shouldPaintBackgroundImage && isBorderFill && !bgLayer->next()) {
if (!colorVisible)
return;
@@ -843,26 +837,19 @@
}
// no progressive loading of the background image
- if (!baseBgColorOnly && (shouldPaintBackgroundImage || bgLayer->hasMaskImage())) {
+ if (!baseBgColorOnly && shouldPaintBackgroundImage) {
BackgroundImageGeometry geometry;
calculateBackgroundImageGeometry(paintInfo.paintContainer, bgLayer, scrolledPaintRect, geometry, backgroundObject);
geometry.clip(LayoutRect(pixelSnappedRect));
-
if (!geometry.destRect().isEmpty()) {
- bool didPaintCustomMask = false;
CompositeOperator compositeOp = op == CompositeSourceOver ? bgLayer->composite() : op;
auto clientForBackgroundImage = backgroundObject ? backgroundObject : this;
- RefPtr<Image> image = (bgImage ? bgImage->image(clientForBackgroundImage, geometry.tileSize()) : nullptr);
- if (!image.get() && bgLayer->hasMaskImage())
- didPaintCustomMask = bgLayer->maskImage()->drawMask(*this, geometry, context, compositeOp);
-
- if (!didPaintCustomMask && shouldPaintBackgroundImage) {
- context->setDrawLuminanceMask(bgLayer->maskSourceType() == MaskLuminance);
- bool useLowQualityScaling = shouldPaintAtLowQuality(context, image.get(), bgLayer, geometry.tileSize());
- if (image.get())
- image->setSpaceSize(geometry.spaceSize());
- context->drawTiledImage(image.get(), style().colorSpace(), geometry.destRect(), geometry.relativePhase(), geometry.tileSize(), ImagePaintingOptions(compositeOp, bgLayer->blendMode(), ImageOrientationDescription(), useLowQualityScaling));
- }
+ RefPtr<Image> image = bgImage->image(clientForBackgroundImage, geometry.tileSize());
+ context->setDrawLuminanceMask(bgLayer->maskSourceType() == MaskLuminance);
+ bool useLowQualityScaling = shouldPaintAtLowQuality(context, image.get(), bgLayer, geometry.tileSize());
+ if (image.get())
+ image->setSpaceSize(geometry.spaceSize());
+ context->drawTiledImage(image.get(), style().colorSpace(), geometry.destRect(), geometry.relativePhase(), geometry.tileSize(), ImagePaintingOptions(compositeOp, bgLayer->blendMode(), ImageOrientationDescription(), useLowQualityScaling));
}
}
@@ -967,13 +954,8 @@
StyleImage* image = fillLayer->image();
EFillSizeType type = fillLayer->size().type;
- LayoutSize imageIntrinsicSize;
- if (image) {
- imageIntrinsicSize = calculateImageIntrinsicDimensions(image, positioningAreaSize, ScaleByEffectiveZoom);
- imageIntrinsicSize.scale(1 / image->imageScaleFactor(), 1 / image->imageScaleFactor());
- } else
- imageIntrinsicSize = positioningAreaSize;
-
+ LayoutSize imageIntrinsicSize = calculateImageIntrinsicDimensions(image, positioningAreaSize, ScaleByEffectiveZoom);
+ imageIntrinsicSize.scale(1 / image->imageScaleFactor(), 1 / image->imageScaleFactor());
switch (type) {
case SizeLength: {
LayoutSize tileSize = positioningAreaSize;
@@ -1169,9 +1151,7 @@
auto clientForBackgroundImage = backgroundObject ? backgroundObject : this;
LayoutSize fillTileSize = calculateFillTileSize(fillLayer, positioningAreaSize);
- if (StyleImage* layerImage = fillLayer->image())
- layerImage->setContainerSizeForRenderer(clientForBackgroundImage, fillTileSize, style().effectiveZoom());
-
+ fillLayer->image()->setContainerSizeForRenderer(clientForBackgroundImage, fillTileSize, style().effectiveZoom());
geometry.setTileSize(fillTileSize);
EFillRepeat backgroundRepeatX = fillLayer->repeatX();
diff --git a/Source/WebCore/rendering/RenderElement.cpp b/Source/WebCore/rendering/RenderElement.cpp
index 225a109..693fd64 100644
--- a/Source/WebCore/rendering/RenderElement.cpp
+++ b/Source/WebCore/rendering/RenderElement.cpp
@@ -118,8 +118,6 @@
for (const FillLayer* maskLayer = m_style->maskLayers(); maskLayer; maskLayer = maskLayer->next()) {
if (StyleImage* maskImage = maskLayer->image())
maskImage->removeClient(this);
- else if (maskLayer->maskImage().get())
- maskLayer->maskImage()->removeRendererImageClient(this);
}
if (StyleImage* borderImage = m_style->borderImage().image())
@@ -325,22 +323,18 @@
void RenderElement::updateFillImages(const FillLayer* oldLayers, const FillLayer* newLayers)
{
// Optimize the common case
- if (oldLayers && !oldLayers->next() && newLayers && !newLayers->next() && oldLayers->image() == newLayers->image() && oldLayers->maskImage() == newLayers->maskImage())
+ if (oldLayers && !oldLayers->next() && newLayers && !newLayers->next() && (oldLayers->image() == newLayers->image()))
return;
// Go through the new layers and addClients first, to avoid removing all clients of an image.
for (const FillLayer* currNew = newLayers; currNew; currNew = currNew->next()) {
- if (StyleImage* image = currNew->image())
- image->addClient(this);
- else if (currNew->maskImage().get())
- currNew->maskImage()->addRendererImageClient(this);
+ if (currNew->image())
+ currNew->image()->addClient(this);
}
for (const FillLayer* currOld = oldLayers; currOld; currOld = currOld->next()) {
- if (StyleImage* image = currOld->image())
- image->removeClient(this);
- else if (currOld->maskImage().get())
- currOld->maskImage()->removeRendererImageClient(this);
+ if (currOld->image())
+ currOld->image()->removeClient(this);
}
}
diff --git a/Source/WebCore/rendering/RenderLayer.cpp b/Source/WebCore/rendering/RenderLayer.cpp
index 9025574..ff509e6 100644
--- a/Source/WebCore/rendering/RenderLayer.cpp
+++ b/Source/WebCore/rendering/RenderLayer.cpp
@@ -6502,7 +6502,6 @@
updateBlendMode();
#endif
updateOrRemoveFilterClients();
- updateOrRemoveMaskImageClients(oldStyle);
updateNeedsCompositedScrolling();
@@ -6657,19 +6656,6 @@
filterInfo->removeReferenceFilterClients();
}
-void RenderLayer::updateOrRemoveMaskImageClients(const RenderStyle* oldStyle)
-{
- if (oldStyle && oldStyle->maskImage().get()) {
- if (MaskImageInfo* maskImageInfo = MaskImageInfo::getIfExists(*this))
- maskImageInfo->removeMaskImageClients(*oldStyle);
- }
-
- if (renderer().style().maskImage().get())
- MaskImageInfo::get(*this).updateMaskImageClients();
- else if (MaskImageInfo* maskImageInfo = MaskImageInfo::getIfExists(*this))
- maskImageInfo->removeMaskImageClients(renderer().style());
-}
-
void RenderLayer::updateOrRemoveFilterEffectRenderer()
{
// FilterEffectRenderer is only used to render the filters in software mode,
diff --git a/Source/WebCore/rendering/RenderLayer.h b/Source/WebCore/rendering/RenderLayer.h
index 22630a2..3f11909 100644
--- a/Source/WebCore/rendering/RenderLayer.h
+++ b/Source/WebCore/rendering/RenderLayer.h
@@ -1127,8 +1127,6 @@
void updateOrRemoveFilterClients();
void updateOrRemoveFilterEffectRenderer();
- void updateOrRemoveMaskImageClients(const RenderStyle* oldStyle);
-
#if ENABLE(CSS_COMPOSITING)
void updateAncestorChainHasBlendingDescendants();
void dirtyAncestorChainHasBlendingDescendants();
diff --git a/Source/WebCore/rendering/RenderLayerMaskImageInfo.cpp b/Source/WebCore/rendering/RenderLayerMaskImageInfo.cpp
index 51126e8..a77fe08 100644
--- a/Source/WebCore/rendering/RenderLayerMaskImageInfo.cpp
+++ b/Source/WebCore/rendering/RenderLayerMaskImageInfo.cpp
@@ -77,7 +77,7 @@
RenderLayer::MaskImageInfo::~MaskImageInfo()
{
- removeMaskImageClients(m_layer.renderer().style());
+ removeMaskImageClients();
}
void RenderLayer::MaskImageInfo::notifyFinished(CachedResource*)
@@ -92,7 +92,7 @@
void RenderLayer::MaskImageInfo::updateMaskImageClients()
{
- removeMaskImageClients(m_layer.renderer().style());
+ removeMaskImageClients();
const FillLayer* maskLayer = m_layer.renderer().style().maskLayers();
while (maskLayer) {
@@ -119,9 +119,9 @@
}
}
-void RenderLayer::MaskImageInfo::removeMaskImageClients(const RenderStyle& oldStyle)
+void RenderLayer::MaskImageInfo::removeMaskImageClients()
{
- const FillLayer* maskLayer = oldStyle.maskLayers();
+ const FillLayer* maskLayer = m_layer.renderer().style().maskLayers();
while (maskLayer) {
if (maskLayer->maskImage())
maskLayer->maskImage()->setRenderLayerImageClient(nullptr);
diff --git a/Source/WebCore/rendering/RenderLayerMaskImageInfo.h b/Source/WebCore/rendering/RenderLayerMaskImageInfo.h
index e70279d..1d5079f 100644
--- a/Source/WebCore/rendering/RenderLayerMaskImageInfo.h
+++ b/Source/WebCore/rendering/RenderLayerMaskImageInfo.h
@@ -80,7 +80,7 @@
~MaskImageInfo();
void updateMaskImageClients();
- void removeMaskImageClients(const RenderStyle& oldStyle);
+ void removeMaskImageClients();
private:
friend void WTF::deleteOwnedPtr<MaskImageInfo>(MaskImageInfo*);
diff --git a/Source/WebCore/rendering/style/FillLayer.cpp b/Source/WebCore/rendering/style/FillLayer.cpp
index 555e028..82d9365 100644
--- a/Source/WebCore/rendering/style/FillLayer.cpp
+++ b/Source/WebCore/rendering/style/FillLayer.cpp
@@ -378,7 +378,7 @@
bool FillLayer::hasImage() const
{
for (auto* layer = this; layer; layer = layer->m_next.get()) {
- if (layer->image())
+ if (layer->m_image)
return true;
}
return false;
diff --git a/Source/WebCore/rendering/style/FillLayer.h b/Source/WebCore/rendering/style/FillLayer.h
index a6385a2..df4487a 100644
--- a/Source/WebCore/rendering/style/FillLayer.h
+++ b/Source/WebCore/rendering/style/FillLayer.h
@@ -68,8 +68,9 @@
explicit FillLayer(EFillLayerType);
~FillLayer();
- StyleImage* image() const { return hasMaskImage() ? maskImage()->image() : m_image.get(); }
const RefPtr<MaskImageOperation>& maskImage() const { return m_maskImageOperation; }
+ StyleImage* image() const { return m_image.get(); }
+ StyleImage* imageOrMaskImage() const { return hasMaskImage() ? maskImage()->image() : image(); }
const Length& xPosition() const { return m_xPosition; }
const Length& yPosition() const { return m_yPosition; }
BackgroundEdgeOrigin backgroundXOrigin() const { return static_cast<BackgroundEdgeOrigin>(m_backgroundXOrigin); }
@@ -181,8 +182,6 @@
std::unique_ptr<FillLayer> m_next;
- // FIXME: A FillLayer will always have at least one of these pointers null.
- // Maybe we could group them together somehow and decrease the size of FillLayer.
RefPtr<MaskImageOperation> m_maskImageOperation;
RefPtr<StyleImage> m_image;
diff --git a/Source/WebCore/rendering/style/RenderStyle.cpp b/Source/WebCore/rendering/style/RenderStyle.cpp
index 56ecdb7..8e58109 100644
--- a/Source/WebCore/rendering/style/RenderStyle.cpp
+++ b/Source/WebCore/rendering/style/RenderStyle.cpp
@@ -830,28 +830,6 @@
return false;
}
-
-void RenderStyle::setMaskImage(const Vector<RefPtr<MaskImageOperation>>& ops)
-{
- FillLayer* curLayer = &rareNonInheritedData.access()->m_mask;
- while (curLayer) {
- curLayer->setMaskImage(nullptr);
- curLayer = curLayer->next();
- }
-
- curLayer = &rareNonInheritedData.access()->m_mask;
- FillLayer* prevLayer = nullptr;
- for (auto& maskImage : ops) {
- if (!curLayer) {
- prevLayer->setNext(std::make_unique<FillLayer>(MaskFillLayer));
- curLayer = prevLayer->next();
- }
-
- curLayer->setMaskImage(maskImage);
- prevLayer = curLayer;
- curLayer = curLayer->next();
- }
-}
void RenderStyle::setClip(Length top, Length right, Length bottom, Length left)
{
diff --git a/Source/WebCore/rendering/style/RenderStyle.h b/Source/WebCore/rendering/style/RenderStyle.h
index 7c0cea0..a95ef17 100644
--- a/Source/WebCore/rendering/style/RenderStyle.h
+++ b/Source/WebCore/rendering/style/RenderStyle.h
@@ -108,7 +108,6 @@
class Font;
class FontMetrics;
class IntRect;
-class MaskImageOperation;
class Pair;
class ShadowData;
class StyleImage;
@@ -799,6 +798,7 @@
FillLayer* accessBackgroundLayers() { return &(m_background.access()->m_background); }
const FillLayer* backgroundLayers() const { return &(m_background->background()); }
+ StyleImage* maskImage() const { return rareNonInheritedData->m_mask.image(); }
EFillRepeat maskRepeatX() const { return static_cast<EFillRepeat>(rareNonInheritedData->m_mask.repeatX()); }
EFillRepeat maskRepeatY() const { return static_cast<EFillRepeat>(rareNonInheritedData->m_mask.repeatY()); }
CompositeOperator maskComposite() const { return static_cast<CompositeOperator>(rareNonInheritedData->m_mask.composite()); }
@@ -1025,7 +1025,7 @@
void applyTransform(TransformationMatrix&, const FloatRect& boundingBox, ApplyTransformOrigin = IncludeTransformOrigin) const;
void setPageScaleTransform(float);
- bool hasMask() const { return rareNonInheritedData->m_mask.hasNonEmptyMaskImage() || rareNonInheritedData->m_mask.hasImage() || rareNonInheritedData->m_maskBoxImage.hasImage(); }
+ bool hasMask() const { return rareNonInheritedData->m_mask.hasImage() || rareNonInheritedData->m_maskBoxImage.hasImage(); }
TextCombine textCombine() const { return static_cast<TextCombine>(rareNonInheritedData->m_textCombine); }
bool hasTextCombine() const { return textCombine() != TextCombineNone; }
@@ -1126,9 +1126,6 @@
FilterOperations& mutableFilter() { return rareNonInheritedData.access()->m_filter.access()->m_operations; }
const FilterOperations& filter() const { return rareNonInheritedData->m_filter->m_operations; }
bool hasFilter() const { return !rareNonInheritedData->m_filter->m_operations.operations().isEmpty(); }
-
- RefPtr<MaskImageOperation>& mutableMaskImage() { return rareNonInheritedData.access()->m_mask.m_maskImageOperation; }
- const RefPtr<MaskImageOperation> maskImage() const { return rareNonInheritedData->m_mask.maskImage(); }
#if ENABLE(FILTERS_LEVEL_2)
FilterOperations& mutableBackdropFilter() { return rareNonInheritedData.access()->m_backdropFilter.access()->m_operations; }
@@ -1380,6 +1377,8 @@
}
}
+ void setMaskImage(PassRefPtr<StyleImage> v) { rareNonInheritedData.access()->m_mask.setImage(v); }
+
void setMaskBoxImage(const NinePieceImage& b) { SET_VAR(rareNonInheritedData, m_maskBoxImage, b); }
void setMaskBoxImageSource(PassRefPtr<StyleImage> v) { rareNonInheritedData.access()->m_maskBoxImage.setImage(v); }
void setMaskXPosition(Length length) { SET_VAR(rareNonInheritedData, m_mask.m_xPosition, WTF::move(length)); }
@@ -1570,9 +1569,6 @@
void setBackdropFilter(const FilterOperations& ops) { SET_VAR(rareNonInheritedData.access()->m_backdropFilter, m_operations, ops); }
#endif
- void setMaskImage(const Vector<RefPtr<MaskImageOperation>>&);
- void setMaskImage(const RefPtr<MaskImageOperation> maskImage) { Vector<RefPtr<MaskImageOperation>> vectMask; vectMask.append(maskImage); setMaskImage(vectMask); }
-
void setTabSize(unsigned size) { SET_VAR(rareInheritedData, m_tabSize, size); }
// End CSS3 Setters