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

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

Issue 2443543002: createElement should not transmit exceptions but report them. (Closed)
Patch Set: Rebaseline tests. Created 4 years, 1 month 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 6 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2011, 2012 Apple Inc. All
7 * rights reserved. 7 * rights reserved.
8 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. 8 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved.
9 * (http://www.torchmobile.com/) 9 * (http://www.torchmobile.com/)
10 * Copyright (C) 2008, 2009, 2011, 2012 Google Inc. All rights reserved. 10 * Copyright (C) 2008, 2009, 2011, 2012 Google Inc. All rights reserved.
(...skipping 640 matching lines...) Expand 10 before | Expand all | Expand 10 after
651 InvalidCharacterError, 651 InvalidCharacterError,
652 "The tag name provided ('" + name + "') is not a valid name."); 652 "The tag name provided ('" + name + "') is not a valid name.");
653 return nullptr; 653 return nullptr;
654 } 654 }
655 655
656 if (isXHTMLDocument() || isHTMLDocument()) { 656 if (isXHTMLDocument() || isHTMLDocument()) {
657 // 2. If the context object is an HTML document, let localName be 657 // 2. If the context object is an HTML document, let localName be
658 // converted to ASCII lowercase. 658 // converted to ASCII lowercase.
659 AtomicString localName = convertLocalName(name); 659 AtomicString localName = convertLocalName(name);
660 if (CustomElement::shouldCreateCustomElement(localName)) 660 if (CustomElement::shouldCreateCustomElement(localName))
661 return CustomElement::createCustomElementSync(*this, localName, 661 return CustomElement::createCustomElementSync(*this, localName);
662 exceptionState);
663 return HTMLElementFactory::createHTMLElement(localName, *this, 0, 662 return HTMLElementFactory::createHTMLElement(localName, *this, 0,
664 CreatedByCreateElement); 663 CreatedByCreateElement);
665 } 664 }
666 665
667 return Element::create(QualifiedName(nullAtom, name, nullAtom), this); 666 return Element::create(QualifiedName(nullAtom, name, nullAtom), this);
668 } 667 }
669 668
670 Element* Document::createElement(const AtomicString& localName, 669 Element* Document::createElement(const AtomicString& localName,
671 const AtomicString& typeExtension, 670 const AtomicString& typeExtension,
672 ExceptionState& exceptionState) { 671 ExceptionState& exceptionState) {
673 if (!isValidName(localName)) { 672 if (!isValidName(localName)) {
674 exceptionState.throwDOMException( 673 exceptionState.throwDOMException(
675 InvalidCharacterError, 674 InvalidCharacterError,
676 "The tag name provided ('" + localName + "') is not a valid name."); 675 "The tag name provided ('" + localName + "') is not a valid name.");
677 return nullptr; 676 return nullptr;
678 } 677 }
679 678
680 Element* element; 679 Element* element;
681 680
682 if (CustomElement::shouldCreateCustomElement(convertLocalName(localName))) { 681 if (CustomElement::shouldCreateCustomElement(convertLocalName(localName))) {
683 element = CustomElement::createCustomElementSync( 682 element = CustomElement::createCustomElementSync(
684 *this, convertLocalName(localName), exceptionState); 683 *this, convertLocalName(localName));
685 } else if (V0CustomElement::isValidName(localName) && registrationContext()) { 684 } else if (V0CustomElement::isValidName(localName) && registrationContext()) {
686 element = registrationContext()->createCustomTagElement( 685 element = registrationContext()->createCustomTagElement(
687 *this, QualifiedName(nullAtom, convertLocalName(localName), 686 *this, QualifiedName(nullAtom, convertLocalName(localName),
688 xhtmlNamespaceURI)); 687 xhtmlNamespaceURI));
689 } else { 688 } else {
690 element = createElement(localName, exceptionState); 689 element = createElement(localName, exceptionState);
691 if (exceptionState.hadException()) 690 if (exceptionState.hadException())
692 return nullptr; 691 return nullptr;
693 } 692 }
694 693
(...skipping 28 matching lines...) Expand all
723 722
724 Element* Document::createElementNS(const AtomicString& namespaceURI, 723 Element* Document::createElementNS(const AtomicString& namespaceURI,
725 const AtomicString& qualifiedName, 724 const AtomicString& qualifiedName,
726 ExceptionState& exceptionState) { 725 ExceptionState& exceptionState) {
727 QualifiedName qName( 726 QualifiedName qName(
728 createQualifiedName(namespaceURI, qualifiedName, exceptionState)); 727 createQualifiedName(namespaceURI, qualifiedName, exceptionState));
729 if (qName == QualifiedName::null()) 728 if (qName == QualifiedName::null())
730 return nullptr; 729 return nullptr;
731 730
732 if (CustomElement::shouldCreateCustomElement(qName)) 731 if (CustomElement::shouldCreateCustomElement(qName))
733 return CustomElement::createCustomElementSync(*this, qName, exceptionState); 732 return CustomElement::createCustomElementSync(*this, qName);
734 return createElement(qName, CreatedByCreateElement); 733 return createElement(qName, CreatedByCreateElement);
735 } 734 }
736 735
737 Element* Document::createElementNS(const AtomicString& namespaceURI, 736 Element* Document::createElementNS(const AtomicString& namespaceURI,
738 const AtomicString& qualifiedName, 737 const AtomicString& qualifiedName,
739 const AtomicString& typeExtension, 738 const AtomicString& typeExtension,
740 ExceptionState& exceptionState) { 739 ExceptionState& exceptionState) {
741 QualifiedName qName( 740 QualifiedName qName(
742 createQualifiedName(namespaceURI, qualifiedName, exceptionState)); 741 createQualifiedName(namespaceURI, qualifiedName, exceptionState));
743 if (qName == QualifiedName::null()) 742 if (qName == QualifiedName::null())
744 return nullptr; 743 return nullptr;
745 744
746 Element* element; 745 Element* element;
747 if (CustomElement::shouldCreateCustomElement(qName)) 746 if (CustomElement::shouldCreateCustomElement(qName))
748 element = 747 element = CustomElement::createCustomElementSync(*this, qName);
749 CustomElement::createCustomElementSync(*this, qName, exceptionState);
750 else if (V0CustomElement::isValidName(qName.localName()) && 748 else if (V0CustomElement::isValidName(qName.localName()) &&
751 registrationContext()) 749 registrationContext())
752 element = registrationContext()->createCustomTagElement(*this, qName); 750 element = registrationContext()->createCustomTagElement(*this, qName);
753 else 751 else
754 element = createElement(qName, CreatedByCreateElement); 752 element = createElement(qName, CreatedByCreateElement);
755 753
756 if (!typeExtension.isEmpty()) 754 if (!typeExtension.isEmpty())
757 V0CustomElementRegistrationContext::setIsAttributeAndTypeExtension( 755 V0CustomElementRegistrationContext::setIsAttributeAndTypeExtension(
758 element, typeExtension); 756 element, typeExtension);
759 757
(...skipping 5637 matching lines...) Expand 10 before | Expand all | Expand 10 after
6397 } 6395 }
6398 6396
6399 void showLiveDocumentInstances() { 6397 void showLiveDocumentInstances() {
6400 WeakDocumentSet& set = liveDocumentSet(); 6398 WeakDocumentSet& set = liveDocumentSet();
6401 fprintf(stderr, "There are %u documents currently alive:\n", set.size()); 6399 fprintf(stderr, "There are %u documents currently alive:\n", set.size());
6402 for (Document* document : set) 6400 for (Document* document : set)
6403 fprintf(stderr, "- Document %p URL: %s\n", document, 6401 fprintf(stderr, "- Document %p URL: %s\n", document,
6404 document->url().getString().utf8().data()); 6402 document->url().getString().utf8().data());
6405 } 6403 }
6406 #endif 6404 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698