<!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>[175760] 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/175760">175760</a></dd>
<dt>Author</dt> <dd>cdumez@apple.com</dd>
<dt>Date</dt> <dd>2014-11-07 13:21:57 -0800 (Fri, 07 Nov 2014)</dd>
</dl>
<h3>Log Message</h3>
<pre>Move 'webkit-clip-path' CSS property to the new StyleBuilder
https://bugs.webkit.org/show_bug.cgi?id=138452
Reviewed by Andreas Kling.
Source/WebCore:
Move 'webkit-clip-path' CSS property from DeprecatedStyleBuilder to the
new StyleBuilder so that it is now generated from CSSPropertyNames.in.
A ClipPath converter was added to support this. Custom code was avoided
by replacing if checks by assertions, relying on the CSSParser to make
sure the input is valid.
Test: fast/masking/clip-path-bad-value.html
* css/CSSPropertyNames.in:
* css/DeprecatedStyleBuilder.cpp:
(WebCore::DeprecatedStyleBuilder::DeprecatedStyleBuilder):
(WebCore::ApplyPropertyClipPath::setValue): Deleted.
(WebCore::ApplyPropertyClipPath::applyValue): Deleted.
(WebCore::ApplyPropertyClipPath::createHandler): Deleted.
* css/StyleBuilderConverter.h:
(WebCore::StyleBuilderConverter::convertClipPath):
LayoutTests:
Add layout test to make sure we don't crash in the StyleBuilder when
setting unexpected values to webkit-clip-path property.
* fast/masking/clip-path-bad-value-expected.txt: Added.
* fast/masking/clip-path-bad-value.html: Added.</pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCorecssCSSPropertyNamesin">trunk/Source/WebCore/css/CSSPropertyNames.in</a></li>
<li><a href="#trunkSourceWebCorecssDeprecatedStyleBuildercpp">trunk/Source/WebCore/css/DeprecatedStyleBuilder.cpp</a></li>
<li><a href="#trunkSourceWebCorecssStyleBuilderConverterh">trunk/Source/WebCore/css/StyleBuilderConverter.h</a></li>
</ul>
<h3>Added Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsfastmaskingclippathbadvalueexpectedtxt">trunk/LayoutTests/fast/masking/clip-path-bad-value-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastmaskingclippathbadvaluehtml">trunk/LayoutTests/fast/masking/clip-path-bad-value.html</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (175759 => 175760)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2014-11-07 20:35:23 UTC (rev 175759)
+++ trunk/LayoutTests/ChangeLog        2014-11-07 21:21:57 UTC (rev 175760)
</span><span class="lines">@@ -1,3 +1,16 @@
</span><ins>+2014-11-07 Chris Dumez <cdumez@apple.com>
+
+ Move 'webkit-clip-path' CSS property to the new StyleBuilder
+ https://bugs.webkit.org/show_bug.cgi?id=138452
+
+ Reviewed by Andreas Kling.
+
+ Add layout test to make sure we don't crash in the StyleBuilder when
+ setting unexpected values to webkit-clip-path property.
+
+ * fast/masking/clip-path-bad-value-expected.txt: Added.
+ * fast/masking/clip-path-bad-value.html: Added.
+
</ins><span class="cx"> 2014-11-07 Joseph Pecoraro <pecoraro@apple.com>
</span><span class="cx">
</span><span class="cx"> Web Inspector: Pseudo element matchedCSSRules do not include matching selector info
</span></span></pre></div>
<a id="trunkLayoutTestsfastmaskingclippathbadvalueexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/masking/clip-path-bad-value-expected.txt (0 => 175760)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/masking/clip-path-bad-value-expected.txt         (rev 0)
+++ trunk/LayoutTests/fast/masking/clip-path-bad-value-expected.txt        2014-11-07 21:21:57 UTC (rev 175760)
</span><span class="lines">@@ -0,0 +1,25 @@
</span><ins>+Makes sure we don't crash in the StyleBuilder if bad values are used for -webkit-clip-path property.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS document.defaultView.getComputedStyle(testElement)['-webkit-clip-path'] is "none"
+PASS No crash for auto value
+PASS document.defaultView.getComputedStyle(testElement)['-webkit-clip-path'] is "none"
+PASS No crash for 1px 2px value
+PASS document.defaultView.getComputedStyle(testElement)['-webkit-clip-path'] is "none"
+PASS No crash for content-box border-box value
+PASS document.defaultView.getComputedStyle(testElement)['-webkit-clip-path'] is "none"
+PASS No crash for circle(50% at 50% 50%) circle(20% at 20% 20%) value
+PASS document.defaultView.getComputedStyle(testElement)['-webkit-clip-path'] is "none"
+PASS No crash for circle(50% at 50% 50%) border-box content-box value
+PASS document.defaultView.getComputedStyle(testElement)['-webkit-clip-path'] is "none"
+PASS No crash for copy value
+PASS document.defaultView.getComputedStyle(testElement)['-webkit-clip-path'] is "none"
+PASS No crash for value
+PASS document.defaultView.getComputedStyle(testElement)['-webkit-clip-path'] is "none"
+PASS No crash for value
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmaskingclippathbadvaluehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/masking/clip-path-bad-value.html (0 => 175760)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/masking/clip-path-bad-value.html         (rev 0)
+++ trunk/LayoutTests/fast/masking/clip-path-bad-value.html        2014-11-07 21:21:57 UTC (rev 175760)
</span><span class="lines">@@ -0,0 +1,26 @@
</span><ins>+<!DOCTYPE html>
+<script src="../../resources/js-test-pre.js"></script>
+<div id="myDiv"></div>
+
+<script>
+description("Makes sure we don't crash in the StyleBuilder if bad values are used for -webkit-clip-path property.");
+
+var badValues = [
+ "auto", // Unexpected primitive value.
+ "1px 2px", // an unexpected list.
+ "content-box border-box", // 2 reference boxes.
+ "circle(50% at 50% 50%) circle(20% at 20% 20%)", // 2 shapes.
+ "circle(50% at 50% 50%) border-box content-box", // extra reference box.
+ "copy", // a cursor.
+ " ", // a space.
+ "", // empty.
+];
+
+var testElement = document.getElementById("myDiv");
+for (var i = 0; i < badValues.length; ++i) {
+ testElement.style["-webkit-clip-path"] = badValues[i];
+ shouldBeEqualToString("document.defaultView.getComputedStyle(testElement)['-webkit-clip-path']", "none");
+ testPassed("No crash for " + badValues[i] + " value");
+}
+</script>
+<script src="../../resources/js-test-post.js"></script>
</ins></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (175759 => 175760)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2014-11-07 20:35:23 UTC (rev 175759)
+++ trunk/Source/WebCore/ChangeLog        2014-11-07 21:21:57 UTC (rev 175760)
</span><span class="lines">@@ -1,3 +1,28 @@
</span><ins>+2014-11-07 Chris Dumez <cdumez@apple.com>
+
+ Move 'webkit-clip-path' CSS property to the new StyleBuilder
+ https://bugs.webkit.org/show_bug.cgi?id=138452
+
+ Reviewed by Andreas Kling.
+
+ Move 'webkit-clip-path' CSS property from DeprecatedStyleBuilder to the
+ new StyleBuilder so that it is now generated from CSSPropertyNames.in.
+
+ A ClipPath converter was added to support this. Custom code was avoided
+ by replacing if checks by assertions, relying on the CSSParser to make
+ sure the input is valid.
+
+ Test: fast/masking/clip-path-bad-value.html
+
+ * css/CSSPropertyNames.in:
+ * css/DeprecatedStyleBuilder.cpp:
+ (WebCore::DeprecatedStyleBuilder::DeprecatedStyleBuilder):
+ (WebCore::ApplyPropertyClipPath::setValue): Deleted.
+ (WebCore::ApplyPropertyClipPath::applyValue): Deleted.
+ (WebCore::ApplyPropertyClipPath::createHandler): Deleted.
+ * css/StyleBuilderConverter.h:
+ (WebCore::StyleBuilderConverter::convertClipPath):
+
</ins><span class="cx"> 2014-11-07 Joseph Pecoraro <pecoraro@apple.com>
</span><span class="cx">
</span><span class="cx"> Web Inspector: Pseudo element matchedCSSRules do not include matching selector info
</span></span></pre></div>
<a id="trunkSourceWebCorecssCSSPropertyNamesin"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/CSSPropertyNames.in (175759 => 175760)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/CSSPropertyNames.in        2014-11-07 20:35:23 UTC (rev 175759)
+++ trunk/Source/WebCore/css/CSSPropertyNames.in        2014-11-07 21:21:57 UTC (rev 175760)
</span><span class="lines">@@ -146,7 +146,7 @@
</span><span class="cx"> -epub-caption-side = caption-side
</span><span class="cx"> clear [NewStyleBuilder]
</span><span class="cx"> clip
</span><del>--webkit-clip-path
</del><ins>+-webkit-clip-path [NewStyleBuilder, Converter=ClipPath]
</ins><span class="cx"> content
</span><span class="cx"> counter-increment
</span><span class="cx"> counter-reset
</span></span></pre></div>
<a id="trunkSourceWebCorecssDeprecatedStyleBuildercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/DeprecatedStyleBuilder.cpp (175759 => 175760)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/DeprecatedStyleBuilder.cpp        2014-11-07 20:35:23 UTC (rev 175759)
+++ trunk/Source/WebCore/css/DeprecatedStyleBuilder.cpp        2014-11-07 21:21:57 UTC (rev 175760)
</span><span class="lines">@@ -1527,60 +1527,6 @@
</span><span class="cx"> }
</span><span class="cx"> };
</span><span class="cx">
</span><del>-template <ClipPathOperation* (RenderStyle::*getterFunction)() const, void (RenderStyle::*setterFunction)(PassRefPtr<ClipPathOperation>), ClipPathOperation* (*initialFunction)()>
-class ApplyPropertyClipPath {
-public:
- static void setValue(RenderStyle* style, PassRefPtr<ClipPathOperation> value) { (style->*setterFunction)(value); }
- static void applyValue(CSSPropertyID, StyleResolver* styleResolver, CSSValue* value)
- {
- if (is<CSSPrimitiveValue>(*value)) {
- auto& primitiveValue = downcast<CSSPrimitiveValue>(*value);
- if (primitiveValue.getValueID() == CSSValueNone)
- setValue(styleResolver->style(), 0);
- else if (primitiveValue.primitiveType() == CSSPrimitiveValue::CSS_URI) {
- String cssURLValue = primitiveValue.getStringValue();
- URL url = styleResolver->document().completeURL(cssURLValue);
- // FIXME: It doesn't work with external SVG references (see https://bugs.webkit.org/show_bug.cgi?id=126133)
- setValue(styleResolver->style(), ReferenceClipPathOperation::create(cssURLValue, url.fragmentIdentifier()));
- }
- return;
- }
- if (!is<CSSValueList>(*value))
- return;
- CSSBoxType referenceBox = BoxMissing;
- RefPtr<ClipPathOperation> operation;
- auto& valueList = downcast<CSSValueList>(*value);
- for (unsigned i = 0; i < valueList.length(); ++i) {
- auto& primitiveValue = downcast<CSSPrimitiveValue>(*valueList.itemWithoutBoundsCheck(i));
- if (primitiveValue.isShape() && !operation)
- operation = ShapeClipPathOperation::create(basicShapeForValue(styleResolver->state().cssToLengthConversionData(), primitiveValue.getShapeValue()));
- else if ((primitiveValue.getValueID() == CSSValueContentBox
- || primitiveValue.getValueID() == CSSValueBorderBox
- || primitiveValue.getValueID() == CSSValuePaddingBox
- || primitiveValue.getValueID() == CSSValueMarginBox
- || primitiveValue.getValueID() == CSSValueFill
- || primitiveValue.getValueID() == CSSValueStroke
- || primitiveValue.getValueID() == CSSValueViewBox)
- && referenceBox == BoxMissing)
- referenceBox = CSSBoxType(primitiveValue);
- else
- return;
- }
- if (!operation) {
- if (referenceBox == BoxMissing)
- return;
- operation = BoxClipPathOperation::create(referenceBox);
- } else
- downcast<ShapeClipPathOperation>(*operation).setReferenceBox(referenceBox);
- setValue(styleResolver->style(), operation.release());
- }
- static PropertyHandler createHandler()
- {
- PropertyHandler handler = ApplyPropertyDefaultBase<ClipPathOperation*, getterFunction, PassRefPtr<ClipPathOperation>, setterFunction, ClipPathOperation*, initialFunction>::createHandler();
- return PropertyHandler(handler.inheritFunction(), handler.initialFunction(), &applyValue);
- }
-};
-
</del><span class="cx"> #if ENABLE(CSS_IMAGE_RESOLUTION)
</span><span class="cx"> class ApplyPropertyImageResolution {
</span><span class="cx"> public:
</span><span class="lines">@@ -1797,7 +1743,6 @@
</span><span class="cx"> setPropertyHandler(CSSPropertyWebkitTransitionDuration, ApplyPropertyAnimation<double, &Animation::duration, &Animation::setDuration, &Animation::isDurationSet, &Animation::clearDuration, &Animation::initialAnimationDuration, &CSSToStyleMap::mapAnimationDuration, &RenderStyle::accessTransitions, &RenderStyle::transitions>::createHandler());
</span><span class="cx"> setPropertyHandler(CSSPropertyWebkitTransitionProperty, ApplyPropertyAnimation<CSSPropertyID, &Animation::property, &Animation::setProperty, &Animation::isPropertySet, &Animation::clearProperty, &Animation::initialAnimationProperty, &CSSToStyleMap::mapAnimationProperty, &RenderStyle::accessTransitions, &RenderStyle::transitions>::createHandler());
</span><span class="cx"> setPropertyHandler(CSSPropertyWebkitTransitionTimingFunction, ApplyPropertyAnimation<const PassRefPtr<TimingFunction>, &Animation::timingFunction, &Animation::setTimingFunction, &Animation::isTimingFunctionSet, &Animation::clearTimingFunction, &Animation::initialAnimationTimingFunction, &CSSToStyleMap::mapAnimationTimingFunction, &RenderStyle::accessTransitions, &RenderStyle::transitions>::createHandler());
</span><del>- setPropertyHandler(CSSPropertyWebkitClipPath, ApplyPropertyClipPath<&RenderStyle::clipPath, &RenderStyle::setClipPath, &RenderStyle::initialClipPath>::createHandler());
</del><span class="cx"> setPropertyHandler(CSSPropertyWidows, ApplyPropertyAuto<short, &RenderStyle::widows, &RenderStyle::setWidows, &RenderStyle::hasAutoWidows, &RenderStyle::setHasAutoWidows>::createHandler());
</span><span class="cx"> setPropertyHandler(CSSPropertyWordSpacing, ApplyPropertyWordSpacing::createHandler());
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCorecssStyleBuilderConverterh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/StyleBuilderConverter.h (175759 => 175760)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/StyleBuilderConverter.h        2014-11-07 20:35:23 UTC (rev 175759)
+++ trunk/Source/WebCore/css/StyleBuilderConverter.h        2014-11-07 21:21:57 UTC (rev 175760)
</span><span class="lines">@@ -27,6 +27,7 @@
</span><span class="cx"> #ifndef StyleBuilderConverter_h
</span><span class="cx"> #define StyleBuilderConverter_h
</span><span class="cx">
</span><ins>+#include "BasicShapeFunctions.h"
</ins><span class="cx"> #include "CSSCalculationValue.h"
</span><span class="cx"> #include "CSSPrimitiveValue.h"
</span><span class="cx"> #include "Length.h"
</span><span class="lines">@@ -58,6 +59,7 @@
</span><span class="cx"> static String convertStringOrNone(StyleResolver&, CSSValue&);
</span><span class="cx"> static TextEmphasisPosition convertTextEmphasisPosition(StyleResolver&, CSSValue&);
</span><span class="cx"> static ETextAlign convertTextAlign(StyleResolver&, CSSValue&);
</span><ins>+ static PassRefPtr<ClipPathOperation> convertClipPath(StyleResolver&, CSSValue&);
</ins><span class="cx">
</span><span class="cx"> private:
</span><span class="cx"> static Length convertToRadiusLength(CSSToLengthConversionData&, CSSPrimitiveValue&);
</span><span class="lines">@@ -324,6 +326,50 @@
</span><span class="cx"> return parentStyle->textAlign();
</span><span class="cx"> }
</span><span class="cx">
</span><ins>+inline PassRefPtr<ClipPathOperation> StyleBuilderConverter::convertClipPath(StyleResolver& styleResolver, CSSValue& value)
+{
+ if (is<CSSPrimitiveValue>(value)) {
+ auto& primitiveValue = downcast<CSSPrimitiveValue>(value);
+ if (primitiveValue.primitiveType() == CSSPrimitiveValue::CSS_URI) {
+ String cssURLValue = primitiveValue.getStringValue();
+ URL url = styleResolver.document().completeURL(cssURLValue);
+ // FIXME: It doesn't work with external SVG references (see https://bugs.webkit.org/show_bug.cgi?id=126133)
+ return ReferenceClipPathOperation::create(cssURLValue, url.fragmentIdentifier());
+ }
+ ASSERT(primitiveValue.getValueID() == CSSValueNone);
+ return nullptr;
+ }
+
+ CSSBoxType referenceBox = BoxMissing;
+ RefPtr<ClipPathOperation> operation;
+
+ for (auto& currentValue : downcast<CSSValueList>(value)) {
+ auto& primitiveValue = downcast<CSSPrimitiveValue>(currentValue.get());
+ if (primitiveValue.isShape()) {
+ ASSERT(!operation);
+ operation = ShapeClipPathOperation::create(basicShapeForValue(styleResolver.state().cssToLengthConversionData(), primitiveValue.getShapeValue()));
+ } else {
+ ASSERT(primitiveValue.getValueID() == CSSValueContentBox
+ || primitiveValue.getValueID() == CSSValueBorderBox
+ || primitiveValue.getValueID() == CSSValuePaddingBox
+ || primitiveValue.getValueID() == CSSValueMarginBox
+ || primitiveValue.getValueID() == CSSValueFill
+ || primitiveValue.getValueID() == CSSValueStroke
+ || primitiveValue.getValueID() == CSSValueViewBox);
+ ASSERT(referenceBox == BoxMissing);
+ referenceBox = primitiveValue;
+ }
+ }
+ if (operation)
+ downcast<ShapeClipPathOperation>(*operation).setReferenceBox(referenceBox);
+ else {
+ ASSERT(referenceBox != BoxMissing);
+ operation = BoxClipPathOperation::create(referenceBox);
+ }
+
+ return operation.release();
+}
+
</ins><span class="cx"> } // namespace WebCore
</span><span class="cx">
</span><span class="cx"> #endif // StyleBuilderConverter_h
</span></span></pre>
</div>
</div>
</body>
</html>