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

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

Issue 2054433002: Implement "create an element" when sync for Custom Element V1 (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@async-ce
Patch Set: Prefer ExceptionState over throw Created 4 years, 6 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
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 622 matching lines...) Expand 10 before | Expand all | Expand 10 after
633 return isHTMLDocument() ? name.lower() : name; 633 return isHTMLDocument() ? name.lower() : name;
634 } 634 }
635 635
636 Element* Document::createElement(const AtomicString& name, ExceptionState& excep tionState) 636 Element* Document::createElement(const AtomicString& name, ExceptionState& excep tionState)
637 { 637 {
638 if (!isValidName(name)) { 638 if (!isValidName(name)) {
639 exceptionState.throwDOMException(InvalidCharacterError, "The tag name pr ovided ('" + name + "') is not a valid name."); 639 exceptionState.throwDOMException(InvalidCharacterError, "The tag name pr ovided ('" + name + "') is not a valid name.");
640 return nullptr; 640 return nullptr;
641 } 641 }
642 642
643 if (isXHTMLDocument() || isHTMLDocument()) 643 if (isXHTMLDocument() || isHTMLDocument()) {
644 if (CustomElement::shouldCreateCustomElement(*this, name))
645 return CustomElement::createCustomElement(*this, name, CreatedByCrea teElement, exceptionState);
644 return HTMLElementFactory::createHTMLElement(convertLocalName(name), *th is, 0, CreatedByCreateElement); 646 return HTMLElementFactory::createHTMLElement(convertLocalName(name), *th is, 0, CreatedByCreateElement);
647 }
645 648
646 return Element::create(QualifiedName(nullAtom, name, nullAtom), this); 649 return Element::create(QualifiedName(nullAtom, name, nullAtom), this);
647 } 650 }
648 651
649 Element* Document::createElement(const AtomicString& localName, const AtomicStri ng& typeExtension, ExceptionState& exceptionState) 652 Element* Document::createElement(const AtomicString& localName, const AtomicStri ng& typeExtension, ExceptionState& exceptionState)
650 { 653 {
651 if (!isValidName(localName)) { 654 if (!isValidName(localName)) {
652 exceptionState.throwDOMException(InvalidCharacterError, "The tag name pr ovided ('" + localName + "') is not a valid name."); 655 exceptionState.throwDOMException(InvalidCharacterError, "The tag name pr ovided ('" + localName + "') is not a valid name.");
653 return nullptr; 656 return nullptr;
654 } 657 }
655 658
656 Element* element; 659 Element* element;
657 660
658 if (CustomElement::shouldCreateCustomElement(*this, localName)) { 661 if (CustomElement::shouldCreateCustomElement(*this, localName)) {
659 element = CustomElement::createCustomElement(*this, localName, CreatedBy CreateElement); 662 element = CustomElement::createCustomElement(*this, localName, CreatedBy CreateElement, exceptionState);
660 } else if (V0CustomElement::isValidName(localName) && registrationContext()) { 663 } else if (V0CustomElement::isValidName(localName) && registrationContext()) {
661 element = registrationContext()->createCustomTagElement(*this, Qualified Name(nullAtom, convertLocalName(localName), xhtmlNamespaceURI)); 664 element = registrationContext()->createCustomTagElement(*this, Qualified Name(nullAtom, convertLocalName(localName), xhtmlNamespaceURI));
662 } else { 665 } else {
663 element = createElement(localName, exceptionState); 666 element = createElement(localName, exceptionState);
664 if (exceptionState.hadException()) 667 if (exceptionState.hadException())
665 return nullptr; 668 return nullptr;
666 } 669 }
667 670
668 if (!typeExtension.isEmpty()) 671 if (!typeExtension.isEmpty())
669 V0CustomElementRegistrationContext::setIsAttributeAndTypeExtension(eleme nt, typeExtension); 672 V0CustomElementRegistrationContext::setIsAttributeAndTypeExtension(eleme nt, typeExtension);
(...skipping 15 matching lines...) Expand all
685 688
686 return qName; 689 return qName;
687 } 690 }
688 691
689 Element* Document::createElementNS(const AtomicString& namespaceURI, const Atomi cString& qualifiedName, ExceptionState& exceptionState) 692 Element* Document::createElementNS(const AtomicString& namespaceURI, const Atomi cString& qualifiedName, ExceptionState& exceptionState)
690 { 693 {
691 QualifiedName qName(createQualifiedName(namespaceURI, qualifiedName, excepti onState)); 694 QualifiedName qName(createQualifiedName(namespaceURI, qualifiedName, excepti onState));
692 if (qName == QualifiedName::null()) 695 if (qName == QualifiedName::null())
693 return nullptr; 696 return nullptr;
694 697
695 return createElement(qName, CreatedByCreateElement); 698 return createElement(qName, CreatedByCreateElement, exceptionState);
696 } 699 }
697 700
698 Element* Document::createElementNS(const AtomicString& namespaceURI, const Atomi cString& qualifiedName, const AtomicString& typeExtension, ExceptionState& excep tionState) 701 Element* Document::createElementNS(const AtomicString& namespaceURI, const Atomi cString& qualifiedName, const AtomicString& typeExtension, ExceptionState& excep tionState)
699 { 702 {
700 QualifiedName qName(createQualifiedName(namespaceURI, qualifiedName, excepti onState)); 703 QualifiedName qName(createQualifiedName(namespaceURI, qualifiedName, excepti onState));
701 if (qName == QualifiedName::null()) 704 if (qName == QualifiedName::null())
702 return nullptr; 705 return nullptr;
703 706
704 Element* element; 707 Element* element;
705 if (CustomElement::shouldCreateCustomElement(*this, qName)) 708 if (CustomElement::shouldCreateCustomElement(*this, qName))
706 element = CustomElement::createCustomElement(*this, qName, CreatedByCrea teElement); 709 element = CustomElement::createCustomElement(*this, qName, CreatedByCrea teElement, exceptionState);
707 else if (V0CustomElement::isValidName(qName.localName()) && registrationCont ext()) 710 else if (V0CustomElement::isValidName(qName.localName()) && registrationCont ext())
708 element = registrationContext()->createCustomTagElement(*this, qName); 711 element = registrationContext()->createCustomTagElement(*this, qName);
709 else 712 else
710 element = createElement(qName, CreatedByCreateElement); 713 element = createElement(qName, CreatedByCreateElement);
711 714
712 if (!typeExtension.isEmpty()) 715 if (!typeExtension.isEmpty())
713 V0CustomElementRegistrationContext::setIsAttributeAndTypeExtension(eleme nt, typeExtension); 716 V0CustomElementRegistrationContext::setIsAttributeAndTypeExtension(eleme nt, typeExtension);
714 717
715 return element; 718 return element;
716 } 719 }
(...skipping 262 matching lines...) Expand 10 before | Expand all | Expand 10 after
979 e = Element::create(qName, this); 982 e = Element::create(qName, this);
980 983
981 if (e->prefix() != qName.prefix()) 984 if (e->prefix() != qName.prefix())
982 e->setTagNameForCreateElementNS(qName); 985 e->setTagNameForCreateElementNS(qName);
983 986
984 DCHECK(qName == e->tagQName()); 987 DCHECK(qName == e->tagQName());
985 988
986 return e; 989 return e;
987 } 990 }
988 991
992 Element* Document::createElement(const QualifiedName& qName, CreateElementFlags flags, ExceptionState& exceptionState)
993 {
994 if (CustomElement::shouldCreateCustomElement(*this, qName))
995 return CustomElement::createCustomElement(*this, qName, flags, exception State);
996 return createElement(qName, flags);
997 }
998
989 String Document::readyState() const 999 String Document::readyState() const
990 { 1000 {
991 DEFINE_STATIC_LOCAL(const String, loading, ("loading")); 1001 DEFINE_STATIC_LOCAL(const String, loading, ("loading"));
992 DEFINE_STATIC_LOCAL(const String, interactive, ("interactive")); 1002 DEFINE_STATIC_LOCAL(const String, interactive, ("interactive"));
993 DEFINE_STATIC_LOCAL(const String, complete, ("complete")); 1003 DEFINE_STATIC_LOCAL(const String, complete, ("complete"));
994 1004
995 switch (m_readyState) { 1005 switch (m_readyState) {
996 case Loading: 1006 case Loading:
997 return loading; 1007 return loading;
998 case Interactive: 1008 case Interactive:
(...skipping 5004 matching lines...) Expand 10 before | Expand all | Expand 10 after
6003 } 6013 }
6004 6014
6005 void showLiveDocumentInstances() 6015 void showLiveDocumentInstances()
6006 { 6016 {
6007 WeakDocumentSet& set = liveDocumentSet(); 6017 WeakDocumentSet& set = liveDocumentSet();
6008 fprintf(stderr, "There are %u documents currently alive:\n", set.size()); 6018 fprintf(stderr, "There are %u documents currently alive:\n", set.size());
6009 for (Document* document : set) 6019 for (Document* document : set)
6010 fprintf(stderr, "- Document %p URL: %s\n", document, document->url().get String().utf8().data()); 6020 fprintf(stderr, "- Document %p URL: %s\n", document, document->url().get String().utf8().data());
6011 } 6021 }
6012 #endif 6022 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698