| <!DOCTYPE HTML> |
| <meta charset=utf-8> |
| <title>Selection across multiple contenteditable</title> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <button id="button"></button> |
| <div contenteditable id="host1"></div> |
| <div contenteditable id="host2"></div> |
| <div contenteditable id="host3"> |
| <div contenteditable="false"> |
| <div contenteditable id="host4"></div> |
| </div> |
| </div> |
| <script> |
| function clearFocus() { |
| // Move focus from editable host to a button to remove selection limiter |
| button.focus(); |
| } |
| test(() => { |
| clearFocus(); |
| getSelection().collapse(host1); |
| assert_equals(document.activeElement, host1); |
| getSelection().collapse(host2); |
| assert_equals(document.activeElement, host2); |
| }, "Selection.collapse() must succeed across siblings"); |
| |
| test(() => { |
| clearFocus(); |
| getSelection().collapse(host4); |
| assert_equals(document.activeElement, host4); |
| getSelection().collapse(host3); |
| assert_equals(document.activeElement, host3); |
| }, "Selection.collapse() must succeed for the ancestor"); |
| |
| |
| test(() => { |
| clearFocus(); |
| getSelection().collapse(host3); |
| assert_equals(document.activeElement, host3); |
| getSelection().collapse(host4); |
| assert_equals(document.activeElement, host4); |
| }, "Selection.collapse() must succeed for the descendant"); |
| </script> |