Title: [105649] trunk
- Revision
- 105649
- Author
- [email protected]
- Date
- 2012-01-23 15:46:15 -0800 (Mon, 23 Jan 2012)
Log Message
https://bugs.webkit.org/show_bug.cgi?id=75799
Calling intersectsNode on a detached range should throw.
Source/WebCore:
INVALID_STATE_ERR exception should be thrown if intersectsNode is called on a detached Range.
Patch by Joe Thomas <[email protected]> on 2012-01-23
Reviewed by Darin Adler.
Test: fast/dom/Range/range-intersectsNode-exception.html
* dom/Range.cpp:
(WebCore::Range::intersectsNode): Throwing INVALID_STATE_ERR exception if the range is detached.
LayoutTests:
Added test case to verify the exception thrown while calling intersectsNode on a detached range.
Patch by Joe Thomas <[email protected]> on 2012-01-23
Reviewed by Darin Adler.
* fast/dom/Range/range-intersectsNode-exception-expected.txt: Added.
* fast/dom/Range/range-intersectsNode-exception.html: Added.
* fast/dom/Range/range-intersectsNode-expected.txt:
* fast/dom/Range/resources/intersectsNode.js: Modified the test case to catch the exception.
Modified Paths
Added Paths
Diff
Modified: trunk/LayoutTests/ChangeLog (105648 => 105649)
--- trunk/LayoutTests/ChangeLog 2012-01-23 23:35:44 UTC (rev 105648)
+++ trunk/LayoutTests/ChangeLog 2012-01-23 23:46:15 UTC (rev 105649)
@@ -1,3 +1,17 @@
+2012-01-23 Joe Thomas <[email protected]>
+
+ https://bugs.webkit.org/show_bug.cgi?id=75799
+ Calling intersectsNode on a detached range should throw.
+
+ Added test case to verify the exception thrown while calling intersectsNode on a detached range.
+
+ Reviewed by Darin Adler.
+
+ * fast/dom/Range/range-intersectsNode-exception-expected.txt: Added.
+ * fast/dom/Range/range-intersectsNode-exception.html: Added.
+ * fast/dom/Range/range-intersectsNode-expected.txt:
+ * fast/dom/Range/resources/intersectsNode.js: Modified the test case to catch the exception.
+
2012-01-23 Mike Lawther <[email protected]>
getComputedStyle margin percentage test for CSS calc
Added: trunk/LayoutTests/fast/dom/Range/range-intersectsNode-exception-expected.txt (0 => 105649)
--- trunk/LayoutTests/fast/dom/Range/range-intersectsNode-exception-expected.txt (rev 0)
+++ trunk/LayoutTests/fast/dom/Range/range-intersectsNode-exception-expected.txt 2012-01-23 23:46:15 UTC (rev 105649)
@@ -0,0 +1,10 @@
+Test for Bug: 75799 - Calling intersectsNode on a detached range should throw
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS range.intersectsNode(document.getElementById('b1')) threw exception Error: INVALID_STATE_ERR: DOM Exception 11.
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
Added: trunk/LayoutTests/fast/dom/Range/range-intersectsNode-exception.html (0 => 105649)
--- trunk/LayoutTests/fast/dom/Range/range-intersectsNode-exception.html (rev 0)
+++ trunk/LayoutTests/fast/dom/Range/range-intersectsNode-exception.html 2012-01-23 23:46:15 UTC (rev 105649)
@@ -0,0 +1,22 @@
+<html>
+<head>
+<script src=""
+</head>
+<body>
+<!-- hidden area to create the ranges being tested -->
+<div style="visibility: hidden">
+ <div id=a1>a1
+ <div id=b1>b1</div>
+ </div>
+</div>
+
+<script>
+description("Test for Bug: 75799 - Calling intersectsNode on a detached range should throw");
+var range = document.createRange();
+range.selectNode(document.getElementById("a1"));
+range.detach();
+shouldThrow("range.intersectsNode(document.getElementById('b1'))", '"Error: INVALID_STATE_ERR: DOM Exception 11"');
+</script>
+<script src=""
+</body>
+</html>
Modified: trunk/LayoutTests/fast/dom/Range/range-intersectsNode-expected.txt (105648 => 105649)
--- trunk/LayoutTests/fast/dom/Range/range-intersectsNode-expected.txt 2012-01-23 23:35:44 UTC (rev 105648)
+++ trunk/LayoutTests/fast/dom/Range/range-intersectsNode-expected.txt 2012-01-23 23:46:15 UTC (rev 105649)
@@ -44,7 +44,7 @@
PASS intersects is true
2.1 Detached Range, attached node
-PASS intersects is false
+PASS detachedRange.intersectsNode(document.getElementById('a1')) threw exception Error: INVALID_STATE_ERR: DOM Exception 11.
2.2 attached range, detached node
PASS intersects is false
Modified: trunk/LayoutTests/fast/dom/Range/resources/intersectsNode.js (105648 => 105649)
--- trunk/LayoutTests/fast/dom/Range/resources/intersectsNode.js 2012-01-23 23:35:44 UTC (rev 105648)
+++ trunk/LayoutTests/fast/dom/Range/resources/intersectsNode.js 2012-01-23 23:46:15 UTC (rev 105649)
@@ -95,8 +95,7 @@
debug("2.1 Detached Range, attached node");
var detachedRange = document.createRange();
detachedRange.detach();
-intersects = detachedRange.intersectsNode(document.getElementById("a1"));
-shouldBeFalse("intersects");
+shouldThrow("detachedRange.intersectsNode(document.getElementById('a1'))", '"Error: INVALID_STATE_ERR: DOM Exception 11"');
debug("");
debug("2.2 attached range, detached node");
Modified: trunk/Source/WebCore/ChangeLog (105648 => 105649)
--- trunk/Source/WebCore/ChangeLog 2012-01-23 23:35:44 UTC (rev 105648)
+++ trunk/Source/WebCore/ChangeLog 2012-01-23 23:46:15 UTC (rev 105649)
@@ -1,3 +1,17 @@
+2012-01-23 Joe Thomas <[email protected]>
+
+ https://bugs.webkit.org/show_bug.cgi?id=75799
+ Calling intersectsNode on a detached range should throw.
+
+ INVALID_STATE_ERR exception should be thrown if intersectsNode is called on a detached Range.
+
+ Reviewed by Darin Adler.
+
+ Test: fast/dom/Range/range-intersectsNode-exception.html
+
+ * dom/Range.cpp:
+ (WebCore::Range::intersectsNode): Throwing INVALID_STATE_ERR exception if the range is detached.
+
2012-01-23 Daniel Cheng <[email protected]>
Convert DataTransferItem/DataTransferItemList back into an interface class
Modified: trunk/Source/WebCore/dom/Range.cpp (105648 => 105649)
--- trunk/Source/WebCore/dom/Range.cpp 2012-01-23 23:35:44 UTC (rev 105648)
+++ trunk/Source/WebCore/dom/Range.cpp 2012-01-23 23:46:15 UTC (rev 105649)
@@ -589,14 +589,17 @@
// http://developer.mozilla.org/en/docs/DOM:range.intersectsNode
// Returns a bool if the node intersects the range.
+ // Throw exception if the range is already detached.
+ if (!m_start.container()) {
+ ec = INVALID_STATE_ERR;
+ return false;
+ }
if (!refNode) {
ec = NOT_FOUND_ERR;
return false;
}
-
- if ((!m_start.container() && refNode->attached())
- || (m_start.container() && !refNode->attached())
- || refNode->document() != m_ownerDocument) {
+
+ if (!refNode->attached() || refNode->document() != m_ownerDocument) {
// Firefox doesn't throw an exception for these cases; it returns false.
return false;
}
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes