| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 1999-2003 Lars Knoll (knoll@kde.org) | 2 * Copyright (C) 1999-2003 Lars Knoll (knoll@kde.org) |
| 3 * 1999 Waldo Bastian (bastian@kde.org) | 3 * 1999 Waldo Bastian (bastian@kde.org) |
| 4 * 2001 Andreas Schlapbach (schlpbch@iam.unibe.ch) | 4 * 2001 Andreas Schlapbach (schlpbch@iam.unibe.ch) |
| 5 * 2001-2003 Dirk Mueller (mueller@kde.org) | 5 * 2001-2003 Dirk Mueller (mueller@kde.org) |
| 6 * Copyright (C) 2002, 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights | 6 * Copyright (C) 2002, 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights |
| 7 * reserved. | 7 * reserved. |
| 8 * Copyright (C) 2008 David Smith (catfish.man@gmail.com) | 8 * Copyright (C) 2008 David Smith (catfish.man@gmail.com) |
| 9 * Copyright (C) 2010 Google Inc. All rights reserved. | 9 * Copyright (C) 2010 Google Inc. All rights reserved. |
| 10 * | 10 * |
| (...skipping 13 matching lines...) Expand all Loading... |
| 24 * Boston, MA 02110-1301, USA. | 24 * Boston, MA 02110-1301, USA. |
| 25 */ | 25 */ |
| 26 | 26 |
| 27 #include "core/css/CSSSelector.h" | 27 #include "core/css/CSSSelector.h" |
| 28 | 28 |
| 29 #include <algorithm> | 29 #include <algorithm> |
| 30 #include <memory> | 30 #include <memory> |
| 31 #include "core/HTMLNames.h" | 31 #include "core/HTMLNames.h" |
| 32 #include "core/css/CSSMarkup.h" | 32 #include "core/css/CSSMarkup.h" |
| 33 #include "core/css/CSSSelectorList.h" | 33 #include "core/css/CSSSelectorList.h" |
| 34 #include "core/css/parser/CSSParserContext.h" |
| 34 #include "platform/RuntimeEnabledFeatures.h" | 35 #include "platform/RuntimeEnabledFeatures.h" |
| 35 #include "platform/wtf/Assertions.h" | 36 #include "platform/wtf/Assertions.h" |
| 36 #include "platform/wtf/HashMap.h" | 37 #include "platform/wtf/HashMap.h" |
| 37 #include "platform/wtf/StdLibExtras.h" | 38 #include "platform/wtf/StdLibExtras.h" |
| 38 #include "platform/wtf/text/StringBuilder.h" | 39 #include "platform/wtf/text/StringBuilder.h" |
| 39 | 40 |
| 40 #ifndef NDEBUG | 41 #ifndef NDEBUG |
| 41 #include <stdio.h> | 42 #include <stdio.h> |
| 42 #endif | 43 #endif |
| 43 | 44 |
| (...skipping 438 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 482 } | 483 } |
| 483 | 484 |
| 484 PseudoId CSSSelector::ParsePseudoId(const String& name) { | 485 PseudoId CSSSelector::ParsePseudoId(const String& name) { |
| 485 unsigned name_without_colons_start = | 486 unsigned name_without_colons_start = |
| 486 name[0] == ':' ? (name[1] == ':' ? 2 : 1) : 0; | 487 name[0] == ':' ? (name[1] == ':' ? 2 : 1) : 0; |
| 487 return GetPseudoId(ParsePseudoType( | 488 return GetPseudoId(ParsePseudoType( |
| 488 AtomicString(name.Substring(name_without_colons_start)), false)); | 489 AtomicString(name.Substring(name_without_colons_start)), false)); |
| 489 } | 490 } |
| 490 | 491 |
| 491 void CSSSelector::UpdatePseudoType(const AtomicString& value, | 492 void CSSSelector::UpdatePseudoType(const AtomicString& value, |
| 493 const CSSParserContext& context, |
| 492 bool has_arguments) { | 494 bool has_arguments) { |
| 493 DCHECK(match_ == kPseudoClass || match_ == kPseudoElement || | 495 DCHECK(match_ == kPseudoClass || match_ == kPseudoElement || |
| 494 match_ == kPagePseudoClass); | 496 match_ == kPagePseudoClass); |
| 495 | 497 |
| 496 SetValue(value); | 498 SetValue(value); |
| 497 SetPseudoType(ParsePseudoType(value, has_arguments)); | 499 SetPseudoType(ParsePseudoType(value, has_arguments)); |
| 498 | 500 |
| 499 switch (pseudo_type_) { | 501 switch (pseudo_type_) { |
| 500 case kPseudoAfter: | 502 case kPseudoAfter: |
| 501 case kPseudoBefore: | 503 case kPseudoBefore: |
| (...skipping 12 matching lines...) Expand all Loading... |
| 514 case kPseudoScrollbar: | 516 case kPseudoScrollbar: |
| 515 case kPseudoScrollbarCorner: | 517 case kPseudoScrollbarCorner: |
| 516 case kPseudoScrollbarButton: | 518 case kPseudoScrollbarButton: |
| 517 case kPseudoScrollbarThumb: | 519 case kPseudoScrollbarThumb: |
| 518 case kPseudoScrollbarTrack: | 520 case kPseudoScrollbarTrack: |
| 519 case kPseudoScrollbarTrackPiece: | 521 case kPseudoScrollbarTrackPiece: |
| 520 case kPseudoSelection: | 522 case kPseudoSelection: |
| 521 case kPseudoWebKitCustomElement: | 523 case kPseudoWebKitCustomElement: |
| 522 case kPseudoBlinkInternalElement: | 524 case kPseudoBlinkInternalElement: |
| 523 case kPseudoContent: | 525 case kPseudoContent: |
| 524 case kPseudoShadow: | |
| 525 case kPseudoSlotted: | 526 case kPseudoSlotted: |
| 526 if (match_ != kPseudoElement) | 527 if (match_ != kPseudoElement) |
| 527 pseudo_type_ = kPseudoUnknown; | 528 pseudo_type_ = kPseudoUnknown; |
| 528 break; | 529 break; |
| 530 case kPseudoShadow: |
| 531 if (match_ != kPseudoElement || context.IsDynamicProfile()) |
| 532 pseudo_type_ = kPseudoUnknown; |
| 533 break; |
| 529 case kPseudoFirstPage: | 534 case kPseudoFirstPage: |
| 530 case kPseudoLeftPage: | 535 case kPseudoLeftPage: |
| 531 case kPseudoRightPage: | 536 case kPseudoRightPage: |
| 532 if (match_ != kPagePseudoClass) | 537 if (match_ != kPagePseudoClass) |
| 533 pseudo_type_ = kPseudoUnknown; | 538 pseudo_type_ = kPseudoUnknown; |
| 534 break; | 539 break; |
| 535 case kPseudoActive: | 540 case kPseudoActive: |
| 536 case kPseudoAny: | 541 case kPseudoAny: |
| 537 case kPseudoAnyLink: | 542 case kPseudoAnyLink: |
| 538 case kPseudoAutofill: | 543 case kPseudoAutofill: |
| (...skipping 223 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 762 cs = cs->TagHistory(); | 767 cs = cs->TagHistory(); |
| 763 } | 768 } |
| 764 | 769 |
| 765 if (const CSSSelector* tag_history = cs->TagHistory()) { | 770 if (const CSSSelector* tag_history = cs->TagHistory()) { |
| 766 switch (cs->Relation()) { | 771 switch (cs->Relation()) { |
| 767 case kDescendant: | 772 case kDescendant: |
| 768 return tag_history->SelectorText(" " + str.ToString() + right_side); | 773 return tag_history->SelectorText(" " + str.ToString() + right_side); |
| 769 case kChild: | 774 case kChild: |
| 770 return tag_history->SelectorText(" > " + str.ToString() + right_side); | 775 return tag_history->SelectorText(" > " + str.ToString() + right_side); |
| 771 case kShadowDeep: | 776 case kShadowDeep: |
| 777 case kShadowDeepAsDescendant: |
| 772 return tag_history->SelectorText(" /deep/ " + str.ToString() + | 778 return tag_history->SelectorText(" /deep/ " + str.ToString() + |
| 773 right_side); | 779 right_side); |
| 774 case kShadowPiercingDescendant: | 780 case kShadowPiercingDescendant: |
| 775 return tag_history->SelectorText(" >>> " + str.ToString() + right_side); | 781 return tag_history->SelectorText(" >>> " + str.ToString() + right_side); |
| 776 case kDirectAdjacent: | 782 case kDirectAdjacent: |
| 777 return tag_history->SelectorText(" + " + str.ToString() + right_side); | 783 return tag_history->SelectorText(" + " + str.ToString() + right_side); |
| 778 case kIndirectAdjacent: | 784 case kIndirectAdjacent: |
| 779 return tag_history->SelectorText(" ~ " + str.ToString() + right_side); | 785 return tag_history->SelectorText(" ~ " + str.ToString() + right_side); |
| 780 case kSubSelector: | 786 case kSubSelector: |
| 781 NOTREACHED(); | 787 NOTREACHED(); |
| (...skipping 241 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1023 if (count < NthBValue()) | 1029 if (count < NthBValue()) |
| 1024 return false; | 1030 return false; |
| 1025 return (count - NthBValue()) % NthAValue() == 0; | 1031 return (count - NthBValue()) % NthAValue() == 0; |
| 1026 } | 1032 } |
| 1027 if (count > NthBValue()) | 1033 if (count > NthBValue()) |
| 1028 return false; | 1034 return false; |
| 1029 return (NthBValue() - count) % (-NthAValue()) == 0; | 1035 return (NthBValue() - count) % (-NthAValue()) == 0; |
| 1030 } | 1036 } |
| 1031 | 1037 |
| 1032 } // namespace blink | 1038 } // namespace blink |
| OLD | NEW |