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 1141 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1152 elementData()->m_presentationAttributeStyleIsDirty = true; | 1152 elementData()->m_presentationAttributeStyleIsDirty = true; |
1153 setNeedsStyleRecalc(LocalStyleChange, StyleChangeReasonForTracing::fromA
ttribute(name)); | 1153 setNeedsStyleRecalc(LocalStyleChange, StyleChangeReasonForTracing::fromA
ttribute(name)); |
1154 } | 1154 } |
1155 | 1155 |
1156 if (isIdAttributeName(name)) { | 1156 if (isIdAttributeName(name)) { |
1157 AtomicString oldId = elementData()->idForStyleResolution(); | 1157 AtomicString oldId = elementData()->idForStyleResolution(); |
1158 AtomicString newId = makeIdForStyleResolution(newValue, document().inQui
rksMode()); | 1158 AtomicString newId = makeIdForStyleResolution(newValue, document().inQui
rksMode()); |
1159 if (newId != oldId) { | 1159 if (newId != oldId) { |
1160 elementData()->setIdForStyleResolution(newId); | 1160 elementData()->setIdForStyleResolution(newId); |
1161 if (testShouldInvalidateStyle) | 1161 if (testShouldInvalidateStyle) |
1162 styleResolver->ensureUpdatedRuleFeatureSet().scheduleStyleInvali
dationForIdChange(oldId, newId, *this); | 1162 document().styleEngine().idChangedForElement(oldId, newId, *this
); |
1163 } | 1163 } |
1164 } else if (name == classAttr) { | 1164 } else if (name == classAttr) { |
1165 classAttributeChanged(newValue); | 1165 classAttributeChanged(newValue); |
1166 } else if (name == HTMLNames::nameAttr) { | 1166 } else if (name == HTMLNames::nameAttr) { |
1167 setHasName(!newValue.isNull()); | 1167 setHasName(!newValue.isNull()); |
1168 } | 1168 } |
1169 | 1169 |
1170 invalidateNodeListCachesInAncestors(&name, this); | 1170 invalidateNodeListCachesInAncestors(&name, this); |
1171 | 1171 |
1172 // If there is currently no StyleResolver, we can't be sure that this attrib
ute change won't affect style. | 1172 // If there is currently no StyleResolver, we can't be sure that this attrib
ute change won't affect style. |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1226 StyleResolver* styleResolver = document().styleResolver(); | 1226 StyleResolver* styleResolver = document().styleResolver(); |
1227 bool testShouldInvalidateStyle = inActiveDocument() && styleResolver && styl
eChangeType() < SubtreeStyleChange; | 1227 bool testShouldInvalidateStyle = inActiveDocument() && styleResolver && styl
eChangeType() < SubtreeStyleChange; |
1228 | 1228 |
1229 ASSERT(elementData()); | 1229 ASSERT(elementData()); |
1230 if (classStringHasClassName(newClassString)) { | 1230 if (classStringHasClassName(newClassString)) { |
1231 const bool shouldFoldCase = document().inQuirksMode(); | 1231 const bool shouldFoldCase = document().inQuirksMode(); |
1232 const SpaceSplitString oldClasses = elementData()->classNames(); | 1232 const SpaceSplitString oldClasses = elementData()->classNames(); |
1233 elementData()->setClass(newClassString, shouldFoldCase); | 1233 elementData()->setClass(newClassString, shouldFoldCase); |
1234 const SpaceSplitString& newClasses = elementData()->classNames(); | 1234 const SpaceSplitString& newClasses = elementData()->classNames(); |
1235 if (testShouldInvalidateStyle) | 1235 if (testShouldInvalidateStyle) |
1236 styleResolver->ensureUpdatedRuleFeatureSet().scheduleStyleInvalidati
onForClassChange(oldClasses, newClasses, *this); | 1236 document().styleEngine().classChangedForElement(oldClasses, newClass
es, *this); |
1237 } else { | 1237 } else { |
1238 const SpaceSplitString& oldClasses = elementData()->classNames(); | 1238 const SpaceSplitString& oldClasses = elementData()->classNames(); |
1239 if (testShouldInvalidateStyle) | 1239 if (testShouldInvalidateStyle) |
1240 styleResolver->ensureUpdatedRuleFeatureSet().scheduleStyleInvalidati
onForClassChange(oldClasses, *this); | 1240 document().styleEngine().classChangedForElement(oldClasses, *this); |
1241 elementData()->clearClass(); | 1241 elementData()->clearClass(); |
1242 } | 1242 } |
1243 | 1243 |
1244 if (hasRareData()) | 1244 if (hasRareData()) |
1245 elementRareData()->clearClassListValueForQuirksMode(); | 1245 elementRareData()->clearClassListValueForQuirksMode(); |
1246 } | 1246 } |
1247 | 1247 |
1248 bool Element::shouldInvalidateDistributionWhenAttributeChanged(ElementShadow* el
ementShadow, const QualifiedName& name, const AtomicString& newValue) | 1248 bool Element::shouldInvalidateDistributionWhenAttributeChanged(ElementShadow* el
ementShadow, const QualifiedName& name, const AtomicString& newValue) |
1249 { | 1249 { |
1250 ASSERT(elementShadow); | 1250 ASSERT(elementShadow); |
(...skipping 538 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1789 ElementShadow& Element::ensureShadow() | 1789 ElementShadow& Element::ensureShadow() |
1790 { | 1790 { |
1791 return ensureElementRareData().ensureShadow(); | 1791 return ensureElementRareData().ensureShadow(); |
1792 } | 1792 } |
1793 | 1793 |
1794 void Element::pseudoStateChanged(CSSSelector::PseudoType pseudo) | 1794 void Element::pseudoStateChanged(CSSSelector::PseudoType pseudo) |
1795 { | 1795 { |
1796 StyleResolver* styleResolver = document().styleResolver(); | 1796 StyleResolver* styleResolver = document().styleResolver(); |
1797 | 1797 |
1798 if (inActiveDocument() && styleResolver && styleChangeType() < SubtreeStyleC
hange) | 1798 if (inActiveDocument() && styleResolver && styleChangeType() < SubtreeStyleC
hange) |
1799 styleResolver->ensureUpdatedRuleFeatureSet().scheduleStyleInvalidationFo
rPseudoChange(pseudo, *this); | 1799 document().styleEngine().pseudoStateChangedForElement(pseudo, *this); |
1800 | 1800 |
1801 if (ElementShadow* elementShadow = shadowWhereNodeCanBeDistributed(*this)) | 1801 if (ElementShadow* elementShadow = shadowWhereNodeCanBeDistributed(*this)) |
1802 elementShadow->distributedNodePseudoStateChanged(pseudo); | 1802 elementShadow->distributedNodePseudoStateChanged(pseudo); |
1803 } | 1803 } |
1804 | 1804 |
1805 void Element::setAnimationStyleChange(bool animationStyleChange) | 1805 void Element::setAnimationStyleChange(bool animationStyleChange) |
1806 { | 1806 { |
1807 if (animationStyleChange && document().inStyleRecalc()) | 1807 if (animationStyleChange && document().inStyleRecalc()) |
1808 return; | 1808 return; |
1809 if (!hasRareData()) | 1809 if (!hasRareData()) |
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1932 if (!style && !styleAffectedByEmpty()) | 1932 if (!style && !styleAffectedByEmpty()) |
1933 return; | 1933 return; |
1934 if (styleChangeType() >= SubtreeStyleChange) | 1934 if (styleChangeType() >= SubtreeStyleChange) |
1935 return; | 1935 return; |
1936 if (!inActiveDocument()) | 1936 if (!inActiveDocument()) |
1937 return; | 1937 return; |
1938 if (!document().styleResolver()) | 1938 if (!document().styleResolver()) |
1939 return; | 1939 return; |
1940 | 1940 |
1941 if (!style || (styleAffectedByEmpty() && (!style->emptyState() || hasChildre
n()))) | 1941 if (!style || (styleAffectedByEmpty() && (!style->emptyState() || hasChildre
n()))) |
1942 document().styleResolver()->ensureUpdatedRuleFeatureSet().scheduleStyleI
nvalidationForPseudoChange(CSSSelector::PseudoEmpty, *this); | 1942 document().styleEngine().pseudoStateChangedForElement(CSSSelector::Pseud
oEmpty, *this); |
1943 } | 1943 } |
1944 | 1944 |
1945 void Element::childrenChanged(const ChildrenChange& change) | 1945 void Element::childrenChanged(const ChildrenChange& change) |
1946 { | 1946 { |
1947 ContainerNode::childrenChanged(change); | 1947 ContainerNode::childrenChanged(change); |
1948 | 1948 |
1949 checkForEmptyStyleChange(); | 1949 checkForEmptyStyleChange(); |
1950 if (!change.byParser && change.isChildElementChange()) | 1950 if (!change.byParser && change.isChildElementChange()) |
1951 checkForSiblingStyleChanges(change.type == ElementRemoved ? SiblingEleme
ntRemoved : SiblingElementInserted, change.siblingBeforeChange, change.siblingAf
terChange); | 1951 checkForSiblingStyleChanges(change.type == ElementRemoved ? SiblingEleme
ntRemoved : SiblingElementInserted, change.siblingBeforeChange, change.siblingAf
terChange); |
1952 | 1952 |
(...skipping 1092 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3045 void Element::willModifyAttribute(const QualifiedName& name, const AtomicString&
oldValue, const AtomicString& newValue) | 3045 void Element::willModifyAttribute(const QualifiedName& name, const AtomicString&
oldValue, const AtomicString& newValue) |
3046 { | 3046 { |
3047 if (isIdAttributeName(name)) { | 3047 if (isIdAttributeName(name)) { |
3048 updateId(oldValue, newValue); | 3048 updateId(oldValue, newValue); |
3049 } else if (name == HTMLNames::nameAttr) { | 3049 } else if (name == HTMLNames::nameAttr) { |
3050 updateName(oldValue, newValue); | 3050 updateName(oldValue, newValue); |
3051 } | 3051 } |
3052 | 3052 |
3053 if (oldValue != newValue) { | 3053 if (oldValue != newValue) { |
3054 if (inActiveDocument() && document().styleResolver() && styleChangeType(
) < SubtreeStyleChange) | 3054 if (inActiveDocument() && document().styleResolver() && styleChangeType(
) < SubtreeStyleChange) |
3055 document().ensureStyleResolver().ensureUpdatedRuleFeatureSet().sched
uleStyleInvalidationForAttributeChange(name, *this); | 3055 document().styleEngine().attributeChangedForElement(name, *this); |
3056 | 3056 |
3057 if (isUpgradedCustomElement()) | 3057 if (isUpgradedCustomElement()) |
3058 CustomElement::attributeDidChange(this, name.localName(), oldValue,
newValue); | 3058 CustomElement::attributeDidChange(this, name.localName(), oldValue,
newValue); |
3059 } | 3059 } |
3060 | 3060 |
3061 if (OwnPtrWillBeRawPtr<MutationObserverInterestGroup> recipients = MutationO
bserverInterestGroup::createForAttributesMutation(*this, name)) | 3061 if (OwnPtrWillBeRawPtr<MutationObserverInterestGroup> recipients = MutationO
bserverInterestGroup::createForAttributesMutation(*this, name)) |
3062 recipients->enqueueMutationRecord(MutationRecord::createAttributes(this,
name, oldValue)); | 3062 recipients->enqueueMutationRecord(MutationRecord::createAttributes(this,
name, oldValue)); |
3063 | 3063 |
3064 attributeWillChange(name, oldValue, newValue); | 3064 attributeWillChange(name, oldValue, newValue); |
3065 | 3065 |
(...skipping 446 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3512 { | 3512 { |
3513 #if ENABLE(OILPAN) | 3513 #if ENABLE(OILPAN) |
3514 if (hasRareData()) | 3514 if (hasRareData()) |
3515 visitor->trace(elementRareData()); | 3515 visitor->trace(elementRareData()); |
3516 visitor->trace(m_elementData); | 3516 visitor->trace(m_elementData); |
3517 #endif | 3517 #endif |
3518 ContainerNode::trace(visitor); | 3518 ContainerNode::trace(visitor); |
3519 } | 3519 } |
3520 | 3520 |
3521 } // namespace blink | 3521 } // namespace blink |
OLD | NEW |