| Index: Source/core/dom/ElementData.cpp
|
| diff --git a/Source/core/dom/ElementData.cpp b/Source/core/dom/ElementData.cpp
|
| index dbd47f0fdacdd821daa0551b70e00f9a4a1fa55f..4d68d1e5a755bedb0f5ad55c4ac0c54695bef503 100644
|
| --- a/Source/core/dom/ElementData.cpp
|
| +++ b/Source/core/dom/ElementData.cpp
|
| @@ -100,27 +100,27 @@ bool ElementData::isEquivalent(const ElementData* other) const
|
| if (!other)
|
| return isEmpty();
|
|
|
| - unsigned length = this->length();
|
| - if (length != other->length())
|
| + AttributeIteratorAccessor attributes = attributesIterator();
|
| + if (attributes.size() != other->length())
|
| return false;
|
|
|
| - for (unsigned i = 0; i < length; ++i) {
|
| - const Attribute& attribute = attributeItem(i);
|
| - const Attribute* otherAttr = other->getAttributeItem(attribute.name());
|
| - if (!otherAttr || attribute.value() != otherAttr->value())
|
| + AttributeConstIterator end = attributes.end();
|
| + for (AttributeConstIterator it = attributes.begin(); it != end; ++it) {
|
| + const Attribute* otherAttr = other->getAttributeItem(it->name());
|
| + if (!otherAttr || it->value() != otherAttr->value())
|
| return false;
|
| }
|
| -
|
| return true;
|
| }
|
|
|
| size_t ElementData::getAttrIndex(Attr* attr) const
|
| {
|
| // This relies on the fact that Attr's QualifiedName == the Attribute's name.
|
| - unsigned length = this->length();
|
| - for (unsigned i = 0; i < length; ++i) {
|
| - if (attributeItem(i).name() == attr->qualifiedName())
|
| - return i;
|
| + AttributeIteratorAccessor attributes = attributesIterator();
|
| + AttributeConstIterator end = attributes.end();
|
| + for (AttributeConstIterator it = attributes.begin(); it != end; ++it) {
|
| + if (it->name() == attr->qualifiedName())
|
| + return it.index();
|
| }
|
| return kNotFound;
|
| }
|
| @@ -128,20 +128,20 @@ size_t ElementData::getAttrIndex(Attr* attr) const
|
| size_t ElementData::getAttributeItemIndexSlowCase(const AtomicString& name, bool shouldIgnoreAttributeCase) const
|
| {
|
| // Continue to checking case-insensitively and/or full namespaced names if necessary:
|
| - unsigned length = this->length();
|
| - for (unsigned i = 0; i < length; ++i) {
|
| - const Attribute& attribute = attributeItem(i);
|
| + AttributeIteratorAccessor attributes = attributesIterator();
|
| + AttributeConstIterator end = attributes.end();
|
| + for (AttributeConstIterator it = attributes.begin(); it != end; ++it) {
|
| // FIXME: Why check the prefix? Namespace is all that should matter
|
| // and all HTML/SVG attributes have a null namespace!
|
| - if (!attribute.name().hasPrefix()) {
|
| - if (shouldIgnoreAttributeCase && equalIgnoringCase(name, attribute.localName()))
|
| - return i;
|
| + if (!it->name().hasPrefix()) {
|
| + if (shouldIgnoreAttributeCase && equalIgnoringCase(name, it->localName()))
|
| + return it.index();
|
| } else {
|
| // FIXME: Would be faster to do this comparison without calling toString, which
|
| // generates a temporary string by concatenation. But this branch is only reached
|
| // if the attribute name has a prefix, which is rare in HTML.
|
| - if (equalPossiblyIgnoringCase(name, attribute.name().toString(), shouldIgnoreAttributeCase))
|
| - return i;
|
| + if (equalPossiblyIgnoringCase(name, it->name().toString(), shouldIgnoreAttributeCase))
|
| + return it.index();
|
| }
|
| }
|
| return kNotFound;
|
| @@ -217,7 +217,7 @@ PassRefPtr<ShareableElementData> UniqueElementData::makeShareableCopy() const
|
|
|
| Attribute* UniqueElementData::getAttributeItem(const QualifiedName& name)
|
| {
|
| - unsigned length = this->length();
|
| + unsigned length = m_attributeVector.size();
|
| for (unsigned i = 0; i < length; ++i) {
|
| if (m_attributeVector.at(i).name().matches(name))
|
| return &m_attributeVector.at(i);
|
|
|