blob: e52a96c2115cb8f87a73866ca60e719503c2d639 [file] [log] [blame]
<!doctype html>
<script src="../../resources/testharness.js"></script>
<script src="../../resources/testharnessreport.js"></script>
<body contenteditable="true">
<p>
To test interactively, drag selected text onto the iframe
below and verify that a drag caret appears inside the frame.
</p>
<iframe id="subframe" style="border: 1px solid black;"
srcdoc="<body contenteditable><span id='target'>There</span> should be a caret here --><br>See it?</body>"></iframe>
<script>
const t = async_test('Drag-In-Iframge');
window.addEventListener('load', t.step_func_done(() => {
var iframe = document.getElementById("subframe");
var target = iframe.contentDocument.getElementById("target");
var x1 = iframe.offsetLeft + target.offsetLeft + target.offsetWidth / 2;
var x2 = iframe.offsetLeft + iframe.offsetWidth - 20;
var y = iframe.offsetTop + target.offsetTop + target.offsetHeight / 2;
iframe.contentWindow.getSelection().setBaseAndExtent(target, 0, target, 1);
assert_own_property(window, 'eventSender');
assert_own_property(window, 'internals');
eventSender.mouseMoveTo(x1, y);
eventSender.dragMode = false;
eventSender.mouseDown();
eventSender.leapForward(1000);
eventSender.mouseMoveTo(x2, y);
const caretInMainFrame = internals.getDragCaret();
assert_equals(caretInMainFrame.anchorNode, null,
'No drag caret in main frame');
const caretInIframe = iframe.contentWindow.internals.getDragCaret();
assert_true(caretInIframe.isCollapsed,
'Caret in iframe should be collapsed');
const textBeforeCaret= target.nextSibling;
assert_equals(caretInIframe.anchorNode, textBeforeCaret);
assert_equals(caretInIframe.anchorOffset, textBeforeCaret.length);
// To avoid crash, we should release mouse button.
eventSender.mouseUp();
}));
</script>
</body>
</html>