| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) | 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) |
| 3 * (C) 2004-2005 Allan Sandfeld Jensen (kde@carewolf.com) | 3 * (C) 2004-2005 Allan Sandfeld Jensen (kde@carewolf.com) |
| 4 * Copyright (C) 2006, 2007 Nicholas Shanks (webkit@nickshanks.com) | 4 * Copyright (C) 2006, 2007 Nicholas Shanks (webkit@nickshanks.com) |
| 5 * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc. All r
ights reserved. | 5 * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc. All r
ights reserved. |
| 6 * Copyright (C) 2007 Alexey Proskuryakov <ap@webkit.org> | 6 * Copyright (C) 2007 Alexey Proskuryakov <ap@webkit.org> |
| 7 * Copyright (C) 2007, 2008 Eric Seidel <eric@webkit.org> | 7 * Copyright (C) 2007, 2008 Eric Seidel <eric@webkit.org> |
| 8 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.t
orchmobile.com/) | 8 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.t
orchmobile.com/) |
| 9 * Copyright (c) 2011, Code Aurora Forum. All rights reserved. | 9 * Copyright (c) 2011, Code Aurora Forum. All rights reserved. |
| 10 * Copyright (C) Research In Motion Limited 2011. All rights reserved. | 10 * Copyright (C) Research In Motion Limited 2011. All rights reserved. |
| (...skipping 462 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 473 return *addResult.storedValue->value; | 473 return *addResult.storedValue->value; |
| 474 } | 474 } |
| 475 | 475 |
| 476 void RuleFeatureSet::collectFeaturesFromSelector(const CSSSelector& selector, Ru
leFeatureSet::FeatureMetadata& metadata) | 476 void RuleFeatureSet::collectFeaturesFromSelector(const CSSSelector& selector, Ru
leFeatureSet::FeatureMetadata& metadata) |
| 477 { | 477 { |
| 478 unsigned maxDirectAdjacentSelectors = 0; | 478 unsigned maxDirectAdjacentSelectors = 0; |
| 479 | 479 |
| 480 for (const CSSSelector* current = &selector; current; current = current->tag
History()) { | 480 for (const CSSSelector* current = &selector; current; current = current->tag
History()) { |
| 481 if (current->pseudoType() == CSSSelector::PseudoFirstLine) | 481 if (current->pseudoType() == CSSSelector::PseudoFirstLine) |
| 482 metadata.usesFirstLineRules = true; | 482 metadata.usesFirstLineRules = true; |
| 483 if (current->pseudoType() == CSSSelector::PseudoWindowInactive) |
| 484 metadata.usesWindowInactiveSelector = true; |
| 483 if (current->isDirectAdjacentSelector()) { | 485 if (current->isDirectAdjacentSelector()) { |
| 484 maxDirectAdjacentSelectors++; | 486 maxDirectAdjacentSelectors++; |
| 485 } else if (maxDirectAdjacentSelectors) { | 487 } else if (maxDirectAdjacentSelectors) { |
| 486 if (maxDirectAdjacentSelectors > metadata.maxDirectAdjacentSelectors
) | 488 if (maxDirectAdjacentSelectors > metadata.maxDirectAdjacentSelectors
) |
| 487 metadata.maxDirectAdjacentSelectors = maxDirectAdjacentSelectors
; | 489 metadata.maxDirectAdjacentSelectors = maxDirectAdjacentSelectors
; |
| 488 maxDirectAdjacentSelectors = 0; | 490 maxDirectAdjacentSelectors = 0; |
| 489 } | 491 } |
| 490 if (current->isSiblingSelector()) | 492 if (current->isSiblingSelector()) |
| 491 metadata.foundSiblingSelector = true; | 493 metadata.foundSiblingSelector = true; |
| 492 | 494 |
| 493 const CSSSelectorList* selectorList = current->selectorList(); | 495 const CSSSelectorList* selectorList = current->selectorList(); |
| 494 if (!selectorList) | 496 if (!selectorList) |
| 495 continue; | 497 continue; |
| 496 | 498 |
| 497 for (const CSSSelector* selector = selectorList->first(); selector; sele
ctor = CSSSelectorList::next(*selector)) | 499 for (const CSSSelector* selector = selectorList->first(); selector; sele
ctor = CSSSelectorList::next(*selector)) |
| 498 collectFeaturesFromSelector(*selector, metadata); | 500 collectFeaturesFromSelector(*selector, metadata); |
| 499 } | 501 } |
| 500 | 502 |
| 501 ASSERT(!maxDirectAdjacentSelectors); | 503 ASSERT(!maxDirectAdjacentSelectors); |
| 502 } | 504 } |
| 503 | 505 |
| 504 void RuleFeatureSet::FeatureMetadata::add(const FeatureMetadata& other) | 506 void RuleFeatureSet::FeatureMetadata::add(const FeatureMetadata& other) |
| 505 { | 507 { |
| 506 usesFirstLineRules = usesFirstLineRules || other.usesFirstLineRules; | 508 usesFirstLineRules = usesFirstLineRules || other.usesFirstLineRules; |
| 509 usesWindowInactiveSelector = usesWindowInactiveSelector || other.usesWindowI
nactiveSelector; |
| 507 maxDirectAdjacentSelectors = std::max(maxDirectAdjacentSelectors, other.maxD
irectAdjacentSelectors); | 510 maxDirectAdjacentSelectors = std::max(maxDirectAdjacentSelectors, other.maxD
irectAdjacentSelectors); |
| 508 } | 511 } |
| 509 | 512 |
| 510 void RuleFeatureSet::FeatureMetadata::clear() | 513 void RuleFeatureSet::FeatureMetadata::clear() |
| 511 { | 514 { |
| 512 usesFirstLineRules = false; | 515 usesFirstLineRules = false; |
| 516 usesWindowInactiveSelector = false; |
| 513 foundSiblingSelector = false; | 517 foundSiblingSelector = false; |
| 514 maxDirectAdjacentSelectors = 0; | 518 maxDirectAdjacentSelectors = 0; |
| 515 } | 519 } |
| 516 | 520 |
| 517 void RuleFeatureSet::add(const RuleFeatureSet& other) | 521 void RuleFeatureSet::add(const RuleFeatureSet& other) |
| 518 { | 522 { |
| 519 for (const auto& invalidationSet : other.m_classInvalidationSets) | 523 for (const auto& invalidationSet : other.m_classInvalidationSets) |
| 520 ensureClassInvalidationSet(invalidationSet.key).combine(*invalidationSet
.value); | 524 ensureClassInvalidationSet(invalidationSet.key).combine(*invalidationSet
.value); |
| 521 for (const auto& invalidationSet : other.m_attributeInvalidationSets) | 525 for (const auto& invalidationSet : other.m_attributeInvalidationSets) |
| 522 ensureAttributeInvalidationSet(invalidationSet.key).combine(*invalidatio
nSet.value); | 526 ensureAttributeInvalidationSet(invalidationSet.key).combine(*invalidatio
nSet.value); |
| (...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 640 visitor->trace(uncommonAttributeRules); | 644 visitor->trace(uncommonAttributeRules); |
| 641 visitor->trace(m_classInvalidationSets); | 645 visitor->trace(m_classInvalidationSets); |
| 642 visitor->trace(m_attributeInvalidationSets); | 646 visitor->trace(m_attributeInvalidationSets); |
| 643 visitor->trace(m_idInvalidationSets); | 647 visitor->trace(m_idInvalidationSets); |
| 644 visitor->trace(m_pseudoInvalidationSets); | 648 visitor->trace(m_pseudoInvalidationSets); |
| 645 visitor->trace(m_styleInvalidator); | 649 visitor->trace(m_styleInvalidator); |
| 646 #endif | 650 #endif |
| 647 } | 651 } |
| 648 | 652 |
| 649 } // namespace blink | 653 } // namespace blink |
| OLD | NEW |