OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) | 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) |
3 * (C) 2004-2005 Allan Sandfeld Jensen (kde@carewolf.com) | 3 * (C) 2004-2005 Allan Sandfeld Jensen (kde@carewolf.com) |
4 * Copyright (C) 2006, 2007 Nicholas Shanks (webkit@nickshanks.com) | 4 * Copyright (C) 2006, 2007 Nicholas Shanks (webkit@nickshanks.com) |
5 * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Apple Inc. | 5 * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Apple Inc. |
6 * All rights reserved. | 6 * All rights reserved. |
7 * Copyright (C) 2007 Alexey Proskuryakov <ap@webkit.org> | 7 * Copyright (C) 2007 Alexey Proskuryakov <ap@webkit.org> |
8 * Copyright (C) 2007, 2008 Eric Seidel <eric@webkit.org> | 8 * Copyright (C) 2007, 2008 Eric Seidel <eric@webkit.org> |
9 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. | 9 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. |
10 * (http://www.torchmobile.com/) | 10 * (http://www.torchmobile.com/) |
(...skipping 242 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
253 SelectorChecker::MatchStatus SelectorChecker::MatchForSubSelector( | 253 SelectorChecker::MatchStatus SelectorChecker::MatchForSubSelector( |
254 const SelectorCheckingContext& context, | 254 const SelectorCheckingContext& context, |
255 MatchResult& result) const { | 255 MatchResult& result) const { |
256 SelectorCheckingContext next_context = PrepareNextContextForRelation(context); | 256 SelectorCheckingContext next_context = PrepareNextContextForRelation(context); |
257 | 257 |
258 PseudoId dynamic_pseudo = result.dynamic_pseudo; | 258 PseudoId dynamic_pseudo = result.dynamic_pseudo; |
259 next_context.has_scrollbar_pseudo = | 259 next_context.has_scrollbar_pseudo = |
260 dynamic_pseudo != kPseudoIdNone && | 260 dynamic_pseudo != kPseudoIdNone && |
261 (scrollbar_ || dynamic_pseudo == kPseudoIdScrollbarCorner || | 261 (scrollbar_ || dynamic_pseudo == kPseudoIdScrollbarCorner || |
262 dynamic_pseudo == kPseudoIdResizer); | 262 dynamic_pseudo == kPseudoIdResizer); |
| 263 |
| 264 // Only match pseudo classes following scrollbar pseudo elements while |
| 265 // actually computing style for scrollbar pseudo elements. This is to |
| 266 // avoid incorrectly setting affected-by flags on actual elements for |
| 267 // cases like: div::-webkit-scrollbar-thumb:hover { } |
| 268 if (context.in_rightmost_compound && dynamic_pseudo != kPseudoIdNone && |
| 269 dynamic_pseudo != kPseudoIdSelection && |
| 270 !next_context.has_scrollbar_pseudo) { |
| 271 return kSelectorFailsCompletely; |
| 272 } |
| 273 |
263 next_context.has_selection_pseudo = dynamic_pseudo == kPseudoIdSelection; | 274 next_context.has_selection_pseudo = dynamic_pseudo == kPseudoIdSelection; |
264 next_context.is_sub_selector = true; | 275 next_context.is_sub_selector = true; |
265 return MatchSelector(next_context, result); | 276 return MatchSelector(next_context, result); |
266 } | 277 } |
267 | 278 |
268 static inline bool IsV0ShadowRoot(const Node* node) { | 279 static inline bool IsV0ShadowRoot(const Node* node) { |
269 return node && node->IsShadowRoot() && | 280 return node && node->IsShadowRoot() && |
270 ToShadowRoot(node)->GetType() == ShadowRootType::V0; | 281 ToShadowRoot(node)->GetType() == ShadowRootType::V0; |
271 } | 282 } |
272 | 283 |
(...skipping 1088 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1361 bool SelectorChecker::MatchesFocusPseudoClass(const Element& element) { | 1372 bool SelectorChecker::MatchesFocusPseudoClass(const Element& element) { |
1362 bool force_pseudo_state = false; | 1373 bool force_pseudo_state = false; |
1363 probe::forcePseudoState(const_cast<Element*>(&element), | 1374 probe::forcePseudoState(const_cast<Element*>(&element), |
1364 CSSSelector::kPseudoFocus, &force_pseudo_state); | 1375 CSSSelector::kPseudoFocus, &force_pseudo_state); |
1365 if (force_pseudo_state) | 1376 if (force_pseudo_state) |
1366 return true; | 1377 return true; |
1367 return element.IsFocused() && IsFrameFocused(element); | 1378 return element.IsFocused() && IsFrameFocused(element); |
1368 } | 1379 } |
1369 | 1380 |
1370 } // namespace blink | 1381 } // namespace blink |
OLD | NEW |