| <!doctype html> |
| <script src="../../../resources/testharness.js"></script> |
| <script src="../../../resources/testharnessreport.js"></script> |
| <script src="../../assert_selection.js"></script> |
| <div id="log"></div> |
| <script> |
| test(() => { |
| assert_selection( |
| '<div>foo<span style="-webkit-user-select:all">|bar</span>baz</div>', |
| selection => selection.modify('extend', 'forward', 'character'), |
| '<div>foo<span style="-webkit-user-select:all">^bar|</span>baz</div>'); |
| assert_selection( |
| '<div>foo<span style="-webkit-user-select:all">|bar</span>baz</div>', |
| selection => selection.modify('extend', 'right', 'character'), |
| '<div>foo<span style="-webkit-user-select:all">^bar|</span>baz</div>'); |
| assert_selection( |
| '<div>foo<span style="-webkit-user-select:all">^bar|</span>baz</div>', |
| selection => selection.modify('extend', 'backward', 'character'), |
| '<div>foo|<span style="-webkit-user-select:all">bar</span>baz</div>'); |
| assert_selection( |
| '<div>foo<span style="-webkit-user-select:all">^bar|</span>baz</div>', |
| selection => selection.modify('extend', 'left', 'character'), |
| '<div>foo|<span style="-webkit-user-select:all">bar</span>baz</div>'); |
| }, 'Modify extend skips over user-select:all.'); |
| test(() => { |
| assert_selection( |
| '<div>foo<span style="-webkit-user-select:all">|bar</span>baz</div>', |
| selection => selection.modify('move', 'forward', 'character'), |
| '<div>foo<span style="-webkit-user-select:all">b|ar</span>baz</div>'); |
| assert_selection( |
| '<div>foo<span style="-webkit-user-select:all">|bar</span>baz</div>', |
| selection => selection.modify('move', 'right', 'character'), |
| '<div>foo<span style="-webkit-user-select:all">b|ar</span>baz</div>'); |
| assert_selection( |
| '<div>foo<span style="-webkit-user-select:all">bar|</span>baz</div>', |
| selection => selection.modify('move', 'backward', 'character'), |
| '<div>foo<span style="-webkit-user-select:all">ba|r</span>baz</div>'); |
| assert_selection( |
| '<div>foo<span style="-webkit-user-select:all">bar|</span>baz</div>', |
| selection => selection.modify('move', 'left', 'character'), |
| '<div>foo<span style="-webkit-user-select:all">ba|r</span>baz</div>'); |
| }, 'Modify move is not affected by user-select:all.'); |
| |
| function mouseDownAt(x, y) { |
| assert_own_property(window, 'eventSender'); |
| eventSender.dragMode = false; |
| eventSender.mouseMoveTo(x, y); |
| eventSender.mouseDown(); |
| } |
| |
| function mouseMoveFromTo(y, fromX, toX) { |
| mouseDownAt(fromX, y); |
| eventSender.leapForward(100); |
| eventSender.mouseMoveTo(toX, y); |
| eventSender.mouseUp(); |
| } |
| |
| const kSample = [ |
| '<div id="div">', |
| 'abc <span style="user-select:all">', |
| 'def <span id="middle">ghi </span>jkl ', |
| '</span>mno', |
| '</div>' |
| ].join(''); |
| |
| test(() => assert_selection( |
| kSample, |
| selection => { |
| const div = selection.document.getElementById('div'); |
| const middle = selection.document.getElementById('middle'); |
| mouseDownAt(selection.computeLeft(middle), selection.computeTop(div)); |
| }, |
| '<div id="div">abc <span style="user-select:all">^def <span id="middle">ghi </span>jkl |</span>mno</div>'), |
| 'Click inside user-select:all'); |
| |
| test(() => assert_selection( |
| kSample, |
| selection => { |
| const div = selection.document.getElementById('div'); |
| const middle = selection.document.getElementById('middle'); |
| mouseMoveFromTo(selection.computeTop(div), |
| selection.computeLeft(div), |
| selection.computeLeft(middle)); |
| }, |
| '<div id="div">^abc <span style="user-select:all">def <span id="middle">ghi </span>jkl |</span>mno</div>'), |
| 'Drag from left of user-select:all to inside user-select:all'); |
| |
| test(() => assert_selection( |
| kSample, |
| selection => { |
| const div = selection.document.getElementById('div'); |
| const middle = selection.document.getElementById('middle'); |
| mouseMoveFromTo(selection.computeTop(div), |
| selection.computeLeft(div) + div.offsetWidth, |
| selection.computeLeft(middle)); |
| }, |
| '<div id="div">abc <span style="user-select:all">|def <span id="middle">ghi </span>jkl </span>mno^</div>'), |
| 'Drag from right of user-select:all to inside user-select:all'); |
| |
| test(() => { |
| assert_selection( |
| '<div>foo<span style="-webkit-user-select:all">bar<span id="middle">bar</span>bar</span>|baz</div>', |
| selection => { |
| var middle = selection.document.getElementById('middle'); |
| selection.selectAllChildren(middle);}, |
| '<div>foo<span style="-webkit-user-select:all">bar<span id="middle">^bar|</span>bar</span>baz</div>'); |
| }, 'Selection.selectAllChildren is not affected by user-select:all.'); |
| </script> |