Index: third_party/WebKit/Source/core/css/resolver/StyleBuilderConverter.cpp |
diff --git a/third_party/WebKit/Source/core/css/resolver/StyleBuilderConverter.cpp b/third_party/WebKit/Source/core/css/resolver/StyleBuilderConverter.cpp |
index 2607587ecc0d9ecd4ff97ee5a03d7ed8bb10793b..be7e02298a8626802ceb1db6ba25056b00ecebf7 100644 |
--- a/third_party/WebKit/Source/core/css/resolver/StyleBuilderConverter.cpp |
+++ b/third_party/WebKit/Source/core/css/resolver/StyleBuilderConverter.cpp |
@@ -45,6 +45,7 @@ |
#include "core/css/CSSValuePair.h" |
#include "core/css/resolver/FilterOperationResolver.h" |
#include "core/frame/LocalFrame.h" |
+#include "core/style/ClipPathOperation.h" |
#include "core/style/TextSizeAdjust.h" |
#include "core/svg/SVGURIReference.h" |
#include "platform/transforms/RotateTransformOperation.h" |
@@ -117,6 +118,20 @@ LengthBox StyleBuilderConverter::convertClip(StyleResolverState& state, const CS |
convertLengthOrAuto(state, *rect.left())); |
} |
+PassRefPtr<ClipPathOperation> StyleBuilderConverter::convertClipPath(StyleResolverState& state, const CSSValue& value) |
+{ |
+ if (value.isBasicShapeValue()) |
+ return ShapeClipPathOperation::create(basicShapeForValue(state, value)); |
+ if (value.isURIValue()) { |
+ String cssURLValue = toCSSURIValue(value).value(); |
+ KURL url = state.document().completeURL(cssURLValue); |
+ // TODO(fs): Doesn't work with forward or external SVG references (crbug.com/391604, crbug.com/109212, ...) |
+ return ReferenceClipPathOperation::create(cssURLValue, AtomicString(url.fragmentIdentifier())); |
+ } |
+ DCHECK(value.isPrimitiveValue() && toCSSPrimitiveValue(value).getValueID() == CSSValueNone); |
+ return nullptr; |
+} |
+ |
FilterOperations StyleBuilderConverter::convertFilterOperations(StyleResolverState& state, const CSSValue& value) |
{ |
return FilterOperationResolver::createFilterOperations(state, value); |