| 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: |
| 255 case PseudoHost: | 256 case PseudoHost: |
| 256 case PseudoAncestor: | 257 case PseudoAncestor: |
| 257 case PseudoFullScreen: | 258 case PseudoFullScreen: |
| 258 case PseudoFullScreenDocument: | 259 case PseudoFullScreenDocument: |
| 259 case PseudoFullScreenAncestor: | 260 case PseudoFullScreenAncestor: |
| 260 return NOPSEUDO; | 261 return NOPSEUDO; |
| 261 case PseudoNotParsed: | 262 case PseudoNotParsed: |
| 262 ASSERT_NOT_REACHED(); | 263 ASSERT_NOT_REACHED(); |
| 263 return NOPSEUDO; | 264 return NOPSEUDO; |
| 264 } | 265 } |
| (...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 349 {"past", CSSSelector::PseudoPastCue, 0}, | 350 {"past", CSSSelector::PseudoPastCue, 0}, |
| 350 {"-webkit-distributed(", CSSSelector::PseudoDistributed, 0}, | 351 {"-webkit-distributed(", CSSSelector::PseudoDistributed, 0}, |
| 351 {"in-range", CSSSelector::PseudoInRange, 0}, | 352 {"in-range", CSSSelector::PseudoInRange, 0}, |
| 352 {"out-of-range", CSSSelector::PseudoOutOfRange, 0}, | 353 {"out-of-range", CSSSelector::PseudoOutOfRange, 0}, |
| 353 {"scope", CSSSelector::PseudoScope, 0}, | 354 {"scope", CSSSelector::PseudoScope, 0}, |
| 354 {"unresolved", CSSSelector::PseudoUnresolved, 0}, | 355 {"unresolved", CSSSelector::PseudoUnresolved, 0}, |
| 355 {"host", CSSSelector::PseudoHost, CSSSel
ector::RequiresShadowDOM}, | 356 {"host", CSSSelector::PseudoHost, CSSSel
ector::RequiresShadowDOM}, |
| 356 {"host(", CSSSelector::PseudoHost, CSSSel
ector::RequiresShadowDOM}, | 357 {"host(", CSSSelector::PseudoHost, CSSSel
ector::RequiresShadowDOM}, |
| 357 {"ancestor", CSSSelector::PseudoAncestor, CSSSel
ector::RequiresShadowDOM}, | 358 {"ancestor", CSSSelector::PseudoAncestor, CSSSel
ector::RequiresShadowDOM}, |
| 358 {"ancestor(", CSSSelector::PseudoAncestor, CSSSel
ector::RequiresShadowDOM}, | 359 {"ancestor(", CSSSelector::PseudoAncestor, CSSSel
ector::RequiresShadowDOM}, |
| 360 {"content", CSSSelector::PseudoContent, CSSSel
ector::RequiresShadowDOM}, |
| 359 }; | 361 }; |
| 360 | 362 |
| 361 static HashMap<StringImpl*, CSSSelector::PseudoType>* nameToPseudoTypeMap() | 363 static HashMap<StringImpl*, CSSSelector::PseudoType>* nameToPseudoTypeMap() |
| 362 { | 364 { |
| 363 static HashMap<StringImpl*, CSSSelector::PseudoType>* nameToPseudoType = 0; | 365 static HashMap<StringImpl*, CSSSelector::PseudoType>* nameToPseudoType = 0; |
| 364 if (!nameToPseudoType) { | 366 if (!nameToPseudoType) { |
| 365 nameToPseudoType = new HashMap<StringImpl*, CSSSelector::PseudoType>; | 367 nameToPseudoType = new HashMap<StringImpl*, CSSSelector::PseudoType>; |
| 366 | 368 |
| 367 size_t pseudoCount = WTF_ARRAY_LENGTH(pseudoTypeMap); | 369 size_t pseudoCount = WTF_ARRAY_LENGTH(pseudoTypeMap); |
| 368 for (size_t i = 0; i < pseudoCount; i++) { | 370 for (size_t i = 0; i < pseudoCount; i++) { |
| (...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 454 case PseudoResizer: | 456 case PseudoResizer: |
| 455 case PseudoScrollbar: | 457 case PseudoScrollbar: |
| 456 case PseudoScrollbarCorner: | 458 case PseudoScrollbarCorner: |
| 457 case PseudoScrollbarButton: | 459 case PseudoScrollbarButton: |
| 458 case PseudoScrollbarThumb: | 460 case PseudoScrollbarThumb: |
| 459 case PseudoScrollbarTrack: | 461 case PseudoScrollbarTrack: |
| 460 case PseudoScrollbarTrackPiece: | 462 case PseudoScrollbarTrackPiece: |
| 461 case PseudoSelection: | 463 case PseudoSelection: |
| 462 case PseudoUserAgentCustomElement: | 464 case PseudoUserAgentCustomElement: |
| 463 case PseudoWebKitCustomElement: | 465 case PseudoWebKitCustomElement: |
| 466 case PseudoContent: |
| 464 element = true; | 467 element = true; |
| 465 break; | 468 break; |
| 466 case PseudoUnknown: | 469 case PseudoUnknown: |
| 467 case PseudoEmpty: | 470 case PseudoEmpty: |
| 468 case PseudoFirstChild: | 471 case PseudoFirstChild: |
| 469 case PseudoFirstOfType: | 472 case PseudoFirstOfType: |
| 470 case PseudoLastChild: | 473 case PseudoLastChild: |
| 471 case PseudoLastOfType: | 474 case PseudoLastOfType: |
| 472 case PseudoOnlyChild: | 475 case PseudoOnlyChild: |
| 473 case PseudoOnlyOfType: | 476 case PseudoOnlyOfType: |
| (...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 635 str.append(')'); | 638 str.append(')'); |
| 636 } | 639 } |
| 637 break; | 640 break; |
| 638 } | 641 } |
| 639 default: | 642 default: |
| 640 break; | 643 break; |
| 641 } | 644 } |
| 642 } else if (cs->m_match == CSSSelector::PseudoElement) { | 645 } else if (cs->m_match == CSSSelector::PseudoElement) { |
| 643 str.appendLiteral("::"); | 646 str.appendLiteral("::"); |
| 644 str.append(cs->value()); | 647 str.append(cs->value()); |
| 648 |
| 649 if (cs->pseudoType() == PseudoContent) { |
| 650 if (cs->relation() == CSSSelector::SubSelector && cs->tagHistory
()) |
| 651 return cs->tagHistory()->selectorText() + str.toString() + r
ightSide; |
| 652 } |
| 645 } else if (cs->isAttributeSelector()) { | 653 } else if (cs->isAttributeSelector()) { |
| 646 str.append('['); | 654 str.append('['); |
| 647 const AtomicString& prefix = cs->attribute().prefix(); | 655 const AtomicString& prefix = cs->attribute().prefix(); |
| 648 if (!prefix.isNull()) { | 656 if (!prefix.isNull()) { |
| 649 str.append(prefix); | 657 str.append(prefix); |
| 650 str.append("|"); | 658 str.append("|"); |
| 651 } | 659 } |
| 652 str.append(cs->attribute().localName()); | 660 str.append(cs->attribute().localName()); |
| 653 switch (cs->m_match) { | 661 switch (cs->m_match) { |
| 654 case CSSSelector::Exact: | 662 case CSSSelector::Exact: |
| (...skipping 27 matching lines...) Expand all Loading... |
| 682 } | 690 } |
| 683 } | 691 } |
| 684 if (cs->relation() != CSSSelector::SubSelector || !cs->tagHistory()) | 692 if (cs->relation() != CSSSelector::SubSelector || !cs->tagHistory()) |
| 685 break; | 693 break; |
| 686 cs = cs->tagHistory(); | 694 cs = cs->tagHistory(); |
| 687 } | 695 } |
| 688 | 696 |
| 689 if (const CSSSelector* tagHistory = cs->tagHistory()) { | 697 if (const CSSSelector* tagHistory = cs->tagHistory()) { |
| 690 switch (cs->relation()) { | 698 switch (cs->relation()) { |
| 691 case CSSSelector::Descendant: | 699 case CSSSelector::Descendant: |
| 692 if (cs->relationIsAffectedByPseudoContent()) | 700 if (cs->relationIsAffectedByPseudoContent() && tagHistory->pseudoTyp
e() != CSSSelector::PseudoContent) |
| 693 return tagHistory->selectorText("::-webkit-distributed(" + str.t
oString() + rightSide + ")"); | 701 return tagHistory->selectorText("::-webkit-distributed(" + str.t
oString() + rightSide + ")"); |
| 694 return tagHistory->selectorText(" " + str.toString() + rightSide); | 702 return tagHistory->selectorText(" " + str.toString() + rightSide); |
| 695 case CSSSelector::Child: | 703 case CSSSelector::Child: |
| 696 if (cs->relationIsAffectedByPseudoContent()) | 704 if (cs->relationIsAffectedByPseudoContent() && tagHistory->pseudoTyp
e() != CSSSelector::PseudoContent) |
| 697 return tagHistory->selectorText("::-webkit-distributed(> " + str
.toString() + rightSide + ")"); | 705 return tagHistory->selectorText("::-webkit-distributed(> " + str
.toString() + rightSide + ")"); |
| 698 return tagHistory->selectorText(" > " + str.toString() + rightSide); | 706 return tagHistory->selectorText(" > " + str.toString() + rightSide); |
| 699 case CSSSelector::Shadow: | 707 case CSSSelector::Shadow: |
| 700 return tagHistory->selectorText(" /shadow/ " + str.toString() + righ
tSide); | 708 return tagHistory->selectorText(" /shadow/ " + str.toString() + righ
tSide); |
| 701 case CSSSelector::ShadowDeep: | 709 case CSSSelector::ShadowDeep: |
| 702 return tagHistory->selectorText(" /shadow-deep/ " + str.toString() +
rightSide); | 710 return tagHistory->selectorText(" /shadow-deep/ " + str.toString() +
rightSide); |
| 703 case CSSSelector::DirectAdjacent: | 711 case CSSSelector::DirectAdjacent: |
| 704 return tagHistory->selectorText(" + " + str.toString() + rightSide); | 712 return tagHistory->selectorText(" + " + str.toString() + rightSide); |
| 705 case CSSSelector::IndirectAdjacent: | 713 case CSSSelector::IndirectAdjacent: |
| 706 return tagHistory->selectorText(" ~ " + str.toString() + rightSide); | 714 return tagHistory->selectorText(" ~ " + str.toString() + rightSide); |
| 707 case CSSSelector::SubSelector: | 715 case CSSSelector::SubSelector: |
| 708 ASSERT_NOT_REACHED(); | 716 ASSERT_NOT_REACHED(); |
| 709 case CSSSelector::ShadowPseudo: | 717 case CSSSelector::ShadowPseudo: |
| 710 return tagHistory->selectorText(str.toString() + rightSide); | 718 return tagHistory->selectorText(str.toString() + rightSide); |
| 711 case CSSSelector::ShadowContent: | |
| 712 return tagHistory->selectorText(" /content/ " + str.toString() + rig
htSide); | |
| 713 } | 719 } |
| 714 } | 720 } |
| 715 return str.toString() + rightSide; | 721 return str.toString() + rightSide; |
| 716 } | 722 } |
| 717 | 723 |
| 718 void CSSSelector::setAttribute(const QualifiedName& value) | 724 void CSSSelector::setAttribute(const QualifiedName& value) |
| 719 { | 725 { |
| 720 createRareData(); | 726 createRareData(); |
| 721 m_data.m_rareData->m_attribute = value; | 727 m_data.m_rareData->m_attribute = value; |
| 722 } | 728 } |
| (...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 883 return false; | 889 return false; |
| 884 return (count - m_b) % m_a == 0; | 890 return (count - m_b) % m_a == 0; |
| 885 } else { | 891 } else { |
| 886 if (count > m_b) | 892 if (count > m_b) |
| 887 return false; | 893 return false; |
| 888 return (m_b - count) % (-m_a) == 0; | 894 return (m_b - count) % (-m_a) == 0; |
| 889 } | 895 } |
| 890 } | 896 } |
| 891 | 897 |
| 892 } // namespace WebCore | 898 } // namespace WebCore |
| OLD | NEW |