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

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: haraken review and rebase 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::createCustomElementSync(*this, name, exception State);
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::createCustomElementSync(*this, localName, excep tionState);
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
698 if (CustomElement::shouldCreateCustomElement(*this, qName))
699 return CustomElement::createCustomElementSync(*this, qName, exceptionSta te);
695 return createElement(qName, CreatedByCreateElement); 700 return createElement(qName, CreatedByCreateElement);
696 } 701 }
697 702
698 Element* Document::createElementNS(const AtomicString& namespaceURI, const Atomi cString& qualifiedName, const AtomicString& typeExtension, ExceptionState& excep tionState) 703 Element* Document::createElementNS(const AtomicString& namespaceURI, const Atomi cString& qualifiedName, const AtomicString& typeExtension, ExceptionState& excep tionState)
699 { 704 {
700 QualifiedName qName(createQualifiedName(namespaceURI, qualifiedName, excepti onState)); 705 QualifiedName qName(createQualifiedName(namespaceURI, qualifiedName, excepti onState));
701 if (qName == QualifiedName::null()) 706 if (qName == QualifiedName::null())
702 return nullptr; 707 return nullptr;
703 708
704 Element* element; 709 Element* element;
705 if (CustomElement::shouldCreateCustomElement(*this, qName)) 710 if (CustomElement::shouldCreateCustomElement(*this, qName))
706 element = CustomElement::createCustomElement(*this, qName, CreatedByCrea teElement); 711 element = CustomElement::createCustomElementSync(*this, qName, exception State);
707 else if (V0CustomElement::isValidName(qName.localName()) && registrationCont ext()) 712 else if (V0CustomElement::isValidName(qName.localName()) && registrationCont ext())
708 element = registrationContext()->createCustomTagElement(*this, qName); 713 element = registrationContext()->createCustomTagElement(*this, qName);
709 else 714 else
710 element = createElement(qName, CreatedByCreateElement); 715 element = createElement(qName, CreatedByCreateElement);
711 716
712 if (!typeExtension.isEmpty()) 717 if (!typeExtension.isEmpty())
713 V0CustomElementRegistrationContext::setIsAttributeAndTypeExtension(eleme nt, typeExtension); 718 V0CustomElementRegistrationContext::setIsAttributeAndTypeExtension(eleme nt, typeExtension);
714 719
715 return element; 720 return element;
716 } 721 }
(...skipping 5291 matching lines...) Expand 10 before | Expand all | Expand 10 after
6008 } 6013 }
6009 6014
6010 void showLiveDocumentInstances() 6015 void showLiveDocumentInstances()
6011 { 6016 {
6012 WeakDocumentSet& set = liveDocumentSet(); 6017 WeakDocumentSet& set = liveDocumentSet();
6013 fprintf(stderr, "There are %u documents currently alive:\n", set.size()); 6018 fprintf(stderr, "There are %u documents currently alive:\n", set.size());
6014 for (Document* document : set) 6019 for (Document* document : set)
6015 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());
6016 } 6021 }
6017 #endif 6022 #endif
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/dom/Document.h ('k') | third_party/WebKit/Source/core/dom/Document.idl » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698