| 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 1230 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1241 | 1241 |
| 1242 m_tagName.setPrefix(prefix.isEmpty() ? AtomicString() : prefix); | 1242 m_tagName.setPrefix(prefix.isEmpty() ? AtomicString() : prefix); |
| 1243 } | 1243 } |
| 1244 | 1244 |
| 1245 const AtomicString& Element::locateNamespacePrefix(const AtomicString& namespace
ToLocate) const | 1245 const AtomicString& Element::locateNamespacePrefix(const AtomicString& namespace
ToLocate) const |
| 1246 { | 1246 { |
| 1247 if (!prefix().isNull() && namespaceURI() == namespaceToLocate) | 1247 if (!prefix().isNull() && namespaceURI() == namespaceToLocate) |
| 1248 return prefix(); | 1248 return prefix(); |
| 1249 | 1249 |
| 1250 if (hasAttributes()) { | 1250 if (hasAttributes()) { |
| 1251 for (unsigned i = 0; i < attributeCount(); i++) { | 1251 unsigned attributeCount = this->attributeCount(); |
| 1252 for (unsigned i = 0; i < attributeCount; ++i) { |
| 1252 const Attribute* attr = attributeItem(i); | 1253 const Attribute* attr = attributeItem(i); |
| 1253 | 1254 |
| 1254 if (attr->prefix() == xmlnsAtom && attr->value() == namespaceToLocat
e) | 1255 if (attr->prefix() == xmlnsAtom && attr->value() == namespaceToLocat
e) |
| 1255 return attr->localName(); | 1256 return attr->localName(); |
| 1256 } | 1257 } |
| 1257 } | 1258 } |
| 1258 | 1259 |
| 1259 if (Element* parent = parentElement()) | 1260 if (Element* parent = parentElement()) |
| 1260 return parent->locateNamespacePrefix(namespaceToLocate); | 1261 return parent->locateNamespacePrefix(namespaceToLocate); |
| 1261 | 1262 |
| (...skipping 1422 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2684 if (hasRareData()) | 2685 if (hasRareData()) |
| 2685 elementRareData()->setNeedsFocusAppearanceUpdateSoonAfterAttach(false); | 2686 elementRareData()->setNeedsFocusAppearanceUpdateSoonAfterAttach(false); |
| 2686 if (document().focusedElement() == this) | 2687 if (document().focusedElement() == this) |
| 2687 document().cancelFocusAppearanceUpdate(); | 2688 document().cancelFocusAppearanceUpdate(); |
| 2688 } | 2689 } |
| 2689 | 2690 |
| 2690 void Element::normalizeAttributes() | 2691 void Element::normalizeAttributes() |
| 2691 { | 2692 { |
| 2692 if (!hasAttributes()) | 2693 if (!hasAttributes()) |
| 2693 return; | 2694 return; |
| 2695 // attributeCount() cannot be cached before the loop because the attributes |
| 2696 // list is altered while iterating. |
| 2694 for (unsigned i = 0; i < attributeCount(); ++i) { | 2697 for (unsigned i = 0; i < attributeCount(); ++i) { |
| 2695 if (RefPtr<Attr> attr = attrIfExists(attributeItem(i)->name())) | 2698 if (RefPtr<Attr> attr = attrIfExists(attributeItem(i)->name())) |
| 2696 attr->normalize(); | 2699 attr->normalize(); |
| 2697 } | 2700 } |
| 2698 } | 2701 } |
| 2699 | 2702 |
| 2700 void Element::updatePseudoElement(PseudoId pseudoId, StyleRecalcChange change) | 2703 void Element::updatePseudoElement(PseudoId pseudoId, StyleRecalcChange change) |
| 2701 { | 2704 { |
| 2702 ASSERT(!needsStyleRecalc()); | 2705 ASSERT(!needsStyleRecalc()); |
| 2703 PseudoElement* element = pseudoElement(pseudoId); | 2706 PseudoElement* element = pseudoElement(pseudoId); |
| (...skipping 468 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3172 } | 3175 } |
| 3173 } | 3176 } |
| 3174 ASSERT_NOT_REACHED(); | 3177 ASSERT_NOT_REACHED(); |
| 3175 } | 3178 } |
| 3176 | 3179 |
| 3177 void Element::detachAllAttrNodesFromElement() | 3180 void Element::detachAllAttrNodesFromElement() |
| 3178 { | 3181 { |
| 3179 AttrNodeList* attrNodeList = attrNodeListForElement(this); | 3182 AttrNodeList* attrNodeList = attrNodeListForElement(this); |
| 3180 ASSERT(attrNodeList); | 3183 ASSERT(attrNodeList); |
| 3181 | 3184 |
| 3182 for (unsigned i = 0; i < attributeCount(); ++i) { | 3185 unsigned attributeCount = this->attributeCount(); |
| 3186 for (unsigned i = 0; i < attributeCount; ++i) { |
| 3183 const Attribute* attribute = attributeItem(i); | 3187 const Attribute* attribute = attributeItem(i); |
| 3184 if (RefPtr<Attr> attrNode = findAttrNodeInList(*attrNodeList, attribute-
>name())) | 3188 if (RefPtr<Attr> attrNode = findAttrNodeInList(*attrNodeList, attribute-
>name())) |
| 3185 attrNode->detachFromElementWithValue(attribute->value()); | 3189 attrNode->detachFromElementWithValue(attribute->value()); |
| 3186 } | 3190 } |
| 3187 | 3191 |
| 3188 removeAttrNodeListForElement(this); | 3192 removeAttrNodeListForElement(this); |
| 3189 } | 3193 } |
| 3190 | 3194 |
| 3191 void Element::willRecalcStyle(StyleRecalcChange) | 3195 void Element::willRecalcStyle(StyleRecalcChange) |
| 3192 { | 3196 { |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3239 if (other.m_elementData->isUnique() | 3243 if (other.m_elementData->isUnique() |
| 3240 && !ownerDocumentsHaveDifferentCaseSensitivity | 3244 && !ownerDocumentsHaveDifferentCaseSensitivity |
| 3241 && !other.m_elementData->presentationAttributeStyle()) | 3245 && !other.m_elementData->presentationAttributeStyle()) |
| 3242 const_cast<Element&>(other).m_elementData = static_cast<const UniqueElem
entData*>(other.m_elementData.get())->makeShareableCopy(); | 3246 const_cast<Element&>(other).m_elementData = static_cast<const UniqueElem
entData*>(other.m_elementData.get())->makeShareableCopy(); |
| 3243 | 3247 |
| 3244 if (!other.m_elementData->isUnique() && !ownerDocumentsHaveDifferentCaseSens
itivity) | 3248 if (!other.m_elementData->isUnique() && !ownerDocumentsHaveDifferentCaseSens
itivity) |
| 3245 m_elementData = other.m_elementData; | 3249 m_elementData = other.m_elementData; |
| 3246 else | 3250 else |
| 3247 m_elementData = other.m_elementData->makeUniqueCopy(); | 3251 m_elementData = other.m_elementData->makeUniqueCopy(); |
| 3248 | 3252 |
| 3249 for (unsigned i = 0; i < m_elementData->length(); ++i) { | 3253 unsigned length = m_elementData->length(); |
| 3254 for (unsigned i = 0; i < length; ++i) { |
| 3250 const Attribute* attribute = const_cast<const ElementData*>(m_elementDat
a.get())->attributeItem(i); | 3255 const Attribute* attribute = const_cast<const ElementData*>(m_elementDat
a.get())->attributeItem(i); |
| 3251 attributeChangedFromParserOrByCloning(attribute->name(), attribute->valu
e(), ModifiedByCloning); | 3256 attributeChangedFromParserOrByCloning(attribute->name(), attribute->valu
e(), ModifiedByCloning); |
| 3252 } | 3257 } |
| 3253 } | 3258 } |
| 3254 | 3259 |
| 3255 void Element::cloneDataFromElement(const Element& other) | 3260 void Element::cloneDataFromElement(const Element& other) |
| 3256 { | 3261 { |
| 3257 cloneAttributesFromElement(other); | 3262 cloneAttributesFromElement(other); |
| 3258 copyNonAttributePropertiesFromElement(other); | 3263 copyNonAttributePropertiesFromElement(other); |
| 3259 } | 3264 } |
| (...skipping 244 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3504 // Before doing so, we need to resolve issues in HTMLSelectElement::recalcLi
stItems | 3509 // Before doing so, we need to resolve issues in HTMLSelectElement::recalcLi
stItems |
| 3505 // and RenderMenuList::setText. See also https://bugs.webkit.org/show_bug.cg
i?id=88405 | 3510 // and RenderMenuList::setText. See also https://bugs.webkit.org/show_bug.cg
i?id=88405 |
| 3506 if (hasTagName(optionTag) || hasTagName(optgroupTag)) | 3511 if (hasTagName(optionTag) || hasTagName(optgroupTag)) |
| 3507 return false; | 3512 return false; |
| 3508 if (FullscreenElementStack::isActiveFullScreenElement(this)) | 3513 if (FullscreenElementStack::isActiveFullScreenElement(this)) |
| 3509 return false; | 3514 return false; |
| 3510 return true; | 3515 return true; |
| 3511 } | 3516 } |
| 3512 | 3517 |
| 3513 } // namespace WebCore | 3518 } // namespace WebCore |
| OLD | NEW |