OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2010 Google, Inc. All Rights Reserved. | 2 * Copyright (C) 2010 Google, Inc. All Rights Reserved. |
3 * Copyright (C) 2011 Apple Inc. All rights reserved. | 3 * Copyright (C) 2011 Apple Inc. All rights reserved. |
4 * | 4 * |
5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
6 * modification, are permitted provided that the following conditions | 6 * modification, are permitted provided that the following conditions |
7 * are met: | 7 * are met: |
8 * 1. Redistributions of source code must retain the above copyright | 8 * 1. Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * 2. Redistributions in binary form must reproduce the above copyright | 10 * 2. Redistributions in binary form must reproduce the above copyright |
(...skipping 720 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
731 } | 731 } |
732 | 732 |
733 void HTMLConstructionSite::takeAllChildren(HTMLStackItem* newParent, HTMLElement
Stack::ElementRecord* oldParent) | 733 void HTMLConstructionSite::takeAllChildren(HTMLStackItem* newParent, HTMLElement
Stack::ElementRecord* oldParent) |
734 { | 734 { |
735 HTMLConstructionSiteTask task(HTMLConstructionSiteTask::TakeAllChildren); | 735 HTMLConstructionSiteTask task(HTMLConstructionSiteTask::TakeAllChildren); |
736 task.parent = newParent->node(); | 736 task.parent = newParent->node(); |
737 task.child = oldParent->node(); | 737 task.child = oldParent->node(); |
738 queueTask(task); | 738 queueTask(task); |
739 } | 739 } |
740 | 740 |
| 741 CreateElementFlags HTMLConstructionSite::getCreateElementFlags() const |
| 742 { |
| 743 return m_isParsingFragment ? CreatedByFragmentParser : CreatedByParser; |
| 744 } |
| 745 |
741 Element* HTMLConstructionSite::createElement(AtomicHTMLToken* token, const Atomi
cString& namespaceURI) | 746 Element* HTMLConstructionSite::createElement(AtomicHTMLToken* token, const Atomi
cString& namespaceURI) |
742 { | 747 { |
743 QualifiedName tagName(nullAtom, token->name(), namespaceURI); | 748 QualifiedName tagName(nullAtom, token->name(), namespaceURI); |
744 Element* element = ownerDocumentForCurrentNode().createElement(tagName, true
); | 749 Element* element = ownerDocumentForCurrentNode().createElement(tagName, getC
reateElementFlags()); |
745 setAttributes(element, token, m_parserContentPolicy); | 750 setAttributes(element, token, m_parserContentPolicy); |
746 return element; | 751 return element; |
747 } | 752 } |
748 | 753 |
749 inline Document& HTMLConstructionSite::ownerDocumentForCurrentNode() | 754 inline Document& HTMLConstructionSite::ownerDocumentForCurrentNode() |
750 { | 755 { |
751 if (isHTMLTemplateElement(*currentNode())) | 756 if (isHTMLTemplateElement(*currentNode())) |
752 return toHTMLTemplateElement(currentElement())->content()->document(); | 757 return toHTMLTemplateElement(currentElement())->content()->document(); |
753 return currentNode()->document(); | 758 return currentNode()->document(); |
754 } | 759 } |
755 | 760 |
756 HTMLElement* HTMLConstructionSite::createHTMLElement(AtomicHTMLToken* token) | 761 HTMLElement* HTMLConstructionSite::createHTMLElement(AtomicHTMLToken* token) |
757 { | 762 { |
758 Document& document = ownerDocumentForCurrentNode(); | 763 Document& document = ownerDocumentForCurrentNode(); |
759 // Only associate the element with the current form if we're creating the ne
w element | 764 // Only associate the element with the current form if we're creating the ne
w element |
760 // in a document with a browsing context (rather than in <template> contents
). | 765 // in a document with a browsing context (rather than in <template> contents
). |
761 HTMLFormElement* form = document.frame() ? m_form.get() : 0; | 766 HTMLFormElement* form = document.frame() ? m_form.get() : 0; |
762 // FIXME: This can't use HTMLConstructionSite::createElement because we | 767 // FIXME: This can't use HTMLConstructionSite::createElement because we |
763 // have to pass the current form element. We should rework form association | 768 // have to pass the current form element. We should rework form association |
764 // to occur after construction to allow better code sharing here. | 769 // to occur after construction to allow better code sharing here. |
765 HTMLElement* element = HTMLElementFactory::createHTMLElement(token->name(),
document, form, true); | 770 HTMLElement* element = HTMLElementFactory::createHTMLElement(token->name(),
document, form, getCreateElementFlags()); |
766 setAttributes(element, token, m_parserContentPolicy); | 771 setAttributes(element, token, m_parserContentPolicy); |
767 return element; | 772 return element; |
768 } | 773 } |
769 | 774 |
770 HTMLStackItem* HTMLConstructionSite::createElementFromSavedToken(HTMLStackItem*
item) | 775 HTMLStackItem* HTMLConstructionSite::createElementFromSavedToken(HTMLStackItem*
item) |
771 { | 776 { |
772 Element* element; | 777 Element* element; |
773 // NOTE: Moving from item -> token -> item copies the Attribute vector twice
! | 778 // NOTE: Moving from item -> token -> item copies the Attribute vector twice
! |
774 AtomicHTMLToken fakeToken(HTMLToken::StartTag, item->localName(), item->attr
ibutes()); | 779 AtomicHTMLToken fakeToken(HTMLToken::StartTag, item->localName(), item->attr
ibutes()); |
775 if (item->namespaceURI() == HTMLNames::xhtmlNamespaceURI) | 780 if (item->namespaceURI() == HTMLNames::xhtmlNamespaceURI) |
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
881 queueTask(task); | 886 queueTask(task); |
882 } | 887 } |
883 | 888 |
884 DEFINE_TRACE(HTMLConstructionSite::PendingText) | 889 DEFINE_TRACE(HTMLConstructionSite::PendingText) |
885 { | 890 { |
886 visitor->trace(parent); | 891 visitor->trace(parent); |
887 visitor->trace(nextChild); | 892 visitor->trace(nextChild); |
888 } | 893 } |
889 | 894 |
890 } // namespace blink | 895 } // namespace blink |
OLD | NEW |