OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) | 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) |
3 * (C) 1999 Antti Koivisto (koivisto@kde.org) | 3 * (C) 1999 Antti Koivisto (koivisto@kde.org) |
4 * (C) 2001 Peter Kelly (pmk@post.com) | 4 * (C) 2001 Peter Kelly (pmk@post.com) |
5 * (C) 2001 Dirk Mueller (mueller@kde.org) | 5 * (C) 2001 Dirk Mueller (mueller@kde.org) |
6 * (C) 2007 David Smith (catfish.man@gmail.com) | 6 * (C) 2007 David Smith (catfish.man@gmail.com) |
7 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2012, 2013 Apple Inc.
All rights reserved. | 7 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2012, 2013 Apple Inc.
All rights reserved. |
8 * (C) 2007 Eric Seidel (eric@webkit.org) | 8 * (C) 2007 Eric Seidel (eric@webkit.org) |
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 974 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
985 } else if (isStyledElement() && isPresentationAttribute(name)) { | 985 } else if (isStyledElement() && isPresentationAttribute(name)) { |
986 elementData()->m_presentationAttributeStyleIsDirty = true; | 986 elementData()->m_presentationAttributeStyleIsDirty = true; |
987 setNeedsStyleRecalc(LocalStyleChange); | 987 setNeedsStyleRecalc(LocalStyleChange); |
988 } | 988 } |
989 | 989 |
990 if (isIdAttributeName(name)) { | 990 if (isIdAttributeName(name)) { |
991 AtomicString oldId = elementData()->idForStyleResolution(); | 991 AtomicString oldId = elementData()->idForStyleResolution(); |
992 AtomicString newId = makeIdForStyleResolution(newValue, document().inQui
rksMode()); | 992 AtomicString newId = makeIdForStyleResolution(newValue, document().inQui
rksMode()); |
993 if (newId != oldId) { | 993 if (newId != oldId) { |
994 elementData()->setIdForStyleResolution(newId); | 994 elementData()->setIdForStyleResolution(newId); |
995 shouldInvalidateStyle = testShouldInvalidateStyle && checkNeedsStyle
InvalidationForIdChange(oldId, newId, styleResolver->ruleFeatureSet()); | 995 shouldInvalidateStyle = testShouldInvalidateStyle && checkNeedsStyle
InvalidationForIdChange(oldId, newId, styleResolver->ensureRuleFeatureSet()); |
996 } | 996 } |
997 } else if (name == classAttr) { | 997 } else if (name == classAttr) { |
998 classAttributeChanged(newValue); | 998 classAttributeChanged(newValue); |
999 } else if (name == HTMLNames::nameAttr) { | 999 } else if (name == HTMLNames::nameAttr) { |
1000 setHasName(!newValue.isNull()); | 1000 setHasName(!newValue.isNull()); |
1001 } else if (name == HTMLNames::pseudoAttr) { | 1001 } else if (name == HTMLNames::pseudoAttr) { |
1002 shouldInvalidateStyle |= testShouldInvalidateStyle && isInShadowTree(); | 1002 shouldInvalidateStyle |= testShouldInvalidateStyle && isInShadowTree(); |
1003 } | 1003 } |
1004 | 1004 |
1005 invalidateNodeListCachesInAncestors(&name, this); | 1005 invalidateNodeListCachesInAncestors(&name, this); |
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1100 { | 1100 { |
1101 StyleResolver* styleResolver = document().styleResolverIfExists(); | 1101 StyleResolver* styleResolver = document().styleResolverIfExists(); |
1102 bool testShouldInvalidateStyle = inActiveDocument() && styleResolver && styl
eChangeType() < SubtreeStyleChange; | 1102 bool testShouldInvalidateStyle = inActiveDocument() && styleResolver && styl
eChangeType() < SubtreeStyleChange; |
1103 bool shouldInvalidateStyle = false; | 1103 bool shouldInvalidateStyle = false; |
1104 | 1104 |
1105 if (classStringHasClassName(newClassString)) { | 1105 if (classStringHasClassName(newClassString)) { |
1106 const bool shouldFoldCase = document().inQuirksMode(); | 1106 const bool shouldFoldCase = document().inQuirksMode(); |
1107 const SpaceSplitString oldClasses = elementData()->classNames(); | 1107 const SpaceSplitString oldClasses = elementData()->classNames(); |
1108 elementData()->setClass(newClassString, shouldFoldCase); | 1108 elementData()->setClass(newClassString, shouldFoldCase); |
1109 const SpaceSplitString& newClasses = elementData()->classNames(); | 1109 const SpaceSplitString& newClasses = elementData()->classNames(); |
1110 shouldInvalidateStyle = testShouldInvalidateStyle && checkSelectorForCla
ssChange(oldClasses, newClasses, styleResolver->ruleFeatureSet()); | 1110 shouldInvalidateStyle = testShouldInvalidateStyle && checkSelectorForCla
ssChange(oldClasses, newClasses, styleResolver->ensureRuleFeatureSet()); |
1111 } else { | 1111 } else { |
1112 const SpaceSplitString& oldClasses = elementData()->classNames(); | 1112 const SpaceSplitString& oldClasses = elementData()->classNames(); |
1113 shouldInvalidateStyle = testShouldInvalidateStyle && checkSelectorForCla
ssChange(oldClasses, styleResolver->ruleFeatureSet()); | 1113 shouldInvalidateStyle = testShouldInvalidateStyle && checkSelectorForCla
ssChange(oldClasses, styleResolver->ensureRuleFeatureSet()); |
1114 elementData()->clearClass(); | 1114 elementData()->clearClass(); |
1115 } | 1115 } |
1116 | 1116 |
1117 if (hasRareData()) | 1117 if (hasRareData()) |
1118 elementRareData()->clearClassListValueForQuirksMode(); | 1118 elementRareData()->clearClassListValueForQuirksMode(); |
1119 | 1119 |
1120 if (shouldInvalidateStyle) | 1120 if (shouldInvalidateStyle) |
1121 setNeedsStyleRecalc(); | 1121 setNeedsStyleRecalc(); |
1122 } | 1122 } |
1123 | 1123 |
(...skipping 1865 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2989 return; | 2989 return; |
2990 | 2990 |
2991 if (!oldForAttributeValue.isEmpty()) | 2991 if (!oldForAttributeValue.isEmpty()) |
2992 scope.removeLabel(oldForAttributeValue, toHTMLLabelElement(this)); | 2992 scope.removeLabel(oldForAttributeValue, toHTMLLabelElement(this)); |
2993 if (!newForAttributeValue.isEmpty()) | 2993 if (!newForAttributeValue.isEmpty()) |
2994 scope.addLabel(newForAttributeValue, toHTMLLabelElement(this)); | 2994 scope.addLabel(newForAttributeValue, toHTMLLabelElement(this)); |
2995 } | 2995 } |
2996 | 2996 |
2997 static bool hasSelectorForAttribute(Document* document, const AtomicString& loca
lName) | 2997 static bool hasSelectorForAttribute(Document* document, const AtomicString& loca
lName) |
2998 { | 2998 { |
2999 return document->styleResolver() && document->styleResolver()->ruleFeatureSe
t().hasSelectorForAttribute(localName); | 2999 return document->styleResolver() && document->styleResolver()->ensureRuleFea
tureSet().hasSelectorForAttribute(localName); |
3000 } | 3000 } |
3001 | 3001 |
3002 void Element::willModifyAttribute(const QualifiedName& name, const AtomicString&
oldValue, const AtomicString& newValue) | 3002 void Element::willModifyAttribute(const QualifiedName& name, const AtomicString&
oldValue, const AtomicString& newValue) |
3003 { | 3003 { |
3004 if (isIdAttributeName(name)) | 3004 if (isIdAttributeName(name)) |
3005 updateId(oldValue, newValue); | 3005 updateId(oldValue, newValue); |
3006 else if (name == HTMLNames::nameAttr) | 3006 else if (name == HTMLNames::nameAttr) |
3007 updateName(oldValue, newValue); | 3007 updateName(oldValue, newValue); |
3008 else if (name == HTMLNames::forAttr && hasTagName(labelTag)) { | 3008 else if (name == HTMLNames::forAttr && hasTagName(labelTag)) { |
3009 TreeScope& scope = treeScope(); | 3009 TreeScope& scope = treeScope(); |
(...skipping 507 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3517 // Before doing so, we need to resolve issues in HTMLSelectElement::recalcLi
stItems | 3517 // Before doing so, we need to resolve issues in HTMLSelectElement::recalcLi
stItems |
3518 // and RenderMenuList::setText. See also https://bugs.webkit.org/show_bug.cg
i?id=88405 | 3518 // and RenderMenuList::setText. See also https://bugs.webkit.org/show_bug.cg
i?id=88405 |
3519 if (hasTagName(optionTag) || hasTagName(optgroupTag)) | 3519 if (hasTagName(optionTag) || hasTagName(optgroupTag)) |
3520 return false; | 3520 return false; |
3521 if (FullscreenElementStack::isActiveFullScreenElement(this)) | 3521 if (FullscreenElementStack::isActiveFullScreenElement(this)) |
3522 return false; | 3522 return false; |
3523 return true; | 3523 return true; |
3524 } | 3524 } |
3525 | 3525 |
3526 } // namespace WebCore | 3526 } // namespace WebCore |
OLD | NEW |