| Index: third_party/WebKit/LayoutTests/editing/selection/selection-update-range-after-addrange.html
|
| diff --git a/third_party/WebKit/LayoutTests/editing/selection/selection-update-range-after-addrange.html b/third_party/WebKit/LayoutTests/editing/selection/selection-update-range-after-addrange.html
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..c85b1493363efc33ce85e8a52f388f10e7ce1f55
|
| --- /dev/null
|
| +++ b/third_party/WebKit/LayoutTests/editing/selection/selection-update-range-after-addrange.html
|
| @@ -0,0 +1,57 @@
|
| +<!DOCTYPE html>
|
| +<script src="../../resources/testharness.js"></script>
|
| +<script src="../../resources/testharnessreport.js"></script>
|
| +<p>abcdef</p>
|
| +<script>
|
| +test(() => {
|
| + let selection = getSelection();
|
| + selection.removeAllRanges();
|
| + let range = document.createRange();
|
| + let text = document.querySelector('p').firstChild;
|
| + range.setStart(text, 1);
|
| + range.setEnd(text, 2);
|
| +
|
| + selection.addRange(range);
|
| + assert_equals(selection.anchorNode, text);
|
| + assert_equals(selection.anchorOffset, 1);
|
| + assert_equals(selection.focusNode, text);
|
| + assert_equals(selection.focusOffset, 2);
|
| +
|
| + range.setStart(text, 0);
|
| + assert_equals(selection.anchorOffset, 0);
|
| +}, 'Mutation of Range after adding it to Selection should update Selection attributes.');
|
| +
|
| +test(() => {
|
| + let selection = getSelection();
|
| + selection.removeAllRanges();
|
| + let range = document.createRange();
|
| + range.selectNode(document.body);
|
| + selection.addRange(range);
|
| + assert_equals(selection.rangeCount, 1);
|
| +
|
| + let document2 = document.implementation.createHTMLDocument();
|
| + document2.innerHTML = '<html><body>abc</body></html>';
|
| + range.selectNode(document2.body);
|
| + // TODO(tkent): The specification says nothing about such case. For now, we
|
| + // unregister the Range from the Selection for ease of implementation
|
| + // though Firefox and Edge keep |selection.getRangeAt(0) == range|.
|
| + assert_equals(selection.rangeCount, 0);
|
| +}, 'Switching Range document should clear registered Selection.');
|
| +
|
| +test(() => {
|
| + let selection = getSelection();
|
| + selection.removeAllRanges();
|
| + let range = document.createRange();
|
| + range.selectNode(document.body);
|
| + selection.addRange(range);
|
| + assert_equals(selection.rangeCount, 1);
|
| +
|
| + let span = document.createElement('span');
|
| + span.innerHTML = 'text';
|
| + range.selectNode(span.firstChild);
|
| + // TODO(tkent): The specification says nothing about such case. For now, we
|
| + // unregister the Range from the Selection for ease of implementation
|
| + // though Firefox and Edge keep |selection.getRangeAt(0) == range|.
|
| + assert_equals(selection.rangeCount, 0);
|
| +}, 'Updating Range for another root should clear registered Selection.');
|
| +</script>
|
|
|