[webkit-reviews] review granted: [Bug 202520] [CSS Shadow Parts] Support 'exportparts' attribute : [Attachment 380146] patch

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Thu Oct 3 14:12:26 PDT 2019


Ryosuke Niwa <rniwa at webkit.org> has granted Antti Koivisto <koivisto at iki.fi>'s
request for review:
Bug 202520: [CSS Shadow Parts] Support 'exportparts' attribute
https://bugs.webkit.org/show_bug.cgi?id=202520

Attachment 380146: patch

https://bugs.webkit.org/attachment.cgi?id=380146&action=review




--- Comment #3 from Ryosuke Niwa <rniwa at webkit.org> ---
Comment on attachment 380146
  --> https://bugs.webkit.org/attachment.cgi?id=380146
patch

View in context: https://bugs.webkit.org/attachment.cgi?id=380146&action=review

> Source/WebCore/css/ElementRuleCollector.cpp:273
> +	   SetForScope<const Element*>
partMatchingScope(m_shadowHostInPartRuleScope, &shadowHost);

Can we use RefPtr?

> Source/WebCore/css/ElementRuleCollector.cpp:282
> +    if (!containingShadowRoot.partMappings().isEmpty()) {

Why not exit early instead of nesting?

> Source/WebCore/css/ElementRuleCollector.h:103
> +    const Element* m_shadowHostInPartRuleScope { nullptr };

Can we use RefPtr instead?

> Source/WebCore/css/SelectorChecker.cpp:1154
> +	       auto mapPartName = [&](AtomString partName) {

mapPartName isn't quite descriptive.
How about partNameInRuleScope or translatePartNameToRuleScope?

> Source/WebCore/css/SelectorChecker.cpp:1155
> +		   for (auto* shadowRoot = element.containingShadowRoot();
shadowRoot; shadowRoot = shadowRoot->host()->containingShadowRoot()) {

Use RefPtr?

> Source/WebCore/css/SelectorChecker.cpp:1166
> +	       Vector<AtomString, 3> mappedElementPartNames;

Why not 4??

> Source/WebCore/css/SelectorChecker.h:87
> +	   const Element* shadowHostInPartRuleScope { nullptr };

Can we use RefPtr instead?

> Source/WebCore/dom/Element.cpp:1746
> +	   else if (name  == HTMLNames::exportpartsAttr) {

Nit: Two spaces.

> Source/WebCore/dom/Element.cpp:1747
> +	       if (auto* shadowRoot = this->shadowRoot())

Use makeRefPtr?

> Source/WebCore/dom/ShadowRoot.cpp:259
> +    auto parsePartMapping = [&](StringView mappingString) {

I would have preferred this as a regular static function which returns an
optional pair of AtomicString or a optional struct.

> Source/WebCore/dom/ShadowRoot.cpp:262
> +	   auto skipWhitespace = [&] (auto position) {

We should really add StringView::skipUntil & StringView::skipWhile... not that
I think we should do it in this patch.

> Source/WebCore/dom/ShadowRoot.cpp:278
> +	   

Nit: whitespace.

> Source/WebCore/dom/ShadowRoot.cpp:288
> +	       mappings.add(firstPart, firstPart);
> +	       return;

That way, this would read: return { firstPart, firstPart };

> Source/WebCore/dom/ShadowRoot.cpp:313
> +    while (begin < end) {
> +	   size_t mappingEnd = begin;
> +	   while (mappingEnd < end && mappingsListString[mappingEnd] != ',')
> +	       ++mappingEnd;

Can't we just use StringView::split and iterate over SplitResult?

> Source/WebCore/dom/ShadowRoot.h:123
> +    mutable std::unique_ptr<HashMap<AtomString, AtomString>> m_partMappings;

Maybe we can use Optional instead?
It doesn't seem like an extra pointer size increase to ShadowRoot itself isn't
a big deal.


More information about the webkit-reviews mailing list