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 |