Index: Source/core/dom/Document.cpp |
diff --git a/Source/core/dom/Document.cpp b/Source/core/dom/Document.cpp |
index dc3dd77e35bb08774c89adaad7f3b0579c6dda72..bcd024cb24fd77184d6c0d83c7a403bfe5fd9521 100644 |
--- a/Source/core/dom/Document.cpp |
+++ b/Source/core/dom/Document.cpp |
@@ -776,16 +776,14 @@ PassRefPtr<Element> Document::createElement(const AtomicString& localName, const |
RefPtr<Element> element; |
- if (m_registry) |
- element = m_registry->tryToCreateCustomTagElement(QualifiedName(nullAtom, localName, xhtmlNamespaceURI)); |
- |
- if (!element) |
+ if (CustomElementRegistry::isCustomTagName(localName)) |
+ element = ensureCustomElementRegistry()->createCustomTagElement(QualifiedName(nullAtom, localName, xhtmlNamespaceURI)); |
+ else |
element = createElement(localName, ec); |
if (!typeExtension.isNull()) { |
setTypeExtension(element.get(), typeExtension); |
- if (m_registry) |
- m_registry->didGiveTypeExtension(element.get()); |
+ ensureCustomElementRegistry()->didGiveTypeExtension(element.get()); |
} |
return element; |
@@ -804,17 +802,14 @@ PassRefPtr<Element> Document::createElementNS(const AtomicString& namespaceURI, |
} |
RefPtr<Element> element; |
- |
- if (m_registry) |
- element = m_registry->tryToCreateCustomTagElement(qName); |
- |
- if (!element) |
+ if (CustomElementRegistry::isCustomTagName(qName.localName())) |
+ element = ensureCustomElementRegistry()->createCustomTagElement(qName); |
+ else |
element = createElementNS(namespaceURI, qualifiedName, ec); |
if (!typeExtension.isNull()) { |
setTypeExtension(element.get(), typeExtension); |
- if (m_registry) |
- m_registry->didGiveTypeExtension(element.get()); |
+ ensureCustomElementRegistry()->didGiveTypeExtension(element.get()); |
} |
return element; |
@@ -832,9 +827,16 @@ PassRefPtr<CustomElementConstructor> Document::registerElement(WebCore::ScriptSt |
return 0; |
} |
- if (!m_registry) |
+ return ensureCustomElementRegistry()->registerElement(state, name, options, ec); |
+} |
+ |
+CustomElementRegistry* Document::ensureCustomElementRegistry() |
dglazkov
2013/05/01 16:51:22
Making registry RAII could've been its own patch,
|
+{ |
+ if (!m_registry) { |
+ ASSERT(isHTMLDocument() || isXHTMLDocument()); |
m_registry = adoptRef(new CustomElementRegistry(this)); |
- return m_registry->registerElement(state, name, options, ec); |
+ } |
+ return m_registry.get(); |
} |
PassRefPtr<DocumentFragment> Document::createDocumentFragment() |