Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(15)

Side by Side Diff: third_party/WebKit/LayoutTests/fast/events/inputevents/inputevent-transpose.html

Issue 2779813002: [InputEvent] Don't modify selection when transpose was canceled (Closed)
Patch Set: Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 <title>InputEvent: macOS Transpose</title> 1 <title>InputEvent: macOS Transpose</title>
2 <script src="../../../resources/testharness.js"></script> 2 <script src="../../../resources/testharness.js"></script>
3 <script src="../../../resources/testharnessreport.js"></script> 3 <script src="../../../resources/testharnessreport.js"></script>
4 <script src='../../../editing/assert_selection.js'></script>
4 <div id="editable" contenteditable></div> 5 <div id="editable" contenteditable></div>
5 <textarea id="txt"></textarea> 6 <textarea id="txt"></textarea>
6 <script> 7 <script>
7 test(() => { 8 test(() => {
8 assert_not_equals(window.testRunner, undefined, 'This test requires testRunn er.'); 9 assert_not_equals(window.testRunner, undefined, 'This test requires testRunn er.');
9 10
10 let eventRecorder = ''; 11 let eventRecorder = '';
11 document.addEventListener('beforeinput', event => { 12 document.addEventListener('beforeinput', event => {
12 eventRecorder += `beforeinput-${event.inputType}-${event.data}-`; 13 const range = event.getTargetRanges()[0];
14 eventRecorder += `beforeinput-${event.inputType}-${event.data}-${range.s tartOffset}-${range.endOffset}-`;
13 }); 15 });
14 document.addEventListener('input', event => { 16 document.addEventListener('input', event => {
15 eventRecorder += `input-${event.inputType}`; 17 eventRecorder += `input-${event.inputType}`;
16 }); 18 });
17 19
18 const editable = document.getElementById('editable'); 20 const editable = document.getElementById('editable');
19 editable.innerHTML = 'abc'; 21 editable.innerHTML = 'abc';
20 editable.focus(); 22 editable.focus();
21 const selection = window.getSelection(); 23 const selection = window.getSelection();
22 selection.collapse(editable, 1); // End of first line. 24 selection.collapse(editable, 1); // End of first line.
23 25
24 // Test Transpose. 26 // Test Transpose.
25 eventRecorder = ''; 27 eventRecorder = '';
26 testRunner.execCommand('transpose'); 28 testRunner.execCommand('transpose');
27 assert_equals(editable.innerHTML, 'acb'); 29 assert_equals(editable.innerHTML, 'acb');
28 assert_equals(eventRecorder, 'beforeinput-insertTranspose-cb-input-insertTra nspose'); 30 assert_equals(eventRecorder, 'beforeinput-insertTranspose-cb-1-3-input-inser tTranspose');
29 }, 'Transpose on contenteditable'); 31 }, 'Transpose on contenteditable');
30 32
31 test(() => { 33 test(() => {
32 assert_not_equals(window.testRunner, undefined, 'This test requires testRunn er.'); 34 assert_not_equals(window.testRunner, undefined, 'This test requires testRunn er.');
33 35
34 let eventRecorder = ''; 36 let eventRecorder = '';
35 document.addEventListener('beforeinput', event => { 37 document.addEventListener('beforeinput', event => {
36 eventRecorder += `beforeinput-${event.inputType}-${event.data}-`; 38 eventRecorder += `beforeinput-${event.inputType}-${event.data}-`;
37 }); 39 });
38 document.addEventListener('input', event => { 40 document.addEventListener('input', event => {
39 eventRecorder += `input-${event.inputType}`; 41 eventRecorder += `input-${event.inputType}`;
40 }); 42 });
41 43
42 const txt = document.getElementById('txt'); 44 const txt = document.getElementById('txt');
43 txt.value = 'abc'; 45 txt.value = 'abc';
44 txt.focus(); 46 txt.focus();
45 txt.setSelectionRange(3, 3); // End of first line. 47 txt.setSelectionRange(3, 3); // End of first line.
46 48
47 // Test Transpose. 49 // Test Transpose.
48 eventRecorder = ''; 50 eventRecorder = '';
49 testRunner.execCommand('transpose'); 51 testRunner.execCommand('transpose');
50 assert_equals(txt.value, 'acb'); 52 assert_equals(txt.value, 'acb');
51 assert_equals(eventRecorder, 'beforeinput-insertTranspose-cb-input-insertTra nspose'); 53 assert_equals(eventRecorder, 'beforeinput-insertTranspose-cb-input-insertTra nspose');
52 }, 'Transpose on <textarea>'); 54 }, 'Transpose on <textarea>');
55
56 test(() => {
57 assert_not_equals(window.testRunner, undefined, 'This test requires testRunn er.');
58
59 assert_selection(
60 '<div contenteditable id="editable1">a|bc</div>',
61 selection => {
62 const editable1 = selection.document.getElementById('editable1');
63 editable1.addEventListener('beforeinput', event => {
64 event.preventDefault();
65 });
66 testRunner.execCommand('transpose');
67 },
68 '<div contenteditable id="editable1">a|bc</div>');
69 }, 'Transpose should not modify selection when canceled');
53 </script> 70 </script>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698