Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2)

Side by Side Diff: Source/core/css/CSSSelector.cpp

Issue 82863002: Remove ::part. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 7 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « Source/core/css/CSSSelector.h ('k') | Source/core/css/CSSTokenizer-in.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 231 matching lines...) Expand 10 before | Expand all | Expand 10 after
242 case PseudoRightPage: 242 case PseudoRightPage:
243 case PseudoInRange: 243 case PseudoInRange:
244 case PseudoOutOfRange: 244 case PseudoOutOfRange:
245 case PseudoUserAgentCustomElement: 245 case PseudoUserAgentCustomElement:
246 case PseudoWebKitCustomElement: 246 case PseudoWebKitCustomElement:
247 case PseudoCue: 247 case PseudoCue:
248 case PseudoFutureCue: 248 case PseudoFutureCue:
249 case PseudoPastCue: 249 case PseudoPastCue:
250 case PseudoSeamlessDocument: 250 case PseudoSeamlessDocument:
251 case PseudoDistributed: 251 case PseudoDistributed:
252 case PseudoPart:
253 case PseudoUnresolved: 252 case PseudoUnresolved:
254 case PseudoContent: 253 case PseudoContent:
255 case PseudoHost: 254 case PseudoHost:
256 return NOPSEUDO; 255 return NOPSEUDO;
257 case PseudoNotParsed: 256 case PseudoNotParsed:
258 ASSERT_NOT_REACHED(); 257 ASSERT_NOT_REACHED();
259 return NOPSEUDO; 258 return NOPSEUDO;
260 } 259 }
261 260
262 ASSERT_NOT_REACHED(); 261 ASSERT_NOT_REACHED();
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
334 DEFINE_STATIC_LOCAL(AtomicString, fullScreenAncestor, ("-webkit-full-screen- ancestor", AtomicString::ConstructFromLiteral)); 333 DEFINE_STATIC_LOCAL(AtomicString, fullScreenAncestor, ("-webkit-full-screen- ancestor", AtomicString::ConstructFromLiteral));
335 DEFINE_STATIC_LOCAL(AtomicString, cue, ("cue(", AtomicString::ConstructFromL iteral)); 334 DEFINE_STATIC_LOCAL(AtomicString, cue, ("cue(", AtomicString::ConstructFromL iteral));
336 DEFINE_STATIC_LOCAL(AtomicString, cueWithoutParen, ("cue", AtomicString::Con structFromLiteral)); 335 DEFINE_STATIC_LOCAL(AtomicString, cueWithoutParen, ("cue", AtomicString::Con structFromLiteral));
337 DEFINE_STATIC_LOCAL(AtomicString, futureCue, ("future", AtomicString::Constr uctFromLiteral)); 336 DEFINE_STATIC_LOCAL(AtomicString, futureCue, ("future", AtomicString::Constr uctFromLiteral));
338 DEFINE_STATIC_LOCAL(AtomicString, pastCue, ("past", AtomicString::ConstructF romLiteral)); 337 DEFINE_STATIC_LOCAL(AtomicString, pastCue, ("past", AtomicString::ConstructF romLiteral));
339 DEFINE_STATIC_LOCAL(AtomicString, seamlessDocument, ("-webkit-seamless-docum ent", AtomicString::ConstructFromLiteral)); 338 DEFINE_STATIC_LOCAL(AtomicString, seamlessDocument, ("-webkit-seamless-docum ent", AtomicString::ConstructFromLiteral));
340 DEFINE_STATIC_LOCAL(AtomicString, distributed, ("-webkit-distributed(", Atom icString::ConstructFromLiteral)); 339 DEFINE_STATIC_LOCAL(AtomicString, distributed, ("-webkit-distributed(", Atom icString::ConstructFromLiteral));
341 DEFINE_STATIC_LOCAL(AtomicString, inRange, ("in-range", AtomicString::Constr uctFromLiteral)); 340 DEFINE_STATIC_LOCAL(AtomicString, inRange, ("in-range", AtomicString::Constr uctFromLiteral));
342 DEFINE_STATIC_LOCAL(AtomicString, outOfRange, ("out-of-range", AtomicString: :ConstructFromLiteral)); 341 DEFINE_STATIC_LOCAL(AtomicString, outOfRange, ("out-of-range", AtomicString: :ConstructFromLiteral));
343 DEFINE_STATIC_LOCAL(AtomicString, scope, ("scope", AtomicString::ConstructFr omLiteral)); 342 DEFINE_STATIC_LOCAL(AtomicString, scope, ("scope", AtomicString::ConstructFr omLiteral));
344 DEFINE_STATIC_LOCAL(AtomicString, part, ("part(", AtomicString::ConstructFro mLiteral));
345 DEFINE_STATIC_LOCAL(AtomicString, unresolved, ("unresolved", AtomicString::C onstructFromLiteral)); 343 DEFINE_STATIC_LOCAL(AtomicString, unresolved, ("unresolved", AtomicString::C onstructFromLiteral));
346 DEFINE_STATIC_LOCAL(AtomicString, content, ("content", AtomicString::Constru ctFromLiteral)); 344 DEFINE_STATIC_LOCAL(AtomicString, content, ("content", AtomicString::Constru ctFromLiteral));
347 DEFINE_STATIC_LOCAL(AtomicString, host, ("host", AtomicString::ConstructFrom Literal)); 345 DEFINE_STATIC_LOCAL(AtomicString, host, ("host", AtomicString::ConstructFrom Literal));
348 DEFINE_STATIC_LOCAL(AtomicString, hostWithParams, ("host(", AtomicString::Co nstructFromLiteral)); 346 DEFINE_STATIC_LOCAL(AtomicString, hostWithParams, ("host(", AtomicString::Co nstructFromLiteral));
349 347
350 static HashMap<StringImpl*, CSSSelector::PseudoType>* nameToPseudoType = 0; 348 static HashMap<StringImpl*, CSSSelector::PseudoType>* nameToPseudoType = 0;
351 if (!nameToPseudoType) { 349 if (!nameToPseudoType) {
352 nameToPseudoType = new HashMap<StringImpl*, CSSSelector::PseudoType>; 350 nameToPseudoType = new HashMap<StringImpl*, CSSSelector::PseudoType>;
353 nameToPseudoType->set(active.impl(), CSSSelector::PseudoActive); 351 nameToPseudoType->set(active.impl(), CSSSelector::PseudoActive);
354 nameToPseudoType->set(after.impl(), CSSSelector::PseudoAfter); 352 nameToPseudoType->set(after.impl(), CSSSelector::PseudoAfter);
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
419 nameToPseudoType->set(fullScreenAncestor.impl(), CSSSelector::PseudoFull ScreenAncestor); 417 nameToPseudoType->set(fullScreenAncestor.impl(), CSSSelector::PseudoFull ScreenAncestor);
420 nameToPseudoType->set(cue.impl(), CSSSelector::PseudoCue); 418 nameToPseudoType->set(cue.impl(), CSSSelector::PseudoCue);
421 nameToPseudoType->set(cueWithoutParen.impl(), CSSSelector::PseudoWebKitC ustomElement); 419 nameToPseudoType->set(cueWithoutParen.impl(), CSSSelector::PseudoWebKitC ustomElement);
422 nameToPseudoType->set(futureCue.impl(), CSSSelector::PseudoFutureCue); 420 nameToPseudoType->set(futureCue.impl(), CSSSelector::PseudoFutureCue);
423 nameToPseudoType->set(pastCue.impl(), CSSSelector::PseudoPastCue); 421 nameToPseudoType->set(pastCue.impl(), CSSSelector::PseudoPastCue);
424 nameToPseudoType->set(seamlessDocument.impl(), CSSSelector::PseudoSeamle ssDocument); 422 nameToPseudoType->set(seamlessDocument.impl(), CSSSelector::PseudoSeamle ssDocument);
425 nameToPseudoType->set(distributed.impl(), CSSSelector::PseudoDistributed ); 423 nameToPseudoType->set(distributed.impl(), CSSSelector::PseudoDistributed );
426 nameToPseudoType->set(inRange.impl(), CSSSelector::PseudoInRange); 424 nameToPseudoType->set(inRange.impl(), CSSSelector::PseudoInRange);
427 nameToPseudoType->set(outOfRange.impl(), CSSSelector::PseudoOutOfRange); 425 nameToPseudoType->set(outOfRange.impl(), CSSSelector::PseudoOutOfRange);
428 if (RuntimeEnabledFeatures::shadowDOMEnabled()) { 426 if (RuntimeEnabledFeatures::shadowDOMEnabled()) {
429 nameToPseudoType->set(part.impl(), CSSSelector::PseudoPart);
430 nameToPseudoType->set(host.impl(), CSSSelector::PseudoHost); 427 nameToPseudoType->set(host.impl(), CSSSelector::PseudoHost);
431 nameToPseudoType->set(hostWithParams.impl(), CSSSelector::PseudoHost ); 428 nameToPseudoType->set(hostWithParams.impl(), CSSSelector::PseudoHost );
432 nameToPseudoType->set(content.impl(), CSSSelector::PseudoContent); 429 nameToPseudoType->set(content.impl(), CSSSelector::PseudoContent);
433 } 430 }
434 if (RuntimeEnabledFeatures::customElementsEnabled() || RuntimeEnabledFea tures::embedderCustomElementsEnabled()) 431 if (RuntimeEnabledFeatures::customElementsEnabled() || RuntimeEnabledFea tures::embedderCustomElementsEnabled())
435 nameToPseudoType->set(unresolved.impl(), CSSSelector::PseudoUnresolv ed); 432 nameToPseudoType->set(unresolved.impl(), CSSSelector::PseudoUnresolv ed);
436 } 433 }
437 return nameToPseudoType; 434 return nameToPseudoType;
438 } 435 }
439 436
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
478 case PseudoResizer: 475 case PseudoResizer:
479 case PseudoScrollbar: 476 case PseudoScrollbar:
480 case PseudoScrollbarCorner: 477 case PseudoScrollbarCorner:
481 case PseudoScrollbarButton: 478 case PseudoScrollbarButton:
482 case PseudoScrollbarThumb: 479 case PseudoScrollbarThumb:
483 case PseudoScrollbarTrack: 480 case PseudoScrollbarTrack:
484 case PseudoScrollbarTrackPiece: 481 case PseudoScrollbarTrackPiece:
485 case PseudoSelection: 482 case PseudoSelection:
486 case PseudoUserAgentCustomElement: 483 case PseudoUserAgentCustomElement:
487 case PseudoWebKitCustomElement: 484 case PseudoWebKitCustomElement:
488 case PseudoPart:
489 case PseudoContent: 485 case PseudoContent:
490 element = true; 486 element = true;
491 break; 487 break;
492 case PseudoUnknown: 488 case PseudoUnknown:
493 case PseudoEmpty: 489 case PseudoEmpty:
494 case PseudoFirstChild: 490 case PseudoFirstChild:
495 case PseudoFirstOfType: 491 case PseudoFirstOfType:
496 case PseudoLastChild: 492 case PseudoLastChild:
497 case PseudoLastOfType: 493 case PseudoLastOfType:
498 case PseudoOnlyChild: 494 case PseudoOnlyChild:
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after
661 } 657 }
662 break; 658 break;
663 } 659 }
664 default: 660 default:
665 break; 661 break;
666 } 662 }
667 } else if (cs->m_match == CSSSelector::PseudoElement) { 663 } else if (cs->m_match == CSSSelector::PseudoElement) {
668 str.appendLiteral("::"); 664 str.appendLiteral("::");
669 str.append(cs->value()); 665 str.append(cs->value());
670 666
671 switch (cs->pseudoType()) { 667 if (cs->pseudoType() == PseudoContent) {
672 case PseudoPart:
673 str.append(cs->argument());
674 str.append(')');
675 break;
676 case PseudoContent:
677 if (cs->relation() == CSSSelector::SubSelector && cs->tagHistory ()) 668 if (cs->relation() == CSSSelector::SubSelector && cs->tagHistory ())
678 return cs->tagHistory()->selectorText() + str.toString() + r ightSide; 669 return cs->tagHistory()->selectorText() + str.toString() + r ightSide;
679 break;
680 default:
681 break;
682 } 670 }
683 } else if (cs->isAttributeSelector()) { 671 } else if (cs->isAttributeSelector()) {
684 str.append('['); 672 str.append('[');
685 const AtomicString& prefix = cs->attribute().prefix(); 673 const AtomicString& prefix = cs->attribute().prefix();
686 if (!prefix.isNull()) { 674 if (!prefix.isNull()) {
687 str.append(prefix); 675 str.append(prefix);
688 str.append("|"); 676 str.append("|");
689 } 677 }
690 str.append(cs->attribute().localName()); 678 str.append(cs->attribute().localName());
691 switch (cs->m_match) { 679 switch (cs->m_match) {
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
762 createRareData(); 750 createRareData();
763 m_data.m_rareData->m_argument = value; 751 m_data.m_rareData->m_argument = value;
764 } 752 }
765 753
766 void CSSSelector::setSelectorList(PassOwnPtr<CSSSelectorList> selectorList) 754 void CSSSelector::setSelectorList(PassOwnPtr<CSSSelectorList> selectorList)
767 { 755 {
768 createRareData(); 756 createRareData();
769 m_data.m_rareData->m_selectorList = selectorList; 757 m_data.m_rareData->m_selectorList = selectorList;
770 } 758 }
771 759
772 void CSSSelector::setMatchUserAgentOnly()
773 {
774 createRareData();
775 m_data.m_rareData->m_matchUserAgentOnly = true;
776 }
777
778 static bool validateSubSelector(const CSSSelector* selector) 760 static bool validateSubSelector(const CSSSelector* selector)
779 { 761 {
780 switch (selector->m_match) { 762 switch (selector->m_match) {
781 case CSSSelector::Tag: 763 case CSSSelector::Tag:
782 case CSSSelector::Id: 764 case CSSSelector::Id:
783 case CSSSelector::Class: 765 case CSSSelector::Class:
784 case CSSSelector::Exact: 766 case CSSSelector::Exact:
785 case CSSSelector::Set: 767 case CSSSelector::Set:
786 case CSSSelector::List: 768 case CSSSelector::List:
787 case CSSSelector::Hyphen: 769 case CSSSelector::Hyphen:
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
857 ASSERT(m_hasRareData); 839 ASSERT(m_hasRareData);
858 return m_data.m_rareData->matchNth(count); 840 return m_data.m_rareData->matchNth(count);
859 } 841 }
860 842
861 CSSSelector::RareData::RareData(PassRefPtr<StringImpl> value) 843 CSSSelector::RareData::RareData(PassRefPtr<StringImpl> value)
862 : m_value(value.leakRef()) 844 : m_value(value.leakRef())
863 , m_a(0) 845 , m_a(0)
864 , m_b(0) 846 , m_b(0)
865 , m_attribute(anyQName()) 847 , m_attribute(anyQName())
866 , m_argument(nullAtom) 848 , m_argument(nullAtom)
867 , m_matchUserAgentOnly(0)
868 { 849 {
869 } 850 }
870 851
871 CSSSelector::RareData::~RareData() 852 CSSSelector::RareData::~RareData()
872 { 853 {
873 if (m_value) 854 if (m_value)
874 m_value->deref(); 855 m_value->deref();
875 } 856 }
876 857
877 // a helper function for parsing nth-arguments 858 // a helper function for parsing nth-arguments
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
927 return false; 908 return false;
928 return (count - m_b) % m_a == 0; 909 return (count - m_b) % m_a == 0;
929 } else { 910 } else {
930 if (count > m_b) 911 if (count > m_b)
931 return false; 912 return false;
932 return (m_b - count) % (-m_a) == 0; 913 return (m_b - count) % (-m_a) == 0;
933 } 914 }
934 } 915 }
935 916
936 } // namespace WebCore 917 } // namespace WebCore
OLDNEW
« no previous file with comments | « Source/core/css/CSSSelector.h ('k') | Source/core/css/CSSTokenizer-in.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698