diff options
Diffstat (limited to 'chromium/third_party/blink/renderer/core/css/css_selector.cc')
-rw-r--r-- | chromium/third_party/blink/renderer/core/css/css_selector.cc | 29 |
1 files changed, 20 insertions, 9 deletions
diff --git a/chromium/third_party/blink/renderer/core/css/css_selector.cc b/chromium/third_party/blink/renderer/core/css/css_selector.cc index df7bb9aa9fe..fdda0d6e98b 100644 --- a/chromium/third_party/blink/renderer/core/css/css_selector.cc +++ b/chromium/third_party/blink/renderer/core/css/css_selector.cc @@ -297,7 +297,7 @@ PseudoId CSSSelector::GetPseudoId(PseudoType type) { case kPseudoSlotted: case kPseudoVideoPersistent: case kPseudoVideoPersistentAncestor: - case kPseudoXrImmersiveDomOverlay: + case kPseudoXrOverlay: return kPseudoIdNone; } @@ -331,8 +331,6 @@ const static NameToPseudoStruct kPseudoTypeWithoutArgumentsMap[] = { {"-internal-video-persistent", CSSSelector::kPseudoVideoPersistent}, {"-internal-video-persistent-ancestor", CSSSelector::kPseudoVideoPersistentAncestor}, - {"-internal-xr-immersive-dom-overlay", - CSSSelector::kPseudoXrImmersiveDomOverlay}, {"-webkit-any-link", CSSSelector::kPseudoWebkitAnyLink}, {"-webkit-autofill", CSSSelector::kPseudoAutofill}, {"-webkit-drag", CSSSelector::kPseudoDrag}, @@ -410,6 +408,7 @@ const static NameToPseudoStruct kPseudoTypeWithoutArgumentsMap[] = { {"vertical", CSSSelector::kPseudoVertical}, {"visited", CSSSelector::kPseudoVisited}, {"window-inactive", CSSSelector::kPseudoWindowInactive}, + {"xr-overlay", CSSSelector::kPseudoXrOverlay}, }; const static NameToPseudoStruct kPseudoTypeWithArgumentsMap[] = { @@ -597,7 +596,6 @@ void CSSSelector::UpdatePseudoType(const AtomicString& value, case kPseudoSpatialNavigationInterest: case kPseudoVideoPersistent: case kPseudoVideoPersistentAncestor: - case kPseudoXrImmersiveDomOverlay: if (mode != kUASheetMode) { pseudo_type_ = kPseudoUnknown; break; @@ -673,6 +671,7 @@ void CSSSelector::UpdatePseudoType(const AtomicString& value, case kPseudoVisited: case kPseudoWebkitAnyLink: case kPseudoWindowInactive: + case kPseudoXrOverlay: if (match_ != kPseudoClass) pseudo_type_ = kPseudoUnknown; break; @@ -787,7 +786,7 @@ const CSSSelector* CSSSelector::SerializeCompound( case kPseudoLang: case kPseudoState: builder.Append('('); - builder.Append(simple_selector->Argument()); + SerializeIdentifier(simple_selector->Argument(), builder); builder.Append(')'); break; case kPseudoNot: @@ -804,13 +803,19 @@ const CSSSelector* CSSSelector::SerializeCompound( } } else if (simple_selector->match_ == kPseudoElement) { builder.Append("::"); - builder.Append(simple_selector->SerializingValue()); + SerializeIdentifier(simple_selector->SerializingValue(), builder); switch (simple_selector->GetPseudoType()) { - case kPseudoPart: - builder.Append('('); - builder.Append(simple_selector->Argument()); + case kPseudoPart: { + char separator = '('; + for (AtomicString part : *simple_selector->PartNames()) { + builder.Append(separator); + if (separator == '(') + separator = ' '; + SerializeIdentifier(part, builder); + } builder.Append(')'); break; + } default: break; } @@ -1211,4 +1216,10 @@ bool CSSSelector::RareData::MatchNth(unsigned unsigned_count) { return (NthBValue() - count) % (-NthAValue()) == 0; } +void CSSSelector::SetPartNames( + std::unique_ptr<Vector<AtomicString>> part_names) { + CreateRareData(); + data_.rare_data_->part_names_ = std::move(part_names); +} + } // namespace blink |