Ignore:
Timestamp:
Jun 6, 2018, 3:27:20 PM (7 years ago)
Author:
[email protected]
Message:

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:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/css/CSSGradientValue.cpp

    r231105 r232559  
    5353    if (size.isEmpty())
    5454        return nullptr;
    55     bool cacheable = isCacheable() && !renderer.style().hasColorFilter();
     55    bool cacheable = isCacheable() && !renderer.style().hasAppleColorFilter();
    5656    if (cacheable) {
    5757        if (!clients().contains(&renderer))
     
    242242
    243243            Color color = stop.m_resolvedColor;
    244             if (style.hasColorFilter())
    245                 style.colorFilter().transformColor(color);
     244            if (style.hasAppleColorFilter())
     245                style.appleColorFilter().transformColor(color);
    246246            result.uncheckedAppend({ offset, color });
    247247        }
     
    265265
    266266        Color color = stop.m_resolvedColor;
    267         if (style.hasColorFilter())
    268             style.colorFilter().transformColor(color);
     267        if (style.hasAppleColorFilter())
     268            style.appleColorFilter().transformColor(color);
    269269
    270270        stops[i].color = color;
     
    580580bool CSSGradientValue::knownToBeOpaque(const RenderElement& renderer) const
    581581{
    582     bool hasColorFilter = renderer.style().hasColorFilter();
     582    bool hasColorFilter = renderer.style().hasAppleColorFilter();
    583583
    584584    for (auto& stop : m_stops) {
    585585        if (hasColorFilter) {
    586586            Color stopColor = stop.m_resolvedColor;
    587             renderer.style().colorFilter().transformColor(stopColor);
     587            renderer.style().appleColorFilter().transformColor(stopColor);
    588588            if (!stopColor.isOpaque())
    589589                return false;
Note: See TracChangeset for help on using the changeset viewer.