| <!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> |