<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[186391] trunk</title>
</head>
<body>
<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; }
#msg dl a { font-weight: bold}
#msg dl a:link { color:#fc3; }
#msg dl a:active { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/186391">186391</a></dd>
<dt>Author</dt> <dd>simon.fraser@apple.com</dd>
<dt>Date</dt> <dd>2015-07-06 18:15:01 -0700 (Mon, 06 Jul 2015)</dd>
</dl>
<h3>Log Message</h3>
<pre>Revert use of SVG <mask> elements for -webkit-mask-image (<a href="http://trac.webkit.org/projects/webkit/changeset/176798">r176798</a>, <a href="http://trac.webkit.org/projects/webkit/changeset/177494">r177494</a>, <a href="http://trac.webkit.org/projects/webkit/changeset/186180">r186180</a>)
https://bugs.webkit.org/show_bug.cgi?id=146653
Reviewed by Dean Jackson.
Fixes rdar://problem/21435233.
<a href="http://trac.webkit.org/projects/webkit/changeset/177494">r177494</a> caused a number of regressions (bugs 141857, 146509, 146561), added new layering violations, and
was not being maintained, so revert it.
This patch reverts <a href="http://trac.webkit.org/projects/webkit/changeset/177494">r177494</a>.
Source/WebCore:
* WebCore.xcodeproj/project.pbxproj:
* css/CSSComputedStyleDeclaration.cpp:
(WebCore::ComputedStyleExtractor::propertyValue):
* css/CSSParser.cpp:
(WebCore::CSSParser::parseFillProperty):
(WebCore::CSSParser::parseMaskImage): Deleted.
* css/CSSParser.h:
* css/CSSPropertyNames.in:
* css/CSSValue.h:
* css/StyleBuilderConverter.h:
(WebCore::StyleBuilderConverter::convertMaskImageOperations): Deleted.
* css/StyleResolver.cpp:
(WebCore::StyleResolver::loadPendingSVGDocuments):
(WebCore::StyleResolver::loadPendingImages):
(WebCore::StyleResolver::adjustStyleForMaskImages): Deleted.
(WebCore::StyleResolver::applyMatchedProperties): Deleted.
* css/StyleResolver.h:
* page/FrameView.cpp:
(WebCore::FrameView::containsSVGDocument):
* page/FrameView.h:
* page/animation/CSSPropertyAnimation.cpp:
(WebCore::CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap):
(WebCore::blendFunc): Deleted.
(WebCore::MaskImagePropertyWrapper::MaskImagePropertyWrapper): Deleted.
(WebCore::MaskImagePropertyWrapper::equals): Deleted.
* platform/ScrollView.h:
(WebCore::ScrollView::containsSVGDocument):
* platform/graphics/MaskImageOperation.cpp:
(WebCore::MaskImageOperation::~MaskImageOperation): Deleted.
(WebCore::MaskImageOperation::operator==): Deleted.
* platform/graphics/MaskImageOperation.h:
* rendering/RenderBox.cpp:
(WebCore::RenderBox::maskClipRect):
* rendering/RenderBoxModelObject.cpp:
(WebCore::RenderBoxModelObject::paintFillLayerExtended):
* rendering/RenderElement.cpp:
(WebCore::RenderElement::updateFillImages):
(WebCore::RenderElement::~RenderElement): Deleted.
* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::~RenderLayer): Deleted.
(WebCore::RenderLayer::calculateClipRects): Deleted.
* rendering/RenderLayer.h:
* rendering/RenderLayerMaskImageInfo.cpp: Removed.
* rendering/style/FillLayer.h:
(WebCore::FillLayer::image):
(WebCore::FillLayer::imageOrMaskImage):
* rendering/style/RenderStyle.cpp:
(WebCore::RenderStyle::setMaskImage): Deleted.
* rendering/style/RenderStyle.h:
LayoutTests:
* css3/masking/mask-base64-expected.html: Removed.
* css3/masking/mask-base64.html: Removed.
* css3/masking/mask-multiple-values-expected.html: Removed.
* css3/masking/mask-multiple-values.html: Removed.
* css3/masking/mask-repeat-space-padding-expected.html:
* css3/masking/mask-repeat-space-padding.html:
* css3/masking/mask-svg-clipped-fragmentId-expected.html: Removed.
* css3/masking/mask-svg-clipped-fragmentId.html: Removed.
* css3/masking/mask-svg-fragmentId-expected.html: Removed.
* css3/masking/mask-svg-fragmentId.html: Removed.
* css3/masking/mask-svg-inline-fragmentId-expected.html: Removed.
* css3/masking/mask-svg-inline-fragmentId.html: Removed.
* css3/masking/mask-svg-inline-invalid-fragmentId-expected.html: Removed.
* css3/masking/mask-svg-inline-invalid-fragmentId.html: Removed.
* css3/masking/mask-svg-invalid-fragmentId-expected.html: Removed.
* css3/masking/mask-svg-invalid-fragmentId.html: Removed.
* css3/masking/mask-svg-no-fragmentId-expected.html: Removed.
* css3/masking/mask-svg-no-fragmentId-tiled-expected.html: Removed.
* css3/masking/mask-svg-no-fragmentId-tiled.html: Removed.
* css3/masking/mask-svg-no-fragmentId.html: Removed.
* css3/masking/mask-svg-script-entire-svg-to-mask-expected.html: Removed.
* css3/masking/mask-svg-script-entire-svg-to-mask.html: Removed.
* css3/masking/mask-svg-script-mask-to-entire-svg-expected.html: Removed.
* css3/masking/mask-svg-script-mask-to-entire-svg.html: Removed.
* css3/masking/mask-svg-script-mask-to-none-expected.html: Removed.
* css3/masking/mask-svg-script-mask-to-none.html: Removed.
* css3/masking/mask-svg-script-mask-to-png-expected.html: Removed.
* css3/masking/mask-svg-script-mask-to-png.html: Removed.
* css3/masking/mask-svg-script-none-to-mask-expected.html: Removed.
* css3/masking/mask-svg-script-none-to-mask.html: Removed.
* css3/masking/mask-svg-script-none-to-png-expected.html: Removed.
* css3/masking/mask-svg-script-none-to-png.html: Removed.
* css3/masking/mask-svg-script-png-to-mask-expected.html: Removed.
* css3/masking/mask-svg-script-png-to-mask.html: Removed.
* css3/masking/mask-svg-script-png-to-none-expected.html: Removed.
* css3/masking/mask-svg-script-png-to-none.html: Removed.
* css3/masking/resources/masks.svg: Removed.</pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkLayoutTestscss3maskingmaskrepeatspacepaddingexpectedhtml">trunk/LayoutTests/css3/masking/mask-repeat-space-padding-expected.html</a></li>
<li><a href="#trunkLayoutTestscss3maskingmaskrepeatspacepaddinghtml">trunk/LayoutTests/css3/masking/mask-repeat-space-padding.html</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreWebCorexcodeprojprojectpbxproj">trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj</a></li>
<li><a href="#trunkSourceWebCorecssCSSComputedStyleDeclarationcpp">trunk/Source/WebCore/css/CSSComputedStyleDeclaration.cpp</a></li>
<li><a href="#trunkSourceWebCorecssCSSParsercpp">trunk/Source/WebCore/css/CSSParser.cpp</a></li>
<li><a href="#trunkSourceWebCorecssCSSParserh">trunk/Source/WebCore/css/CSSParser.h</a></li>
<li><a href="#trunkSourceWebCorecssCSSPropertyNamesin">trunk/Source/WebCore/css/CSSPropertyNames.in</a></li>
<li><a href="#trunkSourceWebCorecssCSSValueh">trunk/Source/WebCore/css/CSSValue.h</a></li>
<li><a href="#trunkSourceWebCorecssStyleBuilderConverterh">trunk/Source/WebCore/css/StyleBuilderConverter.h</a></li>
<li><a href="#trunkSourceWebCorecssStyleResolvercpp">trunk/Source/WebCore/css/StyleResolver.cpp</a></li>
<li><a href="#trunkSourceWebCorecssStyleResolverh">trunk/Source/WebCore/css/StyleResolver.h</a></li>
<li><a href="#trunkSourceWebCorepageFrameViewcpp">trunk/Source/WebCore/page/FrameView.cpp</a></li>
<li><a href="#trunkSourceWebCorepageFrameViewh">trunk/Source/WebCore/page/FrameView.h</a></li>
<li><a href="#trunkSourceWebCorepageanimationCSSPropertyAnimationcpp">trunk/Source/WebCore/page/animation/CSSPropertyAnimation.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformScrollViewh">trunk/Source/WebCore/platform/ScrollView.h</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsMaskImageOperationcpp">trunk/Source/WebCore/platform/graphics/MaskImageOperation.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsMaskImageOperationh">trunk/Source/WebCore/platform/graphics/MaskImageOperation.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderBoxcpp">trunk/Source/WebCore/rendering/RenderBox.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderBoxModelObjectcpp">trunk/Source/WebCore/rendering/RenderBoxModelObject.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderElementcpp">trunk/Source/WebCore/rendering/RenderElement.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderLayercpp">trunk/Source/WebCore/rendering/RenderLayer.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderLayerh">trunk/Source/WebCore/rendering/RenderLayer.h</a></li>
<li><a href="#trunkSourceWebCorerenderingstyleFillLayerh">trunk/Source/WebCore/rendering/style/FillLayer.h</a></li>
<li><a href="#trunkSourceWebCorerenderingstyleRenderStylecpp">trunk/Source/WebCore/rendering/style/RenderStyle.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingstyleRenderStyleh">trunk/Source/WebCore/rendering/style/RenderStyle.h</a></li>
</ul>
<h3>Removed Paths</h3>
<ul>
<li><a href="#trunkLayoutTestscss3maskingmaskmultiplevaluesexpectedhtml">trunk/LayoutTests/css3/masking/mask-multiple-values-expected.html</a></li>
<li><a href="#trunkLayoutTestscss3maskingmaskmultiplevalueshtml">trunk/LayoutTests/css3/masking/mask-multiple-values.html</a></li>
<li><a href="#trunkLayoutTestscss3maskingmasksvgclippedfragmentIdexpectedhtml">trunk/LayoutTests/css3/masking/mask-svg-clipped-fragmentId-expected.html</a></li>
<li><a href="#trunkLayoutTestscss3maskingmasksvgclippedfragmentIdhtml">trunk/LayoutTests/css3/masking/mask-svg-clipped-fragmentId.html</a></li>
<li><a href="#trunkLayoutTestscss3maskingmasksvgfragmentIdexpectedhtml">trunk/LayoutTests/css3/masking/mask-svg-fragmentId-expected.html</a></li>
<li><a href="#trunkLayoutTestscss3maskingmasksvgfragmentIdhtml">trunk/LayoutTests/css3/masking/mask-svg-fragmentId.html</a></li>
<li><a href="#trunkLayoutTestscss3maskingmasksvginlinefragmentIdexpectedhtml">trunk/LayoutTests/css3/masking/mask-svg-inline-fragmentId-expected.html</a></li>
<li><a href="#trunkLayoutTestscss3maskingmasksvginlinefragmentIdhtml">trunk/LayoutTests/css3/masking/mask-svg-inline-fragmentId.html</a></li>
<li><a href="#trunkLayoutTestscss3maskingmasksvginlineinvalidfragmentIdexpectedhtml">trunk/LayoutTests/css3/masking/mask-svg-inline-invalid-fragmentId-expected.html</a></li>
<li><a href="#trunkLayoutTestscss3maskingmasksvginlineinvalidfragmentIdhtml">trunk/LayoutTests/css3/masking/mask-svg-inline-invalid-fragmentId.html</a></li>
<li><a href="#trunkLayoutTestscss3maskingmasksvginvalidfragmentIdexpectedhtml">trunk/LayoutTests/css3/masking/mask-svg-invalid-fragmentId-expected.html</a></li>
<li><a href="#trunkLayoutTestscss3maskingmasksvginvalidfragmentIdhtml">trunk/LayoutTests/css3/masking/mask-svg-invalid-fragmentId.html</a></li>
<li><a href="#trunkLayoutTestscss3maskingmasksvgscriptentiresvgtomaskexpectedhtml">trunk/LayoutTests/css3/masking/mask-svg-script-entire-svg-to-mask-expected.html</a></li>
<li><a href="#trunkLayoutTestscss3maskingmasksvgscriptentiresvgtomaskhtml">trunk/LayoutTests/css3/masking/mask-svg-script-entire-svg-to-mask.html</a></li>
<li><a href="#trunkLayoutTestscss3maskingmasksvgscriptmasktoentiresvgexpectedhtml">trunk/LayoutTests/css3/masking/mask-svg-script-mask-to-entire-svg-expected.html</a></li>
<li><a href="#trunkLayoutTestscss3maskingmasksvgscriptmasktoentiresvghtml">trunk/LayoutTests/css3/masking/mask-svg-script-mask-to-entire-svg.html</a></li>
<li><a href="#trunkLayoutTestscss3maskingmasksvgscriptmasktononeexpectedhtml">trunk/LayoutTests/css3/masking/mask-svg-script-mask-to-none-expected.html</a></li>
<li><a href="#trunkLayoutTestscss3maskingmasksvgscriptmasktononehtml">trunk/LayoutTests/css3/masking/mask-svg-script-mask-to-none.html</a></li>
<li><a href="#trunkLayoutTestscss3maskingmasksvgscriptmasktopngexpectedhtml">trunk/LayoutTests/css3/masking/mask-svg-script-mask-to-png-expected.html</a></li>
<li><a href="#trunkLayoutTestscss3maskingmasksvgscriptmasktopnghtml">trunk/LayoutTests/css3/masking/mask-svg-script-mask-to-png.html</a></li>
<li><a href="#trunkLayoutTestscss3maskingmasksvgscriptnonetomaskexpectedhtml">trunk/LayoutTests/css3/masking/mask-svg-script-none-to-mask-expected.html</a></li>
<li><a href="#trunkLayoutTestscss3maskingmasksvgscriptnonetomaskhtml">trunk/LayoutTests/css3/masking/mask-svg-script-none-to-mask.html</a></li>
<li><a href="#trunkLayoutTestscss3maskingmasksvgscriptpngtomaskexpectedhtml">trunk/LayoutTests/css3/masking/mask-svg-script-png-to-mask-expected.html</a></li>
<li><a href="#trunkLayoutTestscss3maskingmasksvgscriptpngtomaskhtml">trunk/LayoutTests/css3/masking/mask-svg-script-png-to-mask.html</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderLayerMaskImageInfocpp">trunk/Source/WebCore/rendering/RenderLayerMaskImageInfo.cpp</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (186390 => 186391)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2015-07-07 01:11:49 UTC (rev 186390)
+++ trunk/LayoutTests/ChangeLog        2015-07-07 01:15:01 UTC (rev 186391)
</span><span class="lines">@@ -1,3 +1,55 @@
</span><ins>+2015-07-06 Simon Fraser <simon.fraser@apple.com>
+
+ Revert use of SVG <mask> elements for -webkit-mask-image (r176798, r177494, r186180)
+ https://bugs.webkit.org/show_bug.cgi?id=146653
+
+ Reviewed by Dean Jackson.
+
+ Fixes rdar://problem/21435233.
+
+ r177494 caused a number of regressions (bugs 141857, 146509, 146561), added new layering violations, and
+ was not being maintained, so revert it.
+
+ This patch reverts r177494.
+
+ * css3/masking/mask-base64-expected.html: Removed.
+ * css3/masking/mask-base64.html: Removed.
+ * css3/masking/mask-multiple-values-expected.html: Removed.
+ * css3/masking/mask-multiple-values.html: Removed.
+ * css3/masking/mask-repeat-space-padding-expected.html:
+ * css3/masking/mask-repeat-space-padding.html:
+ * css3/masking/mask-svg-clipped-fragmentId-expected.html: Removed.
+ * css3/masking/mask-svg-clipped-fragmentId.html: Removed.
+ * css3/masking/mask-svg-fragmentId-expected.html: Removed.
+ * css3/masking/mask-svg-fragmentId.html: Removed.
+ * css3/masking/mask-svg-inline-fragmentId-expected.html: Removed.
+ * css3/masking/mask-svg-inline-fragmentId.html: Removed.
+ * css3/masking/mask-svg-inline-invalid-fragmentId-expected.html: Removed.
+ * css3/masking/mask-svg-inline-invalid-fragmentId.html: Removed.
+ * css3/masking/mask-svg-invalid-fragmentId-expected.html: Removed.
+ * css3/masking/mask-svg-invalid-fragmentId.html: Removed.
+ * css3/masking/mask-svg-no-fragmentId-expected.html: Removed.
+ * css3/masking/mask-svg-no-fragmentId-tiled-expected.html: Removed.
+ * css3/masking/mask-svg-no-fragmentId-tiled.html: Removed.
+ * css3/masking/mask-svg-no-fragmentId.html: Removed.
+ * css3/masking/mask-svg-script-entire-svg-to-mask-expected.html: Removed.
+ * css3/masking/mask-svg-script-entire-svg-to-mask.html: Removed.
+ * css3/masking/mask-svg-script-mask-to-entire-svg-expected.html: Removed.
+ * css3/masking/mask-svg-script-mask-to-entire-svg.html: Removed.
+ * css3/masking/mask-svg-script-mask-to-none-expected.html: Removed.
+ * css3/masking/mask-svg-script-mask-to-none.html: Removed.
+ * css3/masking/mask-svg-script-mask-to-png-expected.html: Removed.
+ * css3/masking/mask-svg-script-mask-to-png.html: Removed.
+ * css3/masking/mask-svg-script-none-to-mask-expected.html: Removed.
+ * css3/masking/mask-svg-script-none-to-mask.html: Removed.
+ * css3/masking/mask-svg-script-none-to-png-expected.html: Removed.
+ * css3/masking/mask-svg-script-none-to-png.html: Removed.
+ * css3/masking/mask-svg-script-png-to-mask-expected.html: Removed.
+ * css3/masking/mask-svg-script-png-to-mask.html: Removed.
+ * css3/masking/mask-svg-script-png-to-none-expected.html: Removed.
+ * css3/masking/mask-svg-script-png-to-none.html: Removed.
+ * css3/masking/resources/masks.svg: Removed.
+
</ins><span class="cx"> 2015-07-06 Daniel Bates <dabates@apple.com>
</span><span class="cx">
</span><span class="cx"> Isolated worlds should respect Content Security Policy; User Agent Shadow DOM
</span></span></pre></div>
<a id="trunkLayoutTestscss3maskingmaskmultiplevaluesexpectedhtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/css3/masking/mask-multiple-values-expected.html (186390 => 186391)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/css3/masking/mask-multiple-values-expected.html        2015-07-07 01:11:49 UTC (rev 186390)
+++ trunk/LayoutTests/css3/masking/mask-multiple-values-expected.html        2015-07-07 01:15:01 UTC (rev 186391)
</span><span class="lines">@@ -1,57 +0,0 @@
</span><del>-<!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>
-
</del></span></pre></div>
<a id="trunkLayoutTestscss3maskingmaskmultiplevalueshtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/css3/masking/mask-multiple-values.html (186390 => 186391)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/css3/masking/mask-multiple-values.html        2015-07-07 01:11:49 UTC (rev 186390)
+++ trunk/LayoutTests/css3/masking/mask-multiple-values.html        2015-07-07 01:15:01 UTC (rev 186391)
</span><span class="lines">@@ -1,36 +0,0 @@
</span><del>-<!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>
-
</del></span></pre></div>
<a id="trunkLayoutTestscss3maskingmaskrepeatspacepaddingexpectedhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/css3/masking/mask-repeat-space-padding-expected.html (186390 => 186391)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/css3/masking/mask-repeat-space-padding-expected.html        2015-07-07 01:11:49 UTC (rev 186390)
+++ trunk/LayoutTests/css3/masking/mask-repeat-space-padding-expected.html        2015-07-07 01:15:01 UTC (rev 186391)
</span><span class="lines">@@ -26,7 +26,7 @@
</span><span class="cx"> function addMasks() {
</span><span class="cx"> for (var x = 0; x < width; x += sizeX + spaceX) {
</span><span class="cx"> for (var y = 0; y < height; y += sizeY + spaceY) {
</span><del>- urls.push("url(resources/circle.svg)");
</del><ins>+ urls.push("url(resources/circle.png)");
</ins><span class="cx"> size.push(sizeX + "px " + sizeY + "px");
</span><span class="cx"> position.push(x + "px " + y + "px");
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkLayoutTestscss3maskingmaskrepeatspacepaddinghtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/css3/masking/mask-repeat-space-padding.html (186390 => 186391)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/css3/masking/mask-repeat-space-padding.html        2015-07-07 01:11:49 UTC (rev 186390)
+++ trunk/LayoutTests/css3/masking/mask-repeat-space-padding.html        2015-07-07 01:15:01 UTC (rev 186391)
</span><span class="lines">@@ -13,7 +13,7 @@
</span><span class="cx"> background-color: red;
</span><span class="cx"> border: 50px solid blue;
</span><span class="cx"> padding: 50px;
</span><del>- -webkit-mask-image: url("resources/circle.svg");
</del><ins>+ -webkit-mask-image: url("resources/circle.png");
</ins><span class="cx"> -webkit-mask-size: 100px;
</span><span class="cx"> -webkit-mask-repeat: space;
</span><span class="cx"> -webkit-mask-origin: padding-box;
</span></span></pre></div>
<a id="trunkLayoutTestscss3maskingmasksvgclippedfragmentIdexpectedhtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/css3/masking/mask-svg-clipped-fragmentId-expected.html (186390 => 186391)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/css3/masking/mask-svg-clipped-fragmentId-expected.html        2015-07-07 01:11:49 UTC (rev 186390)
+++ trunk/LayoutTests/css3/masking/mask-svg-clipped-fragmentId-expected.html        2015-07-07 01:15:01 UTC (rev 186391)
</span><span class="lines">@@ -1,40 +0,0 @@
</span><del>-<!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 &lt;mask&gt; 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>
-
</del></span></pre></div>
<a id="trunkLayoutTestscss3maskingmasksvgclippedfragmentIdhtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/css3/masking/mask-svg-clipped-fragmentId.html (186390 => 186391)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/css3/masking/mask-svg-clipped-fragmentId.html        2015-07-07 01:11:49 UTC (rev 186390)
+++ trunk/LayoutTests/css3/masking/mask-svg-clipped-fragmentId.html        2015-07-07 01:15:01 UTC (rev 186391)
</span><span class="lines">@@ -1,35 +0,0 @@
</span><del>-<!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 &lt;mask&gt; 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>
-
</del></span></pre></div>
<a id="trunkLayoutTestscss3maskingmasksvgfragmentIdexpectedhtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/css3/masking/mask-svg-fragmentId-expected.html (186390 => 186391)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/css3/masking/mask-svg-fragmentId-expected.html        2015-07-07 01:11:49 UTC (rev 186390)
+++ trunk/LayoutTests/css3/masking/mask-svg-fragmentId-expected.html        2015-07-07 01:15:01 UTC (rev 186391)
</span><span class="lines">@@ -1,17 +0,0 @@
</span><del>-<!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 &lt;mask&gt; 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>
</del><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestscss3maskingmasksvgfragmentIdhtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/css3/masking/mask-svg-fragmentId.html (186390 => 186391)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/css3/masking/mask-svg-fragmentId.html        2015-07-07 01:11:49 UTC (rev 186390)
+++ trunk/LayoutTests/css3/masking/mask-svg-fragmentId.html        2015-07-07 01:15:01 UTC (rev 186391)
</span><span class="lines">@@ -1,28 +0,0 @@
</span><del>-<!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 &lt;mask&gt; 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>
</del><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestscss3maskingmasksvginlinefragmentIdexpectedhtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/css3/masking/mask-svg-inline-fragmentId-expected.html (186390 => 186391)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/css3/masking/mask-svg-inline-fragmentId-expected.html        2015-07-07 01:11:49 UTC (rev 186390)
+++ trunk/LayoutTests/css3/masking/mask-svg-inline-fragmentId-expected.html        2015-07-07 01:15:01 UTC (rev 186391)
</span><span class="lines">@@ -1,17 +0,0 @@
</span><del>-<!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 &lt;mask&gt; 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>
</del><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestscss3maskingmasksvginlinefragmentIdhtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/css3/masking/mask-svg-inline-fragmentId.html (186390 => 186391)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/css3/masking/mask-svg-inline-fragmentId.html        2015-07-07 01:11:49 UTC (rev 186390)
+++ trunk/LayoutTests/css3/masking/mask-svg-inline-fragmentId.html        2015-07-07 01:15:01 UTC (rev 186391)
</span><span class="lines">@@ -1,31 +0,0 @@
</span><del>-<!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 &lt;mask&gt; 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>
</del><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestscss3maskingmasksvginlineinvalidfragmentIdexpectedhtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/css3/masking/mask-svg-inline-invalid-fragmentId-expected.html (186390 => 186391)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/css3/masking/mask-svg-inline-invalid-fragmentId-expected.html        2015-07-07 01:11:49 UTC (rev 186390)
+++ trunk/LayoutTests/css3/masking/mask-svg-inline-invalid-fragmentId-expected.html        2015-07-07 01:15:01 UTC (rev 186391)
</span><span class="lines">@@ -1,23 +0,0 @@
</span><del>-<!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>
</del><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestscss3maskingmasksvginlineinvalidfragmentIdhtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/css3/masking/mask-svg-inline-invalid-fragmentId.html (186390 => 186391)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/css3/masking/mask-svg-inline-invalid-fragmentId.html        2015-07-07 01:11:49 UTC (rev 186390)
+++ trunk/LayoutTests/css3/masking/mask-svg-inline-invalid-fragmentId.html        2015-07-07 01:15:01 UTC (rev 186391)
</span><span class="lines">@@ -1,34 +0,0 @@
</span><del>-<!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>
</del><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestscss3maskingmasksvginvalidfragmentIdexpectedhtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/css3/masking/mask-svg-invalid-fragmentId-expected.html (186390 => 186391)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/css3/masking/mask-svg-invalid-fragmentId-expected.html        2015-07-07 01:11:49 UTC (rev 186390)
+++ trunk/LayoutTests/css3/masking/mask-svg-invalid-fragmentId-expected.html        2015-07-07 01:15:01 UTC (rev 186391)
</span><span class="lines">@@ -1,21 +0,0 @@
</span><del>-<!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>
</del><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestscss3maskingmasksvginvalidfragmentIdhtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/css3/masking/mask-svg-invalid-fragmentId.html (186390 => 186391)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/css3/masking/mask-svg-invalid-fragmentId.html        2015-07-07 01:11:49 UTC (rev 186390)
+++ trunk/LayoutTests/css3/masking/mask-svg-invalid-fragmentId.html        2015-07-07 01:15:01 UTC (rev 186391)
</span><span class="lines">@@ -1,31 +0,0 @@
</span><del>-<!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>
</del><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestscss3maskingmasksvgscriptentiresvgtomaskexpectedhtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/css3/masking/mask-svg-script-entire-svg-to-mask-expected.html (186390 => 186391)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/css3/masking/mask-svg-script-entire-svg-to-mask-expected.html        2015-07-07 01:11:49 UTC (rev 186390)
+++ trunk/LayoutTests/css3/masking/mask-svg-script-entire-svg-to-mask-expected.html        2015-07-07 01:15:01 UTC (rev 186391)
</span><span class="lines">@@ -1,17 +0,0 @@
</span><del>-<!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 &lt;mask&gt; 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>
</del><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestscss3maskingmasksvgscriptentiresvgtomaskhtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/css3/masking/mask-svg-script-entire-svg-to-mask.html (186390 => 186391)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/css3/masking/mask-svg-script-entire-svg-to-mask.html        2015-07-07 01:11:49 UTC (rev 186390)
+++ trunk/LayoutTests/css3/masking/mask-svg-script-entire-svg-to-mask.html        2015-07-07 01:15:01 UTC (rev 186391)
</span><span class="lines">@@ -1,33 +0,0 @@
</span><del>-<!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 &lt;mask&gt; 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>
</del><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestscss3maskingmasksvgscriptmasktoentiresvgexpectedhtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/css3/masking/mask-svg-script-mask-to-entire-svg-expected.html (186390 => 186391)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/css3/masking/mask-svg-script-mask-to-entire-svg-expected.html        2015-07-07 01:11:49 UTC (rev 186390)
+++ trunk/LayoutTests/css3/masking/mask-svg-script-mask-to-entire-svg-expected.html        2015-07-07 01:15:01 UTC (rev 186391)
</span><span class="lines">@@ -1,21 +0,0 @@
</span><del>-<!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 &lt;mask&gt; element from an SVG file and then changes it to the entire SVG file via a script.</p>
- <div id="maskedElement"></div>
- </body>
-</html>
</del><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestscss3maskingmasksvgscriptmasktoentiresvghtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/css3/masking/mask-svg-script-mask-to-entire-svg.html (186390 => 186391)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/css3/masking/mask-svg-script-mask-to-entire-svg.html        2015-07-07 01:11:49 UTC (rev 186390)
+++ trunk/LayoutTests/css3/masking/mask-svg-script-mask-to-entire-svg.html        2015-07-07 01:15:01 UTC (rev 186391)
</span><span class="lines">@@ -1,36 +0,0 @@
</span><del>-<!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 &lt;mask&gt; 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>
</del><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestscss3maskingmasksvgscriptmasktononeexpectedhtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/css3/masking/mask-svg-script-mask-to-none-expected.html (186390 => 186391)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/css3/masking/mask-svg-script-mask-to-none-expected.html        2015-07-07 01:11:49 UTC (rev 186390)
+++ trunk/LayoutTests/css3/masking/mask-svg-script-mask-to-none-expected.html        2015-07-07 01:15:01 UTC (rev 186391)
</span><span class="lines">@@ -1,20 +0,0 @@
</span><del>-<!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 &lt;mask&gt; element from an external SVG file and then changes it to 'none' via a script.</p>
- <div id="maskedElement"></div>
- </body>
-</html>
</del><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestscss3maskingmasksvgscriptmasktononehtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/css3/masking/mask-svg-script-mask-to-none.html (186390 => 186391)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/css3/masking/mask-svg-script-mask-to-none.html        2015-07-07 01:11:49 UTC (rev 186390)
+++ trunk/LayoutTests/css3/masking/mask-svg-script-mask-to-none.html        2015-07-07 01:15:01 UTC (rev 186391)
</span><span class="lines">@@ -1,34 +0,0 @@
</span><del>-<!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 &lt;mask&gt; 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>
</del><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestscss3maskingmasksvgscriptmasktopngexpectedhtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/css3/masking/mask-svg-script-mask-to-png-expected.html (186390 => 186391)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/css3/masking/mask-svg-script-mask-to-png-expected.html        2015-07-07 01:11:49 UTC (rev 186390)
+++ trunk/LayoutTests/css3/masking/mask-svg-script-mask-to-png-expected.html        2015-07-07 01:15:01 UTC (rev 186391)
</span><span class="lines">@@ -1,21 +0,0 @@
</span><del>-<!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 &lt;mask&gt; element from an SVG file and then changes it to a PNG via a script.</p>
- <div id="maskedElement"></div>
- </body>
-</html>
</del><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestscss3maskingmasksvgscriptmasktopnghtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/css3/masking/mask-svg-script-mask-to-png.html (186390 => 186391)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/css3/masking/mask-svg-script-mask-to-png.html        2015-07-07 01:11:49 UTC (rev 186390)
+++ trunk/LayoutTests/css3/masking/mask-svg-script-mask-to-png.html        2015-07-07 01:15:01 UTC (rev 186391)
</span><span class="lines">@@ -1,36 +0,0 @@
</span><del>-<!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 &lt;mask&gt; 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>
</del><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestscss3maskingmasksvgscriptnonetomaskexpectedhtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/css3/masking/mask-svg-script-none-to-mask-expected.html (186390 => 186391)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/css3/masking/mask-svg-script-none-to-mask-expected.html        2015-07-07 01:11:49 UTC (rev 186390)
+++ trunk/LayoutTests/css3/masking/mask-svg-script-none-to-mask-expected.html        2015-07-07 01:15:01 UTC (rev 186391)
</span><span class="lines">@@ -1,21 +0,0 @@
</span><del>-<!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 &lt;mask&gt; element from an external SVG via a script.</p>
- <div id="maskedElement"></div>
- </body>
-</html>
</del><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestscss3maskingmasksvgscriptnonetomaskhtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/css3/masking/mask-svg-script-none-to-mask.html (186390 => 186391)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/css3/masking/mask-svg-script-none-to-mask.html        2015-07-07 01:11:49 UTC (rev 186390)
+++ trunk/LayoutTests/css3/masking/mask-svg-script-none-to-mask.html        2015-07-07 01:15:01 UTC (rev 186391)
</span><span class="lines">@@ -1,32 +0,0 @@
</span><del>-<!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 &lt;mask&gt; 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>
</del><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestscss3maskingmasksvgscriptpngtomaskexpectedhtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/css3/masking/mask-svg-script-png-to-mask-expected.html (186390 => 186391)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/css3/masking/mask-svg-script-png-to-mask-expected.html        2015-07-07 01:11:49 UTC (rev 186390)
+++ trunk/LayoutTests/css3/masking/mask-svg-script-png-to-mask-expected.html        2015-07-07 01:15:01 UTC (rev 186391)
</span><span class="lines">@@ -1,17 +0,0 @@
</span><del>-<!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 &lt;mask&gt; 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>
</del><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestscss3maskingmasksvgscriptpngtomaskhtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/css3/masking/mask-svg-script-png-to-mask.html (186390 => 186391)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/css3/masking/mask-svg-script-png-to-mask.html        2015-07-07 01:11:49 UTC (rev 186390)
+++ trunk/LayoutTests/css3/masking/mask-svg-script-png-to-mask.html        2015-07-07 01:15:01 UTC (rev 186391)
</span><span class="lines">@@ -1,33 +0,0 @@
</span><del>-<!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 &lt;mask&gt; 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>
</del><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (186390 => 186391)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2015-07-07 01:11:49 UTC (rev 186390)
+++ trunk/Source/WebCore/ChangeLog        2015-07-07 01:15:01 UTC (rev 186391)
</span><span class="lines">@@ -2,6 +2,70 @@
</span><span class="cx">
</span><span class="cx"> Revert use of SVG <mask> elements for -webkit-mask-image (r176798, r177494, r186180)
</span><span class="cx"> https://bugs.webkit.org/show_bug.cgi?id=146653
</span><ins>+
+ Reviewed by Dean Jackson.
+
+ Fixes rdar://problem/21435233.
+
+ r177494 caused a number of regressions (bugs 141857, 146509, 146561), added new layering violations, and
+ was not being maintained, so revert it.
+
+ This patch reverts r177494.
+
+ * WebCore.xcodeproj/project.pbxproj:
+ * css/CSSComputedStyleDeclaration.cpp:
+ (WebCore::ComputedStyleExtractor::propertyValue):
+ * css/CSSParser.cpp:
+ (WebCore::CSSParser::parseFillProperty):
+ (WebCore::CSSParser::parseMaskImage): Deleted.
+ * css/CSSParser.h:
+ * css/CSSPropertyNames.in:
+ * css/CSSValue.h:
+ * css/StyleBuilderConverter.h:
+ (WebCore::StyleBuilderConverter::convertMaskImageOperations): Deleted.
+ * css/StyleResolver.cpp:
+ (WebCore::StyleResolver::loadPendingSVGDocuments):
+ (WebCore::StyleResolver::loadPendingImages):
+ (WebCore::StyleResolver::adjustStyleForMaskImages): Deleted.
+ (WebCore::StyleResolver::applyMatchedProperties): Deleted.
+ * css/StyleResolver.h:
+ * page/FrameView.cpp:
+ (WebCore::FrameView::containsSVGDocument):
+ * page/FrameView.h:
+ * page/animation/CSSPropertyAnimation.cpp:
+ (WebCore::CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap):
+ (WebCore::blendFunc): Deleted.
+ (WebCore::MaskImagePropertyWrapper::MaskImagePropertyWrapper): Deleted.
+ (WebCore::MaskImagePropertyWrapper::equals): Deleted.
+ * platform/ScrollView.h:
+ (WebCore::ScrollView::containsSVGDocument):
+ * platform/graphics/MaskImageOperation.cpp:
+ (WebCore::MaskImageOperation::~MaskImageOperation): Deleted.
+ (WebCore::MaskImageOperation::operator==): Deleted.
+ * platform/graphics/MaskImageOperation.h:
+ * rendering/RenderBox.cpp:
+ (WebCore::RenderBox::maskClipRect):
+ * rendering/RenderBoxModelObject.cpp:
+ (WebCore::RenderBoxModelObject::paintFillLayerExtended):
+ * rendering/RenderElement.cpp:
+ (WebCore::RenderElement::updateFillImages):
+ (WebCore::RenderElement::~RenderElement): Deleted.
+ * rendering/RenderLayer.cpp:
+ (WebCore::RenderLayer::~RenderLayer): Deleted.
+ (WebCore::RenderLayer::calculateClipRects): Deleted.
+ * rendering/RenderLayer.h:
+ * rendering/RenderLayerMaskImageInfo.cpp: Removed.
+ * rendering/style/FillLayer.h:
+ (WebCore::FillLayer::image):
+ (WebCore::FillLayer::imageOrMaskImage):
+ * rendering/style/RenderStyle.cpp:
+ (WebCore::RenderStyle::setMaskImage): Deleted.
+ * rendering/style/RenderStyle.h:
+
+2015-07-06 Simon Fraser <simon.fraser@apple.com>
+
+ Revert use of SVG <mask> elements for -webkit-mask-image (r176798, r177494, r186180)
+ https://bugs.webkit.org/show_bug.cgi?id=146653
</ins><span class="cx">
</span><span class="cx"> Fixes rdar://problem/21435233.
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCoreWebCorexcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj (186390 => 186391)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj        2015-07-07 01:11:49 UTC (rev 186390)
+++ trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj        2015-07-07 01:15:01 UTC (rev 186391)
</span><span class="lines">@@ -2328,7 +2328,6 @@
</span><span class="cx">                 6C638896A96CCEE50C8C946C /* CachedResourceRequestInitiators.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6C638894A96CCEE50C8C946C /* CachedResourceRequestInitiators.cpp */; };
</span><span class="cx">                 6C6CCAB019DC42B90043D5DB /* WebKitCSSResourceValue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6C6CCAAE19DC42B90043D5DB /* WebKitCSSResourceValue.cpp */; };
</span><span class="cx">                 6C6CCAB119DC42B90043D5DB /* WebKitCSSResourceValue.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C6CCAAF19DC42B90043D5DB /* WebKitCSSResourceValue.h */; };
</span><del>-                6CBFE4A419EBF2D400CA2F9D /* RenderLayerMaskImageInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6CBFE4A219EBF2D400CA2F9D /* RenderLayerMaskImageInfo.cpp */; };
</del><span class="cx">                 6CBFE4A519EBF2D400CA2F9D /* RenderLayerMaskImageInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 6CBFE4A319EBF2D400CA2F9D /* RenderLayerMaskImageInfo.h */; };
</span><span class="cx">                 6CDDE8D01770BB220016E072 /* RegionOversetState.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C70A81417707C49009A446E /* RegionOversetState.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 6E0E569B183BFFE600E0E8D5 /* FloatRoundedRect.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6E0E5699183BFFE600E0E8D5 /* FloatRoundedRect.cpp */; };
</span><span class="lines">@@ -9610,7 +9609,6 @@
</span><span class="cx">                 6C6CCAAE19DC42B90043D5DB /* WebKitCSSResourceValue.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebKitCSSResourceValue.cpp; sourceTree = "<group>"; };
</span><span class="cx">                 6C6CCAAF19DC42B90043D5DB /* WebKitCSSResourceValue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebKitCSSResourceValue.h; sourceTree = "<group>"; };
</span><span class="cx">                 6C70A81417707C49009A446E /* RegionOversetState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RegionOversetState.h; sourceTree = "<group>"; };
</span><del>-                6CBFE4A219EBF2D400CA2F9D /* RenderLayerMaskImageInfo.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderLayerMaskImageInfo.cpp; sourceTree = "<group>"; };
</del><span class="cx">                 6CBFE4A319EBF2D400CA2F9D /* RenderLayerMaskImageInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderLayerMaskImageInfo.h; sourceTree = "<group>"; };
</span><span class="cx">                 6E0E5699183BFFE600E0E8D5 /* FloatRoundedRect.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FloatRoundedRect.cpp; sourceTree = "<group>"; };
</span><span class="cx">                 6E0E569A183BFFE600E0E8D5 /* FloatRoundedRect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FloatRoundedRect.h; sourceTree = "<group>"; };
</span><span class="lines">@@ -22879,7 +22877,6 @@
</span><span class="cx">                                 0F580CF90F12DE9B0051D689 /* RenderLayerCompositor.h */,
</span><span class="cx">                                 50D10D971545F5760096D288 /* RenderLayerFilterInfo.cpp */,
</span><span class="cx">                                 50D10D981545F5760096D288 /* RenderLayerFilterInfo.h */,
</span><del>-                                6CBFE4A219EBF2D400CA2F9D /* RenderLayerMaskImageInfo.cpp */,
</del><span class="cx">                                 6CBFE4A319EBF2D400CA2F9D /* RenderLayerMaskImageInfo.h */,
</span><span class="cx">                                 3C244FE5A375AC633F88BE6F /* RenderLayerModelObject.cpp */,
</span><span class="cx">                                 3C244FE4A375AC633F88BE6F /* RenderLayerModelObject.h */,
</span><span class="lines">@@ -29809,7 +29806,6 @@
</span><span class="cx">                                 0F580D000F12DE9B0051D689 /* RenderLayerBacking.cpp in Sources */,
</span><span class="cx">                                 0F580CFE0F12DE9B0051D689 /* RenderLayerCompositor.cpp in Sources */,
</span><span class="cx">                                 50D10D991545F5760096D288 /* RenderLayerFilterInfo.cpp in Sources */,
</span><del>-                                6CBFE4A419EBF2D400CA2F9D /* RenderLayerMaskImageInfo.cpp in Sources */,
</del><span class="cx">                                 3C244FEBA375AC633F88BE6F /* RenderLayerModelObject.cpp in Sources */,
</span><span class="cx">                                 BC33FB1B0F30EE85002CDD7C /* RenderLineBoxList.cpp in Sources */,
</span><span class="cx">                                 BCEA4863097D93020094C9E4 /* RenderLineBreak.cpp in Sources */,
</span></span></pre></div>
<a id="trunkSourceWebCorecssCSSComputedStyleDeclarationcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/CSSComputedStyleDeclaration.cpp (186390 => 186391)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/CSSComputedStyleDeclaration.cpp        2015-07-07 01:11:49 UTC (rev 186390)
+++ trunk/Source/WebCore/css/CSSComputedStyleDeclaration.cpp        2015-07-07 01:15:01 UTC (rev 186391)
</span><span class="lines">@@ -1906,8 +1906,9 @@
</span><span class="cx">
</span><span class="cx"> case CSSPropertyBackgroundColor:
</span><span class="cx"> return cssValuePool().createColorValue(m_allowVisitedStyle? style->visitedDependentColor(CSSPropertyBackgroundColor).rgb() : style->backgroundColor().rgb());
</span><del>- case CSSPropertyBackgroundImage: {
- const FillLayer* layers = style->backgroundLayers();
</del><ins>+ case CSSPropertyBackgroundImage:
+ case CSSPropertyWebkitMaskImage: {
+ const FillLayer* layers = propertyID == CSSPropertyWebkitMaskImage ? style->maskLayers() : style->backgroundLayers();
</ins><span class="cx"> if (!layers)
</span><span class="cx"> return cssValuePool().createIdentifierValue(CSSValueNone);
</span><span class="cx">
</span><span class="lines">@@ -1927,27 +1928,6 @@
</span><span class="cx"> }
</span><span class="cx"> return list.release();
</span><span class="cx"> }
</span><del>- 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();
- }
</del><span class="cx"> case CSSPropertyBackgroundSize:
</span><span class="cx"> case CSSPropertyWebkitBackgroundSize:
</span><span class="cx"> case CSSPropertyWebkitMaskSize: {
</span></span></pre></div>
<a id="trunkSourceWebCorecssCSSParsercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/CSSParser.cpp (186390 => 186391)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/CSSParser.cpp        2015-07-07 01:11:49 UTC (rev 186390)
+++ trunk/Source/WebCore/css/CSSParser.cpp        2015-07-07 01:15:01 UTC (rev 186391)
</span><span class="lines">@@ -90,7 +90,6 @@
</span><span class="cx"> #include "TextEncoding.h"
</span><span class="cx"> #include "WebKitCSSFilterValue.h"
</span><span class="cx"> #include "WebKitCSSRegionRule.h"
</span><del>-#include "WebKitCSSResourceValue.h"
</del><span class="cx"> #include "WebKitCSSTransformValue.h"
</span><span class="cx"> #include <JavaScriptCore/Profile.h>
</span><span class="cx"> #include <bitset>
</span><span class="lines">@@ -4704,13 +4703,10 @@
</span><span class="cx"> }
</span><span class="cx"> break;
</span><span class="cx"> case CSSPropertyBackgroundImage:
</span><ins>+ case CSSPropertyWebkitMaskImage:
</ins><span class="cx"> if (parseFillImage(*m_valueList, currValue))
</span><span class="cx"> m_valueList->next();
</span><span class="cx"> break;
</span><del>- case CSSPropertyWebkitMaskImage:
- if (parseMaskImage(*m_valueList, currValue))
- m_valueList->next();
- break;
</del><span class="cx"> case CSSPropertyWebkitBackgroundClip:
</span><span class="cx"> case CSSPropertyWebkitBackgroundOrigin:
</span><span class="cx"> case CSSPropertyWebkitMaskClip:
</span><span class="lines">@@ -9911,30 +9907,6 @@
</span><span class="cx"> return true;
</span><span class="cx"> }
</span><span class="cx">
</span><del>-bool CSSParser::parseMaskImage(CSSParserValueList& valueList, RefPtr<CSSValue>& outValue)
-{
- outValue = nullptr;
- CSSParserValue* value = valueList.current();
- if (value->id == CSSValueNone) {
- outValue = WebKitCSSResourceValue::create(cssValuePool().createIdentifierValue(CSSValueNone));
- return outValue.get();
- }
-
- RefPtr<CSSValue> resourceValue;
- if (value->unit == CSSPrimitiveValue::CSS_URI) {
- if (protocolIs(value->string, "data"))
- parseFillImage(valueList, resourceValue);
- else
- resourceValue = CSSPrimitiveValue::create(completeURL(value->string), CSSPrimitiveValue::CSS_URI);
- } else
- parseFillImage(valueList, resourceValue);
-
- if (resourceValue)
- outValue = WebKitCSSResourceValue::create(resourceValue);
-
- return outValue.get();
-}
-
</del><span class="cx"> #if ENABLE(CSS_REGIONS)
</span><span class="cx"> static bool validFlowName(const String& flowName)
</span><span class="cx"> {
</span></span></pre></div>
<a id="trunkSourceWebCorecssCSSParserh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/CSSParser.h (186390 => 186391)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/CSSParser.h        2015-07-07 01:11:49 UTC (rev 186390)
+++ trunk/Source/WebCore/css/CSSParser.h        2015-07-07 01:15:01 UTC (rev 186391)
</span><span class="lines">@@ -157,8 +157,6 @@
</span><span class="cx"> Vector<SourceSize> parseSizesAttribute(StringView);
</span><span class="cx"> SourceSize sourceSize(std::unique_ptr<MediaQueryExp>&&, CSSParserValue&);
</span><span class="cx">
</span><del>- // FIXME: Maybe these two methods could be combined into one.
- bool parseMaskImage(CSSParserValueList&, RefPtr<CSSValue>&);
</del><span class="cx"> bool parseFillImage(CSSParserValueList&, RefPtr<CSSValue>&);
</span><span class="cx">
</span><span class="cx"> enum FillPositionFlag { InvalidFillPosition = 0, AmbiguousFillPosition = 1, XFillPosition = 2, YFillPosition = 4 };
</span></span></pre></div>
<a id="trunkSourceWebCorecssCSSPropertyNamesin"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/CSSPropertyNames.in (186390 => 186391)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/CSSPropertyNames.in        2015-07-07 01:11:49 UTC (rev 186390)
+++ trunk/Source/WebCore/css/CSSPropertyNames.in        2015-07-07 01:15:01 UTC (rev 186391)
</span><span class="lines">@@ -538,7 +538,7 @@
</span><span class="cx"> -webkit-mask-box-image-width [Custom=All]
</span><span class="cx"> -webkit-mask-clip [FillLayerProperty, NameForMethods=Clip]
</span><span class="cx"> -webkit-mask-composite [FillLayerProperty, NameForMethods=Composite]
</span><del>--webkit-mask-image [Custom=Initial|Inherit, Converter=MaskImageOperations]
</del><ins>+-webkit-mask-image [FillLayerProperty, NameForMethods=Image]
</ins><span class="cx"> -webkit-mask-origin [FillLayerProperty, NameForMethods=Origin]
</span><span class="cx"> -webkit-mask-position [Longhands=-webkit-mask-position-x|-webkit-mask-position-y]
</span><span class="cx"> -webkit-mask-position-x [FillLayerProperty, NameForMethods=XPosition]
</span></span></pre></div>
<a id="trunkSourceWebCorecssCSSValueh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/CSSValue.h (186390 => 186391)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/CSSValue.h        2015-07-07 01:11:49 UTC (rev 186390)
+++ trunk/Source/WebCore/css/CSSValue.h        2015-07-07 01:15:01 UTC (rev 186391)
</span><span class="lines">@@ -171,7 +171,6 @@
</span><span class="cx"> #endif
</span><span class="cx"> SVGColorClass,
</span><span class="cx"> SVGPaintClass,
</span><del>- WebKitCSSResourceClass,
</del><span class="cx">
</span><span class="cx"> #if ENABLE(CSS_ANIMATIONS_LEVEL_2)
</span><span class="cx"> AnimationTriggerScrollClass,
</span><span class="lines">@@ -189,6 +188,7 @@
</span><span class="cx"> #if ENABLE(CSS_GRID_LAYOUT)
</span><span class="cx"> GridLineNamesClass,
</span><span class="cx"> #endif
</span><ins>+ WebKitCSSResourceClass
</ins><span class="cx">
</span><span class="cx"> // Do not append non-list class types here.
</span><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCorecssStyleBuilderConverterh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/StyleBuilderConverter.h (186390 => 186391)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/StyleBuilderConverter.h        2015-07-07 01:11:49 UTC (rev 186390)
+++ trunk/Source/WebCore/css/StyleBuilderConverter.h        2015-07-07 01:15:01 UTC (rev 186391)
</span><span class="lines">@@ -104,7 +104,6 @@
</span><span class="cx"> static Optional<float> convertPerspective(StyleResolver&, CSSValue&);
</span><span class="cx"> static Optional<Length> convertMarqueeIncrement(StyleResolver&, CSSValue&);
</span><span class="cx"> static Optional<FilterOperations> convertFilterOperations(StyleResolver&, CSSValue&);
</span><del>- static Vector<RefPtr<MaskImageOperation>> convertMaskImageOperations(StyleResolver&, CSSValue&);
</del><span class="cx"> #if PLATFORM(IOS)
</span><span class="cx"> static bool convertTouchCallout(StyleResolver&, CSSValue&);
</span><span class="cx"> #endif
</span><span class="lines">@@ -1013,57 +1012,6 @@
</span><span class="cx"> return &downcast<WebKitCSSResourceValue>(it->get());
</span><span class="cx"> }
</span><span class="cx">
</span><del>-inline Vector<RefPtr<MaskImageOperation>> StyleBuilderConverter::convertMaskImageOperations(StyleResolver& styleResolver, CSSValue& value)
-{
- Vector<RefPtr<MaskImageOperation>> operations;
- RefPtr<WebKitCSSResourceValue> maskImageValue;
- RefPtr<CSSValueList> maskImagesList;
- CSSValueList::iterator listIterator;
- if (is<WebKitCSSResourceValue>(value))
- maskImageValue = &downcast<WebKitCSSResourceValue>(value);
- else if (is<CSSValueList>(value)) {
- maskImagesList = &downcast<CSSValueList>(value);
- listIterator = maskImagesList->begin();
- maskImageValue = maskImageValueFromIterator(*maskImagesList, listIterator);
- }
-
- while (maskImageValue.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)
- newMaskImage = MaskImageOperation::create();
- else {
- String cssUrl = primitiveValue->getStringValue();
- URL url = styleResolver.document().completeURL(cssUrl);
-
- bool isExternalDocument = SVGURIReference::isExternalURIReference(cssUrl, styleResolver.document());
- newMaskImage = MaskImageOperation::create(maskImageValue, cssUrl, url.fragmentIdentifier(), isExternalDocument, &styleResolver.document().cachedResourceLoader());
- if (isExternalDocument)
- styleResolver.state().maskImagesWithPendingSVGDocuments().append(newMaskImage);
- }
- } else {
- if (RefPtr<StyleImage> image = styleResolver.styleImage(CSSPropertyWebkitMaskImage, *maskInnerValue))
- newMaskImage = MaskImageOperation::create(image);
- }
-
- // If we didn't get a valid value, use None so we keep the correct number and order of masks.
- if (!newMaskImage)
- newMaskImage = MaskImageOperation::create();
-
- operations.append(newMaskImage);
-
- if (maskImagesList)
- maskImageValue = maskImageValueFromIterator(*maskImagesList, ++listIterator);
- else
- maskImageValue = nullptr;
- }
-
- return operations;
-}
-
</del><span class="cx"> inline RefPtr<FontFeatureSettings> StyleBuilderConverter::convertFontFeatureSettings(StyleResolver&, CSSValue& value)
</span><span class="cx"> {
</span><span class="cx"> if (is<CSSPrimitiveValue>(value)) {
</span></span></pre></div>
<a id="trunkSourceWebCorecssStyleResolvercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/StyleResolver.cpp (186390 => 186391)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/StyleResolver.cpp        2015-07-07 01:11:49 UTC (rev 186390)
+++ trunk/Source/WebCore/css/StyleResolver.cpp        2015-07-07 01:15:01 UTC (rev 186391)
</span><span class="lines">@@ -1158,63 +1158,6 @@
</span><span class="cx"> style->setWritingMode(LeftToRightWritingMode);
</span><span class="cx"> }
</span><span class="cx">
</span><del>-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();
- }
-
- if (oldStyleMaskImages.isEmpty())
- return;
-
- // 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->ensureMaskLayers();
- 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();
- pendingResources.removeAllMatching([&removedExternalResources] (const RefPtr<MaskImageOperation>& resource) {
- return removedExternalResources.contains(resource);
- });
- }
-}
-
</del><span class="cx"> void StyleResolver::adjustRenderStyle(RenderStyle& style, const RenderStyle& parentStyle, Element *e)
</span><span class="cx"> {
</span><span class="cx"> // Cache our original display.
</span><span class="lines">@@ -1810,8 +1753,6 @@
</span><span class="cx"> // There are some CSS properties that affect the same RenderStyle values,
</span><span class="cx"> // so to preserve behavior, we queue them up during cascade and flush here.
</span><span class="cx"> cascade.applyDeferredProperties(*this);
</span><del>-
- adjustStyleForMaskImages();
</del><span class="cx">
</span><span class="cx"> // Start loading resources referenced by this style.
</span><span class="cx"> loadPendingResources();
</span><span class="lines">@@ -2239,33 +2180,18 @@
</span><span class="cx"> // style is NULL. We don't know exactly why this happens. Our guess is
</span><span class="cx"> // reentering styleForElement().
</span><span class="cx"> ASSERT(state.style());
</span><del>- if (!state.style())
</del><ins>+ if (!state.style() || !state.style()->hasFilter() || state.filtersWithPendingSVGDocuments().isEmpty())
</ins><span class="cx"> return;
</span><del>-
- bool hasFilters = (state.style()->hasFilter() && !state.filtersWithPendingSVGDocuments().isEmpty());
- bool hasMasks = (state.style()->hasMask() && !state.maskImagesWithPendingSVGDocuments().isEmpty());
-
- if (!hasFilters && !hasMasks)
- return;
</del><span class="cx">
</span><span class="cx"> ResourceLoaderOptions options = CachedResourceLoader::defaultCachedResourceOptions();
</span><span class="cx"> options.setContentSecurityPolicyImposition(m_state.element() && m_state.element()->isInUserAgentShadowTree() ? ContentSecurityPolicyImposition::SkipPolicyCheck : ContentSecurityPolicyImposition::DoPolicyCheck);
</span><span class="cx">
</span><span class="cx"> CachedResourceLoader& cachedResourceLoader = state.document().cachedResourceLoader();
</span><span class="cx">
</span><del>- if (hasFilters) {
- for (auto& filterOperation : state.filtersWithPendingSVGDocuments())
- filterOperation->getOrCreateCachedSVGDocumentReference()->load(cachedResourceLoader, options);
</del><ins>+ for (auto& filterOperation : state.filtersWithPendingSVGDocuments())
+ filterOperation->getOrCreateCachedSVGDocumentReference()->load(cachedResourceLoader, options);
</ins><span class="cx">
</span><del>- state.filtersWithPendingSVGDocuments().clear();
- }
-
- if (hasMasks) {
- for (auto& maskImageOperation : state.maskImagesWithPendingSVGDocuments())
- maskImageOperation->ensureCachedSVGDocumentReference()->load(cachedResourceLoader, options);
-
- state.maskImagesWithPendingSVGDocuments().clear();
- }
</del><ins>+ state.filtersWithPendingSVGDocuments().clear();
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> bool StyleResolver::createFilterOperations(CSSValue& inValue, FilterOperations& outOperations)
</span><span class="lines">@@ -2528,10 +2454,9 @@
</span><span class="cx"> }
</span><span class="cx"> case CSSPropertyWebkitMaskImage: {
</span><span class="cx"> for (FillLayer* maskLayer = &m_state.style()->ensureMaskLayers(); maskLayer; maskLayer = maskLayer->next()) {
</span><del>- RefPtr<MaskImageOperation> maskImage = maskLayer->maskImage();
- auto* styleImage = maskImage.get() ? maskImage->image() : nullptr;
</del><ins>+ auto* styleImage = maskLayer->image();
</ins><span class="cx"> if (is<StylePendingImage>(styleImage))
</span><del>- maskImage->setImage(loadPendingImage(downcast<StylePendingImage>(*styleImage)));
</del><ins>+ maskLayer->setImage(loadPendingImage(downcast<StylePendingImage>(*styleImage)));
</ins><span class="cx"> }
</span><span class="cx"> break;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorecssStyleResolverh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/StyleResolver.h (186390 => 186391)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/StyleResolver.h        2015-07-07 01:11:49 UTC (rev 186390)
+++ trunk/Source/WebCore/css/StyleResolver.h        2015-07-07 01:15:01 UTC (rev 186391)
</span><span class="lines">@@ -302,7 +302,6 @@
</span><span class="cx"> #endif
</span><span class="cx">
</span><span class="cx"> void adjustStyleForInterCharacterRuby();
</span><del>- void adjustStyleForMaskImages();
</del><span class="cx">
</span><span class="cx"> bool fastRejectSelector(const RuleData&) const;
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCorepageFrameViewcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/FrameView.cpp (186390 => 186391)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/FrameView.cpp        2015-07-07 01:11:49 UTC (rev 186390)
+++ trunk/Source/WebCore/page/FrameView.cpp        2015-07-07 01:15:01 UTC (rev 186391)
</span><span class="lines">@@ -4508,6 +4508,14 @@
</span><span class="cx"> return renderView->style().isFlippedBlocksWritingMode();
</span><span class="cx"> }
</span><span class="cx">
</span><ins>+bool FrameView::containsSVGDocument() const
+{
+ if (frame().document())
+ return frame().document()->isSVGDocument();
+
+ return false;
+}
+
</ins><span class="cx"> void FrameView::notifyWidgetsInAllFrames(WidgetNotification notification)
</span><span class="cx"> {
</span><span class="cx"> for (auto* frame = m_frame.ptr(); frame; frame = frame->tree().traverseNext(m_frame.ptr())) {
</span></span></pre></div>
<a id="trunkSourceWebCorepageFrameViewh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/FrameView.h (186390 => 186391)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/FrameView.h        2015-07-07 01:11:49 UTC (rev 186390)
+++ trunk/Source/WebCore/page/FrameView.h        2015-07-07 01:15:01 UTC (rev 186391)
</span><span class="lines">@@ -561,6 +561,7 @@
</span><span class="cx">
</span><span class="cx"> virtual bool isVerticalDocument() const override;
</span><span class="cx"> virtual bool isFlippedDocument() const override;
</span><ins>+ virtual bool containsSVGDocument() const override;
</ins><span class="cx">
</span><span class="cx"> private:
</span><span class="cx"> explicit FrameView(Frame&);
</span></span></pre></div>
<a id="trunkSourceWebCorepageanimationCSSPropertyAnimationcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/animation/CSSPropertyAnimation.cpp (186390 => 186391)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/animation/CSSPropertyAnimation.cpp        2015-07-07 01:11:49 UTC (rev 186390)
+++ trunk/Source/WebCore/page/animation/CSSPropertyAnimation.cpp        2015-07-07 01:15:01 UTC (rev 186391)
</span><span class="lines">@@ -42,7 +42,6 @@
</span><span class="cx"> #include "ClipPathOperation.h"
</span><span class="cx"> #include "FloatConversion.h"
</span><span class="cx"> #include "IdentityTransformOperation.h"
</span><del>-#include "MaskImageOperation.h"
</del><span class="cx"> #include "Matrix3DTransformOperation.h"
</span><span class="cx"> #include "MatrixTransformOperation.h"
</span><span class="cx"> #include "RenderBox.h"
</span><span class="lines">@@ -348,19 +347,6 @@
</span><span class="cx"> return to;
</span><span class="cx"> }
</span><span class="cx">
</span><del>-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;
-}
-
</del><span class="cx"> static inline NinePieceImage blendFunc(const AnimationBase* anim, const NinePieceImage& from, const NinePieceImage& to, double progress)
</span><span class="cx"> {
</span><span class="cx"> if (!from.hasImage() || !to.hasImage())
</span><span class="lines">@@ -527,31 +513,6 @@
</span><span class="cx"> }
</span><span class="cx"> };
</span><span class="cx">
</span><del>-class MaskImagePropertyWrapper : public PropertyWrapper<const RefPtr<MaskImageOperation>> {
- WTF_MAKE_FAST_ALLOCATED;
-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);
- }
-};
-
</del><span class="cx"> class PropertyWrapperColor : public PropertyWrapperGetter<Color> {
</span><span class="cx"> WTF_MAKE_FAST_ALLOCATED;
</span><span class="cx"> public:
</span><span class="lines">@@ -1239,7 +1200,7 @@
</span><span class="cx">
</span><span class="cx"> new FillLayersPropertyWrapper(CSSPropertyBackgroundImage, &RenderStyle::backgroundLayers, &RenderStyle::ensureBackgroundLayers),
</span><span class="cx"> new StyleImagePropertyWrapper(CSSPropertyListStyleImage, &RenderStyle::listStyleImage, &RenderStyle::setListStyleImage),
</span><del>- new MaskImagePropertyWrapper(),
</del><ins>+ new StyleImagePropertyWrapper(CSSPropertyWebkitMaskImage, &RenderStyle::maskImage, &RenderStyle::setMaskImage),
</ins><span class="cx">
</span><span class="cx"> new StyleImagePropertyWrapper(CSSPropertyBorderImageSource, &RenderStyle::borderImageSource, &RenderStyle::setBorderImageSource),
</span><span class="cx"> new LengthPropertyWrapper<LengthBox>(CSSPropertyBorderImageSlice, &RenderStyle::borderImageSlices, &RenderStyle::setBorderImageSlices),
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformScrollViewh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/ScrollView.h (186390 => 186391)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/ScrollView.h        2015-07-07 01:11:49 UTC (rev 186390)
+++ trunk/Source/WebCore/platform/ScrollView.h        2015-07-07 01:15:01 UTC (rev 186391)
</span><span class="lines">@@ -408,6 +408,7 @@
</span><span class="cx"> // Subclassed by FrameView to check the writing-mode of the document.
</span><span class="cx"> virtual bool isVerticalDocument() const { return true; }
</span><span class="cx"> virtual bool isFlippedDocument() const { return false; }
</span><ins>+ virtual bool containsSVGDocument() const { return false; }
</ins><span class="cx">
</span><span class="cx"> // Called to update the scrollbars to accurately reflect the state of the view.
</span><span class="cx"> void updateScrollbars(const IntSize& desiredOffset);
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsMaskImageOperationcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/MaskImageOperation.cpp (186390 => 186391)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/MaskImageOperation.cpp        2015-07-07 01:11:49 UTC (rev 186390)
+++ trunk/Source/WebCore/platform/graphics/MaskImageOperation.cpp        2015-07-07 01:15:01 UTC (rev 186391)
</span><span class="lines">@@ -82,17 +82,8 @@
</span><span class="cx">
</span><span class="cx"> MaskImageOperation::~MaskImageOperation()
</span><span class="cx"> {
</span><del>- setRenderLayerImageClient(nullptr);
</del><span class="cx"> }
</span><span class="cx">
</span><del>-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();
-}
-
</del><span class="cx"> bool MaskImageOperation::isCSSValueNone() const
</span><span class="cx"> {
</span><span class="cx"> if (image())
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsMaskImageOperationh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/MaskImageOperation.h (186390 => 186391)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/MaskImageOperation.h        2015-07-07 01:11:49 UTC (rev 186390)
+++ trunk/Source/WebCore/platform/graphics/MaskImageOperation.h        2015-07-07 01:15:01 UTC (rev 186391)
</span><span class="lines">@@ -55,13 +55,9 @@
</span><span class="cx"> PassRefPtr<CSSValue> cssValue();
</span><span class="cx">
</span><span class="cx"> virtual ~MaskImageOperation();
</span><del>-
- bool operator==(const MaskImageOperation&) const;
- inline bool operator!=(const MaskImageOperation& other) const { return !operator==(other); }
</del><span class="cx">
</span><span class="cx"> const String& url() const { return m_url; }
</span><span class="cx"> const String& fragment() const { return m_fragment; }
</span><del>- bool isExternalDocument() const { return m_isExternalDocument; }
</del><span class="cx"> StyleImage* image() const { return m_styleImage.get(); }
</span><span class="cx"> void setImage(PassRefPtr<StyleImage>);
</span><span class="cx"> void setRenderLayerImageClient(CachedImageClient*);
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderBoxcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderBox.cpp (186390 => 186391)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderBox.cpp        2015-07-07 01:11:49 UTC (rev 186390)
+++ trunk/Source/WebCore/rendering/RenderBox.cpp        2015-07-07 01:15:01 UTC (rev 186391)
</span><span class="lines">@@ -1573,7 +1573,7 @@
</span><span class="cx"> LayoutRect result;
</span><span class="cx"> LayoutRect borderBox = borderBoxRect();
</span><span class="cx"> for (const FillLayer* maskLayer = style().maskLayers(); maskLayer; maskLayer = maskLayer->next()) {
</span><del>- if (maskLayer->maskImage()) {
</del><ins>+ if (maskLayer->image()) {
</ins><span class="cx"> // Masks should never have fixed attachment, so it's OK for paintContainer to be null.
</span><span class="cx"> BackgroundImageGeometry geometry = calculateBackgroundImageGeometry(nullptr, *maskLayer, paintOffset, borderBox);
</span><span class="cx"> result.unite(geometry.destRect());
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderBoxModelObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderBoxModelObject.cpp (186390 => 186391)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderBoxModelObject.cpp        2015-07-07 01:11:49 UTC (rev 186390)
+++ trunk/Source/WebCore/rendering/RenderBoxModelObject.cpp        2015-07-07 01:15:01 UTC (rev 186391)
</span><span class="lines">@@ -27,8 +27,6 @@
</span><span class="cx"> #include "RenderBoxModelObject.h"
</span><span class="cx">
</span><span class="cx"> #include "BorderEdge.h"
</span><del>-#include "CachedImage.h"
-#include "CachedSVGDocument.h"
</del><span class="cx"> #include "FloatRoundedRect.h"
</span><span class="cx"> #include "Frame.h"
</span><span class="cx"> #include "FrameView.h"
</span><span class="lines">@@ -49,16 +47,13 @@
</span><span class="cx"> #include "RenderNamedFlowFragment.h"
</span><span class="cx"> #include "RenderNamedFlowThread.h"
</span><span class="cx"> #include "RenderRegion.h"
</span><del>-#include "RenderSVGResourceMasker.h"
</del><span class="cx"> #include "RenderTable.h"
</span><span class="cx"> #include "RenderTableRow.h"
</span><span class="cx"> #include "RenderText.h"
</span><span class="cx"> #include "RenderTextFragment.h"
</span><span class="cx"> #include "RenderView.h"
</span><del>-#include "SVGImageForContainer.h"
</del><span class="cx"> #include "ScrollingConstraints.h"
</span><span class="cx"> #include "Settings.h"
</span><del>-#include "StyleCachedImage.h"
</del><span class="cx"> #include "TransformState.h"
</span><span class="cx"> #include <wtf/NeverDestroyed.h>
</span><span class="cx">
</span><span class="lines">@@ -684,7 +679,7 @@
</span><span class="cx"> FloatRect pixelSnappedRect = snapRectToDevicePixels(rect, deviceScaleFactor);
</span><span class="cx">
</span><span class="cx"> // Fast path for drawing simple color backgrounds.
</span><del>- if (!isRoot && !clippedWithLocalScrolling && !shouldPaintBackgroundImage && isBorderFill && !bgLayer->hasMaskImage() && !bgLayer->next()) {
</del><ins>+ if (!isRoot && !clippedWithLocalScrolling && !shouldPaintBackgroundImage && isBorderFill && !bgLayer->next()) {
</ins><span class="cx"> if (!colorVisible)
</span><span class="cx"> return;
</span><span class="cx">
</span><span class="lines">@@ -844,25 +839,18 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> // no progressive loading of the background image
</span><del>- if (!baseBgColorOnly && (shouldPaintBackgroundImage || bgLayer->hasMaskImage())) {
</del><ins>+ if (!baseBgColorOnly && shouldPaintBackgroundImage) {
</ins><span class="cx"> BackgroundImageGeometry geometry = calculateBackgroundImageGeometry(paintInfo.paintContainer, *bgLayer, rect.location(), scrolledPaintRect, backgroundObject);
</span><span class="cx"> geometry.clip(LayoutRect(pixelSnappedRect));
</span><del>-
</del><span class="cx"> if (!geometry.destRect().isEmpty()) {
</span><del>- bool didPaintCustomMask = false;
</del><span class="cx"> CompositeOperator compositeOp = op == CompositeSourceOver ? bgLayer->composite() : op;
</span><span class="cx"> auto clientForBackgroundImage = backgroundObject ? backgroundObject : this;
</span><del>- 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(), toLayoutPoint(geometry.relativePhase()), geometry.tileSize(), ImagePaintingOptions(compositeOp, bgLayer->blendMode(), ImageOrientationDescription(), useLowQualityScaling));
- }
</del><ins>+ 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(), toLayoutPoint(geometry.relativePhase()), geometry.tileSize(), ImagePaintingOptions(compositeOp, bgLayer->blendMode(), ImageOrientationDescription(), useLowQualityScaling));
</ins><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderElement.cpp (186390 => 186391)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderElement.cpp        2015-07-07 01:11:49 UTC (rev 186390)
+++ trunk/Source/WebCore/rendering/RenderElement.cpp        2015-07-07 01:15:01 UTC (rev 186391)
</span><span class="lines">@@ -123,8 +123,6 @@
</span><span class="cx"> for (const FillLayer* maskLayer = m_style->maskLayers(); maskLayer; maskLayer = maskLayer->next()) {
</span><span class="cx"> if (StyleImage* maskImage = maskLayer->image())
</span><span class="cx"> maskImage->removeClient(this);
</span><del>- else if (maskLayer->maskImage().get())
- maskLayer->maskImage()->removeRendererImageClient(this);
</del><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> if (StyleImage* borderImage = m_style->borderImage().image())
</span><span class="lines">@@ -332,17 +330,13 @@
</span><span class="cx">
</span><span class="cx"> // Go through the new layers and addClients first, to avoid removing all clients of an image.
</span><span class="cx"> for (const FillLayer* currNew = newLayers; currNew; currNew = currNew->next()) {
</span><del>- if (StyleImage* image = currNew->image())
- image->addClient(this);
- else if (currNew->maskImage().get())
- currNew->maskImage()->addRendererImageClient(this);
</del><ins>+ if (currNew->image())
+ currNew->image()->addClient(this);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> for (const FillLayer* currOld = oldLayers; currOld; currOld = currOld->next()) {
</span><del>- if (StyleImage* image = currOld->image())
- image->removeClient(this);
- else if (currOld->maskImage().get())
- currOld->maskImage()->removeRendererImageClient(this);
</del><ins>+ if (currOld->image())
+ currOld->image()->removeClient(this);
</ins><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderLayercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderLayer.cpp (186390 => 186391)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderLayer.cpp        2015-07-07 01:11:49 UTC (rev 186390)
+++ trunk/Source/WebCore/rendering/RenderLayer.cpp        2015-07-07 01:15:01 UTC (rev 186391)
</span><span class="lines">@@ -370,7 +370,6 @@
</span><span class="cx"> removeReflection();
</span><span class="cx">
</span><span class="cx"> FilterInfo::remove(*this);
</span><del>- MaskImageInfo::remove(*this);
</del><span class="cx">
</span><span class="cx"> // Child layers will be deleted by their corresponding render objects, so
</span><span class="cx"> // we don't need to delete them ourselves.
</span><span class="lines">@@ -6713,7 +6712,6 @@
</span><span class="cx"> updateBlendMode();
</span><span class="cx"> #endif
</span><span class="cx"> updateOrRemoveFilterClients();
</span><del>- updateOrRemoveMaskImageClients();
</del><span class="cx">
</span><span class="cx"> updateNeedsCompositedScrolling();
</span><span class="cx">
</span><span class="lines">@@ -6868,14 +6866,6 @@
</span><span class="cx"> filterInfo->removeReferenceFilterClients();
</span><span class="cx"> }
</span><span class="cx">
</span><del>-void RenderLayer::updateOrRemoveMaskImageClients()
-{
- if (renderer().style().maskImage().get())
- MaskImageInfo::get(*this).updateMaskImageClients();
- else if (MaskImageInfo* maskImageInfo = MaskImageInfo::getIfExists(*this))
- maskImageInfo->removeMaskImageClients();
-}
-
</del><span class="cx"> void RenderLayer::updateOrRemoveFilterEffectRenderer()
</span><span class="cx"> {
</span><span class="cx"> // FilterEffectRenderer is only used to render the filters in software mode,
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderLayerh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderLayer.h (186390 => 186391)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderLayer.h        2015-07-07 01:11:49 UTC (rev 186390)
+++ trunk/Source/WebCore/rendering/RenderLayer.h        2015-07-07 01:15:01 UTC (rev 186391)
</span><span class="lines">@@ -920,7 +920,6 @@
</span><span class="cx">
</span><span class="cx"> void updateOrRemoveFilterClients();
</span><span class="cx"> void updateOrRemoveFilterEffectRenderer();
</span><del>- void updateOrRemoveMaskImageClients();
</del><span class="cx">
</span><span class="cx"> #if ENABLE(CSS_COMPOSITING)
</span><span class="cx"> void updateAncestorChainHasBlendingDescendants();
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderLayerMaskImageInfocpp"></a>
<div class="delfile"><h4>Deleted: trunk/Source/WebCore/rendering/RenderLayerMaskImageInfo.cpp (186390 => 186391)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderLayerMaskImageInfo.cpp        2015-07-07 01:11:49 UTC (rev 186390)
+++ trunk/Source/WebCore/rendering/RenderLayerMaskImageInfo.cpp        2015-07-07 01:15:01 UTC (rev 186391)
</span><span class="lines">@@ -1,154 +0,0 @@
</span><del>-/*
- * Copyright (C) 2014 Adobe Systems Incorporated. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
- * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
- * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
- * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#include "config.h"
-#include "RenderLayerMaskImageInfo.h"
-
-#include "CachedSVGDocument.h"
-#include "SVGMaskElement.h"
-#include <wtf/NeverDestroyed.h>
-
-namespace WebCore {
-
-class RenderLayer::MaskImageInfo::SVGDocumentClient : public CachedSVGDocumentClient {
-public:
- SVGDocumentClient(RenderLayer& layer)
- : m_layer(layer)
- {
- }
-
-private:
- virtual void notifyFinished(CachedResource*) override
- {
- m_layer.renderer().repaint();
- }
-
- RenderLayer& m_layer;
-};
-
-class RenderLayer::MaskImageInfo::ImageClient : public CachedImageClient {
-public:
- ImageClient(RenderLayer& layer)
- : m_layer(layer)
- {
- }
-
-private:
- virtual void imageChanged(CachedImage*, const IntRect*) override
- {
- m_layer.renderer().repaint();
- }
-
- RenderLayer& m_layer;
-};
-
-HashMap<const RenderLayer*, std::unique_ptr<RenderLayer::MaskImageInfo>>& RenderLayer::MaskImageInfo::layerToMaskMap()
-{
- static NeverDestroyed<HashMap<const RenderLayer*, std::unique_ptr<MaskImageInfo>>> layerToMaskMap;
- return layerToMaskMap;
-}
-
-RenderLayer::MaskImageInfo* RenderLayer::MaskImageInfo::getIfExists(const RenderLayer& layer)
-{
- ASSERT(layer.m_hasMaskImageInfo == layerToMaskMap().contains(&layer));
- return layer.m_hasMaskImageInfo ? layerToMaskMap().get(&layer) : nullptr;
-}
-
-RenderLayer::MaskImageInfo& RenderLayer::MaskImageInfo::get(RenderLayer& layer)
-{
- ASSERT(layer.m_hasMaskImageInfo == layerToMaskMap().contains(&layer));
-
- auto& info = layerToMaskMap().add(&layer, nullptr).iterator->value;
- if (!info) {
- info = std::make_unique<MaskImageInfo>(layer);
- layer.m_hasMaskImageInfo = true;
- }
- return *info;
-}
-
-void RenderLayer::MaskImageInfo::remove(RenderLayer& layer)
-{
- ASSERT(layer.m_hasMaskImageInfo == layerToMaskMap().contains(&layer));
-
- if (layerToMaskMap().remove(&layer))
- layer.m_hasMaskImageInfo = false;
-}
-
-RenderLayer::MaskImageInfo::MaskImageInfo(RenderLayer& layer)
- : m_layer(layer)
- , m_svgDocumentClient(std::make_unique<SVGDocumentClient>(layer))
- , m_imageClient(std::make_unique<ImageClient>(layer))
-{
-}
-
-RenderLayer::MaskImageInfo::~MaskImageInfo()
-{
- removeMaskImageClients();
-}
-
-void RenderLayer::MaskImageInfo::updateMaskImageClients()
-{
- removeMaskImageClients();
-
- for (auto* maskLayer = m_layer.renderer().style().maskLayers(); maskLayer; maskLayer = maskLayer->next()) {
- RefPtr<MaskImageOperation> maskImage = maskLayer->maskImage();
- maskImage->setRenderLayerImageClient(m_imageClient.get());
- m_maskImageOperations.append(maskImage);
-
- CachedSVGDocumentReference* documentReference = maskImage->cachedSVGDocumentReference();
- CachedSVGDocument* cachedSVGDocument = documentReference ? documentReference->document() : nullptr;
-
- if (cachedSVGDocument) {
- // Reference is external; wait for notifyFinished and then repaint.
- cachedSVGDocument->addClient(m_svgDocumentClient.get());
- m_externalSVGReferences.append(cachedSVGDocument);
- } else {
- // Reference is internal; add layer as a client so we can trigger mask repaint on SVG attribute change.
- Element* masker = m_layer.renderer().document().getElementById(maskImage->fragment());
- if (is<SVGMaskElement>(masker)) {
- downcast<SVGMaskElement>(*masker).addClientRenderLayer(&m_layer);
- m_internalSVGReferences.append(masker);
- }
- }
- }
-}
-
-void RenderLayer::MaskImageInfo::removeMaskImageClients()
-{
- for (auto& maskImage : m_maskImageOperations)
- maskImage->setRenderLayerImageClient(nullptr);
- m_maskImageOperations.clear();
-
- for (auto& externalSVGReference : m_externalSVGReferences)
- externalSVGReference->removeClient(m_svgDocumentClient.get());
- m_externalSVGReferences.clear();
-
- for (auto& internalSVGReference : m_internalSVGReferences)
- downcast<SVGMaskElement>(internalSVGReference.get())->removeClientRenderLayer(&m_layer);
- m_internalSVGReferences.clear();
-}
-
-} // namespace WebCore
</del></span></pre></div>
<a id="trunkSourceWebCorerenderingstyleFillLayerh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/style/FillLayer.h (186390 => 186391)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/style/FillLayer.h        2015-07-07 01:11:49 UTC (rev 186390)
+++ trunk/Source/WebCore/rendering/style/FillLayer.h        2015-07-07 01:15:01 UTC (rev 186391)
</span><span class="lines">@@ -68,8 +68,9 @@
</span><span class="cx"> explicit FillLayer(EFillLayerType);
</span><span class="cx"> ~FillLayer();
</span><span class="cx">
</span><del>- StyleImage* image() const { return hasMaskImage() ? maskImage()->image() : m_image.get(); }
</del><span class="cx"> const RefPtr<MaskImageOperation>& maskImage() const { return m_maskImageOperation; }
</span><ins>+ StyleImage* image() const { return m_image.get(); }
+ StyleImage* imageOrMaskImage() const { return hasMaskImage() ? maskImage()->image() : image(); }
</ins><span class="cx"> const Length& xPosition() const { return m_xPosition; }
</span><span class="cx"> const Length& yPosition() const { return m_yPosition; }
</span><span class="cx"> BackgroundEdgeOrigin backgroundXOrigin() const { return static_cast<BackgroundEdgeOrigin>(m_backgroundXOrigin); }
</span><span class="lines">@@ -181,8 +182,6 @@
</span><span class="cx">
</span><span class="cx"> std::unique_ptr<FillLayer> m_next;
</span><span class="cx">
</span><del>- // 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.
</del><span class="cx"> RefPtr<MaskImageOperation> m_maskImageOperation;
</span><span class="cx"> RefPtr<StyleImage> m_image;
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingstyleRenderStylecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/style/RenderStyle.cpp (186390 => 186391)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/style/RenderStyle.cpp        2015-07-07 01:11:49 UTC (rev 186390)
+++ trunk/Source/WebCore/rendering/style/RenderStyle.cpp        2015-07-07 01:15:01 UTC (rev 186391)
</span><span class="lines">@@ -895,29 +895,7 @@
</span><span class="cx">
</span><span class="cx"> return false;
</span><span class="cx"> }
</span><del>-
-void RenderStyle::setMaskImage(const Vector<RefPtr<MaskImageOperation>>& ops)
-{
- FillLayer* curLayer = &rareNonInheritedData.access()->m_mask;
- while (curLayer) {
- curLayer->setMaskImage(nullptr);
- curLayer = curLayer->next();
- }
</del><span class="cx">
</span><del>- 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();
- }
-}
-
</del><span class="cx"> void RenderStyle::setClip(Length top, Length right, Length bottom, Length left)
</span><span class="cx"> {
</span><span class="cx"> StyleVisualData* data = visual.access();
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingstyleRenderStyleh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/style/RenderStyle.h (186390 => 186391)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/style/RenderStyle.h        2015-07-07 01:11:49 UTC (rev 186390)
+++ trunk/Source/WebCore/rendering/style/RenderStyle.h        2015-07-07 01:15:01 UTC (rev 186391)
</span><span class="lines">@@ -107,7 +107,6 @@
</span><span class="cx"> class FontCascade;
</span><span class="cx"> class FontMetrics;
</span><span class="cx"> class IntRect;
</span><del>-class MaskImageOperation;
</del><span class="cx"> class Pair;
</span><span class="cx"> class ShadowData;
</span><span class="cx"> class StyleImage;
</span><span class="lines">@@ -809,6 +808,7 @@
</span><span class="cx"> FillLayer& ensureBackgroundLayers() { return m_background.access()->m_background; }
</span><span class="cx"> const FillLayer* backgroundLayers() const { return &(m_background->background()); }
</span><span class="cx">
</span><ins>+ StyleImage* maskImage() const { return rareNonInheritedData->m_mask.image(); }
</ins><span class="cx"> EFillRepeat maskRepeatX() const { return static_cast<EFillRepeat>(rareNonInheritedData->m_mask.repeatX()); }
</span><span class="cx"> EFillRepeat maskRepeatY() const { return static_cast<EFillRepeat>(rareNonInheritedData->m_mask.repeatY()); }
</span><span class="cx"> CompositeOperator maskComposite() const { return static_cast<CompositeOperator>(rareNonInheritedData->m_mask.composite()); }
</span><span class="lines">@@ -1049,7 +1049,7 @@
</span><span class="cx"> void applyTransform(TransformationMatrix&, const FloatRect& boundingBox, ApplyTransformOrigin = IncludeTransformOrigin) const;
</span><span class="cx"> void setPageScaleTransform(float);
</span><span class="cx">
</span><del>- bool hasMask() const { return rareNonInheritedData->m_mask.hasNonEmptyMaskImage() || rareNonInheritedData->m_mask.hasImage() || rareNonInheritedData->m_maskBoxImage.hasImage(); }
</del><ins>+ bool hasMask() const { return rareNonInheritedData->m_mask.hasImage() || rareNonInheritedData->m_maskBoxImage.hasImage(); }
</ins><span class="cx">
</span><span class="cx"> TextCombine textCombine() const { return static_cast<TextCombine>(rareNonInheritedData->m_textCombine); }
</span><span class="cx"> bool hasTextCombine() const { return textCombine() != TextCombineNone; }
</span><span class="lines">@@ -1155,9 +1155,6 @@
</span><span class="cx"> FilterOperations& mutableFilter() { return rareNonInheritedData.access()->m_filter.access()->m_operations; }
</span><span class="cx"> const FilterOperations& filter() const { return rareNonInheritedData->m_filter->m_operations; }
</span><span class="cx"> bool hasFilter() const { return !rareNonInheritedData->m_filter->m_operations.operations().isEmpty(); }
</span><del>-
- RefPtr<MaskImageOperation>& mutableMaskImage() { return rareNonInheritedData.access()->m_mask.m_maskImageOperation; }
- const RefPtr<MaskImageOperation> maskImage() const { return rareNonInheritedData->m_mask.maskImage(); }
</del><span class="cx">
</span><span class="cx"> #if ENABLE(FILTERS_LEVEL_2)
</span><span class="cx"> FilterOperations& mutableBackdropFilter() { return rareNonInheritedData.access()->m_backdropFilter.access()->m_operations; }
</span><span class="lines">@@ -1413,6 +1410,8 @@
</span><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx">
</span><ins>+ void setMaskImage(PassRefPtr<StyleImage> v) { rareNonInheritedData.access()->m_mask.setImage(v); }
+
</ins><span class="cx"> void setMaskBoxImage(const NinePieceImage& b) { SET_VAR(rareNonInheritedData, m_maskBoxImage, b); }
</span><span class="cx"> void setMaskBoxImageSource(PassRefPtr<StyleImage> v) { rareNonInheritedData.access()->m_maskBoxImage.setImage(v); }
</span><span class="cx"> void setMaskXPosition(Length length) { SET_VAR(rareNonInheritedData, m_mask.m_xPosition, WTF::move(length)); }
</span><span class="lines">@@ -1618,9 +1617,6 @@
</span><span class="cx"> void setBackdropFilter(const FilterOperations& ops) { SET_VAR(rareNonInheritedData.access()->m_backdropFilter, m_operations, ops); }
</span><span class="cx"> #endif
</span><span class="cx">
</span><del>- void setMaskImage(const Vector<RefPtr<MaskImageOperation>>&);
- void setMaskImage(const RefPtr<MaskImageOperation> maskImage) { Vector<RefPtr<MaskImageOperation>> vectMask; vectMask.append(maskImage); setMaskImage(vectMask); }
-
</del><span class="cx"> void setTabSize(unsigned size) { SET_VAR(rareInheritedData, m_tabSize, size); }
</span><span class="cx">
</span><span class="cx"> // End CSS3 Setters
</span></span></pre>
</div>
</div>
</body>
</html>