| <!DOCTYPE html> | |
| <title>Selection.removeRange tests</title> | |
| <body> | |
| <script src="/resources/testharness.js"></script> | |
| <script src="/resources/testharnessreport.js"></script> | |
| <script src="common.js"></script> | |
| <script> | |
| "use strict"; | |
| testRanges.forEach(function(rangeData, index) { | |
| var endpoints = eval(rangeData); | |
| if (!isSelectableNode(endpoints[0]) || !isSelectableNode(endpoints[2])) | |
| return; | |
| test(function() { | |
| var selection = getSelection(); | |
| selection.removeAllRanges(); | |
| var range = ownerDocument(endpoints[0]).createRange(); | |
| range.setStart(endpoints[0], endpoints[1]); | |
| range.setEnd(endpoints[2], endpoints[3]); | |
| selection.addRange(range); | |
| assert_equals(selection.rangeCount, 1); | |
| selection.removeRange(range); | |
| assert_equals(selection.rangeCount, 0, 'Range should be correctly removed.'); | |
| assert_equals(selection.anchorNode, null); | |
| assert_equals(selection.focusNode, null); | |
| selection.addRange(range); | |
| assert_equals(selection.rangeCount, 1); | |
| var equivalentRange = ownerDocument(endpoints[0]).createRange(); | |
| equivalentRange.setStart(endpoints[0], endpoints[1]); | |
| equivalentRange.setEnd(endpoints[2], endpoints[3]); | |
| assert_throws_dom("NotFoundError", | |
| function() { selection.removeRange(equivalentRange) }, | |
| "Removing a different range should throw"); | |
| assert_equals(selection.rangeCount, 1, 'Equivalent Range should not remove the registered Range.'); | |
| }, 'removeRange() with Range ' + index); | |
| }); | |
| test(function() { | |
| var selection = getSelection(); | |
| assert_throws_js(TypeError, function() { selection.removeRange(null); }); | |
| assert_throws_js(TypeError, function() { selection.removeRange(selection); }); | |
| }, 'removeRange() argument is non-optional Range'); | |
| </script> | |
| </body> |