Changeset 183610 in webkit
- Timestamp:
- Apr 29, 2015 8:15:23 PM (9 years ago)
- Location:
- trunk
- Files:
-
- 7 added
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r183609 r183610 1 2015-04-29 Dean Jackson <dino@apple.com> 2 3 Create a named CSS property for system colors 4 https://bugs.webkit.org/show_bug.cgi?id=144423 5 <rdar://problem/20491011> 6 7 Reviewed by Tim Horton. 8 9 Expose the following values to CSS color properties: 10 -apple-system-blue 11 -apple-system-brown 12 -apple-system-gray 13 -apple-system-green 14 -apple-system-orange 15 -apple-system-pink 16 -apple-system-purple 17 -apple-system-red 18 -apple-system-yellow 19 20 The new test shows the computed value for each of these colors. It 21 includes generic results (no special value) and platform results for 22 Mac (other than Mavericks) and iOS. 23 24 * fast/css/apple-system-colors-expected.txt: Generic results. 25 * fast/css/apple-system-colors.html: Added - the new test. 26 * platform/mac/fast/css/apple-system-colors-expected.txt: Added OS X results. 27 * platform/ios-simulator/fast/css/apple-system-colors-expected.txt: Added iOS results. 28 * platform/mac-mavericks/fast/css/apple-system-colors-expected.txt: Generic results for Mavericks. 29 1 30 2015-04-29 Commit Queue <commit-queue@webkit.org> 2 31 -
trunk/Source/WebCore/ChangeLog
r183609 r183610 1 2015-04-29 Dean Jackson <dino@apple.com> 2 3 Create a named CSS property for system colors 4 https://bugs.webkit.org/show_bug.cgi?id=144423 5 <rdar://problem/20491011> 6 7 Reviewed by Tim Horton. 8 9 Test: fast/css/apple-system-colors.html 10 11 Expose the following values to CSS color properties: 12 -apple-system-blue 13 -apple-system-brown 14 -apple-system-gray 15 -apple-system-green 16 -apple-system-orange 17 -apple-system-pink 18 -apple-system-purple 19 -apple-system-red 20 -apple-system-yellow 21 22 On platforms other than OS X Yosemite and iOS, the 23 actual color values are undefined and become transparent 24 black. (In fact, not all are defined on iOS either.) 25 26 * WebCore.xcodeproj/project.pbxproj: Two new SPI header files. 27 28 * css/CSSParser.cpp: 29 (WebCore::CSSParser::validSystemColorValue): New helper function that 30 checks if a CSSValueID is between the two system color values. This 31 was being tested everywhere, which meant adding a new system color was 32 at risk of being ignored. It's a static method so it can be used 33 from the SVG CSS parser too. 34 (WebCore::validPrimitiveValueColor): Use the new helper. 35 (WebCore::CSSParser::parseValue): Ditto. 36 (WebCore::CSSParser::parseBackgroundColor): Ditto. 37 (WebCore::CSSParser::parseShadow): Ditto. 38 (WebCore::parseDeprecatedGradientColorStop): Ditto. 39 (WebCore::parseGradientColorOrKeyword): Ditto. 40 * css/CSSParser.h: New static helper function. 41 42 * css/CSSValueKeywords.in: Add the new CSS value keywords. 43 44 * css/SVGCSSParser.cpp: 45 (WebCore::validSystemControlColorValue): SVG has a restricted 46 set of system colors, so use the helper from CSSParser but with 47 an extra condition. 48 (WebCore::CSSParser::parseSVGValue): Use the helper. 49 50 * platform/spi/ios/UIColorSPI.h: Added. 51 * platform/spi/cocoa/NSColorSPI.h: Added. 52 53 * rendering/RenderThemeIOS.h: New systemColor override. Also add a cache for system colors. 54 * rendering/RenderThemeIOS.mm: 55 (WebCore::RenderThemeIOS::systemColor): Ask UIColor to provide the color values for the new CSS values. 56 * rendering/RenderThemeMac.mm: 57 (WebCore::RenderThemeMac::systemColor): Ditto. 58 1 59 2015-04-29 Commit Queue <commit-queue@webkit.org> 2 60 -
trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj
r183598 r183610 1308 1308 31D591B316697A6C00E6BF02 /* PlugInClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 31D591B116697A6C00E6BF02 /* PlugInClient.h */; settings = {ATTRIBUTES = (Private, ); }; }; 1309 1309 31DCD29D1AB4FBDE0072E817 /* AnimationTrigger.h in Headers */ = {isa = PBXBuildFile; fileRef = 31DCD29C1AB4FBDE0072E817 /* AnimationTrigger.h */; settings = {ATTRIBUTES = (Private, ); }; }; 1310 31DF63571AF187DD0078FD91 /* NSColorSPI.h in Headers */ = {isa = PBXBuildFile; fileRef = 31DF63561AF187DD0078FD91 /* NSColorSPI.h */; }; 1311 31DF63591AF194F00078FD91 /* UIColorSPI.h in Headers */ = {isa = PBXBuildFile; fileRef = 31DF63581AF194F00078FD91 /* UIColorSPI.h */; }; 1310 1312 31EAF97E121435A400E7C1BF /* DeviceMotionClientIOS.h in Headers */ = {isa = PBXBuildFile; fileRef = 31EAF97C121435A400E7C1BF /* DeviceMotionClientIOS.h */; }; 1311 1313 31EAF97F121435A400E7C1BF /* DeviceMotionClientIOS.mm in Sources */ = {isa = PBXBuildFile; fileRef = 31EAF97D121435A400E7C1BF /* DeviceMotionClientIOS.mm */; }; … … 8448 8450 31D591B116697A6C00E6BF02 /* PlugInClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PlugInClient.h; sourceTree = "<group>"; }; 8449 8451 31DCD29C1AB4FBDE0072E817 /* AnimationTrigger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AnimationTrigger.h; path = animation/AnimationTrigger.h; sourceTree = "<group>"; }; 8452 31DF63561AF187DD0078FD91 /* NSColorSPI.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NSColorSPI.h; sourceTree = "<group>"; }; 8453 31DF63581AF194F00078FD91 /* UIColorSPI.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = UIColorSPI.h; path = ios/UIColorSPI.h; sourceTree = "<group>"; }; 8450 8454 31E8D8BA160BC94B004CE8F5 /* RenderSnapshottedPlugIn.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderSnapshottedPlugIn.cpp; sourceTree = "<group>"; }; 8451 8455 31E8D8BB160BC94C004CE8F5 /* RenderSnapshottedPlugIn.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderSnapshottedPlugIn.h; sourceTree = "<group>"; }; … … 16535 16539 A19D93441A9FEC7200B46C24 /* NEFilterSourceSPI.h */, 16536 16540 CE1252501A1BEBD800864480 /* NSCalendarDateSPI.h */, 16541 31DF63561AF187DD0078FD91 /* NSColorSPI.h */, 16537 16542 2DDB97F319F9AECA002025D8 /* NSExtensionSPI.h */, 16538 16543 CE12523A1A16711000864480 /* NSFileManagerSPI.h */, … … 18809 18814 6FAD4A561A9D0FAE009F7D3C /* OpenGLESSPI.h */, 18810 18815 CE1252381A166FA000864480 /* QuickLookSPI.h */, 18816 31DF63581AF194F00078FD91 /* UIColorSPI.h */, 18811 18817 ); 18812 18818 name = ios; … … 24156 24162 4A0FFAA21AAF5EA20062803B /* RealtimeMediaSourceCenter.h in Headers */, 24157 24163 4162A451101145AE00DFF3ED /* DedicatedWorkerGlobalScope.h in Headers */, 24164 31DF63571AF187DD0078FD91 /* NSColorSPI.h in Headers */, 24158 24165 41A3D58F101C152D00316D07 /* DedicatedWorkerThread.h in Headers */, 24159 24166 FD06DFA6134A4DEF006F5D7D /* DefaultAudioDestinationNode.h in Headers */, … … 26586 26593 088A0E06126EF1DB00978F7A /* SVGAnimatedPropertyDescription.h in Headers */, 26587 26594 088A0E07126EF1DB00978F7A /* SVGAnimatedPropertyMacros.h in Headers */, 26595 31DF63591AF194F00078FD91 /* UIColorSPI.h in Headers */, 26588 26596 088A0E08126EF1DB00978F7A /* SVGAnimatedPropertyTearOff.h in Headers */, 26589 26597 08C859C01274575400A5728D /* SVGAnimatedRect.h in Headers */, -
trunk/Source/WebCore/css/CSSParser.cpp
r183552 r183610 515 515 } 516 516 517 bool CSSParser::isValidSystemColorValue(CSSValueID valueID) 518 { 519 return valueID >= CSSValueAqua && valueID <= CSSValueAppleSystemYellow; 520 } 521 517 522 static bool validPrimitiveValueColor(CSSValueID valueID, bool strict = false) 518 523 { 519 524 return (valueID == CSSValueWebkitText || valueID == CSSValueCurrentcolor || valueID == CSSValueMenu 520 || (valueID >= CSSValueAlpha && valueID <= CSSValueWindowtext)525 || CSSParser::isValidSystemColorValue(valueID) || valueID == CSSValueAlpha 521 526 || (valueID >= CSSValueWebkitFocusRingColor && valueID < CSSValueWebkitText && !strict)); 522 527 } … … 2039 2044 else if (id == CSSValueCurrentcolor) 2040 2045 validPrimitive = true; 2041 else if ( (id >= CSSValueAqua && id <= CSSValueWindowtext) || id == CSSValueMenu ||2042 (id >= CSSValueWebkitFocusRingColor && id < CSSValueWebkitText && inQuirksMode())) {2046 else if (isValidSystemColorValue(id) || id == CSSValueMenu 2047 || (id >= CSSValueWebkitFocusRingColor && id < CSSValueWebkitText && inQuirksMode())) { 2043 2048 validPrimitive = true; 2044 2049 } else { … … 2880 2885 #if ENABLE(TOUCH_EVENTS) 2881 2886 case CSSPropertyWebkitTapHighlightColor: 2882 if ( (id >= CSSValueAqua && id <= CSSValueWindowtext) || id == CSSValueMenu2887 if (isValidSystemColorValue(id) || id == CSSValueMenu 2883 2888 || (id >= CSSValueWebkitFocusRingColor && id < CSSValueWebkitText && inQuirksMode())) { 2884 2889 validPrimitive = true; … … 4131 4136 { 4132 4137 CSSValueID id = m_valueList->current()->id; 4133 if (id == CSSValueWebkitText || (id >= CSSValueAqua && id <= CSSValueWindowtext) || id == CSSValueMenu || id == CSSValueCurrentcolor ||4134 (id >= CSSValueGrey && id < CSSValueWebkitText && inQuirksMode()))4138 if (id == CSSValueWebkitText || isValidSystemColorValue(id) || id == CSSValueMenu || id == CSSValueCurrentcolor 4139 || (id >= CSSValueGrey && id < CSSValueWebkitText && inQuirksMode())) 4135 4140 return cssValuePool().createIdentifierValue(id); 4136 4141 return parseColor(); … … 7625 7630 // The only other type of value that's ok is a color value. 7626 7631 RefPtr<CSSPrimitiveValue> parsedColor; 7627 bool isColor = ( (value->id >= CSSValueAqua && value->id <= CSSValueWindowtext) || value->id == CSSValueMenu7632 bool isColor = (isValidSystemColorValue(value->id) || value->id == CSSValueMenu 7628 7633 || (value->id >= CSSValueWebkitFocusRingColor && value->id <= CSSValueWebkitText && inQuirksMode()) 7629 7634 || value->id == CSSValueCurrentcolor); … … 8386 8391 8387 8392 CSSValueID id = args->current()->id; 8388 if (id == CSSValueWebkitText || (id >= CSSValueAqua && id <= CSSValueWindowtext) || id == CSSValueMenu)8393 if (id == CSSValueWebkitText || CSSParser::isValidSystemColorValue(id) || id == CSSValueMenu) 8389 8394 stop.m_color = cssValuePool().createIdentifierValue(id); 8390 8395 else … … 8413 8418 stopArg = args->next(); 8414 8419 CSSValueID id = stopArg->id; 8415 if (id == CSSValueWebkitText || (id >= CSSValueAqua && id <= CSSValueWindowtext) || id == CSSValueMenu)8420 if (id == CSSValueWebkitText || CSSParser::isValidSystemColorValue(id) || id == CSSValueMenu) 8416 8421 stop.m_color = cssValuePool().createIdentifierValue(id); 8417 8422 else … … 8584 8589 { 8585 8590 CSSValueID id = value.id; 8586 if (id == CSSValueWebkitText || (id >= CSSValueAqua && id <= CSSValueWindowtext) || id == CSSValueMenu || id == CSSValueCurrentcolor)8591 if (id == CSSValueWebkitText || CSSParser::isValidSystemColorValue(id) || id == CSSValueMenu || id == CSSValueCurrentcolor) 8587 8592 return cssValuePool().createIdentifierValue(id); 8588 8593 -
trunk/Source/WebCore/css/CSSParser.h
r183304 r183610 122 122 123 123 static bool parseColor(RGBA32& color, const String&, bool strict = false); 124 static bool isValidSystemColorValue(CSSValueID); 124 125 static bool parseSystemColor(RGBA32& color, const String&, Document*); 125 126 static PassRefPtr<CSSValueList> parseFontFaceValue(const AtomicString&); -
trunk/Source/WebCore/css/CSSValueKeywords.in
r183304 r183610 187 187 windowframe 188 188 windowtext 189 -apple-system-blue 190 -apple-system-brown 191 -apple-system-gray 192 -apple-system-green 193 -apple-system-orange 194 -apple-system-pink 195 -apple-system-purple 196 -apple-system-red 197 -apple-system-yellow 189 198 -webkit-focus-ring-color 190 199 currentcolor -
trunk/Source/WebCore/css/SVGCSSParser.cpp
r177623 r183610 33 33 34 34 namespace WebCore { 35 36 static bool isValidSystemControlColorValue(CSSValueID id) 37 { 38 return id >= CSSValueActiveborder && CSSParser::isValidSystemColorValue(id); 39 } 35 40 36 41 bool CSSParser::parseSVGValue(CSSPropertyID propId, bool important) … … 188 193 else if (id == CSSValueCurrentcolor) 189 194 parsedValue = SVGPaint::createCurrentColor(); 190 else if ( (id >= CSSValueActiveborder && id <= CSSValueWindowtext) || id == CSSValueMenu)195 else if (isValidSystemControlColorValue(id) || id == CSSValueMenu) 191 196 parsedValue = SVGPaint::createColor(RenderTheme::defaultTheme()->systemColor(id)); 192 197 else if (valueWithCalculation.value().unit == CSSPrimitiveValue::CSS_URI) { … … 211 216 case CSSPropertyFloodColor: 212 217 case CSSPropertyLightingColor: 213 if ( (id >= CSSValueAqua && id <= CSSValueWindowtext) ||214 (id >= CSSValueAliceblue && id <= CSSValueYellowgreen))218 if (CSSParser::isValidSystemColorValue(id) 219 || (id >= CSSValueAliceblue && id <= CSSValueYellowgreen)) 215 220 parsedValue = SVGColor::createFromString(valueWithCalculation.value().string); 216 221 else if (id == CSSValueCurrentcolor) -
trunk/Source/WebCore/rendering/RenderThemeIOS.h
r180490 r183610 112 112 #endif 113 113 114 virtual Color systemColor(CSSValueID) const override; 115 114 116 private: 115 117 RenderThemeIOS(); … … 121 123 String m_mediaControlsScript; 122 124 String m_mediaControlsStyleSheet; 125 126 mutable HashMap<int, RGBA32> m_systemColorCache; 123 127 }; 124 128 -
trunk/Source/WebCore/rendering/RenderThemeIOS.mm
r183292 r183610 57 57 #import "RenderView.h" 58 58 #import "SoftLinking.h" 59 #import "UIColorSPI.h" 59 60 #import "UserAgentScripts.h" 60 61 #import "UserAgentStyleSheets.h" … … 66 67 #import <wtf/StdLibExtras.h> 67 68 69 SOFT_LINK_FRAMEWORK(UIKit) 70 SOFT_LINK_CLASS(UIKit, UIApplication) 71 SOFT_LINK_CLASS(UIKit, UIColor) 72 SOFT_LINK_CONSTANT(UIKit, UIContentSizeCategoryDidChangeNotification, CFStringRef) 73 #define UIContentSizeCategoryDidChangeNotification getUIContentSizeCategoryDidChangeNotification() 74 75 #if !USE(APPLE_INTERNAL_SDK) 68 76 @interface UIApplication 69 77 + (UIApplication *)sharedApplication; 70 @property (nonatomic,copy) NSString *preferredContentSizeCategory;78 @property (nonatomic, copy) NSString *preferredContentSizeCategory; 71 79 @end 72 73 SOFT_LINK_FRAMEWORK(UIKit) 74 SOFT_LINK_CLASS(UIKit, UIApplication) 75 SOFT_LINK_CONSTANT(UIKit, UIContentSizeCategoryDidChangeNotification, CFStringRef) 76 #define UIContentSizeCategoryDidChangeNotification getUIContentSizeCategoryDidChangeNotification() 80 #endif 77 81 78 82 @interface WebCoreRenderThemeBundle : NSObject … … 1308 1312 #endif // ENABLE(VIDEO) 1309 1313 1314 Color RenderThemeIOS::systemColor(CSSValueID cssValueId) const 1315 { 1316 { 1317 auto it = m_systemColorCache.find(cssValueId); 1318 if (it != m_systemColorCache.end()) 1319 return it->value; 1320 } 1321 1322 Color color; 1323 switch (cssValueId) { 1324 case CSSValueAppleSystemBlue: 1325 color = [getUIColorClass() systemBlueColor].CGColor; 1326 break; 1327 case CSSValueAppleSystemGray: 1328 color = [getUIColorClass() systemGrayColor].CGColor; 1329 break; 1330 case CSSValueAppleSystemGreen: 1331 color = [getUIColorClass() systemGreenColor].CGColor; 1332 break; 1333 case CSSValueAppleSystemOrange: 1334 color = [getUIColorClass() systemOrangeColor].CGColor; 1335 break; 1336 case CSSValueAppleSystemPink: 1337 color = [getUIColorClass() systemPinkColor].CGColor; 1338 break; 1339 case CSSValueAppleSystemRed: 1340 color = [getUIColorClass() systemRedColor].CGColor; 1341 break; 1342 case CSSValueAppleSystemYellow: 1343 color = [getUIColorClass() systemYellowColor].CGColor; 1344 break; 1345 default: 1346 break; 1347 } 1348 1349 if (!color.isValid()) 1350 color = RenderTheme::systemColor(cssValueId); 1351 1352 if (color.isValid()) 1353 m_systemColorCache.set(cssValueId, color.rgb()); 1354 1355 return color; 1356 } 1357 1310 1358 } 1311 1359 -
trunk/Source/WebCore/rendering/RenderThemeMac.mm
r183378 r183610 49 49 #import "LocalizedStrings.h" 50 50 #import "MediaControlElements.h" 51 #import "NSColorSPI.h" 51 52 #import "NSSharingServicePickerSPI.h" 52 53 #import "Page.h" … … 458 459 { 459 460 { 460 HashMap<int, RGBA32>::iteratorit = m_systemColorCache.find(cssValueId);461 auto it = m_systemColorCache.find(cssValueId); 461 462 if (it != m_systemColorCache.end()) 462 463 return it->value; … … 568 569 color = convertNSColorToColor([NSColor windowFrameTextColor]); 569 570 break; 571 #if __MAC_OS_X_VERSION_MIN_REQUIRED >= 101000 572 case CSSValueAppleSystemBlue: 573 color = convertNSColorToColor([NSColor systemBlueColor]); 574 break; 575 case CSSValueAppleSystemBrown: 576 color = convertNSColorToColor([NSColor systemBrownColor]); 577 break; 578 case CSSValueAppleSystemGray: 579 color = convertNSColorToColor([NSColor systemGrayColor]); 580 break; 581 case CSSValueAppleSystemGreen: 582 color = convertNSColorToColor([NSColor systemGreenColor]); 583 break; 584 case CSSValueAppleSystemOrange: 585 color = convertNSColorToColor([NSColor systemOrangeColor]); 586 break; 587 case CSSValueAppleSystemPink: 588 color = convertNSColorToColor([NSColor systemPinkColor]); 589 break; 590 case CSSValueAppleSystemPurple: 591 color = convertNSColorToColor([NSColor systemPurpleColor]); 592 break; 593 case CSSValueAppleSystemRed: 594 color = convertNSColorToColor([NSColor systemRedColor]); 595 break; 596 case CSSValueAppleSystemYellow: 597 color = convertNSColorToColor([NSColor systemYellowColor]); 598 break; 599 #endif 570 600 default: 571 601 break;
Note: See TracChangeset
for help on using the changeset viewer.