| OLD | NEW | 
|---|
| 1 /* | 1 /* | 
| 2  * Copyright (c) 2009 Google Inc. All rights reserved. | 2  * Copyright (c) 2009 Google Inc. All rights reserved. | 
| 3  * | 3  * | 
| 4  * Redistribution and use in source and binary forms, with or without | 4  * Redistribution and use in source and binary forms, with or without | 
| 5  * modification, are permitted provided that the following conditions are | 5  * modification, are permitted provided that the following conditions are | 
| 6  * met: | 6  * met: | 
| 7  * | 7  * | 
| 8  *     * Redistributions of source code must retain the above copyright | 8  *     * 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  *     * Redistributions in binary form must reproduce the above | 10  *     * Redistributions in binary form must reproduce the above | 
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 45     : SimpleEditCommand(element->document()) | 45     : SimpleEditCommand(element->document()) | 
| 46     , m_elementToReplace(element) | 46     , m_elementToReplace(element) | 
| 47 { | 47 { | 
| 48     ASSERT(m_elementToReplace); | 48     ASSERT(m_elementToReplace); | 
| 49 } | 49 } | 
| 50 | 50 | 
| 51 static void swapInNodePreservingAttributesAndChildren(HTMLElement* newNode, HTML
    Element* nodeToReplace) | 51 static void swapInNodePreservingAttributesAndChildren(HTMLElement* newNode, HTML
    Element* nodeToReplace) | 
| 52 { | 52 { | 
| 53     ASSERT(nodeToReplace->inDocument()); | 53     ASSERT(nodeToReplace->inDocument()); | 
| 54     RefPtr<ContainerNode> parentNode = nodeToReplace->parentNode(); | 54     RefPtr<ContainerNode> parentNode = nodeToReplace->parentNode(); | 
| 55     parentNode->insertBefore(newNode, nodeToReplace, ASSERT_NO_EXCEPTION_STATE); | 55     parentNode->insertBefore(newNode, nodeToReplace, ASSERT_NO_EXCEPTION); | 
| 56 | 56 | 
| 57     NodeVector children; | 57     NodeVector children; | 
| 58     getChildNodes(nodeToReplace, children); | 58     getChildNodes(nodeToReplace, children); | 
| 59     for (size_t i = 0; i < children.size(); ++i) | 59     for (size_t i = 0; i < children.size(); ++i) | 
| 60         newNode->appendChild(children[i], ASSERT_NO_EXCEPTION_STATE); | 60         newNode->appendChild(children[i], ASSERT_NO_EXCEPTION); | 
| 61 | 61 | 
| 62     // FIXME: Fix this to send the proper MutationRecords when MutationObservers
     are present. | 62     // FIXME: Fix this to send the proper MutationRecords when MutationObservers
     are present. | 
| 63     newNode->cloneDataFromElement(*nodeToReplace); | 63     newNode->cloneDataFromElement(*nodeToReplace); | 
| 64 | 64 | 
| 65     parentNode->removeChild(nodeToReplace, ASSERT_NO_EXCEPTION_STATE); | 65     parentNode->removeChild(nodeToReplace, ASSERT_NO_EXCEPTION); | 
| 66 } | 66 } | 
| 67 | 67 | 
| 68 void ReplaceNodeWithSpanCommand::doApply() | 68 void ReplaceNodeWithSpanCommand::doApply() | 
| 69 { | 69 { | 
| 70     if (!m_elementToReplace->inDocument()) | 70     if (!m_elementToReplace->inDocument()) | 
| 71         return; | 71         return; | 
| 72     if (!m_spanElement) | 72     if (!m_spanElement) | 
| 73         m_spanElement = createHTMLElement(m_elementToReplace->document(), spanTa
    g); | 73         m_spanElement = createHTMLElement(m_elementToReplace->document(), spanTa
    g); | 
| 74     swapInNodePreservingAttributesAndChildren(m_spanElement.get(), m_elementToRe
    place.get()); | 74     swapInNodePreservingAttributesAndChildren(m_spanElement.get(), m_elementToRe
    place.get()); | 
| 75 } | 75 } | 
| 76 | 76 | 
| 77 void ReplaceNodeWithSpanCommand::doUnapply() | 77 void ReplaceNodeWithSpanCommand::doUnapply() | 
| 78 { | 78 { | 
| 79     if (!m_spanElement->inDocument()) | 79     if (!m_spanElement->inDocument()) | 
| 80         return; | 80         return; | 
| 81     swapInNodePreservingAttributesAndChildren(m_elementToReplace.get(), m_spanEl
    ement.get()); | 81     swapInNodePreservingAttributesAndChildren(m_elementToReplace.get(), m_spanEl
    ement.get()); | 
| 82 } | 82 } | 
| 83 | 83 | 
| 84 #ifndef NDEBUG | 84 #ifndef NDEBUG | 
| 85 void ReplaceNodeWithSpanCommand::getNodesInCommand(HashSet<Node*>& nodes) | 85 void ReplaceNodeWithSpanCommand::getNodesInCommand(HashSet<Node*>& nodes) | 
| 86 { | 86 { | 
| 87     addNodeAndDescendants(m_elementToReplace.get(), nodes); | 87     addNodeAndDescendants(m_elementToReplace.get(), nodes); | 
| 88     addNodeAndDescendants(m_spanElement.get(), nodes); | 88     addNodeAndDescendants(m_spanElement.get(), nodes); | 
| 89 } | 89 } | 
| 90 #endif | 90 #endif | 
| 91 | 91 | 
| 92 } // namespace WebCore | 92 } // namespace WebCore | 
| OLD | NEW | 
|---|