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 reserv
ed. | 6 * Copyright (C) 2002, 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights reserv
ed. |
7 * Copyright (C) 2008 David Smith (catfish.man@gmail.com) | 7 * Copyright (C) 2008 David Smith (catfish.man@gmail.com) |
8 * Copyright (C) 2010 Google Inc. All rights reserved. | 8 * Copyright (C) 2010 Google Inc. All rights reserved. |
9 * | 9 * |
10 * This library is free software; you can redistribute it and/or | 10 * This library is free software; you can redistribute it and/or |
(...skipping 663 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
674 str.appendLiteral("$="); | 674 str.appendLiteral("$="); |
675 break; | 675 break; |
676 case CSSSelector::Contain: | 676 case CSSSelector::Contain: |
677 str.appendLiteral("*="); | 677 str.appendLiteral("*="); |
678 break; | 678 break; |
679 default: | 679 default: |
680 break; | 680 break; |
681 } | 681 } |
682 if (cs->m_match != CSSSelector::Set) { | 682 if (cs->m_match != CSSSelector::Set) { |
683 serializeString(cs->value(), str); | 683 serializeString(cs->value(), str); |
| 684 if (cs->attributeFlags() & CaseInsensitive) |
| 685 str.append(" i"); |
684 str.append(']'); | 686 str.append(']'); |
685 } | 687 } |
686 } | 688 } |
687 if (cs->relation() != CSSSelector::SubSelector || !cs->tagHistory()) | 689 if (cs->relation() != CSSSelector::SubSelector || !cs->tagHistory()) |
688 break; | 690 break; |
689 cs = cs->tagHistory(); | 691 cs = cs->tagHistory(); |
690 } | 692 } |
691 | 693 |
692 if (const CSSSelector* tagHistory = cs->tagHistory()) { | 694 if (const CSSSelector* tagHistory = cs->tagHistory()) { |
693 switch (cs->relation()) { | 695 switch (cs->relation()) { |
694 case CSSSelector::Descendant: | 696 case CSSSelector::Descendant: |
695 return tagHistory->selectorText(" " + str.toString() + rightSide); | 697 return tagHistory->selectorText(" " + str.toString() + rightSide); |
696 case CSSSelector::Child: | 698 case CSSSelector::Child: |
697 return tagHistory->selectorText(" > " + str.toString() + rightSide); | 699 return tagHistory->selectorText(" > " + str.toString() + rightSide); |
698 case CSSSelector::ShadowDeep: | 700 case CSSSelector::ShadowDeep: |
699 return tagHistory->selectorText(" /deep/ " + str.toString() + rightS
ide); | 701 return tagHistory->selectorText(" /deep/ " + str.toString() + rightS
ide); |
700 case CSSSelector::DirectAdjacent: | 702 case CSSSelector::DirectAdjacent: |
701 return tagHistory->selectorText(" + " + str.toString() + rightSide); | 703 return tagHistory->selectorText(" + " + str.toString() + rightSide); |
702 case CSSSelector::IndirectAdjacent: | 704 case CSSSelector::IndirectAdjacent: |
703 return tagHistory->selectorText(" ~ " + str.toString() + rightSide); | 705 return tagHistory->selectorText(" ~ " + str.toString() + rightSide); |
704 case CSSSelector::SubSelector: | 706 case CSSSelector::SubSelector: |
705 ASSERT_NOT_REACHED(); | 707 ASSERT_NOT_REACHED(); |
706 case CSSSelector::ShadowPseudo: | 708 case CSSSelector::ShadowPseudo: |
707 return tagHistory->selectorText(str.toString() + rightSide); | 709 return tagHistory->selectorText(str.toString() + rightSide); |
708 } | 710 } |
709 } | 711 } |
710 return str.toString() + rightSide; | 712 return str.toString() + rightSide; |
711 } | 713 } |
712 | 714 |
713 void CSSSelector::setAttribute(const QualifiedName& value) | 715 void CSSSelector::setAttribute(const QualifiedName& value, unsigned flags) |
714 { | 716 { |
715 createRareData(); | 717 createRareData(); |
716 m_data.m_rareData->m_attribute = value; | 718 m_data.m_rareData->m_attribute = value; |
| 719 m_data.m_rareData->m_attributeFlags = flags; |
717 } | 720 } |
718 | 721 |
719 void CSSSelector::setArgument(const AtomicString& value) | 722 void CSSSelector::setArgument(const AtomicString& value) |
720 { | 723 { |
721 createRareData(); | 724 createRareData(); |
722 m_data.m_rareData->m_argument = value; | 725 m_data.m_rareData->m_argument = value; |
723 } | 726 } |
724 | 727 |
725 void CSSSelector::setSelectorList(PassOwnPtr<CSSSelectorList> selectorList) | 728 void CSSSelector::setSelectorList(PassOwnPtr<CSSSelectorList> selectorList) |
726 { | 729 { |
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
810 { | 813 { |
811 ASSERT(m_hasRareData); | 814 ASSERT(m_hasRareData); |
812 return m_data.m_rareData->matchNth(count); | 815 return m_data.m_rareData->matchNth(count); |
813 } | 816 } |
814 | 817 |
815 CSSSelector::RareData::RareData(const AtomicString& value) | 818 CSSSelector::RareData::RareData(const AtomicString& value) |
816 : m_value(value) | 819 : m_value(value) |
817 , m_a(0) | 820 , m_a(0) |
818 , m_b(0) | 821 , m_b(0) |
819 , m_attribute(anyQName()) | 822 , m_attribute(anyQName()) |
| 823 , m_attributeFlags(NoAttributeFlags) |
820 , m_argument(nullAtom) | 824 , m_argument(nullAtom) |
821 { | 825 { |
822 } | 826 } |
823 | 827 |
824 CSSSelector::RareData::~RareData() | 828 CSSSelector::RareData::~RareData() |
825 { | 829 { |
826 } | 830 } |
827 | 831 |
828 // a helper function for parsing nth-arguments | 832 // a helper function for parsing nth-arguments |
829 bool CSSSelector::RareData::parseNth() | 833 bool CSSSelector::RareData::parseNth() |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
878 return false; | 882 return false; |
879 return (count - m_b) % m_a == 0; | 883 return (count - m_b) % m_a == 0; |
880 } else { | 884 } else { |
881 if (count > m_b) | 885 if (count > m_b) |
882 return false; | 886 return false; |
883 return (m_b - count) % (-m_a) == 0; | 887 return (m_b - count) % (-m_a) == 0; |
884 } | 888 } |
885 } | 889 } |
886 | 890 |
887 } // namespace WebCore | 891 } // namespace WebCore |
OLD | NEW |