Diff
Modified: trunk/Source/WebCore/CMakeLists.txt (132959 => 132960)
--- trunk/Source/WebCore/CMakeLists.txt 2012-10-30 23:24:42 UTC (rev 132959)
+++ trunk/Source/WebCore/CMakeLists.txt 2012-10-30 23:33:42 UTC (rev 132960)
@@ -1913,6 +1913,7 @@
platform/graphics/filters/CustomFilterMesh.cpp
platform/graphics/filters/CustomFilterOperation.cpp
platform/graphics/filters/CustomFilterParameterList.cpp
+ platform/graphics/filters/ValidatedCustomFilterOperation.cpp
platform/graphics/filters/CustomFilterProgram.cpp
platform/graphics/filters/CustomFilterProgramInfo.cpp
platform/graphics/filters/CustomFilterRenderer.cpp
Modified: trunk/Source/WebCore/ChangeLog (132959 => 132960)
--- trunk/Source/WebCore/ChangeLog 2012-10-30 23:24:42 UTC (rev 132959)
+++ trunk/Source/WebCore/ChangeLog 2012-10-30 23:33:42 UTC (rev 132960)
@@ -1,3 +1,52 @@
+2012-10-26 Alexandru Chiculita <[email protected]>
+
+ [CSS Shaders] Add the ValidatedCustomFilterOperation class
+ https://bugs.webkit.org/show_bug.cgi?id=100558
+
+ Reviewed by Dean Jackson.
+
+ Added the ValidatedCustomFilterOperation class. The file is now almost empty,
+ but more is going to come in the following patches.
+
+ Added the a filter operation type VALIDATED_CUSTOM and updated the compositors to ignore
+ such operations for now.
+
+ No new tests, there is no new functionality yet.
+
+ * CMakeLists.txt:
+ * GNUmakefile.list.am:
+ * Target.pri:
+ * WebCore.gypi:
+ * WebCore.vcproj/WebCore.vcproj:
+ * WebCore.xcodeproj/project.pbxproj:
+ * css/CSSComputedStyleDeclaration.cpp:
+ (WebCore::CSSComputedStyleDeclaration::valueForFilter):
+ * css/StyleResolver.cpp:
+ (WebCore::StyleResolver::createFilterOperations):
+ * platform/graphics/blackberry/LayerWebKitThread.cpp:
+ (WebCore::LayerWebKitThread::filtersCanBeComposited):
+ * platform/graphics/ca/mac/PlatformCALayerMac.mm:
+ (PlatformCALayer::filtersCanBeComposited):
+ * platform/graphics/chromium/GraphicsLayerChromium.cpp:
+ (WebCore::copyWebCoreFilterOperationsToWebFilterOperations):
+ * platform/graphics/filters/FilterOperation.h:
+ * platform/graphics/filters/FilterOperations.cpp:
+ (WebCore::FilterOperations::hasCustomFilter):
+ (WebCore::FilterOperations::getOutsets):
+ * platform/graphics/filters/ValidatedCustomFilterOperation.cpp: Added.
+ (WebCore):
+ (WebCore::ValidatedCustomFilterOperation::ValidatedCustomFilterOperation):
+ (WebCore::ValidatedCustomFilterOperation::~ValidatedCustomFilterOperation):
+ (WebCore::ValidatedCustomFilterOperation::blend):
+ * platform/graphics/filters/ValidatedCustomFilterOperation.h: Added.
+ (WebCore):
+ (ValidatedCustomFilterOperation):
+ (WebCore::ValidatedCustomFilterOperation::create):
+ (WebCore::ValidatedCustomFilterOperation::affectsOpacity):
+ (WebCore::ValidatedCustomFilterOperation::movesPixels):
+ (WebCore::ValidatedCustomFilterOperation::blendingNeedsRendererSize):
+ (WebCore::ValidatedCustomFilterOperation::operator==):
+
2012-10-30 Joseph Pecoraro <[email protected]>
[Mac] Sync up FeatureDefine Configuration Files
Modified: trunk/Source/WebCore/GNUmakefile.list.am (132959 => 132960)
--- trunk/Source/WebCore/GNUmakefile.list.am 2012-10-30 23:24:42 UTC (rev 132959)
+++ trunk/Source/WebCore/GNUmakefile.list.am 2012-10-30 23:33:42 UTC (rev 132960)
@@ -4337,6 +4337,8 @@
Source/WebCore/platform/graphics/filters/CustomFilterNumberParameter.h \
Source/WebCore/platform/graphics/filters/CustomFilterOperation.cpp \
Source/WebCore/platform/graphics/filters/CustomFilterOperation.h \
+ Source/WebCore/platform/graphics/filters/ValidatedCustomFilterOperation.cpp \
+ Source/WebCore/platform/graphics/filters/ValidatedCustomFilterOperation.h \
Source/WebCore/platform/graphics/filters/CustomFilterParameter.h \
Source/WebCore/platform/graphics/filters/CustomFilterParameterList.cpp \
Source/WebCore/platform/graphics/filters/CustomFilterParameterList.h \
Modified: trunk/Source/WebCore/Target.pri (132959 => 132960)
--- trunk/Source/WebCore/Target.pri 2012-10-30 23:24:42 UTC (rev 132959)
+++ trunk/Source/WebCore/Target.pri 2012-10-30 23:33:42 UTC (rev 132960)
@@ -2077,6 +2077,7 @@
platform/graphics/filters/CustomFilterNumberParameter.h \
platform/graphics/filters/CustomFilterCompiledProgram.h \
platform/graphics/filters/CustomFilterOperation.h \
+ platform/graphics/filters/ValidatedCustomFilterOperation.h \
platform/graphics/filters/CustomFilterParameter.h \
platform/graphics/filters/CustomFilterParameterList.h \
platform/graphics/filters/CustomFilterProgram.h \
@@ -3496,6 +3497,7 @@
platform/graphics/filters/CustomFilterGlobalContext.cpp \
platform/graphics/filters/CustomFilterOperation.cpp \
platform/graphics/filters/CustomFilterParameterList.cpp \
+ platform/graphics/filters/ValidatedCustomFilterOperation.cpp \
platform/graphics/filters/CustomFilterProgram.cpp \
platform/graphics/filters/CustomFilterProgramInfo.cpp \
platform/graphics/filters/CustomFilterCompiledProgram.cpp \
Modified: trunk/Source/WebCore/WebCore.gypi (132959 => 132960)
--- trunk/Source/WebCore/WebCore.gypi 2012-10-30 23:24:42 UTC (rev 132959)
+++ trunk/Source/WebCore/WebCore.gypi 2012-10-30 23:33:42 UTC (rev 132960)
@@ -4978,6 +4978,8 @@
'platform/graphics/filters/CustomFilterNumberParameter.h',
'platform/graphics/filters/CustomFilterOperation.cpp',
'platform/graphics/filters/CustomFilterOperation.h',
+ 'platform/graphics/filters/ValidatedCustomFilterOperation.cpp',
+ 'platform/graphics/filters/ValidatedCustomFilterOperation.h',
'platform/graphics/filters/CustomFilterParameter.h',
'platform/graphics/filters/CustomFilterParameterList.cpp',
'platform/graphics/filters/CustomFilterParameterList.h',
Modified: trunk/Source/WebCore/WebCore.vcproj/WebCore.vcproj (132959 => 132960)
--- trunk/Source/WebCore/WebCore.vcproj/WebCore.vcproj 2012-10-30 23:24:42 UTC (rev 132959)
+++ trunk/Source/WebCore/WebCore.vcproj/WebCore.vcproj 2012-10-30 23:33:42 UTC (rev 132960)
@@ -31977,6 +31977,14 @@
>
</File>
<File
+ RelativePath="..\platform\graphics\filters\ValidatedCustomFilterOperation.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\platform\graphics\filters\ValidatedCustomFilterOperation.h"
+ >
+ </File>
+ <File
RelativePath="..\platform\graphics\filters\CustomFilterParameter.h"
>
</File>
Modified: trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj (132959 => 132960)
--- trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj 2012-10-30 23:24:42 UTC (rev 132959)
+++ trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj 2012-10-30 23:33:42 UTC (rev 132960)
@@ -1511,6 +1511,8 @@
50CC0A3914C6F5B10017AB51 /* CustomFilterOperation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 50CC0A3814C6F5B10017AB51 /* CustomFilterOperation.cpp */; };
50D10D991545F5760096D288 /* RenderLayerFilterInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 50D10D971545F5760096D288 /* RenderLayerFilterInfo.cpp */; };
50D10D9A1545F5760096D288 /* RenderLayerFilterInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 50D10D981545F5760096D288 /* RenderLayerFilterInfo.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ 50D32857163B313F0016111E /* ValidatedCustomFilterOperation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 50D32855163B313F0016111E /* ValidatedCustomFilterOperation.cpp */; };
+ 50D32858163B313F0016111E /* ValidatedCustomFilterOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 50D32856163B313F0016111E /* ValidatedCustomFilterOperation.h */; };
50D403C714768C9400D30BB5 /* FECustomFilter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 50D403C514768C9400D30BB5 /* FECustomFilter.cpp */; };
50D403C814768C9400D30BB5 /* FECustomFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 50D403C614768C9400D30BB5 /* FECustomFilter.h */; };
50D405F9147D31F300D30BB5 /* CustomFilterMesh.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 50D405F7147D31F300D30BB5 /* CustomFilterMesh.cpp */; };
@@ -8726,6 +8728,8 @@
50CC0A3814C6F5B10017AB51 /* CustomFilterOperation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CustomFilterOperation.cpp; path = filters/CustomFilterOperation.cpp; sourceTree = "<group>"; };
50D10D971545F5760096D288 /* RenderLayerFilterInfo.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderLayerFilterInfo.cpp; sourceTree = "<group>"; };
50D10D981545F5760096D288 /* RenderLayerFilterInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderLayerFilterInfo.h; sourceTree = "<group>"; };
+ 50D32855163B313F0016111E /* ValidatedCustomFilterOperation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ValidatedCustomFilterOperation.cpp; path = filters/ValidatedCustomFilterOperation.cpp; sourceTree = "<group>"; };
+ 50D32856163B313F0016111E /* ValidatedCustomFilterOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ValidatedCustomFilterOperation.h; path = filters/ValidatedCustomFilterOperation.h; sourceTree = "<group>"; };
50D403C514768C9400D30BB5 /* FECustomFilter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FECustomFilter.cpp; path = filters/FECustomFilter.cpp; sourceTree = "<group>"; };
50D403C614768C9400D30BB5 /* FECustomFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FECustomFilter.h; path = filters/FECustomFilter.h; sourceTree = "<group>"; };
50D405F7147D31F300D30BB5 /* CustomFilterMesh.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CustomFilterMesh.cpp; path = filters/CustomFilterMesh.cpp; sourceTree = "<group>"; };
@@ -18261,6 +18265,8 @@
children = (
5093334D163B0E4300099A60 /* CustomFilterParameterList.cpp */,
5093334E163B0E4300099A60 /* CustomFilterParameterList.h */,
+ 50D32855163B313F0016111E /* ValidatedCustomFilterOperation.cpp */,
+ 50D32856163B313F0016111E /* ValidatedCustomFilterOperation.h */,
49ECEB5C1499790D00CDD3A4 /* arm */,
15B3FC1715FB217800A81BCB /* CustomFilterArrayParameter.h */,
50D4060F147D49DE00D30BB5 /* CustomFilterCompiledProgram.cpp */,
@@ -25696,6 +25702,7 @@
AAC08CEF15F933D600F1E188 /* SVGImageChromeClient.h in Headers */,
AAC08CF315F941FD00F1E188 /* AccessibilitySVGRoot.h in Headers */,
50933350163B0E4300099A60 /* CustomFilterParameterList.h in Headers */,
+ 50D32858163B313F0016111E /* ValidatedCustomFilterOperation.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -28780,6 +28787,7 @@
51ABF64D16392E2800132A7A /* LoaderStrategy.cpp in Sources */,
5093334F163B0E4300099A60 /* CustomFilterParameterList.cpp in Sources */,
1AA21250163F0DA80000E63F /* AtomicStringCF.cpp in Sources */,
+ 50D32857163B313F0016111E /* ValidatedCustomFilterOperation.cpp in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
Modified: trunk/Source/WebCore/css/CSSComputedStyleDeclaration.cpp (132959 => 132960)
--- trunk/Source/WebCore/css/CSSComputedStyleDeclaration.cpp 2012-10-30 23:24:42 UTC (rev 132959)
+++ trunk/Source/WebCore/css/CSSComputedStyleDeclaration.cpp 2012-10-30 23:33:42 UTC (rev 132960)
@@ -904,6 +904,10 @@
break;
}
#if ENABLE(CSS_SHADERS)
+ case FilterOperation::VALIDATED_CUSTOM:
+ // ValidatedCustomFilterOperation is not supposed to end up in the RenderStyle.
+ ASSERT_NOT_REACHED();
+ break;
case FilterOperation::CUSTOM: {
CustomFilterOperation* customOperation = static_cast<CustomFilterOperation*>(filterOperation);
filterValue = WebKitCSSFilterValue::create(WebKitCSSFilterValue::CustomFilterOperation);
Modified: trunk/Source/WebCore/css/StyleResolver.cpp (132959 => 132960)
--- trunk/Source/WebCore/css/StyleResolver.cpp 2012-10-30 23:24:42 UTC (rev 132959)
+++ trunk/Source/WebCore/css/StyleResolver.cpp 2012-10-30 23:33:42 UTC (rev 132960)
@@ -4928,6 +4928,11 @@
FilterOperation::OperationType operationType = filterOperationForType(filterValue->operationType());
#if ENABLE(CSS_SHADERS)
+ if (operationType == FilterOperation::VALIDATED_CUSTOM) {
+ // ValidatedCustomFilterOperation is not supposed to end up in the RenderStyle.
+ ASSERT_NOT_REACHED();
+ continue;
+ }
if (operationType == FilterOperation::CUSTOM) {
RefPtr<CustomFilterOperation> operation = createCustomFilterOperation(filterValue);
if (!operation)
Modified: trunk/Source/WebCore/platform/graphics/blackberry/LayerWebKitThread.cpp (132959 => 132960)
--- trunk/Source/WebCore/platform/graphics/blackberry/LayerWebKitThread.cpp 2012-10-30 23:24:42 UTC (rev 132959)
+++ trunk/Source/WebCore/platform/graphics/blackberry/LayerWebKitThread.cpp 2012-10-30 23:33:42 UTC (rev 132960)
@@ -417,6 +417,7 @@
case FilterOperation::REFERENCE:
#if ENABLE(CSS_SHADERS)
case FilterOperation::CUSTOM:
+ case FilterOperation::VALIDATED_CUSTOM:
#endif
return false;
default:
Modified: trunk/Source/WebCore/platform/graphics/ca/mac/PlatformCALayerMac.mm (132959 => 132960)
--- trunk/Source/WebCore/platform/graphics/ca/mac/PlatformCALayerMac.mm 2012-10-30 23:24:42 UTC (rev 132959)
+++ trunk/Source/WebCore/platform/graphics/ca/mac/PlatformCALayerMac.mm 2012-10-30 23:33:42 UTC (rev 132960)
@@ -850,6 +850,7 @@
case FilterOperation::REFERENCE:
#if ENABLE(CSS_SHADERS)
case FilterOperation::CUSTOM:
+ case FilterOperation::VALIDATED_CUSTOM:
#endif
return false;
case FilterOperation::DROP_SHADOW:
Modified: trunk/Source/WebCore/platform/graphics/chromium/GraphicsLayerChromium.cpp (132959 => 132960)
--- trunk/Source/WebCore/platform/graphics/chromium/GraphicsLayerChromium.cpp 2012-10-30 23:24:42 UTC (rev 132959)
+++ trunk/Source/WebCore/platform/graphics/chromium/GraphicsLayerChromium.cpp 2012-10-30 23:33:42 UTC (rev 132960)
@@ -367,6 +367,7 @@
}
#if ENABLE(CSS_SHADERS)
case FilterOperation::CUSTOM:
+ case FilterOperation::VALIDATED_CUSTOM:
return false; // Not supported.
#endif
case FilterOperation::PASSTHROUGH:
Modified: trunk/Source/WebCore/platform/graphics/filters/FilterOperation.h (132959 => 132960)
--- trunk/Source/WebCore/platform/graphics/filters/FilterOperation.h 2012-10-30 23:24:42 UTC (rev 132959)
+++ trunk/Source/WebCore/platform/graphics/filters/FilterOperation.h 2012-10-30 23:33:42 UTC (rev 132960)
@@ -69,6 +69,7 @@
DROP_SHADOW,
#if ENABLE(CSS_SHADERS)
CUSTOM,
+ VALIDATED_CUSTOM,
#endif
PASSTHROUGH,
NONE
Modified: trunk/Source/WebCore/platform/graphics/filters/FilterOperations.cpp (132959 => 132960)
--- trunk/Source/WebCore/platform/graphics/filters/FilterOperations.cpp 2012-10-30 23:24:42 UTC (rev 132959)
+++ trunk/Source/WebCore/platform/graphics/filters/FilterOperations.cpp 2012-10-30 23:33:42 UTC (rev 132960)
@@ -91,7 +91,8 @@
bool FilterOperations::hasCustomFilter() const
{
for (size_t i = 0; i < m_operations.size(); ++i) {
- if (m_operations.at(i)->getOperationType() == FilterOperation::CUSTOM)
+ FilterOperation::OperationType type = m_operations.at(i)->getOperationType();
+ if (type == FilterOperation::CUSTOM || type == FilterOperation::VALIDATED_CUSTOM)
return true;
}
return false;
@@ -146,8 +147,10 @@
break;
}
#if ENABLE(CSS_SHADERS)
- case FilterOperation::CUSTOM: {
- // Need to include the filter margins here.
+ case FilterOperation::CUSTOM:
+ case FilterOperation::VALIDATED_CUSTOM: {
+ // FIXME: Need to include the filter margins here.
+ // https://bugs.webkit.org/show_bug.cgi?id=71400
break;
}
#endif
Added: trunk/Source/WebCore/platform/graphics/filters/ValidatedCustomFilterOperation.cpp (0 => 132960)
--- trunk/Source/WebCore/platform/graphics/filters/ValidatedCustomFilterOperation.cpp (rev 0)
+++ trunk/Source/WebCore/platform/graphics/filters/ValidatedCustomFilterOperation.cpp 2012-10-30 23:33:42 UTC (rev 132960)
@@ -0,0 +1,61 @@
+/*
+ * Copyright (C) 2012 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"
+
+#if ENABLE(CSS_SHADERS)
+#include "ValidatedCustomFilterOperation.h"
+
+#include "FractionalLayoutSize.h"
+#include <wtf/UnusedParam.h>
+
+namespace WebCore {
+
+ValidatedCustomFilterOperation::ValidatedCustomFilterOperation()
+ : FilterOperation(VALIDATED_CUSTOM)
+{
+}
+
+ValidatedCustomFilterOperation::~ValidatedCustomFilterOperation()
+{
+}
+
+PassRefPtr<FilterOperation> ValidatedCustomFilterOperation::blend(const FilterOperation*, double progress, const LayoutSize& size, bool blendToPassthrough)
+{
+ UNUSED_PARAM(progress);
+ UNUSED_PARAM(size);
+ UNUSED_PARAM(blendToPassthrough);
+
+ ASSERT_NOT_REACHED();
+ return this;
+}
+
+} // namespace WebCore
+
+#endif // ENABLE(CSS_SHADERS)
Added: trunk/Source/WebCore/platform/graphics/filters/ValidatedCustomFilterOperation.h (0 => 132960)
--- trunk/Source/WebCore/platform/graphics/filters/ValidatedCustomFilterOperation.h (rev 0)
+++ trunk/Source/WebCore/platform/graphics/filters/ValidatedCustomFilterOperation.h 2012-10-30 23:33:42 UTC (rev 132960)
@@ -0,0 +1,69 @@
+/*
+ * Copyright (C) 2012 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.
+ */
+
+#ifndef ValidatedCustomFilterOperation_h
+#define ValidatedCustomFilterOperation_h
+
+#if ENABLE(CSS_SHADERS)
+#include "FilterOperation.h"
+#include "LayoutTypes.h"
+
+namespace WebCore {
+
+class ValidatedCustomFilterOperation : public FilterOperation {
+public:
+ static PassRefPtr<ValidatedCustomFilterOperation> create()
+ {
+ return adoptRef(new ValidatedCustomFilterOperation());
+ }
+
+ virtual ~ValidatedCustomFilterOperation();
+
+ virtual bool affectsOpacity() const { return true; }
+ virtual bool movesPixels() const { return true; }
+ virtual bool blendingNeedsRendererSize() const { return true; }
+
+ virtual PassRefPtr<FilterOperation> blend(const FilterOperation* from, double progress, const LayoutSize&, bool blendToPassthrough = false);
+private:
+ virtual bool operator==(const FilterOperation& o) const
+ {
+ if (!isSameType(o))
+ return false;
+
+ return true;
+ }
+
+ ValidatedCustomFilterOperation();
+};
+
+} // namespace WebCore
+
+#endif // ENABLE(CSS_SHADERS)
+
+#endif // ValidatedCustomFilterOperation_h