Index: third_party/WebKit/Source/core/css/SelectorChecker.cpp |
diff --git a/third_party/WebKit/Source/core/css/SelectorChecker.cpp b/third_party/WebKit/Source/core/css/SelectorChecker.cpp |
index de3cc38e0a99f0391d090692b2529de9cd044b6b..f632006a84b01a39886b70d67e65e8300485dd05 100644 |
--- a/third_party/WebKit/Source/core/css/SelectorChecker.cpp |
+++ b/third_party/WebKit/Source/core/css/SelectorChecker.cpp |
@@ -914,6 +914,22 @@ bool SelectorChecker::CheckPseudoClass(const SelectorCheckingContext& context, |
} |
} |
return MatchesFocusPseudoClass(element); |
+ case CSSSelector::kPseudoFocusWithin: |
+ if (mode_ == kSharingRules) |
+ return true; |
+ if (mode_ == kResolvingStyle) { |
+ if (context.in_rightmost_compound) { |
+ element_style_->SetAffectedByFocusWithin(); |
+ } else { |
+ element_style_->SetUnique(); |
+ element.SetChildrenOrSiblingsAffectedByFocusWithin(); |
+ } |
+ } |
+ probe::forcePseudoState(&element, CSSSelector::kPseudoFocusWithin, |
+ &force_pseudo_state); |
+ if (force_pseudo_state) |
+ return true; |
+ return element.HasFocusWithin(); |
case CSSSelector::kPseudoHover: |
if (mode_ == kSharingRules) |
return true; |