| Index: Source/core/dom/Document.cpp
|
| diff --git a/Source/core/dom/Document.cpp b/Source/core/dom/Document.cpp
|
| index 8c770732ac76657342f57532da35367f200f9e9a..43e7d00eda7ca34bfb28f3657c8b644e2c9260bd 100644
|
| --- a/Source/core/dom/Document.cpp
|
| +++ b/Source/core/dom/Document.cpp
|
| @@ -4427,11 +4427,21 @@ WeakPtr<Document> Document::contextDocument()
|
|
|
| PassRefPtr<Attr> Document::createAttribute(const AtomicString& name, ExceptionState& exceptionState)
|
| {
|
| + return createAttributeNS(nullAtom, name, exceptionState, true);
|
| +}
|
| +
|
| +PassRefPtr<Attr> Document::createAttributeNS(const AtomicString& namespaceURI, const AtomicString& qualifiedName, ExceptionState& exceptionState, bool shouldIgnoreNamespaceChecks)
|
| +{
|
| AtomicString prefix, localName;
|
| - if (!parseQualifiedName(name, prefix, localName, exceptionState))
|
| + if (!parseQualifiedName(qualifiedName, prefix, localName, exceptionState))
|
| return nullptr;
|
|
|
| - QualifiedName qName(prefix, localName, nullAtom);
|
| + QualifiedName qName(prefix, localName, namespaceURI);
|
| +
|
| + if (!shouldIgnoreNamespaceChecks && !hasValidNamespaceForAttributes(qName)) {
|
| + exceptionState.throwDOMException(NamespaceError, "The namespace URI provided ('" + namespaceURI + "') is not valid for the qualified name provided ('" + qualifiedName + "').");
|
| + return nullptr;
|
| + }
|
|
|
| return Attr::create(*this, qName, emptyAtom);
|
| }
|
|
|