Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1388)

Unified Diff: Source/core/page/DOMSelection.cpp

Issue 22608004: Improve 'Selection' exception messages. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Rewording. Created 7 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: Source/core/page/DOMSelection.cpp
diff --git a/Source/core/page/DOMSelection.cpp b/Source/core/page/DOMSelection.cpp
index f26d1faf09a2082e36b8c049893b594bad9be3a5..39d10d84158854f2493a4b6d814e72dcdd83ddac 100644
--- a/Source/core/page/DOMSelection.cpp
+++ b/Source/core/page/DOMSelection.cpp
@@ -199,7 +199,7 @@ void DOMSelection::collapse(Node* node, int offset, ExceptionState& es)
return;
if (offset < 0) {
- es.throwDOMException(IndexSizeError);
+ es.throwDOMException(IndexSizeError, "Failed to execute 'collapse' on a 'Selection' object: " + String::number(offset) + " is not a valid offset.");
return;
}
@@ -218,7 +218,7 @@ void DOMSelection::collapseToEnd(ExceptionState& es)
const VisibleSelection& selection = m_frame->selection()->selection();
if (selection.isNone()) {
- es.throwDOMException(InvalidStateError);
+ es.throwDOMException(InvalidStateError, "Failed to execute 'collapseToEnd' on a 'Selection' object: there is no selection.");
arv (Not doing code reviews) 2013/08/13 13:57:31 I feel like we are repeating ourselves a lot. Mayb
Mike West 2013/08/13 14:00:17 I can do that. I have vague performance reluctance
arv (Not doing code reviews) 2013/08/13 14:07:49 Yeah, I don't think we need to optimize for the ex
return;
}
@@ -233,7 +233,7 @@ void DOMSelection::collapseToStart(ExceptionState& es)
const VisibleSelection& selection = m_frame->selection()->selection();
if (selection.isNone()) {
- es.throwDOMException(InvalidStateError);
+ es.throwDOMException(InvalidStateError, "Failed to execute 'collapseToStart' on a 'Selection' object: there is no selection.");
return;
}
@@ -252,8 +252,13 @@ void DOMSelection::setBaseAndExtent(Node* baseNode, int baseOffset, Node* extent
if (!m_frame)
return;
- if (baseOffset < 0 || extentOffset < 0) {
- es.throwDOMException(IndexSizeError);
+ if (baseOffset < 0) {
+ es.throwDOMException(IndexSizeError, "Failed to execute 'setBaseAndExtent' on a 'Selection' object: " + String::number(baseOffset) + " is not a valid base offset.");
+ return;
+ }
+
+ if (extentOffset < 0) {
+ es.throwDOMException(IndexSizeError, "Failed to execute 'setBaseAndExtent' on a 'Selection' object: " + String::number(extentOffset) + " is not a valid extent offset.");
return;
}
@@ -272,7 +277,7 @@ void DOMSelection::setPosition(Node* node, int offset, ExceptionState& es)
if (!m_frame)
return;
if (offset < 0) {
- es.throwDOMException(IndexSizeError);
+ es.throwDOMException(IndexSizeError, "Failed to execute 'setPosition' on a 'Selection' object: " + String::number(offset) + " is not a valid offset.");
return;
}
@@ -339,12 +344,16 @@ void DOMSelection::extend(Node* node, int offset, ExceptionState& es)
return;
if (!node) {
- es.throwDOMException(TypeMismatchError);
+ es.throwDOMException(TypeMismatchError, "Failed to execute 'extend' on a 'Selection' object: The node provided is invalid.");
return;
}
- if (offset < 0 || offset > (node->offsetInCharacters() ? caretMaxOffset(node) : (int)node->childNodeCount())) {
- es.throwDOMException(IndexSizeError);
+ if (offset < 0) {
+ es.throwDOMException(IndexSizeError, "Failed to execute 'extend' on a 'Selection' object: " + String::number(offset) + " is not a valid offset.");
+ return;
+ }
+ if (offset > (node->offsetInCharacters() ? caretMaxOffset(node) : (int)node->childNodeCount())) {
+ es.throwDOMException(IndexSizeError, "Failed to execute 'extend' on a 'Selection' object: " + String::number(offset) + " is larger than the given node's length.");
return;
}
@@ -361,7 +370,7 @@ PassRefPtr<Range> DOMSelection::getRangeAt(int index, ExceptionState& es)
return 0;
if (index < 0 || index >= rangeCount()) {
- es.throwDOMException(IndexSizeError);
+ es.throwDOMException(IndexSizeError, "Failed to execute 'getRangeAt' on a 'Selection' object: " + String::number(index) + " is not a valid index.");
return 0;
}

Powered by Google App Engine
This is Rietveld 408576698