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

Side by Side Diff: third_party/WebKit/LayoutTests/fast/events/inputevents/before-input-ranges.html

Issue 2693863003: [InputEvent] Change |getTargetRanges()| to return current selection by default (Closed)
Patch Set: yosin's review: Use const Node&, add null checks Created 3 years, 10 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
« no previous file with comments | « no previous file | third_party/WebKit/Source/core/editing/EditingUtilities.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 <!DOCTYPE html> 1 <!DOCTYPE html>
2 <html> 2 <html>
3 <head> 3 <head>
4 <title>InputEvent: beforeinput getTargetRanges()</title> 4 <title>InputEvent: beforeinput getTargetRanges()</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 </head> 7 </head>
8 <body> 8 <body>
9 <p id="sample" contentEditable="true"></p> 9 <p id="sample" contentEditable="true"></p>
10 <textarea id="textarea1"></textarea>
10 <div id="log"></div> 11 <div id="log"></div>
11 <script> 12 <script>
12 test(function() { 13 test(function() {
13 if (!window.eventSender) { 14 if (!window.eventSender) {
14 document.write('This test requires eventSender'); 15 document.write('This test requires eventSender');
15 return; 16 return;
16 } 17 }
17 18
18 // Setup data. 19 // Setup data.
19 var sample = document.getElementById('sample'); 20 var sample = document.getElementById('sample');
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
67 sample.removeEventListener('beforeinput', handler); 68 sample.removeEventListener('beforeinput', handler);
68 }; 69 };
69 sample.addEventListener('beforeinput', handler); 70 sample.addEventListener('beforeinput', handler);
70 71
71 // Send delete-character-backward. 72 // Send delete-character-backward.
72 eventSender.keyDown('Backspace', []); 73 eventSender.keyDown('Backspace', []);
73 assert_equals(sample.textContent, 'hell'); 74 assert_equals(sample.textContent, 'hell');
74 // |getRanges| should be cleared after dispatch. 75 // |getRanges| should be cleared after dispatch.
75 assert_equals(lastEvent.getTargetRanges().length, 0); 76 assert_equals(lastEvent.getTargetRanges().length, 0);
76 }, 'Testing getTargetRanges() cleared after dispatch.'); 77 }, 'Testing getTargetRanges() cleared after dispatch.');
78
79 test(function() {
80 assert_not_equals(window.eventSender, undefined, 'This test requires eventSe nder.');
81 assert_not_equals(window.testRunner, undefined, 'This test requires testRunn er.');
82
83 // Setup data.
84 const sample = document.getElementById('sample');
85 sample.innerHTML = 'hello';
86
87 // Move caret right after 'hello'.
88 const selection = window.getSelection();
89 selection.collapse(sample.firstChild, 0);
90 selection.modify('move', 'forward', 'word');
91
92 // Record target ranges.
93 let lastRangeString = '';
94 const handler = function(event) {
95 const range = event.getTargetRanges()[0];
96 lastRangeString = `${range.startContainer.textContent}-${range.startOffs et}-${range.endContainer.textContent}-${range.endOffset}`;
97 };
98 sample.addEventListener('beforeinput', handler);
99
100 // Type 'a' at the end of text.
101 eventSender.keyDown('a');
102 assert_equals(sample.textContent, 'helloa');
103 assert_equals(lastRangeString, 'hello-5-hello-5');
104
105 // Select all text and type 'b'.
106 selection.modify('extend', 'backward', 'word');
107 eventSender.keyDown('b');
108 assert_equals(sample.textContent, 'b');
109 assert_equals(lastRangeString, 'helloa-0-helloa-6');
110
111 // Select all text and bold.
112 selection.modify('extend', 'backward', 'word');
113 testRunner.execCommand('bold');
114 assert_equals(sample.textContent, 'b');
115 assert_equals(lastRangeString, 'b-0-b-1');
116
117 sample.removeEventListener('beforeinput', handler);
118 }, 'Actions other than deletion should have current selection as target ranges.' );
119
120 test(function() {
121 assert_not_equals(window.eventSender, undefined, 'This test requires eventSe nder.');
122
123 // Setup data.
124 const textarea1 = document.getElementById('textarea1');
125 textarea1.value = 'hello';
126 textarea1.focus();
127
128 // Record range count.
129 let lastRangeCount = -1;
130 const handler = function(event) {
131 lastRangeCount = event.getTargetRanges().length;
132 };
133 textarea1.addEventListener('beforeinput', handler);
134
135 // Type 'a' at the end of text.
136 lastRangeCount = -1;
137 eventSender.keyDown('a');
138 assert_equals(textarea1.value, 'helloa');
139 assert_equals(lastRangeCount, 0);
140
141 // Press backspace.
142 lastRangeCount = -1;
143 eventSender.keyDown('Backspace');
144 assert_equals(textarea1.value, 'hello');
145 assert_equals(lastRangeCount, 0);
146
147 textarea1.removeEventListener('beforeinput', handler);
148 }, 'Textarea should have empty target range.');
77 </script> 149 </script>
78 </body> 150 </body>
79 </html> 151 </html>
OLDNEW
« no previous file with comments | « no previous file | third_party/WebKit/Source/core/editing/EditingUtilities.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698