| 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 410 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 421 // As we encounter a descendant type of combinator, the features only need to be
checked | 421 // As we encounter a descendant type of combinator, the features only need to be
checked |
| 422 // against descendants in the same subtree only. features.adjacent is set to fal
se, and | 422 // against descendants in the same subtree only. features.adjacent is set to fal
se, and |
| 423 // we start adding features to the descendant invalidation set. | 423 // we start adding features to the descendant invalidation set. |
| 424 | 424 |
| 425 void RuleFeatureSet::addFeaturesToInvalidationSet(InvalidationSet& invalidationS
et, const InvalidationSetFeatures& features) | 425 void RuleFeatureSet::addFeaturesToInvalidationSet(InvalidationSet& invalidationS
et, const InvalidationSetFeatures& features) |
| 426 { | 426 { |
| 427 if (features.treeBoundaryCrossing) | 427 if (features.treeBoundaryCrossing) |
| 428 invalidationSet.setTreeBoundaryCrossing(); | 428 invalidationSet.setTreeBoundaryCrossing(); |
| 429 if (features.insertionPointCrossing) | 429 if (features.insertionPointCrossing) |
| 430 invalidationSet.setInsertionPointCrossing(); | 430 invalidationSet.setInsertionPointCrossing(); |
| 431 if (features.forceSubtree) { | 431 if (features.forceSubtree) |
| 432 invalidationSet.setWholeSubtreeInvalid(); | 432 invalidationSet.setWholeSubtreeInvalid(); |
| 433 if (features.contentPseudoCrossing || features.forceSubtree) |
| 433 return; | 434 return; |
| 434 } | 435 |
| 435 if (!features.id.isEmpty()) | 436 if (!features.id.isEmpty()) |
| 436 invalidationSet.addId(features.id); | 437 invalidationSet.addId(features.id); |
| 437 if (!features.tagName.isEmpty()) | 438 if (!features.tagName.isEmpty()) |
| 438 invalidationSet.addTagName(features.tagName); | 439 invalidationSet.addTagName(features.tagName); |
| 439 for (const auto& className : features.classes) | 440 for (const auto& className : features.classes) |
| 440 invalidationSet.addClass(className); | 441 invalidationSet.addClass(className); |
| 441 for (const auto& attribute : features.attributes) | 442 for (const auto& attribute : features.attributes) |
| 442 invalidationSet.addAttribute(attribute); | 443 invalidationSet.addAttribute(attribute); |
| 443 if (features.customPseudoElement) | 444 if (features.customPseudoElement) |
| 444 invalidationSet.setCustomPseudoInvalid(); | 445 invalidationSet.setCustomPseudoInvalid(); |
| (...skipping 20 matching lines...) Expand all Loading... |
| 465 if (siblingFeatures == &descendantFeatures) | 466 if (siblingFeatures == &descendantFeatures) |
| 466 siblingInvalidationSet->descendants().setInvalidatesSelf(); | 467 siblingInvalidationSet->descendants().setInvalidatesSelf(); |
| 467 else | 468 else |
| 468 addFeaturesToInvalidationSet(siblingInvalidationSet->descend
ants(), descendantFeatures); | 469 addFeaturesToInvalidationSet(siblingInvalidationSet->descend
ants(), descendantFeatures); |
| 469 } else { | 470 } else { |
| 470 addFeaturesToInvalidationSet(*invalidationSet, descendantFeature
s); | 471 addFeaturesToInvalidationSet(*invalidationSet, descendantFeature
s); |
| 471 } | 472 } |
| 472 } else { | 473 } else { |
| 473 if (current->isHostPseudoClass()) | 474 if (current->isHostPseudoClass()) |
| 474 descendantFeatures.treeBoundaryCrossing = true; | 475 descendantFeatures.treeBoundaryCrossing = true; |
| 475 if (current->isInsertionPointCrossing()) | 476 if (current->isInsertionPointCrossing()) { |
| 476 descendantFeatures.insertionPointCrossing = true; | 477 descendantFeatures.insertionPointCrossing = true; |
| 478 if (current->pseudoType() == CSSSelector::PseudoContent) |
| 479 descendantFeatures.contentPseudoCrossing = true; |
| 480 } |
| 477 if (const CSSSelectorList* selectorList = current->selectorList()) { | 481 if (const CSSSelectorList* selectorList = current->selectorList()) { |
| 478 ASSERT(supportsInvalidationWithSelectorList(current->pseudoType(
))); | 482 ASSERT(supportsInvalidationWithSelectorList(current->pseudoType(
))); |
| 479 for (const CSSSelector* subSelector = selectorList->first(); sub
Selector; subSelector = CSSSelectorList::next(*subSelector)) | 483 for (const CSSSelector* subSelector = selectorList->first(); sub
Selector; subSelector = CSSSelectorList::next(*subSelector)) |
| 480 addFeaturesToInvalidationSets(subSelector, siblingFeatures,
descendantFeatures); | 484 addFeaturesToInvalidationSets(subSelector, siblingFeatures,
descendantFeatures); |
| 481 } | 485 } |
| 482 } | 486 } |
| 483 | 487 |
| 484 if (current->relation() == CSSSelector::SubSelector) | 488 if (current->relation() == CSSSelector::SubSelector) |
| 485 continue; | 489 continue; |
| 486 | 490 |
| (...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 670 | 674 |
| 671 DEFINE_TRACE(RuleFeatureSet) | 675 DEFINE_TRACE(RuleFeatureSet) |
| 672 { | 676 { |
| 673 #if ENABLE(OILPAN) | 677 #if ENABLE(OILPAN) |
| 674 visitor->trace(siblingRules); | 678 visitor->trace(siblingRules); |
| 675 visitor->trace(uncommonAttributeRules); | 679 visitor->trace(uncommonAttributeRules); |
| 676 #endif | 680 #endif |
| 677 } | 681 } |
| 678 | 682 |
| 679 } // namespace blink | 683 } // namespace blink |
| OLD | NEW |