Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(211)

Side by Side Diff: Source/core/dom/Document.cpp

Issue 14776002: Create wrappers for unresolved Custom Elements at the correct type (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Use toV8 in the constructor. Remove unused variable. Created 7 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « Source/core/dom/Document.h ('k') | Source/core/scripts/make_names.pl » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
3 * (C) 1999 Antti Koivisto (koivisto@kde.org) 3 * (C) 1999 Antti Koivisto (koivisto@kde.org)
4 * (C) 2001 Dirk Mueller (mueller@kde.org) 4 * (C) 2001 Dirk Mueller (mueller@kde.org)
5 * (C) 2006 Alexey Proskuryakov (ap@webkit.org) 5 * (C) 2006 Alexey Proskuryakov (ap@webkit.org)
6 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2011, 2012 Apple Inc. All r ights reserved. 6 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2011, 2012 Apple Inc. All r ights reserved.
7 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.t orchmobile.com/) 7 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.t orchmobile.com/)
8 * Copyright (C) 2008, 2009, 2011, 2012 Google Inc. All rights reserved. 8 * Copyright (C) 2008, 2009, 2011, 2012 Google Inc. All rights reserved.
9 * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies) 9 * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies)
10 * Copyright (C) Research In Motion Limited 2010-2011. All rights reserved. 10 * Copyright (C) Research In Motion Limited 2010-2011. All rights reserved.
(...skipping 757 matching lines...) Expand 10 before | Expand all | Expand 10 after
768 768
769 PassRefPtr<Element> Document::createElement(const AtomicString& localName, const AtomicString& typeExtension, ExceptionCode& ec) 769 PassRefPtr<Element> Document::createElement(const AtomicString& localName, const AtomicString& typeExtension, ExceptionCode& ec)
770 { 770 {
771 if (!isValidName(localName)) { 771 if (!isValidName(localName)) {
772 ec = INVALID_CHARACTER_ERR; 772 ec = INVALID_CHARACTER_ERR;
773 return 0; 773 return 0;
774 } 774 }
775 775
776 RefPtr<Element> element; 776 RefPtr<Element> element;
777 777
778 if (m_registry) 778 if (CustomElementRegistry::isCustomTagName(localName))
779 element = m_registry->tryToCreateCustomTagElement(QualifiedName(nullAtom , localName, xhtmlNamespaceURI)); 779 element = ensureCustomElementRegistry()->createCustomTagElement(Qualifie dName(nullAtom, localName, xhtmlNamespaceURI));
780 780 else
781 if (!element)
782 element = createElement(localName, ec); 781 element = createElement(localName, ec);
783 782
784 if (!typeExtension.isNull()) { 783 if (!typeExtension.isNull()) {
785 setTypeExtension(element.get(), typeExtension); 784 setTypeExtension(element.get(), typeExtension);
786 if (m_registry) 785 ensureCustomElementRegistry()->didGiveTypeExtension(element.get());
787 m_registry->didGiveTypeExtension(element.get());
788 } 786 }
789 787
790 return element; 788 return element;
791 } 789 }
792 790
793 PassRefPtr<Element> Document::createElementNS(const AtomicString& namespaceURI, const String& qualifiedName, const AtomicString& typeExtension, ExceptionCode& e c) 791 PassRefPtr<Element> Document::createElementNS(const AtomicString& namespaceURI, const String& qualifiedName, const AtomicString& typeExtension, ExceptionCode& e c)
794 { 792 {
795 String prefix, localName; 793 String prefix, localName;
796 if (!parseQualifiedName(qualifiedName, prefix, localName, ec)) 794 if (!parseQualifiedName(qualifiedName, prefix, localName, ec))
797 return 0; 795 return 0;
798 796
799 QualifiedName qName(prefix, localName, namespaceURI); 797 QualifiedName qName(prefix, localName, namespaceURI);
800 if (!hasValidNamespaceForElements(qName)) { 798 if (!hasValidNamespaceForElements(qName)) {
801 ec = NAMESPACE_ERR; 799 ec = NAMESPACE_ERR;
802 return 0; 800 return 0;
803 } 801 }
804 802
805 RefPtr<Element> element; 803 RefPtr<Element> element;
806 804 if (CustomElementRegistry::isCustomTagName(qName.localName()))
807 if (m_registry) 805 element = ensureCustomElementRegistry()->createCustomTagElement(qName);
808 element = m_registry->tryToCreateCustomTagElement(qName); 806 else
809
810 if (!element)
811 element = createElementNS(namespaceURI, qualifiedName, ec); 807 element = createElementNS(namespaceURI, qualifiedName, ec);
812 808
813 if (!typeExtension.isNull()) { 809 if (!typeExtension.isNull()) {
814 setTypeExtension(element.get(), typeExtension); 810 setTypeExtension(element.get(), typeExtension);
815 if (m_registry) 811 ensureCustomElementRegistry()->didGiveTypeExtension(element.get());
816 m_registry->didGiveTypeExtension(element.get());
817 } 812 }
818 813
819 return element; 814 return element;
820 } 815 }
821 816
822 PassRefPtr<CustomElementConstructor> Document::registerElement(WebCore::ScriptSt ate* state, const AtomicString& name, ExceptionCode& ec) 817 PassRefPtr<CustomElementConstructor> Document::registerElement(WebCore::ScriptSt ate* state, const AtomicString& name, ExceptionCode& ec)
823 { 818 {
824 return registerElement(state, name, Dictionary(), ec); 819 return registerElement(state, name, Dictionary(), ec);
825 } 820 }
826 821
827 PassRefPtr<CustomElementConstructor> Document::registerElement(WebCore::ScriptSt ate* state, const AtomicString& name, const Dictionary& options, ExceptionCode& ec) 822 PassRefPtr<CustomElementConstructor> Document::registerElement(WebCore::ScriptSt ate* state, const AtomicString& name, const Dictionary& options, ExceptionCode& ec)
828 { 823 {
829 if (!isHTMLDocument() && !isXHTMLDocument()) { 824 if (!isHTMLDocument() && !isXHTMLDocument()) {
830 ec = NOT_SUPPORTED_ERR; 825 ec = NOT_SUPPORTED_ERR;
831 return 0; 826 return 0;
832 } 827 }
833 828
834 if (!m_registry) 829 return ensureCustomElementRegistry()->registerElement(state, name, options, ec);
830 }
831
832 CustomElementRegistry* Document::ensureCustomElementRegistry()
833 {
834 if (!m_registry) {
835 ASSERT(isHTMLDocument() || isXHTMLDocument());
835 m_registry = adoptRef(new CustomElementRegistry(this)); 836 m_registry = adoptRef(new CustomElementRegistry(this));
836 return m_registry->registerElement(state, name, options, ec); 837 }
838 return m_registry.get();
837 } 839 }
838 840
839 PassRefPtr<DocumentFragment> Document::createDocumentFragment() 841 PassRefPtr<DocumentFragment> Document::createDocumentFragment()
840 { 842 {
841 return DocumentFragment::create(document()); 843 return DocumentFragment::create(document());
842 } 844 }
843 845
844 PassRefPtr<Text> Document::createTextNode(const String& data) 846 PassRefPtr<Text> Document::createTextNode(const String& data)
845 { 847 {
846 return Text::create(this, data); 848 return Text::create(this, data);
(...skipping 4814 matching lines...) Expand 10 before | Expand all | Expand 10 after
5661 return; 5663 return;
5662 5664
5663 Vector<RefPtr<Element> > associatedFormControls; 5665 Vector<RefPtr<Element> > associatedFormControls;
5664 copyToVector(m_associatedFormControls, associatedFormControls); 5666 copyToVector(m_associatedFormControls, associatedFormControls);
5665 5667
5666 frame()->page()->chrome()->client()->didAssociateFormControls(associatedForm Controls); 5668 frame()->page()->chrome()->client()->didAssociateFormControls(associatedForm Controls);
5667 m_associatedFormControls.clear(); 5669 m_associatedFormControls.clear();
5668 } 5670 }
5669 5671
5670 } // namespace WebCore 5672 } // namespace WebCore
OLDNEW
« no previous file with comments | « Source/core/dom/Document.h ('k') | Source/core/scripts/make_names.pl » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698