| 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())
|
|
|