Changeset 284865 in webkit
- Timestamp:
- Oct 26, 2021 7:55:58 AM (9 months ago)
- Location:
- trunk
- Files:
-
- 6 added
- 13 edited
-
LayoutTests/ChangeLog (modified) (1 diff)
-
LayoutTests/TestExpectations (modified) (1 diff)
-
LayoutTests/imported/w3c/ChangeLog (modified) (1 diff)
-
LayoutTests/imported/w3c/web-platform-tests/css/css-shadow-parts/interaction-with-nested-pseudo-class-expected.html (added)
-
LayoutTests/imported/w3c/web-platform-tests/css/css-shadow-parts/interaction-with-nested-pseudo-class.html (added)
-
LayoutTests/imported/w3c/web-platform-tests/css/css-shadow-parts/invalidation-part-pseudo-expected.txt (added)
-
LayoutTests/imported/w3c/web-platform-tests/css/css-shadow-parts/invalidation-part-pseudo.html (added)
-
LayoutTests/imported/w3c/web-platform-tests/css/css-shadow-parts/part-nested-pseudo-expected.html (added)
-
LayoutTests/imported/w3c/web-platform-tests/css/css-shadow-parts/part-nested-pseudo.html (added)
-
LayoutTests/imported/w3c/web-platform-tests/css/css-shadow-parts/w3c-import.log (modified) (2 diffs)
-
Source/WebCore/ChangeLog (modified) (1 diff)
-
Source/WebCore/css/CSSSelector.cpp (modified) (1 diff)
-
Source/WebCore/css/CSSSelector.h (modified) (1 diff)
-
Source/WebCore/css/SelectorChecker.cpp (modified) (4 diffs)
-
Source/WebCore/css/SelectorFilter.cpp (modified) (1 diff)
-
Source/WebCore/css/parser/CSSParserSelector.h (modified) (2 diffs)
-
Source/WebCore/css/parser/CSSSelectorParser.cpp (modified) (1 diff)
-
Source/WebCore/cssjit/SelectorCompiler.cpp (modified) (2 diffs)
-
Source/WebCore/style/RuleFeature.cpp (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r284859 r284865 1 2021-10-26 Antti Koivisto <antti@apple.com> 2 3 Fix ::part(foo):hover 4 https://bugs.webkit.org/show_bug.cgi?id=232301 5 6 Reviewed by Alan Bujtas. 7 8 * TestExpectations: 9 1 10 2021-10-26 Antti Koivisto <antti@apple.com> 2 11 -
trunk/LayoutTests/TestExpectations
r284859 r284865 5192 5192 # IPC test failing in Debug mode due to assert. 5193 5193 [ Debug ] ipc/send-invalid-message.html [ Skip ] 5194 5195 imported/w3c/web-platform-tests/css/css-shadow-parts/interaction-with-nested-pseudo-class.html [ ImageOnlyFailure ] -
trunk/LayoutTests/imported/w3c/ChangeLog
r284863 r284865 1 2021-10-26 Antti Koivisto <antti@apple.com> 2 3 Fix ::part(foo):hover 4 https://bugs.webkit.org/show_bug.cgi?id=232301 5 6 Reviewed by Alan Bujtas. 7 8 * web-platform-tests/css/css-shadow-parts/interaction-with-nested-pseudo-class-expected.html: Added. 9 * web-platform-tests/css/css-shadow-parts/interaction-with-nested-pseudo-class.html: Added. 10 * web-platform-tests/css/css-shadow-parts/invalidation-part-pseudo-expected.txt: Added. 11 * web-platform-tests/css/css-shadow-parts/invalidation-part-pseudo.html: Added. 12 * web-platform-tests/css/css-shadow-parts/part-nested-pseudo-expected.html: Added. 13 * web-platform-tests/css/css-shadow-parts/part-nested-pseudo.html: Added. 14 * web-platform-tests/css/css-shadow-parts/w3c-import.log: 15 1 16 2021-10-26 Antti Koivisto <antti@apple.com> 2 17 -
trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-shadow-parts/w3c-import.log
r264522 r284865 27 27 /LayoutTests/imported/w3c/web-platform-tests/css/css-shadow-parts/idlharness.html 28 28 /LayoutTests/imported/w3c/web-platform-tests/css/css-shadow-parts/inner-host.html 29 /LayoutTests/imported/w3c/web-platform-tests/css/css-shadow-parts/interaction-with-nested-pseudo-class-expected.html 30 /LayoutTests/imported/w3c/web-platform-tests/css/css-shadow-parts/interaction-with-nested-pseudo-class.html 29 31 /LayoutTests/imported/w3c/web-platform-tests/css/css-shadow-parts/interaction-with-placeholder-expected.html 30 32 /LayoutTests/imported/w3c/web-platform-tests/css/css-shadow-parts/interaction-with-placeholder.html … … 37 39 /LayoutTests/imported/w3c/web-platform-tests/css/css-shadow-parts/invalidation-complex-selector-forward.html 38 40 /LayoutTests/imported/w3c/web-platform-tests/css/css-shadow-parts/invalidation-complex-selector.html 41 /LayoutTests/imported/w3c/web-platform-tests/css/css-shadow-parts/invalidation-part-pseudo-expected.html 42 /LayoutTests/imported/w3c/web-platform-tests/css/css-shadow-parts/invalidation-part-pseudo.html 39 43 /LayoutTests/imported/w3c/web-platform-tests/css/css-shadow-parts/multiple-parts.html 40 44 /LayoutTests/imported/w3c/web-platform-tests/css/css-shadow-parts/part-name-idl.html 45 /LayoutTests/imported/w3c/web-platform-tests/css/css-shadow-parts/part-nested-pseudo-expected.html 46 /LayoutTests/imported/w3c/web-platform-tests/css/css-shadow-parts/part-nested-pseudo.html 41 47 /LayoutTests/imported/w3c/web-platform-tests/css/css-shadow-parts/precedence-part-vs-part.html 42 48 /LayoutTests/imported/w3c/web-platform-tests/css/css-shadow-parts/serialization.html -
trunk/Source/WebCore/ChangeLog
r284863 r284865 1 2021-10-26 Antti Koivisto <antti@apple.com> 2 3 Fix ::part(foo):hover 4 https://bugs.webkit.org/show_bug.cgi?id=232301 5 6 Reviewed by Alan Bujtas. 7 8 We fail to match on shadow tree border if the right side of ::part() has other selectors. 9 10 Tests: imported/w3c/web-platform-tests/css/css-shadow-parts/invalidation-part-pseudo.html 11 12 * css/CSSSelector.cpp: 13 (WebCore::CSSSelector::selectorText const): 14 * css/CSSSelector.h: 15 16 Add a new ShadowPartDescendant relation type that behaves like the existing ShadowDescendant relation 17 except it is only used for ::part. 18 19 * css/SelectorChecker.cpp: 20 (WebCore::SelectorChecker::matchRecursively const): 21 22 We can now identify the ::part case easily from the relation type. 23 24 (WebCore::canMatchHoverOrActiveInQuirksMode): 25 * css/SelectorFilter.cpp: 26 (WebCore::collectSelectorHashes): 27 * css/parser/CSSParserSelector.h: 28 (WebCore::CSSParserSelector::hasShadowDescendant const): Deleted. 29 * css/parser/CSSSelectorParser.cpp: 30 (WebCore::CSSSelectorParser::splitCompoundAtImplicitShadowCrossingCombinator): 31 32 Use ShadowPartDescendant as appropriate. 33 34 * cssjit/SelectorCompiler.cpp: 35 (WebCore::SelectorCompiler::fragmentRelationForSelectorRelation): 36 (WebCore::SelectorCompiler::constructFragmentsInternal): 37 * style/RuleFeature.cpp: 38 (WebCore::Style::RuleFeatureSet::computeNextMatchElement): 39 1 40 2021-10-26 Antti Koivisto <antti@apple.com> 2 41 -
trunk/Source/WebCore/css/CSSSelector.cpp
r284863 r284865 823 823 #endif 824 824 case CSSSelector::ShadowDescendant: 825 case CSSSelector::ShadowPartDescendant: 825 826 builder.append(rightSide); 826 827 return tagHistory->selectorText(builder.toString()); -
trunk/Source/WebCore/css/CSSSelector.h
r281503 r284865 87 87 DirectAdjacent, 88 88 IndirectAdjacent, 89 ShadowDescendant 89 ShadowDescendant, 90 ShadowPartDescendant 90 91 }; 91 92 -
trunk/Source/WebCore/css/SelectorChecker.cpp
r283851 r284865 78 78 bool hasSelectionPseudo { false }; 79 79 bool mayMatchHostPseudoClass { false }; 80 81 80 }; 82 81 … … 410 409 } 411 410 case CSSSelector::ShadowDescendant: 411 case CSSSelector::ShadowPartDescendant: 412 412 { 413 413 // When matching foo::part(bar) we skip directly to the tree of element 'foo'. 414 bool isPart = context.selector->match() == CSSSelector::PseudoElement && context.selector->pseudoElementType() == CSSSelector::PseudoElementPart; 415 auto* shadowHost = isPart ? checkingContext.shadowHostInPartRuleScope : context.element->shadowHost(); 414 auto* shadowHost = relation == CSSSelector::ShadowPartDescendant ? checkingContext.shadowHostInPartRuleScope : context.element->shadowHost(); 416 415 if (!shadowHost) 417 416 return MatchResult::fails(Match::SelectorFailsCompletely); … … 425 424 } 426 425 } 427 428 426 429 427 ASSERT_NOT_REACHED(); … … 600 598 601 599 auto relation = selector->relation(); 602 if (relation == CSSSelector::ShadowDescendant )600 if (relation == CSSSelector::ShadowDescendant || relation == CSSSelector::ShadowPartDescendant) 603 601 return true; 604 602 -
trunk/Source/WebCore/css/SelectorFilter.cpp
r284078 r284865 195 195 case CSSSelector::IndirectAdjacent: 196 196 case CSSSelector::ShadowDescendant: 197 case CSSSelector::ShadowPartDescendant: 197 198 skipOverSubselectors = true; 198 199 break; -
trunk/Source/WebCore/css/parser/CSSParserSelector.h
r281295 r284865 72 72 bool isPseudoElementCueFunction() const; 73 73 74 bool hasShadowDescendant() const;75 74 bool matchesPseudoElement() const; 76 75 … … 97 96 }; 98 97 99 inline bool CSSParserSelector::hasShadowDescendant() const100 {101 return m_selector->relation() == CSSSelector::ShadowDescendant;102 }103 104 98 inline bool CSSParserSelector::needsImplicitShadowCombinatorForMatching() const 105 99 { -
trunk/Source/WebCore/css/parser/CSSSelectorParser.cpp
r283254 r284865 1069 1069 secondCompound = splitAfter->releaseTagHistory(); 1070 1070 1071 secondCompound->appendTagHistory( CSSSelector::ShadowDescendant, WTFMove(compoundSelector));1071 secondCompound->appendTagHistory(isPart ? CSSSelector::ShadowPartDescendant : CSSSelector::ShadowDescendant, WTFMove(compoundSelector)); 1072 1072 return secondCompound; 1073 1073 } -
trunk/Source/WebCore/cssjit/SelectorCompiler.cpp
r283970 r284865 501 501 case CSSSelector::Subselector: 502 502 case CSSSelector::ShadowDescendant: 503 case CSSSelector::ShadowPartDescendant: 503 504 ASSERT_NOT_REACHED(); 504 505 } … … 1323 1324 continue; 1324 1325 1325 if ( relation == CSSSelector::ShadowDescendant&& !selector->isLastInTagHistory())1326 if ((relation == CSSSelector::ShadowDescendant || relation == CSSSelector::ShadowPartDescendant) && !selector->isLastInTagHistory()) 1326 1327 return FunctionType::CannotCompile; 1327 1328 -
trunk/Source/WebCore/style/RuleFeature.cpp
r279365 r284865 85 85 return matchElement == MatchElement::Subject ? MatchElement::DirectSibling : MatchElement::IndirectSibling; 86 86 case CSSSelector::ShadowDescendant: 87 case CSSSelector::ShadowPartDescendant: 87 88 return MatchElement::Host; 88 89 }; … … 98 99 return matchElement == MatchElement::Parent ? MatchElement::ParentSibling : MatchElement::AncestorSibling; 99 100 case CSSSelector::ShadowDescendant: 101 case CSSSelector::ShadowPartDescendant: 100 102 return MatchElement::Host; 101 103 };
Note: See TracChangeset
for help on using the changeset viewer.