|| (documentElement() && !isHTMLHtmlElement(*documentElement()));
}
-bool Document::shouldParserYieldAgressivelyBeforeScriptExecution()
-{
- return view() && view()->layoutPending();
-}
-
int Document::elapsedTime() const
{
return static_cast<int>((currentTime() - m_startTime) * 1000);
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);
}