Index: Source/core/dom/Range.cpp |
diff --git a/Source/core/dom/Range.cpp b/Source/core/dom/Range.cpp |
index 0020d59410cc9e7d97e78678df1c14b96fb39b8b..44343a12b27f31859079e55d66724d76628d2c01 100644 |
--- a/Source/core/dom/Range.cpp |
+++ b/Source/core/dom/Range.cpp |
@@ -1208,6 +1208,18 @@ void Range::surroundContents(PassRefPtrWillBeRawPtr<Node> passNewParent, Excepti |
return; |
} |
+ // InvalidStateError: Raised if the Range partially selects a non-Text node. |
+ Node* startNonTextContainer = m_start.container(); |
+ if (startNonTextContainer->nodeType() == Node::TEXT_NODE) |
+ startNonTextContainer = startNonTextContainer->parentNode(); |
+ Node* endNonTextContainer = m_end.container(); |
+ if (endNonTextContainer->nodeType() == Node::TEXT_NODE) |
+ endNonTextContainer = endNonTextContainer->parentNode(); |
+ if (startNonTextContainer != endNonTextContainer) { |
+ exceptionState.throwDOMException(InvalidStateError, "The Range has partially selected a non-Text node."); |
+ return; |
+ } |
+ |
// InvalidNodeTypeError: Raised if node is an Attr, Entity, DocumentType, Notation, |
// Document, or DocumentFragment node. |
switch (newParent->nodeType()) { |
@@ -1252,18 +1264,6 @@ void Range::surroundContents(PassRefPtrWillBeRawPtr<Node> passNewParent, Excepti |
// FIXME: Do we need a check if the node would end up with a child node of a type not |
// allowed by the type of node? |
- // BAD_BOUNDARYPOINTS_ERR: Raised if the Range partially selects a non-Text node. |
- Node* startNonTextContainer = m_start.container(); |
- if (startNonTextContainer->nodeType() == Node::TEXT_NODE) |
- startNonTextContainer = startNonTextContainer->parentNode(); |
- Node* endNonTextContainer = m_end.container(); |
- if (endNonTextContainer->nodeType() == Node::TEXT_NODE) |
- endNonTextContainer = endNonTextContainer->parentNode(); |
- if (startNonTextContainer != endNonTextContainer) { |
- exceptionState.throwDOMException(InvalidStateError, "The Range has partially selected a non-Text node."); |
- return; |
- } |
- |
while (Node* n = newParent->firstChild()) { |
toContainerNode(newParent)->removeChild(n, exceptionState); |
if (exceptionState.hadException()) |