Index: Source/core/dom/Attr.cpp |
diff --git a/Source/core/dom/Attr.cpp b/Source/core/dom/Attr.cpp |
index d25ebeae29043ade7c71270ffa21eb1bffd7d6e8..dbcf00520ff9ba177568ecc55602ef52960f5769 100644 |
--- a/Source/core/dom/Attr.cpp |
+++ b/Source/core/dom/Attr.cpp |
@@ -178,8 +178,12 @@ void Attr::childrenChanged(bool, Node*, Node*, int) |
const AtomicString& Attr::value() const |
{ |
- if (m_element) |
- return m_element->getAttribute(qualifiedName()); |
+ if (m_element) { |
+ const AtomicString& value = m_element->getAttribute(qualifiedName()); |
+ if (value != nullAtom || !m_element->shouldIgnoreAttributeCase()) |
+ return value; |
+ return m_element->getAttribute(QualifiedName(prefix(), localName().lower(), namespaceURI())); |
+ } |
return m_standaloneValue; |
} |
@@ -187,7 +191,7 @@ Attribute& Attr::elementAttribute() |
{ |
ASSERT(m_element); |
ASSERT(m_element->elementData()); |
- return *m_element->ensureUniqueElementData().getAttributeItem(qualifiedName()); |
+ return *m_element->ensureUniqueElementData().getAttributeItem(qualifiedName(), m_element->shouldIgnoreAttributeCase()); |
} |
void Attr::detachFromElementWithValue(const AtomicString& value) |