OLD | NEW |
1 <!DOCTYPE html> | 1 <!DOCTYPE html> |
2 <html> | 2 <html> |
3 <head> | 3 <head> |
4 <title>InputEvent: cancelable</title> | 4 <title>InputEvent: cancelable</title> |
5 <script src="../../../resources/testharness.js"></script> | 5 <script src="../../../resources/testharness.js"></script> |
6 <script src="../../../resources/testharnessreport.js"></script> | 6 <script src="../../../resources/testharnessreport.js"></script> |
7 <style> | 7 <style> |
8 div { | 8 div { |
9 width: 100px; | 9 width: 100px; |
10 height: 100px; | 10 height: 100px; |
(...skipping 29 matching lines...) Expand all Loading... |
40 assert_not_equals(internals, undefined, 'This test requires internals.'); | 40 assert_not_equals(internals, undefined, 'This test requires internals.'); |
41 assert_not_equals(textInputController, undefined, 'This test requires textIn
putController.'); | 41 assert_not_equals(textInputController, undefined, 'This test requires textIn
putController.'); |
42 | 42 |
43 const editable = document.getElementById('editable'); | 43 const editable = document.getElementById('editable'); |
44 const editable1 = document.getElementById('editable1'); | 44 const editable1 = document.getElementById('editable1'); |
45 const editable2 = document.getElementById('editable2'); | 45 const editable2 = document.getElementById('editable2'); |
46 const kNoncancelableInputTypes = [ | 46 const kNoncancelableInputTypes = [ |
47 'insertText', 'insertLineBreak', 'insertParagraph', | 47 'insertText', 'insertLineBreak', 'insertParagraph', |
48 'insertCompositionText', 'insertReplacementText', | 48 'insertCompositionText', 'insertReplacementText', |
49 'deleteWordBackward', 'deleteWordForward', | 49 'deleteWordBackward', 'deleteWordForward', |
50 'deleteLineBackward', 'deleteLineForward', | 50 'deleteSoftLineBackward', 'deleteSoftLineForward', |
| 51 'deleteHardLineBackward', 'deleteHardLineForward', |
51 'deleteContentBackward', 'deleteContentForward', | 52 'deleteContentBackward', 'deleteContentForward', |
52 ]; | 53 ]; |
53 | 54 |
54 let lastBeforeInputType = ''; | 55 let lastBeforeInputType = ''; |
55 document.addEventListener('beforeinput', t.step_func(event => { | 56 document.addEventListener('beforeinput', t.step_func(event => { |
56 lastBeforeInputType = event.inputType; | 57 lastBeforeInputType = event.inputType; |
57 assert_equals(kNoncancelableInputTypes.indexOf(event.inputType) === -1,
event.cancelable); | 58 assert_equals(kNoncancelableInputTypes.indexOf(event.inputType) === -1,
event.cancelable); |
58 })); | 59 })); |
59 | 60 |
60 function testKeyDown(key, modifiers, inputType) { | 61 function testKeyDown(key, modifiers, inputType) { |
(...skipping 20 matching lines...) Expand all Loading... |
81 // Deletion | 82 // Deletion |
82 const isMacOS = navigator.platform.indexOf('Mac') === 0; | 83 const isMacOS = navigator.platform.indexOf('Mac') === 0; |
83 const deleteWordModifier = isMacOS ? 'altKey' : 'ctrlKey'; | 84 const deleteWordModifier = isMacOS ? 'altKey' : 'ctrlKey'; |
84 editable.innerHTML = 'abc def</br>123 456'; | 85 editable.innerHTML = 'abc def</br>123 456'; |
85 const selection = window.getSelection(); | 86 const selection = window.getSelection(); |
86 selection.collapse(editable, 1); // End of first line. | 87 selection.collapse(editable, 1); // End of first line. |
87 testKeyDown('Backspace', [], 'deleteContentBackward'); | 88 testKeyDown('Backspace', [], 'deleteContentBackward'); |
88 testKeyDown('Delete', [], 'deleteContentForward'); | 89 testKeyDown('Delete', [], 'deleteContentForward'); |
89 testKeyDown('Backspace', [deleteWordModifier], 'deleteWordBackward'); | 90 testKeyDown('Backspace', [deleteWordModifier], 'deleteWordBackward'); |
90 testKeyDown('Delete', [deleteWordModifier], 'deleteWordForward'); | 91 testKeyDown('Delete', [deleteWordModifier], 'deleteWordForward'); |
| 92 testCommand('deleteToBeginningOfLine', 'deleteSoftLineBackward'); |
| 93 testCommand('deleteToEndOfLine', 'deleteSoftLineForward'); |
| 94 testCommand('deleteToBeginningOfParagraph', 'deleteHardLineBackward'); |
| 95 testCommand('deleteToEndOfParagraph', 'deleteHardLineForward'); |
91 | 96 |
92 // Format | 97 // Format |
93 editable.innerHTML = 'abc'; | 98 editable.innerHTML = 'abc'; |
94 selection.collapse(editable, 0); | 99 selection.collapse(editable, 0); |
95 selection.extend(editable, 1); | 100 selection.extend(editable, 1); |
96 testCommand('bold', 'formatBold'); | 101 testCommand('bold', 'formatBold'); |
97 testCommand('italic', 'formatItalic'); | 102 testCommand('italic', 'formatItalic'); |
98 testCommand('underline', 'formatUnderline'); | 103 testCommand('underline', 'formatUnderline'); |
99 testCommand('strikeThrough', 'formatStrikeThrough'); | 104 testCommand('strikeThrough', 'formatStrikeThrough'); |
100 testCommand('superscript', 'formatSuperscript'); | 105 testCommand('superscript', 'formatSuperscript'); |
(...skipping 28 matching lines...) Expand all Loading... |
129 selection.extend(editable, 1); | 134 selection.extend(editable, 1); |
130 textInputController.setComposition('word'); | 135 textInputController.setComposition('word'); |
131 assert_equals('insertCompositionText', lastBeforeInputType); | 136 assert_equals('insertCompositionText', lastBeforeInputType); |
132 | 137 |
133 t.done(); | 138 t.done(); |
134 }, 'Text input and IME related input types are non-cancelable.'); | 139 }, 'Text input and IME related input types are non-cancelable.'); |
135 | 140 |
136 </script> | 141 </script> |
137 </body> | 142 </body> |
138 </html> | 143 </html> |
OLD | NEW |