| 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 234 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 245 case PseudoRightPage: | 245 case PseudoRightPage: |
| 246 case PseudoInRange: | 246 case PseudoInRange: |
| 247 case PseudoOutOfRange: | 247 case PseudoOutOfRange: |
| 248 case PseudoUserAgentCustomElement: | 248 case PseudoUserAgentCustomElement: |
| 249 case PseudoWebKitCustomElement: | 249 case PseudoWebKitCustomElement: |
| 250 case PseudoCue: | 250 case PseudoCue: |
| 251 case PseudoFutureCue: | 251 case PseudoFutureCue: |
| 252 case PseudoPastCue: | 252 case PseudoPastCue: |
| 253 case PseudoDistributed: | 253 case PseudoDistributed: |
| 254 case PseudoUnresolved: | 254 case PseudoUnresolved: |
| 255 case PseudoContent: | |
| 256 case PseudoHost: | 255 case PseudoHost: |
| 257 case PseudoAncestor: | 256 case PseudoAncestor: |
| 258 case PseudoFullScreen: | 257 case PseudoFullScreen: |
| 259 case PseudoFullScreenDocument: | 258 case PseudoFullScreenDocument: |
| 260 case PseudoFullScreenAncestor: | 259 case PseudoFullScreenAncestor: |
| 261 return NOPSEUDO; | 260 return NOPSEUDO; |
| 262 case PseudoNotParsed: | 261 case PseudoNotParsed: |
| 263 ASSERT_NOT_REACHED(); | 262 ASSERT_NOT_REACHED(); |
| 264 return NOPSEUDO; | 263 return NOPSEUDO; |
| 265 } | 264 } |
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 339 DEFINE_STATIC_LOCAL(AtomicString, fullScreenAncestor, ("-webkit-full-screen-
ancestor", AtomicString::ConstructFromLiteral)); | 338 DEFINE_STATIC_LOCAL(AtomicString, fullScreenAncestor, ("-webkit-full-screen-
ancestor", AtomicString::ConstructFromLiteral)); |
| 340 DEFINE_STATIC_LOCAL(AtomicString, cue, ("cue(", AtomicString::ConstructFromL
iteral)); | 339 DEFINE_STATIC_LOCAL(AtomicString, cue, ("cue(", AtomicString::ConstructFromL
iteral)); |
| 341 DEFINE_STATIC_LOCAL(AtomicString, cueWithoutParen, ("cue", AtomicString::Con
structFromLiteral)); | 340 DEFINE_STATIC_LOCAL(AtomicString, cueWithoutParen, ("cue", AtomicString::Con
structFromLiteral)); |
| 342 DEFINE_STATIC_LOCAL(AtomicString, futureCue, ("future", AtomicString::Constr
uctFromLiteral)); | 341 DEFINE_STATIC_LOCAL(AtomicString, futureCue, ("future", AtomicString::Constr
uctFromLiteral)); |
| 343 DEFINE_STATIC_LOCAL(AtomicString, pastCue, ("past", AtomicString::ConstructF
romLiteral)); | 342 DEFINE_STATIC_LOCAL(AtomicString, pastCue, ("past", AtomicString::ConstructF
romLiteral)); |
| 344 DEFINE_STATIC_LOCAL(AtomicString, distributed, ("-webkit-distributed(", Atom
icString::ConstructFromLiteral)); | 343 DEFINE_STATIC_LOCAL(AtomicString, distributed, ("-webkit-distributed(", Atom
icString::ConstructFromLiteral)); |
| 345 DEFINE_STATIC_LOCAL(AtomicString, inRange, ("in-range", AtomicString::Constr
uctFromLiteral)); | 344 DEFINE_STATIC_LOCAL(AtomicString, inRange, ("in-range", AtomicString::Constr
uctFromLiteral)); |
| 346 DEFINE_STATIC_LOCAL(AtomicString, outOfRange, ("out-of-range", AtomicString:
:ConstructFromLiteral)); | 345 DEFINE_STATIC_LOCAL(AtomicString, outOfRange, ("out-of-range", AtomicString:
:ConstructFromLiteral)); |
| 347 DEFINE_STATIC_LOCAL(AtomicString, scope, ("scope", AtomicString::ConstructFr
omLiteral)); | 346 DEFINE_STATIC_LOCAL(AtomicString, scope, ("scope", AtomicString::ConstructFr
omLiteral)); |
| 348 DEFINE_STATIC_LOCAL(AtomicString, unresolved, ("unresolved", AtomicString::C
onstructFromLiteral)); | 347 DEFINE_STATIC_LOCAL(AtomicString, unresolved, ("unresolved", AtomicString::C
onstructFromLiteral)); |
| 349 DEFINE_STATIC_LOCAL(AtomicString, content, ("content", AtomicString::Constru
ctFromLiteral)); | |
| 350 DEFINE_STATIC_LOCAL(AtomicString, host, ("host", AtomicString::ConstructFrom
Literal)); | 348 DEFINE_STATIC_LOCAL(AtomicString, host, ("host", AtomicString::ConstructFrom
Literal)); |
| 351 DEFINE_STATIC_LOCAL(AtomicString, hostWithParams, ("host(", AtomicString::Co
nstructFromLiteral)); | 349 DEFINE_STATIC_LOCAL(AtomicString, hostWithParams, ("host(", AtomicString::Co
nstructFromLiteral)); |
| 352 DEFINE_STATIC_LOCAL(AtomicString, ancestor, ("ancestor", AtomicString::Const
ructFromLiteral)); | 350 DEFINE_STATIC_LOCAL(AtomicString, ancestor, ("ancestor", AtomicString::Const
ructFromLiteral)); |
| 353 DEFINE_STATIC_LOCAL(AtomicString, ancestorWithParams, ("ancestor(", AtomicSt
ring::ConstructFromLiteral)); | 351 DEFINE_STATIC_LOCAL(AtomicString, ancestorWithParams, ("ancestor(", AtomicSt
ring::ConstructFromLiteral)); |
| 354 | 352 |
| 355 static HashMap<StringImpl*, CSSSelector::PseudoType>* nameToPseudoType = 0; | 353 static HashMap<StringImpl*, CSSSelector::PseudoType>* nameToPseudoType = 0; |
| 356 if (!nameToPseudoType) { | 354 if (!nameToPseudoType) { |
| 357 nameToPseudoType = new HashMap<StringImpl*, CSSSelector::PseudoType>; | 355 nameToPseudoType = new HashMap<StringImpl*, CSSSelector::PseudoType>; |
| 358 nameToPseudoType->set(active.impl(), CSSSelector::PseudoActive); | 356 nameToPseudoType->set(active.impl(), CSSSelector::PseudoActive); |
| 359 nameToPseudoType->set(after.impl(), CSSSelector::PseudoAfter); | 357 nameToPseudoType->set(after.impl(), CSSSelector::PseudoAfter); |
| (...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 428 nameToPseudoType->set(pastCue.impl(), CSSSelector::PseudoPastCue); | 426 nameToPseudoType->set(pastCue.impl(), CSSSelector::PseudoPastCue); |
| 429 nameToPseudoType->set(distributed.impl(), CSSSelector::PseudoDistributed
); | 427 nameToPseudoType->set(distributed.impl(), CSSSelector::PseudoDistributed
); |
| 430 nameToPseudoType->set(inRange.impl(), CSSSelector::PseudoInRange); | 428 nameToPseudoType->set(inRange.impl(), CSSSelector::PseudoInRange); |
| 431 nameToPseudoType->set(outOfRange.impl(), CSSSelector::PseudoOutOfRange); | 429 nameToPseudoType->set(outOfRange.impl(), CSSSelector::PseudoOutOfRange); |
| 432 nameToPseudoType->set(unresolved.impl(), CSSSelector::PseudoUnresolved); | 430 nameToPseudoType->set(unresolved.impl(), CSSSelector::PseudoUnresolved); |
| 433 if (RuntimeEnabledFeatures::shadowDOMEnabled()) { | 431 if (RuntimeEnabledFeatures::shadowDOMEnabled()) { |
| 434 nameToPseudoType->set(host.impl(), CSSSelector::PseudoHost); | 432 nameToPseudoType->set(host.impl(), CSSSelector::PseudoHost); |
| 435 nameToPseudoType->set(hostWithParams.impl(), CSSSelector::PseudoHost
); | 433 nameToPseudoType->set(hostWithParams.impl(), CSSSelector::PseudoHost
); |
| 436 nameToPseudoType->set(ancestor.impl(), CSSSelector::PseudoAncestor); | 434 nameToPseudoType->set(ancestor.impl(), CSSSelector::PseudoAncestor); |
| 437 nameToPseudoType->set(ancestorWithParams.impl(), CSSSelector::Pseudo
Ancestor); | 435 nameToPseudoType->set(ancestorWithParams.impl(), CSSSelector::Pseudo
Ancestor); |
| 438 nameToPseudoType->set(content.impl(), CSSSelector::PseudoContent); | |
| 439 } | 436 } |
| 440 } | 437 } |
| 441 return nameToPseudoType; | 438 return nameToPseudoType; |
| 442 } | 439 } |
| 443 | 440 |
| 444 #ifndef NDEBUG | 441 #ifndef NDEBUG |
| 445 void CSSSelector::show(int indent) const | 442 void CSSSelector::show(int indent) const |
| 446 { | 443 { |
| 447 printf("%*sselectorText(): %s\n", indent, "", selectorText().ascii().data())
; | 444 printf("%*sselectorText(): %s\n", indent, "", selectorText().ascii().data())
; |
| 448 printf("%*sm_match: %d\n", indent, "", m_match); | 445 printf("%*sm_match: %d\n", indent, "", m_match); |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 512 case PseudoResizer: | 509 case PseudoResizer: |
| 513 case PseudoScrollbar: | 510 case PseudoScrollbar: |
| 514 case PseudoScrollbarCorner: | 511 case PseudoScrollbarCorner: |
| 515 case PseudoScrollbarButton: | 512 case PseudoScrollbarButton: |
| 516 case PseudoScrollbarThumb: | 513 case PseudoScrollbarThumb: |
| 517 case PseudoScrollbarTrack: | 514 case PseudoScrollbarTrack: |
| 518 case PseudoScrollbarTrackPiece: | 515 case PseudoScrollbarTrackPiece: |
| 519 case PseudoSelection: | 516 case PseudoSelection: |
| 520 case PseudoUserAgentCustomElement: | 517 case PseudoUserAgentCustomElement: |
| 521 case PseudoWebKitCustomElement: | 518 case PseudoWebKitCustomElement: |
| 522 case PseudoContent: | |
| 523 element = true; | 519 element = true; |
| 524 break; | 520 break; |
| 525 case PseudoUnknown: | 521 case PseudoUnknown: |
| 526 case PseudoEmpty: | 522 case PseudoEmpty: |
| 527 case PseudoFirstChild: | 523 case PseudoFirstChild: |
| 528 case PseudoFirstOfType: | 524 case PseudoFirstOfType: |
| 529 case PseudoLastChild: | 525 case PseudoLastChild: |
| 530 case PseudoLastOfType: | 526 case PseudoLastOfType: |
| 531 case PseudoOnlyChild: | 527 case PseudoOnlyChild: |
| 532 case PseudoOnlyOfType: | 528 case PseudoOnlyOfType: |
| (...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 694 str.append(')'); | 690 str.append(')'); |
| 695 } | 691 } |
| 696 break; | 692 break; |
| 697 } | 693 } |
| 698 default: | 694 default: |
| 699 break; | 695 break; |
| 700 } | 696 } |
| 701 } else if (cs->m_match == CSSSelector::PseudoElement) { | 697 } else if (cs->m_match == CSSSelector::PseudoElement) { |
| 702 str.appendLiteral("::"); | 698 str.appendLiteral("::"); |
| 703 str.append(cs->value()); | 699 str.append(cs->value()); |
| 704 | |
| 705 if (cs->pseudoType() == PseudoContent) { | |
| 706 if (cs->relation() == CSSSelector::SubSelector && cs->tagHistory
()) | |
| 707 return cs->tagHistory()->selectorText() + str.toString() + r
ightSide; | |
| 708 } | |
| 709 } else if (cs->isAttributeSelector()) { | 700 } else if (cs->isAttributeSelector()) { |
| 710 str.append('['); | 701 str.append('['); |
| 711 const AtomicString& prefix = cs->attribute().prefix(); | 702 const AtomicString& prefix = cs->attribute().prefix(); |
| 712 if (!prefix.isNull()) { | 703 if (!prefix.isNull()) { |
| 713 str.append(prefix); | 704 str.append(prefix); |
| 714 str.append("|"); | 705 str.append("|"); |
| 715 } | 706 } |
| 716 str.append(cs->attribute().localName()); | 707 str.append(cs->attribute().localName()); |
| 717 switch (cs->m_match) { | 708 switch (cs->m_match) { |
| 718 case CSSSelector::Exact: | 709 case CSSSelector::Exact: |
| (...skipping 27 matching lines...) Expand all Loading... |
| 746 } | 737 } |
| 747 } | 738 } |
| 748 if (cs->relation() != CSSSelector::SubSelector || !cs->tagHistory()) | 739 if (cs->relation() != CSSSelector::SubSelector || !cs->tagHistory()) |
| 749 break; | 740 break; |
| 750 cs = cs->tagHistory(); | 741 cs = cs->tagHistory(); |
| 751 } | 742 } |
| 752 | 743 |
| 753 if (const CSSSelector* tagHistory = cs->tagHistory()) { | 744 if (const CSSSelector* tagHistory = cs->tagHistory()) { |
| 754 switch (cs->relation()) { | 745 switch (cs->relation()) { |
| 755 case CSSSelector::Descendant: | 746 case CSSSelector::Descendant: |
| 756 if (cs->relationIsAffectedByPseudoContent() && tagHistory->pseudoTyp
e() != CSSSelector::PseudoContent) | 747 if (cs->relationIsAffectedByPseudoContent()) |
| 757 return tagHistory->selectorText("::-webkit-distributed(" + str.t
oString() + rightSide + ")"); | 748 return tagHistory->selectorText("::-webkit-distributed(" + str.t
oString() + rightSide + ")"); |
| 758 return tagHistory->selectorText(" " + str.toString() + rightSide); | 749 return tagHistory->selectorText(" " + str.toString() + rightSide); |
| 759 case CSSSelector::Child: | 750 case CSSSelector::Child: |
| 760 if (cs->relationIsAffectedByPseudoContent() && tagHistory->pseudoTyp
e() != CSSSelector::PseudoContent) | 751 if (cs->relationIsAffectedByPseudoContent()) |
| 761 return tagHistory->selectorText("::-webkit-distributed(> " + str
.toString() + rightSide + ")"); | 752 return tagHistory->selectorText("::-webkit-distributed(> " + str
.toString() + rightSide + ")"); |
| 762 return tagHistory->selectorText(" > " + str.toString() + rightSide); | 753 return tagHistory->selectorText(" > " + str.toString() + rightSide); |
| 763 case CSSSelector::ShadowAll: | 754 case CSSSelector::ShadowAll: |
| 764 return tagHistory->selectorText(" /shadow-all/ " + str.toString() +
rightSide); | 755 return tagHistory->selectorText(" /shadow-all/ " + str.toString() +
rightSide); |
| 765 case CSSSelector::ShadowDeep: | 756 case CSSSelector::ShadowDeep: |
| 766 return tagHistory->selectorText(" /shadow-deep/ " + str.toString() +
rightSide); | 757 return tagHistory->selectorText(" /shadow-deep/ " + str.toString() +
rightSide); |
| 767 case CSSSelector::DirectAdjacent: | 758 case CSSSelector::DirectAdjacent: |
| 768 return tagHistory->selectorText(" + " + str.toString() + rightSide); | 759 return tagHistory->selectorText(" + " + str.toString() + rightSide); |
| 769 case CSSSelector::IndirectAdjacent: | 760 case CSSSelector::IndirectAdjacent: |
| 770 return tagHistory->selectorText(" ~ " + str.toString() + rightSide); | 761 return tagHistory->selectorText(" ~ " + str.toString() + rightSide); |
| 771 case CSSSelector::SubSelector: | 762 case CSSSelector::SubSelector: |
| 772 ASSERT_NOT_REACHED(); | 763 ASSERT_NOT_REACHED(); |
| 773 case CSSSelector::ShadowPseudo: | 764 case CSSSelector::ShadowPseudo: |
| 774 return tagHistory->selectorText(str.toString() + rightSide); | 765 return tagHistory->selectorText(str.toString() + rightSide); |
| 766 case CSSSelector::ShadowContent: |
| 767 return tagHistory->selectorText(" /content/ " + str.toString() + rig
htSide); |
| 775 } | 768 } |
| 776 } | 769 } |
| 777 return str.toString() + rightSide; | 770 return str.toString() + rightSide; |
| 778 } | 771 } |
| 779 | 772 |
| 780 void CSSSelector::setAttribute(const QualifiedName& value) | 773 void CSSSelector::setAttribute(const QualifiedName& value) |
| 781 { | 774 { |
| 782 createRareData(); | 775 createRareData(); |
| 783 m_data.m_rareData->m_attribute = value; | 776 m_data.m_rareData->m_attribute = value; |
| 784 } | 777 } |
| (...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 945 return false; | 938 return false; |
| 946 return (count - m_b) % m_a == 0; | 939 return (count - m_b) % m_a == 0; |
| 947 } else { | 940 } else { |
| 948 if (count > m_b) | 941 if (count > m_b) |
| 949 return false; | 942 return false; |
| 950 return (m_b - count) % (-m_a) == 0; | 943 return (m_b - count) % (-m_a) == 0; |
| 951 } | 944 } |
| 952 } | 945 } |
| 953 | 946 |
| 954 } // namespace WebCore | 947 } // namespace WebCore |
| OLD | NEW |