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> |