haikuwebkit/LayoutTests/css3/color-filters/color-filter-gradients-expe...

24 lines
805 B
HTML
Raw Permalink Normal View History

Make color-filter transform gradient colors https://bugs.webkit.org/show_bug.cgi?id=185080 Reviewed by Zalan Bujtas. Source/WebCore: In CSSGradientValue::computeStops(), transform the color of each gradient color stop through the color filter. Having a color filter makes the gradient uncacheable. Color filters can add alpha, so we also have to fix up CSSGradientValue::knownToBeOpaque() to take a RenderStyle and convert the colors before testing opaqueness. Clean up some related functions to take const RenderStyle&. Test: css3/color-filters/color-filter-gradients.html * css/CSSCrossfadeValue.cpp: (WebCore::subimageKnownToBeOpaque): * css/CSSFilterImageValue.cpp: (WebCore::CSSFilterImageValue::knownToBeOpaque const): * css/CSSFilterImageValue.h: * css/CSSGradientValue.cpp: (WebCore::CSSGradientValue::image): (WebCore::CSSGradientValue::computeStops): (WebCore::CSSGradientValue::knownToBeOpaque const): (WebCore::CSSLinearGradientValue::createGradient): (WebCore::CSSRadialGradientValue::createGradient): * css/CSSGradientValue.h: * css/CSSImageGeneratorValue.cpp: (WebCore::CSSImageGeneratorValue::knownToBeOpaque const): * css/CSSImageValue.cpp: (WebCore::CSSImageValue::knownToBeOpaque const): * css/CSSImageValue.h: LayoutTests: * css3/color-filters/color-filter-gradients-expected.html: Added. * css3/color-filters/color-filter-gradients.html: Added. Canonical link: https://commits.webkit.org/200571@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@231105 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2018-04-27 17:59:25 +00:00
<!DOCTYPE html>
<html>
<head>
Rename color-filter to -apple-color-filter and do not expose it to Web content https://bugs.webkit.org/show_bug.cgi?id=186306 <rdar://problem/39874167> Reviewed by Simon Fraser. Source/WebCore: Rename the color-filter CSS property to -apple-color-filter. * animation/KeyframeEffectReadOnly.cpp: (WebCore::KeyframeEffectReadOnly::checkForMatchingColorFilterFunctionLists): * css/CSSComputedStyleDeclaration.cpp: (WebCore::ComputedStyleExtractor::valueForPropertyinStyle): * css/CSSGradientValue.cpp: (WebCore::CSSGradientValue::image): (WebCore::CSSGradientValue::computeStops): (WebCore::CSSGradientValue::knownToBeOpaque const): * css/CSSProperties.json: * css/parser/CSSPropertyParser.cpp: (WebCore::CSSPropertyParser::parseSingleValue): * page/animation/CSSPropertyAnimation.cpp: (WebCore::blendFunc): (WebCore::CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap): * page/animation/ImplicitAnimation.cpp: (WebCore::ImplicitAnimation::checkForMatchingColorFilterFunctionLists): * page/animation/KeyframeAnimation.cpp: (WebCore::KeyframeAnimation::checkForMatchingColorFilterFunctionLists): * rendering/InlineTextBox.cpp: (WebCore::InlineTextBox::paintMarkedTextForeground): (WebCore::InlineTextBox::paintMarkedTextDecoration): * rendering/style/RenderStyle.cpp: (WebCore::RenderStyle::changeRequiresRepaint const): (WebCore::RenderStyle::visitedDependentColorWithColorFilter const): (WebCore::RenderStyle::colorByApplyingColorFilter const): * rendering/style/RenderStyle.h: (WebCore::RenderStyle::mutableAppleColorFilter): (WebCore::RenderStyle::appleColorFilter const): (WebCore::RenderStyle::hasAppleColorFilter const): (WebCore::RenderStyle::setAppleColorFilter): (WebCore::RenderStyle::initialAppleColorFilter): (WebCore::RenderStyle::mutableColorFilter): Deleted. (WebCore::RenderStyle::colorFilter const): Deleted. (WebCore::RenderStyle::hasColorFilter const): Deleted. (WebCore::RenderStyle::setColorFilter): Deleted. (WebCore::RenderStyle::initialColorFilter): Deleted. * rendering/style/StyleRareInheritedData.cpp: (WebCore::StyleRareInheritedData::StyleRareInheritedData): (WebCore::StyleRareInheritedData::operator== const): (WebCore::StyleRareInheritedData::hasColorFilters const): * rendering/style/StyleRareInheritedData.h: Source/WebKit: Change the ColorFilter setting to no longer be exposed as an experimental feature and ensure it's turned off by default. To allow internal clients to use the -apple-color-filter property, we expose a new _colorFilterEnabled property as SPI to WKWebViewConfigurationPrivate. * Shared/WebPreferences.yaml: * UIProcess/API/C/WKPreferences.cpp: (WKPreferencesSetColorFilterEnabled): (WKPreferencesGetColorFilterEnabled): * UIProcess/API/C/WKPreferencesRefPrivate.h: * UIProcess/API/Cocoa/WKWebView.mm: (-[WKWebView _initializeWithConfiguration:]): * UIProcess/API/Cocoa/WKWebViewConfiguration.mm: (-[WKWebViewConfiguration init]): (-[WKWebViewConfiguration copyWithZone:]): (-[WKWebViewConfiguration _setAttachmentElementEnabled:]): (-[WKWebViewConfiguration _colorFilterEnabled]): (-[WKWebViewConfiguration _setColorFilterEnabled:]): * UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h: Tools: Adding an option to turn support for the -apple-color-filter property on via an HTML comment. * DumpRenderTree/TestOptions.cpp: (TestOptions::TestOptions): * DumpRenderTree/TestOptions.h: * DumpRenderTree/mac/DumpRenderTree.mm: (setWebPreferencesForTestOptions): * WebKitTestRunner/TestController.cpp: (WTR::TestController::resetPreferencesToConsistentValues): (WTR::updateTestOptionsFromTestHeader): * WebKitTestRunner/TestOptions.h: (WTR::TestOptions::hasSameInitializationOptions const): * WebKitTestRunner/cocoa/TestControllerCocoa.mm: (WTR::TestController::platformCreateWebView): LayoutTests: Update tests for color-filter to test -apple-color-filter and explicitly turn the feature on since it's disabled by default. We also update a test to not use the colorFilter accessor and setter on CSSStyleDeclaration because using an -apple- prefix will no longer expose such a getter or setter, using getPropertyValue() and setProperty() instead. * animations/resources/animation-test-helpers.js: (getPropertyValue): (comparePropertyValue): * css3/color-filters/color-filter-animation-expected.txt: * css3/color-filters/color-filter-animation.html: * css3/color-filters/color-filter-backgrounds-borders-expected.html: * css3/color-filters/color-filter-backgrounds-borders.html: * css3/color-filters/color-filter-box-shadow-expected.html: * css3/color-filters/color-filter-box-shadow.html: * css3/color-filters/color-filter-brightness-expected.html: * css3/color-filters/color-filter-brightness.html: * css3/color-filters/color-filter-caret-color-expected.html: * css3/color-filters/color-filter-caret-color.html: * css3/color-filters/color-filter-color-property-expected.html: * css3/color-filters/color-filter-color-property-list-item-expected.html: * css3/color-filters/color-filter-color-property-list-item.html: * css3/color-filters/color-filter-color-property.html: * css3/color-filters/color-filter-color-text-decorations-expected.html: * css3/color-filters/color-filter-color-text-decorations.html: * css3/color-filters/color-filter-column-rule-expected.html: * css3/color-filters/color-filter-column-rule.html: * css3/color-filters/color-filter-contrast-expected.html: * css3/color-filters/color-filter-contrast.html: * css3/color-filters/color-filter-current-color-expected.html: * css3/color-filters/color-filter-current-color.html: * css3/color-filters/color-filter-filter-list-expected.html: * css3/color-filters/color-filter-filter-list.html: * css3/color-filters/color-filter-gradients-expected.html: * css3/color-filters/color-filter-gradients.html: * css3/color-filters/color-filter-grayscale-expected.html: * css3/color-filters/color-filter-grayscale.html: * css3/color-filters/color-filter-hue-rotate-expected.html: * css3/color-filters/color-filter-hue-rotate.html: * css3/color-filters/color-filter-inherits-expected.html: * css3/color-filters/color-filter-inherits.html: * css3/color-filters/color-filter-invert-expected.html: * css3/color-filters/color-filter-invert.html: * css3/color-filters/color-filter-opacity-expected.html: * css3/color-filters/color-filter-opacity.html: * css3/color-filters/color-filter-outline-expected.html: * css3/color-filters/color-filter-outline.html: * css3/color-filters/color-filter-parsing-expected.txt: * css3/color-filters/color-filter-parsing.html: * css3/color-filters/color-filter-saturate-expected.html: * css3/color-filters/color-filter-saturate.html: * css3/color-filters/color-filter-sepia-expected.html: * css3/color-filters/color-filter-sepia.html: * css3/color-filters/color-filter-text-decoration-shadow-expected.html: * css3/color-filters/color-filter-text-decoration-shadow.html: * css3/color-filters/color-filter-text-emphasis-expected.html: * css3/color-filters/color-filter-text-emphasis.html: * css3/color-filters/color-filter-text-shadow-expected.html: * css3/color-filters/color-filter-text-shadow.html: * css3/color-filters/color-filter-text-stroke-expected.html: * css3/color-filters/color-filter-text-stroke.html: * css3/color-filters/svg/color-filter-inline-svg-expected.html: * css3/color-filters/svg/color-filter-inline-svg.html: Canonical link: https://commits.webkit.org/201735@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@232559 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2018-06-06 22:27:20 +00:00
<title>CSS Test: -apple-color-filter reference</title>
Make color-filter transform gradient colors https://bugs.webkit.org/show_bug.cgi?id=185080 Reviewed by Zalan Bujtas. Source/WebCore: In CSSGradientValue::computeStops(), transform the color of each gradient color stop through the color filter. Having a color filter makes the gradient uncacheable. Color filters can add alpha, so we also have to fix up CSSGradientValue::knownToBeOpaque() to take a RenderStyle and convert the colors before testing opaqueness. Clean up some related functions to take const RenderStyle&. Test: css3/color-filters/color-filter-gradients.html * css/CSSCrossfadeValue.cpp: (WebCore::subimageKnownToBeOpaque): * css/CSSFilterImageValue.cpp: (WebCore::CSSFilterImageValue::knownToBeOpaque const): * css/CSSFilterImageValue.h: * css/CSSGradientValue.cpp: (WebCore::CSSGradientValue::image): (WebCore::CSSGradientValue::computeStops): (WebCore::CSSGradientValue::knownToBeOpaque const): (WebCore::CSSLinearGradientValue::createGradient): (WebCore::CSSRadialGradientValue::createGradient): * css/CSSGradientValue.h: * css/CSSImageGeneratorValue.cpp: (WebCore::CSSImageGeneratorValue::knownToBeOpaque const): * css/CSSImageValue.cpp: (WebCore::CSSImageValue::knownToBeOpaque const): * css/CSSImageValue.h: LayoutTests: * css3/color-filters/color-filter-gradients-expected.html: Added. * css3/color-filters/color-filter-gradients.html: Added. Canonical link: https://commits.webkit.org/200571@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@231105 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2018-04-27 17:59:25 +00:00
<link rel="author" title="Apple" href="http://www.apple.com/">
<style type="text/css">
.test
{
Clean up color-filter tests. Detab the files. Remove calls to internals.settings.setColorFilterEnabled() which aren't needed, since WebKitTestRunner and DumpRenderTree turn the feature on by default. * css3/color-filters/color-filter-backgrounds-borders-expected.html: * css3/color-filters/color-filter-backgrounds-borders.html: * css3/color-filters/color-filter-box-shadow-expected.html: * css3/color-filters/color-filter-box-shadow.html: * css3/color-filters/color-filter-brightness-expected.html: * css3/color-filters/color-filter-brightness.html: * css3/color-filters/color-filter-color-property-expected.html: * css3/color-filters/color-filter-color-property-list-item-expected.html: * css3/color-filters/color-filter-color-property-list-item.html: * css3/color-filters/color-filter-color-property.html: * css3/color-filters/color-filter-color-text-decorations-expected.html: * css3/color-filters/color-filter-color-text-decorations.html: * css3/color-filters/color-filter-column-rule-expected.html: * css3/color-filters/color-filter-column-rule.html: * css3/color-filters/color-filter-contrast-expected.html: * css3/color-filters/color-filter-contrast.html: * css3/color-filters/color-filter-current-color-expected.html: * css3/color-filters/color-filter-current-color.html: * css3/color-filters/color-filter-filter-list-expected.html: * css3/color-filters/color-filter-filter-list.html: * css3/color-filters/color-filter-gradients-expected.html: * css3/color-filters/color-filter-gradients.html: * css3/color-filters/color-filter-grayscale-expected.html: * css3/color-filters/color-filter-grayscale.html: * css3/color-filters/color-filter-hue-rotate-expected.html: * css3/color-filters/color-filter-hue-rotate.html: * css3/color-filters/color-filter-inherits-expected.html: * css3/color-filters/color-filter-inherits.html: * css3/color-filters/color-filter-invert-expected.html: * css3/color-filters/color-filter-invert.html: * css3/color-filters/color-filter-opacity-expected.html: * css3/color-filters/color-filter-opacity.html: * css3/color-filters/color-filter-outline-expected.html: * css3/color-filters/color-filter-outline.html: * css3/color-filters/color-filter-parsing.html: * css3/color-filters/color-filter-saturate-expected.html: * css3/color-filters/color-filter-saturate.html: * css3/color-filters/color-filter-sepia-expected.html: * css3/color-filters/color-filter-sepia.html: * css3/color-filters/color-filter-text-decoration-shadow-expected.html: * css3/color-filters/color-filter-text-decoration-shadow.html: * css3/color-filters/color-filter-text-emphasis-expected.html: * css3/color-filters/color-filter-text-emphasis.html: * css3/color-filters/color-filter-text-shadow-expected.html: * css3/color-filters/color-filter-text-shadow.html: * css3/color-filters/color-filter-text-stroke.html: Canonical link: https://commits.webkit.org/200591@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@231125 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2018-04-28 00:27:39 +00:00
width: 200px;
height: 200px;
margin: 10px;
float: left;
Make color-filter transform gradient colors https://bugs.webkit.org/show_bug.cgi?id=185080 Reviewed by Zalan Bujtas. Source/WebCore: In CSSGradientValue::computeStops(), transform the color of each gradient color stop through the color filter. Having a color filter makes the gradient uncacheable. Color filters can add alpha, so we also have to fix up CSSGradientValue::knownToBeOpaque() to take a RenderStyle and convert the colors before testing opaqueness. Clean up some related functions to take const RenderStyle&. Test: css3/color-filters/color-filter-gradients.html * css/CSSCrossfadeValue.cpp: (WebCore::subimageKnownToBeOpaque): * css/CSSFilterImageValue.cpp: (WebCore::CSSFilterImageValue::knownToBeOpaque const): * css/CSSFilterImageValue.h: * css/CSSGradientValue.cpp: (WebCore::CSSGradientValue::image): (WebCore::CSSGradientValue::computeStops): (WebCore::CSSGradientValue::knownToBeOpaque const): (WebCore::CSSLinearGradientValue::createGradient): (WebCore::CSSRadialGradientValue::createGradient): * css/CSSGradientValue.h: * css/CSSImageGeneratorValue.cpp: (WebCore::CSSImageGeneratorValue::knownToBeOpaque const): * css/CSSImageValue.cpp: (WebCore::CSSImageValue::knownToBeOpaque const): * css/CSSImageValue.h: LayoutTests: * css3/color-filters/color-filter-gradients-expected.html: Added. * css3/color-filters/color-filter-gradients.html: Added. Canonical link: https://commits.webkit.org/200571@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@231105 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2018-04-27 17:59:25 +00:00
}
</style>
</head>
<body>
<div class="test" style="background-image: linear-gradient(blue, red);"></div>
<div class="test" style="background-image: radial-gradient(blue, red);"></div>
<div class="test" style="background-image: repeating-linear-gradient(blue, red 50px);"></div>
<div class="test" style="background-image: repeating-radial-gradient(blue, red 50px);"></div>
</body>
</html>