Chromium Code Reviews| 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() |