| 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 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 |
| OLD | NEW |