Chromium Code Reviews| Index: Source/core/dom/Range.cpp |
| diff --git a/Source/core/dom/Range.cpp b/Source/core/dom/Range.cpp |
| index 0020d59410cc9e7d97e78678df1c14b96fb39b8b..17f2a4fe25afec1e81addb967926303c086cb174 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; |
| } |
| + // BAD_BOUNDARYPOINTS_ERR: Raised if the Range partially selects a non-Text node. |
|
Yuta Kitamura
2014/08/08 04:49:31
BAD_BOUNDARYPOINTS_ERR is a completely wrong docum
kangil_
2014/08/08 05:04:48
Done.
|
| + 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()) |