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

Side by Side Diff: LayoutTests/inspector/editor/text-editor-undo-redo.html

Issue 22638008: DevTools: Use CodeMirror modes instead of highlight tokenizers (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: address comments Created 7 years, 4 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 | Annotate | Revision Log
OLDNEW
(Empty)
1 <html>
2 <head>
3 <script src="../../http/tests/inspector/inspector-test.js"></script>
4 <script src="editor-test.js"></script>
5 <script>
6 function test()
7 {
8 function dumpTextModel(prefix, textModel, range)
9 {
10 var text = InspectorTest.textWithSelection(textModel.text(), range);
11 InspectorTest.addResult(prefix + text);
12 }
13
14 function typeText(textModel, startRange, text)
15 {
16 var range = startRange;
17 for (var i = 0; i < text.length; ++i)
18 range = textModel.editRange(range, text[i]).collapseToEnd();
19 return range;
20 }
21
22 function typeDelete(textModel, startRange, count)
23 {
24 var count = count || 1;
25 var range = startRange;
26 for (var i = 0; i < count; ++i) {
27 var deleteRange = range.isEmpty() ? textModel.growRangeRight(range) : range;
28 range = textModel.editRange(deleteRange, "", range).collapseToEnd();
29 }
30 return range;
31 }
32
33 function typeBackspace(textModel, startRange, count)
34 {
35 var count = count || 1;
36 var range = startRange;
37 for (var i = 0; i < count; ++i) {
38 var backspaceRange = range.isEmpty() ? textModel.growRangeLeft(range ) : range;
39 range = textModel.editRange(backspaceRange, "", range).collapseToEnd ();
40 }
41 return range;
42 }
43
44 InspectorTest.runTestSuite([
45 function testUndoRedoTab(next)
46 {
47 var textModel = new WebInspector.TextEditorModel();
48 textModel.setText("1\n2\n3\n");
49 dumpTextModel("Text before edit:\n", textModel);
50 var range = typeText(textModel, new WebInspector.TextRange(1, 0, 1, 0), "\t")
51 dumpTextModel("Text after edit:\n", textModel, range);
52 range = textModel.undo();
53 dumpTextModel("Text after undo:\n", textModel, range);
54 range = textModel.redo();
55 dumpTextModel("Text after redo:\n", textModel, range);
56 next();
57 },
58
59 function testConsecutiveCharactersAndNewLines(next)
60 {
61 var textModel = new WebInspector.TextEditorModel();
62 textModel.setText("function foo()\n{\n\n}\n");
63 dumpTextModel("Text before edit:\n", textModel);
64 var range = typeText(textModel, new WebInspector.TextRange(2, 0, 2, 0), " bar();\n baz();\n foo();");
65 dumpTextModel("Text after edit:\n", textModel, range);
66 range = textModel.undo();
67 dumpTextModel("Text after first undo:\n", textModel, range);
68 range = textModel.undo();
69 dumpTextModel("Text after second undo:\n", textModel, range);
70 range = textModel.undo();
71 dumpTextModel("Text after third undo:\n", textModel, range);
72 range = textModel.redo();
73 dumpTextModel("Text after first redo:\n", textModel, range);
74 range = textModel.redo();
75 dumpTextModel("Text after second redo:\n", textModel, range);
76 range = textModel.redo();
77 dumpTextModel("Text after third redo:\n", textModel, range);
78 next();
79 },
80
81 function testEditRangeWithTheSameTextAsOriginal(next)
82 {
83 var textModel = new WebInspector.TextEditorModel();
84 var functionText = " bar();\n baz();\n foo();";
85 textModel.setText("function foo()\n{\n\n}\n");
86 dumpTextModel("Text before edit:\n", textModel);
87 var range = typeText(textModel, new WebInspector.TextRange(2, 0, 2, 0), " bar();\n baz();\n foo();");
88 dumpTextModel("Text after edit:\n", textModel, range);
89 textModel.editRange(new WebInspector.TextRange(3, 0, 4, 0), " baz ();\n");
90 dumpTextModel("Text after paste of the same text:\n", textModel, ran ge);
91 range = textModel.undo();
92 dumpTextModel("Text after first undo:\n", textModel, range);
93 range = textModel.undo();
94 dumpTextModel("Text after second undo:\n", textModel, range);
95 range = textModel.redo();
96 dumpTextModel("Text after first redo:\n", textModel, range);
97 range = textModel.redo();
98 dumpTextModel("Text after second redo:\n", textModel, range);
99 next();
100 },
101
102 function testDelete(next)
103 {
104 var textModel = new WebInspector.TextEditorModel();
105 var functionText = " bar();\n baz();\n foo();";
106 textModel.setText("function foo()\n{\n\n}\n");
107 dumpTextModel("Text before edit:\n", textModel);
108 var range = typeText(textModel, new WebInspector.TextRange(2, 0, 2, 0), " bar();\n baz();\n foo();");
109 dumpTextModel("Text after edit:\n", textModel, range);
110 range = typeDelete(textModel, new WebInspector.TextRange(2, 0, 2, 0) , functionText.length);
111 dumpTextModel("Text after deletes:\n", textModel, range);
112 range = textModel.undo();
113 dumpTextModel("Text after first undo:\n", textModel, range);
114 range = textModel.undo();
115 dumpTextModel("Text after second undo:\n", textModel, range);
116 range = textModel.redo();
117 dumpTextModel("Text after first redo:\n", textModel, range);
118 range = textModel.redo();
119 dumpTextModel("Text after second redo:\n", textModel, range);
120 next();
121 },
122
123 function testBackspace(next)
124 {
125 var textModel = new WebInspector.TextEditorModel();
126 var functionText = " bar();\n baz();\n foo();";
127 textModel.setText("function foo()\n{\n\n}\n");
128 dumpTextModel("Text before edit:\n", textModel);
129 var range = typeText(textModel, new WebInspector.TextRange(2, 0, 2, 0), " bar();\n baz();\n foo();");
130 dumpTextModel("Text after edit:\n", textModel, range);
131 range = typeBackspace(textModel, range, functionText.length);
132 dumpTextModel("Text after backspaces:\n", textModel, range);
133 range = textModel.undo();
134 dumpTextModel("Text after first undo:\n", textModel, range);
135 range = textModel.undo();
136 dumpTextModel("Text after second undo:\n", textModel, range);
137 range = textModel.redo();
138 dumpTextModel("Text after first redo:\n", textModel, range);
139 range = textModel.redo();
140 dumpTextModel("Text after second redo:\n", textModel, range);
141 next();
142 },
143
144 function testBackspaceAndDeleteInDifferentLines(next)
145 {
146 var textModel = new WebInspector.TextEditorModel();
147 var functionText = " bar();\n baz();\n foo();";
148 textModel.setText("function foo()\n{\n\n}\n");
149 dumpTextModel("Text before edit:\n", textModel);
150 var range = typeText(textModel, new WebInspector.TextRange(2, 0, 2, 0), " bar();\n baz();\n foo();");
151 dumpTextModel("Text after edit:\n", textModel, range);
152 range = typeBackspace(textModel, range);
153 dumpTextModel("Text after backspace:\n", textModel, range);
154 range = typeDelete(textModel, new WebInspector.TextRange(2, 0, 2, 0) );
155 dumpTextModel("Text after delete:\n", textModel, range);
156 range = textModel.undo();
157 dumpTextModel("Text after first undo:\n", textModel, range);
158 range = textModel.undo();
159 dumpTextModel("Text after second undo:\n", textModel, range);
160 range = textModel.undo();
161 dumpTextModel("Text after third undo:\n", textModel, range);
162 range = textModel.redo();
163 dumpTextModel("Text after first redo:\n", textModel, range);
164 range = textModel.redo();
165 dumpTextModel("Text after second redo:\n", textModel, range);
166 range = textModel.redo();
167 dumpTextModel("Text after third redo:\n", textModel, range);
168 next();
169 },
170
171 function testPasteSeveralTimes(next)
172 {
173 var textModel = new WebInspector.TextEditorModel();
174 var functionText = " bar();\n baz();\n foo();";
175 textModel.setText("function foo()\n{\n\n}\n");
176 dumpTextModel("Text before edit:\n", textModel);
177 var range = typeText(textModel, new WebInspector.TextRange(2, 0, 2, 0), " bar();\n baz();\n foo();");
178 dumpTextModel("Text after edit:\n", textModel, range);
179 range = textModel.editRange(range, "42").collapseToEnd();
180 dumpTextModel("Text after first paste:\n", textModel, range);
181 range = textModel.editRange(range, "42").collapseToEnd();
182 dumpTextModel("Text after second paste:\n", textModel, range);
183 range = textModel.undo();
184 dumpTextModel("Text after first undo:\n", textModel, range);
185 range = textModel.undo();
186 dumpTextModel("Text after second undo:\n", textModel, range);
187 range = textModel.undo();
188 dumpTextModel("Text after third undo:\n", textModel, range);
189 range = textModel.redo();
190 dumpTextModel("Text after first redo:\n", textModel, range);
191 range = textModel.redo();
192 dumpTextModel("Text after second redo:\n", textModel, range);
193 range = textModel.redo();
194 dumpTextModel("Text after third redo:\n", textModel, range);
195 next();
196 },
197
198 function testSelectionAfterUndoRedo(next)
199 {
200 var textModel = new WebInspector.TextEditorModel();
201 var functionText = " bar();\n baz();\n foo();";
202 textModel.setText("function foo()\n{\n\n}\n");
203 dumpTextModel("Text before edit:\n", textModel);
204 range = typeBackspace(textModel, new WebInspector.TextRange(2, 0, 2, 0), 1);
205 dumpTextModel("Text after backspace:\n", textModel, range);
206 range = textModel.undo();
207 dumpTextModel("Text after first undo:\n", textModel, range);
208 range = textModel.redo();
209 dumpTextModel("Text after first redo:\n", textModel, range);
210 range = textModel.undo();
211 dumpTextModel("Text after second undo:\n", textModel, range);
212 range = typeBackspace(textModel, new WebInspector.TextRange(1, 1, 2, 0), 1);
213 dumpTextModel("Text after deleting selection:\n", textModel, range);
214 range = textModel.undo();
215 dumpTextModel("Text after first undo:\n", textModel, range);
216 range = textModel.redo();
217 dumpTextModel("Text after first redo:\n", textModel, range);
218 range = textModel.undo();
219 dumpTextModel("Text after second undo:\n", textModel, range);
220 next();
221 }
222 ]);
223 }
224 </script>
225 </head>
226 <body onload="runTest()">
227 <p>Tests undo/redo operations in the editor model.</p>
228 </body>
229 </html>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698