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 2515 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2526 void Element::cancelFocusAppearanceUpdate() | 2526 void Element::cancelFocusAppearanceUpdate() |
2527 { | 2527 { |
2528 if (document().focusedElement() == this) | 2528 if (document().focusedElement() == this) |
2529 document().cancelFocusAppearanceUpdate(); | 2529 document().cancelFocusAppearanceUpdate(); |
2530 } | 2530 } |
2531 | 2531 |
2532 void Element::normalizeAttributes() | 2532 void Element::normalizeAttributes() |
2533 { | 2533 { |
2534 if (!hasAttributes()) | 2534 if (!hasAttributes()) |
2535 return; | 2535 return; |
2536 // attributeCount() cannot be cached before the loop because the attributes | 2536 WillBeHeapVector<RefPtrWillBeMember<Attr> >* attrNodes = attrNodeList(); |
2537 // list is altered while iterating. | 2537 if (!attrNodes) |
2538 AttributeCollection attributes = this->attributes(); | 2538 return; |
2539 AttributeCollection::const_iterator end = attributes.end(); | 2539 // Copy the Attr Vector because Node::normalize() can fire synchronous JS |
2540 for (AttributeCollection::const_iterator it = attributes.begin(); it < end;
++it) { | 2540 // events (e.g. DOMSubtreeModified) and a JS listener could add / remove |
2541 if (RefPtrWillBeRawPtr<Attr> attr = attrIfExists(it->name())) | 2541 // attributes while we are iterating. |
2542 attr->normalize(); | 2542 WillBeHeapVector<RefPtrWillBeMember<Attr> > attrNodesCopy(*attrNodes); |
2543 } | 2543 for (size_t i = 0; i < attrNodesCopy.size(); ++i) |
| 2544 attrNodesCopy[i]->normalize(); |
2544 } | 2545 } |
2545 | 2546 |
2546 void Element::updatePseudoElement(PseudoId pseudoId, StyleRecalcChange change) | 2547 void Element::updatePseudoElement(PseudoId pseudoId, StyleRecalcChange change) |
2547 { | 2548 { |
2548 ASSERT(!needsStyleRecalc()); | 2549 ASSERT(!needsStyleRecalc()); |
2549 PseudoElement* element = pseudoElement(pseudoId); | 2550 PseudoElement* element = pseudoElement(pseudoId); |
2550 if (element && (change == UpdatePseudoElements || element->shouldCallRecalcS
tyle(change))) { | 2551 if (element && (change == UpdatePseudoElements || element->shouldCallRecalcS
tyle(change))) { |
2551 | 2552 |
2552 // Need to clear the cached style if the PseudoElement wants a recalc so
it | 2553 // Need to clear the cached style if the PseudoElement wants a recalc so
it |
2553 // computes a new style. | 2554 // computes a new style. |
(...skipping 799 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3353 | 3354 |
3354 void Element::trace(Visitor* visitor) | 3355 void Element::trace(Visitor* visitor) |
3355 { | 3356 { |
3356 if (hasRareData()) | 3357 if (hasRareData()) |
3357 visitor->trace(elementRareData()); | 3358 visitor->trace(elementRareData()); |
3358 visitor->trace(m_elementData); | 3359 visitor->trace(m_elementData); |
3359 ContainerNode::trace(visitor); | 3360 ContainerNode::trace(visitor); |
3360 } | 3361 } |
3361 | 3362 |
3362 } // namespace WebCore | 3363 } // namespace WebCore |
OLD | NEW |