| Index: third_party/WebKit/LayoutTests/fast/events/inputevents/before-input-ranges.html
|
| diff --git a/third_party/WebKit/LayoutTests/fast/events/inputevents/before-input-ranges.html b/third_party/WebKit/LayoutTests/fast/events/inputevents/before-input-ranges.html
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..e9e46215c3749882012bcdca3cc6b84e94f380ae
|
| --- /dev/null
|
| +++ b/third_party/WebKit/LayoutTests/fast/events/inputevents/before-input-ranges.html
|
| @@ -0,0 +1,78 @@
|
| +<!DOCTYPE html>
|
| +<html>
|
| +<head>
|
| +<title>InputEvent: beforeinput getRanges()</title>
|
| +<script src="../../../resources/testharness.js"></script>
|
| +<script src="../../../resources/testharnessreport.js"></script>
|
| +</head>
|
| +<body>
|
| +<p id="sample" contentEditable="true"></p>
|
| +<div id="log"></div>
|
| +<script>
|
| +test(function() {
|
| + if (!window.eventSender) {
|
| + document.write('This test requires eventSender');
|
| + return;
|
| + }
|
| +
|
| + // Setup data.
|
| + var sample = document.getElementById('sample');
|
| + sample.innerHTML = 'hel<i>lo wo</i><b>rld</b>';
|
| +
|
| + // Move caret right after 'hello world '.
|
| + var selection = window.getSelection();
|
| + selection.collapse(sample.firstChild, 0);
|
| + selection.modify('move', 'forward', 'line');
|
| +
|
| + // Check event for delete-word-backward.
|
| + var handler = function(event) {
|
| + var ranges = event.getRanges();
|
| + assert_equals(ranges.length, 1);
|
| + var range = ranges[0];
|
| + assert_equals(range.startOffset, 3);
|
| + assert_equals(range.startContainer.textContent, 'lo wo');
|
| + assert_equals(range.endOffset, 3);
|
| + assert_equals(range.endContainer.textContent, 'rld');
|
| + sample.removeEventListener('beforeinput', handler);
|
| + };
|
| + sample.addEventListener('beforeinput', handler);
|
| +
|
| + // Send delete-word-backward, should delete 'world' across I and B.
|
| + var isMacOSX = navigator.userAgent.indexOf("Mac OS X") != -1;
|
| + eventSender.keyDown('backspace', [isMacOSX ? 'altKey' : 'ctrlKey']);
|
| + assert_equals(sample.innerHTML, 'hel<i>lo </i>');
|
| +}, 'Testing getRanges() returns correct range across elements.');
|
| +
|
| +test(function() {
|
| + if (!window.eventSender) {
|
| + document.write('This test requires eventSender');
|
| + return;
|
| + }
|
| +
|
| + // Setup data.
|
| + var sample = document.getElementById('sample');
|
| + sample.innerHTML = 'hello';
|
| +
|
| + // Move caret right after 'hello'.
|
| + var selection = window.getSelection();
|
| + selection.collapse(sample.firstChild, 0);
|
| + selection.modify('move', 'forward', 'word');
|
| +
|
| + // Check and hold event for delete-character-backward.
|
| + var lastEvent;
|
| + var handler = function(event) {
|
| + lastEvent = event;
|
| + assert_equals(lastEvent.getRanges().length, 1);
|
| + sample.removeEventListener('beforeinput', handler);
|
| + };
|
| + sample.addEventListener('beforeinput', handler);
|
| +
|
| + // Send delete-character-backward.
|
| + eventSender.keyDown('backspace', []);
|
| + assert_equals(sample.textContent, 'hell');
|
| + // |getRanges| should be cleared after dispatch.
|
| + assert_equals(lastEvent.getRanges().length, 0);
|
| +}, 'Testing getRanges() cleared after dispatch.');
|
| +</script>
|
| +</body>
|
| +</html>
|
|
|