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 319 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
330 // rule is the same as the element we are matching rules for. | 330 // rule is the same as the element we are matching rules for. |
331 if (mode_ == kSharingRules && next_context.selector->IsHostPseudoClass()) | 331 if (mode_ == kSharingRules && next_context.selector->IsHostPseudoClass()) |
332 next_context.scope = next_context.element->ContainingShadowRoot(); | 332 next_context.scope = next_context.element->ContainingShadowRoot(); |
333 | 333 |
334 next_context.in_rightmost_compound = false; | 334 next_context.in_rightmost_compound = false; |
335 next_context.is_sub_selector = false; | 335 next_context.is_sub_selector = false; |
336 next_context.previous_element = context.element; | 336 next_context.previous_element = context.element; |
337 next_context.pseudo_id = kPseudoIdNone; | 337 next_context.pseudo_id = kPseudoIdNone; |
338 | 338 |
339 switch (relation) { | 339 switch (relation) { |
| 340 case CSSSelector::kShadowDeepAsDescendant: |
| 341 Deprecation::CountDeprecation(context.element->GetDocument(), |
| 342 UseCounter::kCSSDeepCombinator); |
| 343 // fall through |
340 case CSSSelector::kDescendant: | 344 case CSSSelector::kDescendant: |
341 if (context.selector->RelationIsAffectedByPseudoContent()) { | 345 if (context.selector->RelationIsAffectedByPseudoContent()) { |
342 for (Element* element = context.element; element; | 346 for (Element* element = context.element; element; |
343 element = element->parentElement()) { | 347 element = element->parentElement()) { |
344 if (MatchForPseudoContent(next_context, *element, result) == | 348 if (MatchForPseudoContent(next_context, *element, result) == |
345 kSelectorMatches) | 349 kSelectorMatches) |
346 return kSelectorMatches; | 350 return kSelectorMatches; |
347 } | 351 } |
348 return kSelectorFailsCompletely; | 352 return kSelectorFailsCompletely; |
349 } | 353 } |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
407 next_context.element = | 411 next_context.element = |
408 ElementTraversal::PreviousSibling(*next_context.element)) { | 412 ElementTraversal::PreviousSibling(*next_context.element)) { |
409 MatchStatus match = MatchSelector(next_context, result); | 413 MatchStatus match = MatchSelector(next_context, result); |
410 if (match == kSelectorMatches || match == kSelectorFailsAllSiblings || | 414 if (match == kSelectorMatches || match == kSelectorFailsAllSiblings || |
411 match == kSelectorFailsCompletely) | 415 match == kSelectorFailsCompletely) |
412 return match; | 416 return match; |
413 } | 417 } |
414 return kSelectorFailsAllSiblings; | 418 return kSelectorFailsAllSiblings; |
415 | 419 |
416 case CSSSelector::kShadowPseudo: { | 420 case CSSSelector::kShadowPseudo: { |
417 if (!is_ua_rule_ && mode_ != kQueryingRules && | |
418 context.selector->GetPseudoType() == CSSSelector::kPseudoShadow) | |
419 Deprecation::CountDeprecation(context.element->GetDocument(), | |
420 UseCounter::kCSSSelectorPseudoShadow); | |
421 // If we're in the same tree-scope as the scoping element, then following | 421 // If we're in the same tree-scope as the scoping element, then following |
422 // a shadow descendant combinator would escape that and thus the scope. | 422 // a shadow descendant combinator would escape that and thus the scope. |
423 if (context.scope && context.scope->OwnerShadowHost() && | 423 if (context.scope && context.scope->OwnerShadowHost() && |
424 context.scope->OwnerShadowHost()->GetTreeScope() == | 424 context.scope->OwnerShadowHost()->GetTreeScope() == |
425 context.element->GetTreeScope()) | 425 context.element->GetTreeScope()) |
426 return kSelectorFailsCompletely; | 426 return kSelectorFailsCompletely; |
427 | 427 |
428 Element* shadow_host = context.element->OwnerShadowHost(); | 428 Element* shadow_host = context.element->OwnerShadowHost(); |
429 if (!shadow_host) | 429 if (!shadow_host) |
430 return kSelectorFailsCompletely; | 430 return kSelectorFailsCompletely; |
(...skipping 941 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1372 bool SelectorChecker::MatchesFocusPseudoClass(const Element& element) { | 1372 bool SelectorChecker::MatchesFocusPseudoClass(const Element& element) { |
1373 bool force_pseudo_state = false; | 1373 bool force_pseudo_state = false; |
1374 probe::forcePseudoState(const_cast<Element*>(&element), | 1374 probe::forcePseudoState(const_cast<Element*>(&element), |
1375 CSSSelector::kPseudoFocus, &force_pseudo_state); | 1375 CSSSelector::kPseudoFocus, &force_pseudo_state); |
1376 if (force_pseudo_state) | 1376 if (force_pseudo_state) |
1377 return true; | 1377 return true; |
1378 return element.IsFocused() && IsFrameFocused(element); | 1378 return element.IsFocused() && IsFrameFocused(element); |
1379 } | 1379 } |
1380 | 1380 |
1381 } // namespace blink | 1381 } // namespace blink |
OLD | NEW |