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

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

Issue 1958073002: Introduce :-internal-shadow-host-has-appearance pseudo class, and apply it to METER element. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Remove null host check Created 4 years, 7 months 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
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 234 matching lines...) Expand 10 before | Expand all | Expand 10 after
245 case PseudoEnd: 245 case PseudoEnd:
246 case PseudoDoubleButton: 246 case PseudoDoubleButton:
247 case PseudoSingleButton: 247 case PseudoSingleButton:
248 case PseudoNoButton: 248 case PseudoNoButton:
249 case PseudoFirstPage: 249 case PseudoFirstPage:
250 case PseudoLeftPage: 250 case PseudoLeftPage:
251 case PseudoRightPage: 251 case PseudoRightPage:
252 case PseudoInRange: 252 case PseudoInRange:
253 case PseudoOutOfRange: 253 case PseudoOutOfRange:
254 case PseudoWebKitCustomElement: 254 case PseudoWebKitCustomElement:
255 case PseudoBlinkInternalElement:
255 case PseudoCue: 256 case PseudoCue:
256 case PseudoFutureCue: 257 case PseudoFutureCue:
257 case PseudoPastCue: 258 case PseudoPastCue:
258 case PseudoUnresolved: 259 case PseudoUnresolved:
259 case PseudoContent: 260 case PseudoContent:
260 case PseudoHost: 261 case PseudoHost:
261 case PseudoHostContext: 262 case PseudoHostContext:
262 case PseudoShadow: 263 case PseudoShadow:
263 case PseudoFullScreen: 264 case PseudoFullScreen:
264 case PseudoFullScreenAncestor: 265 case PseudoFullScreenAncestor:
265 case PseudoSpatialNavigationFocus: 266 case PseudoSpatialNavigationFocus:
266 case PseudoListBox: 267 case PseudoListBox:
268 case PseudoHostHasAppearance:
267 case PseudoSlotted: 269 case PseudoSlotted:
268 return PseudoIdNone; 270 return PseudoIdNone;
269 } 271 }
270 272
271 ASSERT_NOT_REACHED(); 273 ASSERT_NOT_REACHED();
272 return PseudoIdNone; 274 return PseudoIdNone;
273 } 275 }
274 276
275 // Could be made smaller and faster by replacing pointer with an 277 // Could be made smaller and faster by replacing pointer with an
276 // offset into a string buffer and making the bit fields smaller but 278 // offset into a string buffer and making the bit fields smaller but
277 // that could not be maintained by hand. 279 // that could not be maintained by hand.
278 struct NameToPseudoStruct { 280 struct NameToPseudoStruct {
279 const char* string; 281 const char* string;
280 unsigned type:8; 282 unsigned type:8;
281 }; 283 };
282 284
283 // These tables should be kept sorted. 285 // These tables should be kept sorted.
284 const static NameToPseudoStruct pseudoTypeWithoutArgumentsMap[] = { 286 const static NameToPseudoStruct pseudoTypeWithoutArgumentsMap[] = {
285 {"-internal-list-box", CSSSelector::PseudoListBox}, 287 {"-internal-list-box", CSSSelector::PseudoListBox},
286 {"-internal-media-controls-cast-button", CSSSelector::PseudoWebKitCustomElement} , 288 {"-internal-media-controls-cast-button", CSSSelector::PseudoWebKitCustomElement} ,
287 {"-internal-media-controls-overlay-cast-button", CSSSelector::PseudoWebKitCustom Element}, 289 {"-internal-media-controls-overlay-cast-button", CSSSelector::PseudoWebKitCustom Element},
288 {"-internal-media-controls-text-track-list", CSSSelector::PseudoWebKitCustomElem ent}, 290 {"-internal-media-controls-text-track-list", CSSSelector::PseudoWebKitCustomElem ent},
289 {"-internal-media-controls-text-track-list-item", CSSSelector::PseudoWebKitCusto mElement}, 291 {"-internal-media-controls-text-track-list-item", CSSSelector::PseudoWebKitCusto mElement},
290 {"-internal-media-controls-text-track-list-item-input", CSSSelector::PseudoWebKi tCustomElement}, 292 {"-internal-media-controls-text-track-list-item-input", CSSSelector::PseudoWebKi tCustomElement},
291 {"-internal-media-controls-text-track-list-kind-captions", CSSSelector::PseudoWe bKitCustomElement}, 293 {"-internal-media-controls-text-track-list-kind-captions", CSSSelector::PseudoWe bKitCustomElement},
292 {"-internal-media-controls-text-track-list-kind-subtitles", CSSSelector::PseudoW ebKitCustomElement}, 294 {"-internal-media-controls-text-track-list-kind-subtitles", CSSSelector::PseudoW ebKitCustomElement},
295 {"-internal-shadow-host-has-appearance", CSSSelector::PseudoHostHasAppearance},
293 {"-internal-spatial-navigation-focus", CSSSelector::PseudoSpatialNavigationFocus }, 296 {"-internal-spatial-navigation-focus", CSSSelector::PseudoSpatialNavigationFocus },
294 {"-webkit-any-link", CSSSelector::PseudoAnyLink}, 297 {"-webkit-any-link", CSSSelector::PseudoAnyLink},
295 {"-webkit-autofill", CSSSelector::PseudoAutofill}, 298 {"-webkit-autofill", CSSSelector::PseudoAutofill},
296 {"-webkit-drag", CSSSelector::PseudoDrag}, 299 {"-webkit-drag", CSSSelector::PseudoDrag},
297 {"-webkit-full-page-media", CSSSelector::PseudoFullPageMedia}, 300 {"-webkit-full-page-media", CSSSelector::PseudoFullPageMedia},
298 {"-webkit-full-screen", CSSSelector::PseudoFullScreen}, 301 {"-webkit-full-screen", CSSSelector::PseudoFullScreen},
299 {"-webkit-full-screen-ancestor", CSSSelector::PseudoFullScreenAncestor}, 302 {"-webkit-full-screen-ancestor", CSSSelector::PseudoFullScreenAncestor},
300 {"-webkit-resizer", CSSSelector::PseudoResizer}, 303 {"-webkit-resizer", CSSSelector::PseudoResizer},
301 {"-webkit-scrollbar", CSSSelector::PseudoScrollbar}, 304 {"-webkit-scrollbar", CSSSelector::PseudoScrollbar},
302 {"-webkit-scrollbar-button", CSSSelector::PseudoScrollbarButton}, 305 {"-webkit-scrollbar-button", CSSSelector::PseudoScrollbarButton},
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after
446 #endif 449 #endif
447 450
448 CSSSelector::PseudoType CSSSelector::parsePseudoType(const AtomicString& name, b ool hasArguments) 451 CSSSelector::PseudoType CSSSelector::parsePseudoType(const AtomicString& name, b ool hasArguments)
449 { 452 {
450 PseudoType pseudoType = nameToPseudoType(name, hasArguments); 453 PseudoType pseudoType = nameToPseudoType(name, hasArguments);
451 if (pseudoType != PseudoUnknown) 454 if (pseudoType != PseudoUnknown)
452 return pseudoType; 455 return pseudoType;
453 456
454 if (name.startsWith("-webkit-")) 457 if (name.startsWith("-webkit-"))
455 return PseudoWebKitCustomElement; 458 return PseudoWebKitCustomElement;
459 if (name.startsWith("-internal-"))
460 return PseudoBlinkInternalElement;
456 461
457 return PseudoUnknown; 462 return PseudoUnknown;
458 } 463 }
459 464
460 void CSSSelector::updatePseudoType(const AtomicString& value, bool hasArguments) 465 void CSSSelector::updatePseudoType(const AtomicString& value, bool hasArguments)
461 { 466 {
462 ASSERT(m_match == PseudoClass || m_match == PseudoElement || m_match == Page PseudoClass); 467 ASSERT(m_match == PseudoClass || m_match == PseudoElement || m_match == Page PseudoClass);
463 468
464 setValue(value); 469 setValue(value);
465 setPseudoType(parsePseudoType(value, hasArguments)); 470 setPseudoType(parsePseudoType(value, hasArguments));
(...skipping 13 matching lines...) Expand all
479 case PseudoCue: 484 case PseudoCue:
480 case PseudoResizer: 485 case PseudoResizer:
481 case PseudoScrollbar: 486 case PseudoScrollbar:
482 case PseudoScrollbarCorner: 487 case PseudoScrollbarCorner:
483 case PseudoScrollbarButton: 488 case PseudoScrollbarButton:
484 case PseudoScrollbarThumb: 489 case PseudoScrollbarThumb:
485 case PseudoScrollbarTrack: 490 case PseudoScrollbarTrack:
486 case PseudoScrollbarTrackPiece: 491 case PseudoScrollbarTrackPiece:
487 case PseudoSelection: 492 case PseudoSelection:
488 case PseudoWebKitCustomElement: 493 case PseudoWebKitCustomElement:
494 case PseudoBlinkInternalElement:
489 case PseudoContent: 495 case PseudoContent:
490 case PseudoShadow: 496 case PseudoShadow:
491 case PseudoSlotted: 497 case PseudoSlotted:
492 if (m_match != PseudoElement) 498 if (m_match != PseudoElement)
493 m_pseudoType = PseudoUnknown; 499 m_pseudoType = PseudoUnknown;
494 break; 500 break;
495 case PseudoFirstPage: 501 case PseudoFirstPage:
496 case PseudoLeftPage: 502 case PseudoLeftPage:
497 case PseudoRightPage: 503 case PseudoRightPage:
498 if (m_match != PagePseudoClass) 504 if (m_match != PagePseudoClass)
(...skipping 16 matching lines...) Expand all
515 case PseudoFirstChild: 521 case PseudoFirstChild:
516 case PseudoFirstOfType: 522 case PseudoFirstOfType:
517 case PseudoFocus: 523 case PseudoFocus:
518 case PseudoFullPageMedia: 524 case PseudoFullPageMedia:
519 case PseudoFullScreen: 525 case PseudoFullScreen:
520 case PseudoFullScreenAncestor: 526 case PseudoFullScreenAncestor:
521 case PseudoFutureCue: 527 case PseudoFutureCue:
522 case PseudoHorizontal: 528 case PseudoHorizontal:
523 case PseudoHost: 529 case PseudoHost:
524 case PseudoHostContext: 530 case PseudoHostContext:
531 case PseudoHostHasAppearance:
525 case PseudoHover: 532 case PseudoHover:
526 case PseudoInRange: 533 case PseudoInRange:
527 case PseudoIncrement: 534 case PseudoIncrement:
528 case PseudoIndeterminate: 535 case PseudoIndeterminate:
529 case PseudoInvalid: 536 case PseudoInvalid:
530 case PseudoLang: 537 case PseudoLang:
531 case PseudoLastChild: 538 case PseudoLastChild:
532 case PseudoLastOfType: 539 case PseudoLastOfType:
533 case PseudoLink: 540 case PseudoLink:
534 case PseudoListBox: 541 case PseudoListBox:
(...skipping 262 matching lines...) Expand 10 before | Expand all | Expand 10 after
797 case CSSSelector::PseudoFirstChild: 804 case CSSSelector::PseudoFirstChild:
798 case CSSSelector::PseudoLastChild: 805 case CSSSelector::PseudoLastChild:
799 case CSSSelector::PseudoFirstOfType: 806 case CSSSelector::PseudoFirstOfType:
800 case CSSSelector::PseudoLastOfType: 807 case CSSSelector::PseudoLastOfType:
801 case CSSSelector::PseudoOnlyOfType: 808 case CSSSelector::PseudoOnlyOfType:
802 case CSSSelector::PseudoHost: 809 case CSSSelector::PseudoHost:
803 case CSSSelector::PseudoHostContext: 810 case CSSSelector::PseudoHostContext:
804 case CSSSelector::PseudoNot: 811 case CSSSelector::PseudoNot:
805 case CSSSelector::PseudoSpatialNavigationFocus: 812 case CSSSelector::PseudoSpatialNavigationFocus:
806 case CSSSelector::PseudoListBox: 813 case CSSSelector::PseudoListBox:
814 case CSSSelector::PseudoHostHasAppearance:
807 return true; 815 return true;
808 default: 816 default:
809 return false; 817 return false;
810 } 818 }
811 } 819 }
812 820
813 bool CSSSelector::isCompound() const 821 bool CSSSelector::isCompound() const
814 { 822 {
815 if (!validateSubSelector(this)) 823 if (!validateSubSelector(this))
816 return false; 824 return false;
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
919 if (count < nthBValue()) 927 if (count < nthBValue())
920 return false; 928 return false;
921 return (count - nthBValue()) % nthAValue() == 0; 929 return (count - nthBValue()) % nthAValue() == 0;
922 } 930 }
923 if (count > nthBValue()) 931 if (count > nthBValue())
924 return false; 932 return false;
925 return (nthBValue() - count) % (-nthAValue()) == 0; 933 return (nthBValue() - count) % (-nthAValue()) == 0;
926 } 934 }
927 935
928 } // namespace blink 936 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/css/CSSSelector.h ('k') | third_party/WebKit/Source/core/css/RuleFeature.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698