Chromium Code Reviews| 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 1066 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1077 appendAttributeInternal(name, newValue, inSynchronizationOfLazyAttribute ); | 1077 appendAttributeInternal(name, newValue, inSynchronizationOfLazyAttribute ); |
| 1078 return; | 1078 return; |
| 1079 } | 1079 } |
| 1080 | 1080 |
| 1081 const Attribute& existingAttribute = elementData()->attributes().at(index); | 1081 const Attribute& existingAttribute = elementData()->attributes().at(index); |
| 1082 AtomicString existingAttributeValue = existingAttribute.value(); | 1082 AtomicString existingAttributeValue = existingAttribute.value(); |
| 1083 QualifiedName existingAttributeName = existingAttribute.name(); | 1083 QualifiedName existingAttributeName = existingAttribute.name(); |
| 1084 | 1084 |
| 1085 if (!inSynchronizationOfLazyAttribute) | 1085 if (!inSynchronizationOfLazyAttribute) |
| 1086 willModifyAttribute(existingAttributeName, existingAttributeValue, newVa lue); | 1086 willModifyAttribute(existingAttributeName, existingAttributeValue, newVa lue); |
| 1087 | 1087 ensureUniqueElementData().attributes().at(index).setValue(newValue); |
|
davve
2015/05/28 14:32:14
We may want to keep the newValue != existingAttrib
philipj_slow
2015/05/28 15:28:36
Done.
| |
| 1088 if (newValue != existingAttributeValue) { | |
| 1089 // If there is an Attr node hooked to this attribute, the Attr::setValue () call below | |
| 1090 // will write into the ElementData. | |
| 1091 // FIXME: Refactor this so it makes some sense. | |
| 1092 if (RefPtrWillBeRawPtr<Attr> attrNode = inSynchronizationOfLazyAttribute ? nullptr : attrIfExists(existingAttributeName)) | |
| 1093 attrNode->setValue(newValue); | |
| 1094 else | |
| 1095 ensureUniqueElementData().attributes().at(index).setValue(newValue); | |
| 1096 } | |
| 1097 | |
| 1098 if (!inSynchronizationOfLazyAttribute) | 1088 if (!inSynchronizationOfLazyAttribute) |
| 1099 didModifyAttribute(existingAttributeName, newValue); | 1089 didModifyAttribute(existingAttributeName, newValue); |
| 1100 } | 1090 } |
| 1101 | 1091 |
| 1102 static inline AtomicString makeIdForStyleResolution(const AtomicString& value, b ool inQuirksMode) | 1092 static inline AtomicString makeIdForStyleResolution(const AtomicString& value, b ool inQuirksMode) |
| 1103 { | 1093 { |
| 1104 if (inQuirksMode) | 1094 if (inQuirksMode) |
| 1105 return value.lower(); | 1095 return value.lower(); |
| 1106 return value; | 1096 return value; |
| 1107 } | 1097 } |
| (...skipping 1562 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2670 { | 2660 { |
| 2671 return document().getCachedLocale(computeInheritedLanguage()); | 2661 return document().getCachedLocale(computeInheritedLanguage()); |
| 2672 } | 2662 } |
| 2673 | 2663 |
| 2674 void Element::cancelFocusAppearanceUpdate() | 2664 void Element::cancelFocusAppearanceUpdate() |
| 2675 { | 2665 { |
| 2676 if (document().focusedElement() == this) | 2666 if (document().focusedElement() == this) |
| 2677 document().cancelFocusAppearanceUpdate(); | 2667 document().cancelFocusAppearanceUpdate(); |
| 2678 } | 2668 } |
| 2679 | 2669 |
| 2680 void Element::normalizeAttributes() | |
| 2681 { | |
| 2682 if (!hasAttributes()) | |
| 2683 return; | |
| 2684 AttrNodeList* attrNodes = attrNodeList(); | |
| 2685 if (!attrNodes) | |
| 2686 return; | |
| 2687 // Copy the Attr Vector because Node::normalize() can fire synchronous JS | |
| 2688 // events (e.g. DOMSubtreeModified) and a JS listener could add / remove | |
| 2689 // attributes while we are iterating. | |
| 2690 AttrNodeList attrNodesCopy(*attrNodes); | |
| 2691 for (size_t i = 0; i < attrNodesCopy.size(); ++i) | |
| 2692 attrNodesCopy[i]->normalize(); | |
| 2693 } | |
| 2694 | |
| 2695 void Element::updatePseudoElement(PseudoId pseudoId, StyleRecalcChange change) | 2670 void Element::updatePseudoElement(PseudoId pseudoId, StyleRecalcChange change) |
| 2696 { | 2671 { |
| 2697 ASSERT(!needsStyleRecalc()); | 2672 ASSERT(!needsStyleRecalc()); |
| 2698 PseudoElement* element = pseudoElement(pseudoId); | 2673 PseudoElement* element = pseudoElement(pseudoId); |
| 2699 | 2674 |
| 2700 if (element && (change == UpdatePseudoElements || element->shouldCallRecalcS tyle(change))) { | 2675 if (element && (change == UpdatePseudoElements || element->shouldCallRecalcS tyle(change))) { |
| 2701 if (pseudoId == FIRST_LETTER && updateFirstLetter(element)) | 2676 if (pseudoId == FIRST_LETTER && updateFirstLetter(element)) |
| 2702 return; | 2677 return; |
| 2703 | 2678 |
| 2704 // Need to clear the cached style if the PseudoElement wants a recalc so it | 2679 // Need to clear the cached style if the PseudoElement wants a recalc so it |
| (...skipping 765 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 3470 { | 3445 { |
| 3471 #if ENABLE(OILPAN) | 3446 #if ENABLE(OILPAN) |
| 3472 if (hasRareData()) | 3447 if (hasRareData()) |
| 3473 visitor->trace(elementRareData()); | 3448 visitor->trace(elementRareData()); |
| 3474 visitor->trace(m_elementData); | 3449 visitor->trace(m_elementData); |
| 3475 #endif | 3450 #endif |
| 3476 ContainerNode::trace(visitor); | 3451 ContainerNode::trace(visitor); |
| 3477 } | 3452 } |
| 3478 | 3453 |
| 3479 } // namespace blink | 3454 } // namespace blink |
| OLD | NEW |