Chromium Code Reviews| Index: LayoutTests/editing/shadow/getRangeAt-end-of-text-node.html |
| diff --git a/LayoutTests/editing/shadow/getRangeAt-end-of-text-node.html b/LayoutTests/editing/shadow/getRangeAt-end-of-text-node.html |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..965733d8e1fd211e0fdb1842e59f0157873d3979 |
| --- /dev/null |
| +++ b/LayoutTests/editing/shadow/getRangeAt-end-of-text-node.html |
| @@ -0,0 +1,52 @@ |
| +<!DOCTYPE html> |
| +<script src="../../resources/testharness.js"></script> |
| +<script src="../../resources/testharnessreport.js"></script> |
| +<div id="editable" contenteditable>Test</div> |
| +<div id="shadowHost"></div> |
| +<script> |
| +(function () { |
| + function testSelectionGetRangeAt(name, selection, textNode) { |
| + selection.collapse(textNode, textNode.textContent.length); |
| + test(function () { |
| + assert_equals(selection.anchorNode, textNode); |
|
yosin_UTC9
2015/01/06 08:39:37
Since we change |getRangeAt()| function, we don't
kojii
2015/01/07 06:53:52
Done.
|
| + assert_equals(selection.anchorOffset, textNode.textContent.length); |
| + assert_true(selection.isCollapsed); |
| + }, name + ": collapsed: selection"); |
| + test(function () { |
| + var range = selection.getRangeAt(0); |
| + assert_equals(range.startContainer, textNode); |
| + assert_equals(range.startOffset, textNode.textContent.length); |
| + assert_true(range.collapsed); |
| + }, name + ": collapsed: selection.getRangeAt(0)"); |
| + |
| + var startOffset = 1, endOffset = 2; |
| + selection.setBaseAndExtent(textNode, startOffset, textNode, endOffset); |
|
yosin_UTC9
2015/01/06 08:39:36
Since, Firefox doesn't support |setBaseAndExtend()
kojii
2015/01/07 06:53:52
Done.
|
| + test(function () { |
| + assert_equals(selection.anchorNode, textNode); |
| + assert_equals(selection.anchorOffset, startOffset); |
| + assert_equals(selection.focusNode, textNode); |
| + assert_equals(selection.focusOffset, endOffset); |
| + assert_false(selection.isCollapsed); |
| + }, name + ": range: selection"); |
| + test(function () { |
| + var range = selection.getRangeAt(0); |
| + assert_equals(range.startContainer, textNode); |
| + assert_equals(range.startOffset, startOffset); |
| + assert_equals(range.endContainer, textNode); |
| + assert_equals(range.endOffset, endOffset); |
| + assert_false(range.collapsed); |
| + }, name + ": range: selection.getRangeAt(0)"); |
| + } |
| + |
| + testSelectionGetRangeAt("Non-Shadow", window.getSelection(), editable.firstChild); |
| + |
| + var shadowRoot = shadowHost.createShadowRoot(); |
| + shadowRoot.innerHTML = '<div id="editable" contenteditable>Test</div>'; |
| + var textNode = shadowRoot.querySelector("#editable").firstChild; |
| + testSelectionGetRangeAt("Shadow", shadowRoot.getSelection(), textNode); |
| + |
| + test(function () { |
|
yosin_UTC9
2015/01/06 08:39:37
Since we change |getRangeAt()| function, we don't
kojii
2015/01/07 06:53:52
Done.
|
| + assert_not_equals(window.getSelection().anchorNode, textNode); |
| + }, "Nodes in Shadow should not be exposed to window.getSelection()"); |
| +})(); |
| +</script> |