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

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

Issue 2279703002: Add a scoped context object for synchronous CE creation (Closed)
Patch Set: Clean up Created 4 years, 3 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 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
100 #include "core/dom/StaticNodeList.h" 100 #include "core/dom/StaticNodeList.h"
101 #include "core/dom/StyleChangeReason.h" 101 #include "core/dom/StyleChangeReason.h"
102 #include "core/dom/StyleEngine.h" 102 #include "core/dom/StyleEngine.h"
103 #include "core/dom/TaskRunnerHelper.h" 103 #include "core/dom/TaskRunnerHelper.h"
104 #include "core/dom/TouchList.h" 104 #include "core/dom/TouchList.h"
105 #include "core/dom/TransformSource.h" 105 #include "core/dom/TransformSource.h"
106 #include "core/dom/TreeWalker.h" 106 #include "core/dom/TreeWalker.h"
107 #include "core/dom/VisitedLinkState.h" 107 #include "core/dom/VisitedLinkState.h"
108 #include "core/dom/XMLDocument.h" 108 #include "core/dom/XMLDocument.h"
109 #include "core/dom/custom/CustomElement.h" 109 #include "core/dom/custom/CustomElement.h"
110 #include "core/dom/custom/CustomElementCreationScope.h"
110 #include "core/dom/custom/CustomElementRegistry.h" 111 #include "core/dom/custom/CustomElementRegistry.h"
111 #include "core/dom/custom/V0CustomElementMicrotaskRunQueue.h" 112 #include "core/dom/custom/V0CustomElementMicrotaskRunQueue.h"
112 #include "core/dom/custom/V0CustomElementRegistrationContext.h" 113 #include "core/dom/custom/V0CustomElementRegistrationContext.h"
113 #include "core/dom/shadow/ElementShadow.h" 114 #include "core/dom/shadow/ElementShadow.h"
114 #include "core/dom/shadow/FlatTreeTraversal.h" 115 #include "core/dom/shadow/FlatTreeTraversal.h"
115 #include "core/dom/shadow/ShadowRoot.h" 116 #include "core/dom/shadow/ShadowRoot.h"
116 #include "core/editing/DragCaretController.h" 117 #include "core/editing/DragCaretController.h"
117 #include "core/editing/EditingUtilities.h" 118 #include "core/editing/EditingUtilities.h"
118 #include "core/editing/Editor.h" 119 #include "core/editing/Editor.h"
119 #include "core/editing/FrameSelection.h" 120 #include "core/editing/FrameSelection.h"
(...skipping 513 matching lines...) Expand 10 before | Expand all | Expand 10 after
633 } 634 }
634 635
635 Element* Document::createElement(const AtomicString& name, ExceptionState& excep tionState) 636 Element* Document::createElement(const AtomicString& name, ExceptionState& excep tionState)
636 { 637 {
637 if (!isValidName(name)) { 638 if (!isValidName(name)) {
638 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.");
639 return nullptr; 640 return nullptr;
640 } 641 }
641 642
642 if (isXHTMLDocument() || isHTMLDocument()) { 643 if (isXHTMLDocument() || isHTMLDocument()) {
643 if (CustomElement::shouldCreateCustomElement(name)) 644 if (CustomElement::shouldCreateCustomElement(name)) {
645 CustomElementCreationScope scope(this);
644 return CustomElement::createCustomElementSync(*this, name, exception State); 646 return CustomElement::createCustomElementSync(*this, name, exception State);
647 }
645 return HTMLElementFactory::createHTMLElement(convertLocalName(name), *th is, 0, CreatedByCreateElement); 648 return HTMLElementFactory::createHTMLElement(convertLocalName(name), *th is, 0, CreatedByCreateElement);
646 } 649 }
647 650
648 return Element::create(QualifiedName(nullAtom, name, nullAtom), this); 651 return Element::create(QualifiedName(nullAtom, name, nullAtom), this);
649 } 652 }
650 653
651 Element* Document::createElement(const AtomicString& localName, const AtomicStri ng& typeExtension, ExceptionState& exceptionState) 654 Element* Document::createElement(const AtomicString& localName, const AtomicStri ng& typeExtension, ExceptionState& exceptionState)
652 { 655 {
653 if (!isValidName(localName)) { 656 if (!isValidName(localName)) {
654 exceptionState.throwDOMException(InvalidCharacterError, "The tag name pr ovided ('" + localName + "') is not a valid name."); 657 exceptionState.throwDOMException(InvalidCharacterError, "The tag name pr ovided ('" + localName + "') is not a valid name.");
655 return nullptr; 658 return nullptr;
656 } 659 }
657 660
658 Element* element; 661 Element* element;
659 662
660 if (CustomElement::shouldCreateCustomElement(localName)) { 663 if (CustomElement::shouldCreateCustomElement(localName)) {
664 CustomElementCreationScope scope(this);
661 element = CustomElement::createCustomElementSync(*this, localName, excep tionState); 665 element = CustomElement::createCustomElementSync(*this, localName, excep tionState);
662 } else if (V0CustomElement::isValidName(localName) && registrationContext()) { 666 } else if (V0CustomElement::isValidName(localName) && registrationContext()) {
663 element = registrationContext()->createCustomTagElement(*this, Qualified Name(nullAtom, convertLocalName(localName), xhtmlNamespaceURI)); 667 element = registrationContext()->createCustomTagElement(*this, Qualified Name(nullAtom, convertLocalName(localName), xhtmlNamespaceURI));
664 } else { 668 } else {
665 element = createElement(localName, exceptionState); 669 element = createElement(localName, exceptionState);
666 if (exceptionState.hadException()) 670 if (exceptionState.hadException())
667 return nullptr; 671 return nullptr;
668 } 672 }
669 673
670 if (!typeExtension.isEmpty()) 674 if (!typeExtension.isEmpty())
(...skipping 16 matching lines...) Expand all
687 691
688 return qName; 692 return qName;
689 } 693 }
690 694
691 Element* Document::createElementNS(const AtomicString& namespaceURI, const Atomi cString& qualifiedName, ExceptionState& exceptionState) 695 Element* Document::createElementNS(const AtomicString& namespaceURI, const Atomi cString& qualifiedName, ExceptionState& exceptionState)
692 { 696 {
693 QualifiedName qName(createQualifiedName(namespaceURI, qualifiedName, excepti onState)); 697 QualifiedName qName(createQualifiedName(namespaceURI, qualifiedName, excepti onState));
694 if (qName == QualifiedName::null()) 698 if (qName == QualifiedName::null())
695 return nullptr; 699 return nullptr;
696 700
697 if (CustomElement::shouldCreateCustomElement(qName)) 701 if (CustomElement::shouldCreateCustomElement(qName)) {
702 CustomElementCreationScope scope(this);
698 return CustomElement::createCustomElementSync(*this, qName, exceptionSta te); 703 return CustomElement::createCustomElementSync(*this, qName, exceptionSta te);
704 }
699 return createElement(qName, CreatedByCreateElement); 705 return createElement(qName, CreatedByCreateElement);
700 } 706 }
701 707
702 Element* Document::createElementNS(const AtomicString& namespaceURI, const Atomi cString& qualifiedName, const AtomicString& typeExtension, ExceptionState& excep tionState) 708 Element* Document::createElementNS(const AtomicString& namespaceURI, const Atomi cString& qualifiedName, const AtomicString& typeExtension, ExceptionState& excep tionState)
703 { 709 {
704 QualifiedName qName(createQualifiedName(namespaceURI, qualifiedName, excepti onState)); 710 QualifiedName qName(createQualifiedName(namespaceURI, qualifiedName, excepti onState));
705 if (qName == QualifiedName::null()) 711 if (qName == QualifiedName::null())
706 return nullptr; 712 return nullptr;
707 713
708 Element* element; 714 Element* element;
709 if (CustomElement::shouldCreateCustomElement(qName)) 715 if (CustomElement::shouldCreateCustomElement(qName)) {
716 CustomElementCreationScope scope(this);
710 element = CustomElement::createCustomElementSync(*this, qName, exception State); 717 element = CustomElement::createCustomElementSync(*this, qName, exception State);
711 else if (V0CustomElement::isValidName(qName.localName()) && registrationCont ext()) 718 } else if (V0CustomElement::isValidName(qName.localName()) && registrationCo ntext()) {
712 element = registrationContext()->createCustomTagElement(*this, qName); 719 element = registrationContext()->createCustomTagElement(*this, qName);
713 else 720 } else {
714 element = createElement(qName, CreatedByCreateElement); 721 element = createElement(qName, CreatedByCreateElement);
715 722 }
716 if (!typeExtension.isEmpty()) 723 if (!typeExtension.isEmpty())
717 V0CustomElementRegistrationContext::setIsAttributeAndTypeExtension(eleme nt, typeExtension); 724 V0CustomElementRegistrationContext::setIsAttributeAndTypeExtension(eleme nt, typeExtension);
718 725
719 return element; 726 return element;
720 } 727 }
721 728
722 ScriptValue Document::registerElement(ScriptState* scriptState, const AtomicStri ng& name, const ElementRegistrationOptions& options, ExceptionState& exceptionSt ate, V0CustomElement::NameSet validNames) 729 ScriptValue Document::registerElement(ScriptState* scriptState, const AtomicStri ng& name, const ElementRegistrationOptions& options, ExceptionState& exceptionSt ate, V0CustomElement::NameSet validNames)
723 { 730 {
724 HostsUsingFeatures::countMainWorldOnly(scriptState, *this, HostsUsingFeature s::Feature::DocumentRegisterElement); 731 HostsUsingFeatures::countMainWorldOnly(scriptState, *this, HostsUsingFeature s::Feature::DocumentRegisterElement);
725 732
(...skipping 5314 matching lines...) Expand 10 before | Expand all | Expand 10 after
6040 } 6047 }
6041 6048
6042 void showLiveDocumentInstances() 6049 void showLiveDocumentInstances()
6043 { 6050 {
6044 WeakDocumentSet& set = liveDocumentSet(); 6051 WeakDocumentSet& set = liveDocumentSet();
6045 fprintf(stderr, "There are %u documents currently alive:\n", set.size()); 6052 fprintf(stderr, "There are %u documents currently alive:\n", set.size());
6046 for (Document* document : set) 6053 for (Document* document : set)
6047 fprintf(stderr, "- Document %p URL: %s\n", document, document->url().get String().utf8().data()); 6054 fprintf(stderr, "- Document %p URL: %s\n", document, document->url().get String().utf8().data());
6048 } 6055 }
6049 #endif 6056 #endif
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/core.gypi ('k') | third_party/WebKit/Source/core/dom/custom/CustomElementCreationScope.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698