WebKit Bugzilla
Attachment 342559 Details for
Bug 186566
: Semantic colors should not be transformed by color-filter
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
patch
semantic-color-no-filter.patch (text/plain), 8.63 KB, created by
Antti Koivisto
on 2018-06-12 10:34:19 PDT
(
hide
)
Description:
patch
Filename:
MIME Type:
Creator:
Antti Koivisto
Created:
2018-06-12 10:34:19 PDT
Size:
8.63 KB
patch
obsolete
>Index: Source/WebCore/platform/graphics/Color.h >=================================================================== >--- Source/WebCore/platform/graphics/Color.h (revision 232721) >+++ Source/WebCore/platform/graphics/Color.h (working copy) >@@ -119,6 +119,14 @@ public: > setRGB(color); > } > >+ enum SemanticTag { Semantic }; >+ >+ Color(RGBA32 color, SemanticTag) >+ { >+ setRGB(color); >+ setIsSemantic(); >+ } >+ > Color(int r, int g, int b) > { > setRGB(r, g, b); >@@ -240,6 +248,9 @@ public: > Color colorWithAlpha(float) const; > Color opaqueColor() const { return colorWithAlpha(1.0f); } > >+ // True if the color originated from a CSS semantic color name. >+ bool isSemantic() const { return !isExtended() && (m_colorData.rgbaAndFlags & isSemanticRBGAColorBit); } >+ > #if PLATFORM(GTK) > Color(const GdkColor&); > // We can't sensibly go back to GdkColor without losing the alpha value >@@ -296,6 +307,7 @@ public: > private: > void setRGB(int r, int g, int b) { setRGB(makeRGB(r, g, b)); } > void setRGB(RGBA32); >+ void setIsSemantic() { m_colorData.rgbaAndFlags |= isSemanticRBGAColorBit; } > > // 0x_______00 is an ExtendedColor pointer. > // 0x_______01 is an invalid RGBA32. >@@ -304,6 +316,7 @@ private: > static const uint64_t invalidRGBAColor = 0x1; > static const uint64_t validRGBAColorBit = 0x2; > static const uint64_t validRGBAColor = 0x3; >+ static const uint64_t isSemanticRBGAColorBit = 0x4; > > static const uint64_t deletedHashValue = 0xFFFFFFFFFFFFFFFD; > static const uint64_t emptyHashValue = 0xFFFFFFFFFFFFFFFB; >Index: Source/WebCore/platform/graphics/filters/FilterOperations.cpp >=================================================================== >--- Source/WebCore/platform/graphics/filters/FilterOperations.cpp (revision 232721) >+++ Source/WebCore/platform/graphics/filters/FilterOperations.cpp (working copy) >@@ -124,6 +124,9 @@ bool FilterOperations::transformColor(Co > { > if (isEmpty() || !color.isValid()) > return false; >+ // Color filter does not apply to semantic CSS colors (like "Windowframe"). >+ if (color.isSemantic()) >+ return false; > > FloatComponents components; > color.getRGBA(components.components[0], components.components[1], components.components[2], components.components[3]); >Index: Source/WebCore/platform/graphics/mac/ColorMac.h >=================================================================== >--- Source/WebCore/platform/graphics/mac/ColorMac.h (revision 232721) >+++ Source/WebCore/platform/graphics/mac/ColorMac.h (working copy) >@@ -37,6 +37,7 @@ OBJC_CLASS NSColor; > namespace WebCore { > > WEBCORE_EXPORT Color colorFromNSColor(NSColor *); >+WEBCORE_EXPORT Color colorFromNSColor(NSColor *, Color::SemanticTag); > WEBCORE_EXPORT NSColor *nsColor(const Color&); > > WEBCORE_EXPORT bool usesTestModeFocusRingColor(); >Index: Source/WebCore/platform/graphics/mac/ColorMac.mm >=================================================================== >--- Source/WebCore/platform/graphics/mac/ColorMac.mm (revision 232721) >+++ Source/WebCore/platform/graphics/mac/ColorMac.mm (working copy) >@@ -95,6 +95,11 @@ Color colorFromNSColor(NSColor *color) > return Color(makeRGBAFromNSColor(color)); > } > >+Color colorFromNSColor(NSColor *color, Color::SemanticTag) >+{ >+ return Color(makeRGBAFromNSColor(color), Color::Semantic); >+} >+ > NSColor *nsColor(const Color& color) > { > if (!color.isValid()) { >Index: Source/WebCore/rendering/RenderThemeMac.mm >=================================================================== >--- Source/WebCore/rendering/RenderThemeMac.mm (revision 232721) >+++ Source/WebCore/rendering/RenderThemeMac.mm (working copy) >@@ -485,7 +485,7 @@ Color RenderThemeMac::systemColor(CSSVal > // Only use NSColor when the system appearance is desired, otherwise use RenderTheme's default. > if (useSystemAppearance) { > if (!m_systemVisitedLinkColor.isValid()) >- m_systemVisitedLinkColor = colorFromNSColor([NSColor systemPurpleColor]); >+ m_systemVisitedLinkColor = colorFromNSColor([NSColor systemPurpleColor], Color::Semantic); > return m_systemVisitedLinkColor; > } > >@@ -597,7 +597,7 @@ Color RenderThemeMac::systemColor(CSSVal > > if (auto selector = selectCocoaColor()) { > if (auto color = wtfObjcMsgSend<NSColor *>([NSColor class], selector)) >- return colorFromNSColor(color); >+ return colorFromNSColor(color, Color::Semantic); > } > > switch (cssValueID) { >Index: LayoutTests/css3/color-filters/color-filter-ignore-semantic-expected.html >=================================================================== >--- LayoutTests/css3/color-filters/color-filter-ignore-semantic-expected.html (nonexistent) >+++ LayoutTests/css3/color-filters/color-filter-ignore-semantic-expected.html (working copy) >@@ -0,0 +1,34 @@ >+<!DOCTYPE html><!-- webkit-test-runner [ enableColorFilter=true ] --> >+<html> >+ <head> >+ <title>CSS Test: Don't apply -apple-color-filter to semantic colors</title> >+ <link rel="author" title="Apple" href="http://www.apple.com/"> >+ <link rel="match" href="-apple-color-filter-ignore-semantic-expected.html"> >+ >+ <style type="text/css"> >+ .test >+ { >+ width: 100px; >+ height: 100px; >+ margin: 10px; >+ float: left; >+ } >+ </style> >+ </head> >+ <body> >+ <div class="test" style="background-color: rgb(0, 255, 255);"></div> >+ <div class="test" style="background-color: rgb(0, 255, 255);"></div> >+ <div class="test" style="background-color: text"></div> >+ <div class="test" style="background-color: highlight"></div> >+ <div class="test" style="background-color: window"></div> >+ <div class="test" style="background-color: -apple-system-text-background"></div> >+ <div class="test" style="background-color: -apple-system-header-text"></div> >+ <div class="test" style="background-color: -apple-system-alternate-selected"></div> >+ <div class="test" style="background-color: -apple-system-label"></div> >+ <div class="test" style="background-color: -apple-system-secondary-label"></div> >+ <div class="test" style="background-color: -apple-system-tertiary-label"></div> >+ <div class="test" style="background-color: -apple-system-quaternary-label"></div> >+ <div class="test" style="background-color: -apple-system-grid"></div> >+ <div class="test" style="background-color: -apple-system-blue-color"></div> >+ </body> >+</html> >Index: LayoutTests/css3/color-filters/color-filter-ignore-semantic.html >=================================================================== >--- LayoutTests/css3/color-filters/color-filter-ignore-semantic.html (nonexistent) >+++ LayoutTests/css3/color-filters/color-filter-ignore-semantic.html (working copy) >@@ -0,0 +1,37 @@ >+<!DOCTYPE html><!-- webkit-test-runner [ enableColorFilter=true ] --> >+<html> >+ <head> >+ <title>CSS Test: Don't apply -apple-color-filter to semantic colors</title> >+ <link rel="author" title="Apple" href="http://www.apple.com/"> >+ <link rel="match" href="-apple-color-filter-ignore-semantic-expected.html"> >+ >+ <style type="text/css"> >+ .test >+ { >+ width: 100px; >+ height: 100px; >+ margin: 10px; >+ float: left; >+ -apple-color-filter: invert(); >+ } >+ </style> >+ </head> >+ <body> >+ <!--Filtered--> >+ <div class="test" style="background-color: rgb(255, 0, 0)"></div> >+ <div class="test" style="background-color: red"></div> >+ <!--Not filtered--> >+ <div class="test" style="background-color: text"></div> >+ <div class="test" style="background-color: highlight"></div> >+ <div class="test" style="background-color: window"></div> >+ <div class="test" style="background-color: -apple-system-text-background"></div> >+ <div class="test" style="background-color: -apple-system-header-text"></div> >+ <div class="test" style="background-color: -apple-system-alternate-selected"></div> >+ <div class="test" style="background-color: -apple-system-label"></div> >+ <div class="test" style="background-color: -apple-system-secondary-label"></div> >+ <div class="test" style="background-color: -apple-system-tertiary-label"></div> >+ <div class="test" style="background-color: -apple-system-quaternary-label"></div> >+ <div class="test" style="background-color: -apple-system-grid"></div> >+ <div class="test" style="background-color: -apple-system-blue-color"></div> >+ </body> >+</html>
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Flags:
ews-watchlist
:
commit-queue-
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 186566
:
342559
|
342566
|
342580
|
342582
|
342585
|
342648
|
342649
|
342654
|
342655
|
342811