Changeset 254373 in webkit


Ignore:
Timestamp:
Jan 10, 2020 3:39:54 PM (4 years ago)
Author:
pvollan@apple.com
Message:

Map CSS value ID to system color in the UI process
https://bugs.webkit.org/show_bug.cgi?id=204314

Reviewed by Dean Jackson.

Source/WebCore:

Currently, RenderThemeIOS is mapping CSS value IDs to system colors in the WebContent process. This mapping leads to
invoking selectors on UITraitCollection and UIColor, which will send messages to the runningboard daemon. Since we
will be blocking access to this daemon in the WebContent process, this mapping should be moved to the UI process.
The UI process will create a mapping between CSS value IDs and system colors, and pass it to the WebContent process.

Test: fast/css/ios/system-color-for-css-value.html

  • WebCore.xcodeproj/project.pbxproj:
  • css/StyleColor.h:
  • css/parser/CSSPropertyParser.h:
  • rendering/CSSValueKey.h: Added.

(WebCore::operator==):
(WebCore::CSSValueKey::encode const):
(WebCore::CSSValueKey::decode):
(WebCore::CSSValueKey::hash const):
(WTF::CSSValueKeyHash::hash):
(WTF::CSSValueKeyHash::equal):
(WTF::HashTraits<WebCore::CSSValueKey>::emptyValue):
(WTF::HashTraits<WebCore::CSSValueKey>::constructDeletedValue):
(WTF::HashTraits<WebCore::CSSValueKey>::isDeletedValue):

  • rendering/RenderThemeIOS.h:
  • rendering/RenderThemeIOS.mm:

(WebCore::cssValueIDSelectorList):
(WebCore::systemColorFromCSSValueID):
(WebCore::globalCSSValueToSystemColorMap):
(WebCore::RenderThemeIOS::getOrCreateCSSValueToSystemColorMap):
(WebCore::RenderThemeIOS::setCSSValueToSystemColorMap):
(WebCore::RenderThemeIOS::systemColor const):

  • testing/Internals.cpp:

(WebCore::Internals::systemColorForCSSValue):

  • testing/Internals.h:
  • testing/Internals.idl:

Source/WebKit:

Create mapping between CSS value IDs and system colors in the UI process and send to the WebContent process
on process startup.

  • Shared/WebProcessCreationParameters.cpp:

(WebKit::WebProcessCreationParameters::encode const):
(WebKit::WebProcessCreationParameters::decode):

  • Shared/WebProcessCreationParameters.h:
  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::WebProcessPool::platformInitializeWebProcess):

  • WebProcess/cocoa/WebProcessCocoa.mm:

(WebKit::WebProcess::platformInitializeWebProcess):

LayoutTests:

  • TestExpectations:
  • fast/css/ios: Added.
  • fast/css/ios/system-color-for-css-value-expected.txt: Added.
  • fast/css/ios/system-color-for-css-value.html: Added.
  • platform/ios/TestExpectations:
Location:
trunk
Files:
4 added
17 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r254372 r254373  
     12020-01-09  Per Arne Vollan  <pvollan@apple.com>
     2
     3        Map CSS value ID to system color in the UI process
     4        https://bugs.webkit.org/show_bug.cgi?id=204314
     5
     6        Reviewed by Dean Jackson.
     7
     8        * TestExpectations:
     9        * fast/css/ios: Added.
     10        * fast/css/ios/system-color-for-css-value-expected.txt: Added.
     11        * fast/css/ios/system-color-for-css-value.html: Added.
     12        * platform/ios/TestExpectations:
     13
    1142020-01-10  Pablo Saavedra  <psaavedra@igalia.com>
    215
  • trunk/LayoutTests/TestExpectations

    r254326 r254373  
    2424editing/undo-manager [ Skip ]
    2525tiled-drawing [ Skip ]
     26fast/css/ios [ Skip ]
    2627fast/css/watchos [ Skip ]
    2728fast/dom/Window/watchos [ Skip ]
  • trunk/LayoutTests/platform/ios/TestExpectations

    r254014 r254373  
    1414swipe [ Pass ]
    1515
     16fast/css/ios [ Pass ]
    1617fast/media/ios [ Pass ]
    1718
     
    34593460webkit.org/b/204757 imported/w3c/web-platform-tests/fetch/api/request/destination/fetch-destination-no-load-event.https.html [ Pass Failure ]
    34603461
    3461 webkit.org/b/205309 scrollingcoordinator/ios/scroll-position-after-reattach.html [ ImageonlyFailure ]
     3462webkit.org/b/205309 scrollingcoordinator/ios/scroll-position-after-reattach.html [ ImageOnlyFailure ]
  • trunk/Source/WebCore/ChangeLog

    r254371 r254373  
     12020-01-09  Per Arne Vollan  <pvollan@apple.com>
     2
     3        Map CSS value ID to system color in the UI process
     4        https://bugs.webkit.org/show_bug.cgi?id=204314
     5
     6        Reviewed by Dean Jackson.
     7
     8        Currently, RenderThemeIOS is mapping CSS value IDs to system colors in the WebContent process. This mapping leads to
     9        invoking selectors on UITraitCollection and UIColor, which will send messages to the runningboard daemon. Since we
     10        will be blocking access to this daemon in the WebContent process, this mapping should be moved to the UI process.
     11        The UI process will create a mapping between CSS value IDs and system colors, and pass it to the WebContent process.
     12
     13        Test: fast/css/ios/system-color-for-css-value.html
     14
     15        * WebCore.xcodeproj/project.pbxproj:
     16        * css/StyleColor.h:
     17        * css/parser/CSSPropertyParser.h:
     18        * rendering/CSSValueKey.h: Added.
     19        (WebCore::operator==):
     20        (WebCore::CSSValueKey::encode const):
     21        (WebCore::CSSValueKey::decode):
     22        (WebCore::CSSValueKey::hash const):
     23        (WTF::CSSValueKeyHash::hash):
     24        (WTF::CSSValueKeyHash::equal):
     25        (WTF::HashTraits<WebCore::CSSValueKey>::emptyValue):
     26        (WTF::HashTraits<WebCore::CSSValueKey>::constructDeletedValue):
     27        (WTF::HashTraits<WebCore::CSSValueKey>::isDeletedValue):
     28        * rendering/RenderThemeIOS.h:
     29        * rendering/RenderThemeIOS.mm:
     30        (WebCore::cssValueIDSelectorList):
     31        (WebCore::systemColorFromCSSValueID):
     32        (WebCore::globalCSSValueToSystemColorMap):
     33        (WebCore::RenderThemeIOS::getOrCreateCSSValueToSystemColorMap):
     34        (WebCore::RenderThemeIOS::setCSSValueToSystemColorMap):
     35        (WebCore::RenderThemeIOS::systemColor const):
     36        * testing/Internals.cpp:
     37        (WebCore::Internals::systemColorForCSSValue):
     38        * testing/Internals.h:
     39        * testing/Internals.idl:
     40
    1412020-01-10  Antti Koivisto  <antti@apple.com>
    242
  • trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj

    r254214 r254373  
    48044804                E3B2F0EE1D7F4CA900B0C9D1 /* LoadableScriptClient.h in Headers */ = {isa = PBXBuildFile; fileRef = E3B2F0E81D7F35EC00B0C9D1 /* LoadableScriptClient.h */; settings = {ATTRIBUTES = (Private, ); }; };
    48054805                E3B2F0F01D7F4CB500B0C9D1 /* LoadableClassicScript.h in Headers */ = {isa = PBXBuildFile; fileRef = E3B2F0E41D7F35EC00B0C9D1 /* LoadableClassicScript.h */; settings = {ATTRIBUTES = (Private, ); }; };
     4806                E3BBC24723835526006EC39F /* CSSValueKey.h in Headers */ = {isa = PBXBuildFile; fileRef = E3BBC2452383551A006EC39F /* CSSValueKey.h */; settings = {ATTRIBUTES = (Private, ); }; };
    48064807                E3C99A091DC3D41C00794AD3 /* DOMJITCheckDOM.h in Headers */ = {isa = PBXBuildFile; fileRef = E3C99A081DC3D41700794AD3 /* DOMJITCheckDOM.h */; };
    48074808                E3C9AECB2113149900419B92 /* JSMicrotaskCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = E3C9AEC92113147400419B92 /* JSMicrotaskCallback.h */; };
     
    1515315154                E3B2F0E91D7F3D3C00B0C9D1 /* LoadableScript.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = LoadableScript.cpp; sourceTree = "<group>"; };
    1515415155                E3B7C0621DC3415A001FB0B8 /* JSDocumentDOMJIT.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSDocumentDOMJIT.cpp; sourceTree = "<group>"; };
     15156                E3BBC2452383551A006EC39F /* CSSValueKey.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CSSValueKey.h; sourceTree = "<group>"; };
    1515515157                E3BC827322530221005276DE /* NodeList.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = NodeList.cpp; sourceTree = "<group>"; };
    1515615158                E3BF19E122AF2F55009C9926 /* XMLHttpRequestProgressEvent.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = XMLHttpRequestProgressEvent.cpp; sourceTree = "<group>"; };
     
    2768227684                                0F53FB81213B1BB800C40D34 /* CSSFilter.cpp */,
    2768327685                                0F53FB83213B1BB800C40D34 /* CSSFilter.h */,
     27686                                E3BBC2452383551A006EC39F /* CSSValueKey.h */,
    2768427687                                A8CFF6CA0A1561CD000A4234 /* EllipsisBox.cpp */,
    2768527688                                A8CFF6BD0A156118000A4234 /* EllipsisBox.h */,
     
    2957129574                                BC7D8FF01BD03B6400FFE540 /* CSSUnsetValue.h in Headers */,
    2957229575                                A80E6CEE0A1989CA007FB8C5 /* CSSValue.h in Headers */,
     29576                                E3BBC24723835526006EC39F /* CSSValueKey.h in Headers */,
    2957329577                                6565815109D13043000E61D7 /* CSSValueKeywords.h in Headers */,
    2957429578                                A80E6CE90A1989CA007FB8C5 /* CSSValueList.h in Headers */,
  • trunk/Source/WebCore/css/StyleColor.h

    r246938 r254373  
    6161    static Color colorFromKeyword(CSSValueID, OptionSet<Options>);
    6262    static bool isColorKeyword(CSSValueID);
    63     static bool isSystemColor(CSSValueID);
     63    WEBCORE_EXPORT static bool isSystemColor(CSSValueID);
    6464
    6565private:
  • trunk/Source/WebCore/css/parser/CSSPropertyParser.h

    r251796 r254373  
    123123
    124124CSSPropertyID cssPropertyID(StringView);
    125 CSSValueID cssValueKeywordID(StringView);
     125WEBCORE_EXPORT CSSValueID cssValueKeywordID(StringView);
    126126bool isCustomPropertyName(const String&);
    127127
  • trunk/Source/WebCore/rendering/RenderThemeIOS.h

    r253784 r254373  
    2828#if PLATFORM(IOS_FAMILY)
    2929
     30#include "CSSValueKey.h"
    3031#include "RenderThemeCocoa.h"
    3132
     
    6061#endif
    6162
     63    using CSSValueToSystemColorMap = HashMap<CSSValueKey, Color>;
     64
     65    WEBCORE_EXPORT static const CSSValueToSystemColorMap& cssValueToSystemColorMap();
     66    WEBCORE_EXPORT static void setCSSValueToSystemColorMap(CSSValueToSystemColorMap&&);
     67   
    6268protected:
    6369    LengthBox popupInternalPaddingBox(const RenderStyle&) const override;
  • trunk/Source/WebCore/rendering/RenderThemeIOS.mm

    r253784 r254373  
    3232#import "CSSPrimitiveValue.h"
    3333#import "CSSToLengthConversionData.h"
     34#import "CSSValueKey.h"
    3435#import "CSSValueKeywords.h"
    3536#import "ColorIOS.h"
     
    14311432#endif // ENABLE(VIDEO)
    14321433
     1434struct CSSValueIDAndSelector {
     1435    CSSValueID cssValueID;
     1436    SEL selector;
     1437};
     1438
     1439static const Vector<CSSValueIDAndSelector>& cssValueIDSelectorList()
     1440{
     1441    static NeverDestroyed<Vector<CSSValueIDAndSelector>> cssValueIDSelectorList;
     1442
     1443    static std::once_flag initializeOnce;
     1444    std::call_once(
     1445        initializeOnce,
     1446        [] {
     1447        cssValueIDSelectorList.get() = Vector(std::initializer_list<CSSValueIDAndSelector> {
     1448#if HAVE(OS_DARK_MODE_SUPPORT)
     1449            { CSSValueText, @selector(labelColor) },
     1450            { CSSValueAppleSystemLabel, @selector(labelColor) },
     1451            { CSSValueAppleSystemHeaderText, @selector(labelColor) },
     1452            { CSSValueAppleSystemSecondaryLabel, @selector(secondaryLabelColor) },
     1453            { CSSValueAppleSystemTertiaryLabel, @selector(tertiaryLabelColor) },
     1454            { CSSValueAppleSystemQuaternaryLabel, @selector(quaternaryLabelColor) },
     1455            { CSSValueAppleSystemPlaceholderText, @selector(placeholderTextColor) },
     1456            { CSSValueWebkitControlBackground, @selector(systemBackgroundColor) },
     1457            { CSSValueAppleSystemControlBackground, @selector(systemBackgroundColor) },
     1458            { CSSValueAppleSystemTextBackground, @selector(systemBackgroundColor) },
     1459            { CSSValueAppleSystemBackground, @selector(systemBackgroundColor) },
     1460            { CSSValueAppleSystemSecondaryBackground, @selector(secondarySystemBackgroundColor) },
     1461            { CSSValueAppleSystemTertiaryBackground, @selector(tertiarySystemBackgroundColor) },
     1462            { CSSValueAppleSystemGroupedBackground, @selector(systemGroupedBackgroundColor) },
     1463            { CSSValueAppleSystemSecondaryGroupedBackground, @selector(secondarySystemGroupedBackgroundColor) },
     1464            { CSSValueAppleSystemTertiaryGroupedBackground, @selector(tertiarySystemGroupedBackgroundColor) },
     1465            { CSSValueAppleSystemGrid, @selector(separatorColor) },
     1466            { CSSValueAppleSystemSeparator, @selector(separatorColor) },
     1467            { CSSValueAppleSystemContainerBorder, @selector(separatorColor) },
     1468            { CSSValueAppleSystemSelectedContentBackground, @selector(tableCellDefaultSelectionTintColor) },
     1469            { CSSValueAppleSystemUnemphasizedSelectedContentBackground, @selector(tableCellDefaultSelectionTintColor) },
     1470            { CSSValueAppleSystemBrown, @selector(systemBrownColor) },
     1471            { CSSValueAppleSystemIndigo, @selector(systemIndigoColor) },
     1472#endif
     1473            { CSSValueAppleSystemTeal, @selector(systemTealColor) },
     1474            { CSSValueAppleWirelessPlaybackTargetActive, @selector(systemBlueColor) },
     1475            { CSSValueAppleSystemBlue, @selector(systemBlueColor) },
     1476            { CSSValueAppleSystemGray, @selector(systemGrayColor) },
     1477            { CSSValueAppleSystemGreen, @selector(systemGreenColor) },
     1478            { CSSValueAppleSystemOrange, @selector(systemOrangeColor) },
     1479            { CSSValueAppleSystemPink, @selector(systemPinkColor) },
     1480            { CSSValueAppleSystemPurple, @selector(systemPurpleColor) },
     1481            { CSSValueAppleSystemRed, @selector(systemRedColor) },
     1482            { CSSValueAppleSystemYellow, @selector(systemYellowColor) }
     1483        });
     1484    });
     1485
     1486    return cssValueIDSelectorList;
     1487}
     1488
     1489static Optional<Color> systemColorFromCSSValueID(CSSValueID cssValueID, bool useDarkAppearance, bool useElevatedUserInterfaceLevel)
     1490{
     1491    LocalCurrentTraitCollection localTraitCollection(useDarkAppearance, useElevatedUserInterfaceLevel);
     1492
     1493    auto cssColorToSelector = [cssValueID] () -> SEL {
     1494        for (auto& cssValueIDSelector : cssValueIDSelectorList()) {
     1495            if (cssValueIDSelector.cssValueID == cssValueID)
     1496                return cssValueIDSelector.selector;
     1497        }
     1498        return nullptr;
     1499    };
     1500
     1501    if (auto selector = cssColorToSelector()) {
     1502        if (auto color = wtfObjCMsgSend<UIColor *>(PAL::getUIColorClass(), selector))
     1503            return Color(color.CGColor, Color::Semantic);
     1504    }
     1505    return WTF::nullopt;
     1506}
     1507
     1508
     1509static RenderThemeIOS::CSSValueToSystemColorMap& globalCSSValueToSystemColorMap()
     1510{
     1511    static NeverDestroyed<RenderThemeIOS::CSSValueToSystemColorMap> colorMap;
     1512    return colorMap;
     1513}
     1514
     1515const RenderThemeIOS::CSSValueToSystemColorMap& RenderThemeIOS::cssValueToSystemColorMap()
     1516{
     1517    static NeverDestroyed<CSSValueToSystemColorMap> map;
     1518
     1519    static std::once_flag onceFlag;
     1520    std::call_once(
     1521        onceFlag,
     1522        [] {
     1523        for (auto& cssValueIDSelector : cssValueIDSelectorList()) {
     1524            for (bool useDarkAppearance : { false, true }) {
     1525                for (bool useElevatedUserInterfaceLevel : { false, true }) {
     1526                    if (auto color = systemColorFromCSSValueID(cssValueIDSelector.cssValueID, useDarkAppearance, useElevatedUserInterfaceLevel))
     1527                        map.get().add(CSSValueKey { cssValueIDSelector.cssValueID, useDarkAppearance, useElevatedUserInterfaceLevel }, *color);
     1528                }
     1529            }
     1530        }
     1531    });
     1532
     1533    return map;
     1534}
     1535
     1536void RenderThemeIOS::setCSSValueToSystemColorMap(CSSValueToSystemColorMap&& colorMap)
     1537{
     1538    globalCSSValueToSystemColorMap() = WTFMove(colorMap);
     1539}
     1540
    14331541Color RenderThemeIOS::systemColor(CSSValueID cssValueID, OptionSet<StyleColor::Options> options) const
    14341542{
     
    14471555        const bool useDarkAppearance = options.contains(StyleColor::Options::UseDarkAppearance);
    14481556        const bool useElevatedUserInterfaceLevel = options.contains(StyleColor::Options::UseElevatedUserInterfaceLevel);
    1449         LocalCurrentTraitCollection localTraitCollection(useDarkAppearance, useElevatedUserInterfaceLevel);
    1450 
    1451         auto cssColorToSelector = [cssValueID] () -> SEL {
    1452             switch (cssValueID) {
    1453 #if HAVE(OS_DARK_MODE_SUPPORT)
    1454             case CSSValueText:
    1455             case CSSValueAppleSystemLabel:
    1456             case CSSValueAppleSystemHeaderText:
    1457                 return @selector(labelColor);
    1458             case CSSValueAppleSystemSecondaryLabel:
    1459                 return @selector(secondaryLabelColor);
    1460             case CSSValueAppleSystemTertiaryLabel:
    1461                 return @selector(tertiaryLabelColor);
    1462             case CSSValueAppleSystemQuaternaryLabel:
    1463                 return @selector(quaternaryLabelColor);
    1464             case CSSValueAppleSystemPlaceholderText:
    1465                 return @selector(placeholderTextColor);
    1466             case CSSValueWebkitControlBackground:
    1467             case CSSValueAppleSystemControlBackground:
    1468             case CSSValueAppleSystemTextBackground:
    1469             case CSSValueAppleSystemBackground:
    1470                 return @selector(systemBackgroundColor);
    1471             case CSSValueAppleSystemSecondaryBackground:
    1472                 return @selector(secondarySystemBackgroundColor);
    1473             case CSSValueAppleSystemTertiaryBackground:
    1474                 return @selector(tertiarySystemBackgroundColor);
    1475             case CSSValueAppleSystemGroupedBackground:
    1476                 return @selector(systemGroupedBackgroundColor);
    1477             case CSSValueAppleSystemSecondaryGroupedBackground:
    1478                 return @selector(secondarySystemGroupedBackgroundColor);
    1479             case CSSValueAppleSystemTertiaryGroupedBackground:
    1480                 return @selector(tertiarySystemGroupedBackgroundColor);
    1481             case CSSValueAppleSystemGrid:
    1482             case CSSValueAppleSystemSeparator:
    1483             case CSSValueAppleSystemContainerBorder:
    1484                 return @selector(separatorColor);
    1485             case CSSValueAppleSystemSelectedContentBackground:
    1486             case CSSValueAppleSystemUnemphasizedSelectedContentBackground:
    1487                 return @selector(tableCellDefaultSelectionTintColor);
    1488             case CSSValueAppleSystemBrown:
    1489                 return @selector(systemBrownColor);
    1490             case CSSValueAppleSystemIndigo:
    1491                 return @selector(systemIndigoColor);
    1492 #endif
    1493             case CSSValueAppleSystemTeal:
    1494                 return @selector(systemTealColor);
    1495             case CSSValueAppleWirelessPlaybackTargetActive:
    1496             case CSSValueAppleSystemBlue:
    1497                 return @selector(systemBlueColor);
    1498             case CSSValueAppleSystemGray:
    1499                 return @selector(systemGrayColor);
    1500             case CSSValueAppleSystemGreen:
    1501                 return @selector(systemGreenColor);
    1502             case CSSValueAppleSystemOrange:
    1503                 return @selector(systemOrangeColor);
    1504             case CSSValueAppleSystemPink:
    1505                 return @selector(systemPinkColor);
    1506             case CSSValueAppleSystemPurple:
    1507                 return @selector(systemPurpleColor);
    1508             case CSSValueAppleSystemRed:
    1509                 return @selector(systemRedColor);
    1510             case CSSValueAppleSystemYellow:
    1511                 return @selector(systemYellowColor);
    1512             default:
    1513                 return nullptr;
    1514             }
    1515         };
    1516 
    1517         if (auto selector = cssColorToSelector()) {
    1518             if (auto color = wtfObjCMsgSend<UIColor *>(PAL::getUIColorClass(), selector))
    1519                 return Color(color.CGColor, Color::Semantic);
     1557        if (!globalCSSValueToSystemColorMap().isEmpty()) {
     1558            auto it = globalCSSValueToSystemColorMap().find(CSSValueKey { cssValueID, useDarkAppearance, useElevatedUserInterfaceLevel });
     1559            if (it == globalCSSValueToSystemColorMap().end())
     1560                return RenderTheme::systemColor(cssValueID, options);
     1561            return Color(it->value.rgb(), Color::Semantic);
    15201562        }
    1521 
     1563        auto color = systemColorFromCSSValueID(cssValueID, useDarkAppearance, useElevatedUserInterfaceLevel);
     1564        if (color)
     1565            return *color;
    15221566        return RenderTheme::systemColor(cssValueID, options);
    15231567    }).iterator->value;
  • trunk/Source/WebCore/testing/Internals.cpp

    r254194 r254373  
    4040#include "CSSKeyframesRule.h"
    4141#include "CSSMediaRule.h"
     42#include "CSSPropertyParser.h"
    4243#include "CSSStyleRule.h"
    4344#include "CSSSupportsRule.h"
     
    150151#include "RenderLayerCompositor.h"
    151152#include "RenderMenuList.h"
     153#include "RenderTheme.h"
    152154#include "RenderTreeAsText.h"
    153155#include "RenderView.h"
     
    54205422}
    54215423
     5424String Internals::systemColorForCSSValue(const String& cssValue, bool useDarkModeAppearance, bool useElevatedUserInterfaceLevel)
     5425{
     5426    CSSValueID id = cssValueKeywordID(cssValue);
     5427    RELEASE_ASSERT(StyleColor::isSystemColor(id));
     5428
     5429    OptionSet<StyleColor::Options> options;
     5430    if (useDarkModeAppearance)
     5431        options.add(StyleColor::Options::UseDarkAppearance);
     5432    if (useElevatedUserInterfaceLevel)
     5433        options.add(StyleColor::Options::UseElevatedUserInterfaceLevel);
     5434   
     5435    return RenderTheme::singleton().systemColor(id, options).cssText();
     5436}
     5437
    54225438} // namespace WebCore
  • trunk/Source/WebCore/testing/Internals.h

    r254178 r254373  
    925925    String windowLocationHost(DOMWindow&);
    926926
     927    String systemColorForCSSValue(const String& cssValue, bool useDarkModeAppearance, bool useElevatedUserInterfaceLevel);
     928
    927929private:
    928930    explicit Internals(Document&);
  • trunk/Source/WebCore/testing/Internals.idl

    r254178 r254373  
    832832    boolean hasSandboxMachLookupAccessToGlobalName(DOMString process, DOMString service);
    833833    boolean hasSandboxMachLookupAccessToXPCServiceName(DOMString process, DOMString service);
    834 };
     834   
     835    DOMString systemColorForCSSValue(DOMString cssValue, boolean useDarkModeAppearance, boolean useElevatedUserInterfaceLevel);
     836};
  • trunk/Source/WebKit/ChangeLog

    r254370 r254373  
     12020-01-09  Per Arne Vollan  <pvollan@apple.com>
     2
     3        Map CSS value ID to system color in the UI process
     4        https://bugs.webkit.org/show_bug.cgi?id=204314
     5
     6        Reviewed by Dean Jackson.
     7
     8        Create mapping between CSS value IDs and system colors in the UI process and send to the WebContent process
     9        on process startup.
     10
     11        * Shared/WebProcessCreationParameters.cpp:
     12        (WebKit::WebProcessCreationParameters::encode const):
     13        (WebKit::WebProcessCreationParameters::decode):
     14        * Shared/WebProcessCreationParameters.h:
     15        * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
     16        (WebKit::WebProcessPool::platformInitializeWebProcess):
     17        * WebProcess/cocoa/WebProcessCocoa.mm:
     18        (WebKit::WebProcess::platformInitializeWebProcess):
     19
    1202020-01-10  Mark Lam  <mark.lam@apple.com>
    221
  • trunk/Source/WebKit/Shared/WebProcessCreationParameters.cpp

    r254130 r254373  
    171171#if PLATFORM(IOS_FAMILY)
    172172    encoder << currentUserInterfaceIdiomIsPad;
     173    encoder << cssValueToSystemColorMap;
    173174#endif
    174175}
     
    438439    if (!decoder.decode(parameters.currentUserInterfaceIdiomIsPad))
    439440        return false;
     441
     442    Optional<WebCore::RenderThemeIOS::CSSValueToSystemColorMap> cssValueToSystemColorMap;
     443    decoder >> cssValueToSystemColorMap;
     444    if (!cssValueToSystemColorMap)
     445        return false;
     446    parameters.cssValueToSystemColorMap = WTFMove(*cssValueToSystemColorMap);
    440447#endif
    441448
  • trunk/Source/WebKit/Shared/WebProcessCreationParameters.h

    r254130 r254373  
    5252#endif
    5353
     54#if PLATFORM(IOS_FAMILY)
     55#include <WebCore/RenderThemeIOS.h>
     56#endif
     57
    5458namespace API {
    5559class Data;
     
    209213#if PLATFORM(IOS_FAMILY)
    210214    bool currentUserInterfaceIdiomIsPad { false };
     215    WebCore::RenderThemeIOS::CSSValueToSystemColorMap cssValueToSystemColorMap;
    211216#endif
    212217};
  • trunk/Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm

    r254343 r254373  
    354354#if PLATFORM(IOS_FAMILY)
    355355    parameters.currentUserInterfaceIdiomIsPad = currentUserInterfaceIdiomIsPad();
     356    parameters.cssValueToSystemColorMap = RenderThemeIOS::cssValueToSystemColorMap();
    356357#endif
    357358}
  • trunk/Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm

    r254101 r254373  
    260260    NetworkExtensionContentFilter::setHasConsumedSandboxExtensions(parameters.neHelperExtensionHandle.hasValue() && parameters.neSessionManagerExtensionHandle.hasValue());
    261261#endif
     262
     263#if PLATFORM(IOS_FAMILY)
     264    RenderThemeIOS::setCSSValueToSystemColorMap(WTFMove(parameters.cssValueToSystemColorMap));
     265#endif
    262266}
    263267
Note: See TracChangeset for help on using the changeset viewer.