| Index: third_party/WebKit/LayoutTests/fast/events/inputevents/inputevent-transpose.html
|
| diff --git a/third_party/WebKit/LayoutTests/fast/events/inputevents/inputevent-transpose.html b/third_party/WebKit/LayoutTests/fast/events/inputevents/inputevent-transpose.html
|
| index b87a4bd2edfa76190f15e224ad3cae333420ad77..48ca2fb17d4eef8c94b73698d2bdb1a6b78f01fb 100644
|
| --- a/third_party/WebKit/LayoutTests/fast/events/inputevents/inputevent-transpose.html
|
| +++ b/third_party/WebKit/LayoutTests/fast/events/inputevents/inputevent-transpose.html
|
| @@ -1,6 +1,7 @@
|
| <title>InputEvent: macOS Transpose</title>
|
| <script src="../../../resources/testharness.js"></script>
|
| <script src="../../../resources/testharnessreport.js"></script>
|
| +<script src='../../../editing/assert_selection.js'></script>
|
| <div id="editable" contenteditable></div>
|
| <textarea id="txt"></textarea>
|
| <script>
|
| @@ -9,7 +10,8 @@ test(() => {
|
|
|
| let eventRecorder = '';
|
| document.addEventListener('beforeinput', event => {
|
| - eventRecorder += `beforeinput-${event.inputType}-${event.data}-`;
|
| + const range = event.getTargetRanges()[0];
|
| + eventRecorder += `beforeinput-${event.inputType}-${event.data}-${range.startOffset}-${range.endOffset}-`;
|
| });
|
| document.addEventListener('input', event => {
|
| eventRecorder += `input-${event.inputType}`;
|
| @@ -25,7 +27,7 @@ test(() => {
|
| eventRecorder = '';
|
| testRunner.execCommand('transpose');
|
| assert_equals(editable.innerHTML, 'acb');
|
| - assert_equals(eventRecorder, 'beforeinput-insertTranspose-cb-input-insertTranspose');
|
| + assert_equals(eventRecorder, 'beforeinput-insertTranspose-cb-1-3-input-insertTranspose');
|
| }, 'Transpose on contenteditable');
|
|
|
| test(() => {
|
| @@ -50,4 +52,34 @@ test(() => {
|
| assert_equals(txt.value, 'acb');
|
| assert_equals(eventRecorder, 'beforeinput-insertTranspose-cb-input-insertTranspose');
|
| }, 'Transpose on <textarea>');
|
| +
|
| +test(() => {
|
| + assert_not_equals(window.testRunner, undefined, 'This test requires testRunner.');
|
| +
|
| + assert_selection(
|
| + '<div contenteditable id="editable1">a|bc</div>',
|
| + selection => {
|
| + const editable1 = selection.document.getElementById('editable1');
|
| + editable1.addEventListener('beforeinput', event => {
|
| + event.preventDefault();
|
| + });
|
| + testRunner.execCommand('transpose');
|
| + },
|
| + '<div contenteditable id="editable1">a|bc</div>');
|
| +}, 'Transpose should not modify selection when canceled');
|
| +
|
| +test(() => {
|
| + assert_not_equals(window.testRunner, undefined, 'This test requires testRunner.');
|
| +
|
| + assert_selection(
|
| + '<div contenteditable id="editable1">a|bc</div>',
|
| + selection => {
|
| + const editable1 = selection.document.getElementById('editable1');
|
| + editable1.addEventListener('beforeinput', event => {
|
| + selection.collapse(editable1, 1); // End of first line.
|
| + });
|
| + testRunner.execCommand('transpose');
|
| + },
|
| + '<div contenteditable id="editable1">acb|</div>');
|
| +}, 'Transpose should still apply when selection changed');
|
| </script>
|
|
|