Title: [250584] trunk
Revision
250584
Author
an...@apple.com
Date
2019-10-01 15:47:57 -0700 (Tue, 01 Oct 2019)

Log Message

[CSS Shadow Parts] Parse 'part' attribute
https://bugs.webkit.org/show_bug.cgi?id=202409

Reviewed by Ryosuke Niwa.

LayoutTests/imported/w3c:

* web-platform-tests/css/css-shadow-parts/invalidation-change-part-name-idl-domtokenlist-expected.txt:
* web-platform-tests/css/css-shadow-parts/part-name-idl-expected.txt:

Source/WebCore:

Add parsing for Element 'part' attribute and the IDL interface.
Also add a feature flag for CSS Shadow Parts.

* dom/Element.cpp:
(WebCore::Element::attributeChanged):
(WebCore::isNonEmptyTokenList):
(WebCore::Element::classAttributeChanged):
(WebCore::Element::partAttributeChanged):
(WebCore::Element::partNames const):
(WebCore::Element::part):
(WebCore::classStringHasClassName): Deleted.
* dom/Element.h:
* dom/Element.idl:
* dom/ElementRareData.cpp:
* dom/ElementRareData.h:
(WebCore::ElementRareData::partList const):
(WebCore::ElementRareData::setPartList):
(WebCore::ElementRareData::partNames const):
(WebCore::ElementRareData::setPartNames):
* html/HTMLAttributeNames.in:
* page/RuntimeEnabledFeatures.h:
(WebCore::RuntimeEnabledFeatures::setCSSShadowPartsEnabled):
(WebCore::RuntimeEnabledFeatures::cssShadowPartsEnabled const):

Source/WebKit:

* Shared/WebPreferences.yaml:

Add experimental feature, default to disabled for now.

Source/WebKitLegacy/mac:

* WebView/WebPreferenceKeysPrivate.h:
* WebView/WebPreferences.mm:
(+[WebPreferences initialize]):
(-[WebPreferences cssShadowPartsEnabled]):
(-[WebPreferences setCSSShadowPartsEnabled:]):
* WebView/WebPreferencesPrivate.h:
* WebView/WebView.mm:
(-[WebView _preferencesChanged:]):

Tools:

* DumpRenderTree/mac/DumpRenderTree.mm:
(enableExperimentalFeatures):

Modified Paths

Diff

Modified: trunk/LayoutTests/imported/w3c/ChangeLog (250583 => 250584)


--- trunk/LayoutTests/imported/w3c/ChangeLog	2019-10-01 22:21:41 UTC (rev 250583)
+++ trunk/LayoutTests/imported/w3c/ChangeLog	2019-10-01 22:47:57 UTC (rev 250584)
@@ -1,3 +1,13 @@
+2019-10-01  Antti Koivisto  <an...@apple.com>
+
+        [CSS Shadow Parts] Parse 'part' attribute
+        https://bugs.webkit.org/show_bug.cgi?id=202409
+
+        Reviewed by Ryosuke Niwa.
+
+        * web-platform-tests/css/css-shadow-parts/invalidation-change-part-name-idl-domtokenlist-expected.txt:
+        * web-platform-tests/css/css-shadow-parts/part-name-idl-expected.txt:
+
 2019-10-01  Rob Buis  <rb...@igalia.com>
 
         [Mac] Layout Test imported/w3c/web-platform-tests/fetch/api/redirect/redirect-location.any.html fails

Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-shadow-parts/invalidation-change-part-name-idl-domtokenlist-expected.txt (250583 => 250584)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-shadow-parts/invalidation-change-part-name-idl-domtokenlist-expected.txt	2019-10-01 22:21:41 UTC (rev 250583)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-shadow-parts/invalidation-change-part-name-idl-domtokenlist-expected.txt	2019-10-01 22:47:57 UTC (rev 250584)
@@ -1,4 +1,4 @@
 The following text should be green:
 
-FAIL Part in selected host changed color via part IDL DOMTokenList attribute. undefined is not an object (evaluating 'el.part.remove')
+FAIL Part in selected host changed color via part IDL DOMTokenList attribute. assert_equals: expected "rgb(0, 128, 0)" but got "rgb(0, 0, 255)"
 

Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-shadow-parts/part-name-idl-expected.txt (250583 => 250584)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-shadow-parts/part-name-idl-expected.txt	2019-10-01 22:21:41 UTC (rev 250583)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-shadow-parts/part-name-idl-expected.txt	2019-10-01 22:47:57 UTC (rev 250584)
@@ -1,6 +1,6 @@
 
-FAIL Access to .part returns an empty DOMTokenList. undefined is not an object (evaluating 'parts.length')
-FAIL Multiple names give a DOMTokenList with multiple entries. undefined is not an object (evaluating 'parts.length')
-FAIL DOMTokenList created by access is persisted. undefined is not an object (evaluating 'parts.length')
-FAIL Changes in DOMTokenList are refected in attribute. undefined is not an object (evaluating 'parts.length')
+PASS Access to .part returns an empty DOMTokenList. 
+PASS Multiple names give a DOMTokenList with multiple entries. 
+PASS DOMTokenList created by access is persisted. 
+PASS Changes in DOMTokenList are refected in attribute. 
 

Modified: trunk/LayoutTests/js/dom/dom-static-property-for-in-iteration-expected.txt (250583 => 250584)


--- trunk/LayoutTests/js/dom/dom-static-property-for-in-iteration-expected.txt	2019-10-01 22:21:41 UTC (rev 250583)
+++ trunk/LayoutTests/js/dom/dom-static-property-for-in-iteration-expected.txt	2019-10-01 22:47:57 UTC (rev 250584)
@@ -137,6 +137,7 @@
 PASS a["className"] is 
 PASS a["classList"] is 
 PASS a["slot"] is 
+PASS a["part"] is 
 PASS a["attributes"] is [object NamedNodeMap]
 PASS a["shadowRoot"] is null
 PASS a["scrollTop"] is 0

Modified: trunk/LayoutTests/platform/mac-wk2/js/dom/dom-static-property-for-in-iteration-expected.txt (250583 => 250584)


--- trunk/LayoutTests/platform/mac-wk2/js/dom/dom-static-property-for-in-iteration-expected.txt	2019-10-01 22:21:41 UTC (rev 250583)
+++ trunk/LayoutTests/platform/mac-wk2/js/dom/dom-static-property-for-in-iteration-expected.txt	2019-10-01 22:47:57 UTC (rev 250584)
@@ -140,6 +140,7 @@
 PASS a["className"] is 
 PASS a["classList"] is 
 PASS a["slot"] is 
+PASS a["part"] is 
 PASS a["attributes"] is [object NamedNodeMap]
 PASS a["shadowRoot"] is null
 PASS a["scrollTop"] is 0

Modified: trunk/Source/WebCore/ChangeLog (250583 => 250584)


--- trunk/Source/WebCore/ChangeLog	2019-10-01 22:21:41 UTC (rev 250583)
+++ trunk/Source/WebCore/ChangeLog	2019-10-01 22:47:57 UTC (rev 250584)
@@ -1,3 +1,34 @@
+2019-10-01  Antti Koivisto  <an...@apple.com>
+
+        [CSS Shadow Parts] Parse 'part' attribute
+        https://bugs.webkit.org/show_bug.cgi?id=202409
+
+        Reviewed by Ryosuke Niwa.
+
+        Add parsing for Element 'part' attribute and the IDL interface.
+        Also add a feature flag for CSS Shadow Parts.
+
+        * dom/Element.cpp:
+        (WebCore::Element::attributeChanged):
+        (WebCore::isNonEmptyTokenList):
+        (WebCore::Element::classAttributeChanged):
+        (WebCore::Element::partAttributeChanged):
+        (WebCore::Element::partNames const):
+        (WebCore::Element::part):
+        (WebCore::classStringHasClassName): Deleted.
+        * dom/Element.h:
+        * dom/Element.idl:
+        * dom/ElementRareData.cpp:
+        * dom/ElementRareData.h:
+        (WebCore::ElementRareData::partList const):
+        (WebCore::ElementRareData::setPartList):
+        (WebCore::ElementRareData::partNames const):
+        (WebCore::ElementRareData::setPartNames):
+        * html/HTMLAttributeNames.in:
+        * page/RuntimeEnabledFeatures.h:
+        (WebCore::RuntimeEnabledFeatures::setCSSShadowPartsEnabled):
+        (WebCore::RuntimeEnabledFeatures::cssShadowPartsEnabled const):
+
 2019-10-01  Yusuke Suzuki  <ysuz...@apple.com>
 
         [JSC] Place VM* in TLS

Modified: trunk/Source/WebCore/dom/Element.cpp (250583 => 250584)


--- trunk/Source/WebCore/dom/Element.cpp	2019-10-01 22:21:41 UTC (rev 250583)
+++ trunk/Source/WebCore/dom/Element.cpp	2019-10-01 22:47:57 UTC (rev 250584)
@@ -1719,6 +1719,8 @@
             document().invalidateAccessKeyCache();
         else if (name == HTMLNames::classAttr)
             classAttributeChanged(newValue);
+        else if (name == HTMLNames::partAttr)
+            partAttributeChanged(newValue);
         else if (name == HTMLNames::idAttr) {
             AtomString oldId = elementData()->idForStyleResolution();
             AtomString newId = makeIdForStyleResolution(newValue, document().inQuirksMode());
@@ -1761,7 +1763,7 @@
 }
 
 template <typename CharacterType>
-static inline bool classStringHasClassName(const CharacterType* characters, unsigned length)
+static inline bool isNonEmptyTokenList(const CharacterType* characters, unsigned length)
 {
     ASSERT(length > 0);
 
@@ -1775,16 +1777,16 @@
     return i < length;
 }
 
-static inline bool classStringHasClassName(const AtomString& newClassString)
+static inline bool isNonEmptyTokenList(const AtomString& stringValue)
 {
-    unsigned length = newClassString.length();
+    unsigned length = stringValue.length();
 
     if (!length)
         return false;
 
-    if (newClassString.is8Bit())
-        return classStringHasClassName(newClassString.characters8(), length);
-    return classStringHasClassName(newClassString.characters16(), length);
+    if (stringValue.is8Bit())
+        return isNonEmptyTokenList(stringValue.characters8(), length);
+    return isNonEmptyTokenList(stringValue.characters16(), length);
 }
 
 void Element::classAttributeChanged(const AtomString& newClassString)
@@ -1794,7 +1796,7 @@
         ensureUniqueElementData();
 
     bool shouldFoldCase = document().inQuirksMode();
-    bool newStringHasClasses = classStringHasClassName(newClassString);
+    bool newStringHasClasses = isNonEmptyTokenList(newClassString);
 
     auto oldClassNames = elementData()->classNames();
     auto newClassNames = newStringHasClasses ? SpaceSplitString(newClassString, shouldFoldCase) : SpaceSplitString();
@@ -1809,6 +1811,23 @@
     }
 }
 
+void Element::partAttributeChanged(const AtomString& newValue)
+{
+    if (!RuntimeEnabledFeatures::sharedFeatures().cssShadowPartsEnabled())
+        return;
+
+    bool hasParts = isNonEmptyTokenList(newValue);
+    if (hasParts || !partNames().isEmpty()) {
+        auto newParts = hasParts ? SpaceSplitString(newValue, false) : SpaceSplitString();
+        ensureElementRareData().setPartNames(WTFMove(newParts));
+    }
+
+    if (hasRareData()) {
+        if (auto* partList = elementRareData()->partList())
+            partList->associatedAttributeValueChanged(newValue);
+    }
+}
+
 URL Element::absoluteLinkURL() const
 {
     if (!isLink())
@@ -3414,6 +3433,19 @@
     return *data.classList();
 }
 
+inline SpaceSplitString Element::partNames() const
+{
+    return elementRareData() ? elementRareData()->partNames() : SpaceSplitString();
+}
+
+DOMTokenList& Element::part()
+{
+    auto& data = ""
+    if (!data.partList())
+        data.setPartList(makeUnique<DOMTokenList>(*this, HTMLNames::partAttr));
+    return *data.partList();
+}
+
 DatasetDOMStringMap& Element::dataset()
 {
     ElementRareData& data = ""

Modified: trunk/Source/WebCore/dom/Element.h (250583 => 250584)


--- trunk/Source/WebCore/dom/Element.h	2019-10-01 22:21:41 UTC (rev 250583)
+++ trunk/Source/WebCore/dom/Element.h	2019-10-01 22:47:57 UTC (rev 250584)
@@ -451,6 +451,9 @@
 
     WEBCORE_EXPORT DOMTokenList& classList();
 
+    SpaceSplitString partNames() const;
+    DOMTokenList& part();
+
     DatasetDOMStringMap& dataset();
 
 #if ENABLE(VIDEO)
@@ -613,10 +616,8 @@
     void clearTabIndexExplicitlyIfNeeded();
     void setTabIndexExplicitly(int);
 
-    // classAttributeChanged() exists to share code between
-    // parseAttribute (called via setAttribute()) and
-    // svgAttributeChanged (called when element.className.baseValue is set)
     void classAttributeChanged(const AtomString& newClassString);
+    void partAttributeChanged(const AtomString& newValue);
 
     void addShadowRoot(Ref<ShadowRoot>&&);
 

Modified: trunk/Source/WebCore/dom/Element.idl (250583 => 250584)


--- trunk/Source/WebCore/dom/Element.idl	2019-10-01 22:21:41 UTC (rev 250583)
+++ trunk/Source/WebCore/dom/Element.idl	2019-10-01 22:47:57 UTC (rev 250584)
@@ -34,6 +34,7 @@
     [CEReactions, Reflect=class] attribute DOMString className;
     [PutForwards=value] readonly attribute DOMTokenList classList; // FIXME: Should be [SameObject].
     [CEReactions, EnabledAtRuntime=ShadowDOM, Reflect, Unscopable] attribute DOMString slot;
+    [EnabledAtRuntime=CSSShadowParts, SameObject, PutForwards=value] readonly attribute DOMTokenList part;
 
     [DOMJIT=ReadDOM] boolean hasAttributes();
     readonly attribute NamedNodeMap attributes; // FIXME: Should be [SameObject].

Modified: trunk/Source/WebCore/dom/ElementRareData.cpp (250583 => 250584)


--- trunk/Source/WebCore/dom/ElementRareData.cpp	2019-10-01 22:21:41 UTC (rev 250583)
+++ trunk/Source/WebCore/dom/ElementRareData.cpp	2019-10-01 22:47:57 UTC (rev 250584)
@@ -43,7 +43,7 @@
 #endif
     LayoutSize sizeForResizing;
     IntPoint savedLayerScrollPosition;
-    void* pointers[8];
+    void* pointers[10];
 #if ENABLE(INTERSECTION_OBSERVER)
     void* intersectionObserverData;
 #endif

Modified: trunk/Source/WebCore/dom/ElementRareData.h (250583 => 250584)


--- trunk/Source/WebCore/dom/ElementRareData.h	2019-10-01 22:21:41 UTC (rev 250583)
+++ trunk/Source/WebCore/dom/ElementRareData.h	2019-10-01 22:47:57 UTC (rev 250584)
@@ -31,6 +31,7 @@
 #include "RenderElement.h"
 #include "ResizeObserver.h"
 #include "ShadowRoot.h"
+#include "SpaceSplitString.h"
 #include "StylePropertyMap.h"
 
 namespace WebCore {
@@ -102,6 +103,12 @@
     bool hasElementIdentifier() const { return m_hasElementIdentifier; }
     void setHasElementIdentifier(bool value) { m_hasElementIdentifier = value; }
 
+    DOMTokenList* partList() const { return m_partList.get(); }
+    void setPartList(std::unique_ptr<DOMTokenList> partList) { m_partList = WTFMove(partList); }
+
+    const SpaceSplitString& partNames() const { return m_partNames; }
+    void setPartNames(SpaceSplitString&& partNames) { m_partNames = WTFMove(partNames); }
+
 #if ENABLE(INTERSECTION_OBSERVER)
     IntersectionObserverData* intersectionObserverData() { return m_intersectionObserverData.get(); }
     void setIntersectionObserverData(std::unique_ptr<IntersectionObserverData>&& data) { m_intersectionObserverData = WTFMove(data); }
@@ -186,6 +193,9 @@
     RefPtr<StylePropertyMap> m_attributeStyleMap;
 #endif
 
+    std::unique_ptr<DOMTokenList> m_partList;
+    SpaceSplitString m_partNames;
+
     void releasePseudoElement(PseudoElement*);
 };
 

Modified: trunk/Source/WebCore/html/HTMLAttributeNames.in (250583 => 250584)


--- trunk/Source/WebCore/html/HTMLAttributeNames.in	2019-10-01 22:21:41 UTC (rev 250583)
+++ trunk/Source/WebCore/html/HTMLAttributeNames.in	2019-10-01 22:47:57 UTC (rev 250584)
@@ -333,6 +333,7 @@
 onwebkitwillrevealtop
 open
 optimum
+part
 pattern
 placeholder
 playsinline

Modified: trunk/Source/WebCore/page/RuntimeEnabledFeatures.h (250583 => 250584)


--- trunk/Source/WebCore/page/RuntimeEnabledFeatures.h	2019-10-01 22:21:41 UTC (rev 250583)
+++ trunk/Source/WebCore/page/RuntimeEnabledFeatures.h	2019-10-01 22:47:57 UTC (rev 250584)
@@ -373,6 +373,9 @@
     void setLazyImageLoadingEnabled(bool areEnabled) { m_lazyImageLoadingEnabled = areEnabled; }
     bool lazyImageLoadingEnabled() const { return m_lazyImageLoadingEnabled; }
 
+    void setCSSShadowPartsEnabled(bool isEnabled) { m_isCSSShadowPartsEnabled = isEnabled; }
+    bool cssShadowPartsEnabled() const { return m_isCSSShadowPartsEnabled; }
+
     WEBCORE_EXPORT static RuntimeEnabledFeatures& sharedFeatures();
 
 #if HAVE(NSURLSESSION_WEBSOCKET)
@@ -574,6 +577,7 @@
 
     bool m_lazyImageLoadingEnabled { false };
     bool m_secureContextChecksEnabled { true };
+    bool m_isCSSShadowPartsEnabled { false };
 
     friend class WTF::NeverDestroyed<RuntimeEnabledFeatures>;
 };

Modified: trunk/Source/WebKit/ChangeLog (250583 => 250584)


--- trunk/Source/WebKit/ChangeLog	2019-10-01 22:21:41 UTC (rev 250583)
+++ trunk/Source/WebKit/ChangeLog	2019-10-01 22:47:57 UTC (rev 250584)
@@ -1,3 +1,14 @@
+2019-10-01  Antti Koivisto  <an...@apple.com>
+
+        [CSS Shadow Parts] Parse 'part' attribute
+        https://bugs.webkit.org/show_bug.cgi?id=202409
+
+        Reviewed by Ryosuke Niwa.
+
+        * Shared/WebPreferences.yaml:
+
+        Add experimental feature, default to disabled for now.
+
 2019-10-01  Alex Christensen  <achristen...@webkit.org>
 
         Progress towards successful CMake build on Mac

Modified: trunk/Source/WebKit/Shared/WebPreferences.yaml (250583 => 250584)


--- trunk/Source/WebKit/Shared/WebPreferences.yaml	2019-10-01 22:21:41 UTC (rev 250583)
+++ trunk/Source/WebKit/Shared/WebPreferences.yaml	2019-10-01 22:47:57 UTC (rev 250584)
@@ -1441,6 +1441,14 @@
   webcoreBinding: RuntimeEnabledFeatures
   webcoreName: fetchAPIKeepAliveEnabled
 
+CSSShadowPartsEnabled:
+  type: bool
+  defaultValue: false
+  humanReadableName: "CSS Shadow Parts"
+  humanReadableDescription: "Enable CSS Shadow Parts"
+  category: experimental
+  webcoreBinding: RuntimeEnabledFeatures
+
 # For internal features:
 # The type should be boolean.
 # You must provide a humanReadableName and humanReadableDescription for all debug features. They

Modified: trunk/Source/WebKitLegacy/mac/ChangeLog (250583 => 250584)


--- trunk/Source/WebKitLegacy/mac/ChangeLog	2019-10-01 22:21:41 UTC (rev 250583)
+++ trunk/Source/WebKitLegacy/mac/ChangeLog	2019-10-01 22:47:57 UTC (rev 250584)
@@ -1,3 +1,19 @@
+2019-10-01  Antti Koivisto  <an...@apple.com>
+
+        [CSS Shadow Parts] Parse 'part' attribute
+        https://bugs.webkit.org/show_bug.cgi?id=202409
+
+        Reviewed by Ryosuke Niwa.
+
+        * WebView/WebPreferenceKeysPrivate.h:
+        * WebView/WebPreferences.mm:
+        (+[WebPreferences initialize]):
+        (-[WebPreferences cssShadowPartsEnabled]):
+        (-[WebPreferences setCSSShadowPartsEnabled:]):
+        * WebView/WebPreferencesPrivate.h:
+        * WebView/WebView.mm:
+        (-[WebView _preferencesChanged:]):
+
 2019-10-01  Alex Christensen  <achristen...@webkit.org>
 
         Progress towards successful CMake build on Mac

Modified: trunk/Source/WebKitLegacy/mac/WebView/WebPreferenceKeysPrivate.h (250583 => 250584)


--- trunk/Source/WebKitLegacy/mac/WebView/WebPreferenceKeysPrivate.h	2019-10-01 22:21:41 UTC (rev 250583)
+++ trunk/Source/WebKitLegacy/mac/WebView/WebPreferenceKeysPrivate.h	2019-10-01 22:47:57 UTC (rev 250584)
@@ -201,6 +201,7 @@
 #define WebKitPunchOutWhiteBackgroundsInDarkModePreferenceKey @"WebKitPunchOutWhiteBackgroundsInDarkMode"
 #define WebKitFetchAPIKeepAliveEnabledPreferenceKey @"WebKitFetchAPIKeepAliveEnabled"
 #define WebKitWebAnimationsCSSIntegrationEnabledPreferenceKey @"WebKitWebAnimationsCSSIntegrationEnabled"
+#define WebKitCSSShadowPartsEnabledPreferenceKey @"WebKitCSSShadowPartsEnabled"
 
 #if !TARGET_OS_IPHONE
 // These are private both because callers should be using the cover methods and because the

Modified: trunk/Source/WebKitLegacy/mac/WebView/WebPreferences.mm (250583 => 250584)


--- trunk/Source/WebKitLegacy/mac/WebView/WebPreferences.mm	2019-10-01 22:21:41 UTC (rev 250583)
+++ trunk/Source/WebKitLegacy/mac/WebView/WebPreferences.mm	2019-10-01 22:47:57 UTC (rev 250584)
@@ -691,6 +691,7 @@
 #endif
         @NO, WebKitCoreMathMLEnabledPreferenceKey,
         @NO, WebKitLinkPreloadResponsiveImagesEnabledPreferenceKey,
+        @NO, WebKitCSSShadowPartsEnabledPreferenceKey,
         nil];
 
 #if !PLATFORM(IOS_FAMILY)
@@ -3507,6 +3508,16 @@
     [self _setBoolValue:flag forKey:WebKitLinkPreloadResponsiveImagesEnabledPreferenceKey];
 }
 
+- (BOOL)cssShadowPartsEnabled
+{
+    return [self _boolValueForKey:WebKitCSSShadowPartsEnabledPreferenceKey];
+}
+
+- (void)setCSSShadowPartsEnabled:(BOOL)flag
+{
+    [self _setBoolValue:flag forKey:WebKitCSSShadowPartsEnabledPreferenceKey];
+}
+
 @end
 
 @implementation WebPreferences (WebInternal)

Modified: trunk/Source/WebKitLegacy/mac/WebView/WebPreferencesPrivate.h (250583 => 250584)


--- trunk/Source/WebKitLegacy/mac/WebView/WebPreferencesPrivate.h	2019-10-01 22:21:41 UTC (rev 250583)
+++ trunk/Source/WebKitLegacy/mac/WebView/WebPreferencesPrivate.h	2019-10-01 22:47:57 UTC (rev 250584)
@@ -615,6 +615,9 @@
 - (void)setLinkPreloadResponsiveImagesEnabled:(BOOL)flag;
 - (BOOL)linkPreloadResponsiveImagesEnabled;
 
+- (void)setCSSShadowPartsEnabled:(BOOL)flag;
+- (BOOL)cssShadowPartsEnabled;
+
 @property (nonatomic) BOOL visualViewportAPIEnabled;
 @property (nonatomic) BOOL CSSOMViewScrollingAPIEnabled;
 @property (nonatomic) BOOL largeImageAsyncDecodingEnabled;

Modified: trunk/Source/WebKitLegacy/mac/WebView/WebView.mm (250583 => 250584)


--- trunk/Source/WebKitLegacy/mac/WebView/WebView.mm	2019-10-01 22:21:41 UTC (rev 250583)
+++ trunk/Source/WebKitLegacy/mac/WebView/WebView.mm	2019-10-01 22:47:57 UTC (rev 250584)
@@ -3187,6 +3187,7 @@
     RuntimeEnabledFeatures::sharedFeatures().setLinkPreloadResponsiveImagesEnabled([preferences linkPreloadResponsiveImagesEnabled]);
     RuntimeEnabledFeatures::sharedFeatures().setDialogElementEnabled([preferences dialogElementEnabled]);
     RuntimeEnabledFeatures::sharedFeatures().setKeygenElementEnabled([preferences keygenElementEnabled]);
+    RuntimeEnabledFeatures::sharedFeatures().setCSSShadowPartsEnabled([preferences cssShadowPartsEnabled]);
 
 #if ENABLE(LEGACY_ENCRYPTED_MEDIA)
     RuntimeEnabledFeatures::sharedFeatures().setLegacyEncryptedMediaAPIEnabled(preferences.legacyEncryptedMediaAPIEnabled);

Modified: trunk/Tools/ChangeLog (250583 => 250584)


--- trunk/Tools/ChangeLog	2019-10-01 22:21:41 UTC (rev 250583)
+++ trunk/Tools/ChangeLog	2019-10-01 22:47:57 UTC (rev 250584)
@@ -1,3 +1,13 @@
+2019-10-01  Antti Koivisto  <an...@apple.com>
+
+        [CSS Shadow Parts] Parse 'part' attribute
+        https://bugs.webkit.org/show_bug.cgi?id=202409
+
+        Reviewed by Ryosuke Niwa.
+
+        * DumpRenderTree/mac/DumpRenderTree.mm:
+        (enableExperimentalFeatures):
+
 2019-10-01  Aakash Jain  <aakash_j...@apple.com>
 
         Follow-up fix to r250572 to fix a typo.

Modified: trunk/Tools/DumpRenderTree/mac/DumpRenderTree.mm (250583 => 250584)


--- trunk/Tools/DumpRenderTree/mac/DumpRenderTree.mm	2019-10-01 22:21:41 UTC (rev 250583)
+++ trunk/Tools/DumpRenderTree/mac/DumpRenderTree.mm	2019-10-01 22:47:57 UTC (rev 250584)
@@ -880,6 +880,7 @@
     [preferences setMediaRecorderEnabled:YES];
     [preferences setReferrerPolicyAttributeEnabled:YES];
     [preferences setLinkPreloadResponsiveImagesEnabled:YES];
+    [preferences setCSSShadowPartsEnabled:YES];
 }
 
 // Called before each test.
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to